如何从编译器中提取语法
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 完整的语法和前端。查看我的简介了解更多详情)。
目前我们正在进行软件现代化项目,我们无法为过时的语言(如 PL1)编写程序中的每条语句的语法。
如果不花费大量资源,您将无法将 PL/1 编译器二进制文件反向工程回语法。
获取 PL/1 手册(IBM 提供)并使用它来定义语法。
如果您 设法开始掌握语法,您会发现 PL/1 极其难以解析:它没有关键字。语言中的每个 "keyword" 也可以用作变量。这是合法的:
IF BEGIN>END*PROCEDURE[PUT] THEN GOTO CALL;
传统的解析器生成器无法处理此问题。
您将面临的另一个问题是 PL/1 的预处理器。人们很少在 PL/1 源代码中遇到这些指令,但在大型软件系统(通常正在进行现代化的那种)中几乎总是遇到这些指令。
(来过这里,完成了 PL/1 完整的语法和前端。查看我的简介了解更多详情)。