LL1和明确的语法悬挂其他

时间:2015-04-22 20:42:50

标签: parsing context-free-grammar ambiguity dangling-else

我正在尝试编写一个使用Flex for scanner和一个名为PGen的特殊工具来定义语法的简单编译器。

现在,我正试图解决悬而未决的明确语法。 我搜索过这个。

这是一个悬挂其他问题的语法:

S → if E then S
  | if E then S else S
  | OTHER

这是解决此问题的语法(通过slides from Berkeley):

S → MIF            /* all then are matched */
  | UIF            /* some then are unmatched */
MIF → if E then MIF else MIF
    | OTHER
UIF → if E then S
    | if E then MIF else UIF

但是这个语法仍然不是LL1,仍然含糊不清。

当我试图解决这种歧义并使其成为LL1时,我再次遇到了悬空的问题。

任何人都可以帮我找一个明确的LL1语法来嵌套if?

我读过in a Q&A on Stack Overflow这个语法不能成为LL1。但我无法意识到如何解决这种模糊性。

0 个答案:

没有答案