首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何编译这个COBOL语法文件?

如何编译这个COBOL语法文件?
EN

Stack Overflow用户
提问于 2018-05-18 15:39:56
回答 1查看 481关注 0票数 0

我正在使用以下URL中的COBOL语法文件:

代码语言:javascript
复制
https://github.com/antlr/grammars-v4/tree/master/cobol85

在给定的源文件中,有两个语法文件,它们是Cobol85.g4Cobol85Preprocessor.g4

如果我分开处理,两者都很有魅力,如下所示:

代码语言:javascript
复制
~$ antlr4 -Dlanguage=Python2 Cobol85

代码语言:javascript
复制
~$ antlr4 -Dlanguage=Python2 Cobol85Preprocessor

但是,我意识到,只有Cobol85Preprocessor能够理解COBOL中的注释。另一方面,Cobol85语法文件没有。我最好的方法,也许我需要将两者一起导入到一个文件中。

因此,我创建了另一个名为Cobol.g4的语法文件,它包含以下代码:

代码语言:javascript
复制
grammar Cobol;
import Cobol85Preprocessor, Cobol85;

并使用以下命令编译它:

代码语言:javascript
复制
~$ antlr4 -Dlanguage=Python2 Cobol

好消息,我没发现编译它有什么问题。坏消息是,与以前的方法(分别处理语法文件)相比,它不能完美地工作。

相反,我收到了以下错误消息:

代码语言:javascript
复制
line 1:30 extraneous input '.\r\n     ' expecting {<EOF>, ADATA, ADV...

有没有办法解决这一问题,或者通过设计,我应该分别处理这两个问题?有人能帮我解决这个问题吗?

PS:我不确定这段信息是否有用。我正在与侦听器一起使用Antlr 4.7.1

EN

回答 1

Stack Overflow用户

发布于 2018-05-20 19:02:24

声明:我是这些COBOL ANTLR4语法文件的作者。

语法Cobol85.g4生成的解析器必须提供COBOL源代码,该源代码已经用COBOL预处理程序进行了预处理。Cobol85Preprocessor.g4是该预处理器的核心,它支持对语句(如COPY REPLACEEXEC SQL等)的解析。

Cobol85Preprocessor.g4是用相当广泛的附加逻辑来增强的,它不包括在语法文件中,它支持行格式、换行、注释行、注释条目、EXEC、EXEC等的规范化。这个缺失的代码会导致你注意到的问题。

我编写的ProLeap COBOL解析器基于Cobol.g4Cobol85Preprocessor.g4文件在Java中实现了所有这些。然而,目前还没有Python实现。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50414888

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档