1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<!--Converted with LaTeX2HTML 98.1p1 release (March 2nd, 1998)
originally by Nikos Drakos (nikos@cbl.leeds.ac.uk), CBLU, University of Leeds
* revised and updated by: Marcus Hennecke, Ross Moore, Herb Swan
* with significant contributions from:
Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
<HTML>
<HEAD>
<TITLE>Introduction</TITLE>
<META NAME="description" CONTENT="Introduction">
<META NAME="keywords" CONTENT="tpman">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
<LINK REL="STYLESHEET" HREF="tpman.css">
<LINK REL="next" HREF="node6.html">
<LINK REL="previous" HREF="node4.html">
<LINK REL="up" HREF="tpman.html">
<LINK REL="next" HREF="node6.html">
</HEAD>
<BODY >
<!--Navigation Panel-->
<A NAME="tex2html179"
HREF="node6.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
SRC="/usr/share/latex2html/icons/next.png"></A>
<A NAME="tex2html175"
HREF="tpman.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
SRC="/usr/share/latex2html/icons/up.png"></A>
<A NAME="tex2html169"
HREF="node4.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
SRC="/usr/share/latex2html/icons/prev.png"></A>
<A NAME="tex2html177"
HREF="node4.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
SRC="/usr/share/latex2html/icons/contents.png"></A>
<A NAME="tex2html178"
HREF="node58.html">
<IMG WIDTH="43" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="index"
SRC="/usr/share/latex2html/icons/index.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html180"
HREF="node6.html">Input</A>
<B> Up:</B> <A NAME="tex2html176"
HREF="tpman.html">The Term Processor Kimwitu</A>
<B> Previous:</B> <A NAME="tex2html170"
HREF="node4.html">Contents</A>
<BR>
<BR>
<!--End of Navigation Panel-->
<H1><A NAME="SECTION00050000000000000000">
Introduction</A>
</H1>
<DIV ALIGN="RIGHT">
<EM>When all else fails, read the manual. </EM>
<BR>
Anonymous.
</DIV>
<P>
In this document we describe a system that supports the construction of
programs that use <EM>trees</EM> or <EM>terms</EM> as their main data structure.
This system is a `meta'-tool in the development process of tools.
Its <EM>input</EM> is an abstract description of terms, annotated with
implementation directives, plus a description of functions on
these terms.
The <EM>output</EM> 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 (e.g.
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.
<P>
This document is organised as follows.
In Section <A HREF="node6.html#sec:input">1</A> we describe the input format of the term processor<A NAME="tex2html1"
HREF="footnode.html#foot94"><SUP>1</SUP></A>.
In Section <A HREF="node15.html#sec:output">2</A> we describe the output of the system:
the C types and functions, the files, etc.
Section <A HREF="node22.html#sec:running">3</A> goes into the details of running the system, and the relation with other
software development tools, such as the Unix tools <I>make</I>, <I>yacc</I>, <I>lex</I>, <I>lint</I>
and the Synthesizer Generator (SG)[<A
HREF="node57.html#csg:sigplan">TR84</A>,<A
HREF="node57.html#csg:refman">TR89b</A>,<A
HREF="node57.html#csg:book">TR89a</A>].
<A NAME="1341"> </A>
<A NAME="103"> </A>
Section <A HREF="node28.html#sec:cook">4</A> discusses various techniques in which
programs can be written over terms, and thus gives examples of the concept
of <EM>multi-paradigm programming</EM>.
Finally, Section <A HREF="node36.html#sec:design">5</A> motivates some of the design decisions of our system.
<P>
Some reading knowledge of the C programming language and associated tools is assumed.
<P>
<HR>
<!--Navigation Panel-->
<A NAME="tex2html179"
HREF="node6.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next"
SRC="/usr/share/latex2html/icons/next.png"></A>
<A NAME="tex2html175"
HREF="tpman.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up"
SRC="/usr/share/latex2html/icons/up.png"></A>
<A NAME="tex2html169"
HREF="node4.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous"
SRC="/usr/share/latex2html/icons/prev.png"></A>
<A NAME="tex2html177"
HREF="node4.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents"
SRC="/usr/share/latex2html/icons/contents.png"></A>
<A NAME="tex2html178"
HREF="node58.html">
<IMG WIDTH="43" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="index"
SRC="/usr/share/latex2html/icons/index.png"></A>
<BR>
<B> Next:</B> <A NAME="tex2html180"
HREF="node6.html">Input</A>
<B> Up:</B> <A NAME="tex2html176"
HREF="tpman.html">The Term Processor Kimwitu</A>
<B> Previous:</B> <A NAME="tex2html170"
HREF="node4.html">Contents</A>
<!--End of Navigation Panel-->
<ADDRESS>
<I></I>
<BR><I>2000-04-17</I>
</ADDRESS>
</BODY>
</HTML>
|