diff options
author | Lorry Tar Creator <lorry-tar-importer@lorry> | 2017-06-27 06:07:23 +0000 |
---|---|---|
committer | Lorry Tar Creator <lorry-tar-importer@lorry> | 2017-06-27 06:07:23 +0000 |
commit | 1bf1084f2b10c3b47fd1a588d85d21ed0eb41d0c (patch) | |
tree | 46dcd36c86e7fbc6e5df36deb463b33e9967a6f7 /Source/JavaScriptCore/parser/ParserTokens.h | |
parent | 32761a6cee1d0dee366b885b7b9c777e67885688 (diff) | |
download | WebKitGtk-tarball-master.tar.gz |
webkitgtk-2.16.5HEADwebkitgtk-2.16.5master
Diffstat (limited to 'Source/JavaScriptCore/parser/ParserTokens.h')
-rw-r--r-- | Source/JavaScriptCore/parser/ParserTokens.h | 84 |
1 files changed, 70 insertions, 14 deletions
diff --git a/Source/JavaScriptCore/parser/ParserTokens.h b/Source/JavaScriptCore/parser/ParserTokens.h index 82a26639a..a0554ff36 100644 --- a/Source/JavaScriptCore/parser/ParserTokens.h +++ b/Source/JavaScriptCore/parser/ParserTokens.h @@ -23,8 +23,7 @@ * THE POSSIBILITY OF SUCH DAMAGE. */ -#ifndef ParserTokens_h -#define ParserTokens_h +#pragma once #include "ParserModes.h" #include <limits.h> @@ -35,13 +34,22 @@ namespace JSC { class Identifier; enum { - UnaryOpTokenFlag = 64, - KeywordTokenFlag = 128, - BinaryOpTokenPrecedenceShift = 8, + // Token Bitfield: 0b000000000RTE000IIIIPPPPKUXXXXXXX + // R = right-associative bit + // T = unterminated error flag + // E = error flag + // I = binary operator allows 'in' + // P = binary operator precedence + // K = keyword flag + // U = unary operator flag + UnaryOpTokenFlag = 128, + KeywordTokenFlag = 256, + BinaryOpTokenPrecedenceShift = 9, BinaryOpTokenAllowsInPrecedenceAdditionalShift = 4, BinaryOpTokenPrecedenceMask = 15 << BinaryOpTokenPrecedenceShift, ErrorTokenFlag = 1 << (BinaryOpTokenAllowsInPrecedenceAdditionalShift + BinaryOpTokenPrecedenceShift + 7), - UnterminatedErrorTokenFlag = ErrorTokenFlag << 1 + UnterminatedErrorTokenFlag = ErrorTokenFlag << 1, + RightAssociativeBinaryOpTokenFlag = UnterminatedErrorTokenFlag << 1 }; #define BINARY_OP_PRECEDENCE(prec) (((prec) << BinaryOpTokenPrecedenceShift) | ((prec) << (BinaryOpTokenPrecedenceShift + BinaryOpTokenAllowsInPrecedenceAdditionalShift))) @@ -75,6 +83,24 @@ enum JSTokenType { FINALLY, DEBUGGER, ELSE, + IMPORT, + EXPORT, + CLASSTOKEN, + EXTENDS, + SUPER, + + // Contextual keywords + + LET, + YIELD, + AWAIT, + ASYNC, + + FirstContextualKeywordToken = LET, + LastContextualKeywordToken = ASYNC, + FirstSafeContextualKeywordToken = AWAIT, + LastSafeContextualKeywordToken = LastContextualKeywordToken, + OPENBRACE = 0, CLOSEBRACE, OPENPAREN, @@ -83,9 +109,13 @@ enum JSTokenType { CLOSEBRACKET, COMMA, QUESTION, - NUMBER, + BACKQUOTE, + INTEGER, + DOUBLE, IDENT, STRING, + TEMPLATE, + REGEXP, SEMICOLON, COLON, DOT, @@ -100,18 +130,20 @@ enum JSTokenType { URSHIFTEQUAL, ANDEQUAL, MODEQUAL, + POWEQUAL, XOREQUAL, OREQUAL, DOTDOTDOT, + ARROWFUNCTION, LastUntaggedToken, // Begin tagged tokens PLUSPLUS = 0 | UnaryOpTokenFlag, MINUSMINUS = 1 | UnaryOpTokenFlag, - EXCLAMATION = 2 | UnaryOpTokenFlag, - TILDE = 3 | UnaryOpTokenFlag, - AUTOPLUSPLUS = 4 | UnaryOpTokenFlag, - AUTOMINUSMINUS = 5 | UnaryOpTokenFlag, + AUTOPLUSPLUS = 2 | UnaryOpTokenFlag, + AUTOMINUSMINUS = 3 | UnaryOpTokenFlag, + EXCLAMATION = 4 | UnaryOpTokenFlag, + TILDE = 5 | UnaryOpTokenFlag, TYPEOF = 6 | UnaryOpTokenFlag | KeywordTokenFlag, VOIDTOKEN = 7 | UnaryOpTokenFlag | KeywordTokenFlag, DELETETOKEN = 8 | UnaryOpTokenFlag | KeywordTokenFlag, @@ -138,6 +170,7 @@ enum JSTokenType { TIMES = 20 | BINARY_OP_PRECEDENCE(10), DIVIDE = 21 | BINARY_OP_PRECEDENCE(10), MOD = 22 | BINARY_OP_PRECEDENCE(10), + POW = 23 | BINARY_OP_PRECEDENCE(11) | RightAssociativeBinaryOpTokenFlag, // Make sure that POW has the highest operator precedence. ERRORTOK = 0 | ErrorTokenFlag, UNTERMINATED_IDENTIFIER_ESCAPE_ERRORTOK = 0 | ErrorTokenFlag | UnterminatedErrorTokenFlag, INVALID_IDENTIFIER_ESCAPE_ERRORTOK = 1 | ErrorTokenFlag, @@ -145,10 +178,16 @@ enum JSTokenType { INVALID_IDENTIFIER_UNICODE_ESCAPE_ERRORTOK = 3 | ErrorTokenFlag, UNTERMINATED_MULTILINE_COMMENT_ERRORTOK = 4 | ErrorTokenFlag | UnterminatedErrorTokenFlag, UNTERMINATED_NUMERIC_LITERAL_ERRORTOK = 5 | ErrorTokenFlag | UnterminatedErrorTokenFlag, - INVALID_OCTAL_NUMBER_ERRORTOK = 6 | ErrorTokenFlag | UnterminatedErrorTokenFlag, + UNTERMINATED_OCTAL_NUMBER_ERRORTOK = 6 | ErrorTokenFlag | UnterminatedErrorTokenFlag, INVALID_NUMERIC_LITERAL_ERRORTOK = 7 | ErrorTokenFlag, UNTERMINATED_STRING_LITERAL_ERRORTOK = 8 | ErrorTokenFlag | UnterminatedErrorTokenFlag, INVALID_STRING_LITERAL_ERRORTOK = 9 | ErrorTokenFlag, + INVALID_PRIVATE_NAME_ERRORTOK = 10 | ErrorTokenFlag, + UNTERMINATED_HEX_NUMBER_ERRORTOK = 11 | ErrorTokenFlag | UnterminatedErrorTokenFlag, + UNTERMINATED_BINARY_NUMBER_ERRORTOK = 12 | ErrorTokenFlag | UnterminatedErrorTokenFlag, + UNTERMINATED_TEMPLATE_LITERAL_ERRORTOK = 13 | ErrorTokenFlag | UnterminatedErrorTokenFlag, + UNTERMINATED_REGEXP_LITERAL_ERRORTOK = 14 | ErrorTokenFlag | UnterminatedErrorTokenFlag, + INVALID_TEMPLATE_LITERAL_ERRORTOK = 15 | ErrorTokenFlag, }; struct JSTextPosition { @@ -176,6 +215,15 @@ union JSTokenData { }; double doubleValue; const Identifier* ident; + struct { + const Identifier* cooked; + const Identifier* raw; + bool isTail; + }; + struct { + const Identifier* pattern; + const Identifier* flags; + }; }; struct JSTokenLocation { @@ -202,6 +250,14 @@ struct JSToken { JSTextPosition m_endPosition; }; -} // namespace JSC +ALWAYS_INLINE bool isUpdateOp(JSTokenType token) +{ + return token >= PLUSPLUS && token <= AUTOMINUSMINUS; +} -#endif // ParserTokens_h +ALWAYS_INLINE bool isUnaryOp(JSTokenType token) +{ + return token & UnaryOpTokenFlag; +} + +} // namespace JSC |