Java的Antlr语法变化

时间:2017-07-30 15:18:31

标签: java antlr4

我已经开始使用ANTLR为克隆检测和删除系统构建解析器和词法分析器。 我想构建一个语法,以区分私有,公共和受保护的关键字,因为我想将它们视为相同的东西但是当我尝试这样做时,它并没有正确地标记我的输入。

我从link获取了我的语法.g4文件,并对其进行了一些修改,如下所示。

PRIVATE        : 'public' || 'private' || 'protected';
RETURN        : 'return';
SHORT         : 'short';

1 个答案:

答案 0 :(得分:1)

此:

PRIVATE        : 'public' || 'private' || 'protected';

不正确。它可以改写为:

PRIVATE
 : 'public' 
 |
 | 'private' 
 |
 | 'protected'
 ;

换句话说:它匹配一个空字符串。

你可能想写这个:

PRIVATE : 'public' | 'private' | 'protected';

有点奇怪的名字,顺便说一下:PRIVATE。我期待这样的事情:

MODIFIER : 'public' | 'private' | 'protected';

或使用解析器规则:

modifier : PUBLIC | PRIVATE | PROTECTED;

PUBLIC : 'public';
PRIVATE : 'private';
PROTECTED : 'protected';