ANTLR 一开始不识别令牌
ANTLR not recognising the token at the beginning
我是ANTLR初学者,想做一个检测变量的程序。为此,我编写了以下 ANTLR 代码,但是当我使用 grun
测试它时,它在输入 p=10
时给我一个错误 line 1:0 token recognition error at: 'p'
。我无法理解为什么这不起作用。
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'
错误。
The command I am running on terminal is antlr4 rules.g4;grun rules assign -tokens
antlr4
将从您的语法生成 Java 个源文件。 grun
将访问 rulesParser.class
和 rulesLexer.class
。您缺少的是使用 javac
将生成的源文件编译为 class 文件之间的步骤。
由于您没有收到关于 grun
无法找到 class 的任何错误,您可能仍然有 class 上次 [=] 遗留下来的文件28=] javac
。所以 grun
正在执行那些旧文件,这些文件显然不包含任何匹配字母的内容(或者至少不包含字母 p)。使用 javac
编译源文件应该可以解决这个问题。
我是ANTLR初学者,想做一个检测变量的程序。为此,我编写了以下 ANTLR 代码,但是当我使用 grun
测试它时,它在输入 p=10
时给我一个错误 line 1:0 token recognition error at: 'p'
。我无法理解为什么这不起作用。
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'
错误。
The command I am running on terminal is
antlr4 rules.g4;grun rules assign -tokens
antlr4
将从您的语法生成 Java 个源文件。 grun
将访问 rulesParser.class
和 rulesLexer.class
。您缺少的是使用 javac
将生成的源文件编译为 class 文件之间的步骤。
由于您没有收到关于 grun
无法找到 class 的任何错误,您可能仍然有 class 上次 [=] 遗留下来的文件28=] javac
。所以 grun
正在执行那些旧文件,这些文件显然不包含任何匹配字母的内容(或者至少不包含字母 p)。使用 javac
编译源文件应该可以解决这个问题。