//
// File: Cego.h
// This code was produced by the dragon parser generator
//
#include <lfc/Exception.h>
#include <lfc/Chain.h>
#include <lfc/ListT.h>
#define MAXTOKENVAL 100

class Cego
{

public:

   Cego();
   ~Cego();

   void parse();
   ListT<Chain>& getTokenList() { return _tokenList; }

protected:

   virtual char nextChar() = 0;
   virtual void backChar() = 0;
   virtual void execSync() = 0;
   virtual void execListTableSet() = 0;
   virtual void execListTable() = 0;
   virtual void execListProc() = 0;
   virtual void execListView() = 0;
   virtual void execListIndex() = 0;
   virtual void execListBTree() = 0;
   virtual void execListKey() = 0;
   virtual void execListCounter() = 0;
   virtual void execListSysObj() = 0;
   virtual void execListTmpObj() = 0;
   virtual void execListCheck() = 0;
   virtual void setTableSetOpt() = 0;
   virtual void execTableInfo() = 0;
   virtual void execShowPool() = 0;
   virtual void execShowSystemSpace() = 0;
   virtual void execTableDesc() = 0;
   virtual void execIndexDesc() = 0;
   virtual void execBTreeDesc() = 0;
   virtual void execViewDesc() = 0;
   virtual void execKeyDesc() = 0;
   virtual void execCheckDesc() = 0;
   virtual void execProcDesc() = 0;
   virtual void execProcShow() = 0;
   virtual void execViewShow() = 0;
   virtual void execCheckShow() = 0;
   virtual void execSetTableSet() = 0;
   virtual void execAuthUser() = 0;
   virtual void execEnableAppendMode() = 0;
   virtual void execDisableAppendMode() = 0;
   virtual void execEnableAutoCommit() = 0;
   virtual void execDisableAutoCommit() = 0;
   virtual void execSetIsolation() = 0;
   virtual void execEnableQueryCache() = 0;
   virtual void execDisableQueryCache() = 0;
   virtual void execTableReorganize() = 0;
   virtual void execIndexReorganize() = 0;
   virtual void execSelect() = 0;
   virtual void execSelectPlan() = 0;
   virtual void execQuery() = 0;
   virtual void execViewCreate() = 0;
   virtual void execViewLoad() = 0;
   virtual void execProcCreate() = 0;
   virtual void execProcLoad() = 0;
   virtual void execProcCall() = 0;
   virtual void execFuncCall() = 0;
   virtual void execUserTableCreate() = 0;
   virtual void execPrimaryIndexCreate() = 0;
   virtual void execIndexCreate() = 0;
   virtual void execTableDrop() = 0;
   virtual void execIndexDrop() = 0;
   virtual void execViewDrop() = 0;
   virtual void execProcDrop() = 0;
   virtual void execFKeyDrop() = 0;
   virtual void execCheckDrop() = 0;
   virtual void execBTreeDrop() = 0;
   virtual void dropOpt1() = 0;
   virtual void dropOpt2() = 0;
   virtual void execForeignKeyCreate() = 0;
   virtual void execCheckCreate() = 0;
   virtual void execAssignStatement() = 0;
   virtual void execPrint() = 0;
   virtual void execIndexCheck() = 0;
   virtual void execCreateCounter() = 0;
   virtual void execDropCounter() = 0;
   virtual void execSetCounter() = 0;
   virtual void execCounterId() = 0;
   virtual void jdbcInfo() = 0;
   virtual void jdbcArg1() = 0;
   virtual void jdbcArg2() = 0;
   virtual void unionAllStore() = 0;
   virtual void procHead() = 0;
   virtual void procStore() = 0;
   virtual void procReturnOpt() = 0;
   virtual void procArg1() = 0;
   virtual void procArg2() = 0;
   virtual void procStoreBlock() = 0;
   virtual void procVarStatement() = 0;
   virtual void procCursorCreateStatement() = 0;
   virtual void procCursorCloseStatement() = 0;
   virtual void procAssignStatement() = 0;
   virtual void procAssign2NullStatement() = 0;
   virtual void procNoopStatement() = 0;
   virtual void procInitialAssignment1() = 0;
   virtual void procInitialAssignment2() = 0;
   virtual void procQueryStatement() = 0;
   virtual void procReturnStatement1() = 0;
   virtual void procReturnStatement2() = 0;
   virtual void procBlockStatement() = 0;
   virtual void procBlockStart() = 0;
   virtual void procExceptionStatement() = 0;
   virtual void procValueSpec() = 0;
   virtual void procExprValue() = 0;
   virtual void procExceptionCondition() = 0;
   virtual void procIfStatement() = 0;
   virtual void procStoreIfBlock() = 0;
   virtual void procStoreElseBlock() = 0;
   virtual void procElsePart() = 0;
   virtual void procIfCondition() = 0;
   virtual void procElsIfCondition() = 0;
   virtual void procWhileStatement() = 0;
   virtual void procWhileCondition() = 0;
   virtual void procCondition1() = 0;
   virtual void procCondition2() = 0;
   virtual void procCondition3() = 0;
   virtual void procPredicate1() = 0;
   virtual void procPredicate2() = 0;
   virtual void procPredicate3() = 0;
   virtual void procPredicate4() = 0;
   virtual void procExpr1() = 0;
   virtual void procExpr2() = 0;
   virtual void procExpr3() = 0;
   virtual void procExpr4() = 0;
   virtual void procTerm1() = 0;
   virtual void procTerm2() = 0;
   virtual void procTerm3() = 0;
   virtual void procFactor1() = 0;
   virtual void procFactor2() = 0;
   virtual void procFactor3() = 0;
   virtual void procFactor4() = 0;
   virtual void procFactor5() = 0;
   virtual void procFactor6() = 0;
   virtual void procFactor7() = 0;
   virtual void procFactor8() = 0;
   virtual void procFactor9() = 0;
   virtual void procFactor10() = 0;
   virtual void procFactor11() = 0;
   virtual void procFactor12() = 0;
   virtual void procFactor13() = 0;
   virtual void procFactor14() = 0;
   virtual void caseClause() = 0;
   virtual void caseConditionList1() = 0;
   virtual void caseConditionList2() = 0;
   virtual void caseCondition() = 0;
   virtual void casePrepare() = 0;
   virtual void procStoreFetchArg1() = 0;
   virtual void procStoreFetchArg2() = 0;
   virtual void setPrimaryColumn() = 0;
   virtual void setOrdinaryColumn() = 0;
   virtual void setColumnDesc() = 0;
   virtual void setNotNullOpt() = 0;
   virtual void setNullOpt() = 0;
   virtual void defaultOpt() = 0;
   virtual void defaultNullOpt() = 0;
   virtual void createSimpleAttrList() = 0;
   virtual void createSimpleAttr() = 0;
   virtual void setUniqueIndex() = 0;
   virtual void setAVLIndex() = 0;
   virtual void setBTreeIndex() = 0;
   virtual void startStore() = 0;
   virtual void commitStore() = 0;
   virtual void rollbackStore() = 0;
   virtual void insertStore() = 0;
   virtual void insertBySelectStore() = 0;
   virtual void insertPrepare() = 0;
   virtual void insertValueSpecStoreExecute() = 0;
   virtual void insertArg() = 0;
   virtual void insertExprValue() = 0;
   virtual void selectStore() = 0;
   virtual void selectSelectionStore1() = 0;
   virtual void selectSelectionStore2() = 0;
   virtual void selectionList1() = 0;
   virtual void selectionList2() = 0;
   virtual void selectItem() = 0;
   virtual void selectTableListStore() = 0;
   virtual void selectJoinSpecStore() = 0;
   virtual void selectInnerJoinStore() = 0;
   virtual void selectLeftOuterJoinStore() = 0;
   virtual void selectRightOuterJoinStore() = 0;
   virtual void selectTable1() = 0;
   virtual void selectTable2() = 0;
   virtual void selectStackJoinTable() = 0;
   virtual void aliasOpt() = 0;
   virtual void noAliasOpt() = 0;
   virtual void selectGroupClause() = 0;
   virtual void selectEmptyGroupClause() = 0;
   virtual void selectGroupList1() = 0;
   virtual void selectGroupList2() = 0;
   virtual void selectHavingClause() = 0;
   virtual void selectEmptyHavingClause() = 0;
   virtual void selectOrderingClause() = 0;
   virtual void selectEmptyOrderingClause() = 0;
   virtual void selectOrderingList1() = 0;
   virtual void selectOrderingList2() = 0;
   virtual void selectOrderingAsc() = 0;
   virtual void selectOrderingDesc() = 0;
   virtual void selectDistinctOpt() = 0;
   virtual void selectLimitOpt1() = 0;
   virtual void selectLimitOpt2() = 0;
   virtual void updateStore() = 0;
   virtual void updateAssignment() = 0;
   virtual void returnVarAssignment() = 0;
   virtual void deleteStore() = 0;
   virtual void setUpdDelAlias() = 0;
   virtual void alterStore() = 0;
   virtual void alterDropCol() = 0;
   virtual void alterAddCol() = 0;
   virtual void alterModCol() = 0;
   virtual void alterRenameCol() = 0;
   virtual void renameTable() = 0;
   virtual void renameIndex() = 0;
   virtual void renameKey() = 0;
   virtual void renameProcedure() = 0;
   virtual void renameView() = 0;
   virtual void renameCheck() = 0;
   virtual void functionNative() = 0;
   virtual void functionNextCount() = 0;
   virtual void functionSetCount() = 0;
   virtual void functionUserDef1() = 0;
   virtual void functionUserDef2() = 0;
   virtual void functionExprList1() = 0;
   virtual void functionExprList2() = 0;
   virtual void wcWhereClause() = 0;
   virtual void wcEmptyClause() = 0;
   virtual void wcConditionAnd() = 0;
   virtual void wcConditionOr() = 0;
   virtual void wcConditionPredicate() = 0;
   virtual void wcPredicateQueryExists() = 0;
   virtual void wcPredicateQueryIn() = 0;
   virtual void wcPredicateQueryNotIn() = 0;
   virtual void wcPredicateExprComp() = 0;
   virtual void wcPredicateBetween() = 0;
   virtual void wcPredicateNullComp() = 0;
   virtual void wcPredicateNotNullComp() = 0;
   virtual void wcPredicateLikeComp() = 0;
   virtual void wcPredicateNotLikeComp() = 0;
   virtual void wcPredicateCondition() = 0;
   virtual void wcPredicateNotPredicate() = 0;
   virtual void miscIntType() = 0;
   virtual void miscLongType() = 0;
   virtual void miscStringType() = 0;
   virtual void miscDateTimeType() = 0;
   virtual void miscBoolType() = 0;
   virtual void miscBigIntType() = 0;
   virtual void miscFloatType() = 0;
   virtual void miscDoubleType() = 0;
   virtual void miscSmallIntType() = 0;
   virtual void miscTinyIntType() = 0;
   virtual void miscDecimalType() = 0;
   virtual void miscFixedType() = 0;
   virtual void miscBlobType() = 0;
   virtual void miscEqualComp() = 0;
   virtual void miscNotEqualComp() = 0;
   virtual void miscLessComp() = 0;
   virtual void miscMoreComp() = 0;
   virtual void miscLessEqualComp() = 0;
   virtual void miscMoreEqualComp() = 0;
   virtual void miscAttribute1() = 0;
   virtual void miscAttribute2() = 0;
   virtual void miscAttribute3() = 0;
   virtual void miscIntString() = 0;
   virtual void miscNegatedIntString() = 0;
   virtual void miscFloatString() = 0;
   virtual void miscNegatedFloatString() = 0;
   virtual void miscIntValue() = 0;
   virtual void miscLongValue() = 0;
   virtual void miscBigIntValue() = 0;
   virtual void miscSmallIntValue() = 0;
   virtual void miscTinyIntValue() = 0;
   virtual void miscStringValue() = 0;
   virtual void miscFloatValue() = 0;
   virtual void miscDoubleValue() = 0;
   virtual void miscDecimalValue() = 0;
   virtual void miscFixedValue() = 0;
   virtual void miscFormatDate() = 0;
   virtual void miscSysDate() = 0;
   virtual void miscNull() = 0;
   virtual void miscTrueValue() = 0;
   virtual void miscFalseValue() = 0;
   virtual void miscBlobRef() = 0;
   virtual void miscDateFormat() = 0;
   virtual void miscDateValue() = 0;
   virtual void setObject1() = 0;
   virtual void setObject2() = 0;
   virtual void setObject3() = 0;

