我收到错误的Test class not found错误,即使我是通过命令
创建的java org.antlr.Tool something.g
通过ANTLRworks进行调试时。我一直在网上搜索这个,但没有成功。你知道吗,如何解决我的问题?
由于
编辑 - 语法:
grammar Expr;
prog : stat+ ;
stat : expr NEWLINE
| ID '=' expr NEWLINE
| NEWLINE
;
expr : multExpr (('+' |'-' ) multExpr)*;
multExpr: atom ('*' atom)*
;
atom : INT
| ID
| '(' expr ')'
;
ID : ('a'..'z' |'A'..'Z' )+ ;
INT : '0'..'9' + ;
NEWLINE:'\r' ? '\n' ;
WS : (' ' |'\t' |'\n' |'\r' )+ {skip();} ;
错误讯息:
使用输入文本3 * 4进行调试时输出 - “错误:无法找到或加载主类测试”而在子文件夹/输出中生成测试。 ..
答案 0 :(得分:1)
由于您在评论中评论说从控制台运行测试类也失败了,这是一个有效的方法:
import org.antlr.runtime.*;
public class Main {
public static void main(String[] args) throws Exception {
ExprLexer lex = new ExprLexer(new ANTLRStringStream("1 + 2 - 3 * 4 - E\n"));
CommonTokenStream tokens = new CommonTokenStream(lex);
ExprParser parser = new ExprParser(tokens);
parser.prog();
}
}
现在将您的ANTLR JAR(我的示例中为v3.3)放在与Main.java
和Expr.g
相同的目录中,并从控制台运行主类,如下所示:
java -cp antlr-3.3.jar org.antlr.Tool Expr.g
javac -cp antlr-3.3.jar *.java
java -cp .;antlr-3.3.jar Main
事实上,没有任何内容打印到您的控制台意味着解析没有任何问题。