java Main < inputfile 不起作用(Main 是一个用于测试 ANTLR 语法的 java 类)

标签 java error-handling io redirect antlr3

我正在尝试使用这样的标准测试装置来测试 ANTLR 语法

import org.antlr.runtime.*;

 class Main {
  public static void main(String[] args) throws Exception {
    SampleLexer lexer = new SampleLexer(new ANTLRStringStream(args[0]));
    SampleParser parser = new SampleParser(new CommonTokenStream(lexer));
    parser.program();
  }
}

我有一个名为 mytest00.txt 的测试文件。现在我想使用这个文件作为输入。我想我正在这里进行标准 IO 重定向。

   bash-3.2$ java Main < mytest00

但是它给了我这样的错误消息。请问有什么问题吗?谢谢。

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0
    at Main.main(SampleTest.java:5)

最佳答案

您正在尝试使用args[0],但您实际上并未传递任何命令行参数 - 您只是将文件重定向到进程的标准输入。因此该数组没有元素,并且您会收到异常,因为您试图获取该空数组的第一个元素。

目前还不清楚您是否实际上想要ANTLRStringStream。我怀疑你想要 ANTLRInputStream 包装 System.in if args.length == 0ANTLRFileStream(args[0]) 否则。

关于java Main < inputfile 不起作用(Main 是一个用于测试 ANTLR 语法的 java 类),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8019495/

相关文章:

python - 读取文本文件的更有效方法是什么

java - 插件GMF

java - 使用synchronized方法和 block 解决Java线程中的计数器问题

python-3.x - Seaborn分类图的问题

python - 如何在 python + paramiko 中将套接字错误作为异常处理?

python - 使用Python执行cmd命令

haskell - IO 操作中纯表达式的重复求值

java - OAuth 401 未经授权

java - 将 glArrayElement 与 LWJGL 结合使用

c# - "try...catch" block 中的代码如何抛出未处理的异常?