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

Recent releases

  •  22 Mar 2003 03: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 09: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.

      •  06 Oct 2002 15:28

        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 18: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 22:22

            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 djowel

            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 jontravis

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


            Project Spotlight


            A Fluent OpenStack client API for Java.


            Project Spotlight

            TurnKey TWiki Appliance

            A TWiki appliance that is easy to use and lightweight.