Formal Grammars: domain-specific language on top of ADPfusion
The formal grammars library provides a QuasiQuoting system which exposes a simple embedded domain-specific language. This language simplifies the creation of formal grammars. During compilation, these grammars are transformed into ADPfusion grammars.
README
(included from project)FormalGrammars: A DSL for formal languages in Haskell
generalized Algebraic Dynamic Programming Homepage
The gADP homepage has a tutorial and example on how to write algorithms / grammars.
Ideas implemented here are described in a couple of papers:
- Christian Hoener zu Siederdissen
Sneaking Around ConcatMap: Efficient Combinators for Dynamic Programming
2012, Proceedings of the 17th ACM SIGPLAN international conference on Functional programming
paper preprint
- Andrew Farmer, Christian Höner zu Siederdissen, and Andy Gill.
The HERMIT in the stream: fusing stream fusion’s concatMap
2014, Proceedings of the ACM SIGPLAN 2014 workshop on Partial evaluation and program manipulation.
paper
- Christian Höner zu Siederdissen, Ivo L. Hofacker, and Peter F. Stadler.
Product Grammars for Alignment and Folding
2014, IEEE/ACM Transactions on Computational Biology and Bioinformatics. 99
paper
- Christian Höner zu Siederdissen, Sonja J. Prohaska, and Peter F. Stadler
Algebraic Dynamic Programming over General Data Structures
2015, BMC Bioinformatics
preprint
- Maik Riechert, Christian Höner zu Siederdissen, and Peter F. Stadler
Algebraic dynamic programming for multiple context-free languages
2016, Theoretical Computer Science
preprint
Contact
Christian Hoener zu Siederdissen
Leipzig University, Leipzig, Germany
choener@bioinf.uni-leipzig.de
http://www.bioinf.uni-leipzig.de/~choener/
|
![]() |
![]() |
|
Stable Sources | git | Bugtracker | Build Status |
Usage of this library in a Haskell project:
This package provides no "main" executable, but rather only library functionality. (Though sometimes tools, or example programs are provided). Usage requires some knowledge of Haskell.- Include the library in your cabal file.
- Use stack to simplify development. This will require adding the library with an exact version to the stack.yaml file. This includes the option to include this library directly from its github repository.