home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / spezial / 20 / dos_txl / source / interp.h < prev    next >
Encoding:
C/C++ Source or Header  |  1991-02-19  |  7.2 KB  |  249 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.  
  10. #define COPYRIGHT "TXL-Interpreter"
  11. #define VERSION   "2.0  DOS Version"
  12.  
  13. #define TRUE           1
  14. #define FALSE          0
  15. #define CR          0x0d
  16. #define LF          0x0a
  17. #define SPACE       0x20
  18.  
  19. #define VNLAENGE      10       /* 10 signifikante Zeichen */
  20. #define ZEILENLAENGE  77        /* Zeilenlänge 77 Zeichen = 1 Zeile*/
  21. #define FNAMLEN       64          /* Länge des Filenamens */
  22. #define NAMLEN        20
  23.  
  24. /* Über "Steuer" bekannte Zeichenfolgen */
  25. #define ALPHA       0x01                    /* Buchstaben */
  26. #define ZIFFER      0x02                       /* Ziffern */
  27. #define FIXNUM      0x02                      /* Ganzzahl */
  28. #define FLONUM      0x03                /* Fließkommazahl */
  29. #define SONDER      0x04                 /* Sonderzeichen */
  30. #define STRING      0x05   /* Stringanfang wurde gefunden */
  31. #define EOLCHAR     0x06             /* Zeilenendezeichen */
  32. #define UNKNOWN     0xff         /* ungültiger Steuercode */
  33.  
  34. /* Variablentyp ARRAY */
  35. #define ARRAY       0x10
  36.  
  37. /* Vergleichstoken */
  38. #define GL          0x01                        /* gleich */
  39. #define GR          0x02                        /* größer */
  40. #define GRGL        0x03                 /* größer-gleich */
  41. #define KL          0x04                       /* kleiner */
  42. #define KLGL        0x05                /* kleiner-gleich */
  43. #define UNGL        0x06                      /* ungleich */
  44.  
  45. /* Fehlermeldungen für den Scanner */
  46. #define EOLFEHLER     -1              /* Zeilenende erreicht
  47.                                          ohne Befehlsende */
  48. #define UNEOL         -1       /* unerwartetes Zeilenende */
  49. #define INVCHAR       -2   /* ungültiges Zeichen gefunden */
  50. #define SCANOK         1       /* kein Fehler aufgetreten */
  51.  
  52. /* Tokendefinitionen für die bekannten Befehle */
  53. #define TOKMIN       0x80
  54. #define TOKRUN       0x80
  55. #define TOKDRUCK     0x81
  56. #define TOKSET       0x82
  57. #define TOKIF        0x83
  58. #define TOKLOAD      0x84
  59. #define TOKSAVE      0x85
  60. #define TOKGOTO      0x86
  61. #define TOKEND       0x87
  62. #define TOKEXIT      0x88
  63. #define TOKMERKE     0x89
  64. #define TOKLIST      0x8a
  65. #define TOKNEU       0x8b
  66. #define TOKHILFE     0x8c
  67. #define TOKZEIG      0x8d
  68. #define TOKSETFARBE  0x8e
  69. #define TOKLOESCH    0x8f
  70. #define TOKPAUSE     0x90
  71. #define TOKDOS       0x91
  72. #define TOKSBILD     0x92
  73. #define TOKRBILD     0x93
  74. #define TOKLESE      0x94
  75. #define TOKIFTASTE   0x95
  76. #define TOKBOX       0x96
  77. #define TOKINFO      0x97
  78. #define TOKPIEP      0x98
  79. #define TOKGERALD    0x99
  80. #define TOKATTRIBUT  0x9A
  81. #define TOKCOMMANDS  0x9B
  82. #define TOKRUN       0x9C
  83. #define TOKEXIT      0x9D
  84. #define TOKMAX       0x9D+20+17+29
  85.  
  86. /* Allgemeine Fehlermeldungen */
  87. #define OK             1
  88. #define ERROR         -1
  89.  
  90. /********************************************/
  91. /* Tastenwerte                              */
  92. /********************************************/
  93.  
  94. #define  F1          9059
  95. #define  F2          9060
  96. #define  F3          9061
  97. #define  F4          9062
  98. #define  F5          9063
  99. #define  F6          9064
  100. #define  F7          9065
  101. #define  F8          9066
  102. #define  F9          9067
  103. #define  F10         9068
  104.  
  105.  
  106. /*            Crtl          */
  107.  
  108. #define  SF1         9084
  109. #define  SF2         9085
  110. #define  SF3         9086
  111. #define  SF4         9087
  112. #define  SF5         9088
  113. #define  SF6         9089
  114. #define  SF7         9090
  115. #define  SF8         9091
  116. #define  SF9         9092
  117. #define  SF10        9093
  118. #define  CF1         9094
  119. #define  CF2         9095
  120. #define  CF3         9096
  121. #define  CF4         9097
  122. #define  CF5         9098
  123. #define  CF6         9099
  124. #define  CF7         9100
  125. #define  CF8         9101
  126. #define  CF9         9102
  127. #define  CF10        9103
  128.  
  129.  
  130. /*                ALT              */
  131.  
  132. #define  AF1         9104
  133. #define  AF2         9105
  134. #define  AF3         9106
  135. #define  AF4         9107
  136. #define  AF5         9108
  137. #define  AF6         9109
  138. #define  AF7         9110
  139. #define  AF8         9111
  140. #define  AF9         9112
  141. #define  AF10        9113
  142.  
  143.  
  144. #define  ESC         9027
  145. #define  BKSP        9008
  146. #define  ENTER       9013
  147. #define  CENTER      9010
  148. #define  TAB         9009
  149. #define  STAB        9015
  150. #define  INS         9082
  151. #define  DEL         9083
  152. #define  HOME        9071
  153. #define  END         9079
  154. #define  PGUP        9073
  155. #define  PGDN        9081
  156.  
  157.  
  158. /*         Cursortasten        */
  159.  
  160. #define  CRUP        9072
  161. #define  CRDN        9080
  162. #define  CRLI        9075
  163. #define  CRRE        9077
  164.  
  165.  
  166. /*        Ctrl Cursor          */
  167.  
  168. #define  CCRLI       9115
  169. #define  CCRRE       9116
  170.  
  171.  
  172.  
  173. /* Interne Darstellung einer Interpreterzeile */
  174. typedef struct prgzeile {
  175.   int                  LineNumber;
  176.   char                 Zeile[ZEILENLAENGE];
  177.   struct prgzeile      *NextZeile;
  178.   struct prgzeile      *PrevZeile;
  179. } PRGZEILE;
  180.  
  181. /* Variablendarstellung */
  182. #define MAXDIM         3
  183.  
  184. typedef struct vardef {
  185.   union uvar {
  186.     char               zeichen;
  187.     long               integer;
  188.     double             Flotype;     /* long               Flotype; */
  189.     unsigned char      *text;
  190.     void               *feld;
  191.   } variable;
  192.   unsigned char        dim1;            /* Stringlänge , Anzahl Dimensionen */
  193.   unsigned char        dimdef[MAXDIM];  /* Feldfestlegung */
  194. } VARDEF;
  195.  
  196. typedef struct var {
  197.   char                 VarName[VNLAENGE];
  198.   unsigned char        VarType;
  199.   VARDEF               VarWert;
  200.   void                 *NextVar;
  201. } VAR;
  202.  
  203. /* Speichersparender Arrayelementtyp */
  204. typedef struct arrayvar {
  205.   unsigned char        VarType;
  206.   VARDEF               VarWert;
  207. } ARRAYVAR;
  208.  
  209. /* Funktionszeigerdefinition */
  210. typedef int            (*PTF)();
  211.  
  212. /* Typ zur Beschreibung der vorhandenen Befehle */
  213. typedef struct tokbef {
  214.   PTF        function;       /* Zeiger auf die C-Funktion */
  215.   char       *Befehl;        /* Zeiger auf den Bef.-Namen */
  216.   int        ParaCount;           /* Anzahl der Parameter */
  217.   int        CopyRest;          /* Restzeile in Interpreter-
  218.                                          zeile übernehmen */
  219. } TOKBEF;
  220.  
  221. /* Gültige Typen für den Expression-Parser */
  222. #define ZAHL        0x01
  223. #define DEZ         0x04
  224. #define TEXT        0x02
  225. #define FELD        0x03
  226.  
  227. /* Typbeschreibung für den Expression-Parser */
  228. typedef struct expdef {
  229.   unsigned char        type;
  230.   union uval {
  231.     long               wert;
  232.     double             dez;
  233.     char               *text;
  234.     void               *feld;
  235.   } val;
  236.   unsigned char        dim1;        /* Stringlänge , Anzahl Dimensionen */
  237.   unsigned char        dimdef[MAXDIM];  /* Feldfestlegung */
  238.  
  239. } EXPDEF;
  240.  
  241. #define EXPSTACK      20  /* Stacktiefe für die Variablen */
  242. #define OPSTACK       10 /* Stacktiefe für die Operatoren */
  243.  
  244.  
  245. /* Hier kommen die Prototypen */
  246. #include "intprot.h"
  247.  
  248. /**************  Ende des Files INTERP.H ******************/
  249.