Getting Started | Documentation | Glish | Learn More | Programming | Contact Us |
Version 1.9 Build 1556 |
|
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 |