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 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

'Partitioned' Attribute Dependence Cycles


Typical Error Situations

Partitioned cycles are caused by additional constraints that the OAG scheduling algorithm has to introduce during partition computation.

   RULE : root ::= nt nt
   COMPUTE nt[1].a = 'a';
           nt[1].c = nt[2].d;
           nt[2].a = nt[1].b;
           nt[2].c = 'c';
   END;

   RULE : nt ::= 'a'
   COMPUTE nt.b = nt.a;
           nt.d = nt.c;
   END;

results in

    ERROR: did not find evaluation order; 
           see OrdInfo, add dependencies, or use gorto
    ERROR: evaluation order for nt.a not found
    ERROR: evaluation order for nt.c not found
    ERROR: evaluation order for nt.b not found
    ERROR: evaluation order for nt.d not found

 

Partitioning problems often occur in conjunction with independent Lido chains which run through the same subtree. The solution is to artificially enforce a scheduling order by adding attribute dependences.

Write a .ctl file containing the line

   ORDER: ARRANGE FOR SYMB nt EVAL a BEFORE c;

and add this specification to your .specs list.

Or add a source level dependence

   RULE : nt ::= 'a'
   COMPUTE nt.b = nt.a;
           nt.d = nt.c <- nt.a;
   END;

Back to Typical Eli Errors