comptrans

Automatically converting ASTs into compositional data types

https://github.com/jkoppel/comptrans

Latest on Hackage:0.1.0.5

This package is not currently in any snapshots. If you're interested in using it, we recommend adding it to Stackage Nightly. Doing so will make builds more reliable, and allow stackage.org to host generated Haddocks.

BSD-3-Clause licensed and maintained by James Koppel

Template Haskell for converting an AST for a language written using normal algebraic data types into ones written using multi-sorted compositional data types (Data.Comp.Multi from the compdata library) so that you can use generic and modular operators on it. You might need to add additional constructors that can e.g.: convert a (Term e Foo) into a (Term e [Foo]).

The sCource files have comments showing example output for a simple language. See the examples directory for an extended example of generating a compositional data type for the entire Java language, with labelled variants as well as variants where an entire project of source files can be treated as a single AST -- and you can use the same operations on all of them!