我写过以下语法:
S->S ( S ) S
S->e
e代表“空字符串”
因此,该语法识别的语言包括具有匹配左右括号的所有字符串,如(),(()),(()())等。
这个语法不是SLR,这是我构建SLR解析表的方法:
增加这个语法:
S1-> S S-> S(S)S S-&GT,E
然后为它构造LR(0)自动机:
I0: S1-> .S S-> .S(S)S S-> .E
I1: S1-> S。 S-> S(S)S
...
请注意,对于I0,输入符号'(',没有移位或减少操作,这是该语法生成的任何字符串的第一个标记。
因此,在状态I0上,SLR解析表将生成错误,它在解析字符串时不知道该怎么做:(())。
我的问题是:
使这个语法不是单反的罪魁祸首是什么?这是空字符串制作吗?那是: S->即?
从一般意义上说,SLR语法可以制作空白吗?比如,在这个例子中,S-> e。 感谢。
答案 0 :(得分:0)
答案是可以的,如果当前输入没有可用的换档/减速动作,并且空产品有转变,我们选择转移这个空的终端。