我正在尝试使用回溯构建递归体面的解析器。这是我的语法:
Re -> Sq | Sq + Re
Sq -> Ba | Ba Sq
Ba -> El | Ba*
El -> lower-or-digit | (Re)
尝试了很多事情之后,我在生产 Sq−> Ba | BaSq 时遇到了问题,最终我在这里进行了无限递归。因此,我为此找到的可能解决方案是将语法留给因子。
我的问题是我想离开的生产量似乎与我发现的任何示例都不匹配。我该如何离开语法?还是我可以使用另一种技巧?
答案 0 :(得分:0)
假设<Sq>
是非终结符(或语法将不是CFG),而<Ba>
也是非终结符:
Sq -> Ba Z
Z -> epsilon | Sq