The term processor generator Kimwitu [chapter]

Peter van Eijk, Axel Belinfante, Henk Eertink, Henk Alblas
<span title="">1997</span> <i title="Springer Berlin Heidelberg"> <a target="_blank" rel="noopener" href="https://fatcat.wiki/container/2w3awgokqne6te4nvlofavy5a4" style="color: black;">Lecture Notes in Computer Science</a> </i> &nbsp;
The Kimwitu system is a meta-tool that supports the construction of programs (tools) that operate on trees or terms. The system supports open multi-paradigm programming, in that it allows to express each part of an implementation in the most appropriate language. Terms can be implemented in a tool as well as exchanged between tools. In this way tool integration is facilitated. Experience has demonstrated that Kimwitu drastically speeds up development time, facilitates tool integration and
more &raquo; ... tes production quality programs. * Kimwitu (pronounced 'kee-mweetu') is pidgin-Swahili for 'language of trees' Our Kimwitu system[vEB92] attempts to blend the advantages of both approaches, in that it supports open multi-paradigm programming. Multi-paradigm programming allows to express each part of the implementation in the most appropriate language. It is a 'best of both worlds' approach, where one uses a high-level language where possible, and a low-level language where necessary. Kimwitu allows one to specify rewrite rules, call them from within C functions, and arbitrarily mix advanced pattern-matching mechanisms over terms with ordinary C code. 'Open' in this context means that escape hatches are provided to other implementation techniques. In Kimwitu, this can be done through the mixing with C code. This allows one to integrate code generated by Kimwitu with, for instance, X-Windows based user interfaces[Eer94], Yacc/Lex parsers or socket-based services (the CLC system [Dub94]). It has already been mentioned that trees or terms are a basic common concept in language-based software. Terms are, therefore, the basis of the Kimwitu system, in the sense that all formalisms operate on the same kind of structure. This facilitates tool integration, and allows, for instance, interfacing with Lex, Yacc and the Synthesizer Generator[RT89].
<span class="external-identifiers"> <a target="_blank" rel="external noopener noreferrer" href="https://doi.org/10.1007/bfb0035383">doi:10.1007/bfb0035383</a> <a target="_blank" rel="external noopener" href="https://fatcat.wiki/release/2b42s3iqi5afzfilwutuworbna">fatcat:2b42s3iqi5afzfilwutuworbna</a> </span>
<a target="_blank" rel="noopener" href="https://web.archive.org/web/20190505033100/https://link.springer.com/content/pdf/10.1007%2FBFb0035383.pdf" title="fulltext PDF download" data-goatcounter-click="serp-fulltext" data-goatcounter-title="serp-fulltext"> <button class="ui simple right pointing dropdown compact black labeled icon button serp-button"> <i class="icon ia-icon"></i> Web Archive [PDF] <div class="menu fulltext-thumbnail"> <img src="https://blobs.fatcat.wiki/thumbnail/pdf/3b/bc/3bbcbbb4d247cdf54bad1ea21e98680903e5f9c7.180px.jpg" alt="fulltext thumbnail" loading="lazy"> </div> </button> </a> <a target="_blank" rel="external noopener noreferrer" href="https://doi.org/10.1007/bfb0035383"> <button class="ui left aligned compact blue labeled icon button serp-button"> <i class="external alternate icon"></i> springer.com </button> </a>