如何从编译器中提取语法

How to extract the grammar from compiler

目前我们正在进行软件现代化项目,我们无法为过时的语言(如 PL1)编写程序中的每条语句的语法。

如果不花费大量资源,您将无法将 PL/1 编译器二进制文件反向工程回语法。

获取 PL/1 手册(IBM 提供)并使用它来定义语法。

如果您 设法开始掌握语法,您会发现 PL/1 极其难以解析:它没有关键字。语言中的每个 "keyword" 也可以用作变量。这是合法的:

      IF BEGIN>END*PROCEDURE[PUT] THEN GOTO CALL;

传统的解析器生成器无法处理此问题。

您将面临的另一个问题是 PL/1 的预处理器。人们很少在 PL/1 源代码中遇到这些指令,但在大型软件系统(通常正在进行现代化的那种)中几乎总是遇到这些指令。

(来过这里,完成了 PL/1 完整的语法和前端。查看我的简介了解更多详情)。