文法产生式 (2)

加减运算的文法产生式 (且该文法是左递归的,且仅针对个位数加减)

//list叫开始符,总是从它开始 list -> list + digit list -> list - digit list -> digit digit -> 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9

左递归指,该文法可以一直向左边推导,等价成一颗不断向左子树延申的抽象语法树。

二义性

同样,对于上面的例子,可能有人会想到下面的文法生成式

string -> string + string string -> string - string string -> 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9

这种文法的缺点在于它对应的语法树是二义性的,即存在2颗不同的语法树对应着同一句话,在某些情况下,这是含糊的。

2.1

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zypzdd.html