blob: 436041a446fcf2352d5c705eab28be3360cda3ef [file] [log] [blame]
Flat (Formal LAanguage Transformation) is an experimental programming language
for parsing, transforming, and pretty-printing any data format that can be
expressed as a Parsing Expression Grammar (PEG) [1].
Its purpose is to provide an easy way of dealing with file formats like
Markdown, LaTeX, and org-mode which use a custom grammar, rather than a
standardized meta-format like XML or JSON.
Initially, the intention is to simply provide a parser interpreter (similar to a
parser generator of the bison/flex variety) such that we can get an abstract
syntax tree from a file, from which further processing can be done. The plan is
to later extend it to include a domain-specific language for expressing
transformations between different grammars, similar to Stratego/XT. [2]
To understand PEGs, read the following papers:
"Parsing Expression Grammars: A Recognition-Based Syntactic Foundation". Bryan
Ford, POPL, January 2004. http://bford.info/pub/lang/peg.pdf
"Packrat Parsing: Simple, Powerful, Lazy, Linear Time". Bryan Ford. ICFP,
October 2002. http://bford.info/pub/lang/packrat-icfp02.pdf
[1] http://bford.info/packrat
[2] http://strategoxt.org