Java ANTLRv4 TestRig找不到我的Lexer类
我刚刚开始使用解析器之类的东西,我正在尝试为我一直在玩的游戏构建自己的小逻辑语言。我在我的机器上设置了ANTLR4,并通过运行测试代码很好地完成了测试Java ANTLRv4 TestRig找不到我的Lexer类,java,parsing,antlr,Java,Parsing,Antlr,我刚刚开始使用解析器之类的东西,我正在尝试为我一直在玩的游戏构建自己的小逻辑语言。我在我的机器上设置了ANTLR4,并通过运行测试代码很好地完成了测试 grun Hello r -gui 我能够得到适当的输出 但是,当我编译以下语法并尝试运行 grun garden expr -gui 我得到一份工作 NoClassDefFoundError:gardenLexer(错误名称:parser/gardenLexer) 文件夹中存在gardenLexer.class,但由于某些原因,ANTLR似
grun Hello r -gui
我能够得到适当的输出
但是,当我编译以下语法并尝试运行
grun garden expr -gui
我得到一份工作
NoClassDefFoundError:gardenLexer(错误名称:parser/gardenLexer)
文件夹中存在gardenLexer.class,但由于某些原因,ANTLR似乎无法看到它
grammar garden;
@header
{
package parser;
}
expr
: '(' expr ')'
| 'not' expr
| expr 'and' expr
| expr 'xor' expr
| expr 'or' expr
| 'exactly' INT property
| 'atleast' INT property
| 'atmost' INT property
| 'exists' INT property
| property 'adjacent' property
| property 'leftof' property
| property 'rightof' property
| property 'above' property
| property 'below' property
;
property
: SIZE
| COLOR
| TYPE
| SIZE COLOR
| SIZE TYPE
| COLOR TYPE
| SIZE COLOR TYPE
| 'water'
| 'any'
;
WS
: [ \t\n\r]+ -> skip;
INT
: '0'..'9'+;
TYPE
: 'stone'
| 'statue'
| 'plant'
;
COLOR
: 'black'
| 'white'
| 'gray'
;
SIZE
: 'small'
| 'large'
;
如果您的antlr生成的类属于一个包,那么您应该将grun称为
grun *packageName*.garden expr -gui
从“classes”文件夹(而不是sources)语法中的header指令可能是罪魁祸首。我已经有一段时间没有使用ANTLR了,我没有安装它,但是请尝试“grun parser.garden expr-gui”或尝试从语法中删除package指令。在ANTLR 4中,您永远不需要
@header{package…;}
指令。使用-package
命令行参数来替换ANTLR 4。