- 1、本文档共77页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
编译原理实验指导书_精品
《编译原理》实验指导书
杨华莉 编
西南交通大学峨眉校区
计算机与通信工程系
2011年9月
目 录
实验一 词法分析 1
一、实验目的 1
二、实验内容 1
三、实验原理 1
1、单词识别的状态转换图 1
2、词法分析的输出 2
2、词法分析的输出 3
四、实验程序的实现 4
1、词法分析程序的组成 4
2、词法分析程序函数的原形说明 4
3、数据结构的说明 4
4、词法分析程序的完整代码 5
(1)词法分析头文件cifa.h 5
(2)词法分析主文件cifa.cpp 14
5、词法分析程序结果实例 15
五、实验要求 18
1、对词法分析程序进行扩充和修改(在cifa.h中进行) 18
2、对ex1.pas进行词法分析 18
3、需提交的文档 18
实验二 语法分析 19
一、实验目的 19
二、实验内容 19
三、实验原理 19
1、LR分析算法 19
2、算术表达式的SLR分析表 20
3、布尔表达式的SLR分析表 21
4、程序语句的SLR分析表 22
四、实验程序的实现 23
1、语法分析程序的组成 23
2、SLR分析表的实现 23
(1)算术表达式SLR分析表的实现 23
(2)布尔表达式的SLR分析表的实现 24
(3)程序语句的SLR分析表的实现 25
3、语法分析程序函数的原形说明 26
4、语法分析程序的完整代码 26
(1)语法分析头文件yufa.h 26
(2)语法分析主文件yufa.cpp 41
6、语法分析程序结果实例 42
五、实验要求 46
1、对语法分析程序进行扩充和修改(在yufa.h中进行) 46
2、对ex1.pas进行语法分析 47
3、需提交的文档 47
实验三 语法制导翻译和中间代码生成 49
一、实验目的 49
二、实验内容 49
三、实验原理 49
1、简单算术表达式赋值语句的语义子程序 49
2、布尔表达式的语义子程序 50
3、if语句的语义子程序 50
4、while语句的语义子程序 51
四、实验程序的实现 52
1、中间代码生成程序的组成 52
2、中间代码生成程序的完整代码 52
(1)中间代码生成文件zjdm.h 52
(2)中间代码生成主文件zjdm.cpp 70
3、语法分析程序结果实例 71
五、实验要求 72
1、对中间代码生成程序进行扩充和修改(在zjdm.h中进行) 72
2、对ex1.pas生成中间代码 72
3、需提交的文档 73
实验一 词法分析
一、实验目的
通过完成词法分析程序,了解词法分析的过程。
二、实验内容
用VC++6.0实现对类PASCAL语言的词法识别程序,生成单词的二元式序列,存入单词表,并将标识符存入符号表中。
词法分析器要完成具体工作如下:
跳过分隔符(如空格,回车,制表符);
识别诸如begin,end,ifwhile等保留字;
识别非保留字的一般标识符。
识别数字序列;
识别:=,=,=,+,*之类的特殊符号。
除此之外,它还完成:
识别且跳过行结束符;
将输入源文件输出;
统计源文件的行数和单词数。
三、实验原理
1、单词识别的状态转换图
单词识别的状态转换图见图1.1。使用状态转换图,是设计词法分析的第一步(识别),转换图是一张有限方向图,在转换图中,结点代表状态,用圆圈表示。状态之间用弧线连结,弧线上的标记(字符)代表在射出结点(即箭弧始结点)状态下可能出现的字符或字符类,弧线及其上的标记就叫做边。一张状态转换图只包含有限个状态(结点),其中有一个被认为是初态,而且实际上至少有一个终态(用双圈表示)。
每一条弧线只有一个初态和一个终态,也就是对每一个输入,只有固定的一个转换状态;other表示除了从该弧线的起始状态引出的其他弧线的标记(字符)以外的其他字符;状态圆圈上有一个*,表示将从缓冲区读取得字符送回缓冲区。
2、词法分析的输出
单词的输出一般采用如下二元式表示:
(单词类别,单词的值)
a.单词的类别一般用如下形式表示:
一类单词同一用一个整数值代表其属性。
如:1代表保留字,2代表表示符等。
每一个单词一个类别(有限数目的单词)。
如:1代表BEGIN,2代表END等。
b.单词自身的值可以表示为:
(1)常量的二进制表示
(2)常量、变量登载符号表中的地址码
(3)默认值(唯一值)
本实验中单词的类别及单词的值的定义见表1.1。
表1.1 单词的类别及单词的值的定义
单词类别 单词类别编码 单词的值 说明 ident 1 标识符登载符号表的地址 标识符 intconst 2 单词自身的值 整常数 rop 3 =,,,=,=,的值如下
0,1,2,3,4,5 关系运算符 op_and 10 0 and op_o
文档评论(0)