使用有效语法无法正确识别完全限定名称

时间:2017-07-19 12:10:02

标签: java variables antlr4 fully-qualified-naming

我的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)这是我糟糕的解决方法。现在修好了。

0 个答案:

没有答案