2012-04-22 61 views
19

我想为Haskell中的另一种语言生成代码,但是我对 如何处理这个问题感到困惑。我正在寻找Haskell中抽象和优雅的语言表示,这对代码生成也很有用。有问题的语言是InstallScript(语言参考指南中的link)。有人可以提供关于如何捕获Haskell类型的InstallScript中使用的语言结构的提示(或许有例子吗?),还是指向类似的项目以获取灵感?在Haskell中生成另一种语言的代码

+6

你只需要定义和实现抽象类型来表示对象语言(InstallScript)的抽象语法树并拥有合适的漂亮打印机等等。 – 2012-04-22 12:54:40

+0

@BasileStarynkevitch:请问您可以指向这样做的项目吗?我正在寻找例子和聪明的技巧...... – akosch 2012-04-22 12:56:55

+5

你可能想看看[nsis软件包](http://hackage.haskell.org/package/nsis-0.1.2)。 – bzn 2012-04-22 12:59:21

回答

17

这是一个在Haskell中解决的classic问题。

  • 定义抽象语法树为你的语言
  • 定义一个漂亮的打印机(生成代码)

奖励积分:

  • 定义解析器
  • 写不错的哈斯克尔组合库让Haskell嵌入目标
  • 为您的抽象语法编写一个优化器

Hackage上有many, many examples(例如, this one)。