2011-10-06 68 views
1

當我得到Test類的錯誤沒有發現錯誤,即使我已經通過命令ANTLR - 調試

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

你能發表文法嗎?準確的錯誤信息? –

+0

添加到主要帖子 – Waypoint

+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.javaExpr.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 

,沒有什麼是打印到控制檯的事實意味着解析去沒有任何問題。

+0

謝謝,它現在正在工作 – Waypoint

+0

@Waypoint,不客氣。如果ANTLRWorks讓我感到悲傷,我總是通過控制檯進行測試來檢查是否真的有問題。如果控制檯測試正常,則重新啓動ANTLRWorks並重試。 ANTLRWorks是一個很好的工具,但有時它有其特殊性。 –