ANTLR:源语言到目标语言的转换

use*_*864 2 antlr antlr4

我对 ANTLR 和语法有一定的了解。说 ANTLR 可以进行源语言到目标语言的转换,如 ASP 到 JSP 或 COBOL 到 JSP 的转换是否正确?如果是的话,你能帮我提供一些信息/教程/链接到资源管理器的可能性吗?

想法是使用 ANTLR 务实地将大量代码从源代码转换为目标代码。

谢谢

GRo*_*erg 5

在 Antlr4 中构建翻译器的基本步骤是:

  1. 从源语言的输入文本生成解析树
  2. 重复遍历解析树以分析解析树的节点,添加和演化与单个解析树节点相关的属性(装饰器模式)——这些属性将描述表示目标中节点内容所需的更改语。
  3. 分析树的最后一步收集和输出目标语言文本。

属性的形式和内容以及创建和演化的进程将完全取决于源语言和目标语言的性质以及架构师的转换策略。

由于 Antlr 解析树遍历可以在逻辑上相互独立,因此可以在单独的遍历中解决特定的转换方面。例如,一次遍历可以评估(可能除其他外)单个perform until语句是否将转换为ifwhile语句。另一步可以专门用于分析变量名称,以确保在正确的范围内创建/访问它们,并确定任何目标语言所需的临时变量的命名和范围。等等。

鉴于转换是一次性的,因此执行 5 次、10 次甚至更多次步行没有根本性的惩罚。只是“在您的情况下有意义的任何事情”的实用性。

在另一个 QA 中解决的(相关)警告是如何处理两种语言的语句之间没有简单或接近相同的转换。要转换唯一的源语言语句,则需要创建目标语言运行时包来实现相应的功能。

GenPackage(我是作者)自动生成基本转换项目。生成的项目仅代表一种可能的架构方法,并留下大量工作要做以使其适应任何特定的最终用途。