因此,在我编译代码之后,我希望它从文件而不是命令行读取输入。
所以我们不这样做:
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(): {
}
{
...
}