Forum: Sonstige Fragen zu Delphi
by Khabarakh,
11. Apr 2009
Eigentlich dachte ich, genau das vorgestellt zu haben :stupid: :( .
Schau dir mal TBinOp, die Klasse für alle binären Operatoren wie +,-,*,/ an: Der Konstruktor nimmt zwei weitere TOps entgegen, das sind die mit diesem Binary-Node verknüpften Branches.
Um mal dein Beispiel 3*x^2-4 umzusetzen:
TBinOp(
Kind = bokMinus,
Left = TBinOp(
Kind = bokMul,
Left = TConstantOp(Value = 3),...
Forum: Sonstige Fragen zu Delphi
by Khabarakh,
11. Apr 2009
Exakt. Statt sofort auszurechnen, musst Du beim Parsen einen AST erstellen. Könnte im Design z.B. so aussehen:
type
TOp = class
function Evaluate: Float; virtual; abstract;
end;
TBinaryOpKind = (bokPlus, bokMinus, bokMul, bokDiv);
TBinaryOp = class(TOp)
constructor Create(aKind : TBinaryOpKind; aLeft : TOp; aRight : TOp);