]>
Commit | Line | Data |
---|---|---|
7c673cae FG |
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 | ||
18 | Metaparse is a parser generator library for template metaprograms. The purpose | |
19 | of this library is to support the creation of parsers that parse at compile | |
20 | time. This library is intended to be used for embedded domain specific language | |
21 | creation for C++. The input of the generated parser is a compile time string, | |
22 | see [link string `string`]. The result of the parsing process is either an | |
23 | error or any other result the writer of the parser specifies. | |
24 | ||
25 | The library is similar to Boost.Spirit, however while parsers built with Spirit | |
26 | parse at run-time, parsers built with Metaparse parse at compile-time. Parsers | |
27 | built 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 | ||
35 | See section [link result_types What can be built from a compile-time string?] | |
36 | for further details. | |
37 | ||
38 | Based on C++11 features the library can provide advanced utilities for defining | |
39 | the input string, the rest of the library works on C++98-based compilers as | |
40 | well. Note that if you build the tests and examples with Boost.Build using GCC | |
41 | or Clang, the compiler will not have C++11 (or newer) enabled. To build the | |
42 | tests and examples in C++11-mode, you need to run `b2 cxxflags="-std=c++11"`. | |
43 | ||
44 | An 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] | |
57 | In Marjan Mernik (Ed): Formal and Practical Aspects of Domain-Specific | |
58 | Languages: Recent Developments. Published by Information Science Reference (an | |
59 | imprint of IGI Global), Hershey PA, USA. ISBN 978-1-4666-2092-6 (hardcover) - | |
60 | ISBN 978-1-4666-2093-3 (ebook) - ISBN 978-1-4666-2094-0 pp. 33-56. | |
61 | doi: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] | |
65 | In C++Now! Aspen, Colorado, 15th May, 2012. [br] | |
66 | [@http://www.youtube.com/watch?v=v3XoWi0XbZk Talk] | |
67 | ||
68 | Zoltán Porkoláb, Ábel Sinkovics: [br] | |
69 | *Domain-specific Language Integration with Compile-time Parser Generator | |
70 | Library*, [br] | |
71 | In Eelco Visser, Jaakko Järvi, editors, Proceedings of the ninth | |
72 | international conference on Generative programming and component | |
73 | engineering (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 |