词法分析器lex实验报告

词法分析器lex实验报告

ID:35246312

大小:43.50 KB

页数:6页

时间:2019-03-22

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

《词法分析器lex实验报告》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、Xxxxx大学xxxxxx学院实验报告学号:xxxxxxxx姓名:xxx专业:计算机科学与技术班级:xxxxx第周课程名称编译原理课程设计 实验课时实验项目基于Lex的词法分析器实验时间实验目的1.学习基于Lex构造词法分析器的方法。2.学习CMinus的词法结构。实验环境ParserGeneratorVC++6.0实验内容(算法、程序、步骤和方法)1.基于Lex构造词法分析器的方法1.1Lex文件格式Lex文件分成三个部分,分别为definitions、rules以及auxiliaryroutines,中间用%%分割开。Definitions包括要加入到生成的C程序的头部的代码

2、,包括#include语句、#define语句及一些全局变量的定义。同时,正则表达式可以在这个部分定义,如identifier的定义:letter[_a-zA-Z]identifier{letter}{letter}*rules部分定义,它包括一串正则表达式或字符,后面加上当表达式识别出后,采取的动作。Auxiliary部分包括rules部分使用的一些辅助函数,同时,main函数也在其中定义。1.2CMinus词法CMinus中的Token包括保留字、特殊符号、ID和NUM、以及注释,其中,保留字和特殊符号的形式是固定的,可以在Lex中直接以字符串的形式给出,而ID和NUM可以由

3、复数种形式,并具有正则表达式:ID=letterletter*NUM=digitdigit*letter=a

4、..

5、z

6、A

7、..

8、Zdigit=0

9、..

10、9因此这四个Symbol在Lex中给出正则表达式。注释部分进行如下处理:如果识别出字符串“/*”则一直读入字符,知道遇到了*,如果一直遇到“*”则一直读入字符,如果遇到“/”则结束,否则继续等待“*”。1.2数据结构Token具有两个值,包括其类型TokenType和值TokenValue。因此定义一个enum枚举类型来表示Token类型。typedefenum{/*keywords*/ELSE,IF,INT,RETURN,VO

11、ID,WHILE,/*pecialsymbols*/ADD,SUBTRACT,MULTIPLY,DIVIDE,LESS,LE,GREATER,GE,EQUAL,ASSIGN,NE,SEMICOLON,COMMA,LPARENTHESIS,RPARENTHESIS,LCURVE,RCURVE,LBRACKET,RBRACKET,/*COMMENTS*/LCOMMENT,RCOMMENT,/*IDandNUM*/ID,NUM,/*whitespace*/WHITESPACE,NEWLINE,/*error*/ERROR,/*empty*/EMPTY,/*unknown*/UNKNOW

12、N,/*end*/END}TokenType;并定义一个char*TokenValue来记录值在Lex中,每识别出来一个Token,返回其对应的枚举值即可,yytext中存储的既是Token对应的value值,将其复制到TokenValue中即可。数据记录和计算实验源程序:/*aprogramtoperformselectionsortona10elementarray.*/intx[10];intminloc(inta[],intlow,inthigh){inti;intx;intk;k=low;x=a[low];i=low+1;while(i

13、{x=a[i];k=i;}}returnk;}结论(结果){VOID,'void'}{ID,'sort'}{LPARENTHESIS,'('}{INT,'int'}{ID,'a'}{LBRACKET,'['}{RBRACKET,']'}{COMMA,','}{INT,'int'}{ID,'low'}{COMMA,','}{INT,'int'}{ID,'high'}{RPARENTHESIS,')'}{LCURVE,'{'}{INT,'int'}{ID,'i'}{SEMICOLON,';'}{INT,'int'}{ID,'k'}{SEMICOLON,';'}{ID,'i'}{ASS

14、IGN,'='}{ID,'low'}{SEMICOLON,';'}{WHILE,'while'}{LPARENTHESIS,'('}{ID,'i'}{LESS,'<'}{ID,'high'}{SUBTRACT,'-'}{NUM,'1'}{RPARENTHESIS,')'}{LCURVE,'{'}{INT,'int'}{ID,'t'}{SEMICOLON,';'}{ID,'k'}{ASSIGN,'='}{ID,'minloc'}{LPARENTHESIS,'('}{ID,'a'}{

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

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

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