我有一个语法来解析一些源代码:
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 之间包含不是 a 的内容body_block
,那么我想向用户建议他们打算将该文本包含在 abody_block
中。
我已经做了一些几乎可行的尝试,如果这很有启发性,我可以发布,但我希望我只是错过了一些简单的事情。