home *** CD-ROM | disk | FTP | other *** search
- /**********************************************************/
- /* INTERP.H */
- /* Vereinbarung aller Strukturen und Konstanten */
- /* des Interpreters */
- /* (c) 1990 Michael Beising & TOOLBOX */
- /**********************************************************/
-
- /* Oft benutzte Konstanten */
- #define TRUE 1
- #define FALSE 0
- #define CR 0x0d
- #define LF 0x0a
- #define SPACE 0x20
-
- #define VNLAENGE 10 /* 10 signifikante Zeichen */
- #define ZEILENLAENGE 255 /* Zeilenlänge 80 Zeichen */
- #define FNAMLEN 64 /* Länge des Filenamens */
- #define NAMLEN 20
-
- /* Über "Steuer" bekannte Zeichenfolgen */
- #define ALPHA 0x01 /* Buchstaben */
- #define ZIFFER 0x02 /* Ziffern */
- #define FIXNUM 0x02 /* Ganzzahl */
- #define FLONUM 0x03 /* Fließkommazahl */
- #define SONDER 0x04 /* Sonderzeichen */
- #define STRING 0x05 /* Stringanfang wurde gefunden */
- #define EOLCHAR 0x06 /* Zeilenendezeichen */
- #define UNKNOWN 0xff /* ungültiger Steuercode */
-
- /* Vergleichstoken */
- #define GL 0x01 /* gleich */
- #define GR 0x02 /* größer */
- #define GRGL 0x03 /* größer-gleich */
- #define KL 0x04 /* kleiner */
- #define KLGL 0x05 /* kleiner-gleich */
- #define UNGL 0x06 /* ungleich */
-
- /* Fehlermeldungen für den Scanner */
- #define EOLFEHLER -1 /* Zeilenende erreicht
- ohne Befehlsende */
- #define UNEOL -1 /* unerwartetes Zeilenende */
- #define INVCHAR -2 /* ungültiges Zeichen gefunden */
- #define SCANOK 1 /* kein Fehler aufgetreten */
-
- /* Tokendefinitionen für die bekannten Befehle */
- #define TOKMIN 0x80
- #define TOKRUN 0x80
- #define TOKDRUCK 0x81
- #define TOKSET 0x82
- #define TOKIF 0x83
- #define TOKLOAD 0x84
- #define TOKSAVE 0x85
- #define TOKGOTO 0x86
- #define TOKEND 0x87
- #define TOKEXIT 0x88
- #define TOKMERKE 0x89
- #define TOKLIST 0x8a
- #define TOKNEU 0x8b
- #define TOKMAX 0x8b
-
- /* Allgemeine Fehlermeldungen */
- #define OK 1
- #define ERROR -1
-
- /* Interne Darstellung einer Interpreterzeile */
- typedef struct prgzeile {
- int LineNumber;
- char Zeile[ZEILENLAENGE];
- struct prgzeile *NextZeile;
- struct prgzeile *PrevZeile;
- } PRGZEILE;
-
- /* Variablendarstellung */
- #define MAXDIM 3
-
- typedef struct vardef {
- union uvar {
- char zeichen;
- int integer;
- long Flotype;
- char *text;
- void *feld;
- } variable;
- unsigned char dim1; /* Anzahl Dimensionen */
- unsigned char dimdef[MAXDIM]; /* Feldfestlegung */
- } VARDEF;
-
- typedef struct var {
- char VarName[VNLAENGE];
- unsigned char VarType;
- VARDEF VarWert;
- void *NextVar;
- } VAR;
-
- /* Funktionszeigerdefinition */
- typedef int (*PTF)();
-
- /* Typ zur Beschreibung der vorhandenen Befehle */
- typedef struct tokbef {
- PTF function; /* Zeiger auf die C-Funktion */
- char *Befehl; /* Zeiger auf den Bef.-Namen */
- int ParaCount; /* Anzahl der Parameter */
- int CopyRest; /* Restzeile in Interpreter-
- zeile übernehmen */
- } TOKBEF;
-
- /* Gültige Typen für den Expression-Parser */
- #define ZAHL 0x01
- #define TEXT 0x02
- #define FELD 0x03
-
- /* Typbeschreibung für den Expression-Parser */
- typedef struct expdef {
- unsigned char type;
- union uval {
- long wert;
- char *text;
- void *feld;
- } val;
- } EXPDEF;
-
- #define EXPSTACK 20 /* Stacktiefe für die Variablen */
- #define OPSTACK 10 /* Stacktiefe für die Operatoren */
-
- /* Hier kommen die Prototypen */
- #include "intprot.h"
-
- /************** Ende des Files INTERP.H ******************/
-