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
19
A
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
- 1. Durante la generazione del codice, quale lingua dovresti generare?
- 2. Ottimizzazione del codice Haskell
- 3. Generazione del codice F #
- 4. Convertire tre lettere del codice lingua identificativo della lingua (LANGID)
- 5. Haskell pragma: OPTIONS_GHC vs LINGUA
- 6. codice Generazione Haskell da COQ: Valore logico o arity utilizzato
- 7. Generazione codice in Maven
- 8. Analisi del codice statico per nuova lingua. Dove iniziare?
- 9. Codice Metric Tools per Haskell
- 10. Generazione del codice semantico con roslyn
- 11. Qualche libreria Java utilizza annotazioni per la generazione del codice?
- 12. Eventuali raccomandazioni per la generazione del codice ORM Sqlite C#
- 13. Esiste API di generazione del codice per TypeScript?
- 14. Generazione di codice in Clojure
- 15. conversione del codice Haskell a Agda
- 16. Generazione codice sorgente Java Maven per Hibernate
- 17. TypeScript Codice lingua Visual Studio Codice sorgente
- 18. Generazione codice C++
- 19. La generazione del codice C++ in ANTLR 3.2 è pronta?
- 20. Generazione codice MATLAB C++
- 21. Generazione di codice per iOS e Android
- 22. L'uso di Haskell monade un odore di codice?
- 23. Generazione codice Java
- 24. Generazione codice C# in .NET 4
- 25. Implementazione di una lingua in Haskell: liste omogenee
- 26. Get nome di lingua in quella lingua dal codice di lingua
- 27. Generazione di un codice QR in rotaie
- 28. Generazione codice: Modelli controller personalizzati
- 29. Idiomatic codice Haskell per semplificare la ricorsione
- 30. Genera diagrammi per il codice Haskell
È 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. –
@BasileStarynkevitch: potresti indicare i progetti che lo fanno? Sto cercando esempi e trucchi intelligenti ... – akosch
Si potrebbe voler dare un'occhiata al pacchetto [nsis] (http://hackage.haskell.org/package/nsis-0.1.2). – bzn