home *** CD-ROM | disk | FTP | other *** search
- (* ----------------------------------------------------------------------- *)
- (* CALCVAR.PAS *)
- (* ... sowie ein paar globale Groessen: *)
-
- (* 'CalcDecMod' steuert die Variablen-Verarbeitung des Compilers. Zeichen-
- folgen im Ausdruck, die nicht als reservierte Symbole identifiziert
- werden koennen, werden entsprechend 'CalcDecMod' folgendermasen be-
- handelt:
- = FALSE: die Zeichenfolge wird als Variable interpretiert, in die zum
- Ausdruck gehoerende Variablen-Tabelle uebernommen (wenn noch
- nicht vorhanden) und entsprechend behandelt.
- = TRUE : es werden nur Zeichenfolgen als Variablen akzeptiert, die
- schon vor dem Uebersetzen in der Variablen-Tabelle vorhanden
- waren.
- Sinn und Zweck des Ganzen ist dem Begleitartikel zu entnehmen! *)
-
- CalcDecMod : BOOLEAN;
-
- (* 'CalcResult = FALSE' zeigt an, dass bei der Verarbeitung des Ausdrucks
- (Uebersetzung oder Auswertung) irgend etwas schief gelaufen ist! *)
-
- CalcResult : BOOLEAN;
-
- (* fuer die Bezeichner der Symbole wurde hier eine typisierte Konstante
- (Turbo Pascal!) verwendetet. Bei anderen Dialekten muss folgendermassen
- vorgegangen werden:
- VAR Calc_Ids : ARRAY [Calc_Symbols] OF Calc_IdStr;
-
- und dann im Anweisungsteil:
- BEGIN
- Calc_Ids[0] := 'ERR'; Calc_Ids[1] := 'CONST'; Calc_Ids[2] := 'VAR';
- ...
- Calc_Ids[Calc_NoSym] := 'letzter Bezeichner';
- ...
-
- Das Ganze kann z.B. lokal in der Prozedur 'CompileExpression' geschehen,
- besser aber nur einmal zum Beginn des verwendenten Hauptprogrammes. *)
-
- CONST Calc_Ids : ARRAY [Calc_Symbols] OF Calc_IdStr =
- ('ERR', ';', 'CONST', 'VAR', 'PI', 'E', '(', ')', 'NEG',
- '+', '-', '*', '/', 'DIV', 'MOD', 'GGT', 'KGV', '^',
- 'SQR', 'SQRT', 'EXP', 'LN', 'LG', 'LD',
- 'SIN', 'COS', 'TAN', 'COT',
- 'ARCSIN', 'ARCCOS', 'ARCTAN', 'ARCCOT',
- 'SINH', 'COSH', 'TANH', 'COTH',
- 'ARSINH', 'ARCOSH', 'ARTANH', 'ARCOTH',
- 'ABS', 'DEG', 'RAD', 'REZ', 'FAK');
-
- (* ----------------------------------------------------------------------- *)
- (* Ende von CALCVAR.PAS *)