DSL in C++ Template Metaprogram

  title={DSL in C++ Template Metaprogram},
  author={Zolt{\'a}n Porkol{\'a}b and {\'A}bel Sinkovics and Istv{\'a}n Siroki},
Domain specific language integration has to provide the right balance between the expressive power of the DSL and the implementation and maintenance cost of the applied integration techniques. [] Key Method The parser generator is the C++ template metaprogram reimplementation of a runtime Haskell parser generator library. The full parsing phase is executed when the host program is compiled. The library uses only standard C++ language features, thus our solution is highly portable. As a demonstration of the…
2 Citations

Figures from this paper

The Notion of a Software Language
This chapter describes the lifecycle of software languages, with phases such as language definition and implementation, and identifies areas in software engineering that involve software languages in different ways, for example, software reverse engineering and software re-engineering.


Domain-specific language integration with compile-time parser generator library
A DSL integration technique for the C++ programming language based on compile-time parsing of the DSL code and a parser generator is a C++ template metaprogram reimplementation of a runtime Haskell parser generator library.
Implementing monads for C++ template metaprograms
C++ Template Metaprogramming: Concepts, Tools, and Techniques from Boost and Beyond (C++ In-Depth Series)
The companion CD-ROM contains all Boost C++ libraries, including the Boost Metaprogramming Library and its reference documentation, along with all of the book's sample code and extensive supplementary material.
Simple and safe SQL queries with C++ templates
Simple and safe SQL queries with c++ templates
The ARARAT system presented here offers a method for dealing with predicaments of SQL statements, by coercing the host C++ compiler to do the necessary checks of the generated strings, by type checking of this language extension, carried out by the template library.
Essential language support for generic programming
This paper presents the design of a type system and semantics for concepts that is suitable for non-type-inferencing languages and shares much in common with the type classes of Haskell, though the primary influence is from best practices in the C++ community.
Expression templates
In preliminary benchmark results, one compiler evaluates vector expressions at 95-99.5% efficiency of handcoded C using this technique (for long vectors), which is 2-15 times that of a conventional C++ vector class.
Domain-Specific Program Generation
This paper charts the successes and mindset used by database researchers to generate efficient query processing programs automatically and argues that the road that they have so successfully followed is the same road that the generative programming, domain-specific languages, and automatic programming communities are now traversing.
Program Transformation with Stratego/XT: Rules, Strategies, Tools, and Systems in Stratego/XT 0.9
  • E. Visser
  • Computer Science
    Domain-Specific Program Generation
  • 2003
This chapter gives an overview of the main ingredients involved in the composition of transformation systems with Stratego/XT, where the abstraction levels of rules, strategies, tools, and systems are distinguished.
Active Libraries: Rethinking the roles of compilers and libraries
This work describes Active Libraries, which take an active role in compilation and may generate components, specialize algorithms, optimize code, configure and tune themselves for a target machine, and describe themselves to tools in an intelligible way.