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 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216
|
<HTML>
<HEAD>
<!-- This HTML file has been created by texi2html 1.29
from ../tnf/modlib.tnf on 12 Febuary 2003 -->
<TITLE>Introduction of specification modules - Table of Contents</TITLE>
</HEAD>
<BODY TEXT="#000000" BGCOLOR="#FFFFFF" LINK="#0000EE" VLINK="#551A8B" ALINK="#FF0000" BACKGROUND="gifs/bg.gif">
<TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0" VALIGN=BOTTOM>
<TR VALIGN=BOTTOM>
<TD WIDTH="160" VALIGN=BOTTOM><IMG SRC="gifs/elilogo.gif" BORDER=0> </TD>
<TD WIDTH="25" VALIGN=BOTTOM><img src="gifs/empty.gif" WIDTH=25 HEIGHT=25></TD>
<TD ALIGN=LEFT WIDTH="600" VALIGN=BOTTOM><IMG SRC="gifs/title.gif"></TD>
</TR>
</TABLE>
<HR size=1 noshade width=785 align=left>
<TABLE BORDER=0 CELLSPACING=2 CELLPADDING=0>
<TR>
<TD VALIGN=TOP WIDTH="160">
<h4>General Information</h4>
<table BORDER=0 CELLSPACING=0 CELLPADDING=0>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="index.html">Eli: Translator Construction Made Easy</a></td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="gindex_toc.html">Global Index</a></td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="faq_toc.html" >Frequently Asked Questions</a> </td></tr>
</table>
<h4>Tutorials</h4>
<table BORDER=0 CELLSPACING=0 CELLPADDING=0>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="EliRefCard_toc.html">Quick Reference Card</a></td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="novice_toc.html">Guide For new Eli Users</a></td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="news_toc.html">Release Notes of Eli</a></td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="nametutorial_toc.html">Tutorial on Name Analysis</a></td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="typetutorial_toc.html">Tutorial on Type Analysis</a></td></tr>
</table>
<h4>Reference Manuals</h4>
<table BORDER=0 CELLSPACING=0 CELLPADDING=0>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="ui_toc.html">User Interface</a></td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="pp_toc.html">Eli products and parameters</a></td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="lidoref_toc.html">LIDO Reference Manual</a></td></tr>
</table>
<h4>Libraries</h4>
<table BORDER=0 CELLSPACING=0 CELLPADDING=0>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="lib_toc.html">Eli library routines</a></td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="modlib_toc.html">Specification Module Library</a></td></tr>
</table>
<h4>Translation Tasks</h4>
<table BORDER=0 CELLSPACING=0 CELLPADDING=0>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="lex_toc.html">Lexical analysis specification</a></td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="syntax_toc.html">Syntactic Analysis Manual</a></td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="comptrees_toc.html">Computation in Trees</a></td></tr>
</table>
<h4>Tools</h4>
<table BORDER=0 CELLSPACING=0 CELLPADDING=0>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="lcl_toc.html">LIGA Control Language</a> </td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="show_toc.html">Debugging Information for LIDO</a> </td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="gorto_toc.html">Graphical ORder TOol</a> </td></tr>
</table>
<p>
<table BORDER=0 CELLSPACING=0 CELLPADDING=0>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="fw_toc.html">FunnelWeb User's Manual</a> </td></tr>
</table>
<p>
<table BORDER=0 CELLSPACING=0 CELLPADDING=0>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="ptg_toc.html">Pattern-based Text Generator</a> </td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="deftbl_toc.html">Property Definition Language</a> </td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="oil_toc.html">Operator Identification Language</a> </td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="tp_toc.html">Tree Grammar Specification Language</a> </td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="clp_toc.html">Command Line Processing</a> </td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="cola_toc.html">COLA Options Reference Manual</a> </td></tr>
</table>
<p>
<table BORDER=0 CELLSPACING=0 CELLPADDING=0>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="idem_toc.html">Generating Unparsing Code</a> </td></tr>
</table>
<p>
<table BORDER=0 CELLSPACING=0 CELLPADDING=0>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="mon_toc.html">Monitoring a Processor's Execution</a> </td></tr>
</table>
<h4>Administration</h4>
<table BORDER=0 CELLSPACING=0 CELLPADDING=0>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="sysadmin_toc.html">System Administration Guide</a> </td></tr>
</table>
<HR WIDTH="100%">
<CENTER> <A HREF="mailto:elibugs@cs.colorado.edu"><IMG SRC="gifs/button_mail.gif" NOSAVE BORDER=0 HEIGHT=32 WIDTH=32></A><A HREF="mailto:elibugs@cs.colorado.edu">Questions, Comments, ....</A></CENTER>
</TD>
<TD VALIGN=TOP WIDTH="25"><img src="gifs/empty.gif" WIDTH=25 HEIGHT=25></TD>
<TD VALIGN=TOP WIDTH="600">
<A HREF="modlib.ps"><IMG SRC="gifs/print.gif" ALT="Open Postscript File" BORDER="0" ALIGN=RIGHT></A>
<H1>Introduction of specification modules</H1>
<A NAME="IDX1"></A>
<P>
Eli provides a library of specification modules. Each module contains a
complete set of specifications that solve a single common task in language
implementation. If such a task is identified in the design of an
application specification, the module is simply
added to the application specification and used there.
Most modules solve a rather small task. They can be flexibly combined
to solve more complex problems.
<P>
<UL>
<LI>
<A HREF="modlib_1.html#SEC1">Introduction of a running example</A>
<LI>
<A HREF="modlib_2.html#SEC2">How to use Specification Modules</A>
<LI>
<A HREF="name_toc.html">Name analysis according to scope rules</A>
<LI>
<A HREF="prop_toc.html">Association of properties to definitions</A>
<LI>
<A HREF="type_toc.html">Type analysis tasks</A>
<LI>
<A HREF="input_toc.html">Tasks related to input processing</A>
<LI>
<A HREF="output_toc.html">Tasks related to generating output</A>
<LI>
<A HREF="adt_toc.html">Abstract data types to be used in specifications</A>
<LI>
<A HREF="problems_toc.html">Solutions of common problems</A>
<LI>
<A HREF="oldmod_toc.html">Migration of Old Library Module Usage</A>
</UL>
<P>
The first section introduces an example that is referred to
in the other sections to explain the use of modules in the context
of a language implementation task. The second section explains
how modules are obtained from the library and are related
to users' specifications. The remaining sections describe
sublibraries for a certain problem class each.
<P>
The section <A HREF="oldmod_toc.html">Name Analysis Library of Name Analysis Library</A>, is a quick reference that helps
to migrate specifications using modules of previous versions
of this library.
<P>
This document may be used according to different strategies:
In order to become familiar with problem solving by using library
modules one can start with the running example of section <A HREF="modlib_1.html#SEC1">Running Example</A>, and
extend it as described in the subsequent chapters.
One can also start with a particular problem in mind and then
search the corresponding chapter for a module that could be
used to solve it. The document can also be used as a reference manual
for the library modules.
In any case it is recommended to read the introduction
of a chapter before using one of its modules.
<P>
The modules solve their task by providing specification fragments
to one or more Eli tools: Some are simply a C module, others
contain <CODE>.lido</CODE>, <CODE>.pdl</CODE>, <CODE>.ptg</CODE>, or references
to other library modules. The modules are designed such that
as few assumptions as possible have to hold in the user's part
of the specification where they are applied. E.g. <CODE>.lido</CODE>
fragments supplied by library modules are mapped to the particular
grammar of the user's specification by the inheritance construct of LIDO.
Modules described in the <A HREF="adt_toc.html">Abstract Data Types of Abstract data types to be used in specifications</A>, section may also be used
directly in C modules or in stand-alone C programs.
<P>
Most modules in the library are generic, i.e. the names used in a
module can be modified by its instantiation. This facility allows to
use the same module for different purposes, e.g. a counter for
variables and another for procedures, or specify the element type of
a generic list type implementation. Instantiations also control the
combination of modules, e.g. association of properties to procedures and
to variables which might have different name spaces.
<A NAME="IDX2"></A>
<A NAME="IDX3"></A>
<A NAME="IDX4"></A>
<P>
This document describes the task that each module solves, its interface,
and how it can be applied in a user's specification. The descriptions
are illustrated using a running example introduced in the next section
(see <A HREF="modlib_1.html#SEC1">Running Example</A>).
Complete executable specifications for that running example
are available in the directories <CODE>$/Name/Examples</CODE>
and in <CODE>$/Type/Examples</CODE>.
In general that information should be sufficient to use the modules.
A look at the module's text may help in special cases.
<P>
Users are encouraged to apply this design technique of decomposition
into specification modules to their application as well. The structure
of complex designs and their maintainability can thus be improved. The
resulting modules may be reused in other applications.
The techniques needed to instantiate user developed modules
are described in <A HREF="modlib_2.html#SEC2">Instantiation and Use of Modules</A>.
<P>
This library will be extended by adding further modules that solve
common tasks. Hence, users are encouraged to contact their Eli
distributor if a module for a task
that might be of general interest is missing, or if a solution for
such a task can be contributed.
<P>
<P>
<UL>
<LI><A NAME="SEC1" HREF="modlib_1.html#SEC1">Running Example</A>
<LI><A NAME="SEC2" HREF="modlib_2.html#SEC2">Instantiation and Use of Modules</A>
</UL>
<HR size=1 noshade width=600 align=left>
</TD>
</TR>
</TABLE>
</BODY></HTML>
|