Subject: Re: [boost] [Boost-announce] [metaparse] Review period starts May 25th and ends June 7th
From: Edward Diener (eldiener_at_[hidden])
Date: 2015-05-19 23:23:31
On 5/19/2015 5:39 PM, Christophe Henry wrote:
> Dear all,
> The review of the Metaparse library starts next Monday, May 25th and ends
> June 7th. Metaparse was written by Abel Sinkovics.
> Metaparse is a parser generator library for template metaprograms.
> The purpose of this library is to support the creation of parsers that
> parse at compile time.
> This library is intended to be used for embedded domain specific language
> creation for C++ and can help libraries provide a better interface.
> It is similar to Boost.Spirit, however while parsers built with Spirit
> parse at run-time, parsers built with Metaparse parse at compile-time.
> It makes it possible for library authors to provide an interface that
> follows the common notation of the problem domain of the library.
> (eg. SQL queries, grammars, etc written in their common notation instead of
> similar-looking C++ expressions).
> For example there is a (yet incomplete) interface for Boost.Spirit that
> makes it possible to write
> instead of
> bos >> set[as_xpr('a')|'b'|'c'|'d'] >> range('3','8') >> '.' >> 'f' >>
> 'o' >> 'o' >> eos
> and make the parser built with Metaparse generate the latter expression
> from the former one.
> (It can be found here:
> Since the library is based on template metaprogramming, the DSLs can be
> used for type validation as well.
> This is demonstrated by the type-safe printf implementation (
> It type-checks the arguments of a printf call based on the format string
> and has zero runtime overhead compared to unchecked printf.
> Parsers can be constructed in a declarative manner and (even though this is
> template metaprogramming based) remain readable.
> The implementation reflects the grammar it parses (with additional elements
> for semantic actions).
> Even though the library requires the parser author to write template
> metaprograms, the development of parsers is well supported by tools like
> Metashell and MDB.
> An important aspect of parsers (built with this library or another one) is
> error reporting for invalid input.
> The library offers tools for the parser authors to be able to provide
> useful error messages in case of parsing errors.
> Here is an example error report by a parser built with Metaparse (the
> parser can be found in the Getting Started guide of the library):
> ..... x__________________PARSING_FAILED__________________x<1, 5,
> unpaired<1, 1, literal_expected<')'>>> ....
> It is an error report letting the developer know that a closing paren is
> missing at line 1, column 5 and the unclosed opening paren is in line 1,
> column 1.
> Metaparse can be downloaded from Github:
> And a very complete tutorial:
In the tutorial it states:
"This tutorial is long and therefore you might want to make shorter or
longer breaks while reading it. To make it easy for you to stop at a
certain point and continue later (or to start in the middle if you are
already familiar with the basics) Metaparse has a getting_started
directory in the examples. This contains the definitions for each
section of this tutorial."
There are no examples in Metaparse and there is no getting_started
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk