1[library Boost.Metaparse 2 [quickbook 1.6] 3 [copyright 2015 Abel Sinkovics] 4 [purpose Library for building compile-time parsers] 5 [id metaparse] 6 [dirname metaparse] 7 [license 8 Distributed under the Boost Software License, Version 1.0. 9 (See accompanying file LICENSE_1_0.txt or copy at 10 [@http://www.boost.org/LICENSE_1_0.txt http://www.boost.org/LICENSE_1_0.txt]) 11 ] 12 [authors [Sinkovics, Abel] ] 13 [category metaprogramming] 14] 15 16[section Description] 17 18Metaparse is a parser generator library for template metaprograms. The purpose 19of this library is to support the creation of parsers that parse at compile 20time. This library is intended to be used for embedded domain specific language 21creation for C++. The input of the generated parser is a compile time string, 22see [link string `string`]. The result of the parsing process is either an 23error or any other result the writer of the parser specifies. 24 25The library is similar to Boost.Spirit, however while parsers built with Spirit 26parse at run-time, parsers built with Metaparse parse at compile-time. Parsers 27built with Metaparse can output: 28 29* types 30* constant values 31* objects (types with public static members) 32* callable C++ functions (types with public static method) 33* template metafunction classes 34 35See section [link result_types What can be built from a compile-time string?] 36for further details. 37 38Based on C++11 features the library can provide advanced utilities for defining 39the input string, the rest of the library works on C++98-based compilers as 40well. Note that if you build the tests and examples with Boost.Build using GCC 41or Clang, the compiler will not have C++11 (or newer) enabled. To build the 42tests and examples in C++11-mode, you need to run `b2 cxxflags="-std=c++11"`. 43 44An external tutorial can be found at 45[@https://github.com/sabel83/metaparse_tutorial#metaparse-tutorial https://github.com/sabel83/metaparse_tutorial#metaparse-tutorial] 46 47[endsect] 48 49[section Related publications and blogs] 50 51Ábel Sinkovics, Dave Abrahams: [br] 52*Using strings in C++ template metaprograms*, [br] 53[@http://web.archive.org/web/20140217173026/http://cpp-next.com/archive/2012/10/using-strings-in-c-template-metaprograms http://web.archive.org/web/20140217173026/http://cpp-next.com/archive/2012/10/using-strings-in-c-template-metaprograms] 54 55Ábel Sinkovics, Zoltán Porkoláb: [br] 56*Domain-Specific Language Integration with C++ Template Metaprogramming*, [br] 57In Marjan Mernik (Ed): Formal and Practical Aspects of Domain-Specific 58Languages: Recent Developments. Published by Information Science Reference (an 59imprint of IGI Global), Hershey PA, USA. ISBN 978-1-4666-2092-6 (hardcover) - 60ISBN 978-1-4666-2093-3 (ebook) - ISBN 978-1-4666-2094-0 pp. 33-56. 61doi:10.4018/978-1-4666-2092-6.ch002 62 63Ábel Sinkovics, Zoltán Porkoláb: [br] 64*Metaparse - Compile-time Parsing with C++ Template Metaprogramming*, [br] 65In C++Now! Aspen, Colorado, 15th May, 2012. [br] 66[@http://www.youtube.com/watch?v=v3XoWi0XbZk Talk] 67 68Zoltán Porkoláb, Ábel Sinkovics: [br] 69*Domain-specific Language Integration with Compile-time Parser Generator 70Library*, [br] 71In Eelco Visser, Jaakko Järvi, editors, Proceedings of the ninth 72international conference on Generative programming and component 73engineering (GPCE 2010). ACM, October 2010, pp. 137-146. 74 75[endsect] 76 77[include preface.qbk] 78[include getting_started.qbk] 79[include manual.qbk] 80[include versioning.qbk] 81[include performance.qbk] 82[include design.qbk] 83[include reference.qbk] 84 85