《编译原理》实验报告
软件131
陈万全
132852
f一、需求分析
通过对一个常用高级程序设计语言的简单语言子集编译系统中词法分析、
语法分析、语义处理模块的设计、开发,掌握实际编译系统的核心结构、工作流
程及其实现技术,获得分析、设计、实现编译程序等方面的实际操作能力,增强
设计、编写和调试程序的能力。
通过开源编译器分析、编译过程可视化等扩展实验,促进学生增强复杂系
统分析、设计和实现能力,鼓励学生创新意识和能力。
实验项目
实验内容
1、词法分构造具有关键字、运算符、标识符、无符号常数等单词的词法分
析程序设析程序。输入由符合及不符合规定单词类别结构的各类单词组成
计与实现的源程序。输出单词串的二元式编码(CLASS,VALUE)。
2、语法分析程序设计与实现
将词法分析程序输出的单词串作为输入,针对常见的表达式、赋值语句、条件语句、循环语句等语法成分,选择有代表性的语法分析方法,如递归下降法、算符优先分析、LL1、LR等方法之一,设计实现相应的语法分析程序。
3、语义分对各语法单位增加语义子程序,将表达式或可执行语句翻译为四
析程序设元式序列输出,并能进行错误检查与处理,将错误信息输出。
计与实现
1、词法分析程序设计与实现假定一种高级程序设计语言中的单词主要包括五个关键字begi
、e
d、
if、the
、else;标识符;无符号常数;六种关系运算符;一个赋值符和四个算术运算符,试构造能识别这些单词的词法分析程序。
输入:由符合和不符合所规定的单词类别结构的各类单词组成的源程序文件。
输出:把所识别出的每一单词均按形如(CLASS,VALUE)的二元式形式输出,并将结果放到某个文件中。对于标识符和无符号常数,CLASS字段为相应的类别码的助记符;VALUE字段则是该标识符、常数的具体值;对于关键字和运算符,采用一词一类的编码形式,仅需在二元式的CLASS字段上放置相应单词的类别码的助记符,VALUE字段则为“空”。2、语法分析程序设计与实现选择对各种常见高级程序设计语言都较为通用的语法结构算术表达式的
f一个简化子集作为分析对象,根据如下描述其语法结构的BNF定义G2算术表达式,任选一种学过的语法分析方法,针对运算对象为无符号常数和变量的四则运算,设计并实现一个语法分析程序。
G2算术表达式:算术表达式→项算术表达式项算术表达式项项→因式项因式项因式因式→运算对象算术表达式若将语法范畴算术表达式、项r