有关《编译原理》

编译原理的书上,讲了两种语言与法的描述方法。
一种是:语法描述图
另一种是:EBNF表示
他们都能很好的描述一个程序语言的语法。
在编写PL/0语言编译器时,由于测试需要,我特意构造了一些特异的PL/0程序,比如:

.

这个程序只有一个“.”,但是却很符合PL/0的语法规范。同样,

a := 2 + 3.

也是符合PL/0的语法规范的。但是由于变量a没有声明,所以编译出错。书上并没有说PL/0的变量在使用前一定要先声明,但Pascal和书后面的编译器例子都说明了变量在使用前一定要先声明。
问题出现了:
语法不能说明类似强制声明的语言规范吗?如果能,应该如何表达?

附录(语法描述图):
程序:

程序体:

语句序列:

语句:

条件:

表达式:

项:

因子:

posted @ 2004-09-15 15:45  Pootow  阅读(613)  评论(0)    收藏  举报