Getting Started Documentation Glish Learn More Programming Contact Us
Version 1.9 Build 1556
News FAQ
Search Home


next up previous
Next: How It Works Up: NOTE 216 - Lattice Expression Language Implementation Previous: Introduction

Class Structures

The expression is parsed, by the compiler, into a tree, and the nodes of the tree are built with the LEL classes. The tree is also evaluated with the LEL classes.

LEL is implemented with a Letter/Envelope scheme. The relational structure between the classes is straightforward. The Envelope class is LatticeExpr. LatticeExpr invokes LatticeExprNode, which provides a bridge from LatticeExpr to the letter classes LELBinary, LELBinaryCmp, LELBinaryBool, LELConvert, LELFunction1D, LELFunctionND, LELFunctionReal1D, LELFunctionFloat, LELFunctionDouble, LELFunctionComplex, LELFunctionDComplex, LELFunctionBool, LELLattice, LELUnaryConst, LELUnary, and LELUnaryBool. The letter classes all inherit from LELInterface which defines their common interface. There is one more class, LELAttribute, which is a helper class containing some attribute information about the expression. The purpose of the bridge class, LatticeExprNode is to handle type conversions. If all the data were of the same type (e.g. Float) we would not need the bridge class and LatticeExpr would directly invoke the letter classes.

The user is exposed to the classes LatticeExpr and LatticeExprNode. Exposure to LatticeExpr is largely implicit (see later). Use of LatticeExprNode may be explicit if subexpression manipulation is desired.

The classes are

LEL Classes
Class Source files templation inheritance use
LatticeExpr LatticeExpr.{h,cc} < T > Lattice< T > Envelope
LatticeExprNode LatticeExprNode.{h,cc} none none bridge
LELAttribute LELAttribute.{h,cc} none none helper
LELInterface LELInterface.{h,cc} < T > none Base class
LELBinaryEnums LELBinaryEnums.h none none Enum
LELBinary LELBinary.{h,cc} < T > LELInterface< T > letter class
LELBinaryCmp LELBinary.{h,cc} < T > LELInterface<Bool> letter class
LELBinaryBool LELBinary{.h,2.cc} none LELInterface<Bool> letter class
LELConvert LELConvert.{h,cc} < T, F > LELInterface< T > letter class
LELFunctionEnums LELFunctionEnums.h none none enum
LELFunction1D LELFunction.{h,cc} < T > LELInterface< T > letter class
LELFunctionND LELFunction.{h,cc} < T > LELInterface< T > letter class
LELFunctionReal1D LELFunction.{h,cc} < T > LELInterface< T > letter class
LELFunctionFloat LELFunction{.h,2.cc} none LELInterface<Float> letter class
LELFunctionDouble LELFunction{.h,2.cc} none LELInterface<Double> letter class
LELFunctionComplex LELFunction{.h,2.cc} none LELInterface<Complex> letter class
LELFunctionDComplex LELFunction{.h,2.cc} none LELInterface<DComplex> letter class
LELFunctionBool LELFunction{.h,2.cc} none LELInterface<Bool> letter class
LELLattice LELLattice.{h,cc} < T > LELInterface< T > letter class
LELUnaryEnums LELUnaryEnums.h none none enum
LELUnaryConst LELUnary.{h,cc} < T > LELInterface< T > letter class
LELUnary LELUnary.{h,cc} < T > LELInterface< T > letter class
LELUnaryBool LELUnary{.h,2.cc} none LELInterface<Bool> letter class


next up previous
Next: How It Works Up: NOTE 216 - Lattice Expression Language Implementation Previous: Introduction
Please send questions or comments about AIPS++ to aips2-request@nrao.edu.
Copyright © 1995-2000 Associated Universities Inc., Washington, D.C.

Return to AIPS++ Home Page
2006-10-15