85 lines
3.4 KiB
Plaintext
85 lines
3.4 KiB
Plaintext
[library Boost.Metaparse
|
|
[quickbook 1.6]
|
|
[copyright 2015 Abel Sinkovics]
|
|
[purpose Library for building compile-time parsers]
|
|
[id metaparse]
|
|
[dirname metaparse]
|
|
[license
|
|
Distributed under the Boost Software License, Version 1.0.
|
|
(See accompanying file LICENSE_1_0.txt or copy at
|
|
[@http://www.boost.org/LICENSE_1_0.txt http://www.boost.org/LICENSE_1_0.txt])
|
|
]
|
|
[authors [Sinkovics, Abel] ]
|
|
[category metaprogramming]
|
|
]
|
|
|
|
[section Description]
|
|
|
|
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++. The input of the generated parser is a compile time string,
|
|
see [link string `string`]. The result of the parsing process is either an
|
|
error or any other result the writer of the parser specifies.
|
|
|
|
The library is similar to Boost.Spirit, however while parsers built with Spirit
|
|
parse at run-time, parsers built with Metaparse parse at compile-time. Parsers
|
|
built with Metaparse can output:
|
|
|
|
* types
|
|
* constant values
|
|
* objects (types with public static members)
|
|
* callable C++ functions (types with public static method)
|
|
* template metafunction classes
|
|
|
|
See section [link result_types What can be built from a compile-time string?]
|
|
for further details.
|
|
|
|
Based on C++11 features the library can provide advanced utilities for defining
|
|
the input string, the rest of the library works on C++98-based compilers as
|
|
well. Note that if you build the tests and examples with Boost.Build using GCC
|
|
or Clang, the compiler will not have C++11 (or newer) enabled. To build the
|
|
tests and examples in C++11-mode, you need to run `b2 cxxflags="-std=c++11"`.
|
|
|
|
An external tutorial can be found at
|
|
[@https://github.com/sabel83/metaparse_tutorial#metaparse-tutorial https://github.com/sabel83/metaparse_tutorial#metaparse-tutorial]
|
|
|
|
[endsect]
|
|
|
|
[section Related publications and blogs]
|
|
|
|
Ábel Sinkovics, Dave Abrahams: [br]
|
|
*Using strings in C++ template metaprograms*, [br]
|
|
[@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]
|
|
|
|
Ábel Sinkovics, Zoltán Porkoláb: [br]
|
|
*Domain-Specific Language Integration with C++ Template Metaprogramming*, [br]
|
|
In Marjan Mernik (Ed): Formal and Practical Aspects of Domain-Specific
|
|
Languages: Recent Developments. Published by Information Science Reference (an
|
|
imprint of IGI Global), Hershey PA, USA. ISBN 978-1-4666-2092-6 (hardcover) -
|
|
ISBN 978-1-4666-2093-3 (ebook) - ISBN 978-1-4666-2094-0 pp. 33-56.
|
|
doi:10.4018/978-1-4666-2092-6.ch002
|
|
|
|
Ábel Sinkovics, Zoltán Porkoláb: [br]
|
|
*Metaparse - Compile-time Parsing with C++ Template Metaprogramming*, [br]
|
|
In C++Now! Aspen, Colorado, 15th May, 2012. [br]
|
|
[@http://www.youtube.com/watch?v=v3XoWi0XbZk Talk]
|
|
|
|
Zoltán Porkoláb, Ábel Sinkovics: [br]
|
|
*Domain-specific Language Integration with Compile-time Parser Generator
|
|
Library*, [br]
|
|
In Eelco Visser, Jaakko Järvi, editors, Proceedings of the ninth
|
|
international conference on Generative programming and component
|
|
engineering (GPCE 2010). ACM, October 2010, pp. 137-146.
|
|
|
|
[endsect]
|
|
|
|
[include preface.qbk]
|
|
[include getting_started.qbk]
|
|
[include manual.qbk]
|
|
[include versioning.qbk]
|
|
[include performance.qbk]
|
|
[include design.qbk]
|
|
[include reference.qbk]
|
|
|