将语法转换为LL1语法

时间:2011-10-30 07:05:30

标签: parsing grammar text-parsing left-recursion

我明天正在修改一个考试,并且过去几年都会进行考试。

在测试中是语法。

Expression -> Foo "+" Bar "end"
Foo -> [a-z0-9]+ | Expression
Bar -> Expression Foo | a*b*c+

我已经尝试并花了几个小时研究如何做到这一点,但无法弄明白。

我已经看过用epsilion替换东西了,但是感觉不自信。

我认为我需要创建一个Foo'和一个Bar',然后添加epsilon规则,但我不确定。

有人可以告诉我(简单地)_how将其改为具有LL(1)能力的语法

提前致谢

1 个答案:

答案 0 :(得分:1)

我记得LL-1语法在1个符号中向前看。你的目标是消除歧义和离开递归。所有你需要的 - 使用左分解。先看看this