好,让我解释一下我需要什么:
我有一个描述块的规则,例如想起类似C的语言的{ .. }
一个块可能包含statements
,其规则定义为(显然):
statements : statement
| statements[previous] statement
;
现在是要抓住的地方:
如果我希望代码块或
statements
规则也包含任何内容...也有效,该怎么办?或者-使其变得更加通用-具有完全不包含任何内容的完全有效的程序,该怎么办?试图将...虚无添加到规则中,显然也导致了100多个shift-reduce冲突。
我该怎么办?最肯定的是,由于没有语句而使解析器抛出语法错误,这没有多大意义,对吗?
最佳答案
好吧,那毕竟很简单:
statements : statements[previous] statement
| /* empty */
;
并固定。无论如何,都不会减少班次-减少冲突。
关于c - 野牛中的空块规则?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23287651/