   enum Token {
      QUALIFIEDTS,
      QUALIFIEDPRE,
      QUALIFIEDOBJ,
      VARREF,
      IDENTIFIER,
      FLOATVAL,
      INTVAL,
      PLUS,
      MINUS,
      DIVISION,
      STAR,
      SEMICOLON,
      RAB,
      LAB,
      RB,
      NEGATION,
      MT,
      LT,
      LB,
      KSEP,
      EQU,
      CONCAT,
      WHILE,
      WHERE,
      WHEN,
      VIEW,
      VALUES,
      VAR,
      UPPER,
      UPDATE,
      UNIQUE,
      UNION,
      TRUNC,
      TRUEVAL,
      TRIM,
      TO,
      STR2LONG,
      STR2INT,
      TRANSACTION,
      TMPOBJ,
      TINYINT,
      THEN,
      TABLESET,
      TABLE,
      TABLEINFO,
      SYSOBJ,
      SYSTEMSPACE,
      SYSDATE,
      SYNC,
      SUM,
      SUBSTR,
      STRING,
      START_TOKEN,
      SMALLINT,
      SHOW,
      SETCOUNT,
      SET,
      SELECT,
      RTRIM,
      ROWLIMIT,
      ROUND,
      ROLLBACK,
      RIGHT,
      REPLACE,
      REMOVE,
      RETURNTOKEN,
      REORGANIZE,
      RENAME,
      REFERENCES,
      RBSEG,
      RANDINT,
      RANDSTR,
      QUIT,
      QUERYCACHE,
      PROCEDURE,
      PRINT,
      PRIMARY,
      POWER,
      POOL,
      PLAN,
      ORDER,
      OR,
      OUTER,
      OUTTOK,
      ON,
      OFF,
      NULLTOKEN,
      NOT,
      NOOP,
      NEXTCOUNT,
      MODIFY,
      MOD,
      MAX,
      MIN,
      LTRIM,
      LOWER,
      LONG,
      LOCKS,
      LOAD,
      LIST,
      LIKE,
      LENGTH,
      LEFT,
      KEY,
      JOIN,
      JDBC,
      ISOLATION,
      IS,
      INSERT,
      INT2DATE,
      INTO,
      INT,
      INNER,
      INDEX,
      INTOK,
      IF,
      IDENTIFIED,
      HAVING,
      GROUP,
      GETPOS,
      FROM,
      FOREIGN,
      FOR,
      FLOAT,
      FIXED,
      FETCH,
      FALSEVAL,
      EXISTS,
      EXCEPTION,
      END_TOKEN,
      ELSIF,
      ELSE,
      DROP,
      DOUBLE,
      DIV,
      DISTINCT,
      DESC,
      DELETETOK,
      DEFAULT,
      DECIMAL,
      DATETIME,
      DATE2INT,
      DATE2STR,
      DATE,
      CURSOR,
      CREATE,
      COUNTER,
      COUNT,
      CONSTRAINT,
      COLUMN,
      COMMIT,
      CLOSE,
      CHECK,
      CASE,
      CALL,
      BY,
      BTREE,
      BOOL,
      BLOB,
      BITXOR,
      BITOR,
      BITAND,
      BIGINT,
      BETWEEN,
      BEGIN,
      AVG,
      AUTOCOMMIT,
      AUTHORIZE,
      ASC,
      AS,
      APPEND,
      ALTER,
      ALL,
      AND,
      ADD,
      STRINGVAL,
      ENDTOKEN
   };
   void setReserved(Token t);

private:

