home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / 1991 / 04 / txl / 3_preis / fast / interp.h < prev    next >
C/C++ Source or Header  |  1991-01-15  |  7KB  |  233 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  77        /* Zeilenlänge 77 Zeichen = 1 Zeile*/
  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 TOKHILFE     0x8c
  60. #define TOKZEIG      0x8d
  61. #define TOKSETFARBE  0x8e
  62. #define TOKLOESCH    0x8f
  63. #define TOKPAUSE     0x90
  64. #define TOKDOS       0x91
  65. #define TOKSBILD     0x92
  66. #define TOKRBILD     0x93
  67. #define TOKLESE      0x94
  68. #define TOKIFTASTE   0x95
  69. #define TOKBOX       0x96
  70. #define TOKINFO      0x97
  71. #define TOKPIEP      0x98
  72. #define TOKGERALD    0x99
  73. #define TOKATTRIBUT  0x9A
  74. #define TOKMAX       0x9A
  75.  
  76. /* Allgemeine Fehlermeldungen */
  77. #define OK             1
  78. #define ERROR         -1
  79.  
  80. /********************************************/
  81. /* Tastenwerte                              */
  82. /********************************************/
  83.  
  84. #define  F1          9059
  85. #define  F2          9060
  86. #define  F3          9061
  87. #define  F4          9062
  88. #define  F5          9063
  89. #define  F6          9064
  90. #define  F7          9065
  91. #define  F8          9066
  92. #define  F9          9067
  93. #define  F10         9068
  94.  
  95.  
  96. /*            Crtl          */
  97.  
  98. #define  SF1         9084
  99. #define  SF2         9085
  100. #define  SF3         9086
  101. #define  SF4         9087
  102. #define  SF5         9088
  103. #define  SF6         9089
  104. #define  SF7         9090
  105. #define  SF8         9091
  106. #define  SF9         9092
  107. #define  SF10        9093
  108. #define  CF1         9094
  109. #define  CF2         9095
  110. #define  CF3         9096
  111. #define  CF4         9097
  112. #define  CF5         9098
  113. #define  CF6         9099
  114. #define  CF7         9100
  115. #define  CF8         9101
  116. #define  CF9         9102
  117. #define  CF10        9103
  118.  
  119.  
  120. /*                ALT              */
  121.  
  122. #define  AF1         9104
  123. #define  AF2         9105
  124. #define  AF3         9106
  125. #define  AF4         9107
  126. #define  AF5         9108
  127. #define  AF6         9109
  128. #define  AF7         9110
  129. #define  AF8         9111
  130. #define  AF9         9112
  131. #define  AF10        9113
  132.  
  133.  
  134. #define  ESC         9027
  135. #define  BKSP        9008
  136. #define  ENTER       9013
  137. #define  CENTER      9010
  138. #define  TAB         9009
  139. #define  STAB        9015
  140. #define  INS         9082
  141. #define  DEL         9083
  142. #define  HOME        9071
  143. #define  END         9079
  144. #define  PGUP        9073
  145. #define  PGDN        9081
  146.  
  147.  
  148. /*         Cursortasten        */
  149.  
  150. #define  CRUP        9072
  151. #define  CRDN        9080
  152. #define  CRLI        9075
  153. #define  CRRE        9077
  154.  
  155.  
  156. /*        Ctrl Cursor          */
  157.  
  158. #define  CCRLI       9115
  159. #define  CCRRE       9116
  160.  
  161.  
  162.  
  163. /* Interne Darstellung einer Interpreterzeile */
  164. typedef struct prgzeile {
  165.   int                  LineNumber;
  166.   char                 Zeile[ZEILENLAENGE];
  167.   struct prgzeile      *NextZeile;
  168.   struct prgzeile      *PrevZeile;
  169. } PRGZEILE;
  170.  
  171. /* Variablendarstellung */
  172. #define MAXDIM         3
  173.  
  174. typedef struct vardef {
  175.   union uvar {
  176.     char               zeichen;
  177.     long               integer;
  178.     double             Flotype;     /* long               Flotype; */
  179.     unsigned char      *text;
  180.     void               *feld;
  181.   } variable;
  182.   unsigned char        dim1;            /* Stringlänge , Anzahl Dimensionen */
  183.   unsigned char        dimdef[MAXDIM];  /* Feldfestlegung */
  184. } VARDEF;
  185.  
  186. typedef struct var {
  187.   char                 VarName[VNLAENGE];
  188.   unsigned char        VarType;
  189.   VARDEF               VarWert;
  190.   void                 *NextVar;
  191. } VAR;
  192.  
  193. /* Funktionszeigerdefinition */
  194. typedef int            (*PTF)();
  195.  
  196. /* Typ zur Beschreibung der vorhandenen Befehle */
  197. typedef struct tokbef {
  198.   PTF        function;       /* Zeiger auf die C-Funktion */
  199.   char       *Befehl;        /* Zeiger auf den Bef.-Namen */
  200.   int        ParaCount;           /* Anzahl der Parameter */
  201.   int        CopyRest;          /* Restzeile in Interpreter-
  202.                                          zeile übernehmen */
  203. } TOKBEF;
  204.  
  205. /* Gültige Typen für den Expression-Parser */
  206. #define ZAHL        0x01
  207. #define DEZ         0x04
  208. #define TEXT        0x02
  209. #define FELD        0x03
  210.  
  211. /* Typbeschreibung für den Expression-Parser */
  212. typedef struct expdef {
  213.   unsigned char        type;
  214.   union uval {
  215.     long               wert;
  216.     double             dez;
  217.     char               *text;
  218.     void               *feld;
  219.   } val;
  220.   unsigned char        dim1;        /* Stringlänge , Anzahl Dimensionen */
  221.   unsigned char        dimdef[MAXDIM];  /* Feldfestlegung */
  222.  
  223. } EXPDEF;
  224.  
  225. #define EXPSTACK      20  /* Stacktiefe für die Variablen */
  226. #define OPSTACK       10 /* Stacktiefe für die Operatoren */
  227.  
  228.  
  229. /* Hier kommen die Prototypen */
  230. #include "intprot.h"
  231.  
  232. /**************  Ende des Files INTERP.H ******************/
  233.