#include "..\h\config.h"
#include "tlex.h"

/*
 * State tables for operator recognition.
 */

struct optab state0[] = {       /* initial state */
   { ',', A_Immret, (char *) &toktab[ 58] },      /* ","     */
   { '.', A_Immret, (char *) &toktab[ 62] },      /* "."     */
   { '[', A_Immret, (char *) &toktab[ 69] },      /* "["     */
   { ']', A_Immret, (char *) &toktab[ 98] },      /* "]"     */
   { '(', A_Immret, (char *) &toktab[ 78] },      /* "("     */
   { ')', A_Immret, (char *) &toktab[ 99] },      /* ")"     */
   { ';', A_Immret, (char *) &toktab[100] },      /* ";"     */
   { '{', A_Immret, (char *) &toktab[ 68] },      /* "{"     */
   { '}', A_Immret, (char *) &toktab[ 97] },      /* "}"     */
   { '!', A_Immret, (char *) &toktab[ 53] },      /* "!"     */
   { '\\', A_Immret, (char *) &toktab[ 52] },      /* "\\"    */
   { ':', A_Goto,   (char *) state1       },      /* ":" ... */
   { '<', A_Goto,   (char *) state2       },      /* "<" ... */
   { '>', A_Goto,   (char *) state4       },      /* ">" ... */
   { '=', A_Goto,   (char *) state5       },      /* "=" ... */
   { '|', A_Goto,   (char *) state3       },      /* "|" ... */
   { '+', A_Goto,   (char *) state7       },      /* "+" ... */
   { '-', A_Goto,   (char *) state8       },      /* "-" ... */
   { '*', A_Goto,   (char *) state9       },      /* "*" ... */
   { '^', A_Goto,   (char *) state6       },      /* "^" ... */
   { '~', A_Goto,   (char *) state29      },      /* "~" ... */
   { '/', A_Goto,   (char *) state21      },      /* "/" ... */
   { '%', A_Goto,   (char *) state30      },      /* "%" ... */
   { '?', A_Goto,   (char *) state36      },      /* "?" ... */
   { '&', A_Goto,   (char *) state38      },      /* "&" ... */
   { '@', A_Goto,   (char *) state40      },      /* "@" ... */
   { '$', A_Goto,   (char *) state62      },      /* "$" ... */
   { 0,   A_Error,  0            }
   };

struct optab state1[] = {       /* ":" */
   { '=', A_Goto,   (char *) state10      },      /* ":=" ... */
   { 0,   A_Return, (char *) &toktab[ 57] }       /* ":"      */
   };

struct optab state2[] = {       /* "<" */
   { '-', A_Goto,   (char *) state11      },      /* "<-" ... */
   { '<', A_Goto,   (char *) state32      },      /* "<<" ... */
   { ':', A_Goto,   (char *) state46      },      /* "<:" ... */
   { '=', A_Goto,   (char *) state56      },      /* "<=" ... */
   { 0,   A_Return, (char *) &toktab[ 89] }       /* "<"      */
   };

struct optab state3[] = {       /* "|" */
   { '|', A_Goto,   (char *) state22      },      /* "||" ... */
   { 0,   A_Return, (char *) &toktab[ 54] }       /* "|"      */
   };

struct optab state4[] = {       /* ">" */
   { '>', A_Goto,   (char *) state33      },      /* ">>" ... */
   { ':', A_Goto,   (char *) state44      },      /* ">:" ... */
   { '=', A_Goto,   (char *) state57      },      /* ">=" ... */
   { 0,   A_Return, (char *) &toktab[ 87] }       /* ">"      */
   };

struct optab state5[] = {        /* "=" */
   { '=', A_Goto,   (char *) state12      },      /* "==" ... */
   { ':', A_Goto,   (char *) state42      },      /* "=:" ... */
   { 0,   A_Return, (char *) &toktab[ 85] }       /* "="      */
   };

struct optab state6[] = {        /* "^" */
   { ':', A_Goto,   (char *) state23      },      /* "^:" ... */
   { 0,   A_Return, (char *) &toktab[ 55] }       /* "^"      */
   };

