2

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

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

我正进入(状态

引用 $statement 不明确;规则语句是封闭规则并在生产中引用(假设封闭规则)

但不知道如何解决。不知何故,我需要告诉 ANTLR 我需要statement内部 parent的 return txt statement。请帮帮我:)

4

1 回答 1

2

如果您使用$statement,ANTLR 不知道您是指规则本身还是statement内部( ... )*

尝试这样的事情:

statement returns[String txt]
    :   '{'{
            $txt="{";
        }
        (s=statement{
            $txt+=$s.txt;
        })*
        '}'{
            $txt+="}";
        }
    | ...
        ;
于 2012-12-04T15:16:44.327 回答