* What is Kimwitu? Kimwitu is a system that supports the construction of programs that use trees or terms as their main data structure. It is a `meta-tool' in the development process of tools. Its input is an abstract description of terms, annotated with implementation directives, plus a definition of functions on these terms. The output consists of a number of C-files that contain data-structure definitions for the terms, a number of standard functions on those terms, and a translation (in C) of the function definitions in the input (eg. term rewriting). The standard functions can be used to create terms, compare them for equality, read and write them on files in various formats and do manipulations like list concatenation. It can easily be interfaced with Yacc and Lex - the idea is that yacc and lex are used to do the parsing, and Kimwitu routines are used to built and manipulate the parse tree. It can also be used to 'link' components in a toolset - the idea is to define an abstract syntax tree (or more), that will be the interface object, the thing that will be passed between the tools. The various tools then read such an object from file, manipulate it and write the result to file, to be processed by another tool. Only one tool has to do the actual parsing, to build the tree used by the rest of the toolset. The tool builder does not have to worry about the file format: from the abstract description of the interface object Kimwitu generates the read and write routines. * What kind of functions can be defined? Functions in plain C, with the extension of a 'with' statement in which pattern matching can be expressed, and a 'foreach' statement that loops over the elements of a list. Rewrite rules. Unparse rules. * More information (and examples) can be found in the Kimwitu manual.