SLR(1)Parser和epsilon参与其中

时间:2011-06-28 04:04:06

标签: parsing theory grammar compiler-theory language-theory

假设我有以下语法:

S → X  
X → a | ϵ

如果该语法不涉及ϵ,我将构建第一个状态,如:

S' → .S
S → .X
X → .a

ϵ符号怎么样?我应该包括:

X → .ϵ

太?

如果是这样......在创建下一个州时...我应该GOTO(Io,ϵ),是否是第一个州?

2 个答案:

答案 0 :(得分:14)

我同意霍华德的观点。您在DFA中的状态应包含以下项:x → .这是我为SLR(1)解析器绘制的DFA,它识别使用两个epsilon作品的语法:SLR(1) DFA

答案 1 :(得分:9)

由于ϵ不是终端本身,您必须将其从您的规则中删除

X → .

之后你不会有任何奇怪的GOTO带有“符号”ϵ而是你的状态

S' → S.

是图表中的接受状态。