Bug 697179 - Remove initializers from almost all TokenKind enumerations. Yay for simpler, more easily maintained code! r=cdleary

--HG--
extra : rebase_source : 1fd7105bba011f098e777387346702852da646aa
This commit is contained in:
Jeff Walden 2011-10-25 16:03:53 -07:00
parent 1a9c4fadb3
commit f2397b762a
2 changed files with 195 additions and 86 deletions

View File

@ -2183,3 +2183,107 @@ js_fgets(char *buf, int size, FILE *file)
buf[i] = '\0';
return i;
}
#ifdef DEBUG
const char *
TokenKindToString(TokenKind tt)
{
switch (tt) {
case TOK_ERROR: return "TOK_ERROR";
case TOK_EOF: return "TOK_EOF";
case TOK_EOL: return "TOK_EOL";
case TOK_SEMI: return "TOK_SEMI";
case TOK_COMMA: return "TOK_COMMA";
case TOK_ASSIGN: return "TOK_ASSIGN";
case TOK_HOOK: return "TOK_HOOK";
case TOK_COLON: return "TOK_COLON";
case TOK_OR: return "TOK_OR";
case TOK_AND: return "TOK_AND";
case TOK_BITOR: return "TOK_BITOR";
case TOK_BITXOR: return "TOK_BITXOR";
case TOK_BITAND: return "TOK_BITAND";
case TOK_RELOP: return "TOK_RELOP";
case TOK_SHOP: return "TOK_SHOP";
case TOK_PLUS: return "TOK_PLUS";
case TOK_MINUS: return "TOK_MINUS";
case TOK_STAR: return "TOK_STAR";
case TOK_DIVOP: return "TOK_DIVOP";
case TOK_UNARYOP: return "TOK_UNARYOP";
case TOK_INC: return "TOK_INC";
case TOK_DEC: return "TOK_DEC";
case TOK_DOT: return "TOK_DOT";
case TOK_LB: return "TOK_LB";
case TOK_RB: return "TOK_RB";
case TOK_LC: return "TOK_LC";
case TOK_RC: return "TOK_RC";
case TOK_LP: return "TOK_LP";
case TOK_RP: return "TOK_RP";
case TOK_NAME: return "TOK_NAME";
case TOK_NUMBER: return "TOK_NUMBER";
case TOK_STRING: return "TOK_STRING";
case TOK_REGEXP: return "TOK_REGEXP";
case TOK_PRIMARY: return "TOK_PRIMARY";
case TOK_FUNCTION: return "TOK_FUNCTION";
case TOK_IF: return "TOK_IF";
case TOK_ELSE: return "TOK_ELSE";
case TOK_SWITCH: return "TOK_SWITCH";
case TOK_CASE: return "TOK_CASE";
case TOK_DEFAULT: return "TOK_DEFAULT";
case TOK_WHILE: return "TOK_WHILE";
case TOK_DO: return "TOK_DO";
case TOK_FOR: return "TOK_FOR";
case TOK_BREAK: return "TOK_BREAK";
case TOK_CONTINUE: return "TOK_CONTINUE";
case TOK_IN: return "TOK_IN";
case TOK_VAR: return "TOK_VAR";
case TOK_WITH: return "TOK_WITH";
case TOK_RETURN: return "TOK_RETURN";
case TOK_NEW: return "TOK_NEW";
case TOK_DELETE: return "TOK_DELETE";
case TOK_DEFSHARP: return "TOK_DEFSHARP";
case TOK_USESHARP: return "TOK_USESHARP";
case TOK_TRY: return "TOK_TRY";
case TOK_CATCH: return "TOK_CATCH";
case TOK_FINALLY: return "TOK_FINALLY";
case TOK_THROW: return "TOK_THROW";
case TOK_INSTANCEOF: return "TOK_INSTANCEOF";
case TOK_DEBUGGER: return "TOK_DEBUGGER";
case TOK_XMLSTAGO: return "TOK_XMLSTAGO";
case TOK_XMLETAGO: return "TOK_XMLETAGO";
case TOK_XMLPTAGC: return "TOK_XMLPTAGC";
case TOK_XMLTAGC: return "TOK_XMLTAGC";
case TOK_XMLNAME: return "TOK_XMLNAME";
case TOK_XMLATTR: return "TOK_XMLATTR";
case TOK_XMLSPACE: return "TOK_XMLSPACE";
case TOK_XMLTEXT: return "TOK_XMLTEXT";
case TOK_XMLCOMMENT: return "TOK_XMLCOMMENT";
case TOK_XMLCDATA: return "TOK_XMLCDATA";
case TOK_XMLPI: return "TOK_XMLPI";
case TOK_AT: return "TOK_AT";
case TOK_DBLCOLON: return "TOK_DBLCOLON";
case TOK_ANYNAME: return "TOK_ANYNAME";
case TOK_DBLDOT: return "TOK_DBLDOT";
case TOK_FILTER: return "TOK_FILTER";
case TOK_XMLELEM: return "TOK_XMLELEM";
case TOK_XMLLIST: return "TOK_XMLLIST";
case TOK_YIELD: return "TOK_YIELD";
case TOK_ARRAYCOMP: return "TOK_ARRAYCOMP";
case TOK_ARRAYPUSH: return "TOK_ARRAYPUSH";
case TOK_LEXICALSCOPE: return "TOK_LEXICALSCOPE";
case TOK_LET: return "TOK_LET";
case TOK_SEQ: return "TOK_SEQ";
case TOK_FORHEAD: return "TOK_FORHEAD";
case TOK_ARGSBODY: return "TOK_ARGSBODY";
case TOK_UPVARS: return "TOK_UPVARS";
case TOK_RESERVED: return "TOK_RESERVED";
case TOK_STRICT_RESERVED: return "TOK_STRICT_RESERVED";
case TOK_STRICTEQ: return "TOK_STRICTEQ";
case TOK_EQ: return "TOK_EQ";
case TOK_STRICTNE: return "TOK_STRICTNE";
case TOK_NE: return "TOK_NE";
case TOK_LIMIT: break;
}
return "<bad TokenKind>";
}
#endif

