如何从编译器中提取语法

时间:2016-03-08 06:44:09

标签: compiler-construction grammar context-free-grammar finite-automata

目前我们正在开发软件现代化项目,我们无法为PL1等过时语言的程序中的每个语句编写语法。

1 个答案:

答案 0 :(得分:4)

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

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

如果你设法开始获得语法,你就会发现PL / 1非常难以解析:它没有关键词。每个"关键字"在语言中也可以用作变量。这是合法的:

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

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

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

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