我写了一个小语言的语法,它可以理解C风格的单行注释,例如:
// this is a comment
这是我使用antlr v3.0.1为这种语言编写的语法片段。
SINGLELINE_COMMENT
: '/' '/' (options {greedy=false;} : ~('\r' | '\n'))* ('\r' | '\n' )+ {$channel=HIDDEN;};
WS : (' '|'\r'|'\t'|'\u000C'|'\n')+ {$channel=HIDDEN;};
这基本上是有用的,但是当注释是脚本中的最后一个且没有终止NL/CR时,我会在antlr(运行时)收到一条令人烦恼的消息。
line 1:20 required (...)+ loop did not match anything at character '<EOF>'
我该如何消除这个消息?我尝试在
(..)+
表达式中添加 EOF
标记,但这并没有起作用。