This unit implements basic evaluator types and functions, provide base classes to define functions, variables in a expression evaluator
| Name | Description |
| TRpToken |
Enumeration (totEOF,totSymbol,totString,totInteger,TotFloat,totOperator, totBoolean,totDate,totTime,totDateTime) An expression is divided in tokens (parsed), each token can have one of this types. |
| TRpValue |
Variant It's defined as a variant, in early implementations of the engine the expression evaluator values was implemented as a record because variants did not exists, this definition provide the way to implement operations with custom variants in a future, basic type operations are done using functions passing this type |
| RTypeIdentificator |
Enumeration (RTypeidenFunction,RTypeIdenVariable,RTypeIdenConstant) A identifier can be a function, variable or constant. |
| Name | Base class | Description |
| TRpNamedException | Exception | Exception with a property to identify the cause of the exception |
| TRpEvalException | TRpNamedException | Exception with information about the position (inside a expression) where the exception was launched |
| TIdentifier | TObject | Abstract definition of a evaluator identifier |
| TIdenFunction | TIdentifier | The implementation of a evaluator function, to define a new function derive it from this object |
| TIdenVariable | TIdentifier | The implementation of a evaluator variable |
| TIdenConstant | TIdentifier | The implementation of a evaluator constant |
| TIdenField | TIdentifier | The implementation of a evaluator database field |
| TIdenTrue | TIdenConstant | Boolean True constant |
| TIdenFalse | TIdenConstant | Boollean False constant |
Most of the functions are used by the evaluator for common arithmetic and comparation operations.
| Declaration | Description |
| function SumTRpValue(Value1,Value2:TRpValue):TRpValue; | Sum operation |
| function DifTRpValue(Value1,Value2:TRpValue):TRpValue; | Dif operation |
| function MultTRpValue(Value1,Value2:TRpValue):TRpValue; | Multiply |
| function DivTRpValue(Value1,Value2:TRpValue):TRpValue; | Divide |
| function SignTRpValue(Value:TRpValue):TRpValue; | Sign |
| function EqualTRpValue(Value1,Value2:TRpValue):TRpValue; | Comp. operator. |
| function EqualEqualTRpValue(Value1,Value2:TRpValue):TRpValue; | Comp. operator. |
| function MorethanEqualTRpValue(Value1,Value2:TRpValue):TRpValue; | Comp. operator. |
| function LessthanEqualTRpValue(Value1,Value2:TRpValue):TRpValue; | Comp. operator |
| function MorethanTRpValue(Value1,Value2:TRpValue):TRpValue; | Comp. operator |
| function LessthanTRpValue(Value1,Value2:TRpValue):TRpValue; | Comp. operator |
| function DiferentTRpValue(Value1,Value2:TRpValue):TRpValue; | Comp. operator |
| function IsNullTRpValue(Value:TRpValue):Boolean; | Comp. operator |
| function LogicalANDTRpValue(Value1,Value2:TRpValue):TRpValue; | Logical operator |
| function LogicalORTRpValue(Value1,Value2:TRpValue):TRpValue; | Logical operator |
| function LogicalNOTTRpValue(Value1:TRpValue):TRpValue; | Not operator |
| function TRpValueToString(Value:TRpValue):string; | Format operator |
| function FormatTRpValue(sFormat:string;Value:TRpValue;Userdef:Boolean):string; | Format operator |
| procedure DatetimeValidation(var Value1,Value2:TRpValue); | Date validate |