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

LIDO - Reference Manual

Previous Chapter Next Chapter Table of Contents


Overall Structure

A LIDO text specifies an evaluator for executing computations driven by a tree walk. A tree grammar specifies the structure of trees. Computations are associated with rules and symbols of the tree grammar. Computations may depend on one another via typed attributes.

In Eli a LIDO specification is usually composed of several components supplied by the user, derived from libraries, or generated by Eli tools. The components are combined into one file and then processed by LIGA.

Syntax

    LIDOSpec       ::=  Specification
    Specification  ::=  Specification Specification |
                     |  RuleSpec ';' | SymComp ';' 
                     |  SymSpec ';'  | TermSpec ';'
                     |  AttrSpec ';' | ChainSpec ';'

Examples

    RULE p: Stmt  ::= 'while' Expr 'do' Stmt COMPUTE
      Expr.postType = boolType
    END;

    SYMBOL Expr COMPUTE
      Compatible (THIS.preType, THIS.postType);
    END;

    ATTR preType, postType: DefTableKey;

There is no restriction on the order of specifications. Any permutation of specifications has the same meaning.

LIDO objects such as rules, symbols, or attributes are identified by their names. They are introduced by using them in LIDO constructs. There are no explicit declarations in LIDO.

Specifications associate certain properties with an object, e. g. computations are associated with a rule, or a type with an attribute name. There may be several specifications for the same object as long as the specified properties are not contradictory.

In the syntax of this document we distinguish names for objects of different kinds, e. g. RuleName, SymbName, TypeName. The syntax rules for names are omitted in the rest of this document. The following rules are assumed for XYZNames

    XYZName  ::= Identifier
    XYZNames ::= XYZName | XYZNames ',' XYZNames

All names are written as identifiers in C.

Restrictions

It is strongly recommended not to use names that begin with an underscore or which have the form rule_i where i is a number, in order to avoid interference with identifiers generated by LIGA.

RuleNames, SymbNames, and TypeNames must be mutually distinct. AttrNames must be different from ChainNames.


Previous Chapter Next Chapter Table of Contents