   enum Symbol { PROD, TOKEN, NONE };
   enum ScannerStateType { START, INTERMEDIATE, FINAL, ANY };
   enum Action { SHIFT, REDUCE, ACCEPT, NULLACTION };
   enum Production {
      Start,
      TableSetOpt,
      DropOpt,
      CounterId,
      Statement,
      JdbcArgList,
      UnionAllOpt,
      ProcHead,
      ProcDef,
      ReturnOpt,
      ProcArgOpt,
      ProcArgList,
      ProcArg,
      ProcStmtBlock,
      ProcStatementList,
      ProcInitialAssignment,
      ProcNoAssignment,
      ProcBlockStart,
      ProcExceptionList,
      ProcExceptionStmt,
      ProcValueListOpt,
      ProcValueList,
      ProcExceptionType,
      ProcIfPart,
      ProcElsIfList,
      ProcElsIfOpt,
      ProcElseOpt,
      ProcElsePart,
      ProcIfCondition,
      ProcElsIfCondition,
      ProcStatement,
      ProcWhileCondition,
      ProcCondition,
      ProcPredicate,
      Expr,
      Term,
      Factor,
      CaseClause,
      CaseConditionList,
      CaseCondition,
      CasePrepare,
      FetchArgList,
      ColumnList,
      KeyColumn,
      ColumnDesc,
      NullOpt,
      DefaultNullOpt,
      DefaultOpt,
      DefaultDefOpt,
      SimpleAttrList,
      SimpleAttr,
      IndexOption,
      IndexType,
      StartStatement,
      CommitStatement,
      RollbackStatement,
      InsertStatement,
      InsertArgSpec,
      InsertPrepare,
      InsertValueSpecList,
      InsertValueSpec,
      InsertArgList,
      InsertValueList,
      SelectStatement,
      Selection,
      SelectionList,
      SelectItem,
      TableSource,
      JoinSpecList,
      JoinSpec,
      InnerJoin,
      TableList,
      Table,
      JoinTableOn,
      AliasOpt,
      NoAliasOpt,
      GroupClause,
      NoGroup,
      GroupList,
      HavingClause,
      NoHaving,
      OrderingClause,
      NoOrdering,
      OrderingList,
      OrderingOpt,
      DefaultOrderOpt,
      DistinctOpt,
      LimitOpt,
      NoLimit,
      UpdateStatement,
      UpdateList,
      Assignment,
      UpdReturnOpt,
      ReturnVarList,
      ReturnVar,
      DeleteStatement,
      UpdDelAlias,
      AlterStatement,
      AlterList,
      AlterOption,
      RenameStatement,
      Function,
      ExpressionList,
      WhereClause,
      NoWhere,
      QueryCondition,
      QueryPredicate,
      DataTypeProd,
      Comparison,
      Attribute,
      SignedInt,
      SignedFloat,
      Constant,
      DateFormat,
      DateValue,
      ObjSpec
   };
   void loadScanner();
   void loadParser0();
   void loadParser1();
   void loadParser2();
   void loadParser3();
   void loadParser4();
   void loadParser5();
   void loadParser6();
   void loadParser7();
   void loadParser8();
   void loadParser9();
   void loadParser10();
   void loadParser11();
   void loadParser12();
   void loadParser13();
   void loadParser14();
   void loadParser15();
   void loadParser16();
   void loadParser17();
   void loadParser18();
   void loadParser19();
   void loadParser20();
   void loadParser21();
   void loadParser22();
   void loadParser23();
   void loadParser24();
   void loadParser25();
   void loadParser26();
   void loadParser27();
   void loadParser28();
   void loadParser29();
   void loadParser30();
   void loadParser31();
   void loadParser32();
   void loadParser33();
   void loadParser34();
   void loadParser35();
   void loadParser36();
   void loadParser37();
   void loadParser38();
   void loadParser39();
   void loadParser40();
   void loadParser41();
   void loadParser42();
   void loadParser43();
   void loadParser44();
   void loadParser45();
   void loadParser46();
   void loadParser47();
   void loadParser48();
   void loadParser49();
   void loadParser50();
   void loadParser51();
   void loadParser52();
   void loadParser53();
   void loadParser54();
   void loadParser55();
   void loadParser56();
   void loadParser57();
   void loadParser58();
   void loadParser59();
   void loadParser60();
   void loadParser61();
   void loadParser62();
   void loadParser63();
   void loadParser64();
   void loadParser65();
   void loadParser66();
   void loadParser67();
   void loadParser68();
   void loadParser69();
   void loadParser70();
   void loadParser71();
   void loadParser72();
   void loadParser73();
   void loadParser74();
   void loadParser75();
   void loadParser76();
   void loadParser77();
   void loadParser78();
   void loadParser79();
   void loadParser80();
   void loadParser81();
   void loadParser82();
   void loadParser83();
   void loadParser84();
   void loadParser85();
   void loadParser86();
   void loadParser87();
   void loadParser88();
   void loadParser89();
   void loadParser90();
   void loadParser91();
   void loadParser92();
   void loadParser93();
   void loadParser94();
   void loadParser95();
   void loadParser96();
   void loadParser97();
   void loadParser98();
   void loadParser99();
   void loadParser100();
   void loadParser101();
   void loadParser102();
   void loadParser103();
   void loadParser104();
   void loadParser105();
   void loadParser106();
   void loadParser107();
   void loadParser108();
   void loadParser109();
   void loadParser110();
   void loadParser111();
   void loadParser112();
   void loadParser113();
   void loadParser114();
   void loadParser115();
   void loadParser116();
   void loadParser117();
   void loadParser118();
   void loadParser119();
   void loadParser120();
   void loadParser121();
   void loadParser122();
   void loadParser123();
   void loadParser124();
   void loadParser125();
   void loadParser126();
   void loadParser127();
   void loadParser128();
   void loadParser129();
   void loadParser130();
   void loadParser131();
   void loadParser132();
   void loadParser133();
   void loadParser134();
   void loadParser135();
   void loadParser136();
   void loadParser137();
   void loadParser138();
   void loadParser139();
   void loadParser140();
   void loadParser141();
   void loadParser142();
   void loadParser143();
   void loadParser144();
   void loadParser145();
   void loadParser146();
   void loadParser147();
   void loadParser148();
   void loadParser149();
   void loadParser150();
   void loadParser151();
   void loadParser152();
   void loadParser153();
   void loadParser154();
   void loadParser155();
   void loadParser156();
   void loadParser157();
   void loadParser158();
   void loadParser159();
   void loadParser160();
   void loadParser161();
   void loadParser162();
   void loadParser163();
   void loadParser164();
   void loadParser165();
   void loadParser166();
   void loadParser167();
   void loadParser168();
   void loadParser169();
   void loadParser170();
   void loadParser171();
   void loadParser172();
   void loadParser173();
   void loadParser174();
   void loadParser175();
   void loadParser176();
   void loadParser177();
   void loadParser178();
   void loadParser179();
   void loadParser180();
   void loadParser181();
   void loadParser182();
   void loadParser183();
   void loadParser184();
   void loadParser185();
   void loadParser186();
   void loadParser187();
   void loadParser188();
   void loadParser189();
   void loadParser190();
   void loadParser191();
   void loadParser192();
   void loadParser193();
   void loadParser194();
   void loadParser195();
   void loadParser196();
   void loadParser197();
   void loadParser198();
   void loadParser199();
   void loadParser200();
   void loadParser201();
   void loadParser202();
   void loadParser203();
   void loadParser204();
   void loadParser205();
   void loadParser206();
   void loadParser207();
   void loadParser208();
   void loadParser209();
   void loadParser210();
   void loadParser211();
   void loadParser212();
   void loadParser213();
   void loadParser214();
   void loadParser215();
   void loadParser216();
   void loadParser217();
   void loadParser218();
   void loadParser219();
   void loadParser220();
   void loadParser221();
   void loadParser222();
   void loadParser223();
   void loadParser224();
   void loadParser225();
   void loadParser226();
   void loadParser227();
   void loadParser228();
   void loadParser229();
   void loadParser230();
   void loadParser231();
   void loadParser232();
   void loadParser233();
   void loadParser234();
   void loadParser235();
   void loadParser236();
   void loadParser237();
   void loadParser238();

