flex
and bison
.NOTE: BARF is still under development and is not yet feature-complete. It is prone to design/API changes without warning, so don't expect to not have to change stuff if you start using it this early.
The primary tools, reflex
and trison
aren't "yet another" incarnations/clones of flex
and bison
. The critical feature is that neither are bound to a particular target (e.g. C++ only or Java only). The two tools are simply engines for generating abstract state machines. The generation of code for a specific target is done via preprocessor and is governed by set of specification files. See The Targetspec And Codespec Paradigm for more information.
Currently included tools are:
reflex
-- A lexical scanner generator. Its scanner rule file format is similar in format to flex
(states and regexes), so porting a flex
scanner file to reflex
should be relatively easy. trison
-- An LALR(1) parser generator. Like reflex
, its grammar file format is similar to bison
(Backus-Naur form), so porting a bison
grammar file to trison
should be relatively easy. This original version of trison
does not use the targetspec/codespec paradigm, as it was written before BARF was designed, but was the catalyst for BARF. The current, generating-only-C++ version will not be documented, and it will be assumed in the documentation that the full nice-ified targetspec/codespec version of trison
is complete. bpp
-- A simple text preprocessor whose guts are used by both reflex
and trison