home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / 1990 / 10 / int / source / interp.h < prev    next >
Encoding:
C/C++ Source or Header  |  1990-06-19  |  4.3 KB  |  129 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 TOKMAX      0x8b
  60.  
  61. /* Allgemeine Fehlermeldungen */
  62. #define OK             1
  63. #define ERROR         -1
  64.  
  65. /* Interne Darstellung einer Interpreterzeile */
  66. typedef struct prgzeile {
  67.   int                  LineNumber;
  68.   char                 Zeile[ZEILENLAENGE];
  69.   struct prgzeile      *NextZeile;
  70.   struct prgzeile      *PrevZeile;
  71. } PRGZEILE;
  72.  
  73. /* Variablendarstellung */
  74. #define MAXDIM         3
  75.  
  76. typedef struct vardef {
  77.   union uvar {
  78.     char               zeichen;
  79.     int                integer;
  80.     long               Flotype;
  81.     char               *text;
  82.     void               *feld;
  83.   } variable;
  84.   unsigned char        dim1;        /* Anzahl Dimensionen */
  85.   unsigned char        dimdef[MAXDIM];  /* Feldfestlegung */
  86. } VARDEF;
  87.  
  88. typedef struct var {
  89.   char                 VarName[VNLAENGE];
  90.   unsigned char        VarType;
  91.   VARDEF               VarWert;
  92.   void                 *NextVar;
  93. } VAR;
  94.  
  95. /* Funktionszeigerdefinition */
  96. typedef int            (*PTF)();
  97.  
  98. /* Typ zur Beschreibung der vorhandenen Befehle */
  99. typedef struct tokbef {
  100.   PTF        function;       /* Zeiger auf die C-Funktion */
  101.   char       *Befehl;        /* Zeiger auf den Bef.-Namen */
  102.   int        ParaCount;           /* Anzahl der Parameter */
  103.   int        CopyRest;          /* Restzeile in Interpreter-
  104.                                          zeile übernehmen */
  105. } TOKBEF;
  106.  
  107. /* Gültige Typen für den Expression-Parser */
  108. #define ZAHL        0x01
  109. #define TEXT        0x02
  110. #define FELD        0x03
  111.  
  112. /* Typbeschreibung für den Expression-Parser */
  113. typedef struct expdef {
  114.   unsigned char        type;
  115.   union uval {
  116.     long               wert;
  117.     char               *text;
  118.     void               *feld;
  119.   } val;
  120. } EXPDEF;
  121.  
  122. #define EXPSTACK      20  /* Stacktiefe für die Variablen */
  123. #define OPSTACK       10 /* Stacktiefe für die Operatoren */
  124.  
  125. /* Hier kommen die Prototypen */
  126. #include "intprot.h"
  127.  
  128. /**************  Ende des Files INTERP.H ******************/
  129.