Parsing 这种上下文无关语法是不明确的,而且I';我不知道为什么。SLR(1)编译器I';m大厦不';I don’我不能按我期望的方式工作

Parsing 这种上下文无关语法是不明确的,而且I';我不知道为什么。SLR(1)编译器I';m大厦不';I don’我不能按我期望的方式工作,parsing,syntax,compiler-construction,context-free-grammar,Parsing,Syntax,Compiler Construction,Context Free Grammar,我正在构建一个语法分析器。作为SLR(1)很好,但我相信存在一些reduce/shift冲突或某种冲突,使得解析器过早地拒绝字符串。以下是语法: 注意:我确实留下了语法因素,看看这是否是问题所在,但这并不能消除歧义。然而,这是没有左因子分解的原始语法 P'' -> P'$ P' -> P P -> C | C;D D -> R | RD R -> pu{P} C -> I | I;C I -> h | O | A | R | Z O -&

我正在构建一个语法分析器。作为SLR(1)很好,但我相信存在一些reduce/shift冲突或某种冲突,使得解析器过早地拒绝字符串。以下是语法: 注意:我确实留下了语法因素,看看这是否是问题所在,但这并不能消除歧义。然而,这是没有左因子分解的原始语法

P'' -> P'$

P' -> P

P -> C | C;D

D -> R | RD

R -> pu{P}

C -> I | I;C

I -> h | O | A | R | Z 

O -> i(V) | z(V) 

Y -> u

V -> S | N 

S -> u

N -> u

A -> S=s | S=S | N=X 

X -> N | b | L

L -> d(X,X) | s(X,X) | m(X,X) 

R -> f(B)t{C} |  f(B)t{C}1{C}

B -> e(V,V) | (N<N) | (N>N) | nB | a(B,B) | o(B,B)

Z -> w(B){C} | r(N=0;N<N;N=a(N,1)){C}
P'->P'$
P'->P
P->C | C;D
D->R|RD
R->pu{P}
C->I | I;C
I->h | O | A | R | Z
O->i(V)| z(V)
Y->u
V->S|N
S->u
N->u
A->S=S | S=S | N=X
X->N | b | L
L->d(X,X)| s(X,X)| m(X,X)
R->f(B)t{C}| f(B)t{C}1{C}
B->e(V,V)|(NN)| nB | a(B,B)| o(B,B)

Z->w(B){C}|r(N=0;N识别出一个
I
,并将
作为下一个符号,存在移位减少冲突:

  • 生产线
    C->I;C
    指示移动
  • 生产
    P->C;D
    表示通过
    C->I
    减少

所以语法不是SLR(1).

好吧,我想在问题中还有一些值得引用的转换,这些转换不在相关的语法产品中,就像
C->I
一样,我看不到,在你给出的产品中,有任何方法可以在问题的结尾产生分号string@JeffersonQuesado我补充了剩下的语法