IZE: 10pt; FONT-FAMILY: Verdana">...
TEasyEvaluator = class(TObject)
private
FOwnContext: TExprHashContext;
FExtContextSet: TExprSetContext;
FInternalContextSet: TExprSetContext;
protected
property InternalContextSet: TExprSetContext
read FInternalContextSet;
public
constructor Create;
destructor Destroy; override;
procedure AddVar(const AName: string;
var AVar: TFloat32); overload;
procedure AddVar(const AName: string;
var AVar: TFloat64); overload;
procedure AddVar(const AName: string;
var AVar: TFloat80); overload;
procedure AddConst(const AName: string;
AConst: TFloat32); overload;
procedure AddConst(const AName: string;
AConst: TFloat64); overload;
procedure AddConst(const AName: string;
AConst: TFloat80); overload;
procedure AddFunc(const AName: string;
AFunc: TFloat32Func); overload;
procedure AddFunc(const AName: string;
AFunc: TFloat64Func); overload;
procedure AddFunc(const AName: string;
AFunc: TFloat80Func); overload;
procedure AddFunc(const AName: string;
AFunc: TUnary32Func); overload;
procedure AddFunc(const AName: string;
AFunc: TUnary64Func); overload;
procedure AddFunc(const AName: string;
AFunc: TUnary80Func); overload;
procedure AddFunc(const AName: string;
AFunc: TBinary32Func); overload;
procedure AddFunc(const AName: string;
AFunc: TBinary64Func); overload;
procedure AddFunc(const AName: string;
AFunc: TBinary80Func); overload;
procedure AddFunc(const AName: string;
AFunc: TTernary32Func); overload;
procedure AddFunc(const AName: string;
AFunc: TTernary64Func); overload;
procedure AddFunc(const AName: string;
AFunc: TTernary80Func); overload;
procedure Remove(const AName: string);
procedure Clear;
property ExtContextSet: TExprSetContext
read FExtContextSet;
end;
TEvaluator = class(TEasyEvaluator)
private
FLexer: TExprSimpleLexer;
FParser: TExprEvalParser;
public
constructor Create;
destructor Destroy; override;
function Evaluate(const AExpr: string): TFloat;
end;
...
Para que possamos entender o funcionamento da classe TEvaluator é importante estudarmos o significado de três conceitos dentro do contexto: Variáveis, Constantes e Funções.
· Variáveis: São entidades que representam valores e podem ter seu valor alterado;
· Constantes: Assim como as variáveis, representam valores, porém, não podem ser alteradas;
· Funções: Representam chamadas a funções internas da aplicação.
Com base nisso, veremos então os métodos principais da classe:
· AddVar: Adiciona ao interpretador de expressões uma variável cujo nome será passado como uma string e representará a variável interna passada como parâmetro;
· AddConst: Da mesma forma que a AddVar, passa uma constante para o interpretador, cujo nome será passado como primeiro parâmetro e a constante que representa, o segundo parâmetro;
· ...