SNL编译器设计实验报告.doc

SNL编译器设计实验报告.doc

ID:56234016

大小:1.07 MB

页数:30页

时间:2020-03-22

SNL编译器设计实验报告.doc_第1页
SNL编译器设计实验报告.doc_第2页
SNL编译器设计实验报告.doc_第3页
SNL编译器设计实验报告.doc_第4页
SNL编译器设计实验报告.doc_第5页
资源描述:

《SNL编译器设计实验报告.doc》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、编译原理课程设计实验报告-30-目录第一部分实验成果统计表…………………………………………………………1第二部分实验简介…………………………………………………………………2第三部分词法分析…………………………………………………………………3第四部分语法分析…………………………………………………………………64.1LL(1)法语法分析…………………………………………………………74.2递归下降法语法分析……………………………………………………10第五部分语义分析…………………………………………………………………19第六部分程序测试…………………………………………………………………22第七部

2、分实验总结与体会…………………………………………………………28-30-第一部分实验成果统计表姓名性别班级学号所占比例个人成绩任务分工:(请用小四号宋体填写)词法分析部分程序的调试与实现;LL(1)语法分析部分程序的调试与实现;递归下降语法分析部分程序的调试与实现;语义分析部分程序的调试与实现;成绩评定:词法分析递归下降LL(1)语义分析团队成绩教师签章备注填写说明:1、请将首页红色部分信息填全,其中:班级为2位数字,保留首位的0;学号为8位数字,计算机科学与技术学院以53开头;所占比例为百分数,精确到个位数,且所有人的所占比例之和为100%;不足四人的分组请保留后面的多余空行,请勿修改

3、该表的结构。2、请根据实际情况填写任务分工部分,主要任务包括:编译系统的总体分析与设计,四个具体功能的设计与实现,对应的测试与验证过程(报告正文需要列出若干组具体测试样例与对应结果),系统界面的设计与美工,以及辅助工具、视图和文件等。3、成绩评定部分由指导教师填写,请勿填写和修改。-30-第二部分实验简介本实验中实现了SNL编译系统中的词法分析、语法分析和语义分析。其中语法分析包括递归下降分析方法和LL(1)分析方法。词法分析,以源程序为输入,生成单词的内部表示TOKEN序列。语法分析,以TOKEN序列为输入进行语法分析,并生成整个源程序的语法分析树。在SNL编译程序中,采用了两种语法分

4、析方法实现:LL(1)和递归下降法。两种语法分析的结果是一样的。语义分析,以语法树为输入生成标识符的属性符号表以及相关的各类信息表,如数组信息表,并进行相关的语义检查。它们三者的关系如下:LL(1)语法分析递归下降语法分析词法分析语义分析-30-第三部分词法分析源程序一般表现为字符串(机器语言称其为ASCII码)序列的形式,而编译程序的翻译工作应该在单词一级上进行,这与自然语言的翻译理解过程是类似的。因此要进行编译工作,首先要把源程序的字符序列翻译成单词序列。词法分析是编译过程的第一阶段。它的任务就是对输入的字符串形式的源程序按顺序进行扫描,根据源程序的词法规则识别具有独立意义的单词(符

5、号),并输出与其等价的TOKEN序列。TOKEN是单词(符号)的内部表示。完成词法分析任务的程序称为词法分析程序,通常也称为词法分析器或扫描器(scanner)。TOKEN是单词在编译程序处理过程中的一种内部表示,也是词法分析程序对程序中各类单词进行处理之后的输出形式。对于一种语言而言,如何对它的单词进行分类,每一类单词的TOKEN数据结构的形式如何,都没有固定的模式,可以随编译程序的不同而不同。通常TOKEN的结构可以分成两部分,单词的语法信息和语义信息。其中语法信息记录的是这个单词的种类,语义信息则记录着这个单词的具体信息。这样,就能为以后的语法分析和语义分析处理单词做好准备。SNL

6、语法分析对每类单词的分析结果的TOKEN结构为三元组(词法信息、语义信息以及该单词在源程序中的行号)。本SNL编译器单词的内部表示如下:行号(便于出错处理)TOKEN的内部表示语法信息及其字符串表示语义信息及其字符串表示SNL语言的单词分类如下:(1):保留字保留字一般是由语言系统自身定义的,SNL语言中的保留字有program,while,if,fi等等。(2):标识符用来标识程序中各个对象的名称。由用户自己定义用来表示变量名,数组名或者过程名等。SNL语言中标识符由字母开头,字母、数字的任意组合组成的。(3):常量用来表示各类常数。如字符型常量,实行常量,布尔常量等。(4):运算符表

7、示程序中算术运算、逻辑运算、字符运算的确定字符或字符串。SNL语言中的运算符有+,—,*,/,<和:=六种运算符。(5):界限符包括逗号分号等。SNL语言中的‘;’表示一条语句结束,‘.’表示程序结束等等。-30-实现词法分析器的注意事项:1.保留字和标识符名字的区分2.复合单词的处理3.向前搜索及回退4.数字的转换5.输入时边界的处理6.注释的处理词法分析主要的函数有:getTokenlist()、getNextChar()、un

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

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

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