home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Turbo Toolbox
/
Turbo_Toolbox.iso
/
1991
/
04
/
txl
/
3_preis
/
fast
/
interp.h
< prev
next >
Wrap
C/C++ Source or Header
|
1991-01-15
|
7KB
|
233 lines
/**********************************************************/
/* 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 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 */
/* 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 TOKMAX 0x9A
/* 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;
/* 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 ******************/