home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD1.mdf / icon / dos / src / icont / tlex.h < prev    next >
C/C++ Source or Header  |  1992-02-10  |  4KB  |  126 lines

  1. /*
  2.  * Token table structure.
  3.  */
  4.  
  5. struct toktab {
  6.    char *t_word;        /* token */
  7.    int  t_type;            /* token type returned by yylex */
  8.    int  t_flags;        /* flags for semicolon insertion */
  9.    };
  10.  
  11. #ifdef CRAY
  12. extern struct toktab toktab[115];    /* workaround for compiler bug */
  13. #else                    /* CRAY */
  14. extern struct toktab toktab[];    /* token table */
  15. #endif
  16.                     /* CRAY */
  17. extern struct toktab *restab[];    /* reserved word index */
  18.  
  19. #define T_Ident        &toktab[0]
  20. #define T_Int        &toktab[1]
  21. #define T_Real        &toktab[2]
  22. #define T_String    &toktab[3]
  23. #define T_Cset        &toktab[4]
  24. #define T_Eof        &toktab[5]
  25.  
  26. /*
  27.  * t_flags values for token table.
  28.  */
  29.  
  30. #define Beginner 1        /* token can follow a semicolon */
  31. #define Ender    2        /* token can precede a semicolon */
  32.  
  33. /*
  34.  * Operator table - a finite-state automaton for recognizing Icon operators.
  35.  */
  36.  
  37. struct optab {
  38.    char o_input;
  39.    char o_action;
  40.    char *o_val;
  41.    };
  42.  
  43. extern struct optab state0[];
  44. extern struct optab state1[];
  45. extern struct optab state2[];
  46. extern struct optab state3[];
  47. extern struct optab state4[];
  48. extern struct optab state5[];
  49. extern struct optab state6[];
  50. extern struct optab state7[];
  51. extern struct optab state8[];
  52. extern struct optab state9[];
  53. extern struct optab state10[];
  54. extern struct optab state11[];
  55. extern struct optab state12[];
  56. extern struct optab state13[];
  57. extern struct optab state14[];
  58. extern struct optab state15[];
  59. extern struct optab state16[];
  60. extern struct optab state17[];
  61. extern struct optab state18[];
  62. extern struct optab state19[];
  63. extern struct optab state20[];
  64. extern struct optab state21[];
  65. extern struct optab state22[];
  66. extern struct optab state23[];
  67. extern struct optab state24[];
  68. extern struct optab state25[];
  69. extern struct optab state26[];
  70. extern struct optab state27[];
  71. extern struct optab state28[];
  72. extern struct optab state29[];
  73. extern struct optab state30[];
  74. extern struct optab state31[];
  75. extern struct optab state32[];
  76. extern struct optab state33[];
  77. extern struct optab state34[];
  78. extern struct optab state35[];
  79. extern struct optab state36[];
  80. extern struct optab state37[];
  81. extern struct optab state38[];
  82. extern struct optab state39[];
  83. extern struct optab state40[];
  84. extern struct optab state41[];
  85. extern struct optab state42[];
  86. extern struct optab state43[];
  87. extern struct optab state44[];
  88. extern struct optab state45[];
  89. extern struct optab state46[];
  90. extern struct optab state47[];
  91. extern struct optab state48[];
  92. extern struct optab state49[];
  93. extern struct optab state50[];
  94. extern struct optab state51[];
  95. extern struct optab state52[];
  96. extern struct optab state53[];
  97. extern struct optab state54[];
  98. extern struct optab state55[];
  99. extern struct optab state56[];
  100. extern struct optab state57[];
  101. extern struct optab state58[];
  102. extern struct optab state59[];
  103. extern struct optab state60[];
  104. extern struct optab state61[];
  105. extern struct optab state62[];
  106.  
  107. /*
  108.  * o_action values.
  109.  */
  110.  
  111. #define A_Goto   1    /* shift input and goto new state o_val */
  112. #define A_Error  2    /* illegal operator */
  113. #define A_Return 3    /* return o_val, save input char */
  114. #define A_Immret 4    /* return o_val, discard input char */
  115.  
  116. /*
  117.  * Miscellaneous.
  118.  */
  119.  
  120. #define isoctal(c) ((c)>='0'&&(c)<='7')    /* macro to test for octal digit */
  121. #define NextChar   nextchar()        /* macro to get next character */
  122. #define PushChar(c) peekc=(c)        /* macro to push back a character */
  123.  
  124. #define Comment '#'            /* comment beginner */
  125. #define Escape  '\\'            /* string literal escape character */
  126.