SLR语法可以制作空白吗?

时间:2013-04-07 10:21:47

标签: string lr

我写过以下语法:

S->S ( S ) S
S->e

e代表“空字符串”

因此,该语法识别的语言包括具有匹配左右括号的所有字符串,如(),(()),(()())等。

这个语法不是SLR,这是我构建SLR解析表的方法:

  1. 增加这个语法:

    S1-> S S-> S(S)S S-&GT,E

  2. 然后为它构造LR(0)自动机:

    I0: S1-> .S S-> .S(S)S S-> .E

    I1: S1-> S。 S-> S(S)S

  3. ...

    请注意,对于I0,输入符号'(',没有移位或减少操作,这是该语法生成​​的任何字符串的第一个标记。

    因此,在状态I0上,SLR解析表将生成错误,它在解析字符串时不知道该怎么做:(())。

    我的问题是:

    使这个语法不是单反的罪魁祸首是什么?这是空字符串制作吗?那是: S->即?

    从一般意义上说,SLR语法可以制作空白吗?比如,在这个例子中,S-> e。 感谢。

1 个答案:

答案 0 :(得分:0)

答案是可以的,如果当前输入没有可用的换档/减速动作,并且空产品有转变,我们选择转移这个空的终端。