Netbeans和EOF

时间:2010-06-12 16:06:44

标签: java netbeans antlr antlr3 eof

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种新技术可能不是一个好主意。

1 个答案:

答案 0 :(得分:2)

而不是:

ANTLRInputStream input = new ANTLRInputStream(System.in);
你可以这样做:

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

其中args[0]是第一个命令行参数。

或者只是:

ANTLRStringStream input = new ANTLRStringStream("your source here");