私は次の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
機能します。
ただし、動作しないはずの inputhiworld
も受け入れられます。どうすればhiworld
失敗しますか?「こんにちは」と「世界」の間に少なくとも 1 つの空白 (またはコメント) を強制するにはどうすればよいですか?
この例では、簡略化のために MLCOMMENT と WHITESPACE のみを使用していますが、他の種類のコメントもサポートされていることに注意してください。