我有以下 Antlr 语法:
grammar MyGrammar;
doc : intro planet;
intro : 'hi';
planet : 'world';
MLCOMMENT
: '/*' ( options {greedy=false;} : . )* '*/' { $channel = HIDDEN; };
WHITESPACE : (
(' ' | '\t' | '\f')+
|
// handle newlines
( '\r\n' // DOS/Windows
| '\r' // Macintosh
| '\n' // Unix
)
)
{ $channel = HIDDEN; };
在 ANTLRWorks 1.2.3 解释器中,输入hi world
和hi/**/world
按hi /*A*/ world
预期工作。
hiworld
但是,不应该工作的 input也被接受。我如何使hiworld
失败?如何在“hi”和“world”之间强制使用至少一个空格(或注释)?
请注意,我在此示例中仅使用了 MLCOMMENT 和 WHITESPACE 来简化,但也支持其他类型的注释。