ソースコードを解析するための文法があります:
document
: header body_block* EOF
-> body_block*
;
header
: header_statement*
;
body_block
: '{' block_contents '}'
;
block_contents
: declaration_list
| ... other things ....
ドキュメントが本文のないヘッダーまたはヘッダーのない本文を持つことは合法です。
次のようなドキュメントを解析しようとすると
int i;
次に、ANTLRは、int
期待していたときに見つかったと不平を言いEOF
ます。これは本当ですが、期待していたと言ってもらいたい{
です。つまり、入力のヘッダーと EOF の間に ではない何かが含まれている場合、body_block
そのテキストを で囲むことをユーザーに提案したいと思いますbody_block
。
私はこれについていくつかの試みを行いました。