struct optab state7[] = {       /* "+" */
   { ':', A_Goto,   (char *) state15      },      /* "+:" ... */
   { '+', A_Goto,   (char *) state16      },      /* "++" ... */
   { 0,   A_Return, (char *) &toktab[ 92] }       /* "+"      */
   };

struct optab state8[] = {        /* "-" */
   { ':', A_Goto,   (char *) state17      },      /* "-:" ... */
   { '-', A_Goto,   (char *) state18      },      /* "--" ... */
   { 0,   A_Return, (char *) &toktab[ 80] }       /* "-"      */
   };

struct optab state9[] = {        /* "*" */
   { ':', A_Goto,   (char *) state19      },      /* "*:" ... */
   { '*', A_Goto,   (char *) state20      },      /* "**" ... */
   { 0,   A_Return, (char *) &toktab[104] }       /* "*"      */
   };

struct optab state10[] = {       /* ":=" */
   { ':', A_Immret, (char *) &toktab[106] },      /* ":=:" */
   { 0,   A_Return, (char *) &toktab[ 34] }       /* ":="  */
   };

struct optab state11[] = {       /* "<-" */
   { '>', A_Immret, (char *) &toktab[ 96] },      /* "<->" */
   { 0,   A_Return, (char *) &toktab[ 95] }       /* "<-"  */
   };

struct optab state12[] = {       /* "==" */
   { '=', A_Goto,   (char *) state61      },      /* "===" ... */
   { ':', A_Goto,   (char *) state48      },      /* "==:" ... */
   { 0,   A_Return, (char *) &toktab[ 72] }       /* "=="  */
   };

struct optab state13[] = {       /* "~=" */
   { '=', A_Goto,   (char *) state14      },      /* "~==" ... */
   { ':', A_Goto,   (char *) state43      },      /* "~=:" ... */
   { 0,   A_Return, (char *) &toktab[ 90] }       /* "~="      */
   };

struct optab state14[] = {       /* "~==" */
   { ':', A_Goto,   (char *) state49      },      /* "~==:" ... */
   { '=', A_Goto,   (char *) state60      },      /* "~===" ... */
   { 0,   A_Return, (char *) &toktab[ 77] }       /* "~=="  */
   };

struct optab state15[] = {       /* "+:" */
   { '=', A_Immret, (char *) &toktab[ 93] },      /* "+:=" */
   { 0,   A_Return, (char *) &toktab[ 91] }       /* "+:"  */
   };

struct optab state16[] = {       /* "++" */
   { ':', A_Goto,   (char *) state24      },      /* "++:" ... */
   { 0,   A_Return, (char *) &toktab[108] }       /* "++"      */
   };

struct optab state17[] = {       /* "-:" */
   { '=', A_Immret, (char *) &toktab[ 81] },      /* "-:=" */
   { 0,   A_Return, (char *) &toktab[ 79] }       /* "-:"  */
   };

struct optab state18[] = {       /* "--" */
   { ':', A_Goto,   (char *) state25      },      /* "--:" ... */
   { 0,   A_Return, (char *) &toktab[ 63] }       /* "--" */
   };

struct optab state19[] = {      /* "*:" */
   { '=', A_Immret, (char *) &toktab[105] },      /* "*:=" */
   { 0,   A_Error,  0            }
   };

struct optab state20[] = {       /* "**" */
   { ':', A_Goto,   (char *) state26      },      /* "**:" ... */
   { 0,   A_Return, (char *) &toktab[ 66] }       /* "**"      */
   };

struct optab state21[] = {       /* "/" */
   { ':', A_Goto,   (char *) state27      },      /* "/:" ... */
   { 0,   A_Return, (char *) &toktab[102] }       /* "/"      */
   };

struct optab state22[] = {       /* "||" */
   { ':', A_Goto,   (char *) state28      },      /* "||:" ... */
   { '|', A_Goto,   (char *) state34      },      /* "|||" ... */
   { 0,   A_Return, (char *) &toktab[ 59] }       /* "||"      */
   };

struct optab state23[] = {       /* "^:" */
   { '=', A_Immret, (char *) &toktab[ 56] },      /* "^:=" */
   { 0,   A_Error,  0            }
   };

