目前,我的 Eclipse IDE for Java 中有一个基本的 ANTLR-4 语法,并且具有以下内容:
// Parser
importDeclaration:
'use' name=FQN ';'
;
// Lexer and terminals
fragment LETTER: [a-zA-Z_];
fragment LETTER_OR_DIGIT: [a-zA-Z0-9_];
ID: LETTER LETTER_OR_DIGIT*;
FQN: ID ('.' ID)*;
WS: [ \t\r\n]+ -> skip ; // skip spaces, tabs, newlines
COMMENT: '/*' .*? '*/' -> channel(HIDDEN);
LINE_COMMENT: '//' ~[\r\n]* -> channel(HIDDEN);
当我执行以下操作时,希望是一个简短而甜蜜的问题:
use test;
我得到:
line 1:4 mismatched input 'test' expecting FQN
如果我尝试使用它name
会抛出一个。
除了当我这样做时它工作正常:NullPointerException
use test.test;
这与('.' ID)*
部分有关,但不知道为什么会这样。
有任何想法吗?
编辑:
刚刚意识到我的代码是错误的,(FQN|ID)
这是我不好的解决方法。现在修好了。