View File

@ -63,91 +63,91 @@
namespace js {
enum TokenKind {
TOK_ERROR = -1, /* well-known as the only code < EOF */
TOK_EOF = 0, /* end of file */
TOK_EOL = 1, /* end of line; only returned by peekTokenSameLine() */
TOK_SEMI = 2, /* semicolon */
TOK_COMMA = 3, /* comma operator */
TOK_ASSIGN = 4, /* assignment ops (= += -= etc.) */
TOK_HOOK = 5, TOK_COLON = 6, /* conditional (?:) */
TOK_OR = 7, /* logical or (||) */
TOK_AND = 8, /* logical and (&&) */
TOK_BITOR = 9, /* bitwise-or (|) */
TOK_BITXOR = 10, /* bitwise-xor (^) */
TOK_BITAND = 11, /* bitwise-and (&) */
TOK_RELOP = 13, /* relational ops (< <= > >=) */
TOK_SHOP = 14, /* shift ops (<< >> >>>) */
TOK_PLUS = 15, /* plus */
TOK_MINUS = 16, /* minus */
TOK_STAR = 17, TOK_DIVOP = 18, /* multiply/divide ops (* / %) */
TOK_UNARYOP = 19, /* unary prefix operator */
TOK_INC = 20, TOK_DEC = 21, /* increment/decrement (++ --) */
TOK_DOT = 22, /* member operator (.) */
TOK_LB = 23, TOK_RB = 24, /* left and right brackets */
TOK_LC = 25, TOK_RC = 26, /* left and right curlies (braces) */
TOK_LP = 27, TOK_RP = 28, /* left and right parentheses */
TOK_NAME = 29, /* identifier */
TOK_NUMBER = 30, /* numeric constant */
TOK_STRING = 31, /* string constant */
TOK_REGEXP = 32, /* RegExp constant */
TOK_PRIMARY = 33, /* true, false, null, this, super */
TOK_FUNCTION = 34, /* function keyword */
TOK_IF = 35, /* if keyword */
TOK_ELSE = 36, /* else keyword */
TOK_SWITCH = 37, /* switch keyword */
TOK_CASE = 38, /* case keyword */
TOK_DEFAULT = 39, /* default keyword */
TOK_WHILE = 40, /* while keyword */
TOK_DO = 41, /* do keyword */
TOK_FOR = 42, /* for keyword */
TOK_BREAK = 43, /* break keyword */
TOK_CONTINUE = 44, /* continue keyword */
TOK_IN = 45, /* in keyword */
TOK_VAR = 46, /* var keyword */
TOK_WITH = 47, /* with keyword */
TOK_RETURN = 48, /* return keyword */
TOK_NEW = 49, /* new keyword */
TOK_DELETE = 50, /* delete keyword */
TOK_DEFSHARP = 51, /* #n= for object/array initializers */
TOK_USESHARP = 52, /* #n# for object/array initializers */
TOK_TRY = 53, /* try keyword */
TOK_CATCH = 54, /* catch keyword */
TOK_FINALLY = 55, /* finally keyword */
TOK_THROW = 56, /* throw keyword */
TOK_INSTANCEOF = 57, /* instanceof keyword */
TOK_DEBUGGER = 58, /* debugger keyword */
TOK_XMLSTAGO = 59, /* XML start tag open (<) */
TOK_XMLETAGO = 60, /* XML end tag open (</) */
TOK_XMLPTAGC = 61, /* XML point tag close (/>) */
TOK_XMLTAGC = 62, /* XML start or end tag close (>) */
TOK_XMLNAME = 63, /* XML start-tag non-final fragment */
TOK_XMLATTR = 64, /* XML quoted attribute value */
TOK_XMLSPACE = 65, /* XML whitespace */
TOK_XMLTEXT = 66, /* XML text */
TOK_XMLCOMMENT = 67, /* XML comment */
TOK_XMLCDATA = 68, /* XML CDATA section */
TOK_XMLPI = 69, /* XML processing instruction */
TOK_AT = 70, /* XML attribute op (@) */
TOK_DBLCOLON = 71, /* namespace qualified name op (::) */
TOK_ANYNAME = 72, /* XML AnyName singleton (*) */
TOK_DBLDOT = 73, /* XML descendant op (..) */
TOK_FILTER = 74, /* XML filtering predicate op (.()) */
TOK_XMLELEM = 75, /* XML element node type (no token) */
TOK_XMLLIST = 76, /* XML list node type (no token) */
TOK_YIELD = 77, /* yield from generator function */
TOK_ARRAYCOMP = 78, /* array comprehension initialiser */
TOK_ARRAYPUSH = 79, /* array push within comprehension */
TOK_LEXICALSCOPE = 80, /* block scope AST node label */
TOK_LET = 81, /* let keyword */
TOK_SEQ = 82, /* synthetic sequence of statements,
not a block */
TOK_FORHEAD = 83, /* head of for(;;)-style loop */
TOK_ARGSBODY = 84, /* formal args in list + body at end */
TOK_UPVARS = 85, /* lexical dependencies as JSAtomDefnMap
of definitions paired with a parse
tree full of uses of those names */
TOK_RESERVED, /* reserved keywords */
TOK_STRICT_RESERVED, /* reserved keywords in strict mode */
TOK_ERROR = -1, /* well-known as the only code < EOF */
TOK_EOF, /* end of file */
TOK_EOL, /* end of line; only returned by peekTokenSameLine() */
TOK_SEMI, /* semicolon */
TOK_COMMA, /* comma operator */
TOK_ASSIGN, /* assignment ops (= += -= etc.) */
TOK_HOOK, TOK_COLON, /* conditional (?:) */
TOK_OR, /* logical or (||) */
TOK_AND, /* logical and (&&) */
TOK_BITOR, /* bitwise-or (|) */
TOK_BITXOR, /* bitwise-xor (^) */
TOK_BITAND, /* bitwise-and (&) */
TOK_RELOP, /* relational ops (< <= > >=) */
TOK_SHOP, /* shift ops (<< >> >>>) */
TOK_PLUS, /* plus */
TOK_MINUS, /* minus */
TOK_STAR, TOK_DIVOP, /* multiply/divide ops (* / %) */
TOK_UNARYOP, /* unary prefix operator */
TOK_INC, TOK_DEC, /* increment/decrement (++ --) */
TOK_DOT, /* member operator (.) */
TOK_LB, TOK_RB, /* left and right brackets */
TOK_LC, TOK_RC, /* left and right curlies (braces) */
TOK_LP, TOK_RP, /* left and right parentheses */
TOK_NAME, /* identifier */
TOK_NUMBER, /* numeric constant */
TOK_STRING, /* string constant */
TOK_REGEXP, /* RegExp constant */
TOK_PRIMARY, /* true, false, null, this, super */
TOK_FUNCTION, /* function keyword */
TOK_IF, /* if keyword */
TOK_ELSE, /* else keyword */
TOK_SWITCH, /* switch keyword */
TOK_CASE, /* case keyword */
TOK_DEFAULT, /* default keyword */
TOK_WHILE, /* while keyword */
TOK_DO, /* do keyword */
TOK_FOR, /* for keyword */
TOK_BREAK, /* break keyword */
TOK_CONTINUE, /* continue keyword */
TOK_IN, /* in keyword */
TOK_VAR, /* var keyword */
TOK_WITH, /* with keyword */
TOK_RETURN, /* return keyword */
TOK_NEW, /* new keyword */
TOK_DELETE, /* delete keyword */
TOK_DEFSHARP, /* #n= for object/array initializers */
TOK_USESHARP, /* #n# for object/array initializers */
TOK_TRY, /* try keyword */
TOK_CATCH, /* catch keyword */
TOK_FINALLY, /* finally keyword */
TOK_THROW, /* throw keyword */
TOK_INSTANCEOF, /* instanceof keyword */
TOK_DEBUGGER, /* debugger keyword */
TOK_XMLSTAGO, /* XML start tag open (<) */
TOK_XMLETAGO, /* XML end tag open (</) */
TOK_XMLPTAGC, /* XML point tag close (/>) */
TOK_XMLTAGC, /* XML start or end tag close (>) */
TOK_XMLNAME, /* XML start-tag non-final fragment */
TOK_XMLATTR, /* XML quoted attribute value */
TOK_XMLSPACE, /* XML whitespace */
TOK_XMLTEXT, /* XML text */
TOK_XMLCOMMENT, /* XML comment */
TOK_XMLCDATA, /* XML CDATA section */
TOK_XMLPI, /* XML processing instruction */
TOK_AT, /* XML attribute op (@) */
TOK_DBLCOLON, /* namespace qualified name op (::) */
TOK_ANYNAME, /* XML AnyName singleton (*) */
TOK_DBLDOT, /* XML descendant op (..) */
TOK_FILTER, /* XML filtering predicate op (.()) */
TOK_XMLELEM, /* XML element node type (no token) */
TOK_XMLLIST, /* XML list node type (no token) */
TOK_YIELD, /* yield from generator function */
TOK_ARRAYCOMP, /* array comprehension initialiser */
TOK_ARRAYPUSH, /* array push within comprehension */
TOK_LEXICALSCOPE, /* block scope AST node label */
TOK_LET, /* let keyword */
TOK_SEQ, /* synthetic sequence of statements, not a
block */
TOK_FORHEAD, /* head of for(;;)-style loop */
TOK_ARGSBODY, /* formal args in list + body at end */
TOK_UPVARS, /* lexical dependencies as JSAtomDefnMap of
definitions paired with a parse tree full
of uses of those names */
TOK_RESERVED, /* reserved keywords */
TOK_STRICT_RESERVED, /* reserved keywords in strict mode */
/*
* The following token types occupy contiguous ranges to enable easy
@ -162,7 +162,7 @@ enum TokenKind {
TOK_NE,
TOK_EQUALITY_LAST = TOK_NE,
TOK_LIMIT /* domain size */
TOK_LIMIT /* domain size */
};
inline bool
@ -857,4 +857,9 @@ ReportStrictModeError(JSContext *cx, TokenStream *ts, TreeContext *tc, ParseNode
extern JS_FRIEND_API(int)
js_fgets(char *buf, int size, FILE *file);
#ifdef DEBUG
extern const char *
TokenKindToString(js::TokenKind tt);
#endif
#endif /* TokenStream_h__ */