ANTLR模糊参考 - 如何获得输出?

时间:2012-12-04 15:13:39

标签: antlr semantics rules ambiguity

所以我有statement的规则,这可以导致更多的陈述:

statement returns[String txt]
    :   '{'{
            $txt="{";
        }
        (statement{
            $txt+=$statement.txt;
        })*
        '}'{
            $txt+="}";
        }
    | ... //more rules // ...
    ;

我正在

引用$语句含糊不清; rule statement是封闭规则并在生产中引用(假设附上规则)

但不知道如何解决它。不知怎的,我需要告诉ANTLR我需要父statementstatement的返回txt。请帮帮我:))

1 个答案:

答案 0 :(得分:2)

如果您使用$statement,则ANTLR不知道您是指自己的规则,还是statement内的( ... )*

尝试这样的事情:

statement returns[String txt]
    :   '{'{
            $txt="{";
        }
        (s=statement{
            $txt+=$s.txt;
        })*
        '}'{
            $txt+="}";
        }
    | ...
        ;