antlr4 - Cobol - 解析 cobol 程序中的组项

标签 antlr4 cobol gnucobol

我需要从 COBOL 程序中提取信息。我正在使用 COBOL 的 ANTLR 语法。我需要提取整个组变量。我无法使用 ANTLR 提取此内容,因为解析器将每个变量分割/组项提取为单个元素。 我需要以某种方式将组项目作为一堆来获取。我是 COBOL 新手,所以我想了解编译器如何理解要在组中包含哪些元素以及在哪里停止。

例如:

  01 EMPREC.
  02 EEMPNAME.
  10 FIRSTNAME PIC X(10)
  10 LASTNAM PIC X(15)

  07 SNO PIC X(15)

以上定义有效吗?编译器是否会将第一项 (01 EMPREC) 之后的所有元素(=>2 和 <=49)包含在 EMPREC 组中,直到遇到另一个 01 或 77 为止?这样假设是否安全? 级别信息是否足以得出哪些元素属于某个组? 任何指示表示赞赏。

最佳答案

我是您在 ANTLR4 语法项目中找到的 COBOL ANTLR4 语法的作者。 COBOL 语法仅生成抽象语法树 (AST)。

相比之下,您需要的是抽象语义图 (ASG),它表示变量分组以及 AST 元素之间的一般关系。

这样的 ASG 是由我的 proleap-cobol-parser 处的 COBOL 解析器生成的。项目。该项目使用上述 COBOL 语法并解析 AST 元素之间的关系。

解析数据描述条目的示例可以在 unit test 中找到。 .

关于antlr4 - Cobol - 解析 cobol 程序中的组项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40803898/

相关文章:

关于从 HEAP 分配 WORKING-STORAGE 的 COBOL 存储问题

Ubuntu GnuCOBOL 程序在编辑图片中显示 '�' 字符而不是 '£'

cobol - 如何在 Cobol 中调用另一个程序?

java - Java 语法的访问者方法在 ANTLR 4.4 中不起作用

java - 在 Antlr 中使用访问者编辑 AST

java - 我如何引用在 ANTLR 中多次调用同一规则?

cobol - 编写从单独的 vsam 文件中提取信息的 Cobol 程序时遇到问题

ibm-midrange - 无法显示排序值,值缺失

cobol - 无法获得正确的文件输出

java - 使用 ANTLR 语法进行 Verilog 解析