Context free grammar 上下文无关文法-LR(0)DFA
我需要一些关于为上下文无关语法构造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的箭头,指向:
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解析器生成解析表和自动机。相当整洁。