diff options
Diffstat (limited to 'src/script/parser/qscriptast_p.h')
-rw-r--r-- | src/script/parser/qscriptast_p.h | 1480 |
1 files changed, 0 insertions, 1480 deletions
diff --git a/src/script/parser/qscriptast_p.h b/src/script/parser/qscriptast_p.h deleted file mode 100644 index c792785..0000000 --- a/src/script/parser/qscriptast_p.h +++ /dev/null @@ -1,1480 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the QtScript module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL-ONLY$ -** GNU Lesser General Public License Usage -** This file may be used under the terms of the GNU Lesser -** General Public License version 2.1 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 2.1 requirements -** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -** -** If you have questions regarding the use of this file, please contact -** Nokia at qt-info@nokia.com. -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QSCRIPTAST_P_H -#define QSCRIPTAST_P_H - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// - -#include <QtCore/QString> - -#include "qscriptastvisitor_p.h" - -QT_BEGIN_NAMESPACE - -class QScriptNameIdImpl; - -namespace QSOperator // ### rename -{ - -enum Op { - Add, - And, - InplaceAnd, - Assign, - BitAnd, - BitOr, - BitXor, - InplaceSub, - Div, - InplaceDiv, - Equal, - Ge, - Gt, - In, - InplaceAdd, - InstanceOf, - Le, - LShift, - InplaceLeftShift, - Lt, - Mod, - InplaceMod, - Mul, - InplaceMul, - NotEqual, - Or, - InplaceOr, - RShift, - InplaceRightShift, - StrictEqual, - StrictNotEqual, - Sub, - URShift, - InplaceURightShift, - InplaceXor -}; - -} // namespace QSOperator - -namespace QScript { namespace AST { - -class Node -{ -public: - enum Kind { - Kind_Node, - Kind_ExpressionNode, - Kind_Statement, - Kind_ThisExpression, - Kind_IdentifierExpression, - Kind_NullExpression, - Kind_TrueLiteral, - Kind_FalseLiteral, - Kind_NumericLiteral, - Kind_StringLiteral, - Kind_RegExpLiteral, - Kind_ArrayLiteral, - Kind_ObjectLiteral, - Kind_ElementList, - Kind_Elision, - Kind_PropertyNameAndValueList, - Kind_PropertyName, - Kind_IdentifierPropertyName, - Kind_StringLiteralPropertyName, - Kind_NumericLiteralPropertyName, - Kind_ArrayMemberExpression, - Kind_FieldMemberExpression, - Kind_NewMemberExpression, - Kind_NewExpression, - Kind_CallExpression, - Kind_ArgumentList, - Kind_PostIncrementExpression, - Kind_PostDecrementExpression, - Kind_DeleteExpression, - Kind_VoidExpression, - Kind_TypeOfExpression, - Kind_PreIncrementExpression, - Kind_PreDecrementExpression, - Kind_UnaryPlusExpression, - Kind_UnaryMinusExpression, - Kind_TildeExpression, - Kind_NotExpression, - Kind_BinaryExpression, - Kind_ConditionalExpression, - Kind_Expression, - Kind_Block, - Kind_StatementList, - Kind_VariableStatement, - Kind_VariableDeclarationList, - Kind_VariableDeclaration, - Kind_EmptyStatement, - Kind_ExpressionStatement, - Kind_IfStatement, - Kind_DoWhileStatement, - Kind_WhileStatement, - Kind_ForStatement, - Kind_LocalForStatement, - Kind_ForEachStatement, - Kind_LocalForEachStatement, - Kind_ContinueStatement, - Kind_BreakStatement, - Kind_ReturnStatement, - Kind_WithStatement, - Kind_SwitchStatement, - Kind_CaseBlock, - Kind_CaseClauses, - Kind_CaseClause, - Kind_DefaultClause, - Kind_LabelledStatement, - Kind_ThrowStatement, - Kind_TryStatement, - Kind_Catch, - Kind_Finally, - Kind_FunctionDeclaration, - Kind_FunctionExpression, - Kind_FormalParameterList, - Kind_FunctionBody, - Kind_Program, - Kind_SourceElements, - Kind_SourceElement, - Kind_FunctionSourceElement, - Kind_StatementSourceElement, - Kind_DebuggerStatement - }; - - inline Node(): - startLine(0), startColumn(0), - endLine(0), endColumn(0), kind(Kind_Node) {} - - virtual ~Node() {} - - virtual ExpressionNode *expressionCast(); - virtual BinaryExpression *binaryExpressionCast(); - virtual Statement *statementCast(); - - inline void accept(Visitor *visitor) - { - if (visitor->preVisit(this)) { - accept0(visitor); - visitor->postVisit(this); - } - } - - static void acceptChild(Node *node, Visitor *visitor) - { - if (node) - node->accept(visitor); - } - - virtual void accept0(Visitor *visitor) = 0; - - int startLine; - int startColumn; - int endLine; - int endColumn; - Kind kind; -}; - -class ExpressionNode: public Node -{ -public: - ExpressionNode() { kind = Kind_ExpressionNode; } - virtual ~ExpressionNode() {} - - virtual ExpressionNode *expressionCast(); -}; - -class Statement: public Node -{ -public: - Statement() { kind = Kind_Statement; } - virtual ~Statement() {} - - virtual Statement *statementCast(); -}; - -class ThisExpression: public ExpressionNode -{ -public: - ThisExpression() { kind = Kind_ThisExpression; } - virtual ~ThisExpression() {} - - virtual void accept0(Visitor *visitor); -}; - -class IdentifierExpression: public ExpressionNode -{ -public: - IdentifierExpression(QScriptNameIdImpl *n): - name (n) { kind = Kind_IdentifierExpression; } - - virtual ~IdentifierExpression() {} - - virtual void accept0(Visitor *visitor); - -// attributes - QScriptNameIdImpl *name; -}; - -class NullExpression: public ExpressionNode -{ -public: - NullExpression() { kind = Kind_NullExpression; } - virtual ~NullExpression() {} - - virtual void accept0(Visitor *visitor); -}; - -class TrueLiteral: public ExpressionNode -{ -public: - TrueLiteral() { kind = Kind_TrueLiteral; } - virtual ~TrueLiteral() {} - - virtual void accept0(Visitor *visitor); -}; - -class FalseLiteral: public ExpressionNode -{ -public: - FalseLiteral() { kind = Kind_FalseLiteral; } - virtual ~FalseLiteral() {} - - virtual void accept0(Visitor *visitor); -}; - -class NumericLiteral: public ExpressionNode -{ -public: - NumericLiteral(double v): - value (v) { kind = Kind_NumericLiteral; } - virtual ~NumericLiteral() {} - - virtual void accept0(Visitor *visitor); - -// attributes: - double value; -}; - -class StringLiteral: public ExpressionNode -{ -public: - StringLiteral(QScriptNameIdImpl *v): - value (v) { kind = Kind_StringLiteral; } - - virtual ~StringLiteral() {} - - virtual void accept0(Visitor *visitor); - -// attributes: - QScriptNameIdImpl *value; -}; - -class RegExpLiteral: public ExpressionNode -{ -public: - RegExpLiteral(QScriptNameIdImpl *p, int f): - pattern (p), flags (f) { kind = Kind_RegExpLiteral; } - - virtual ~RegExpLiteral() {} - - virtual void accept0(Visitor *visitor); - -// attributes: - QScriptNameIdImpl *pattern; - int flags; -}; - -class ArrayLiteral: public ExpressionNode -{ -public: - ArrayLiteral(Elision *e): - elements (0), elision (e) - { kind = Kind_ArrayLiteral; } - - ArrayLiteral(ElementList *elts): - elements (elts), elision (0) - { kind = Kind_ArrayLiteral; } - - ArrayLiteral(ElementList *elts, Elision *e): - elements (elts), elision (e) - { kind = Kind_ArrayLiteral; } - - virtual ~ArrayLiteral() {} - - virtual void accept0(Visitor *visitor); - -// attributes - ElementList *elements; - Elision *elision; -}; - -class ObjectLiteral: public ExpressionNode -{ -public: - ObjectLiteral(): - properties (0) { kind = Kind_ObjectLiteral; } - - ObjectLiteral(PropertyNameAndValueList *plist): - properties (plist) { kind = Kind_ObjectLiteral; } - - virtual ~ObjectLiteral() {} - - virtual void accept0(Visitor *visitor); - -// attributes - PropertyNameAndValueList *properties; -}; - -class ElementList: public Node -{ -public: - ElementList(Elision *e, ExpressionNode *expr): - elision (e), expression (expr), next (this) - { kind = Kind_ElementList; } - - ElementList(ElementList *previous, Elision *e, ExpressionNode *expr): - elision (e), expression (expr) - { - kind = Kind_ElementList; - next = previous->next; - previous->next = this; - } - - virtual ~ElementList() {} - - inline ElementList *finish () - { - ElementList *front = next; - next = 0; - return front; - } - - virtual void accept0(Visitor *visitor); - -// attributes - Elision *elision; - ExpressionNode *expression; - ElementList *next; -}; - -class Elision: public Node -{ -public: - Elision(): - next (this) { kind = Kind_Elision; } - - Elision(Elision *previous) - { - kind = Kind_Elision; - next = previous->next; - previous->next = this; - } - - virtual ~Elision() {} - - virtual void accept0(Visitor *visitor); - - inline Elision *finish () - { - Elision *front = next; - next = 0; - return front; - } - -// attributes - Elision *next; -}; - -class PropertyNameAndValueList: public Node -{ -public: - PropertyNameAndValueList(PropertyName *n, ExpressionNode *v): - name (n), value (v), next (this) - { kind = Kind_PropertyNameAndValueList; } - - PropertyNameAndValueList(PropertyNameAndValueList *previous, PropertyName *n, ExpressionNode *v): - name (n), value (v) - { - kind = Kind_PropertyNameAndValueList; - next = previous->next; - previous->next = this; - } - - virtual ~PropertyNameAndValueList() {} - - virtual void accept0(Visitor *visitor); - - inline PropertyNameAndValueList *finish () - { - PropertyNameAndValueList *front = next; - next = 0; - return front; - } - -// attributes - PropertyName *name; - ExpressionNode *value; - PropertyNameAndValueList *next; -}; - -class PropertyName: public Node -{ -public: - PropertyName() { kind = Kind_PropertyName; } - virtual ~PropertyName() {} -}; - -class IdentifierPropertyName: public PropertyName -{ -public: - IdentifierPropertyName(QScriptNameIdImpl *n): - id (n) { kind = Kind_IdentifierPropertyName; } - - virtual ~IdentifierPropertyName() {} - - virtual void accept0(Visitor *visitor); - -// attributes - QScriptNameIdImpl *id; -}; - -class StringLiteralPropertyName: public PropertyName -{ -public: - StringLiteralPropertyName(QScriptNameIdImpl *n): - id (n) { kind = Kind_StringLiteralPropertyName; } - virtual ~StringLiteralPropertyName() {} - - virtual void accept0(Visitor *visitor); - -// attributes - QScriptNameIdImpl *id; -}; - -class NumericLiteralPropertyName: public PropertyName -{ -public: - NumericLiteralPropertyName(double n): - id (n) { kind = Kind_NumericLiteralPropertyName; } - virtual ~NumericLiteralPropertyName() {} - - virtual void accept0(Visitor *visitor); - -// attributes - double id; -}; - -class ArrayMemberExpression: public ExpressionNode -{ -public: - ArrayMemberExpression(ExpressionNode *b, ExpressionNode *e): - base (b), expression (e) - { kind = Kind_ArrayMemberExpression; } - - virtual ~ArrayMemberExpression() {} - - virtual void accept0(Visitor *visitor); - -// attributes - ExpressionNode *base; - ExpressionNode *expression; -}; - -class FieldMemberExpression: public ExpressionNode -{ -public: - FieldMemberExpression(ExpressionNode *b, QScriptNameIdImpl *n): - base (b), name (n) - { kind = Kind_FieldMemberExpression; } - - virtual ~FieldMemberExpression() {} - - virtual void accept0(Visitor *visitor); - -// attributes - ExpressionNode *base; - QScriptNameIdImpl *name; -}; - -class NewMemberExpression: public ExpressionNode -{ -public: - NewMemberExpression(ExpressionNode *b, ArgumentList *a): - base (b), arguments (a) - { kind = Kind_NewMemberExpression; } - - virtual ~NewMemberExpression() {} - - virtual void accept0(Visitor *visitor); - -// attributes - ExpressionNode *base; - ArgumentList *arguments; -}; - -class NewExpression: public ExpressionNode -{ -public: - NewExpression(ExpressionNode *e): - expression (e) { kind = Kind_NewExpression; } - - virtual ~NewExpression() {} - - virtual void accept0(Visitor *visitor); - -// attributes - ExpressionNode *expression; -}; - -class CallExpression: public ExpressionNode -{ -public: - CallExpression(ExpressionNode *b, ArgumentList *a): - base (b), arguments (a) - { kind = Kind_CallExpression; } - - virtual ~CallExpression() {} - - virtual void accept0(Visitor *visitor); - -// attributes - ExpressionNode *base; - ArgumentList *arguments; -}; - -class ArgumentList: public Node -{ -public: - ArgumentList(ExpressionNode *e): - expression (e), next (this) - { kind = Kind_ArgumentList; } - - ArgumentList(ArgumentList *previous, ExpressionNode *e): - expression (e) - { - kind = Kind_ArgumentList; - next = previous->next; - previous->next = this; - } - - virtual ~ArgumentList() {} - - virtual void accept0(Visitor *visitor); - - inline ArgumentList *finish () - { - ArgumentList *front = next; - next = 0; - return front; - } - -// attributes - ExpressionNode *expression; - ArgumentList *next; -}; - -class PostIncrementExpression: public ExpressionNode -{ -public: - PostIncrementExpression(ExpressionNode *b): - base (b) { kind = Kind_PostIncrementExpression; } - - virtual ~PostIncrementExpression() {} - - virtual void accept0(Visitor *visitor); - -// attributes - ExpressionNode *base; -}; - -class PostDecrementExpression: public ExpressionNode -{ -public: - PostDecrementExpression(ExpressionNode *b): - base (b) { kind = Kind_PostDecrementExpression; } - - virtual ~PostDecrementExpression() {} - - virtual void accept0(Visitor *visitor); - -// attributes - ExpressionNode *base; -}; - -class DeleteExpression: public ExpressionNode -{ -public: - DeleteExpression(ExpressionNode *e): - expression (e) { kind = Kind_DeleteExpression; } - virtual ~DeleteExpression() {} - - virtual void accept0(Visitor *visitor); - -// attributes - ExpressionNode *expression; -}; - -class VoidExpression: public ExpressionNode -{ -public: - VoidExpression(ExpressionNode *e): - expression (e) { kind = Kind_VoidExpression; } - - virtual ~VoidExpression() {} - - virtual void accept0(Visitor *visitor); - -// attributes - ExpressionNode *expression; -}; - -class TypeOfExpression: public ExpressionNode -{ -public: - TypeOfExpression(ExpressionNode *e): - expression (e) { kind = Kind_TypeOfExpression; } - - virtual ~TypeOfExpression() {} - - virtual void accept0(Visitor *visitor); - -// attributes - ExpressionNode *expression; -}; - -class PreIncrementExpression: public ExpressionNode -{ -public: - PreIncrementExpression(ExpressionNode *e): - expression (e) { kind = Kind_PreIncrementExpression; } - - virtual ~PreIncrementExpression() {} - - virtual void accept0(Visitor *visitor); - -// attributes - ExpressionNode *expression; -}; - -class PreDecrementExpression: public ExpressionNode -{ -public: - PreDecrementExpression(ExpressionNode *e): - expression (e) { kind = Kind_PreDecrementExpression; } - - virtual ~PreDecrementExpression() {} - - virtual void accept0(Visitor *visitor); - -// attributes - ExpressionNode *expression; -}; - -class UnaryPlusExpression: public ExpressionNode -{ -public: - UnaryPlusExpression(ExpressionNode *e): - expression (e) { kind = Kind_UnaryPlusExpression; } - - virtual ~UnaryPlusExpression() {} - - virtual void accept0(Visitor *visitor); - -// attributes - ExpressionNode *expression; -}; - -class UnaryMinusExpression: public ExpressionNode -{ -public: - UnaryMinusExpression(ExpressionNode *e): - expression (e) { kind = Kind_UnaryMinusExpression; } - - virtual ~UnaryMinusExpression() {} - - virtual void accept0(Visitor *visitor); - -// attributes - ExpressionNode *expression; -}; - -class TildeExpression: public ExpressionNode -{ -public: - TildeExpression(ExpressionNode *e): - expression (e) { kind = Kind_TildeExpression; } - - virtual ~TildeExpression() {} - - virtual void accept0(Visitor *visitor); - -// attributes - ExpressionNode *expression; -}; - -class NotExpression: public ExpressionNode -{ -public: - NotExpression(ExpressionNode *e): - expression (e) { kind = Kind_NotExpression; } - - virtual ~NotExpression() {} - - virtual void accept0(Visitor *visitor); - -// attributes - ExpressionNode *expression; -}; - -class BinaryExpression: public ExpressionNode -{ -public: - BinaryExpression(ExpressionNode *l, int o, ExpressionNode *r): - left (l), op (o), right (r) - { kind = Kind_BinaryExpression; } - - virtual ~BinaryExpression() {} - - virtual BinaryExpression *binaryExpressionCast(); - - virtual void accept0(Visitor *visitor); - -// attributes - ExpressionNode *left; - int op; - ExpressionNode *right; -}; - -class ConditionalExpression: public ExpressionNode -{ -public: - ConditionalExpression(ExpressionNode *e, ExpressionNode *t, ExpressionNode *f): - expression (e), ok (t), ko (f) - { kind = Kind_ConditionalExpression; } - - virtual ~ConditionalExpression() {} - - virtual void accept0(Visitor *visitor); - -// attributes - ExpressionNode *expression; - ExpressionNode *ok; - ExpressionNode *ko; -}; - -class Expression: public ExpressionNode // ### rename -{ -public: - Expression(ExpressionNode *l, ExpressionNode *r): - left (l), right (r) { kind = Kind_Expression; } - - virtual ~Expression() {} - - virtual void accept0(Visitor *visitor); - -// attributes - ExpressionNode *left; - ExpressionNode *right; -}; - -class Block: public Statement -{ -public: - Block(StatementList *slist): - statements (slist) { kind = Kind_Block; } - - virtual ~Block() {} - - virtual void accept0(Visitor *visitor); - -// attributes - StatementList *statements; -}; - -class StatementList: public Node -{ -public: - StatementList(Statement *stmt): - statement (stmt), next (this) - { kind = Kind_StatementList; } - - StatementList(StatementList *previous, Statement *stmt): - statement (stmt) - { - kind = Kind_StatementList; - next = previous->next; - previous->next = this; - } - - virtual ~StatementList() {} - - virtual void accept0(Visitor *visitor); - - inline StatementList *finish () - { - StatementList *front = next; - next = 0; - return front; - } - -// attributes - Statement *statement; - StatementList *next; -}; - -class VariableStatement: public Statement -{ -public: - VariableStatement(VariableDeclarationList *vlist): - declarations (vlist) - { kind = Kind_VariableStatement; } - - virtual ~VariableStatement() {} - - virtual void accept0(Visitor *visitor); - -// attributes - VariableDeclarationList *declarations; -}; - -class VariableDeclaration: public Node -{ -public: - VariableDeclaration(QScriptNameIdImpl *n, ExpressionNode *e): - name (n), expression (e), readOnly(false) - { kind = Kind_VariableDeclaration; } - - virtual ~VariableDeclaration() {} - - virtual void accept0(Visitor *visitor); - -// attributes - QScriptNameIdImpl *name; - ExpressionNode *expression; - bool readOnly; -}; - -class VariableDeclarationList: public Node -{ -public: - VariableDeclarationList(VariableDeclaration *decl): - declaration (decl), next (this) - { kind = Kind_VariableDeclarationList; } - - VariableDeclarationList(VariableDeclarationList *previous, VariableDeclaration *decl): - declaration (decl) - { - kind = Kind_VariableDeclarationList; - next = previous->next; - previous->next = this; - } - - virtual ~VariableDeclarationList() {} - - virtual void accept0(Visitor *visitor); - - inline VariableDeclarationList *finish (bool readOnly) - { - VariableDeclarationList *front = next; - next = 0; - if (readOnly) { - VariableDeclarationList *vdl; - for (vdl = front; vdl != 0; vdl = vdl->next) - vdl->declaration->readOnly = true; - } - return front; - } - -// attributes - VariableDeclaration *declaration; - VariableDeclarationList *next; -}; - -class EmptyStatement: public Statement -{ -public: - EmptyStatement() { kind = Kind_EmptyStatement; } - virtual ~EmptyStatement() {} - - virtual void accept0(Visitor *visitor); -}; - -class ExpressionStatement: public Statement -{ -public: - ExpressionStatement(ExpressionNode *e): - expression (e) { kind = Kind_ExpressionStatement; } - - virtual ~ExpressionStatement() {} - - virtual void accept0(Visitor *visitor); - -// attributes - ExpressionNode *expression; -}; - -class IfStatement: public Statement -{ -public: - IfStatement(ExpressionNode *e, Statement *t, Statement *f = 0): - expression (e), ok (t), ko (f) - { kind = Kind_IfStatement; } - - virtual ~IfStatement() {} - - virtual void accept0(Visitor *visitor); - -// attributes - ExpressionNode *expression; - Statement *ok; - Statement *ko; -}; - -class DoWhileStatement: public Statement -{ -public: - DoWhileStatement(Statement *stmt, ExpressionNode *e): - statement (stmt), expression (e) - { kind = Kind_DoWhileStatement; } - - virtual ~DoWhileStatement() {} - - virtual void accept0(Visitor *visitor); - -// attributes - Statement *statement; - ExpressionNode *expression; -}; - -class WhileStatement: public Statement -{ -public: - WhileStatement(ExpressionNode *e, Statement *stmt): - expression (e), statement (stmt) - { kind = Kind_WhileStatement; } - - virtual ~WhileStatement() {} - - virtual void accept0(Visitor *visitor); - -// attributes - ExpressionNode *expression; - Statement *statement; -}; - -class ForStatement: public Statement -{ -public: - ForStatement(ExpressionNode *i, ExpressionNode *c, ExpressionNode *e, Statement *stmt): - initialiser (i), condition (c), expression (e), statement (stmt) - { kind = Kind_ForStatement; } - - virtual ~ForStatement() {} - - virtual void accept0(Visitor *visitor); - -// attributes - ExpressionNode *initialiser; - ExpressionNode *condition; - ExpressionNode *expression; - Statement *statement; -}; - -class LocalForStatement: public Statement -{ -public: - LocalForStatement(VariableDeclarationList *vlist, ExpressionNode *c, ExpressionNode *e, Statement *stmt): - declarations (vlist), condition (c), expression (e), statement (stmt) - { kind = Kind_LocalForStatement; } - - virtual ~LocalForStatement() {} - - virtual void accept0(Visitor *visitor); - -// attributes - VariableDeclarationList *declarations; - ExpressionNode *condition; - ExpressionNode *expression; - Statement *statement; -}; - -class ForEachStatement: public Statement -{ -public: - ForEachStatement(ExpressionNode *i, ExpressionNode *e, Statement *stmt): - initialiser (i), expression (e), statement (stmt) - { kind = Kind_ForEachStatement; } - - virtual ~ForEachStatement() {} - - virtual void accept0(Visitor *visitor); - -// attributes - ExpressionNode *initialiser; - ExpressionNode *expression; - Statement *statement; -}; - -class LocalForEachStatement: public Statement -{ -public: - LocalForEachStatement(VariableDeclaration *v, ExpressionNode *e, Statement *stmt): - declaration (v), expression (e), statement (stmt) - { kind = Kind_LocalForEachStatement; } - - virtual ~LocalForEachStatement() {} - - virtual void accept0(Visitor *visitor); - -// attributes - VariableDeclaration *declaration; - ExpressionNode *expression; - Statement *statement; -}; - -class ContinueStatement: public Statement -{ -public: - ContinueStatement(QScriptNameIdImpl *l = 0): - label (l) { kind = Kind_ContinueStatement; } - - virtual ~ContinueStatement() {} - - virtual void accept0(Visitor *visitor); - -// attributes - QScriptNameIdImpl *label; -}; - -class BreakStatement: public Statement -{ -public: - BreakStatement(QScriptNameIdImpl *l = 0): - label (l) { kind = Kind_BreakStatement; } - - virtual ~BreakStatement() {} - - virtual void accept0(Visitor *visitor); - -// attributes - QScriptNameIdImpl *label; -}; - -class ReturnStatement: public Statement -{ -public: - ReturnStatement(ExpressionNode *e): - expression (e) { kind = Kind_ReturnStatement; } - - virtual ~ReturnStatement() {} - - virtual void accept0(Visitor *visitor); - -// attributes - ExpressionNode *expression; -}; - -class WithStatement: public Statement -{ -public: - WithStatement(ExpressionNode *e, Statement *stmt): - expression (e), statement (stmt) - { kind = Kind_WithStatement; } - - virtual ~WithStatement() {} - - virtual void accept0(Visitor *visitor); - -// attributes - ExpressionNode *expression; - Statement *statement; -}; - -class SwitchStatement: public Statement -{ -public: - SwitchStatement(ExpressionNode *e, CaseBlock *b): - expression (e), block (b) - { kind = Kind_SwitchStatement; } - - virtual ~SwitchStatement() {} - - virtual void accept0(Visitor *visitor); - -// attributes - ExpressionNode *expression; - CaseBlock *block; -}; - -class CaseBlock: public Node -{ -public: - CaseBlock(CaseClauses *c, DefaultClause *d = 0, CaseClauses *r = 0): - clauses (c), defaultClause (d), moreClauses (r) - { kind = Kind_CaseBlock; } - - virtual ~CaseBlock() {} - - virtual void accept0(Visitor *visitor); - -// attributes - CaseClauses *clauses; - DefaultClause *defaultClause; - CaseClauses *moreClauses; -}; - -class CaseClauses: public Node -{ -public: - CaseClauses(CaseClause *c): - clause (c), next (this) - { kind = Kind_CaseClauses; } - - CaseClauses(CaseClauses *previous, CaseClause *c): - clause (c) - { - kind = Kind_CaseClauses; - next = previous->next; - previous->next = this; - } - - virtual ~CaseClauses() {} - - virtual void accept0(Visitor *visitor); - - inline CaseClauses *finish () - { - CaseClauses *front = next; - next = 0; - return front; - } - -//attributes - CaseClause *clause; - CaseClauses *next; -}; - -class CaseClause: public Node -{ -public: - CaseClause(ExpressionNode *e, StatementList *slist): - expression (e), statements (slist) - { kind = Kind_CaseClause; } - - virtual ~CaseClause() {} - - virtual void accept0(Visitor *visitor); - -// attributes - ExpressionNode *expression; - StatementList *statements; -}; - -class DefaultClause: public Node -{ -public: - DefaultClause(StatementList *slist): - statements (slist) - { kind = Kind_DefaultClause; } - - virtual ~DefaultClause() {} - - virtual void accept0(Visitor *visitor); - -// attributes - StatementList *statements; -}; - -class LabelledStatement: public Statement -{ -public: - LabelledStatement(QScriptNameIdImpl *l, Statement *stmt): - label (l), statement (stmt) - { kind = Kind_LabelledStatement; } - - virtual ~LabelledStatement() {} - - virtual void accept0(Visitor *visitor); - -// attributes - QScriptNameIdImpl *label; - Statement *statement; -}; - -class ThrowStatement: public Statement -{ -public: - ThrowStatement(ExpressionNode *e): - expression (e) { kind = Kind_ThrowStatement; } - - virtual ~ThrowStatement() {} - - virtual void accept0(Visitor *visitor); - -// attributes - ExpressionNode *expression; -}; - -class TryStatement: public Statement -{ -public: - TryStatement(Statement *stmt, Catch *c, Finally *f): - statement (stmt), catchExpression (c), finallyExpression (f) - { kind = Kind_TryStatement; } - - TryStatement(Statement *stmt, Finally *f): - statement (stmt), catchExpression (0), finallyExpression (f) - { kind = Kind_TryStatement; } - - TryStatement(Statement *stmt, Catch *c): - statement (stmt), catchExpression (c), finallyExpression (0) - { kind = Kind_TryStatement; } - - virtual ~TryStatement() {} - - virtual void accept0(Visitor *visitor); - -// attributes - Statement *statement; - Catch *catchExpression; - Finally *finallyExpression; -}; - -class Catch: public Node -{ -public: - Catch(QScriptNameIdImpl *n, Statement *stmt): - name (n), statement (stmt) - { kind = Kind_Catch; } - - virtual ~Catch() {} - - virtual void accept0(Visitor *visitor); - -// attributes - QScriptNameIdImpl *name; - Statement *statement; -}; - -class Finally: public Node -{ -public: - Finally(Statement *stmt): - statement (stmt) - { kind = Kind_Finally; } - - virtual ~Finally() {} - - virtual void accept0(Visitor *visitor); - -// attributes - Statement *statement; -}; - -class FunctionExpression: public ExpressionNode -{ -public: - FunctionExpression(QScriptNameIdImpl *n, FormalParameterList *f, FunctionBody *b): - name (n), formals (f), body (b) - { kind = Kind_FunctionExpression; } - - virtual ~FunctionExpression() {} - - virtual void accept0(Visitor *visitor); - -// attributes - QScriptNameIdImpl *name; - FormalParameterList *formals; - FunctionBody *body; -}; - -class FunctionDeclaration: public FunctionExpression -{ -public: - FunctionDeclaration(QScriptNameIdImpl *n, FormalParameterList *f, FunctionBody *b): - FunctionExpression(n, f, b) - { kind = Kind_FunctionDeclaration; } - - virtual ~FunctionDeclaration() {} - - virtual void accept0(Visitor *visitor); -}; - -class FormalParameterList: public Node -{ -public: - FormalParameterList(QScriptNameIdImpl *n): - name (n), next (this) - { kind = Kind_FormalParameterList; } - - FormalParameterList(FormalParameterList *previous, QScriptNameIdImpl *n): - name (n) - { - kind = Kind_FormalParameterList; - next = previous->next; - previous->next = this; - } - - virtual ~FormalParameterList() {} - - virtual void accept0(Visitor *visitor); - - inline FormalParameterList *finish () - { - FormalParameterList *front = next; - next = 0; - return front; - } - -// attributes - QScriptNameIdImpl *name; - FormalParameterList *next; -}; - -class FunctionBody: public Node -{ -public: - FunctionBody(SourceElements *elts): - elements (elts) - { kind = Kind_FunctionBody; } - - virtual ~FunctionBody() {} - - virtual void accept0(Visitor *visitor); - -// attributes - SourceElements *elements; -}; - -class Program: public Node -{ -public: - Program(SourceElements *elts): - elements (elts) - { kind = Kind_Program; } - - virtual ~Program() {} - - virtual void accept0(Visitor *visitor); - -// attributes - SourceElements *elements; -}; - -class SourceElements: public Node -{ -public: - SourceElements(SourceElement *elt): - element (elt), next (this) - { kind = Kind_SourceElements; } - - SourceElements(SourceElements *previous, SourceElement *elt): - element (elt) - { - kind = Kind_SourceElements; - next = previous->next; - previous->next = this; - } - - virtual ~SourceElements() {} - - virtual void accept0(Visitor *visitor); - - inline SourceElements *finish () - { - SourceElements *front = next; - next = 0; - return front; - } - -// attributes - SourceElement *element; - SourceElements *next; -}; - -class SourceElement: public Node -{ -public: - inline SourceElement() - { kind = Kind_SourceElement; } - - virtual ~SourceElement() {} -}; - -class FunctionSourceElement: public SourceElement -{ -public: - FunctionSourceElement(FunctionDeclaration *f): - declaration (f) - { kind = Kind_FunctionSourceElement; } - - virtual ~FunctionSourceElement() {} - - virtual void accept0(Visitor *visitor); - -// attributes - FunctionDeclaration *declaration; -}; - -class StatementSourceElement: public SourceElement -{ -public: - StatementSourceElement(Statement *stmt): - statement (stmt) - { kind = Kind_StatementSourceElement; } - - virtual ~StatementSourceElement() {} - - virtual void accept0(Visitor *visitor); - -// attributes - Statement *statement; -}; - -class DebuggerStatement: public Statement -{ -public: - DebuggerStatement() - { kind = Kind_DebuggerStatement; } - - virtual ~DebuggerStatement() {} - - virtual void accept0(Visitor *visitor); -}; - -} } // namespace AST - -QT_END_NAMESPACE - -#endif |