2

statementだから私はより多くのステートメントにつながる可能性のあるルールを持っています:

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

私は得ています

参照$statementはあいまいです。ルールステートメントはルールを囲んでおり、本番環境で参照されています(ルールを囲んでいると想定)

しかし、それを解決する方法がわかりません。statementどういうわけか、親の内部のreturntxtが必要であることをANTLRに伝える必要があり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 に答える