
北京林业大学的编译原理实验二,包含基于递归下降分析法的语法分析算法(.rar文件)。
5星
- 浏览量: 0
- 大小:None
- 文件类型:None
简介:
实验目标:通过对PL/0编译程序的仔细阅读与改造,深入理解PL/0编译程序的整体结构,并能准确辨识各类语法单元所对应的子程序。同时,旨在掌握递归下降语法分析程序的构建理念,从而加深对该类型程序分析和理解的能力。此外,通过设计、编写和调试具体的YACC程序,将全面掌握YACC源程序的基本组成要素。实验的具体内容包括:1. 对PL/0编译程序进行精简和改造,使其仅保留词法分析和语法分析这两个核心过程。该分析程序具备读取PL/0语言源程序的功能,并实现以下具体任务:(1)能够有效过滤掉输入中包含的注释内容,例如/*......*/形式的文本。(2)当检测到词法或语法错误时,能够及时输出相应的错误提示信息,便于问题定位。(3)对于输入的算法表达式(表达式中可能包含标识符和常量),如果表达式符合规范,则能够准确输出该表达式的计算结果。(4)扩展算术表达式中的常量类型支持,除了原有的整型数据类型外,还能够支持浮点型数据类型(作为选做项)。(5)当输入满足合法的语法成分时,输出“输入正确”的信息;同时提供该语法成分对应的语法分析树。建议采用缩进的文本表示形式来展示语法分析树的结构,方便观察和理解。(选做)请注意:(1)在阅读相关语法程序时,可以参考其对应的EBNF描述(如教材第3版表4.3所示)。(2)PL/0编译程序(包括主程序)由18个嵌套及并列的子函数构成;其中与教材第3版表4.3中的语法规则直接对应的8个子函数分别为:block( )、constdeclaration( )、vardeclaration( )、statement( )、condition( )、expression( )、term( )、factor( )。2. 借助自动生成工具LEX和YACC完成以下实验任务:阅读并运行提供的词法.l 和 语法.y 程序,以充分理解LEX和YACC的使用方法以及两者之间的通信机制。具体操作是将两个文件分别编译后生成词法.c 和 语法.c 文件,并将这两个文件在VC环境下集成到一个项目下进行运行。下面展示了程序运行后的输入和输出结果示例:当输入“cat eat mouse”时,输出“Sentence is valid”,表明系统能够识别此类语句;而当输入“I love you”时,输出“syntax error”,则表示系统无法识别该语句类型。修改源程序(词法.l 和 语法.y),使修改后的程序能够识别类似以下语法结构的语句:I love you.I like apples and pears.I wish you success.We study compiler hard.We study compiler hard in school。用户也可以自行定义更多符合英语语法规则的句子。
全部评论 (0)


