1

ANTLR 4 で書かれたサンプル文法があります

query : select from ';' !? EOF!

理解しました

query : select from ';'

使い方

!? EOF!文法で何を意味し、どのように機能しますか?

4

1 に答える 1

4

感嘆符は、生成された AST から特定のノードを除外する必要があることを示すために、ANTLR v3 文法で使用されます。ANTLR v4 には AST がないため、この構成は使用されなくなりました。

v3 と v4 の両方で、?はルール (レクサーまたはパーサー) がオプションであることを示しEOF、ファイルの終わりの定数を意味します。

要約すると';'!?、オプションで a に一致';'し、AST から除外されます。AndEOF!の意味: ファイルの終わりに一致し、このトークンを AST から除外します。

したがって、v3 パーサー ルールは次のようになります。

query : select from ';'!? EOF!

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

query : select from ';'? EOF
于 2013-09-09T12:55:56.687 に答える