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

Products and Parameters Reference

Previous Chapter Next Chapter Table of Contents


Diagnosing Specification Inconsistencies

Inconsistencies in the specification are detected by Eli in much the same way as a compiler detects inconsistencies in a normal program. Depending upon the nature of the inconsistency, Eli will set the status of the requested processor to either "warning" or "abort". In either case, the user is informed of the status of the requested product. If the status is "abort", the product will not be delivered. To obtain further information about the inconsistencies, a request should be made to derive one of the diagnostic products discussed in this section from the product whose status was reported as "warning" or "abort". For example, suppose that the following request (see exe -- Executable Version of the Processor) led to an abort status:

pascal.specs :exe

Further information could then be obtained by making the request:

pascal.specs :exe :help

Note that the original request is repeated exactly, with :help being simply added to the end. (See Referring to Objects of Eli User Interface Reference Manual, for more information about the form of a request.)

warning -- Warning Messages and Error Reports

:warning

A listing of all error reports and warning messages delivered by any step in a derivation. For example, the following request might be used during development of a set of specifications for a Pascal compiler:

pascal.specs:exe:warning

The product being requested here is the reports of anomalies encountered during the derivation pascal.specs:exe. These reports indicate inconsistencies in the specifications listed in the file `pascal.specs'.

error -- Error Reports

:error

A listing of all error reports delivered by any step in a derivation. During development it is preferable to use the help product (see help -- Cross-Reference to Documentation), because it provides more information than error. If a particular derivation produces a number of uninteresting warnings, however, error is useful.

help -- Cross-Reference to Documentation

:help

Starts an interactive session with the hypertext reader (see System Documentation of Guide for New Eli Users). This session is an explanation of reports delivered during a derivation. The session provides a menu of files containing the reports, and for each file a menu of hypertext document nodes pertaining to the errors in that file.

Any file supplied as part of the specification can be altered (using the edit command of the hypertext reader), and when the session ends Eli will take account of those alterations. Generated files can be examined with the edit command, and altered copies created for testing purposes, but those alterations will not be permanent.

There is no use in requesting the help product unless a derivation has errors or warnings.

parsable -- Verify that the Grammar is Parsable

:parsable

Verifies that the grammar satisfies the conditions necessary to generate a parser.

The result of this derivation should be directed to the screen or an editor (see Extracting and Editing Objects of Eli User Interface Reference Manual). Using the :help derivation is not recommended, because the output is hard to read.

gencode -- Code Derived from the Specifications

:gencode

A directory containing the original specification files and all files generated from them. This directory is useful for exploring the relationships among the generated code files when certain inconsistencies are detected.

Although the directory can be extracted from the cache (see Extracting and Editing Objects of Eli User Interface Reference Manual), it is usually examined by requesting the viewlist product:

sets.specs :gencode :viewlist

This derived object is an interactive execution of the user's preferred shell in the derived directory sets.specs :gencode. It allows the user to employ all of the usual tools (lint(1), ctags(1), editors, and so forth) to perform arbitrary analysis on the files. Any file supplied as part of the specification can be altered directly, and when the session ends Eli will take account of those alterations. Generated files can be examined, and altered copies created for testing purposes, but those alterations will not be permanent.

At the beginning of the session, the directory contains only symbolic links. If you want to alter a file temporarily, simply delete the symbolic link and replace it with the copy of the file. You may also create other files in the directory as you see fit. If you create subdirectories of the local directory, you should delete those subdirectories before exiting the shell. Plain files need not be deleted.

If you exit the shell and then re-derive gencode, any files you created may or may not be present. Thus you should not expect that files you create will be retained; any file you wish to keep should be written to another directory.


Previous Chapter Next Chapter Table of Contents