ANTLR:目标语言转换的来源

时间:2015-07-20 08:12:25

标签: antlr antlr4

我对ANTLR& amp;语法。是否正确的说ANTLR可以执行源语言来将目标语言转换为ASP到JSP或COBOL到JSP?如果是的话,你能帮我提供一些信息/教程/链接探索者的可能性吗?

想法是使用ANTLR以实用的方式将大量代码从源转换为目标。

由于

1 个答案:

答案 0 :(得分:4)

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

  1. 从源语言
  2. 的输入文本生成解析树
  3. 反复遍历解析树以分析解析树的节点,添加和演化与各个解析树节点相关联的属性(装饰器模式) - 属性将描述表示节点内容所需的更改用目标语言。
  4. 解析树的最终步行以收集和输出目标语言文本。
  5. 属性的形式和内容以及创建和演变的进展将完全取决于源语言和目标语言的性质以及架构师的转换策略。

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

    鉴于转换是一次性事件,实施5,10或甚至更多步行没有根本的惩罚。只是'在你的情况下有意义的'实用性。

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

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