declaration-seq:
declaration
declaration-seq declaration
不是这样的:
declaration-seq:
declaration
declaration declaration-seq
这两个定义是否可以互换?他们之间有什么区别?
答案 0 :(得分:6)
这是C ++ C传承的遗迹。 C语法(几乎)LALR(1),因此尽可能使用left recursion。 C ++语法甚至不再模糊LALR,但许多规则仍然以LALR解析器更喜欢的形式编写,因为没有理由改变它们 - 任何足以处理C ++的解析器算法都不关心哪种类型的使用句法递归。