在文件上测试JavaCC ?



因此,在我编译代码之后,我希望它从文件而不是命令行读取输入。

所以我们不这样做:

javacc Ex.jj
javac *.java
java Ex "x+2"

我想这样做:

javacc Ex.jj
javac *.java
java test.txt

test.txt里面有这个:

"x+4"

您可以在语法文件中使用main方法声明一个类:

options {
STATIC = false;
IGNORE_CASE = false;
}
PARSER_BEGIN(Ex)
import java.io.InputStream;
import java.io.FileInputStream;
import java.io.IOException;
public class Ex {
public static void main(String[] args) {
try (InputStream in = new FileInputStream(args[0])) {
Ex parser = new Ex(in, "UTF-8");
double r = parser.expr();
System.out.println("Result: " + r);
} catch (ParseException e) {
e.printStackTrace();
}
}
}
PARSER_END(Ex)
...

SKIP : { " " | "r" | "n" | "t" }
TOKEN: {
...
}
double expr(): {
}
{
...
}

最新更新