相关疑难解决方法(0)

LR1 解析器和 Epsilon

我试图了解 LR1 解析器的工作原理,但我想到了一个奇怪的问题:如果语法包含 Epsilons 怎么办?例如:如果我有语法:

S -> A
A -> a A | B
B -> a
Run Code Online (Sandbox Code Playgroud)

很清楚如何开始:

S -> .A
A -> .a A 
A -> .B
Run Code Online (Sandbox Code Playgroud)

... 等等

但我不知道如何为这样的语法做到这一点:

S -> A
A -> a A a | \epsilon
Run Code Online (Sandbox Code Playgroud)

这样做是否正确:

S -> .A
A -> .a A a
( A -> .\epsilon )
Run Code Online (Sandbox Code Playgroud)

然后让 DFA 中的这个状态接受?

任何帮助将不胜感激!

parsing compiler-theory lr1

5
推荐指数
1
解决办法
4971
查看次数

标签 统计

compiler-theory ×1

lr1 ×1

parsing ×1