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

'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