词法分析实验

词法分析实验

ID:20361315

大小:251.24 KB

页数:11页

时间:2018-10-09

词法分析实验_第1页
词法分析实验_第2页
词法分析实验_第3页
词法分析实验_第4页
词法分析实验_第5页
资源描述:

《词法分析实验》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、词法分析实验一、实验题目编写Tiny语言的词法分析程序。二、实验目的1,构造Tiny词法分析程序,程序要求能对输入的字符串流进行词法分析。2,在实验的过程中,学会应用单词分析的方法——构造NFA(非确定有穷自动机)和DFA(确定有穷自动机)。3,使用Lex工具分析词法。三、实验要求1、独立完成实验2、由老师现场检查程序代码和运行结果3、提交代码实验报告:包含程序代码和运行结果截图四、实验环境操作系统:Windows/Linux开发语言:C/C++开发工具:Cygwin(在windows平台上运行的UNIX模拟环境);Lex词法分析工具。五、实验内容采用

2、下面两种方式对给定的样本语言Tiny实现一个扫描程序:1、使用Lex自动生成词法分析程序,2、自己编写一个Tiny词法分析程序。输出结果包含1、打印出符号(Token)所在的源代码中的行数,2、以二元组方式打印符号,例如<1,IF>,3、打印该符号的类型:(保留字(Reservedword)、特殊符号(SpecialSymbol)和“其他”(Other))。Tiny语言介绍Tiny语言在语法上是一个由分号分隔开的语句序列。没有过程,没有声明,所有变量都是整形变量。Tiny语言有两个控制语句,分别是if语句和repeat语句。Tiny的记号分为3个典型类

3、型:保留字、特殊符号和“其他”记号。1,保留字if、then、else、end、repeat、until、read、write2,特殊符号+-*/=<();:=3,其他数(NUM)和标识符(ID),ID和NUM通过以下正则表达式表示:ID=letterletter*NUM=digitdigit*letter=a

4、..

5、z

6、A

7、..

8、Zdigit=0

9、..

10、9除了记号之外,Tiny程序还要遵循以下的词法惯例:注释应放在花括号{...}中,且不可嵌套;代码应是自由格式;空白格由空格、换行符和制表符组成。最长子串原则后须接标识记号。DFA图如下:示例代码:{

11、SampleprograminTINYlanguage-computesfactorial}readx;{inputaninteger}if0

12、译器将Lex语言编写的规则翻译成为C语言程序)。6.1.1Lex的基本原理和使用方法Lex的基本工作原理为:由正规式生成NFA,将NFA变换成DFA,DFA经化简后,模拟生成词法分析器。正规式由开发者使用Lex语言编写,其余部分由Lex翻译器完成。翻译器将Lex源程序翻译成一个名为lex.yy.c的C语言源文件,此文件含有两部分内容:一部分是根据正规式所构造的DFA状态转移表,另一部分是用来驱动该表的总控程序yylex()。当主程序需要从输入字符流中识别一个记号时,只需要调用一次yylex()就可以了。为了使用Lex所生成的词法分析器,我们需要将lex

13、.yy.c程序用C编译器进行编译,并将相关支持库函数连入目标代码。Lex的使用步骤可如下图所示:图一生成词法分析器的过程图二使用所生成的词法分析器6.1.2Lex源程序的写法Lex源程序必须按照Lex语言的规范来写,其核心是一组词法规则(正规式)。一般来说,一个Lex源程序分为三部分,三部分之间以符号%%分隔。示例程序如表一所示:第一部分:定义段%%第二部分:词法规则段%%第三部分:辅助函数段表一Lex源程序示例红色部分可以省略。以%开头的符号和关键字,或者是词法规则段的各个规则一般顶行首写,前面没有空格。 Lex源程序中注释由/*和*/构成,但是注释

14、的行首需要有前导空白。(1)第一部分定义段的写法定义段可以分为两部分。第一部分包含在符号%{和%}之间,用C语言写定义和声明:例如,头文件包含,宏定义,常数定义,全局变量及外部变量定义,函数声明等。这一部分被Lex翻译器处理后会全部拷贝到文件lex.yy.c中。注意,特殊括号%{和%}都必须顶行首写。例如:  %{ #define LT 1   int yylval;%}第二部分是一组正则表达式的定义和状态定义。为了简化词法规则,给一部分正则表达式定义了名字,顶行首写。例如下面这组正规定义分别定义了letter,digit和id所表示的正规式: let

15、ter [A-Za-z] digit  [0-9] id  {letter}({letter}

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

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

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