本作业为中国科学技术大学编译原理课程中的PL/0语言实践任务。学生需设计并实现一个简单的编译器或解释器,以此加深对编译过程的理解和掌握。
中科大郑启龙老师班编译原理大作业要求拓展PL/0编译器功能如下:
1. 在PL/0语言中增加数组支持,包括声明数组变量、对数组元素赋值以及在表达式中引用数组元素。
2. 为PL/0添加逻辑运算符&&(与)、||(或)和!(非),以增强其逻辑处理能力。
3. 实现简单的引用变量功能,允许程序更灵活地操作内存中的数据位置。
4. 参数传递:首先移除原 PL0 过程的嵌套声明;然后增加参数声明支持传值调用和传地址调用,并进行基本的语义检查(如实参与形参数量、类型的一致性)。
5. 实现goto/else 语句,其语法及语义参考C语言标准。
6. 给PL/0添加两个内置函数random和print。例如,随机数生成器函数random可以以两种形式调用:random()返回一个任意的自然数;而random(100)则会返回一个小于100的随机整数。输出函数print也有类似的灵活性,它可以被用来换行(如 print())或者打印表达式的值(例如 print(i,j),其中i和j是需要显示的具体变量或常量)。