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

Eli User Interface Reference Manual

Previous Chapter Next Chapter Table of Contents


The Odinfile

Eli consults file `Odinfile' in the current directory for information about the task at hand. `Odinfile' is used to define one or more targets. Most targets define some product that can be requested, using the notation target == odin-expression. Here are examples of the three common kinds of target:

mkhdr == sets.specs :exe
mkhdr is a file target. This line specifies that mkhdr should always be equal to the derived file object sets.specs :exe. If the command eli mkhdr is given in a directory with a file `Odinfile' containing this line, it will result in a non-interactive Eli session guaranteeing that file mkhdr in this directory is up to date. (The same effect can be obtained in an interactive session by responding to the -> prompt with mkhdr.)

%results == input +cmd=(mkhdr) :stdout
%results is a virtual target. A virtual target is simply a name for an odin-expression, and can be used wherever and odin-expression is required. If the command eli '%results>' is given in a directory with a file `Odinfile' containing this line, it will result in a non-interactive Eli session guaranteeing that the derived object input +cmd=(mkhdr) :stdout is up to date, and writing the content to the standard output. (The same effect can be obtained in an interactive session by responding to the -> prompt with %results>.)

%test ! == . +cmd=diff (%results) (result) :run
%test is an executable target. An executable target is a target that is executable. If the command eli %test is given in a directory with a file `Odinfile' containing this line, it will result in a non-interactive Eli session guaranteeing that the derived object input +cmd=(mkhdr) :stdout (named %results) is up to date, and executing the diff command with this object and the file `result' from the current directory as arguments. Execution will take place in the current directory. (The same effect can be obtained in an interactive session by responding to the -> prompt with %test.)

The value of a target can also be specified directly as lines of text (a here document), instead of as an odin-expression. In that case, the value declaration consists of two left-angle-brackets optionally followed by an arbitrary tag identifier. For example, the following `Odinfile' entry declares prog.c.sm to be a virtual text target:

%prog.specs == << END
    main.c
    routines.c
END

The value of prog.specs is then a file containing the text:

    main.c
    routines.c

If the tag identifier is omitted, the text value ends at the first line containing only whitespace characters. Thus the previous definition could also be written as:

%prog.specs == <<
    main.c
    routines.c


Previous Chapter Next Chapter Table of Contents