假设我有以下无上下文语法,按特定顺序(对于YACC):
如果我有输入:
(z(z x
解析器会减少:
我在想它2号,但我不太清楚为什么。非常感谢
编辑:更改了输入以进行说明
答案 0 :(得分:1)
你的语法是左关联的,因为它是左递归的。左关联意味着当输入从左向右扫描时,将贪婪地完成制作。通过扫描另一个z
并缩小,您的z
总是延长x
。
关于您的问题,您不能输入z z x
,因为输入包含终端符号。据推测,x
是一个终端符号(否则语法不完整)。 z
显然是非终结的。
您可以考虑部分句型z z x
。但是,这种形式不能通过这种语法生成。
从z
开始,接下来的步骤是生成x
(从而完成)或生成z x
。之后的下一个可能步骤是以两种方式之一替换z
:生成x x
(并完成)或生成z x x
。
如您所见,这些规则无法访问字符串z z x
。