00001 #ifndef TOKEN_H_
00002 #define TOKEN_H_
00003
00004
00005 #include <string>
00006
00007
00008
00009 class Token
00010 {
00011 public:
00012 enum TokenVal
00013 {
00014 EOFTOK = 0,
00015
00016 NONTOKEN,
00017
00018
00019 BEHAVIOR,
00020 GENERIC,
00021 ENTITY,
00022 MESSAGE,
00023 CLASSIFIC,
00024 INIT,
00025 BODY,
00026 SCENE,
00027
00028
00029
00030
00031 SEMICOL,
00032 COMMA,
00033 DOT,
00034
00035 PARENOPEN,
00036 PARENCLOSE,
00037 BRACEOPEN,
00038 BRACECLOSE,
00039
00040 ASSIGN,
00041
00042
00043
00044
00045 BINOPI,
00046 BINOPF,
00047 UNARYOP,
00048 CALL,
00049 END,
00050 GOTO,
00051 GOTOIF,
00052 GOTOIFN,
00053 LABEL,
00054 INT,
00055 FLOAT,
00056
00057
00058 OPER_PLUS,
00059 OPER_MINUS,
00060 OPER_STAR,
00061 OPER_SLASH,
00062 OPER_PERCENT,
00063
00064 OPER_LS_THAN,
00065 OPER_GR_THAN,
00066 OPER_LS_EQ,
00067 OPER_GR_EQ,
00068 OPER_EQUAL,
00069 OPER_NEQUAL,
00070
00071 OPER_DAND,
00072 OPER_DOR,
00073 OPER_BANG,
00074 OPER_COPY,
00075
00076
00077 IDENT,
00078 INT_LIT,
00079 REAL_LIT,
00080
00081 TOKEN_UNKNOWN
00082 };
00083
00084 private:
00085 int val;
00086 std::string dataStr;
00087 int lineNo;
00088 int colNo;
00089
00090 public:
00091 Token();
00092
00093
00094 void assertTokenType(int correctType,char* errorStr);
00095 void assertTokenNotEnd();
00096
00097 int getType();
00098 std::string& getString();
00099 const char* toString();
00100
00101 int getLineNo();
00102 int getColNo();
00103
00104 void setVal(int valIn,char* inStr,int lineNoIn,int colNoIn);
00105 };
00106
00107
00108 #endif