
C++
来了解一下TXL吧。它已经支持
C++ 3.0和
Java 8的语法了,而且还有现成的
Java转
Python的示例。TXL的全称为Turing eXtender Language。Turing是用于编写TXL的系统编程语言,在加拿大曾被用作教学编程语言。TXL最初的设计目的是,在不修改已有编译器的情况下,借助能够解释运行规则的预处理器为编程语言增添特性,所以它被设计为能够接受由EBNF描述的语法输入。后来就有了代码分析、自动重构以及不同语言转换等用法,像将C转换为Turing(实际上是一种Pascal方言)就有这样的例子。TXL World方面,今年2月TXL从免费软件转变为开源软件了,其开源地址为
https://github.com/CordyJ/OpenTxl。当然了,作为预处理器,它必然存在一些限制。有些编程语言的语法无法用BNF描述,例如APL;还有些语言需要额外的预处理,像对缩进敏感的
Python或者Haskell,以及在字符集方面也有情况,不过这些问题或多或少可以通过单独的解析器输出抽象语法树(AST)来解决。和完整的编译器实现相比,TXL显然难以自动支持第三方库,甚至对标准库的支持也可能受限。由于内存管理等运行时层面的差异,最终可能不得不妥协,实现成需要手动管理内存的
Java方言这种和官方实现不一致的编程语言界面,哪怕实现了复杂的编译器分析,最多也只能像ARC那样自动插入内存管理代码。它还缺乏完整的编译器报错机制。所以,相对而言,TXL只适合在从一种编程语言迁移到另一种编程语言这种情况下作为一次性解决方案。