   class ScannerStateEntry {

   public:

      ScannerStateEntry();
      ScannerStateEntry(int state, ScannerStateType type = INTERMEDIATE);
      ScannerStateEntry& operator = (const ScannerStateEntry& s);
      bool operator == (const ScannerStateEntry& s);

	   int getState();
      ScannerStateType getType();

   private:

      int _state;
      ScannerStateType _type;
   };

class ScannerTransEntry {

   public:

      ScannerTransEntry();
      ScannerTransEntry(int state, char c);
      ScannerTransEntry(int state, char c, int fstate);
      ScannerTransEntry& operator = (const ScannerTransEntry& s);
      bool operator == (const ScannerTransEntry& s);

      int getFState();

   private:

      int  _state;
      char _c;
      int _fstate;
   };

   class Scanner {

   public:

      Scanner();
      Scanner(Token t);

      Token getToken();
      void addState(ScannerStateEntry s);
      void addTransition(ScannerTransEntry t);
      bool checkPattern(const Chain& pattern);

   private:

      Token _token;
      ListT<ScannerStateEntry> _stateList;
      ListT<ScannerTransEntry> _transList;
   };

   ListT<Scanner> _scannerList;
   class StackEntry {

   public:

      StackEntry();
      StackEntry(Symbol prod, int num, int state, Chain tval = "");
      StackEntry& operator = (const StackEntry& a);

