Metaprogramming in the Ravi SystemIn a multilanguage system, and even more in an interactive multilanguage system, metaprogramming is crucial to produce various sorts of systematic code - our two main metaprograms are good examples of code that cannot be written by a simple user. This page gives an overview metaprogramming in Ravi, pointing to a number of real-world examples, giving source files, generated files, and a few comments. We show two applications, and basic tool within a general framework for metaprogramming in C++. The general framework is based on a conceptually simple principle, (which is really hard to put to practice): Principle: Metaprograms work with AST structures. (Abstract Syntax Tress). Whence two major tools, and some auxiliaries:
This example illustrates the AST format. It shows a C++ header file and its translation, as obtained using the Scheme-command (trad-file "ast.hh" "ast.scm")
The example files contains 3 different files:
Example 1
|