我正在学习如何使用Antlr4解析COBOL源代码。目前,我正在遵循这些步骤,正如Enam在他的Youtube 视频中所展示的那样。
基本上,我下载了antlr-4.7.1-complete.jar并将其放在C:\Javalib中。是的,我还包括了进入我的Windows环境的路径,并创建了antlr.bat和grun.bat文件。
对于语法文件,我使用的是从Ulrich github获取的Cobol85.g4和Cobol85Preprocessor.g4。同时,我使用HellowWorl.cbl示例源代码来查看解析是如何工作的。
运行antlr.bat之后,我执行以下命令:
C:\Users\ffa\Desktop\COBOL>grun Cobol85Preprocessor startRule HellowWorld.cbl因此,我收到如下所示的错误消息:
Warning: TestRig moved to org.antlr.v4.gui.TestRig; calling automatically
Can't load Cobol85.g4 as lexer or parser由于我不确定为什么不能像视频中所示的那样解析它,所以我还尝试了以下命令:
C:\Users\ffa\Desktop\COBOL>grun Cobol85 startRule HellowWorld.cbl和
C:\Users\ffa\Desktop\COBOL>grun Cobol85* startRule HellowWorld.cbl最后,我仍然得到同样的错误信息。所以,我通过谷歌搜索并找到了一个下载antlr-runtime-4.7.1.jar的建议。因此,我下载了该文件,并将其放在位于C:\Javalib的同一个目录中。
当我执行上面的命令时,这一次,我收到了另一条消息。
Error: Could not find or load main class org.antlr.v4.runtime.misc.TestRig有人能帮我用Antlr4解析COBOL源代码吗?如果有人能解释Cobol85.g4和Cobol85Preprocessor.g4之间的区别,那也很好。
发布于 2018-05-21 08:10:03
声明:我是这些COBOL ANTLR4语法文件的作者。
语法Cobol85.g4生成的解析器必须提供COBOL源代码,该源代码已经用COBOL预处理程序进行了预处理。Cobol85Preprocessor.g4是该预处理器的核心,它支持对语句(如COPY REPLACE、EXEC SQL等)的解析。
Cobol85Preprocessor.g4是用相当广泛的附加逻辑来增强的,它不包括在语法文件中,它支持行格式、换行、注释行、注释条目、EXEC、EXEC等的规范化。
我编写的ProLeap COBOL解析器基于Cobol.g4和Cobol85Preprocessor.g4文件在Java中实现了所有这些。
https://stackoverflow.com/questions/49087999
复制相似问题