有关《编译原理》
编译原理的书上,讲了两种语言与法的描述方法。
一种是:语法描述图
另一种是:EBNF表示
他们都能很好的描述一个程序语言的语法。
在编写PL/0语言编译器时,由于测试需要,我特意构造了一些特异的PL/0程序,比如:
.这个程序只有一个“.”,但是却很符合PL/0的语法规范。同样,
a := 2 + 3.也是符合PL/0的语法规范的。但是由于变量a没有声明,所以编译出错。书上并没有说PL/0的变量在使用前一定要先声明,但Pascal和书后面的编译器例子都说明了变量在使用前一定要先声明。
问题出现了:
语法不能说明类似强制声明的语言规范吗?如果能,应该如何表达?
附录(语法描述图):
程序:
程序体:
语句序列:
语句:
条件:
表达式:
项:
因子:
浙公网安备 33010602011771号