Projects / Spirit Parser library

Spirit Parser library

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.

Operating Systems

RSS Recent releases

  •  21 Mar 2003 19:17

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).

  •  11 Oct 2002 05:40

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.

  •  20 May 2002 14:05

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().

  •  23 Mar 2002 17:22

Release Notes: This release fixes a bug in the tst class which caused a possible false match in the symbol table class.

RSS Recent comments

17 Nov 2001 11:49 djowel


> 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 jontravis

The 'N' in EBNF does not stand for 'Normal' -- it
stands for 'Naur'


Project Spotlight

Knot DNS

An authoritative DNS server.


Project Spotlight


An XML database and XQuery processor.