Eli   Documents

General Information

 o Eli: Translator Construction Made Easy
 o Global Index
 o Frequently Asked Questions
 o Typical Eli Usage Errors

Tutorials

 o Quick Reference Card
 o Guide For new Eli Users
 o Release Notes of Eli
 o Tutorial on Name Analysis
 o Tutorial on Scope Graphs
 o Tutorial on Type Analysis
 o Typical Eli Usage Errors

Reference Manuals

 o User Interface
 o Eli products and parameters
 o LIDO Reference Manual
 o Typical Eli Usage Errors

Libraries

 o Eli library routines
 o Specification Module Library

Translation Tasks

 o Lexical analysis specification
 o Syntactic Analysis Manual
 o Computation in Trees

Tools

 o LIGA Control Language
 o Debugging Information for LIDO
 o Graphical ORder TOol

 o FunnelWeb User's Manual

 o Pattern-based Text Generator
 o Property Definition Language
 o Operator Identification Language
 o Tree Grammar Specification Language
 o Command Line Processing
 o COLA Options Reference Manual

 o Generating Unparsing Code

 o Monitoring a Processor's Execution

Administration

 o System Administration Guide

Mail Home
Open PDF File

Introduction of specification modules

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.

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.

The section Name Analysis Library of Name Analysis Library, is a quick reference that helps to migrate specifications using modules of previous versions of this library.

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 Running Example, 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.

The modules solve their task by providing specification fragments to one or more Eli tools: Some are simply a C module, others contain .lido, .pdl, .ptg, 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. .lido 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 Abstract Data Types of Abstract data types to be used in specifications, section may also be used directly in C modules or in stand-alone C programs.

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.

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 Running Example). Complete executable specifications for that running example are available in the directories $/Name/Examples and in $/Type/Examples. In general that information should be sufficient to use the modules. A look at the module's text may help in special cases.

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 Instantiation and Use of Modules.

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.