0

目前,我的 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)这是我不好的解决方法。现在修好了。

4

0 回答 0