文法产生式 (5)

看了上面对于左递归和右递归的解释,人们会想第一个例子能不能写成右递归呢?答案是可以的

list -> digit suffix | digit suffix suffix -> - digit suffix | + digit suffix | epsilon digit -> 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 //epsilon表示空字符串, ’|‘表示‘或’

那它们有什么区别吗?就像上面那个string的例子,解释不同,对于右递归的文法,是右结合的。

例如加减运算是左结合的,所以3+2-1=(3+2)-1; 而等号是右结合的,所以a=b=2等同于a=(b=2)

函数调用中参数列表的文法产生式

call -> id (optparams) optparams -> epsilon | params params -> params , param | param

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

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