aboutsummaryrefslogtreecommitdiffstats
path: root/devel/kimwitu++/pkg-descr
blob: cf4fefe338b126b68aec8a4a41680e048a682b09 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
    Kimwitu++ is the successor to Kimwitu. Like Kimwitu, it is a tool for
processing trees (i.e. terms). It is a meta tool: Kimwitu++ can be used for
generating software - especially when building compilers.  Kimwitu++ has its own
input language, which allows the definition fo the tree structure and of
functions operating on the tree. It uses the input to generate a number of C++
files, which are then bound to a program using the C++ compiler.
    Kimwitu++ can be easily combined with parser generators like lex and
yacc.  While the parser deals with processing the grammar rules, kimwitu++ deals
with creating an abstract syntax tree. In further passes, this tree can be used
to generate target code. These passes can be implemented in the same program or
a different one - kimwitu++ supports saving the tree into files.
    For processing the tree, Kimwitu++ supports two mechanisms: unparse
rules (for code generation), and rewrite rules (for transformations).  Each rule
can be tailored to a specific node structure using pattern matching; all rules
together are applied to the tree recursively.  To support different rules for
the same kind of node (in different application contexts), Kimwitu++ supports
the definition of views.
    Inside the rules, Kimwitu++ allows to integrate C++ code; it also
provides some extensions to C++. For each node type, a class is generated, which
can be extended with user-defined methods.

WWW: http://site.informatik.hu-berlin.de/kimwitu++/