《编译原理》实验指导书
实验三. 自底向上语法分析 1. 实验目的
给出算符优先关系表的构造方法,将FIRSTVT集合和LASTVT集合的算法扩充成程序。
2. 实验准备
微机CPU P4以上,256M以上内存,安装好C语言,或C++,或Visual C++.
3. 实验时间
4学时
4. 实验内容
构造求FIRSTVT集合和LASTVT集合的程序。
5. 实验要求
? 扩充P113求FIRSTVT集合的算法。 ? 完成LASTVT集合的算法。
6. 输入输出
输入:
文法。 输出:
FIRSTVT集合和LASTVT集合。
《编译原理》课程组 10 of 37
《编译原理》实验指导书
实验四. 语义分析
1. 实验目的
? 通过上机实习,加深对语法制导翻译原理的理解,掌握将语法分析
所识别的语法范畴变换为某种中间代码的语义翻译方法。 ? 掌握目前普遍采用的语义分析方法──语法制导翻译技术。 ? 要求在语法分析程序中添加语义处理,对于语法正确的算术表达式,
输出其计算值。
2. 实验准备
微机CPU P4以上,256M以上内存,安装好C语言,或C++,或Visual C++.
3. 实验时间
4学时
4. 实验内容
在表达式的语法分析程序里,添加语义处理部分。
5. 实验要求
? 语义分析对象重点考虑经过语法分析后已是正确的语法范畴,实习
重点是语义子程序。 ? 在实验三“语法分析器”的里面添加PL/0语言“表达式”部分的语
义处理。 ? 计算表达式的语义值。
6. 输入输出
输入:
算术表达式,例如: 2 + 3 * 5作为输入。 输出:
17
《编译原理》课程组 11 of 37
《编译原理》实验指导书
实验五. 中间代码生成
1. 实验目的
要求在语法分析程序中添加语义处理,对于语法正确的表达式,输出其中间代码。
2. 实验准备
微机CPU P4以上,256M以上内存,安装好C语言,或C++,或Visual C++.
3. 实验时间
4学时
4. 实验内容
在实验三的表达式语法分析程序里,添加语义处理部分输出表达式的中间代码,用四元式序列表示。
5. 实验要求
? 在实验三“语法分析器”的里面添加PL/0语言“表达式”部分的语
义处理,输出表达式的中间代码。 ? 中间代码用四元式序列表示。
6. 输入输出
输入:
表达式,例如: a * (b + c)。 输出:
( + b c t1 ) ( * a t1 t2 )
《编译原理》课程组 12 of 37
《编译原理》实验指导书
六、课程设计
1、选题(四选一):
(1)构造递归下降分析程序语法分析器 (2)构造预测分析表语法分析器 (3)构造算符优先分析语法分析器 (4)构造LR(0)分析法语法分析器
2、设计方法:
小组分工,合作完成。从小到大,逐步扩展。按照文法和程序的特点,逐步
完成设计和测试。
3、设计报告:
应包括:报告标题、主要工作概述、具体内容(算法部分)、开发经验等。
七、考核方式
1、实验报告和课程设计报告
实验独立完成,提交实验报告;
课程设计采用分组的形式,3人一组,每个实习小组交一份课程设计报告,格式要求绝对规范!内容应包括以下内容:
? 题目 ? 设计思想 ? 算法
? 调试数据(输入/输出)
2、评分标准
? 由指导教师根据实验验收情况并结合实验报告质量及学习态度等进
行评分。 ? 课程设计作为独立考查课,学分为1。
《编译原理》课程组 13 of 37
《编译原理》实验指导书
八、参考文献
[1]《编译原理》(第二版),张素琴、吕映芝、蒋维杜,清华大学出版社,2005
年出版。
[2]《编译程序设计原理》,杜书敏、王永宁,北京大学出版社,1988年出版。 [3]《计算机编译原理》,张幸儿,科学出版社,1999年出版。
[4]《编译程序原理与技术》,李赣生等,清华大学出版社,版。
《编译原理》课程组 年10月出
14 of 37
1997