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种新技术可能不是一个好主意。
答案 0 :(得分:2)
而不是:
ANTLRInputStream input = new ANTLRInputStream(System.in);
你可以这样做:
ANTLRStringStream input = new ANTLRStringStream(args[0]);
其中args[0]
是第一个命令行参数。
或者只是:
ANTLRStringStream input = new ANTLRStringStream("your source here");