      int getState();
      Symbol getSymbol();
      Chain& getTval();

   private:

      Symbol _symbol;
      int _num;
      int _state;
      Chain _tval;
   };

   class ActionEntry {

   public:

      ActionEntry();
      ActionEntry(Action action, int num);
      bool operator == (const ActionEntry& a);
      ActionEntry& operator = (const ActionEntry& a);

      Action getAction();
      int getNum();

   private:

      Action _action;
      int _num;
   };

   ActionEntry _actionMap[827][177];
   int _jumpMap[827][117];

   class ProdEntry {

   public:

      ProdEntry();
      ProdEntry(int id);
      ProdEntry(int id, Production prod, int numSymbol);
      bool operator == (const ProdEntry& a);
      ProdEntry& operator = (const ProdEntry& a);

      int getId();
      Production getProd();
      int getNumSymbol();

   private:

      int _id;
      Production _prod;
      int _numSymbol;

   };

   ListT<ProdEntry> _prodInfo;

   bool isSepIgnore(char c);
   bool isSepSign(char c);
   bool shiftToken();

   bool getAction(int state, Token token, Action& a, int& num);
   bool getJump(int state, Production prod, int& fstate);

   Token _reservedToken;
   bool _isReserved;
   Token _token;
   char _tokenVal[MAXTOKENVAL];
   ListT<Chain> _tokenList;

};
