Context free grammar 上下文无关文法-LR(0)DFA

Context free grammar 上下文无关文法-LR(0)DFA,context-free-grammar,finite-automata,dfa,formal-languages,Context Free Grammar,Finite Automata,Dfa,Formal Languages,我需要一些关于为上下文无关语法构造LR(0)DFA的帮助 S -> A A -> aaAb | B B -> aBb | e 这就是我所拥有的: 状态 { S -> .A A -> .aaAb A -> .B B -> .aBb B -> .e } { A-> a.aAb B-> a.Bb B-> .aBb B -> .e } 然后我有一个标有a的箭头,指向:

我需要一些关于为上下文无关语法构造LR(0)DFA的帮助

S -> A
A -> aaAb | B
B -> aBb | e
这就是我所拥有的:

状态

{ S -> .A
  A -> .aaAb
  A -> .B
  B -> .aBb
  B -> .e
}
    { A-> a.aAb
      B-> a.Bb
      B-> .aBb
      B -> .e }
然后我有一个标有
a
的箭头,指向:

状态

{ S -> .A
  A -> .aaAb
  A -> .B
  B -> .aBb
  B -> .e
}
    { A-> a.aAb
      B-> a.Bb
      B-> .aBb
      B -> .e }
从该状态开始,标记为
a
的箭头指向:

状态:

    { A ->  aa.Ab
      A -> .aaAb
      A -> .B
      B -> .aBb
      B -> a.Bb
      B -> .e   }
这就是我的问题开始的地方。如您所见,我从该状态获得两个标有
B
的箭头,因为我有:

B -> .B
b -> a.Bb

我做错了什么?

是什么让你认为这是个问题?(另外,它可能有助于将“状态项”标记为它们来自的状态,例如
A->A.Ab
来自0)是的,你是对的,这不是问题:)我只是很愚蠢:P谢谢你,你可能想使用这个工具--(来源是这里:)。您可以输入语法,webapp将为LR解析器生成解析表和自动机。相当整洁。