左分解语法

时间:2018-10-05 15:01:02

标签: parsing grammar formal-languages

我正在尝试使用回溯构建递归体面的解析器。这是我的语法:

Re -> Sq | Sq + Re
Sq -> Ba | Ba Sq
Ba -> El | Ba*
El -> lower-or-digit | (Re)

尝试了很多事情之后,我在生产 Sq−> Ba | BaSq 时遇到了问题,最终我在这里进行了无限递归。因此,我为此找到的可能解决方案是将语法留给因子。

我的问题是我想离开的生产量似乎与我发现的任何示例都不匹配。我该如何离开语法?还是我可以使用另一种技巧?

1 个答案:

答案 0 :(得分:0)

假设<Sq>是非终结符(或语法将不是CFG),而<Ba>也是非终结符:

Sq -> Ba Z

Z -> epsilon | Sq