ANTLR-调试时未找到测试类错误

ANTLR-调试时未找到测试类错误,antlr,Antlr,我得到了测试类not found错误的错误,即使我已经通过命令完成了它 java org.antlr.Tool something.g 当通过AntlWorks进行调试时。我一直在网上搜索,但没有成功。你知道怎么解决我的问题吗 谢谢 编辑-语法: grammar Expr; prog : stat+ ; stat : expr NEWLINE | ID '=' expr NEWLINE | NEWLINE ; expr :

我得到了测试类not found错误的错误,即使我已经通过命令完成了它

java org.antlr.Tool something.g

当通过AntlWorks进行调试时。我一直在网上搜索,但没有成功。你知道怎么解决我的问题吗

谢谢

编辑-语法:

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();} ;
错误消息:

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进行调试时,会生成输出-“错误:无法找到或加载主类Test”,而在子文件夹/output中生成Test

因为您在注释中评论说从控制台运行测试类也失败,下面是一个有效的方法:

import org.antlr.runtime.*;
公共班机{
公共静态void main(字符串[]args)引发异常{
ExprLexer-lex=newexprlexer(newantlrstringstream(“1+2-3*4-E”));
CommonTokenStream令牌=新的CommonTokenStream(lex);
ExprParser parser=新的ExprParser(令牌);
parser.prog();
}
}
现在将您的ANTLR JAR(在我的示例中是v3.3)放在与
Main.java
Expr.g
相同的目录中,并从控制台运行Main类,如下所示:

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

控制台上没有打印任何内容这一事实意味着解析过程没有出现任何问题。

因为您在评论中评论说从控制台运行测试类也失败了,下面是一个有效的方法:

import org.antlr.runtime.*;
公共班机{
公共静态void main(字符串[]args)引发异常{
ExprLexer-lex=newexprlexer(newantlrstringstream(“1+2-3*4-E”));
CommonTokenStream令牌=新的CommonTokenStream(lex);
ExprParser parser=新的ExprParser(令牌);
parser.prog();
}
}
现在将您的ANTLR JAR(在我的示例中是v3.3)放在与
Main.java
Expr.g
相同的目录中,并从控制台运行Main类,如下所示:

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

控制台上没有打印任何内容,这意味着解析过程没有出现任何问题。

您可以发布语法吗?准确的错误信息是什么?你的目标语言是什么?所以我的理解是,你是从这个语法生成代码(看起来像基本的计算器示例)。您提到测试实际上是生成的,但是AntlWorks调试器没有找到它。我认为问题可能是ANTLRWorks找不到类,因为它不在类路径中,或者类似的普通问题。从命令行运行时会发生什么情况?那么它能工作吗?是的,这是一个简单的例子,但它一定是类路径错误。尽管如此,java-c在尝试运行Test.javasi时还是出现了一个致命的异常。另一方面,我的Java和Android开发工作正常。我尝试将…/output path添加到我的environment变量中,但没有成功。还带着同样的东西你能把语法贴出来吗?准确的错误信息是什么?你的目标语言是什么?所以我的理解是,你是从这个语法生成代码(看起来像基本的计算器示例)。您提到测试实际上是生成的,但是AntlWorks调试器没有找到它。我认为问题可能是ANTLRWorks找不到类,因为它不在类路径中,或者类似的普通问题。从命令行运行时会发生什么情况?那么它能工作吗?是的,这是一个简单的例子,但它一定是类路径错误。尽管如此,java-c在尝试运行Test.javasi时还是出现了一个致命的异常。另一方面,我的Java和Android开发工作正常。我尝试将…/output path添加到我的environment变量中,但没有成功。还带着枪same@Waypoint,不客气。如果ANTLRWorks让我感到悲伤,我总是从控制台执行测试,以检查是否确实存在问题。如果控制台测试正常,我将重新启动AntlWorks并重试。ANTLRWorks是一个伟大的工具,但有时也有其独特之处。@Waypoint,不客气。如果ANTLRWorks让我感到悲伤,我总是从控制台执行测试,以检查是否确实存在问题。如果控制台测试正常,我将重新启动AntlWorks并重试。ANTLRWorks是一个伟大的工具,但有时也有其独特之处。