用C ++编写的编译器框架,用于高阶,动态,函数式语言

时间:2011-04-04 20:09:55

标签: compiler-construction frameworks functional-programming

有许多编译器框架可以帮助实现语言的后端(例如LLVM)。但是,似乎缺乏用C ++编写的“中端”,它们可以代表更高阶,动态的函数式语言。框架应该做一些通用的东西,如lambda提升,闭包转换,类型推理等,并帮助其他语言特定的转换,比如翻译类型等。我能想到的一些候选人是PyPy和{{ 3}}。这些是高阶,动态,函数语言的编译器。可以说,可以将任何语言的前端连接到这些语言,并重新使用它们中可用的数据结构和转换来完成中端工作。但是,它们分别在Python和Clean中实现。是否为了上述目的在C ++中实现了框架?

1 个答案:

答案 0 :(得分:0)

  然而,似乎缺乏"中端"用C ++编写,可以代表高阶,动态,函数式语言。该框架应该执行诸如lambda提升,闭包转换,类型推理等通用的东西,并帮助其他语言特定的转换,比如翻译类型等。

在没有构造函数模式匹配或代数数据类型的语言中编写编译器中端 - 实质上是符号操作和代数数据类型转换的引擎 - 确实是一个非常奇怪的选择。

函数式语言的编译器是/ always /用函数式语言编写的。通常是打字的。这些语言远远更适合这项任务。