2

Java、ANTLR 和 Netbeans 新手在这里。

我已经安装了 jdk 和 netbeans。我在 netbeans 6.8 上开始了一个新项目,并将 antlr-3.2.jar 添加为库。我还使用 AntlrWorks 创建了一个词法分析器和解析器类。这些类被命名为 ExprParser.java 和 ExprLexer.java。我将它们复制到名为 path-to-netbeans-project/src/parsers 的目录中。

我有一个主文件:

包javaapplication2;

导入 org.antlr.runtime.*;
导入解析器。*;

公共类主要{

    公共静态 void main(String[] args) 抛出异常 {

        ANTLRInputStream 输入 = 新的 ANTLRInputStream(System.in);
        ExprLexer 词法分析器 = 新的 ExprLexer(输入);
        CommonTokenStream 令牌 = new CommonTokenStream(lexer);
        ExprParser 解析器 = 新的 ExprParser(tokens);
        解析器.prog();

    }

}

应用程序构建良好。我正在阅读的书说我应该运行程序并输入一些内容,然后按 Ctrl+Z(我在 Windows 上)将 EOF 发送到控制台。问题是当我在 netbeans 控制台中按 Ctrl+z 时没有任何反应。当我从命令行运行时, ctrl+z 工作正常。

这可能是太多的信息,但我无法弄清楚。对不起。一次学习 3 项新技术可能不是一个好主意。

4

1 回答 1

2

代替:

ANTLRInputStream input = new ANTLRInputStream(System.in);

你可以这样做:

ANTLRStringStream input = new ANTLRStringStream(args[0]);

args[0]第一个命令行参数在哪里。

要不就:

ANTLRStringStream input = new ANTLRStringStream("your source here");
于 2010-06-13T05:47:33.653 回答