struct optab state24[] = {       /* "++:" */
   { '=', A_Immret, (char *) &toktab[109] },      /* "++:=" */
   { 0,   A_Error,  0            }
   };

struct optab state25[] = {       /* "--:" */
   { '=', A_Immret, (char *) &toktab[ 64] },      /* "--:=" */
   { 0,   A_Error,  0            }
   };

struct optab state26[] = {       /* "**:" */
   { '=', A_Immret, (char *) &toktab[ 67] },      /* "**:=" */
   { 0,   A_Error,  0            }
   };

struct optab state27[] = {       /* "/:" */
   { '=', A_Immret, (char *) &toktab[103] },      /* "/:=" */
   { 0,   A_Error,  0            }
   };

struct optab state28[] = {      /* "||:" */
   { '=', A_Immret, (char *) &toktab[ 60] },      /* "||:=" */
   { 0,   A_Error,  0            }
   };

struct optab state29[] = {       /* "~" */
   { '=', A_Goto,   (char *) state13      },      /* "~=" ... */
   { 0,   A_Return, (char *) &toktab[107] }       /* "~"      */
   };

struct optab state30[] = {       /* "%" */
   { ':', A_Goto,   (char *) state31      },      /* "%:" ... */
   { 0,   A_Return, (char *) &toktab[ 82] }       /* "%"      */
   };

struct optab state31[] = {       /* "%:" */
   { '=', A_Immret, (char *) &toktab[ 83] },      /* "%:=" */
   { 0,   A_Error,  0            }
   };

struct optab state32[] = {       /* "<<" */
   { ':', A_Goto,   (char *) state52      },      /* "<<:" ... */
   { '=', A_Goto,   (char *) state58      },      /* "<<=" ... */
   { 0,   A_Return, (char *) &toktab[ 76] }       /* "<<"     */
   };

struct optab state33[] = {       /* ">>" */
   { ':', A_Goto,   (char *) state50      },      /* ">>:" ... */
   { '=', A_Goto,   (char *) state59      },      /* ">>=" ... */
   { 0,   A_Return, (char *) &toktab[ 74] }       /* ">>"     */
   };

struct optab state34[] = {       /* "|||" */
   { ':', A_Goto,   (char *) state35      },      /* "|||:" ... */
   { 0,   A_Return, (char *) &toktab[ 70] }       /* "|||"      */
   };

struct optab state35[] = {       /* "|||:" */
   { '=', A_Immret, (char *) &toktab[ 71] },      /* "|||:=" */
   { 0,   A_Error,  0            }
   };

struct optab state36[] = {        /* "?" */
   { ':', A_Goto,   (char *) state37      },      /* "?:" ... */
   { 0,   A_Return, (char *) &toktab[ 94] }       /* "?"      */
   };

struct optab state37[] = {       /* "?:" */
   { '=', A_Immret, (char *) &toktab[101] },      /* "?:=" */
   { 0,   A_Error,  0            }
   };

struct optab state38[] = {        /* "&" */
   { ':', A_Goto,   (char *) state39      },      /* "&:" ... */
   { 0,   A_Return, (char *) &toktab[ 61] }       /* "&"      */
   };

struct optab state39[] = {       /* "&:" */
   { '=', A_Immret, (char *) &toktab[ 37] },      /* "&:=" */
   { 0,   A_Error,  0            }
   };

struct optab state40[] = {        /* "@" */
   { ':', A_Goto,   (char *) state41      },      /* "@:" ... */
   { 0,   A_Return, (char *) &toktab[ 35] }       /* "@"      */
   };

struct optab state41[] = {      /* "@:" */
   { '=', A_Immret, (char *) &toktab[ 36] },      /* "@:=" */
   { 0,   A_Error,  0            }
   };

struct optab state42[] = {       /* "=:" */
   { '=', A_Immret, (char *) &toktab[ 38] },      /* "=:=" */
   { 0,   A_Error,  0            }
   };

struct optab state43[] = {       /* "~=:" */
   { '=', A_Immret, (char *) &toktab[ 44] },      /* "~=:=" */
   { 0,   A_Error,  0            }
   };

