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 COPYRIGHT "TXL-Interpreter"
- #define VERSION "2.0 DOS Version"
-
- #define TRUE 1
- #define FALSE 0
- #define CR 0x0d
- #define LF 0x0a
- #define SPACE 0x20
-
- #define VNLAENGE 10 /* 10 signifikante Zeichen */
- #define ZEILENLAENGE 77 /* Zeilenlänge 77 Zeichen = 1 Zeile*/
- #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 */
-
- /* Variablentyp ARRAY */
- #define ARRAY 0x10
-
- /* 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 TOKHILFE 0x8c
- #define TOKZEIG 0x8d
- #define TOKSETFARBE 0x8e
- #define TOKLOESCH 0x8f
- #define TOKPAUSE 0x90
- #define TOKDOS 0x91
- #define TOKSBILD 0x92
- #define TOKRBILD 0x93
- #define TOKLESE 0x94
- #define TOKIFTASTE 0x95
- #define TOKBOX 0x96
- #define TOKINFO 0x97
- #define TOKPIEP 0x98
- #define TOKGERALD 0x99
- #define TOKATTRIBUT 0x9A
- #define TOKCOMMANDS 0x9B
- #define TOKRUN 0x9C
- #define TOKEXIT 0x9D
- #define TOKMAX 0x9D+20+17+29
-
- /* Allgemeine Fehlermeldungen */
- #define OK 1
- #define ERROR -1
-
- /********************************************/
- /* Tastenwerte */
- /********************************************/
-
- #define F1 9059
- #define F2 9060
- #define F3 9061
- #define F4 9062
- #define F5 9063
- #define F6 9064
- #define F7 9065
- #define F8 9066
- #define F9 9067
- #define F10 9068
-
-
- /* Crtl */
-
- #define SF1 9084
- #define SF2 9085
- #define SF3 9086
- #define SF4 9087
- #define SF5 9088
- #define SF6 9089
- #define SF7 9090
- #define SF8 9091
- #define SF9 9092
- #define SF10 9093
- #define CF1 9094
- #define CF2 9095
- #define CF3 9096
- #define CF4 9097
- #define CF5 9098
- #define CF6 9099
- #define CF7 9100
- #define CF8 9101
- #define CF9 9102
- #define CF10 9103
-
-
- /* ALT */
-
- #define AF1 9104
- #define AF2 9105
- #define AF3 9106
- #define AF4 9107
- #define AF5 9108
- #define AF6 9109
- #define AF7 9110
- #define AF8 9111
- #define AF9 9112
- #define AF10 9113
-
-
- #define ESC 9027
- #define BKSP 9008
- #define ENTER 9013
- #define CENTER 9010
- #define TAB 9009
- #define STAB 9015
- #define INS 9082
- #define DEL 9083
- #define HOME 9071
- #define END 9079
- #define PGUP 9073
- #define PGDN 9081
-
-
- /* Cursortasten */
-
- #define CRUP 9072
- #define CRDN 9080
- #define CRLI 9075
- #define CRRE 9077
-
-
- /* Ctrl Cursor */
-
- #define CCRLI 9115
- #define CCRRE 9116
-
-
-
- /* 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;
- long integer;
- double Flotype; /* long Flotype; */
- unsigned char *text;
- void *feld;
- } variable;
- unsigned char dim1; /* Stringlänge , Anzahl Dimensionen */
- unsigned char dimdef[MAXDIM]; /* Feldfestlegung */
- } VARDEF;
-
- typedef struct var {
- char VarName[VNLAENGE];
- unsigned char VarType;
- VARDEF VarWert;
- void *NextVar;
- } VAR;
-
- /* Speichersparender Arrayelementtyp */
- typedef struct arrayvar {
- unsigned char VarType;
- VARDEF VarWert;
- } ARRAYVAR;
-
- /* 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 DEZ 0x04
- #define TEXT 0x02
- #define FELD 0x03
-
- /* Typbeschreibung für den Expression-Parser */
- typedef struct expdef {
- unsigned char type;
- union uval {
- long wert;
- double dez;
- char *text;
- void *feld;
- } val;
- unsigned char dim1; /* Stringlänge , Anzahl Dimensionen */
- unsigned char dimdef[MAXDIM]; /* Feldfestlegung */
-
- } 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 ******************/
-