这里是 Java、ANTLR 和 Netbeans 新手。
我已经安装了 jdk 和 netbeans。我在 netbeans 6.8 上开始了一个新项目,并将 antlr-3.2.jar 添加为一个库。我还使用 AntlrWorks 创建了一个词法分析器和解析器类。这些类被命名为 ExprParser.java 和 ExprLexer.java。我将它们复制到名为 path-to-netbeans-project/src/parsers 的目录中。
我有一个主文件:
package javaapplication2; import org.antlr.runtime.*; import parsers.*; public class Main { public static void main(String[] args) throws Exception{ ANTLRInputStream input = new ANTLRInputStream(System.in); ExprLexer lexer = new ExprLexer(input); CommonTokenStream tokens = new CommonTokenStream(lexer); ExprParser parser = new ExprParser(tokens); parser.prog(); } }
应用程序构建良好。我正在阅读的书说我应该运行该程序并输入一些内容,然后按 Ctrl+Z(我在 Windows 上)将 EOF 发送到控制台。问题是当我在 netbeans 控制台中按 Ctrl+z 时没有任何反应。当我从命令行运行时,ctrl+z 工作正常。
这可能是太多的信息,但我无法弄明白。对不起。一次学习 3 种新技术可能不是一个好主意。
最佳答案
代替:
ANTLRInputStream input = new ANTLRInputStream(System.in);
你可以这样做:
ANTLRStringStream input = new ANTLRStringStream(args[0]);
其中 args[0]
是第一个命令行参数。
或者只是:
ANTLRStringStream input = new ANTLRStringStream("your source here");
关于java - Netbeans 和 EOF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3029256/