summaryrefslogtreecommitdiff
path: root/src/script/parser/qscriptparser.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/script/parser/qscriptparser.cpp')
-rw-r--r--src/script/parser/qscriptparser.cpp1139
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