2012-04-22 62 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)。