【发布时间】:2012-12-14 09:20:50
【问题描述】:
我想在两种语言 LANG1 和 LANG2 之间创建一个计算机语言翻译器。更具体地说,我想将用 LANG1 编写的代码翻译成 LANG2 中的源代码。
我有 LANG1 和 LANG2 的 BNF 语法。
LANG1 是我自己编写的一个小型 DSL,本质上是 LANG2 的“更简单”版本。
我希望能够从用 LANG1 编写的输入语句生成 LANG2 中的语句。
我正在为 LANG1 编译编译器,但我不知道下一步该做什么(以便将 LANG1 语句转换为 LANG2 语句)。
我对所涉及的步骤的理解如下:
1. BNF for my DSL (LANG1) DONE
2. Reverse engineered the BNF for LANG2 DONE
3. Learning how to generate a compiler for LANG1 TODO
4. Translate LANG1 statements to LANG2 statements ???
从 LANG1 语句生成 LANG2 语句涉及哪些步骤?
我的代码库是 C++,所以我可以使用 C 或 C++ 生成的 Parser。
PS:我将使用 ANTLR3 为 LANG1 生成编译器
【问题讨论】:
-
如果你想用两种语法来驱动这个过程,你应该看看我公司的程序转换引擎,DMS。 DMS 将让你以“如果你在 LANG1 中看到这个,用 LANG2 中的那个替换”的形式编写源到源的转换规则。有关详细信息,请参阅semdesigns.com/Products/DMS/DMSRewriteRules.html。
标签: c++ compiler-construction antlr antlr3 translate