【问题标题】:Generating code for another language in Haskell在 Haskell 中为另一种语言生成代码
【发布时间】:2012-05-03 07:51:13
【问题描述】:

我想在 Haskell 中为另一种语言生成代码,但我不知道如何 来解决这个问题。我正在寻找 Haskell 中语言的抽象和优雅表示,这对于代码生成也很有用。有问题的语言是 InstallScript(link 到语言参考指南)。有人可以提供有关如何在 Haskell 类型中捕获 InstallScript 中使用的语言结构的提示(可能带有示例吗?),或者指出类似的项目以获得灵感?

【问题讨论】:

  • 您只需要定义和实现抽象类型来表示您的对象语言(InstallScript)的抽象语法树,并拥有合适的漂亮打印机等。
  • @BasileStarynkevitch:你能指出这样做的项目吗?我正在寻找示例和巧妙的技巧...
  • 你可能想看看nsis package
  • @bzn:谢谢,这正是我想要的!
  • @akosch 你可能还想看看 hackage.haskell.org 上的 language-javascript 项目,它提供了一个解析器、一个 AST 和一个漂亮的 javascript 打印机。

标签: haskell code-generation installscript


【解决方案1】:

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

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

奖励积分:

  • 定义解析器
  • 编写一个不错的 Haskell 组合库,让您将目标嵌入到 Haskell 中
  • 为您的抽象语法编写优化器

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

【讨论】:

  • “many, many examples”的url的hash中有一个不正确的词(应该是'cat:Language')。由于它只有一个字节,我无法编辑它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-23
  • 2014-11-04
  • 2011-01-04
  • 2018-06-23
  • 2012-06-26
  • 1970-01-01
相关资源
最近更新 更多