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

class Cego
{

public:

   Cego();
   virtual ~Cego();

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

protected:

   virtual char nextChar() = 0;
   virtual void backChar() = 0;
   virtual void setSyncMethod() = 0;
   virtual void setListTableSetMethod() = 0;
   virtual void setListTableMethod() = 0;
   virtual void setListProcMethod() = 0;
   virtual void setListViewMethod() = 0;
   virtual void setListIndexMethod() = 0;
   virtual void setListBTreeMethod() = 0;
   virtual void setListKeyMethod() = 0;
   virtual void setListCounterMethod() = 0;
   virtual void setListSysObjMethod() = 0;
   virtual void setListTmpObjMethod() = 0;
   virtual void setListCheckMethod() = 0;
   virtual void setListTriggerMethod() = 0;
   virtual void setListAliasMethod() = 0;
   virtual void setTableSetOpt() = 0;
   virtual void setTableInfoMethod() = 0;
   virtual void setTableSizeMethod() = 0;
   virtual void setTupleInfoMethod() = 0;
   virtual void setShowUptimeMethod() = 0;
   virtual void setShowPoolMethod() = 0;
   virtual void setShowSystemSpaceMethod() = 0;
   virtual void setTableDescMethod() = 0;
   virtual void setIndexDescMethod() = 0;
   virtual void setBTreeDescMethod() = 0;
   virtual void setViewDescMethod() = 0;
   virtual void setKeyDescMethod() = 0;
   virtual void setCheckDescMethod() = 0;
   virtual void setAliasDescMethod() = 0;
   virtual void setProcDescMethod() = 0;
   virtual void setProcShowMethod() = 0;
   virtual void setViewShowMethod() = 0;
   virtual void setCheckShowMethod() = 0;
   virtual void setTriggerShowMethod() = 0;
   virtual void setSetTableSetMethod() = 0;
   virtual void setAuthUserMethod() = 0;
   virtual void setEnableAppendModeMethod() = 0;
   virtual void setDisableAppendModeMethod() = 0;
   virtual void setEnableAutoCommitMethod() = 0;
   virtual void setDisableAutoCommitMethod() = 0;
   virtual void setSetIsolationMethod() = 0;
   virtual void setTableReorganizeMethod() = 0;
   virtual void setIndexReorganizeMethod() = 0;
   virtual void setSelectMethod() = 0;
   virtual void setSelectPlanMethod() = 0;
   virtual void setQueryMethod() = 0;
   virtual void setViewCreateMethod() = 0;
   virtual void setViewLoadMethod() = 0;
   virtual void setProcCreateMethod() = 0;
   virtual void setProcLoadMethod() = 0;
   virtual void setProcCallMethod() = 0;
   virtual void setFuncCallMethod() = 0;
   virtual void setUserTableCreateMethod() = 0;
   virtual void setPrimaryIndexCreateMethod() = 0;
   virtual void setIndexCreateMethod() = 0;
   virtual void setCachedOption() = 0;
   virtual void setAliasCreateMethod() = 0;
   virtual void setAliasAttr() = 0;
   virtual void setTriggerCreateMethod() = 0;
   virtual void setTriggerLoadMethod() = 0;
   virtual void setTableTruncateMethod() = 0;
   virtual void setTableDropMethod() = 0;
   virtual void setIndexDropMethod() = 0;
   virtual void setViewDropMethod() = 0;
   virtual void setProcDropMethod() = 0;
   virtual void setFKeyDropMethod() = 0;
   virtual void setCheckDropMethod() = 0;
   virtual void setTriggerDropMethod() = 0;
   virtual void setBTreeDropMethod() = 0;
   virtual void setAliasDropMethod() = 0;
   virtual void dropOpt1() = 0;
   virtual void dropOpt2() = 0;
   virtual void setForeignKeyCreateMethod() = 0;
   virtual void setCheckCreateMethod() = 0;
   virtual void setAssignStatementMethod() = 0;
   virtual void setPrintMethod() = 0;
   virtual void setIndexCheckMethod() = 0;
   virtual void setCreateCounterMethod() = 0;
   virtual void setDropCounterMethod() = 0;
   virtual void setSetCounterMethod() = 0;
   virtual void setCounterId() = 0;
   virtual void setJDBCInfoMethod() = 0;
   virtual void jdbcArg1() = 0;
   virtual void jdbcArg2() = 0;
   virtual void unionAllStore() = 0;
   virtual void triggerStore() = 0;
   virtual void triggerHead() = 0;
   virtual void setTriggerBefore() = 0;
   virtual void setTriggerAfter() = 0;
   virtual void addInsertTrigger() = 0;
   virtual void addUpdateTrigger() = 0;
   virtual void addDeleteTrigger() = 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 procThrowStatement() = 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 lockStore() = 0;
   virtual void unlockStore() = 0;
   virtual void insertStore() = 0;
   virtual void insertBySelectStore() = 0;
   virtual void insertPrepare() = 0;
   virtual void insertValueSpecStore() = 0;
   virtual void insertArg() = 0;
   virtual void insertExprValue() = 0;
   virtual void selectStore() = 0;
   virtual void noFromOption() = 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 selectNoDistinctOpt() = 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 alterModDefault() = 0;
   virtual void alterRenameCol() = 0;
   virtual void renameTable() = 0;
   virtual void renameIndex() = 0;
   virtual void renameBTree() = 0;
   virtual void renameKey() = 0;
   virtual void renameProcedure() = 0;
   virtual void renameView() = 0;
   virtual void renameCheck() = 0;
   virtual void renameTrigger() = 0;
   virtual void functionNative() = 0;
   virtual void functionNextCount() = 0;
   virtual void functionSetCount() = 0;
   virtual void functionUserDef1() = 0;
   virtual void functionUserDef2() = 0;
   virtual void storeExprList1() = 0;
   virtual void storeExprList2() = 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 wcPredicateIn() = 0;
   virtual void wcPredicateNotIn() = 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 miscClobType() = 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 miscClobRef() = 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,
      UPTIME,
      UPDATE,
      UNIQUE,
      UNION,
      TRUNCATE,
      TRUNC,
      TRUEVAL,
      TRIM,
      TO,
      STR2DATE,
      STR2LONG,
      STR2INT,
      TUPLEINFO,
      TRIGGER,
      TRANSACTION,
      TMPOBJ,
      TINYINT,
      THROW,
      THEN,
      TABLESET,
      TABLE,
      TABLESIZE,
      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,
      PROCEDURE,
      PRINT,
      PRIMARY,
      POWER,
      POOL,
      PLAN,
      ORDER,
      OR,
      OUTER,
      OUTTOK,
      ON,
      OFF,
      NULLTOKEN,
      NOT,
      NOOP,
      NEXTCOUNT,
      MODIFY,
      MOD,
      MAX,
      MIN,
      LTRIM,
      LOWER,
      LONG,
      UNLOCK,
      LOCK,
      LOAD,
      LMOD,
      LDIV,
      LIST,
      LIKE,
      LENGTH,
      LEFT,
      KEY,
      JOIN,
      JDBC,
      ISOLATION,
      IS,
      INT2ASC,
      INSERT,
      NEWDATE,
      LONG2DATE,
      INTO,
      INT,
      INNER,
      INTOK,
      INDEX,
      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,
      DATE2LONG,
      DATE2STR,
      DATE,
      CURSOR,
      CREATE,
      COUNTER,
      COUNT,
      CONSTRAINT,
      COLUMN,
      COMMIT,
      CLOSE,
      CLOB2STR,
      CLOBREF,
      CLOBSIZE,
      CLOB,
      CHECK,
      CASE,
      CALL,
      CACHED,
      BY,
      BTREE,
      BOOL,
      BLOBREF,
      BLOBSIZE,
      BLOB,
      BITXOR,
      BITOR,
      BITAND,
      BIGINT,
      BETWEEN,
      BEGIN,
      BEFORE,
      AVLTREE,
      AVG,
      AUTOCOMMIT,
      AUTHORIZE,
      ASC2INT,
      ASC,
      AS,
      APPEND,
      ALTER,
      ALL,
      AND,
      ALIAS,
      AFTER,
      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,
      CachedOpt,
      AliasAttrList,
      AliasAttr,
      DropOpt,
      CounterId,
      Statement,
      JdbcArgList,
      UnionAllOpt,
      TriggerDef,
      TriggerHead,
      TriggerEvent,
      TriggerCondition,
      TriggerOp,
      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,
      BtreeType,
      StartStatement,
      CommitStatement,
      RollbackStatement,
      LockStatement,
      UnlockStatement,
      InsertStatement,
      InsertArgSpec,
      InsertPrepare,
      InsertValueSpecList,
      InsertValueSpec,
      InsertArgList,
      InsertValueList,
      SelectStatement,
      FromOption,
      NoFromOption,
      Selection,
      SelectionList,
      SelectItem,
      TableSource,
      JoinSpecList,
      JoinSpec,
      InnerJoin,
      TableList,
      Table,
      JoinTableOn,
      AliasOpt,
      NoAliasOpt,
      GroupClause,
      NoGroup,
      GroupList,
      HavingClause,
      NoHaving,
      OrderingClause,
      NoOrdering,
      OrderingList,
      OrderingOpt,
      DefaultOrderOpt,
      DistinctOpt,
      NoDistinctOpt,
      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();
   void loadParser239();
   void loadParser240();
   void loadParser241();
   void loadParser242();
   void loadParser243();
   void loadParser244();
   void loadParser245();
   void loadParser246();
   void loadParser247();
   void loadParser248();
   void loadParser249();
   void loadParser250();
   void loadParser251();
   void loadParser252();
   void loadParser253();
   void loadParser254();
   void loadParser255();
   void loadParser256();
   void loadParser257();
   void loadParser258();
   void loadParser259();
   void loadParser260();
   void loadParser261();
   void loadParser262();
   void loadParser263();
   void loadParser264();
   void loadParser265();
   void loadParser266();
   void loadParser267();
   void loadParser268();
   void loadParser269();
   void loadParser270();
   void loadParser271();
   void loadParser272();
   void loadParser273();
   void loadParser274();
   void loadParser275();
   void loadParser276();
   void loadParser277();
   void loadParser278();
   void loadParser279();
   void loadParser280();
   void loadParser281();
   void loadParser282();
   void loadParser283();
   void loadParser284();
   void loadParser285();
   void loadParser286();
   void loadParser287();
   void loadParser288();
   void loadParser289();
   void loadParser290();
   void loadParser291();
   void loadParser292();
   void loadParser293();
   void loadParser294();
   void loadParser295();
   void loadParser296();
   void loadParser297();
   void loadParser298();
   void loadParser299();
   void loadParser300();
   void loadParser301();
   void loadParser302();
   void loadParser303();

   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[959][200];
   int _jumpMap[959][131];

   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;

};
