小编lea*_*eaf的帖子

最终的ANTLR参考 - 第一个程序不起作用

我最近购买了The Definitive ANTLR Reference,我很高兴开始使用ANTLR.
在第一章中,显示了这个语法:

grammar T;

options {
    language = Java;
}

r : 'call' ID ';' {System.out.println("invoke " + $ID.text);} ;
ID : 'a'..'z'+ ;
WS : (' '|'\n'|'\r')+   {$channel=HIDDEN;} ;
Run Code Online (Sandbox Code Playgroud)

我将这个语法复制到一个文件(.g扩展名)中,生成了Lexer和Parser,并创建了一个主类,如下所示:

import org.antlr.runtime.*;

public final class Test {
    public static void main(String[] args) throws Exception {
        ANTLRInputStream input = new ANTLRInputStream(System.in);
        TLexer lexer = new TLexer(input);
        CommonTokenStream tokens = new CommonTokenStream(lexer);
        TParser parser = new TParser(tokens);

        parser.r();
    }
}
Run Code Online (Sandbox Code Playgroud)

没有真正的错误,但是当我运行主类并输入:

call foo;
Run Code Online (Sandbox Code Playgroud)

什么都没发生.应该将"invoke foo"输出到屏幕,但没有任何反应.我不想在没有完成任何练习的情况下继续读书.如果重要的话,我在Eclipse中使用ANTLR 3.4.很抱歉,这似乎是一个简单的问题,但我是ANTLR的新手. …

antlr antlr3

5
推荐指数
1
解决办法
378
查看次数

标签 统计

antlr ×1

antlr3 ×1