home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / spezial / 20 / st_txl / interp.h < prev    next >
Encoding:
C/C++ Source or Header  |  1985-07-18  |  4.6 KB  |  136 lines

  1. /**********************************************************/
  2. /*                       INTERP.H                         */
  3. /*      Vereinbarung aller Strukturen und Konstanten      */
  4. /*                   des Interpreters                     */
  5. /*          (c) 1990 Michael Beising & TOOLBOX            */
  6. /**********************************************************/
  7.  
  8. /* Oft benutzte Konstanten  */
  9. #define TRUE           1
  10. #define FALSE          0
  11. #define CR          0x0d
  12. #define LF          0x0a
  13. #define SPACE       0x20
  14.  
  15. #define VNLAENGE      10       /* 10 signifikante Zeichen */
  16. #define ZEILENLAENGE 255        /* Zeilenlänge 80 Zeichen */
  17. #define FNAMLEN       64          /* Länge des Filenamens */
  18. #define NAMLEN        20
  19.  
  20. /* Über "Steuer" bekannte Zeichenfolgen */
  21. #define ALPHA       0x01                    /* Buchstaben */
  22. #define ZIFFER      0x02                       /* Ziffern */
  23. #define FIXNUM      0x02                      /* Ganzzahl */
  24. #define FLONUM      0x03                /* Fließkommazahl */
  25. #define SONDER      0x04                 /* Sonderzeichen */
  26. #define STRING      0x05   /* Stringanfang wurde gefunden */
  27. #define EOLCHAR     0x06             /* Zeilenendezeichen */
  28. #define UNKNOWN     0xff         /* ungültiger Steuercode */
  29.  
  30. /* Vergleichstoken */
  31. #define GL          0x01                        /* gleich */
  32. #define GR          0x02                        /* größer */
  33. #define GRGL        0x03                 /* größer-gleich */
  34. #define KL          0x04                       /* kleiner */
  35. #define KLGL        0x05                /* kleiner-gleich */
  36. #define UNGL        0x06                      /* ungleich */
  37.  
  38. /* Fehlermeldungen für den Scanner */
  39. #define EOLFEHLER     -1              /* Zeilenende erreicht
  40.                                          ohne Befehlsende */
  41. #define UNEOL         -1       /* unerwartetes Zeilenende */
  42. #define INVCHAR       -2   /* ungültiges Zeichen gefunden */
  43. #define SCANOK         1       /* kein Fehler aufgetreten */
  44.  
  45. /* Tokendefinitionen für die bekannten Befehle */
  46. #define TOKMIN      0x80
  47. #define TOKRUN      0x80
  48. #define TOKDRUCK    0x81
  49. #define TOKSET      0x82
  50. #define TOKIF       0x83
  51. #define TOKLOAD     0x84
  52. #define TOKSAVE     0x85
  53. #define TOKGOTO     0x86
  54. #define TOKEND      0x87
  55. #define TOKEXIT     0x88
  56. #define TOKMERKE    0x89
  57. #define TOKLIST     0x8a
  58. #define TOKNEU      0x8b
  59. #define TOKTON      0x8c     /* ctrcon*/
  60. #define TOKTOFF     0x8d     /* ctrcoff */
  61. #define TOKDOG      0x8e     /* cwdog */
  62. #define TOKLESE     0x8f     /* creadvar */
  63. #define TOKCOPY     0x90     /* ccopy */
  64. #define TOKINS      0x91     /* cins */
  65. #define TOKDEL      0x92     /* cdel */
  66. #define TOKMAX      0x94
  67.  
  68. /* Allgemeine Fehlermeldungen */
  69. #define OK             1
  70. #define ERROR         -1
  71.  
  72. /* Interne Darstellung einer Interpreterzeile */
  73. typedef struct prgzeile {
  74.   int                  LineNumber;
  75.   char                 Zeile[ZEILENLAENGE];
  76.   struct prgzeile      *NextZeile;
  77.   struct prgzeile      *PrevZeile;
  78. } PRGZEILE;
  79.  
  80. /* Variablendarstellung */
  81. #define MAXDIM         3
  82.  
  83. typedef struct vardef {
  84.   union uvar {
  85.     char               zeichen;
  86.     int                integer;
  87.     float              Flotype;
  88.     char               *text;
  89.     void               *feld;
  90.   } variable;
  91.   unsigned char        dim1;        /* Anzahl Dimensionen */
  92.   unsigned char        dimdef[MAXDIM];  /* Feldfestlegung */
  93. } VARDEF;
  94.  
  95. typedef struct var {
  96.   char                 VarName[VNLAENGE];
  97.   unsigned char        VarType;
  98.   VARDEF               VarWert;
  99.   void                 *NextVar;
  100. } VAR;
  101.  
  102. /* Funktionszeigerdefinition */
  103. typedef int            (*PTF)();
  104.  
  105. /* Typ zur Beschreibung der vorhandenen Befehle */
  106. typedef struct tokbef {
  107.   PTF        function;       /* Zeiger auf die C-Funktion */
  108.   char       *Befehl;        /* Zeiger auf den Bef.-Namen */
  109.   int        ParaCount;           /* Anzahl der Parameter */
  110.   int        CopyRest;          /* Restzeile in Interpreter-
  111.                                          zeile übernehmen */
  112. } TOKBEF;
  113.  
  114. /* Gültige Typen für den Expression-Parser */
  115. #define ZAHL        0x01
  116. #define TEXT        0x02
  117. #define FELD        0x03
  118.  
  119. /* Typbeschreibung für den Expression-Parser */
  120. typedef struct expdef {
  121.   unsigned char        type;
  122.   union uval {
  123.     float              wert;
  124.     char               *text;
  125.     void               *feld;
  126.   } val;
  127. } EXPDEF;
  128.  
  129. #define EXPSTACK      20  /* Stacktiefe für die Variablen */
  130. #define OPSTACK       10 /* Stacktiefe für die Operatoren */
  131.  
  132. /* Hier kommen die Prototypen */
  133. #include "intprot.h"
  134.  
  135. /**************  Ende des Files INTERP.H ******************/
  136.