Eli   Documents Get Eli: Translator Construction Made Easy at SourceForge.net.
    Fast, secure and Free Open Source software downloads

General Information

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


 o Quick Reference Card
 o Guide For new Eli Users
 o Release Notes of Eli
 o Tutorial on Name Analysis
 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


 o Eli library routines
 o Specification Module Library

Translation Tasks

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


 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


 o System Administration Guide

Mail Home

Quick Reference Card

Previous Chapter Next Chapter Table of Contents

Eli Specifications

The Eli user describes the subproblems of a particular text processing problem in files of different "type". The type is indicated by the file name extension. Any of these files can contain C-style comments and preprocessor directives such as #include, #define and #ifdef.

A collection of subproblem descriptions, one per line:

$/Tool/lib/Name/Nest.gnrc :inst

A description of the token structure of the input text:

string: $' (auxPascalString) [mkstr]
numb  : $[0-9] [mkint]

A description of the phrase structure of the input text:
def: set_name '=' '{' body '}' .
body: element+ .
cond : 'if' exp 'then' stmt $'else'.

A description of the structure of a tree and the computations to be carried out on that tree:

ATTR Sym: int;
SYMBOL set_name INHERITS Entity END;
      CONSTITUENTS set_name.Sym 
          WITH (int, ADD, ONE, ZERO)));
RULE r_wall: wallspec ::= 'wall' pos ';'
  wallspec.done = setwall(pos.x, pos.y);

A description of the mapping between the parsing and the tree grammar.

Options for evaluator generation.

.h, .c
C modules for user-supplied functions, variables, types etc.

Headers and macro definitions to be inserted into code generated from Lido:
#include "myproc.h"
#define MyValue(s) MyArray[s]

.init, .finl
C code to be executed before any processing begins (.init) or after all other processing is complete (.finl):
{ int s;
  s = GetValue(speed,1);
  setdelay(1000000/s);   }

A description of structured output text:

Seq: $ $
List: $ ",\n\t" $

A property definition language:

code : mytype; "kcode.h"
size : int;

A description of operator overloading:

OPER iAdd(integer, integer): integer;
OPER rAdd(real, real): real;
INDICATION Plus: iAdd, rAdd, sUnion;
COERCION Float(integer): real;

A description of command line arguments for the generated processor:

speed "-s" int 
"-s determines steps per second";

Combines a collection of strongly-coupled specifications with documentation describing their relationships:
Seq:   $ $

Specifies literals appearing in a type-`con' file that are to be recognized by special routines.

Defines a generic specification module.

Previous Chapter Next Chapter Table of Contents