Spirit is an object-oriented, recursive descent parser generator framework implemented using template meta-programming techniques. Expression templates allow Spirit to approximate the syntax of Extended Backus Normal Form (EBNF) completely in C++. The Spirit framework enables a target grammar to be written exclusively in C++. EBNF grammar specifications can mix freely with other C++ code and, thanks to the generative power of C++ templates, are immediately executable.
| Tags | Software Development Code Generators Libraries Compilers Interpreters |
|---|---|
| Licenses | zlib/libpng |
| Operating Systems | OS Independent |
| Implementation | C++ |
Recent releases


Release Notes: The development branch has been declared stable. There are a lot of new features and improvements from the previous stable release (1.2.9).


Release Notes: This version adds --enable-spirit-threadsafe and --with-boost= configure script options, uses the BOOST_STATIC_CONSTANT in Phoenix to increase portability, rearranges the Spirit debug code so it will always work regardless of include order, adds a new group_d directive, adds the capability for subrules to have contexts, fixes compile problems with SPIRIT_THREADSAFE, fixes the symbols add() free function, makes adjustments to the refactoring parser, fixes the ast_xml.cpp example, adds tests for the object_with_id class, and adds phoenix_subrule_calc.cpp and grouping_calc.cpp examples.


Release Notes: This version has been rewritten to be policy based, allowing great customizability and flexibility. There are also some new examples and more tests.


Release Notes: Addition of some missing typename keywords to multi_pass.hpp, addition of some missing inline keywords to exceptions.ipp to fix multiple symbol definition linker errors when using spirit in more than one translation unit, and changing assert(n1 < n2); to assert(n1 <= n2); in loops.ipp's finite_loop::parse().


Release Notes: This release fixes a bug in the tst class which caused a possible false match in the symbol table class.
Recent comments
17 Nov 2001 11:49
Re: EBNF
> The 'N' in EBNF does not stand for
> 'Normal' -- it
> stands for 'Naur'
>
>
It does. Everyone calls it Backus Naur Form, except Peter Naur. See Backus Normal Form vs. Backus Naur Form:
23 Oct 2001 19:57
EBNF
The 'N' in EBNF does not stand for 'Normal' -- it
stands for 'Naur'