diff options
Diffstat (limited to 'src/script/parser/qscriptparser.cpp')
-rw-r--r-- | src/script/parser/qscriptparser.cpp | 1139 |
1 files changed, 0 insertions, 1139 deletions
diff --git a/src/script/parser/qscriptparser.cpp b/src/script/parser/qscriptparser.cpp deleted file mode 100644 index c59277f..0000000 --- a/src/script/parser/qscriptparser.cpp +++ /dev/null @@ -1,1139 +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$ -** -****************************************************************************/ - -// This file was generated by qlalr - DO NOT EDIT! - - -#include <QtCore/QtDebug> - -#include <string.h> - -#define Q_SCRIPT_UPDATE_POSITION(node, startloc, endloc) do { \ - node->startLine = startloc.startLine; \ - node->startColumn = startloc.startColumn; \ - node->endLine = endloc.endLine; \ - node->endColumn = endloc.endColumn; \ -} while (0) - - - -#include "qscriptparser_p.h" - -// -// This file is automatically generated from qscript.g. -// Changes will be lost. -// - -QT_BEGIN_NAMESPACE - -inline static bool automatic(QScriptEnginePrivate *driver, int token) -{ - return token == QScriptGrammar::T_RBRACE - || token == 0 - || driver->lexer()->prevTerminator(); -} - - -QScriptParser::QScriptParser(): - tos(0), - stack_size(0), - sym_stack(0), - state_stack(0), - location_stack(0) -{ -} - -QScriptParser::~QScriptParser() -{ - if (stack_size) { - qFree(sym_stack); - qFree(state_stack); - qFree(location_stack); - } -} - -static inline QScriptParser::Location location(QScript::Lexer *lexer) -{ - QScriptParser::Location loc; - loc.startLine = lexer->startLineNo(); - loc.startColumn = lexer->startColumnNo(); - loc.endLine = lexer->endLineNo(); - loc.endColumn = lexer->endColumnNo(); - return loc; -} - -bool QScriptParser::parse(QScriptEnginePrivate *driver) -{ - const int INITIAL_STATE = 0; - QScript::Lexer *lexer = driver->lexer(); - - int yytoken = -1; - int saved_yytoken = -1; - - reallocateStack(); - - tos = 0; - state_stack[++tos] = INITIAL_STATE; - - while (true) - { - const int state = state_stack [tos]; - if (yytoken == -1 && - TERMINAL_COUNT != action_index [state]) - { - if (saved_yytoken == -1) - { - yytoken = lexer->lex(); - location_stack [tos] = location(lexer); - } - else - { - yytoken = saved_yytoken; - saved_yytoken = -1; - } - } - - int act = t_action (state, yytoken); - - if (act == ACCEPT_STATE) - return true; - - else if (act > 0) - { - if (++tos == stack_size) - reallocateStack(); - - sym_stack [tos].dval = lexer->dval (); - state_stack [tos] = act; - location_stack [tos] = location(lexer); - yytoken = -1; - } - - else if (act < 0) - { - int r = - act - 1; - - tos -= rhs [r]; - act = state_stack [tos++]; - - switch (r) { - -case 0: { - sym(1).Node = QScript::makeAstNode<QScript::AST::ThisExpression> (driver->nodePool()); - Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(1)); -} break; - -case 1: { - sym(1).Node = QScript::makeAstNode<QScript::AST::IdentifierExpression> (driver->nodePool(), sym(1).sval); - Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(1)); -} break; - -case 2: { - sym(1).Node = QScript::makeAstNode<QScript::AST::NullExpression> (driver->nodePool()); - Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(1)); -} break; - -case 3: { - sym(1).Node = QScript::makeAstNode<QScript::AST::TrueLiteral> (driver->nodePool()); - Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(1)); -} break; - -case 4: { - sym(1).Node = QScript::makeAstNode<QScript::AST::FalseLiteral> (driver->nodePool()); - Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(1)); -} break; - -case 5: { - sym(1).Node = QScript::makeAstNode<QScript::AST::NumericLiteral> (driver->nodePool(), sym(1).dval); - Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(1)); -} break; - -case 6: { - sym(1).Node = QScript::makeAstNode<QScript::AST::StringLiteral> (driver->nodePool(), sym(1).sval); - Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(1)); -} break; - -case 7: { - bool rx = lexer->scanRegExp(QScript::Lexer::NoPrefix); - if (!rx) { - error_message = lexer->errorMessage(); - error_lineno = lexer->startLineNo(); - error_column = lexer->startColumnNo(); - return false; - } - sym(1).Node = QScript::makeAstNode<QScript::AST::RegExpLiteral> (driver->nodePool(), lexer->pattern, lexer->flags); - Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(1)); -} break; - -case 8: { - bool rx = lexer->scanRegExp(QScript::Lexer::EqualPrefix); - if (!rx) { - error_message = lexer->errorMessage(); - error_lineno = lexer->startLineNo(); - error_column = lexer->startColumnNo(); - return false; - } - sym(1).Node = QScript::makeAstNode<QScript::AST::RegExpLiteral> (driver->nodePool(), lexer->pattern, lexer->flags); - Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(1)); -} break; - -case 9: { - sym(1).Node = QScript::makeAstNode<QScript::AST::ArrayLiteral> (driver->nodePool(), sym(2).Elision); - Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(3)); -} break; - -case 10: { - sym(1).Node = QScript::makeAstNode<QScript::AST::ArrayLiteral> (driver->nodePool(), sym(2).ElementList->finish ()); - Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(3)); -} break; - -case 11: { - sym(1).Node = QScript::makeAstNode<QScript::AST::ArrayLiteral> (driver->nodePool(), sym(2).ElementList->finish (), sym(4).Elision); - Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(5)); -} break; - -case 12: { - if (sym(2).Node) - sym(1).Node = QScript::makeAstNode<QScript::AST::ObjectLiteral> (driver->nodePool(), sym(2).PropertyNameAndValueList->finish ()); - else - sym(1).Node = QScript::makeAstNode<QScript::AST::ObjectLiteral> (driver->nodePool()); - Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(3)); -} break; - -case 13: { - sym(1).Node = QScript::makeAstNode<QScript::AST::ObjectLiteral> (driver->nodePool(), sym(2).PropertyNameAndValueList->finish ()); - Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(4)); -} break; - -case 14: { - sym(1) = sym(2); - Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(3)); -} break; - -case 15: { - sym(1).Node = QScript::makeAstNode<QScript::AST::ElementList> (driver->nodePool(), sym(1).Elision, sym(2).Expression); - Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(2)); -} break; - -case 16: { - sym(1).Node = QScript::makeAstNode<QScript::AST::ElementList> (driver->nodePool(), sym(1).ElementList, sym(3).Elision, sym(4).Expression); - Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(4)); -} break; - -case 17: { - sym(1).Node = QScript::makeAstNode<QScript::AST::Elision> (driver->nodePool()); - Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(1)); -} break; - -case 18: { - sym(1).Node = QScript::makeAstNode<QScript::AST::Elision> (driver->nodePool(), sym(1).Elision); - Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(2)); -} break; - -case 19: { - sym(1).Node = 0; -} break; - -case 20: { - sym(1).Elision = sym(1).Elision->finish (); - Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(1)); -} break; - -case 21: { - sym(1).Node = QScript::makeAstNode<QScript::AST::PropertyNameAndValueList> (driver->nodePool(), sym(1).PropertyName, sym(3).Expression); - Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(3)); -} break; - -case 22: { - sym(1).Node = QScript::makeAstNode<QScript::AST::PropertyNameAndValueList> (driver->nodePool(), sym(1).PropertyNameAndValueList, sym(3).PropertyName, sym(5).Expression); - Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(5)); -} break; - -case 23: { - sym(1).Node = QScript::makeAstNode<QScript::AST::IdentifierPropertyName> (driver->nodePool(), sym(1).sval); - Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(1)); -} break; - -case 24: { - sym(1).Node = QScript::makeAstNode<QScript::AST::StringLiteralPropertyName> (driver->nodePool(), sym(1).sval); - Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(1)); -} break; - -case 25: { - sym(1).Node = QScript::makeAstNode<QScript::AST::NumericLiteralPropertyName> (driver->nodePool(), sym(1).dval); - Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(1)); -} break; - -case 26: { - sym(1).Node = QScript::makeAstNode<QScript::AST::IdentifierPropertyName> (driver->nodePool(), sym(1).sval); - Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(1)); -} break; - -case 27: - -case 28: - -case 29: - -case 30: - -case 31: - -case 32: - -case 33: - -case 34: - -case 35: - -case 36: - -case 37: - -case 38: - -case 39: - -case 40: - -case 41: - -case 42: - -case 43: - -case 44: - -case 45: - -case 46: - -case 47: - -case 48: - -case 49: - -case 50: - -case 51: - -case 52: - -case 53: - -case 54: - -case 55: - -case 56: - -case 57: -{ - sym(1).sval = driver->intern(lexer->characterBuffer(), lexer->characterCount()); -} break; - -case 62: { - sym(1).Node = QScript::makeAstNode<QScript::AST::ArrayMemberExpression> (driver->nodePool(), sym(1).Expression, sym(3).Expression); - Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(4)); -} break; - -case 63: { - sym(1).Node = QScript::makeAstNode<QScript::AST::FieldMemberExpression> (driver->nodePool(), sym(1).Expression, sym(3).sval); - Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(4)); -} break; - -case 64: { - sym(1).Node = QScript::makeAstNode<QScript::AST::NewMemberExpression> (driver->nodePool(), sym(2).Expression, sym(3).ArgumentList); - Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(3)); -} break; - -case 66: { - sym(1).Node = QScript::makeAstNode<QScript::AST::NewExpression> (driver->nodePool(), sym(2).Expression); - Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(2)); -} break; - -case 67: { - sym(1).Node = QScript::makeAstNode<QScript::AST::CallExpression> (driver->nodePool(), sym(1).Expression, sym(2).ArgumentList); - Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(2)); -} break; - -case 68: { - sym(1).Node = QScript::makeAstNode<QScript::AST::CallExpression> (driver->nodePool(), sym(1).Expression, sym(2).ArgumentList); - Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(2)); -} break; - -case 69: { - sym(1).Node = QScript::makeAstNode<QScript::AST::ArrayMemberExpression> (driver->nodePool(), sym(1).Expression, sym(3).Expression); - Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(4)); -} break; - -case 70: { - sym(1).Node = QScript::makeAstNode<QScript::AST::FieldMemberExpression> (driver->nodePool(), sym(1).Expression, sym(3).sval); - Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(3)); -} break; - -case 71: { - sym(1).Node = 0; -} break; - -case 72: { - sym(1).Node = sym(2).ArgumentList->finish (); - Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(3)); -} break; - -case 73: { - sym(1).Node = QScript::makeAstNode<QScript::AST::ArgumentList> (driver->nodePool(), sym(1).Expression); - Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(1)); -} break; - -case 74: { - sym(1).Node = QScript::makeAstNode<QScript::AST::ArgumentList> (driver->nodePool(), sym(1).ArgumentList, sym(3).Expression); - Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(3)); -} break; - -case 78: { - sym(1).Node = QScript::makeAstNode<QScript::AST::PostIncrementExpression> (driver->nodePool(), sym(1).Expression); - Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(2)); -} break; - -case 79: { - sym(1).Node = QScript::makeAstNode<QScript::AST::PostDecrementExpression> (driver->nodePool(), sym(1).Expression); - Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(2)); -} break; - -case 81: { - sym(1).Node = QScript::makeAstNode<QScript::AST::DeleteExpression> (driver->nodePool(), sym(2).Expression); - Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(2)); -} break; - -case 82: { - sym(1).Node = QScript::makeAstNode<QScript::AST::VoidExpression> (driver->nodePool(), sym(2).Expression); - Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(2)); -} break; - -case 83: { - sym(1).Node = QScript::makeAstNode<QScript::AST::TypeOfExpression> (driver->nodePool(), sym(2).Expression); - Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(2)); -} break; - -case 84: { - sym(1).Node = QScript::makeAstNode<QScript::AST::PreIncrementExpression> (driver->nodePool(), sym(2).Expression); - Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(2)); -} break; - -case 85: { - sym(1).Node = QScript::makeAstNode<QScript::AST::PreDecrementExpression> (driver->nodePool(), sym(2).Expression); - Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(2)); -} break; - -case 86: { - sym(1).Node = QScript::makeAstNode<QScript::AST::UnaryPlusExpression> (driver->nodePool(), sym(2).Expression); - Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(2)); -} break; - -case 87: { - sym(1).Node = QScript::makeAstNode<QScript::AST::UnaryMinusExpression> (driver->nodePool(), sym(2).Expression); - Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(2)); -} break; - -case 88: { - sym(1).Node = QScript::makeAstNode<QScript::AST::TildeExpression> (driver->nodePool(), sym(2).Expression); - Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(2)); -} break; - -case 89: { - sym(1).Node = QScript::makeAstNode<QScript::AST::NotExpression> (driver->nodePool(), sym(2).Expression); - Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(2)); -} break; - -case 91: { - sym(1).Node = QScript::makeAstNode<QScript::AST::BinaryExpression> (driver->nodePool(), sym(1).Expression, QSOperator::Mul, sym(3).Expression); - Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(3)); -} break; - -case 92: { - sym(1).Node = QScript::makeAstNode<QScript::AST::BinaryExpression> (driver->nodePool(), sym(1).Expression, QSOperator::Div, sym(3).Expression); - Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(3)); -} break; - -case 93: { - sym(1).Node = QScript::makeAstNode<QScript::AST::BinaryExpression> (driver->nodePool(), sym(1).Expression, QSOperator::Mod, sym(3).Expression); - Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(3)); -} break; - -case 95: { - sym(1).Node = QScript::makeAstNode<QScript::AST::BinaryExpression> (driver->nodePool(), sym(1).Expression, QSOperator::Add, sym(3).Expression); - Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(3)); -} break; - -case 96: { - sym(1).Node = QScript::makeAstNode<QScript::AST::BinaryExpression> (driver->nodePool(), sym(1).Expression, QSOperator::Sub, sym(3).Expression); - Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(3)); -} break; - -case 98: { - sym(1).Node = QScript::makeAstNode<QScript::AST::BinaryExpression> (driver->nodePool(), sym(1).Expression, QSOperator::LShift, sym(3).Expression); - Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(3)); -} break; - -case 99: { - sym(1).Node = QScript::makeAstNode<QScript::AST::BinaryExpression> (driver->nodePool(), sym(1).Expression, QSOperator::RShift, sym(3).Expression); - Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(3)); -} break; - -case 100: { - sym(1).Node = QScript::makeAstNode<QScript::AST::BinaryExpression> (driver->nodePool(), sym(1).Expression, QSOperator::URShift, sym(3).Expression); - Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(3)); -} break; - -case 102: { - sym(1).Node = QScript::makeAstNode<QScript::AST::BinaryExpression> (driver->nodePool(), sym(1).Expression, QSOperator::Lt, sym(3).Expression); - Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(3)); -} break; - -case 103: { - sym(1).Node = QScript::makeAstNode<QScript::AST::BinaryExpression> (driver->nodePool(), sym(1).Expression, QSOperator::Gt, sym(3).Expression); - Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(3)); -} break; - -case 104: { - sym(1).Node = QScript::makeAstNode<QScript::AST::BinaryExpression> (driver->nodePool(), sym(1).Expression, QSOperator::Le, sym(3).Expression); - Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(3)); -} break; - -case 105: { - sym(1).Node = QScript::makeAstNode<QScript::AST::BinaryExpression> (driver->nodePool(), sym(1).Expression, QSOperator::Ge, sym(3).Expression); - Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(3)); -} break; - -case 106: { - sym(1).Node = QScript::makeAstNode<QScript::AST::BinaryExpression> (driver->nodePool(), sym(1).Expression, QSOperator::InstanceOf, sym(3).Expression); - Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(3)); -} break; - -case 107: { - sym(1).Node = QScript::makeAstNode<QScript::AST::BinaryExpression> (driver->nodePool(), sym(1).Expression, QSOperator::In, sym(3).Expression); - Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(3)); -} break; - -case 109: { - sym(1).Node = QScript::makeAstNode<QScript::AST::BinaryExpression> (driver->nodePool(), sym(1).Expression, QSOperator::Lt, sym(3).Expression); - Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(3)); -} break; - -case 110: { - sym(1).Node = QScript::makeAstNode<QScript::AST::BinaryExpression> (driver->nodePool(), sym(1).Expression, QSOperator::Gt, sym(3).Expression); - Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(3)); -} break; - -case 111: { - sym(1).Node = QScript::makeAstNode<QScript::AST::BinaryExpression> (driver->nodePool(), sym(1).Expression, QSOperator::Le, sym(3).Expression); - Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(3)); -} break; - -case 112: { - sym(1).Node = QScript::makeAstNode<QScript::AST::BinaryExpression> (driver->nodePool(), sym(1).Expression, QSOperator::Ge, sym(3).Expression); - Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(3)); -} break; - -case 113: { - sym(1).Node = QScript::makeAstNode<QScript::AST::BinaryExpression> (driver->nodePool(), sym(1).Expression, QSOperator::InstanceOf, sym(3).Expression); - Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(3)); -} break; - -case 115: { - sym(1).Node = QScript::makeAstNode<QScript::AST::BinaryExpression> (driver->nodePool(), sym(1).Expression, QSOperator::Equal, sym(3).Expression); - Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(3)); -} break; - -case 116: { - sym(1).Node = QScript::makeAstNode<QScript::AST::BinaryExpression> (driver->nodePool(), sym(1).Expression, QSOperator::NotEqual, sym(3).Expression); - Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(3)); -} break; - -case 117: { - sym(1).Node = QScript::makeAstNode<QScript::AST::BinaryExpression> (driver->nodePool(), sym(1).Expression, QSOperator::StrictEqual, sym(3).Expression); - Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(3)); -} break; - -case 118: { - sym(1).Node = QScript::makeAstNode<QScript::AST::BinaryExpression> (driver->nodePool(), sym(1).Expression, QSOperator::StrictNotEqual, sym(3).Expression); - Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(3)); -} break; - -case 120: { - sym(1).Node = QScript::makeAstNode<QScript::AST::BinaryExpression> (driver->nodePool(), sym(1).Expression, QSOperator::Equal, sym(3).Expression); - Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(3)); -} break; - -case 121: { - sym(1).Node = QScript::makeAstNode<QScript::AST::BinaryExpression> (driver->nodePool(), sym(1).Expression, QSOperator::NotEqual, sym(3).Expression); - Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(3)); -} break; - -case 122: { - sym(1).Node = QScript::makeAstNode<QScript::AST::BinaryExpression> (driver->nodePool(), sym(1).Expression, QSOperator::StrictEqual, sym(3).Expression); - Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(3)); -} break; - -case 123: { - sym(1).Node = QScript::makeAstNode<QScript::AST::BinaryExpression> (driver->nodePool(), sym(1).Expression, QSOperator::StrictNotEqual, sym(3).Expression); - Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(3)); -} break; - -case 125: { - sym(1).Node = QScript::makeAstNode<QScript::AST::BinaryExpression> (driver->nodePool(), sym(1).Expression, QSOperator::BitAnd, sym(3).Expression); - Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(3)); -} break; - -case 127: { - sym(1).Node = QScript::makeAstNode<QScript::AST::BinaryExpression> (driver->nodePool(), sym(1).Expression, QSOperator::BitAnd, sym(3).Expression); - Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(3)); -} break; - -case 129: { - sym(1).Node = QScript::makeAstNode<QScript::AST::BinaryExpression> (driver->nodePool(), sym(1).Expression, QSOperator::BitXor, sym(3).Expression); - Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(3)); -} break; - -case 131: { - sym(1).Node = QScript::makeAstNode<QScript::AST::BinaryExpression> (driver->nodePool(), sym(1).Expression, QSOperator::BitXor, sym(3).Expression); - Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(3)); -} break; - -case 133: { - sym(1).Node = QScript::makeAstNode<QScript::AST::BinaryExpression> (driver->nodePool(), sym(1).Expression, QSOperator::BitOr, sym(3).Expression); - Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(3)); -} break; - -case 135: { - sym(1).Node = QScript::makeAstNode<QScript::AST::BinaryExpression> (driver->nodePool(), sym(1).Expression, QSOperator::BitOr, sym(3).Expression); - Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(3)); -} break; - -case 137: { - sym(1).Node = QScript::makeAstNode<QScript::AST::BinaryExpression> (driver->nodePool(), sym(1).Expression, QSOperator::And, sym(3).Expression); - Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(3)); -} break; - -case 139: { - sym(1).Node = QScript::makeAstNode<QScript::AST::BinaryExpression> (driver->nodePool(), sym(1).Expression, QSOperator::And, sym(3).Expression); - Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(3)); -} break; - -case 141: { - sym(1).Node = QScript::makeAstNode<QScript::AST::BinaryExpression> (driver->nodePool(), sym(1).Expression, QSOperator::Or, sym(3).Expression); - Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(3)); -} break; - -case 143: { - sym(1).Node = QScript::makeAstNode<QScript::AST::BinaryExpression> (driver->nodePool(), sym(1).Expression, QSOperator::Or, sym(3).Expression); - Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(3)); -} break; - -case 145: { - sym(1).Node = QScript::makeAstNode<QScript::AST::ConditionalExpression> (driver->nodePool(), sym(1).Expression, sym(3).Expression, sym(5).Expression); - Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(3)); -} break; - -case 147: { - sym(1).Node = QScript::makeAstNode<QScript::AST::ConditionalExpression> (driver->nodePool(), sym(1).Expression, sym(3).Expression, sym(5).Expression); - Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(3)); -} break; - -case 149: { - sym(1).Node = QScript::makeAstNode<QScript::AST::BinaryExpression> (driver->nodePool(), sym(1).Expression, sym(2).ival, sym(3).Expression); - Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(3)); -} break; - -case 151: { - sym(1).Node = QScript::makeAstNode<QScript::AST::BinaryExpression> (driver->nodePool(), sym(1).Expression, sym(2).ival, sym(3).Expression); - Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(3)); -} break; - -case 152: { - sym(1).ival = QSOperator::Assign; -} break; - -case 153: { - sym(1).ival = QSOperator::InplaceMul; -} break; - -case 154: { - sym(1).ival = QSOperator::InplaceDiv; -} break; - -case 155: { - sym(1).ival = QSOperator::InplaceMod; -} break; - -case 156: { - sym(1).ival = QSOperator::InplaceAdd; -} break; - -case 157: { - sym(1).ival = QSOperator::InplaceSub; -} break; - -case 158: { - sym(1).ival = QSOperator::InplaceLeftShift; -} break; - -case 159: { - sym(1).ival = QSOperator::InplaceRightShift; -} break; - -case 160: { - sym(1).ival = QSOperator::InplaceURightShift; -} break; - -case 161: { - sym(1).ival = QSOperator::InplaceAnd; -} break; - -case 162: { - sym(1).ival = QSOperator::InplaceXor; -} break; - -case 163: { - sym(1).ival = QSOperator::InplaceOr; -} break; - -case 165: { - sym(1).Node = QScript::makeAstNode<QScript::AST::Expression> (driver->nodePool(), sym(1).Expression, sym(3).Expression); - Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(3)); -} break; - -case 166: { - sym(1).Node = 0; -} break; - -case 169: { - sym(1).Node = QScript::makeAstNode<QScript::AST::Expression> (driver->nodePool(), sym(1).Expression, sym(3).Expression); - Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(3)); -} break; - -case 170: { - sym(1).Node = 0; -} break; - -case 187: { - sym(1).Node = QScript::makeAstNode<QScript::AST::Block> (driver->nodePool(), sym(2).StatementList); - Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(3)); -} break; - -case 188: { - sym(1).Node = QScript::makeAstNode<QScript::AST::StatementList> (driver->nodePool(), sym(1).Statement); - Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(1)); -} break; - -case 189: { - sym(1).Node = QScript::makeAstNode<QScript::AST::StatementList> (driver->nodePool(), sym(1).StatementList, sym(2).Statement); - Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(2)); -} break; - -case 190: { - sym(1).Node = 0; -} break; - -case 191: { - sym(1).Node = sym(1).StatementList->finish (); -} break; - -case 193: { - sym(1).Node = QScript::makeAstNode<QScript::AST::VariableStatement> (driver->nodePool(), sym(2).VariableDeclarationList->finish (/*readOnly=*/sym(1).ival == T_CONST)); - Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(3)); -} break; - -case 194: { - sym(1).ival = T_CONST; -} break; - -case 195: { - sym(1).ival = T_VAR; -} break; - -case 196: { - sym(1).Node = QScript::makeAstNode<QScript::AST::VariableDeclarationList> (driver->nodePool(), sym(1).VariableDeclaration); - Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(1)); -} break; - -case 197: { - sym(1).Node = QScript::makeAstNode<QScript::AST::VariableDeclarationList> (driver->nodePool(), sym(1).VariableDeclarationList, sym(3).VariableDeclaration); - Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(3)); -} break; - -case 198: { - sym(1).Node = QScript::makeAstNode<QScript::AST::VariableDeclarationList> (driver->nodePool(), sym(1).VariableDeclaration); - Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(1)); -} break; - -case 199: { - sym(1).Node = QScript::makeAstNode<QScript::AST::VariableDeclarationList> (driver->nodePool(), sym(1).VariableDeclarationList, sym(3).VariableDeclaration); - Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(3)); -} break; - -case 200: { - sym(1).Node = QScript::makeAstNode<QScript::AST::VariableDeclaration> (driver->nodePool(), sym(1).sval, sym(2).Expression); - Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(2)); -} break; - -case 201: { - sym(1).Node = QScript::makeAstNode<QScript::AST::VariableDeclaration> (driver->nodePool(), sym(1).sval, sym(2).Expression); - Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(2)); -} break; - -case 202: { - sym(1) = sym(2); - Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(2)); -} break; - -case 203: { - sym(1).Node = 0; -} break; - -case 205: { - sym(1) = sym(2); - Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(2)); -} break; - -case 206: { - sym(1).Node = 0; -} break; - -case 208: { - sym(1).Node = QScript::makeAstNode<QScript::AST::EmptyStatement> (driver->nodePool()); - Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(1)); -} break; - -case 210: { - sym(1).Node = QScript::makeAstNode<QScript::AST::ExpressionStatement> (driver->nodePool(), sym(1).Expression); - Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(2)); -} break; - -case 211: { - sym(1).Node = QScript::makeAstNode<QScript::AST::IfStatement> (driver->nodePool(), sym(3).Expression, sym(5).Statement, sym(7).Statement); - Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(7)); -} break; - -case 212: { - sym(1).Node = QScript::makeAstNode<QScript::AST::IfStatement> (driver->nodePool(), sym(3).Expression, sym(5).Statement); - Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(5)); -} break; - -case 214: { - sym(1).Node = QScript::makeAstNode<QScript::AST::DoWhileStatement> (driver->nodePool(), sym(2).Statement, sym(5).Expression); - Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(7)); -} break; - -case 215: { - sym(1).Node = QScript::makeAstNode<QScript::AST::WhileStatement> (driver->nodePool(), sym(3).Expression, sym(5).Statement); - Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(5)); -} break; - -case 216: { - sym(1).Node = QScript::makeAstNode<QScript::AST::ForStatement> (driver->nodePool(), sym(3).Expression, sym(5).Expression, sym(7).Expression, sym(9).Statement); - Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(9)); -} break; - -case 217: { - sym(1).Node = QScript::makeAstNode<QScript::AST::LocalForStatement> (driver->nodePool(), sym(4).VariableDeclarationList->finish (/*readOnly=*/false), sym(6).Expression, sym(8).Expression, sym(10).Statement); - Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(10)); -} break; - -case 218: { - sym(1).Node = QScript::makeAstNode<QScript::AST::ForEachStatement> (driver->nodePool(), sym(3).Expression, sym(5).Expression, sym(7).Statement); - Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(7)); -} break; - -case 219: { - sym(1).Node = QScript::makeAstNode<QScript::AST::LocalForEachStatement> (driver->nodePool(), sym(4).VariableDeclaration, sym(6).Expression, sym(8).Statement); - Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(8)); -} break; - -case 221: { - sym(1).Node = QScript::makeAstNode<QScript::AST::ContinueStatement> (driver->nodePool()); - Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(2)); -} break; - -case 223: { - sym(1).Node = QScript::makeAstNode<QScript::AST::ContinueStatement> (driver->nodePool(), sym(2).sval); - Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(3)); -} break; - -case 225: { - sym(1).Node = QScript::makeAstNode<QScript::AST::BreakStatement> (driver->nodePool()); - Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(2)); -} break; - -case 227: { - sym(1).Node = QScript::makeAstNode<QScript::AST::BreakStatement> (driver->nodePool(), sym(2).sval); - Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(3)); -} break; - -case 229: { - sym(1).Node = QScript::makeAstNode<QScript::AST::ReturnStatement> (driver->nodePool(), sym(2).Expression); - Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(3)); -} break; - -case 230: { - sym(1).Node = QScript::makeAstNode<QScript::AST::WithStatement> (driver->nodePool(), sym(3).Expression, sym(5).Statement); - Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(5)); -} break; - -case 231: { - sym(1).Node = QScript::makeAstNode<QScript::AST::SwitchStatement> (driver->nodePool(), sym(3).Expression, sym(5).CaseBlock); - Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(5)); -} break; - -case 232: { - sym(1).Node = QScript::makeAstNode<QScript::AST::CaseBlock> (driver->nodePool(), sym(2).CaseClauses); - Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(3)); -} break; - -case 233: { - sym(1).Node = QScript::makeAstNode<QScript::AST::CaseBlock> (driver->nodePool(), sym(2).CaseClauses, sym(3).DefaultClause, sym(4).CaseClauses); - Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(5)); -} break; - -case 234: { - sym(1).Node = QScript::makeAstNode<QScript::AST::CaseClauses> (driver->nodePool(), sym(1).CaseClause); - Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(1)); -} break; - -case 235: { - sym(1).Node = QScript::makeAstNode<QScript::AST::CaseClauses> (driver->nodePool(), sym(1).CaseClauses, sym(2).CaseClause); - Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(2)); -} break; - -case 236: { - sym(1).Node = 0; -} break; - -case 237: { - sym(1).Node = sym(1).CaseClauses->finish (); - Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(1)); -} break; - -case 238: { - sym(1).Node = QScript::makeAstNode<QScript::AST::CaseClause> (driver->nodePool(), sym(2).Expression, sym(4).StatementList); - Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(4)); -} break; - -case 239: { - sym(1).Node = QScript::makeAstNode<QScript::AST::DefaultClause> (driver->nodePool(), sym(3).StatementList); - Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(3)); -} break; - -case 240: { - sym(1).Node = QScript::makeAstNode<QScript::AST::LabelledStatement> (driver->nodePool(), sym(1).sval, sym(3).Statement); - Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(3)); -} break; - -case 242: { - sym(1).Node = QScript::makeAstNode<QScript::AST::ThrowStatement> (driver->nodePool(), sym(2).Expression); - Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(3)); -} break; - -case 243: { - sym(1).Node = QScript::makeAstNode<QScript::AST::TryStatement> (driver->nodePool(), sym(2).Statement, sym(3).Catch); - Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(3)); -} break; - -case 244: { - sym(1).Node = QScript::makeAstNode<QScript::AST::TryStatement> (driver->nodePool(), sym(2).Statement, sym(3).Finally); - Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(3)); -} break; - -case 245: { - sym(1).Node = QScript::makeAstNode<QScript::AST::TryStatement> (driver->nodePool(), sym(2).Statement, sym(3).Catch, sym(4).Finally); - Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(4)); -} break; - -case 246: { - sym(1).Node = QScript::makeAstNode<QScript::AST::Catch> (driver->nodePool(), sym(3).sval, sym(5).Statement); - Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(5)); -} break; - -case 247: { - sym(1).Node = QScript::makeAstNode<QScript::AST::Finally> (driver->nodePool(), sym(2).Statement); - Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(2)); -} break; - -case 249: { - sym(1).Node = QScript::makeAstNode<QScript::AST::DebuggerStatement> (driver->nodePool()); - Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(1)); -} break; - -case 250: { - sym(1).Node = QScript::makeAstNode<QScript::AST::FunctionDeclaration> (driver->nodePool(), sym(2).sval, sym(4).FormalParameterList, sym(7).FunctionBody); - Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(8)); -} break; - -case 251: { - sym(1).Node = QScript::makeAstNode<QScript::AST::FunctionExpression> (driver->nodePool(), sym(2).sval, sym(4).FormalParameterList, sym(7).FunctionBody); - Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(8)); -} break; - -case 252: { - sym(1).Node = QScript::makeAstNode<QScript::AST::FormalParameterList> (driver->nodePool(), sym(1).sval); - Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(1)); -} break; - -case 253: { - sym(1).Node = QScript::makeAstNode<QScript::AST::FormalParameterList> (driver->nodePool(), sym(1).FormalParameterList, sym(3).sval); - Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(3)); -} break; - -case 254: { - sym(1).Node = 0; -} break; - -case 255: { - sym(1).Node = sym(1).FormalParameterList->finish (); - Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(1)); -} break; - -case 256: { - sym(1).Node = 0; -} break; - -case 258: { - sym(1).Node = QScript::makeAstNode<QScript::AST::FunctionBody> (driver->nodePool(), sym(1).SourceElements->finish ()); - Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(1)); -} break; - -case 259: { - sym(1).Node = QScript::makeAstNode<QScript::AST::Program> (driver->nodePool(), sym(1).SourceElements->finish ()); - driver->changeAbstractSyntaxTree(sym(1).Node); - Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(1)); -} break; - -case 260: { - sym(1).Node = QScript::makeAstNode<QScript::AST::SourceElements> (driver->nodePool(), sym(1).SourceElement); - Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(1)); -} break; - -case 261: { - sym(1).Node = QScript::makeAstNode<QScript::AST::SourceElements> (driver->nodePool(), sym(1).SourceElements, sym(2).SourceElement); - Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(2)); -} break; - -case 262: { - sym(1).Node = QScript::makeAstNode<QScript::AST::StatementSourceElement> (driver->nodePool(), sym(1).Statement); - Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(1)); -} break; - -case 263: { - sym(1).Node = QScript::makeAstNode<QScript::AST::FunctionSourceElement> (driver->nodePool(), sym(1).FunctionDeclaration); - Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(1)); -} break; - -case 264: { - sym(1).sval = 0; -} break; - -case 266: { - sym(1).Node = 0; -} break; - - } // switch - - state_stack [tos] = nt_action (act, lhs [r] - TERMINAL_COUNT); - - if (rhs[r] > 1) { - location_stack[tos - 1].endLine = location_stack[tos + rhs[r] - 2].endLine; - location_stack[tos - 1].endColumn = location_stack[tos + rhs[r] - 2].endColumn; - location_stack[tos] = location_stack[tos + rhs[r] - 1]; - } - } - - else - { - if (saved_yytoken == -1 && automatic (driver, yytoken) && t_action (state, T_AUTOMATIC_SEMICOLON) > 0) - { - saved_yytoken = yytoken; - yytoken = T_SEMICOLON; - continue; - } - - else if ((state == INITIAL_STATE) && (yytoken == 0)) { - // accept empty input - yytoken = T_SEMICOLON; - continue; - } - - int ers = state; - int shifts = 0; - int reduces = 0; - int expected_tokens [3]; - for (int tk = 0; tk < TERMINAL_COUNT; ++tk) - { - int k = t_action (ers, tk); - - if (! k) - continue; - else if (k < 0) - ++reduces; - else if (spell [tk]) - { - if (shifts < 3) - expected_tokens [shifts] = tk; - ++shifts; - } - } - - error_message.clear (); - if (shifts && shifts < 3) - { - bool first = true; - - for (int s = 0; s < shifts; ++s) - { - if (first) - error_message += QLatin1String ("Expected "); - else - error_message += QLatin1String (", "); - - first = false; - error_message += QLatin1String("`"); - error_message += QLatin1String (spell [expected_tokens [s]]); - error_message += QLatin1String("'"); - } - } - - if (error_message.isEmpty()) - error_message = lexer->errorMessage(); - - error_lineno = lexer->startLineNo(); - error_column = lexer->startColumnNo(); - - return false; - } - } - - return false; -} - -QT_END_NAMESPACE |