struct optab state44[] = {       /* ">:" */
   { '=', A_Immret, (char *) &toktab[ 41] },      /* ">:=" */
   { 0,   A_Error,  0            }
   };

struct optab state45[] = {       /* ">=:" */
   { '=', A_Immret, (char *) &toktab[ 40] },      /* ">=:=" */
   { 0,   A_Error,  0            }
   };

struct optab state46[] = {      /* "<:" */
   { '=', A_Immret, (char *) &toktab[ 43] },      /* "<:=" */
   { 0,   A_Error,  0            }
   };

struct optab state47[] = {       /* "<=:" */
   { '=', A_Immret, (char *) &toktab[ 42] },      /* "<=:=" */
   { 0,   A_Error,  0            }
   };

struct optab state48[] = {       /* "==:" */
   { '=', A_Immret, (char *) &toktab[ 46] },      /* "==:=" */
   { 0,   A_Error,  0            }
   };

struct optab state49[] = {       /* "~==:" */
   { '=', A_Immret, (char *) &toktab[ 51] },      /* "~==:=" */
   { 0,   A_Error,  0            }
   };

struct optab state50[] = {      /* ">>:" */
   { '=', A_Immret, (char *) &toktab[ 48] },      /* ">>:=" */
   { 0,   A_Error,  0            }
   };

struct optab state51[] = {       /* ">>=:" */
   { '=', A_Immret, (char *) &toktab[ 47] },      /* ">>=:=" */
   { 0,   A_Error,  0            }
   };

struct optab state52[] = {       /* "<<:" */
   { '=', A_Immret, (char *) &toktab[ 50] },      /* "<<:=" */
   { 0,   A_Error,  0            }
   };

struct optab state53[] = {       /* "<<=:" */
   { '=', A_Immret, (char *) &toktab[ 49] },      /* "<<=:=" */
   { 0,   A_Error,  0            }
   };

struct optab state54[] = {      /* "===:" */
   { '=', A_Immret, (char *) &toktab[ 39] },      /* "===:=" */
   { 0,   A_Error,  0            }
   };

struct optab state55[] = {       /* "~===:" */
   { '=', A_Immret, (char *) &toktab[ 45] },      /* "~===:=" */
   { 0,   A_Error,  0            }
   };

struct optab state56[] = {        /* "<=" */
   { ':', A_Goto,   (char *) state47      },      /* "<=:" ... */
   { 0,   A_Return, (char *) &toktab[ 88] }       /* "<="      */
   };

struct optab state57[] = {        /* ">=" */
   { ':', A_Goto,   (char *) state45      },      /* ">=:" ... */
   { 0,   A_Return, (char *) &toktab[ 86] }       /* ">="      */
   };

struct optab state58[] = {        /* "<<=" */
   { ':', A_Goto,   (char *) state53      },      /* "<<=:" ... */
   { 0,   A_Return, (char *) &toktab[ 75] }       /* "<<="      */
   };

struct optab state59[] = {       /* ">>=" */
   { ':', A_Goto,   (char *) state51     },      /* ">>=:" ... */
   { 0,   A_Return, (char *) &toktab[ 73] }       /* ">>="      */
   };

struct optab state60[] = {        /* "~===" */
   { ':', A_Goto,   (char *) state55      },      /* "~===:" ... */
   { 0,   A_Return, (char *) &toktab[ 84] }       /* "~==="      */
   };

struct optab state61[] = {        /* "===" */
   { ':', A_Goto,   (char *) state54      },      /* "===:" ... */
   { 0,   A_Return, (char *) &toktab[ 65] }       /* "==="      */
   };

struct optab state62[] = {        /* "$" */
   { '(', A_Immret,   (char *) &toktab[110] },      /* "$(" */
   { ')', A_Immret,   (char *) &toktab[111] },      /* "$)" */
   { '<', A_Immret,   (char *) &toktab[112] },      /* "$<" */
   { '>', A_Immret,   (char *) &toktab[113] },      /* "$>" */
   { 0,   A_Error,  0            }
   };
