1

有谁知道如何处理以下情况?

if-section:
    if-group [ elif-groups ] [ else-group ] endif-line

if-group:
    ....

elif-groups:
    elif-group
    elif-groups elif-group

elif-group:
    "#" "elif" constant-expression new-line [ group ]

else-group:
    "#" "else" new-line [ group ]

endif-line:
    "#" "endif" new-line

if-group 之后的 if-section 中的所有非终结符都以“#”开头。我认为在这种情况下,左分解是不可能的。是否有任何“默认解决方案”来确定我是否必须调用两个(或两个)可选非终端之一?

谢谢。

4

1 回答 1

0

我不清楚需要处理什么。你无法区分[ elif-groups ][ else-group ]当你看到只是#,没有。但是,如果您向前看另一个令牌,则可以。即两个令牌足以决定。

到目前为止,这还不是 C++ 语法中最糟糕的部分。

于 2011-09-20T19:32:16.223 回答