《编译原理》课程 实验报告 题目 PL/0 编译程序的 C 语言扩充 专业 化学工程与工艺 班级 学号 姓名 任课教师 华东理工大学信息学院 一.实验题目 PL/0 编译程序的 C 语言扩充 二.实验目的 在分析理解 PL/0 编译程序的基础上,对其词法分析程序、语法分析程序和语义处理程序进行部分修改扩充
三.实验内容 在 PL/0 语言的基础上增加对整型一维数组的支持、扩充 IF-THEN-ELSE 条件语句、增加REPEAT 语句、支持带参数的过程和增加注释等,如下所示: (1) 整型一维数组,数组的定义格式为: VAR(:) 其中上界和下界可以是整数或者常量标识名
访问数组元素的时候,数组下表是整型的表达式,包括整数、常量或者变量和他们的组合
(2) 扩充条件语句,格式为: ::= EFTHEN [ELSE] (3)增加 REPEAT 语句,格式为: ::= REPEATUNTL 四.实验过程 (1)PL/0 编译程序的 C 语言源代码输入 (2)运行 PL/0 编译程序的 C 语言源代码,调试运行 PL/0 编译程序 (3)对 PL/0 编译程序进行功能扩充 (4)PL/0 编译程序功能扩充部分的分析与设计 (5)对 PL/0 编译程序进行功能扩充,即编写代码 (6)进行 PL/0 编译程序功能扩充部分的运行调试 (7)完成实验报告总结 五.PL/0 编译程序的功能扩充程序说明 (1)扩充赋值运算:+=,-=
此功能扩充只需在语句分析里面进行增加如下程序: if(SYM==BECOMES||SYM==PLUSBECOMES||SYM==MINUSBECOMES){ if (SYM==BECOMES) { GetSym(); EXPRESSION(FSYS,LEV,TX); } else if(SYM==PLUSBECOMES||SYM==MINUSBECOME