13

ANTLR3の「セマンティック述語」とは何ですか? Bart Kiers は、Antlr3 のさまざまなセマンティック述語について非常によくまとめています。

残念なことに、Antlr4 では構文/セマンティクスが変更されたように見えるため、これはコンパイルされません。

end_of_statement
    :   ';'
    |   EOF
    |   {input.LT(1).getType() == RBRACE}? =>
    ;

RBRACE
    : '}'
    ;

end_of_statementの 3 番目のケースを行う方法を教えてください。次のトークンが '}' の場合は受け入れますが、それを消費しません。

4

1 に答える 1

16

現在、次のような 1 つのタイプのセマンティック述語しかありません。

{ <<boolean-epxression>> }?

また、(生成されたパーサーが拡張する)input抽象クラスの属性の前にアンダースコアが付きます。Parser

したがって、あなたの場合、次のANTLR v3構文:

{input.LT(1).getType() == RBRACE}? =>

ANTLR v4 では次のようになります。

{_input.LT(1).getType() == RBRACE}?
于 2012-10-05T18:08:35.127 に答える