编译原理课程设计语法词法分析器

编译原理课程设计语法词法分析器

ID:43869422

大小:258.52 KB

页数:34页

时间:2019-10-16

编译原理课程设计语法词法分析器_第1页
编译原理课程设计语法词法分析器_第2页
编译原理课程设计语法词法分析器_第3页
编译原理课程设计语法词法分析器_第4页
编译原理课程设计语法词法分析器_第5页
资源描述:

《编译原理课程设计语法词法分析器》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、编译原理课程设计报告课题名称:C-Minus词法分析器Scanner语法分析器Parser提交文档学生姓名:刘洼提交文档学生学号:0943041312同组成员名单:无指导教师姓名:金至指导教师评阅成绩:指导教师评阅意见:提交报告时间:1.课程设计目标2012年6月11日通过对汇编原理及实践这门课的学习,设计一个C-Minus编译器,要求编译器主要分为词法分析器Scanner和语法分析器Parser两个部分。Scanner主要完成对FI标代码进行扫描,识别关键字等内容,Parser•主要实现对语法分析和错误识别并生成语法树。通过编程实现一个基本的词法分析和语法分析系统,加深对编译原理的理解。2.

2、分析与设计•实现方法:Scanner:手工实现;Parser:递归下降。用C语言进行编程实现。•设计说明:木程序共有八个文件,四个头文件和四个源文件:1.Globals.h文件:定义TokeType和声明建立树的分析结构。2.Main,c文件:主函数,程序入口。3.Scan,h和scan,c文件:完成词法分析功能,读取文件并识别分析Token。4.Parse,h和parse,c文件:完成语法分析功能,定义问法的递归调用函数和数据结构以及语法分析树,是木程序的主要代码。5.Util,h和ut订.c文件:包括newStmtNode,newExpNode,newDecNode,newParamNod

3、e构建数据结构结点以及打印树结构2.1.词法分析器Scanner2.1.1C-惯用词法:1•关键字:elseifintreturnvoidwhile2.专用符号:+-*/<〈=>>=二二!二二;,()[]{}/**/3.其他标记变量ID和NUM,通过下列正则表达式定义ID=IetterIetter*NUM=digitdigit*Ietter=a

4、...

5、z

6、A

7、...

8、Zdigit=0

9、...

10、94.空格由空白、换行符和制表符组成。空格通常被忽略,除了它必须分开ID,NUM关键字。5.注释通常用C语言符号/*・••*/围起来,注释可以放在任何空白出现的地方(即注释不能放在标记内)上,且可以超过

11、一行。注释不能嵌套。2.1.2词法分析器原理词法分析阶段将源程序读作字符文件并将其分为若干个记号,如关键字、标识符、特殊符号等,利用各种记号(token)的DNF和正则表达式的特征等进行词法分析。在对关键字的识别上,主要利用表驱动的方法,先将关键字存储在一个字符数组中,当读入字符为字母吋,将后续得到的记号(token)与表中关键字一一进行比对;在对数字的识别中,只要读入字符为数字,同时后续字符也均是数字时,则其形成的记号(token)为数字,在对注释识别过程中,当读到/*时认为注释语句开始,一直读到*/表明注释语,句结束,输岀注释信息。2.1.3词法分析器的实现方法1•根据G的惯用语法,定义T

12、okenType如下:typedefenum{ENDFILE,ERROR,/*reservedwords*/IF,ELSE,INT,RETURN,VOID,WHILE,/*multicharactertokens*/ID,NUM,/*specialsymbols*/PLUS,MINUS,TIMES,OVER,LT,LE,GT,GE,EQ,UNEQ,ASSIGN,SEMI,COMMA,LPAREN,RPAREN,LBRACKET,RBRACKET,LBRACE,RBRACE,LCOMMENT,RCOMMENT}TokenType;用表格说明TokenType与Token的对应关系:TokenTy

13、peIFELSEINTRETURNVOIDWHILETokenife1seintreturnvoidwhileTokenTypePLUSMINUSTIMESOVERLTLEGTToken+—*<<=>TokenTypeGEEQUNEQASS1GNSEMICOMMALCOMMENTToken>=——1=■—■/*TokenTypeRCOMMENTLBRACKERBRACKELBRACKETRBRACKETLPARENRPARENToken*/{}[]()2.定义SCANNER在进行词法扫描中经历的状态typedefenum{START,INNUM,INID,INUNEQ,INEQ,INLE,I

14、NGE,INCOMMENT,DONE}StateType;对各个状态做以下解释:START:状态作为词法扫描的入口状态,在程序开始读入字符进行Token判定前所处的状态。INNUM:此状态表示正在识别NUM,即数字。若从START状态获得的字符是数字就转跳到此状态。INID:此状态表示正在识别1D或者keywordo若从START状态获得的字符是a~z或A~Z的就转跳到此状态。INUNEQ:此状态

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

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

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