ANTLR CPP14语法根

ANTLR CPP14 grammar root

我是 ANTLR 的新手,学习了语法和工具的基础知识。 我试图在 example.txt 中解析一个简单的 CPP 源,它是:

int glob = 0;
int main() {
    return 0;
}

语法:https://github.com/antlr/grammars-v4/blob/master/cpp/CPP14.g4

我尝试了 grun CPP14 translationunit -gui < ./example.txt 并收到: No method for rule translationunit or it has arguments

translationunit不就是它的根吗?

TestRig 需要编译的 Java 源文件才能工作。

从终端(假设您的 CPP14.g4 和 ANTLR JAR 在当前工作目录中),执行以下操作:

生成解析器类

java -cp antlr-4.8-complete.jar org.antlr.v4.Tool CPP14.g4

编译生成的解析器类

javac -cp .:antlr-4.8-complete.jar *.java

运行 TestRig

java -cp .:antlr-4.8-complete.jar org.antlr.v4.gui.TestRig CPP14 translationunit -gui < example.txt

导致我的机器出现以下结果: