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

Association of properties to definitions

Previous Chapter Next Chapter Table of Contents


Reflexive Relations Between Objects

This module introduces properties that relate object keys pairwise to each other, e.g. a type and its pointer type.

The module is instantiated by

   $/Prop/Reflex.gnrc+instance=NAME :inst

It defines a pair of properties NAMETo and NAMEFrom that have values of type DefTableKey that relate keys pairwise to each other. When the relation is established between two keys kf and kt GetNAMETo (kf, NoKey) == kt and GetNAMEFrom (kt, NoKey) == kf hold.

The relation is established by a call ReflexNAMETo (kf) that yields a new key kt, or by ReflexNAMEFrom (kt) that yields a new key kf. Any further such call yields the same key as result.

Typical applications of such relations are found in type analysis tasks: Types can be represented by keys. Assume intKey represents the type int, then a call ReflexPointerTo (intKey) yields a key representing a type pointer to int. Using the Reflex functions guarantee that there is exactly one key representing the type pointer to int. Here the module is instantiated with the generic parametr +instance=Pointer. The same pattern can be applied for other unary type constructors.


Previous Chapter Next Chapter Table of Contents