2012-04-22 14 views
19

Desidero generare codice per un'altra lingua in Haskell, ma sono perplesso su come si avvicini a questo problema. Sto cercando una rappresentazione astratta ed elegante della lingua in Haskell, che è anche utile per la generazione del codice. La lingua in questione è InstallScript (link nella guida di riferimento del linguaggio). Qualcuno potrebbe fornire suggerimenti (magari con esempi?) Su come acquisire i costrutti linguistici utilizzati in InstallScript nei tipi Haskell o puntare a progetti simili per l'ispirazione?Generazione del codice per un'altra lingua in Haskell

+6

È sufficiente definire e implementare i tipi astratti per rappresentare l'albero di sintassi astratto del linguaggio dell'oggetto (InstallScript) e disporre delle stampanti appropriate, ecc. Ecc. –

+0

@BasileStarynkevitch: potresti indicare i progetti che lo fanno? Sto cercando esempi e trucchi intelligenti ... – akosch

+5

Si potrebbe voler dare un'occhiata al pacchetto [nsis] (http://hackage.haskell.org/package/nsis-0.1.2). – bzn

risposta

17

Questo è un problema classic da risolvere in Haskell.

  • Definire un albero di sintassi astratta per la lingua
  • definire una stampante abbastanza (per generare il codice)

per i punti bonus:

  • Definire un parser
  • scrivere un bella libreria di combinatori Haskell per permetterti di incorporare l'obiettivo in Haskell
  • Scrivi un ottimizzatore per la sintassi astratta

Ci sono many, many examples su Hackage (ad es. this one).

Problemi correlati