/src/3rdparty/webkit/Source/JavaScriptCore/parser/JSParser.h
https://bitbucket.org/ultra_iter/qt-vtl · C Header · 164 lines · 127 code · 12 blank · 25 comment · 0 complexity · 5779a0164e69609f0575744e0c9b0116 MD5 · raw file
- /*
- * Copyright (C) 2010 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
- * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
- * THE POSSIBILITY OF SUCH DAMAGE.
- */
- #ifndef JSParser_h
- #define JSParser_h
- namespace JSC {
- class ExecState;
- class FunctionParameters;
- class Identifier;
- class JSGlobalData;
- class SourceCode;
- enum {
- UnaryOpTokenFlag = 64,
- KeywordTokenFlag = 128,
- BinaryOpTokenPrecedenceShift = 8,
- BinaryOpTokenAllowsInPrecedenceAdditionalShift = 4,
- BinaryOpTokenPrecedenceMask = 15 << BinaryOpTokenPrecedenceShift,
- };
- #define BINARY_OP_PRECEDENCE(prec) (((prec) << BinaryOpTokenPrecedenceShift) | ((prec) << (BinaryOpTokenPrecedenceShift + BinaryOpTokenAllowsInPrecedenceAdditionalShift)))
- #define IN_OP_PRECEDENCE(prec) ((prec) << (BinaryOpTokenPrecedenceShift + BinaryOpTokenAllowsInPrecedenceAdditionalShift))
- enum JSTokenType {
- NULLTOKEN = KeywordTokenFlag,
- TRUETOKEN,
- FALSETOKEN,
- BREAK,
- CASE,
- DEFAULT,
- FOR,
- NEW,
- VAR,
- CONSTTOKEN,
- CONTINUE,
- FUNCTION,
- RETURN,
- IF,
- THISTOKEN,
- DO,
- WHILE,
- SWITCH,
- WITH,
- RESERVED,
- THROW,
- TRY,
- CATCH,
- FINALLY,
- DEBUGGER,
- ELSE,
- OPENBRACE = 0,
- CLOSEBRACE,
- OPENPAREN,
- CLOSEPAREN,
- OPENBRACKET,
- CLOSEBRACKET,
- COMMA,
- QUESTION,
- NUMBER,
- IDENT,
- STRING,
- SEMICOLON,
- COLON,
- DOT,
- ERRORTOK,
- EOFTOK,
- EQUAL,
- PLUSEQUAL,
- MINUSEQUAL,
- MULTEQUAL,
- DIVEQUAL,
- LSHIFTEQUAL,
- RSHIFTEQUAL,
- URSHIFTEQUAL,
- ANDEQUAL,
- MODEQUAL,
- XOREQUAL,
- OREQUAL,
- LastUntaggedToken,
- // Begin tagged tokens
- PLUSPLUS = 0 | UnaryOpTokenFlag,
- MINUSMINUS = 1 | UnaryOpTokenFlag,
- EXCLAMATION = 2 | UnaryOpTokenFlag,
- TILDE = 3 | UnaryOpTokenFlag,
- AUTOPLUSPLUS = 4 | UnaryOpTokenFlag,
- AUTOMINUSMINUS = 5 | UnaryOpTokenFlag,
- TYPEOF = 6 | UnaryOpTokenFlag | KeywordTokenFlag,
- VOIDTOKEN = 7 | UnaryOpTokenFlag | KeywordTokenFlag,
- DELETETOKEN = 8 | UnaryOpTokenFlag | KeywordTokenFlag,
- OR = 0 | BINARY_OP_PRECEDENCE(1),
- AND = 1 | BINARY_OP_PRECEDENCE(2),
- BITOR = 2 | BINARY_OP_PRECEDENCE(3),
- BITXOR = 3 | BINARY_OP_PRECEDENCE(4),
- BITAND = 4 | BINARY_OP_PRECEDENCE(5),
- EQEQ = 5 | BINARY_OP_PRECEDENCE(6),
- NE = 6 | BINARY_OP_PRECEDENCE(6),
- STREQ = 7 | BINARY_OP_PRECEDENCE(6),
- STRNEQ = 8 | BINARY_OP_PRECEDENCE(6),
- LT = 9 | BINARY_OP_PRECEDENCE(7),
- GT = 10 | BINARY_OP_PRECEDENCE(7),
- LE = 11 | BINARY_OP_PRECEDENCE(7),
- GE = 12 | BINARY_OP_PRECEDENCE(7),
- INSTANCEOF = 13 | BINARY_OP_PRECEDENCE(7) | KeywordTokenFlag,
- INTOKEN = 14 | IN_OP_PRECEDENCE(7) | KeywordTokenFlag,
- LSHIFT = 15 | BINARY_OP_PRECEDENCE(8),
- RSHIFT = 16 | BINARY_OP_PRECEDENCE(8),
- URSHIFT = 17 | BINARY_OP_PRECEDENCE(8),
- PLUS = 18 | BINARY_OP_PRECEDENCE(9) | UnaryOpTokenFlag,
- MINUS = 19 | BINARY_OP_PRECEDENCE(9) | UnaryOpTokenFlag,
- TIMES = 20 | BINARY_OP_PRECEDENCE(10),
- DIVIDE = 21 | BINARY_OP_PRECEDENCE(10),
- MOD = 22 | BINARY_OP_PRECEDENCE(10)
- };
- union JSTokenData {
- int intValue;
- double doubleValue;
- const Identifier* ident;
- };
- struct JSTokenInfo {
- JSTokenInfo() : line(0) {}
- int line;
- int startOffset;
- int endOffset;
- };
- struct JSToken {
- JSTokenType m_type;
- JSTokenData m_data;
- JSTokenInfo m_info;
- };
- enum JSParserStrictness { JSParseNormal, JSParseStrict };
- enum JSParserMode { JSParseProgramCode, JSParseFunctionCode };
- const char* jsParse(JSGlobalData*, FunctionParameters*, JSParserStrictness, JSParserMode, const SourceCode*);
- }
- #endif // JSParser_h