编译原理课程设计,C++语言实现的PL0语言编译器
对PL/0作以下修改扩充:
-
(1)增加单词(只实现词法分析部分):
保留字 ELSE,FOR,TO,DOWNTO,RETURN
运算符 +=,-=,++,--
注释符 //
-
(2)修改单词:
不等号# 改为 <>
-
(3)增加语句
增加条件语句的ELSE子句(实现语法语义目标代码)
要求:写出相关文法和语法图,分析语义规则的实现。
-
(1)扩充赋值运算:
+= 和 -=
-
(2)扩充语句(Pascal的FOR语句):
①FOR <变量>:=<表达式> TO <表达式> DO <语句>
②FOR <变量>:=<表达式> DOWNTO <表达式> DO <语句>
其中,语句①的循环变量的步长为1,语句②的循环变量的步长为-1。
- (1)增加运算:++ 和 --。
- (2)增加类型:① 字符类型; ② 实数类型。
- (3)扩充函数:① 有返回值和返回语句;② 有参数函数。
- (4)增加一维数组类型(可增加指令)。
- (5) 增加 注释; 注释由/和/包含,或由//注释一行;
- (6)其他典型语言设施。