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.
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!