#ifndef _IV_TOKEN_H_ #define _IV_TOKEN_H_ #include #include #include "none.h" namespace iv { namespace core { namespace detail { template struct TokenContents { static const char* kContents[]; }; } // namespace iv::core::detail typedef detail::TokenContents TokenContents; class Token { public: enum Type { EOS, // EOS ILLEGAL, // ILLEGAL PERIOD, // . COLON, // : SEMICOLON, // ; COMMA, // , LPAREN, // ( RPAREN, // ) LBRACK, // [ RBRACK, // ] LBRACE, // { RBRACE, // } CONDITIONAL, // ? EQ, // == EQ_STRICT, // === NOT, // ! NE, // != NE_STRICT, // !== INC, // ++ DEC, // -- ADD, // + SUB, // - MUL, // * DIV, // / MOD, // % REL_FIRST, // RELATIONAL FIRST LT, // < GT, // > LTE, // <= GTE, // >= INSTANCEOF, // instanceof REL_LAST, // RELATIONAL LAST SAR, // >> SHR, // >>> SHL, // << BIT_AND, // & BIT_OR, // | BIT_XOR, // ^ BIT_NOT, // ~ LOGICAL_AND, // && LOGICAL_OR, // || HTML_COMMENT, //