编译原理课程设计编译器实现

编译原理课程设计编译器实现

ID:12386647

大小:675.00 KB

页数:13页

时间:2018-07-16

编译原理课程设计编译器实现_第1页
编译原理课程设计编译器实现_第2页
编译原理课程设计编译器实现_第3页
编译原理课程设计编译器实现_第4页
编译原理课程设计编译器实现_第5页
资源描述:

《编译原理课程设计编译器实现》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、题目利用LEX自动生成词法分析程序学院计算机科学与技术学院专业班级姓名指导教师2014年1月2日13目录1.引言…………………………………………………………………………42.需求分析分析………………………………………………………………52.1LEX编译系统的重要性………………………………………………53.总体设计及开发工具的选择………………………………………………63.1开发工具………………………………………………………………63.2总体设计………………………………………………………………64.设计原则…………………

2、…………………………………………………64.1LEX编译程序产生词法分析程序的过程………………………………64.1.1LEX编译程序产生DFA的过程……………………………………64.1.2产生控制程序的过程……………………………………………65.数据结构……………………………………………………………………76.详细设计……………………………………………………………………87.调试与结果…………………………………………………………………108.收获与体会…………………………………………………………………129.结束语…

3、……………………………………………………………………1210.参考文献…………………………………………………………………1313利用LEX自动生成词法分析程序1.引言Lex是LEXicalcompiler的缩写,是Unix环境下非常著名的工具。主要功能是生成一个词法分析器的C源码,描述规则采用正则表达式。描述词法分析器的文件*.l,经过lex编译后,生成一个lex.yy.c的文件,然后由C编译器编译生成一个词法分析器。词法分析器,简单来说,其任务就是将输入的各种符号,转化成相应的标识符,转化后的标识符很容易被后续阶段

4、处理。我们知道,正规式用于说明(描述)单词的结构十分清晰。而把一个正规式编译(或称转换)为一个NFA进而转换为相应的DFA,这个NFA货DFA正是识别该正规式所表示的语言的句子的识别器,LEX正是基于这种方法来构造词法分析程序的工具。LEX被设计用来对输入字符流进行词法处理。它接受一种高级的、面向问题的说明书,并用它匹配字符串中的字符、生成能够识别正则表达式的程序。正则表达式通过用户输入的代码说明书给入。Lex识别这些表达式,并且将输入流分成一些匹配这些表达式的字符串。在这些字符串的分界处,用户提供的程序片段被执行。

5、Lex代码文件将正则表达式和程序片断关联。对每一条输入到由Lex生成程序的表达式,相应的代码片段被执行。为了完成任务,除了需要提供匹配的表达式以外,用户还需要提供其它代码,甚至是由其他生成器产生的代码。用户提供一般程序设计语言的代码片断完成程序识别表达式。因此,用户自由编写动作时,并不影响其编写高层的表达式语言来匹配字符串表达式。这就避免迫使用户使用字符串语言来进行输入分析时,也必须使用同样的方法来编写字符处理程序,而这样做有时是不合适的。Lex不是完整的语言,但是是一个新语言的生成器,它可以插入到各种不同的被叫做“

6、宿主语言”的程序设计语言中。就像大多数目的语言可以生成在不同计算机硬件上运行的代码,Lex可以生成不同的宿主语言。宿主语言用于Lex生成输出代码,也用于用户插入程序片断。这使得Lex适用于不同的环境和不同的使用者。每一个应用程序可以是硬件、适用于该任务的宿主语言、用户背景和局部接口属性的直接结合。现在,Lex唯一支持的宿主语言是C,尽管Fortran在过去也被支持。Lex自身存在于UNIX、GCOS和OS/370上;但是Lex生成的代码可以在任何适当的编译器上使用。132.需求分析2.1LEX编译系统的重要性词法分析

7、程序手工编写极为繁琐,依赖于LEX编译系统可以实现词法分析程序的自动产生,LEX编译系统的作用如图1所示,LEX编译系统读入LEX语言源程序(该程序是用正规式描述的某语言的词法),产生LEX语言目标程序(该程序即为某语言的词法分析程序)。在UNIX环境中LEX.l为LEX的源程序,LEX.yy.c为LEX的目标程序,LEX.yy.c是个C程序,它包括从正规式构造的有穷自动机DFA,以及使用该DFA识别单词的控制程序。LEX.yy.c经过C编译程序生成目标文件a.out,这便是词法分析程序,它可以将输入字符流变换成单词

8、流,使用LEX生成词法分析程序的过程如图2所示。图一LEX编译系统的作用图二使用LEX生成词法分析器133.总体设计及开发工具的选择3.1开发工具LEX编译器环境:flexbuilder2.0编程语言:C3.2总体设计LEX语言是一种描述性语言,LEX源程序主要用来描述各类语言的词法,LWX源程序由三部分组成,说明部分、转换规则和辅助过程。用%

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。