Macrowave is a Scala library, which brings scanner and parser generators to the 21st century.
Tools like Lex, Flex, Bison and YACC are well known among compiler engineers. One disadvantage of those tools is that the creation (generation) of scanners and parsers doesn't belong to the actual process of compilation. Using macros, the generation of the scanners and parsers can be achieved via meta-programming. Thus, the disadvantage will disappear.
Macrowave allows to define a parsing expression grammar, which gets transformed into a regular automaton for tokenization and a table driven LALR(1)-parser.
The project macrowave is built with SBT 0.13.12 or later and its master branch with Scala 2.11.8.
To build the project:
- Install SBT and Scala.
- Clone this project and
cd
into the root directory of the cloned repository. - Run
sbt compile
to build the projectsbt test
to run the unit tests
- TODO: Nothing to use, yet!
The name "macrowave" is obviously a play on "macros" and "microwave".