创建源代码转换器

Zab*_*abi 8 translation programming-languages compilation

我想知道创建源译者的策略是什么,即从一种高级语言到另一种高级语言的翻译.我想到的两种方式是

1-将一种语言的语法树更改为其他语言语法树2-将其更改为中间语言,然后将其转换为其他高级语言

我的问题是,是否有可能使用这两种策略进行转换,哪种更可行,任何人都可以参考某些转换器完成的任何理论或实现,如上述任何方法.有没有任何标准的基于xml的中间语言,我知道xmlvm使用xml作为中间语言,但它没有提供任何适当的中间语言规范.

SK-*_*gic 8

任何编译器大致都是源到源的转换器.目标语言可以是汇编语言(或直接二进制机器代码语言),或C,或您喜欢的任何高级语言.因此,通用编译器理论是适用的.

正如一条忠告 - 一种中间语言通常不够.使用更多.使用几十种中间语言,每种中间语言只有一个微小方面,与前一种语言不同.这样,任何语言到语言的翻译都不过是微不足道的.

另一个建议(预测这里的downvotes) - 远离XML,特别是作为AST的代表.

  • 同意关于XML的SK逻辑.有关XML作为AST表示的(de)优点的一些讨论,请参见http://stackoverflow.com/a/2831343/120163. (2认同)