[英]ANTLR not recognising the token at the beginning
我是 ANTLR 的初学者,我想制作一个检测变量的程序。 为此,我编写了以下 ANTLR 代码,但是当我使用grun
测试它时,它给了我一个错误line 1:0 token recognition error at: 'p'
on grun
input p=10
。 我无法理解为什么这不起作用。
grammar rules;
/*
* Parser Rules
*/
addition : NUMBER PLUS NUMBER;
assign : VARIABLE ASSIGNMENT NUMBER;
/*
* Lexer Rules
*/
VARIABLE : [a-zA-Z_]+;
NUMBER : [0-9]+ ;
WHITESPACE : [ \n\t\r]+ -> skip ;
NEWLINE: '\n';
PLUS : '+';
ASSIGNMENT : '=';
添加规则工作正常,但分配不起作用。 我在终端上运行的命令是antlr4 rules.g4;grun rules assign -tokens
然后我输入p=10
进行测试,但它仍然不起作用并显示我line 1:0 token recognition error at: 'p'
错误。
我在终端上运行的命令是
antlr4 rules.g4;grun rules assign -tokens
antlr4
将根据您的语法生成 Java 源文件。 grun
将访问rulesParser.class
和rulesLexer.class
。 您缺少的是使用javac
将生成的源文件编译为类文件之间的步骤。
由于您没有收到关于grun
无法找到类的任何错误,因此您可能仍有上次运行javac
时遗留的类文件。 所以grun
正在执行那些旧文件,这些文件显然不包含任何与字母匹配的内容(或者至少不包含字母 p)。 使用javac
编译源文件应该可以解决这个问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.