分析可以用来确定程序的结构。
程序使用的语法是上下文无关文法,是乔姆斯基分类法则中的第2类语法。
0 | 1 | 2 | 3 | |
---|---|---|---|---|
文法名称 | 非限制型文法 | 上下文有关文法 | 上下文无关文法 | 正则文法 |
对应机器 | 图灵机 | 线性(边界)自动机 | 下推自动机 | 有穷自动机 |
识别对象 | 自然语言 | 受限自然语言 | 程序语言 | 单词 |
上下文无关文法使用BNF文法表示。文法规则中有一个“推导”的行为,此行为在右边选一个结构名字替换序列。
推导中有最左推导和最右推导两种方法。
文法可能有二义性,可以通过两种方式来解决。一种是设立消除二义性规则;另一种是将文法变成一个强制正确分析书的构造的格式。
扩展的BNF即EBNF中有{…}和[…]两个符号。分别表示重复和可选。EBNF可以通过作图的方式展示出来。
上面提到,有两种方法可以去除文法的二义性。下面给出第二种解决二义性的方法的例题。