diff options
Diffstat (limited to 'src/declarative/qml/parser/javascriptast_p.h')
-rw-r--r-- | src/declarative/qml/parser/javascriptast_p.h | 459 |
1 files changed, 401 insertions, 58 deletions
diff --git a/src/declarative/qml/parser/javascriptast_p.h b/src/declarative/qml/parser/javascriptast_p.h index 267a697..69958e5 100644 --- a/src/declarative/qml/parser/javascriptast_p.h +++ b/src/declarative/qml/parser/javascriptast_p.h @@ -217,6 +217,7 @@ public: Kind_VoidExpression, Kind_WhileStatement, Kind_WithStatement, + Kind_NestedExpression, Kind_UiArrayBinding, Kind_UiImport, @@ -268,6 +269,9 @@ public: virtual ~ExpressionNode() {} virtual ExpressionNode *expressionCast(); + + virtual SourceLocation firstSourceLocation() const = 0; + virtual SourceLocation lastSourceLocation() const = 0; }; class Statement: public Node @@ -277,6 +281,32 @@ public: virtual ~Statement() {} virtual Statement *statementCast(); + + virtual SourceLocation firstSourceLocation() const = 0; + virtual SourceLocation lastSourceLocation() const = 0; +}; + +class NestedExpression: public ExpressionNode +{ +public: + JAVASCRIPT_DECLARE_AST_NODE(NestedExpression) + + NestedExpression(ExpressionNode *expression) + : expression(expression) + { kind = K; } + + virtual void accept0(Visitor *visitor); + + virtual SourceLocation firstSourceLocation() const + { return lparenToken; } + + virtual SourceLocation lastSourceLocation() const + { return rparenToken; } + +// attributes + ExpressionNode *expression; + SourceLocation lparenToken; + SourceLocation rparenToken; }; class ThisExpression: public ExpressionNode @@ -289,6 +319,12 @@ public: virtual void accept0(Visitor *visitor); + virtual SourceLocation firstSourceLocation() const + { return thisToken; } + + virtual SourceLocation lastSourceLocation() const + { return thisToken; } + // attributes SourceLocation thisToken; }; @@ -305,6 +341,12 @@ public: virtual void accept0(Visitor *visitor); + virtual SourceLocation firstSourceLocation() const + { return identifierToken; } + + virtual SourceLocation lastSourceLocation() const + { return identifierToken; } + // attributes JavaScriptNameIdImpl *name; SourceLocation identifierToken; @@ -320,6 +362,12 @@ public: virtual void accept0(Visitor *visitor); + virtual SourceLocation firstSourceLocation() const + { return nullToken; } + + virtual SourceLocation lastSourceLocation() const + { return nullToken; } + // attributes SourceLocation nullToken; }; @@ -334,6 +382,12 @@ public: virtual void accept0(Visitor *visitor); + virtual SourceLocation firstSourceLocation() const + { return trueToken; } + + virtual SourceLocation lastSourceLocation() const + { return trueToken; } + // attributes SourceLocation trueToken; }; @@ -348,6 +402,12 @@ public: virtual void accept0(Visitor *visitor); + virtual SourceLocation firstSourceLocation() const + { return falseToken; } + + virtual SourceLocation lastSourceLocation() const + { return falseToken; } + // attributes SourceLocation falseToken; }; @@ -363,6 +423,12 @@ public: virtual void accept0(Visitor *visitor); + virtual SourceLocation firstSourceLocation() const + { return literalToken; } + + virtual SourceLocation lastSourceLocation() const + { return literalToken; } + // attributes: double value; SourceLocation literalToken; @@ -380,6 +446,12 @@ public: virtual void accept0(Visitor *visitor); + virtual SourceLocation firstSourceLocation() const + { return literalToken; } + + virtual SourceLocation lastSourceLocation() const + { return literalToken; } + // attributes: JavaScriptNameIdImpl *value; SourceLocation literalToken; @@ -397,6 +469,12 @@ public: virtual void accept0(Visitor *visitor); + virtual SourceLocation firstSourceLocation() const + { return literalToken; } + + virtual SourceLocation lastSourceLocation() const + { return literalToken; } + // attributes: JavaScriptNameIdImpl *pattern; int flags; @@ -424,6 +502,12 @@ public: virtual void accept0(Visitor *visitor); + virtual SourceLocation firstSourceLocation() const + { return lbracketToken; } + + virtual SourceLocation lastSourceLocation() const + { return rbracketToken; } + // attributes ElementList *elements; Elision *elision; @@ -447,8 +531,16 @@ public: virtual void accept0(Visitor *visitor); + virtual SourceLocation firstSourceLocation() const + { return lbraceToken; } + + virtual SourceLocation lastSourceLocation() const + { return rbraceToken; } + // attributes PropertyNameAndValueList *properties; + SourceLocation lbraceToken; + SourceLocation rbraceToken; }; class ElementList: public Node @@ -624,6 +716,12 @@ public: virtual void accept0(Visitor *visitor); + virtual SourceLocation firstSourceLocation() const + { return base->firstSourceLocation(); } + + virtual SourceLocation lastSourceLocation() const + { return rbracketToken; } + // attributes ExpressionNode *base; ExpressionNode *expression; @@ -644,7 +742,13 @@ public: virtual void accept0(Visitor *visitor); -// attributes + virtual SourceLocation firstSourceLocation() const + { return base->firstSourceLocation(); } + + virtual SourceLocation lastSourceLocation() const + { return identifierToken; } + + // attributes ExpressionNode *base; JavaScriptNameIdImpl *name; SourceLocation dotToken; @@ -664,7 +768,13 @@ public: virtual void accept0(Visitor *visitor); -// attributes + virtual SourceLocation firstSourceLocation() const + { return newToken; } + + virtual SourceLocation lastSourceLocation() const + { return rparenToken; } + + // attributes ExpressionNode *base; ArgumentList *arguments; SourceLocation newToken; @@ -684,6 +794,12 @@ public: virtual void accept0(Visitor *visitor); + virtual SourceLocation firstSourceLocation() const + { return newToken; } + + virtual SourceLocation lastSourceLocation() const + { return expression->lastSourceLocation(); } + // attributes ExpressionNode *expression; SourceLocation newToken; @@ -702,6 +818,12 @@ public: virtual void accept0(Visitor *visitor); + virtual SourceLocation firstSourceLocation() const + { return base->firstSourceLocation(); } + + virtual SourceLocation lastSourceLocation() const + { return rparenToken; } + // attributes ExpressionNode *base; ArgumentList *arguments; @@ -755,6 +877,12 @@ public: virtual void accept0(Visitor *visitor); + virtual SourceLocation firstSourceLocation() const + { return base->firstSourceLocation(); } + + virtual SourceLocation lastSourceLocation() const + { return incrementToken; } + // attributes ExpressionNode *base; SourceLocation incrementToken; @@ -772,6 +900,12 @@ public: virtual void accept0(Visitor *visitor); + virtual SourceLocation firstSourceLocation() const + { return base->firstSourceLocation(); } + + virtual SourceLocation lastSourceLocation() const + { return decrementToken; } + // attributes ExpressionNode *base; SourceLocation decrementToken; @@ -788,6 +922,12 @@ public: virtual void accept0(Visitor *visitor); + virtual SourceLocation firstSourceLocation() const + { return deleteToken; } + + virtual SourceLocation lastSourceLocation() const + { return expression->lastSourceLocation(); } + // attributes ExpressionNode *expression; SourceLocation deleteToken; @@ -805,6 +945,12 @@ public: virtual void accept0(Visitor *visitor); + virtual SourceLocation firstSourceLocation() const + { return voidToken; } + + virtual SourceLocation lastSourceLocation() const + { return expression->lastSourceLocation(); } + // attributes ExpressionNode *expression; SourceLocation voidToken; @@ -822,6 +968,12 @@ public: virtual void accept0(Visitor *visitor); + virtual SourceLocation firstSourceLocation() const + { return typeofToken; } + + virtual SourceLocation lastSourceLocation() const + { return expression->lastSourceLocation(); } + // attributes ExpressionNode *expression; SourceLocation typeofToken; @@ -839,6 +991,12 @@ public: virtual void accept0(Visitor *visitor); + virtual SourceLocation firstSourceLocation() const + { return incrementToken; } + + virtual SourceLocation lastSourceLocation() const + { return expression->lastSourceLocation(); } + // attributes ExpressionNode *expression; SourceLocation incrementToken; @@ -856,6 +1014,12 @@ public: virtual void accept0(Visitor *visitor); + virtual SourceLocation firstSourceLocation() const + { return decrementToken; } + + virtual SourceLocation lastSourceLocation() const + { return expression->lastSourceLocation(); } + // attributes ExpressionNode *expression; SourceLocation decrementToken; @@ -873,6 +1037,12 @@ public: virtual void accept0(Visitor *visitor); + virtual SourceLocation firstSourceLocation() const + { return plusToken; } + + virtual SourceLocation lastSourceLocation() const + { return expression->lastSourceLocation(); } + // attributes ExpressionNode *expression; SourceLocation plusToken; @@ -890,6 +1060,12 @@ public: virtual void accept0(Visitor *visitor); + virtual SourceLocation firstSourceLocation() const + { return minusToken; } + + virtual SourceLocation lastSourceLocation() const + { return expression->lastSourceLocation(); } + // attributes ExpressionNode *expression; SourceLocation minusToken; @@ -907,6 +1083,12 @@ public: virtual void accept0(Visitor *visitor); + virtual SourceLocation firstSourceLocation() const + { return tildeToken; } + + virtual SourceLocation lastSourceLocation() const + { return expression->lastSourceLocation(); } + // attributes ExpressionNode *expression; SourceLocation tildeToken; @@ -924,6 +1106,12 @@ public: virtual void accept0(Visitor *visitor); + virtual SourceLocation firstSourceLocation() const + { return notToken; } + + virtual SourceLocation lastSourceLocation() const + { return expression->lastSourceLocation(); } + // attributes ExpressionNode *expression; SourceLocation notToken; @@ -944,6 +1132,12 @@ public: virtual void accept0(Visitor *visitor); + virtual SourceLocation firstSourceLocation() const + { return left->firstSourceLocation(); } + + virtual SourceLocation lastSourceLocation() const + { return right->lastSourceLocation(); } + // attributes ExpressionNode *left; int op; @@ -964,6 +1158,12 @@ public: virtual void accept0(Visitor *visitor); + virtual SourceLocation firstSourceLocation() const + { return expression->firstSourceLocation(); } + + virtual SourceLocation lastSourceLocation() const + { return ko->lastSourceLocation(); } + // attributes ExpressionNode *expression; ExpressionNode *ok; @@ -984,6 +1184,12 @@ public: virtual void accept0(Visitor *visitor); + virtual SourceLocation firstSourceLocation() const + { return left->firstSourceLocation(); } + + virtual SourceLocation lastSourceLocation() const + { return right->lastSourceLocation(); } + // attributes ExpressionNode *left; ExpressionNode *right; @@ -1002,7 +1208,13 @@ public: virtual void accept0(Visitor *visitor); -// attributes + virtual SourceLocation firstSourceLocation() const + { return lbraceToken; } + + virtual SourceLocation lastSourceLocation() const + { return rbraceToken; } + + // attributes StatementList *statements; SourceLocation lbraceToken; SourceLocation rbraceToken; @@ -1054,6 +1266,12 @@ public: virtual void accept0(Visitor *visitor); + virtual SourceLocation firstSourceLocation() const + { return declarationKindToken; } + + virtual SourceLocation lastSourceLocation() const + { return semicolonToken; } + // attributes VariableDeclarationList *declarations; SourceLocation declarationKindToken; @@ -1129,6 +1347,12 @@ public: virtual void accept0(Visitor *visitor); + virtual SourceLocation firstSourceLocation() const + { return semicolonToken; } + + virtual SourceLocation lastSourceLocation() const + { return semicolonToken; } + // attributes SourceLocation semicolonToken; }; @@ -1145,6 +1369,12 @@ public: virtual void accept0(Visitor *visitor); + virtual SourceLocation firstSourceLocation() const + { return expression->firstSourceLocation(); } + + virtual SourceLocation lastSourceLocation() const + { return semicolonToken; } + // attributes ExpressionNode *expression; SourceLocation semicolonToken; @@ -1163,6 +1393,17 @@ public: virtual void accept0(Visitor *visitor); + virtual SourceLocation firstSourceLocation() const + { return ifToken; } + + virtual SourceLocation lastSourceLocation() const + { + if (ko) + return ko->lastSourceLocation(); + + return ok->lastSourceLocation(); + } + // attributes ExpressionNode *expression; Statement *ok; @@ -1186,6 +1427,12 @@ public: virtual void accept0(Visitor *visitor); + virtual SourceLocation firstSourceLocation() const + { return doToken; } + + virtual SourceLocation lastSourceLocation() const + { return semicolonToken; } + // attributes Statement *statement; ExpressionNode *expression; @@ -1209,6 +1456,12 @@ public: virtual void accept0(Visitor *visitor); + virtual SourceLocation firstSourceLocation() const + { return whileToken; } + + virtual SourceLocation lastSourceLocation() const + { return statement->lastSourceLocation(); } + // attributes ExpressionNode *expression; Statement *statement; @@ -1230,6 +1483,12 @@ public: virtual void accept0(Visitor *visitor); + virtual SourceLocation firstSourceLocation() const + { return forToken; } + + virtual SourceLocation lastSourceLocation() const + { return statement->lastSourceLocation(); } + // attributes ExpressionNode *initialiser; ExpressionNode *condition; @@ -1255,6 +1514,12 @@ public: virtual void accept0(Visitor *visitor); + virtual SourceLocation firstSourceLocation() const + { return forToken; } + + virtual SourceLocation lastSourceLocation() const + { return statement->lastSourceLocation(); } + // attributes VariableDeclarationList *declarations; ExpressionNode *condition; @@ -1281,6 +1546,12 @@ public: virtual void accept0(Visitor *visitor); + virtual SourceLocation firstSourceLocation() const + { return forToken; } + + virtual SourceLocation lastSourceLocation() const + { return statement->lastSourceLocation(); } + // attributes ExpressionNode *initialiser; ExpressionNode *expression; @@ -1304,6 +1575,12 @@ public: virtual void accept0(Visitor *visitor); + virtual SourceLocation firstSourceLocation() const + { return forToken; } + + virtual SourceLocation lastSourceLocation() const + { return statement->lastSourceLocation(); } + // attributes VariableDeclaration *declaration; ExpressionNode *expression; @@ -1327,6 +1604,12 @@ public: virtual void accept0(Visitor *visitor); + virtual SourceLocation firstSourceLocation() const + { return continueToken; } + + virtual SourceLocation lastSourceLocation() const + { return semicolonToken; } + // attributes JavaScriptNameIdImpl *label; SourceLocation continueToken; @@ -1346,7 +1629,13 @@ public: virtual void accept0(Visitor *visitor); -// attributes + virtual SourceLocation firstSourceLocation() const + { return breakToken; } + + virtual SourceLocation lastSourceLocation() const + { return semicolonToken; } + + // attributes JavaScriptNameIdImpl *label; SourceLocation breakToken; SourceLocation identifierToken; @@ -1365,6 +1654,12 @@ public: virtual void accept0(Visitor *visitor); + virtual SourceLocation firstSourceLocation() const + { return returnToken; } + + virtual SourceLocation lastSourceLocation() const + { return semicolonToken; } + // attributes ExpressionNode *expression; SourceLocation returnToken; @@ -1384,6 +1679,12 @@ public: virtual void accept0(Visitor *visitor); + virtual SourceLocation firstSourceLocation() const + { return withToken; } + + virtual SourceLocation lastSourceLocation() const + { return statement->lastSourceLocation(); } + // attributes ExpressionNode *expression; Statement *statement; @@ -1392,46 +1693,52 @@ public: SourceLocation rparenToken; }; -class SwitchStatement: public Statement +class CaseBlock: public Node { public: - JAVASCRIPT_DECLARE_AST_NODE(SwitchStatement) + JAVASCRIPT_DECLARE_AST_NODE(CaseBlock) - SwitchStatement(ExpressionNode *e, CaseBlock *b): - expression (e), block (b) + CaseBlock(CaseClauses *c, DefaultClause *d = 0, CaseClauses *r = 0): + clauses (c), defaultClause (d), moreClauses (r) { kind = K; } - virtual ~SwitchStatement() {} + virtual ~CaseBlock() {} virtual void accept0(Visitor *visitor); // attributes - ExpressionNode *expression; - CaseBlock *block; - SourceLocation switchToken; - SourceLocation lparenToken; - SourceLocation rparenToken; + CaseClauses *clauses; + DefaultClause *defaultClause; + CaseClauses *moreClauses; + SourceLocation lbraceToken; + SourceLocation rbraceToken; }; -class CaseBlock: public Node +class SwitchStatement: public Statement { public: - JAVASCRIPT_DECLARE_AST_NODE(CaseBlock) + JAVASCRIPT_DECLARE_AST_NODE(SwitchStatement) - CaseBlock(CaseClauses *c, DefaultClause *d = 0, CaseClauses *r = 0): - clauses (c), defaultClause (d), moreClauses (r) + SwitchStatement(ExpressionNode *e, CaseBlock *b): + expression (e), block (b) { kind = K; } - virtual ~CaseBlock() {} + virtual ~SwitchStatement() {} virtual void accept0(Visitor *visitor); + virtual SourceLocation firstSourceLocation() const + { return switchToken; } + + virtual SourceLocation lastSourceLocation() const + { return block->rbraceToken; } + // attributes - CaseClauses *clauses; - DefaultClause *defaultClause; - CaseClauses *moreClauses; - SourceLocation lbraceToken; - SourceLocation rbraceToken; + ExpressionNode *expression; + CaseBlock *block; + SourceLocation switchToken; + SourceLocation lparenToken; + SourceLocation rparenToken; }; class CaseClauses: public Node @@ -1519,12 +1826,17 @@ public: virtual void accept0(Visitor *visitor); + virtual SourceLocation firstSourceLocation() const + { return identifierToken; } + + virtual SourceLocation lastSourceLocation() const + { return statement->lastSourceLocation(); } + // attributes JavaScriptNameIdImpl *label; Statement *statement; SourceLocation identifierToken; SourceLocation colonToken; - SourceLocation semicolonToken; }; class ThrowStatement: public Statement @@ -1539,46 +1851,24 @@ public: virtual void accept0(Visitor *visitor); -// attributes + virtual SourceLocation firstSourceLocation() const + { return throwToken; } + + virtual SourceLocation lastSourceLocation() const + { return semicolonToken; } + + // attributes ExpressionNode *expression; SourceLocation throwToken; SourceLocation semicolonToken; }; -class TryStatement: public Statement -{ -public: - JAVASCRIPT_DECLARE_AST_NODE(TryStatement) - - TryStatement(Statement *stmt, Catch *c, Finally *f): - statement (stmt), catchExpression (c), finallyExpression (f) - { kind = K; } - - TryStatement(Statement *stmt, Finally *f): - statement (stmt), catchExpression (0), finallyExpression (f) - { kind = K; } - - TryStatement(Statement *stmt, Catch *c): - statement (stmt), catchExpression (c), finallyExpression (0) - { kind = K; } - - virtual ~TryStatement() {} - - virtual void accept0(Visitor *visitor); - -// attributes - Statement *statement; - Catch *catchExpression; - Finally *finallyExpression; - SourceLocation tryToken; -}; - class Catch: public Node { public: JAVASCRIPT_DECLARE_AST_NODE(Catch) - Catch(JavaScriptNameIdImpl *n, Statement *stmt): + Catch(JavaScriptNameIdImpl *n, Block *stmt): name (n), statement (stmt) { kind = K; } @@ -1588,7 +1878,7 @@ public: // attributes JavaScriptNameIdImpl *name; - Statement *statement; + Block *statement; SourceLocation catchToken; SourceLocation lparenToken; SourceLocation identifierToken; @@ -1600,7 +1890,7 @@ class Finally: public Node public: JAVASCRIPT_DECLARE_AST_NODE(Finally) - Finally(Statement *stmt): + Finally(Block *stmt): statement (stmt) { kind = K; } @@ -1609,10 +1899,51 @@ public: virtual void accept0(Visitor *visitor); // attributes - Statement *statement; + Block *statement; SourceLocation finallyToken; }; +class TryStatement: public Statement +{ +public: + JAVASCRIPT_DECLARE_AST_NODE(TryStatement) + + TryStatement(Statement *stmt, Catch *c, Finally *f): + statement (stmt), catchExpression (c), finallyExpression (f) + { kind = K; } + + TryStatement(Statement *stmt, Finally *f): + statement (stmt), catchExpression (0), finallyExpression (f) + { kind = K; } + + TryStatement(Statement *stmt, Catch *c): + statement (stmt), catchExpression (c), finallyExpression (0) + { kind = K; } + + virtual ~TryStatement() {} + + virtual void accept0(Visitor *visitor); + + virtual SourceLocation firstSourceLocation() const + { return tryToken; } + + virtual SourceLocation lastSourceLocation() const + { + if (finallyExpression) + return finallyExpression->statement->rbraceToken; + else if (catchExpression) + return catchExpression->statement->rbraceToken; + + return statement->lastSourceLocation(); + } + +// attributes + Statement *statement; + Catch *catchExpression; + Finally *finallyExpression; + SourceLocation tryToken; +}; + class FunctionExpression: public ExpressionNode { public: @@ -1626,6 +1957,12 @@ public: virtual void accept0(Visitor *visitor); + virtual SourceLocation firstSourceLocation() const + { return functionToken; } + + virtual SourceLocation lastSourceLocation() const + { return rbraceToken; } + // attributes JavaScriptNameIdImpl *name; FormalParameterList *formals; @@ -1811,6 +2148,12 @@ public: virtual void accept0(Visitor *visitor); + virtual SourceLocation firstSourceLocation() const + { return debuggerToken; } + + virtual SourceLocation lastSourceLocation() const + { return semicolonToken; } + // attributes SourceLocation debuggerToken; SourceLocation semicolonToken; |