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

  1. #include "../h/config.h"
  2. #include "tlex.h"
  3.  
  4. /*
  5.  * State tables for operator recognition.
  6.  */
  7.  
  8. struct optab state0[] = {       /* initial state */
  9.    { ',', A_Immret, (char *) &toktab[ 59] },      /* ","     */
  10.    { '.', A_Immret, (char *) &toktab[ 63] },      /* "."     */
  11.    { '[', A_Immret, (char *) &toktab[ 70] },      /* "["     */
  12.    { ']', A_Immret, (char *) &toktab[ 99] },      /* "]"     */
  13.    { '(', A_Immret, (char *) &toktab[ 79] },      /* "("     */
  14.    { ')', A_Immret, (char *) &toktab[100] },      /* ")"     */
  15.    { ';', A_Immret, (char *) &toktab[101] },      /* ";"     */
  16.    { '{', A_Immret, (char *) &toktab[ 69] },      /* "{"     */
  17.    { '}', A_Immret, (char *) &toktab[ 98] },      /* "}"     */
  18.    { '!', A_Immret, (char *) &toktab[ 54] },      /* "!"     */
  19.    { '\\', A_Immret, (char *) &toktab[ 53] },      /* "\\"    */
  20.    { ':', A_Goto,   (char *) state1       },      /* ":" ... */
  21.    { '<', A_Goto,   (char *) state2       },      /* "<" ... */
  22.    { '>', A_Goto,   (char *) state4       },      /* ">" ... */
  23.    { '=', A_Goto,   (char *) state5       },      /* "=" ... */
  24.    { '|', A_Goto,   (char *) state3       },      /* "|" ... */
  25. #if EBCDIC
  26.    { 0x6a, A_Goto,   (char *) state3       },      /* "|" ... */
  27. #endif                    /* EBCDIC */
  28.    { '+', A_Goto,   (char *) state7       },      /* "+" ... */
  29.    { '-', A_Goto,   (char *) state8       },      /* "-" ... */
  30.    { '*', A_Goto,   (char *) state9       },      /* "*" ... */
  31.    { '^', A_Goto,   (char *) state6       },      /* "^" ... */
  32.    { '~', A_Goto,   (char *) state29      },      /* "~" ... */
  33.    { '/', A_Goto,   (char *) state21      },      /* "/" ... */
  34.    { '%', A_Goto,   (char *) state30      },      /* "%" ... */
  35.    { '?', A_Goto,   (char *) state36      },      /* "?" ... */
  36.    { '&', A_Goto,   (char *) state38      },      /* "&" ... */
  37.    { '@', A_Goto,   (char *) state40      },      /* "@" ... */
  38.    { '$', A_Goto,   (char *) state62      },      /* "$" ... */
  39.    { 0,   A_Error,  0            }
  40.    };
  41.  
  42. struct optab state1[] = {       /* ":" */
  43.    { '=', A_Goto,   (char *) state10      },      /* ":=" ... */
  44.    { 0,   A_Return, (char *) &toktab[ 58] }       /* ":"      */
  45.    };
  46.  
  47. struct optab state2[] = {       /* "<" */
  48.    { '-', A_Goto,   (char *) state11      },      /* "<-" ... */
  49.    { '<', A_Goto,   (char *) state32      },      /* "<<" ... */
  50.    { ':', A_Goto,   (char *) state46      },      /* "<:" ... */
  51.    { '=', A_Goto,   (char *) state56      },      /* "<=" ... */
  52.    { 0,   A_Return, (char *) &toktab[ 90] }       /* "<"      */
  53.    };
  54.  
  55. struct optab state3[] = {       /* "|" */
  56.    { '|', A_Goto,   (char *) state22      },      /* "||" ... */
  57. #if EBCDIC
  58.    { 0x6a, A_Goto,   (char *) state22      },      /* "|" ... */
  59. #endif                    /* EBCDIC */
  60.    { 0,   A_Return, (char *) &toktab[ 55] }       /* "|"      */
  61.    };
  62.  
  63. struct optab state4[] = {       /* ">" */
  64.    { '>', A_Goto,   (char *) state33      },      /* ">>" ... */
  65.    { ':', A_Goto,   (char *) state44      },      /* ">:" ... */
  66.    { '=', A_Goto,   (char *) state57      },      /* ">=" ... */
  67.    { 0,   A_Return, (char *) &toktab[ 88] }       /* ">"      */
  68.    };
  69.  
  70. struct optab state5[] = {        /* "=" */
  71.    { '=', A_Goto,   (char *) state12      },      /* "==" ... */
  72.    { ':', A_Goto,   (char *) state42      },      /* "=:" ... */
  73.    { 0,   A_Return, (char *) &toktab[ 86] }       /* "="      */
  74.    };
  75.  
  76. struct optab state6[] = {        /* "^" */
  77.    { ':', A_Goto,   (char *) state23      },      /* "^:" ... */
  78.    { 0,   A_Return, (char *) &toktab[ 56] }       /* "^"      */
  79.    };
  80.  
  81. struct optab state7[] = {       /* "+" */
  82.    { ':', A_Goto,   (char *) state15      },      /* "+:" ... */
  83.    { '+', A_Goto,   (char *) state16      },      /* "++" ... */
  84.    { 0,   A_Return, (char *) &toktab[ 93] }       /* "+"      */
  85.    };
  86.  
  87. struct optab state8[] = {        /* "-" */
  88.    { ':', A_Goto,   (char *) state17      },      /* "-:" ... */
  89.    { '-', A_Goto,   (char *) state18      },      /* "--" ... */
  90.    { 0,   A_Return, (char *) &toktab[ 81] }       /* "-"      */
  91.    };
  92.  
  93. struct optab state9[] = {        /* "*" */
  94.    { ':', A_Goto,   (char *) state19      },      /* "*:" ... */
  95.    { '*', A_Goto,   (char *) state20      },      /* "**" ... */
  96.    { 0,   A_Return, (char *) &toktab[105] }       /* "*"      */
  97.    };
  98.  
  99. struct optab state10[] = {       /* ":=" */
  100.    { ':', A_Immret, (char *) &toktab[107] },      /* ":=:" */
  101.    { 0,   A_Return, (char *) &toktab[ 35] }       /* ":="  */
  102.    };
  103.  
  104. struct optab state11[] = {       /* "<-" */
  105.    { '>', A_Immret, (char *) &toktab[ 97] },      /* "<->" */
  106.    { 0,   A_Return, (char *) &toktab[ 96] }       /* "<-"  */
  107.    };
  108.  
  109. struct optab state12[] = {       /* "==" */
  110.    { '=', A_Goto,   (char *) state61      },      /* "===" ... */
  111.    { ':', A_Goto,   (char *) state48      },      /* "==:" ... */
  112.    { 0,   A_Return, (char *) &toktab[ 73] }       /* "=="  */
  113.    };
  114.  
  115. struct optab state13[] = {       /* "~=" */
  116.    { '=', A_Goto,   (char *) state14      },      /* "~==" ... */
  117.    { ':', A_Goto,   (char *) state43      },      /* "~=:" ... */
  118.    { 0,   A_Return, (char *) &toktab[ 91] }       /* "~="      */
  119.    };
  120.  
  121. struct optab state14[] = {       /* "~==" */
  122.    { ':', A_Goto,   (char *) state49      },      /* "~==:" ... */
  123.    { '=', A_Goto,   (char *) state60      },      /* "~===" ... */
  124.    { 0,   A_Return, (char *) &toktab[ 78] }       /* "~=="  */
  125.    };
  126.  
  127. struct optab state15[] = {       /* "+:" */
  128.    { '=', A_Immret, (char *) &toktab[ 94] },      /* "+:=" */
  129.    { 0,   A_Return, (char *) &toktab[ 92] }       /* "+:"  */
  130.    };
  131.  
  132. struct optab state16[] = {       /* "++" */
  133.    { ':', A_Goto,   (char *) state24      },      /* "++:" ... */
  134.    { 0,   A_Return, (char *) &toktab[109] }       /* "++"      */
  135.    };
  136.  
  137. struct optab state17[] = {       /* "-:" */
  138.    { '=', A_Immret, (char *) &toktab[ 82] },      /* "-:=" */
  139.    { 0,   A_Return, (char *) &toktab[ 80] }       /* "-:"  */
  140.    };
  141.  
  142. struct optab state18[] = {       /* "--" */
  143.    { ':', A_Goto,   (char *) state25      },      /* "--:" ... */
  144.    { 0,   A_Return, (char *) &toktab[ 64] }       /* "--" */
  145.    };
  146.  
  147. struct optab state19[] = {      /* "*:" */
  148.    { '=', A_Immret, (char *) &toktab[106] },      /* "*:=" */
  149.    { 0,   A_Error,  0            }
  150.    };
  151.  
  152. struct optab state20[] = {       /* "**" */
  153.    { ':', A_Goto,   (char *) state26      },      /* "**:" ... */
  154.    { 0,   A_Return, (char *) &toktab[ 67] }       /* "**"      */
  155.    };
  156.  
  157. struct optab state21[] = {       /* "/" */
  158.    { ':', A_Goto,   (char *) state27      },      /* "/:" ... */
  159.    { 0,   A_Return, (char *) &toktab[103] }       /* "/"      */
  160.    };
  161.  
  162. struct optab state22[] = {       /* "||" */
  163.    { ':', A_Goto,   (char *) state28      },      /* "||:" ... */
  164.    { '|', A_Goto,   (char *) state34      },      /* "|||" ... */
  165. #if EBCDIC
  166.    { 0x6a, A_Goto,   (char *) state34      },      /* "|" ... */
  167. #endif                    /* EBCDIC */
  168.    { 0,   A_Return, (char *) &toktab[ 60] }       /* "||"      */
  169.    };
  170.  
  171. struct optab state23[] = {       /* "^:" */
  172.    { '=', A_Immret, (char *) &toktab[ 57] },      /* "^:=" */
  173.    { 0,   A_Error,  0            }
  174.    };
  175.  
  176. struct optab state24[] = {       /* "++:" */
  177.    { '=', A_Immret, (char *) &toktab[110] },      /* "++:=" */
  178.    { 0,   A_Error,  0            }
  179.    };
  180.  
  181. struct optab state25[] = {       /* "--:" */
  182.    { '=', A_Immret, (char *) &toktab[ 65] },      /* "--:=" */
  183.    { 0,   A_Error,  0            }
  184.    };
  185.  
  186. struct optab state26[] = {       /* "**:" */
  187.    { '=', A_Immret, (char *) &toktab[ 68] },      /* "**:=" */
  188.    { 0,   A_Error,  0            }
  189.    };
  190.  
  191. struct optab state27[] = {       /* "/:" */
  192.    { '=', A_Immret, (char *) &toktab[104] },      /* "/:=" */
  193.    { 0,   A_Error,  0            }
  194.    };
  195.  
  196. struct optab state28[] = {      /* "||:" */
  197.    { '=', A_Immret, (char *) &toktab[ 61] },      /* "||:=" */
  198.    { 0,   A_Error,  0            }
  199.    };
  200.  
  201. struct optab state29[] = {       /* "~" */
  202.    { '=', A_Goto,   (char *) state13      },      /* "~=" ... */
  203.    { 0,   A_Return, (char *) &toktab[108] }       /* "~"      */
  204.    };
  205.  
  206. struct optab state30[] = {       /* "%" */
  207.    { ':', A_Goto,   (char *) state31      },      /* "%:" ... */
  208.    { 0,   A_Return, (char *) &toktab[ 83] }       /* "%"      */
  209.    };
  210.  
  211. struct optab state31[] = {       /* "%:" */
  212.    { '=', A_Immret, (char *) &toktab[ 84] },      /* "%:=" */
  213.    { 0,   A_Error,  0            }
  214.    };
  215.  
  216. struct optab state32[] = {       /* "<<" */
  217.    { ':', A_Goto,   (char *) state52      },      /* "<<:" ... */
  218.    { '=', A_Goto,   (char *) state58      },      /* "<<=" ... */
  219.    { 0,   A_Return, (char *) &toktab[ 77] }       /* "<<"     */
  220.    };
  221.  
  222. struct optab state33[] = {       /* ">>" */
  223.    { ':', A_Goto,   (char *) state50      },      /* ">>:" ... */
  224.    { '=', A_Goto,   (char *) state59      },      /* ">>=" ... */
  225.    { 0,   A_Return, (char *) &toktab[ 75] }       /* ">>"     */
  226.    };
  227.  
  228. struct optab state34[] = {       /* "|||" */
  229.    { ':', A_Goto,   (char *) state35      },      /* "|||:" ... */
  230.    { 0,   A_Return, (char *) &toktab[ 71] }       /* "|||"      */
  231.    };
  232.  
  233. struct optab state35[] = {       /* "|||:" */
  234.    { '=', A_Immret, (char *) &toktab[ 72] },      /* "|||:=" */
  235.    { 0,   A_Error,  0            }
  236.    };
  237.  
  238. struct optab state36[] = {        /* "?" */
  239.    { ':', A_Goto,   (char *) state37      },      /* "?:" ... */
  240.    { 0,   A_Return, (char *) &toktab[ 95] }       /* "?"      */
  241.    };
  242.  
  243. struct optab state37[] = {       /* "?:" */
  244.    { '=', A_Immret, (char *) &toktab[102] },      /* "?:=" */
  245.    { 0,   A_Error,  0            }
  246.    };
  247.  
  248. struct optab state38[] = {        /* "&" */
  249.    { ':', A_Goto,   (char *) state39      },      /* "&:" ... */
  250.    { 0,   A_Return, (char *) &toktab[ 62] }       /* "&"      */
  251.    };
  252.  
  253. struct optab state39[] = {       /* "&:" */
  254.    { '=', A_Immret, (char *) &toktab[ 38] },      /* "&:=" */
  255.    { 0,   A_Error,  0            }
  256.    };
  257.  
  258. struct optab state40[] = {        /* "@" */
  259.    { ':', A_Goto,   (char *) state41      },      /* "@:" ... */
  260.    { 0,   A_Return, (char *) &toktab[ 36] }       /* "@"      */
  261.    };
  262.  
  263. struct optab state41[] = {      /* "@:" */
  264.    { '=', A_Immret, (char *) &toktab[ 37] },      /* "@:=" */
  265.    { 0,   A_Error,  0            }
  266.    };
  267.  
  268. struct optab state42[] = {       /* "=:" */
  269.    { '=', A_Immret, (char *) &toktab[ 39] },      /* "=:=" */
  270.    { 0,   A_Error,  0            }
  271.    };
  272.  
  273. struct optab state43[] = {       /* "~=:" */
  274.    { '=', A_Immret, (char *) &toktab[ 45] },      /* "~=:=" */
  275.    { 0,   A_Error,  0            }
  276.    };
  277.  
  278. struct optab state44[] = {       /* ">:" */
  279.    { '=', A_Immret, (char *) &toktab[ 42] },      /* ">:=" */
  280.    { 0,   A_Error,  0            }
  281.    };
  282.  
  283. struct optab state45[] = {       /* ">=:" */
  284.    { '=', A_Immret, (char *) &toktab[ 41] },      /* ">=:=" */
  285.    { 0,   A_Error,  0            }
  286.    };
  287.  
  288. struct optab state46[] = {      /* "<:" */
  289.    { '=', A_Immret, (char *) &toktab[ 44] },      /* "<:=" */
  290.    { 0,   A_Error,  0            }
  291.    };
  292.  
  293. struct optab state47[] = {       /* "<=:" */
  294.    { '=', A_Immret, (char *) &toktab[ 43] },      /* "<=:=" */
  295.    { 0,   A_Error,  0            }
  296.    };
  297.  
  298. struct optab state48[] = {       /* "==:" */
  299.    { '=', A_Immret, (char *) &toktab[ 47] },      /* "==:=" */
  300.    { 0,   A_Error,  0            }
  301.    };
  302.  
  303. struct optab state49[] = {       /* "~==:" */
  304.    { '=', A_Immret, (char *) &toktab[ 52] },      /* "~==:=" */
  305.    { 0,   A_Error,  0            }
  306.    };
  307.  
  308. struct optab state50[] = {      /* ">>:" */
  309.    { '=', A_Immret, (char *) &toktab[ 49] },      /* ">>:=" */
  310.    { 0,   A_Error,  0            }
  311.    };
  312.  
  313. struct optab state51[] = {       /* ">>=:" */
  314.    { '=', A_Immret, (char *) &toktab[ 48] },      /* ">>=:=" */
  315.    { 0,   A_Error,  0            }
  316.    };
  317.  
  318. struct optab state52[] = {       /* "<<:" */
  319.    { '=', A_Immret, (char *) &toktab[ 51] },      /* "<<:=" */
  320.    { 0,   A_Error,  0            }
  321.    };
  322.  
  323. struct optab state53[] = {       /* "<<=:" */
  324.    { '=', A_Immret, (char *) &toktab[ 50] },      /* "<<=:=" */
  325.    { 0,   A_Error,  0            }
  326.    };
  327.  
  328. struct optab state54[] = {      /* "===:" */
  329.    { '=', A_Immret, (char *) &toktab[ 40] },      /* "===:=" */
  330.    { 0,   A_Error,  0            }
  331.    };
  332.  
  333. struct optab state55[] = {       /* "~===:" */
  334.    { '=', A_Immret, (char *) &toktab[ 46] },      /* "~===:=" */
  335.    { 0,   A_Error,  0            }
  336.    };
  337.  
  338. struct optab state56[] = {        /* "<=" */
  339.    { ':', A_Goto,   (char *) state47      },      /* "<=:" ... */
  340.    { 0,   A_Return, (char *) &toktab[ 89] }       /* "<="      */
  341.    };
  342.  
  343. struct optab state57[] = {        /* ">=" */
  344.    { ':', A_Goto,   (char *) state45      },      /* ">=:" ... */
  345.    { 0,   A_Return, (char *) &toktab[ 87] }       /* ">="      */
  346.    };
  347.  
  348. struct optab state58[] = {        /* "<<=" */
  349.    { ':', A_Goto,   (char *) state53      },      /* "<<=:" ... */
  350.    { 0,   A_Return, (char *) &toktab[ 76] }       /* "<<="      */
  351.    };
  352.  
  353. struct optab state59[] = {       /* ">>=" */
  354.    { ':', A_Goto,   (char *) state51     },      /* ">>=:" ... */
  355.    { 0,   A_Return, (char *) &toktab[ 74] }       /* ">>="      */
  356.    };
  357.  
  358. struct optab state60[] = {        /* "~===" */
  359.    { ':', A_Goto,   (char *) state55      },      /* "~===:" ... */
  360.    { 0,   A_Return, (char *) &toktab[ 85] }       /* "~==="      */
  361.    };
  362.  
  363. struct optab state61[] = {        /* "===" */
  364.    { ':', A_Goto,   (char *) state54      },      /* "===:" ... */
  365.    { 0,   A_Return, (char *) &toktab[ 66] }       /* "==="      */
  366.    };
  367.  
  368. struct optab state62[] = {        /* "$" */
  369.    { '(', A_Immret,   (char *) &toktab[111] },      /* "$(" */
  370.    { ')', A_Immret,   (char *) &toktab[112] },      /* "$)" */
  371.    { '<', A_Immret,   (char *) &toktab[113] },      /* "$<" */
  372.    { '>', A_Immret,   (char *) &toktab[114] },      /* "$>" */
  373.    { 0,   A_Error,  0            }
  374.    };
  375.