1
----------------------------------------------------------------------------
11
----------------------------------------------------------------------------
13
%parser QScriptGrammar
14
%decl qscriptparser_p.h
15
%impl qscriptparser.cpp
19
%token T_AND "&" T_AND_AND "&&" T_AND_EQ "&="
20
%token T_BREAK "break" T_CASE "case" T_CATCH "catch"
21
%token T_COLON ":" T_COMMA ";" T_CONTINUE "continue"
22
%token T_DEFAULT "default" T_DELETE "delete" T_DIVIDE_ "/"
23
%token T_DIVIDE_EQ "/=" T_DO "do" T_DOT "."
24
%token T_ELSE "else" T_EQ "=" T_EQ_EQ "=="
25
%token T_EQ_EQ_EQ "===" T_FINALLY "finally" T_FOR "for"
26
%token T_FUNCTION "function" T_GE ">=" T_GT ">"
27
%token T_GT_GT ">>" T_GT_GT_EQ ">>=" T_GT_GT_GT ">>>"
28
%token T_GT_GT_GT_EQ ">>>=" T_IDENTIFIER "identifier" T_IF "if"
29
%token T_IN "in" T_INSTANCEOF "instanceof" T_LBRACE "{"
30
%token T_LBRACKET "[" T_LE "<=" T_LPAREN "("
31
%token T_LT "<" T_LT_LT "<<" T_LT_LT_EQ "<<="
32
%token T_MINUS "-" T_MINUS_EQ "-=" T_MINUS_MINUS "--"
33
%token T_NEW "new" T_NOT "!" T_NOT_EQ "!="
34
%token T_NOT_EQ_EQ "!==" T_NUMERIC_LITERAL "numeric literal" T_OR "|"
35
%token T_OR_EQ "|=" T_OR_OR "||" T_PLUS "+"
36
%token T_PLUS_EQ "+=" T_PLUS_PLUS "++" T_QUESTION "?"
37
%token T_RBRACE "}" T_RBRACKET "]" T_REMAINDER "%"
38
%token T_REMAINDER_EQ "%=" T_RETURN "return" T_RPAREN ")"
39
%token T_SEMICOLON ";" T_AUTOMATIC_SEMICOLON T_STAR "*"
40
%token T_STAR_EQ "*=" T_STRING_LITERAL "string literal"
41
%token T_SWITCH "switch" T_THIS "this" T_THROW "throw"
42
%token T_TILDE "~" T_TRY "try" T_TYPEOF "typeof"
43
%token T_VAR "var" T_VOID "void" T_WHILE "while"
44
%token T_WITH "with" T_XOR "^" T_XOR_EQ "^="
45
%token T_NULL "null" T_TRUE "true" T_FALSE "false"
46
%token T_CONST "const"
47
%token T_DEBUGGER "debugger"
48
%token T_RESERVED_WORD "reserved word"
53
/****************************************************************************
55
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
56
** Contact: Nokia Corporation (qt-info@nokia.com)
58
** This file is part of the QtScript module of the Qt Toolkit.
60
** $QT_BEGIN_LICENSE:LGPL$
62
** Licensees holding valid Qt Commercial licenses may use this file in
63
** accordance with the Qt Commercial License Agreement provided with the
64
** Software or, alternatively, in accordance with the terms contained in
65
** a written agreement between you and Nokia.
67
** GNU Lesser General Public License Usage
68
** Alternatively, this file may be used under the terms of the GNU Lesser
69
** General Public License version 2.1 as published by the Free Software
70
** Foundation and appearing in the file LICENSE.LGPL included in the
71
** packaging of this file. Please review the following information to
72
** ensure the GNU Lesser General Public License version 2.1 requirements
73
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
75
** In addition, as a special exception, Nokia gives you certain
76
** additional rights. These rights are described in the Nokia Qt LGPL
77
** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
80
** GNU General Public License Usage
81
** Alternatively, this file may be used under the terms of the GNU
82
** General Public License version 3.0 as published by the Free Software
83
** Foundation and appearing in the file LICENSE.GPL included in the
84
** packaging of this file. Please review the following information to
85
** ensure the GNU General Public License version 3.0 requirements will be
86
** met: http://www.gnu.org/copyleft/gpl.html.
88
** If you are unsure which license is appropriate for your use, please
89
** contact the sales department at http://www.qtsoftware.com/contact.
92
****************************************************************************/
94
#include <QtCore/QtDebug>
100
#include "qscriptengine.h"
101
#include "qscriptengine_p.h"
102
#include "qscriptvalueimpl_p.h"
103
#include "qscriptcontext_p.h"
104
#include "qscriptmember_p.h"
105
#include "qscriptobject_p.h"
106
#include "qscriptlexer_p.h"
107
#include "qscriptast_p.h"
108
#include "qscriptnodepool_p.h"
110
#define Q_SCRIPT_UPDATE_POSITION(node, startloc, endloc) do { \
111
node->startLine = startloc.startLine; \
112
node->startColumn = startloc.startColumn; \
113
node->endLine = endloc.endLine; \
114
node->endColumn = endloc.endColumn; \
120
/****************************************************************************
122
** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
123
** Contact: Nokia Corporation (qt-info@nokia.com)
125
** This file is part of the QtScript module of the Qt Toolkit.
127
** $QT_BEGIN_LICENSE:LGPL$
129
** Licensees holding valid Qt Commercial licenses may use this file in
130
** accordance with the Qt Commercial License Agreement provided with the
131
** Software or, alternatively, in accordance with the terms contained in
132
** a written agreement between you and Nokia.
134
** GNU Lesser General Public License Usage
135
** Alternatively, this file may be used under the terms of the GNU Lesser
136
** General Public License version 2.1 as published by the Free Software
137
** Foundation and appearing in the file LICENSE.LGPL included in the
138
** packaging of this file. Please review the following information to
139
** ensure the GNU Lesser General Public License version 2.1 requirements
140
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
142
** In addition, as a special exception, Nokia gives you certain
143
** additional rights. These rights are described in the Nokia Qt LGPL
144
** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
147
** GNU General Public License Usage
148
** Alternatively, this file may be used under the terms of the GNU
149
** General Public License version 3.0 as published by the Free Software
150
** Foundation and appearing in the file LICENSE.GPL included in the
151
** packaging of this file. Please review the following information to
152
** ensure the GNU General Public License version 3.0 requirements will be
153
** met: http://www.gnu.org/copyleft/gpl.html.
155
** If you are unsure which license is appropriate for your use, please
156
** contact the sales department at http://www.qtsoftware.com/contact.
159
****************************************************************************/
165
// This file is not part of the Qt API. It exists purely as an
166
// implementation detail. This header file may change from version to
167
// version without notice, or even be removed.
173
// This file is automatically generated from qscript.g.
174
// Changes will be lost.
177
#ifndef QSCRIPTPARSER_P_H
178
#define QSCRIPTPARSER_P_H
180
#include "qscriptgrammar_p.h"
184
#include "qscriptastfwd_p.h"
189
class QScriptEnginePrivate;
190
class QScriptNameIdImpl;
192
class QScriptParser: protected $table
198
QScriptNameIdImpl *sval;
199
QScript::AST::ArgumentList *ArgumentList;
200
QScript::AST::CaseBlock *CaseBlock;
201
QScript::AST::CaseClause *CaseClause;
202
QScript::AST::CaseClauses *CaseClauses;
203
QScript::AST::Catch *Catch;
204
QScript::AST::DefaultClause *DefaultClause;
205
QScript::AST::ElementList *ElementList;
206
QScript::AST::Elision *Elision;
207
QScript::AST::ExpressionNode *Expression;
208
QScript::AST::Finally *Finally;
209
QScript::AST::FormalParameterList *FormalParameterList;
210
QScript::AST::FunctionBody *FunctionBody;
211
QScript::AST::FunctionDeclaration *FunctionDeclaration;
212
QScript::AST::Node *Node;
213
QScript::AST::PropertyName *PropertyName;
214
QScript::AST::PropertyNameAndValueList *PropertyNameAndValueList;
215
QScript::AST::SourceElement *SourceElement;
216
QScript::AST::SourceElements *SourceElements;
217
QScript::AST::Statement *Statement;
218
QScript::AST::StatementList *StatementList;
219
QScript::AST::VariableDeclaration *VariableDeclaration;
220
QScript::AST::VariableDeclarationList *VariableDeclarationList;
234
bool parse(QScriptEnginePrivate *driver);
236
inline QString errorMessage() const
237
{ return error_message; }
238
inline int errorLineNumber() const
239
{ return error_lineno; }
240
inline int errorColumnNumber() const
241
{ return error_column; }
244
inline void reallocateStack();
246
inline Value &sym(int index)
247
{ return sym_stack [tos + index - 1]; }
249
inline Location &loc(int index)
250
{ return location_stack [tos + index - 2]; }
257
Location *location_stack;
258
QString error_message;
263
inline void QScriptParser::reallocateStack()
270
sym_stack = reinterpret_cast<Value*> (qRealloc(sym_stack, stack_size * sizeof(Value)));
271
state_stack = reinterpret_cast<int*> (qRealloc(state_stack, stack_size * sizeof(int)));
272
location_stack = reinterpret_cast<Location*> (qRealloc(location_stack, stack_size * sizeof(Location)));
280
#include "qscriptparser_p.h"
283
// This file is automatically generated from qscript.g.
284
// Changes will be lost.
289
inline static bool automatic(QScriptEnginePrivate *driver, int token)
291
return token == $table::T_RBRACE
293
|| driver->lexer()->prevTerminator();
297
QScriptParser::QScriptParser():
308
QScriptParser::~QScriptParser()
313
qFree(location_stack);
317
static inline QScriptParser::Location location(QScript::Lexer *lexer)
319
QScriptParser::Location loc;
320
loc.startLine = lexer->startLineNo();
321
loc.startColumn = lexer->startColumnNo();
322
loc.endLine = lexer->endLineNo();
323
loc.endColumn = lexer->endColumnNo();
327
bool QScriptParser::parse(QScriptEnginePrivate *driver)
329
const int INITIAL_STATE = 0;
330
QScript::Lexer *lexer = driver->lexer();
333
int saved_yytoken = -1;
338
state_stack[++tos] = INITIAL_STATE;
342
const int state = state_stack [tos];
343
if (yytoken == -1 && - TERMINAL_COUNT != action_index [state])
345
if (saved_yytoken == -1)
347
yytoken = lexer->lex();
348
location_stack [tos] = location(lexer);
352
yytoken = saved_yytoken;
357
int act = t_action (state, yytoken);
359
if (act == ACCEPT_STATE)
364
if (++tos == stack_size)
367
sym_stack [tos].dval = lexer->dval ();
368
state_stack [tos] = act;
369
location_stack [tos] = location(lexer);
378
act = state_stack [tos++];
383
PrimaryExpression: T_THIS ;
386
sym(1).Node = QScript::makeAstNode<QScript::AST::ThisExpression> (driver->nodePool());
387
Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(1));
391
PrimaryExpression: T_IDENTIFIER ;
394
sym(1).Node = QScript::makeAstNode<QScript::AST::IdentifierExpression> (driver->nodePool(), sym(1).sval);
395
Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(1));
399
PrimaryExpression: T_NULL ;
402
sym(1).Node = QScript::makeAstNode<QScript::AST::NullExpression> (driver->nodePool());
403
Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(1));
407
PrimaryExpression: T_TRUE ;
410
sym(1).Node = QScript::makeAstNode<QScript::AST::TrueLiteral> (driver->nodePool());
411
Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(1));
415
PrimaryExpression: T_FALSE ;
418
sym(1).Node = QScript::makeAstNode<QScript::AST::FalseLiteral> (driver->nodePool());
419
Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(1));
423
PrimaryExpression: T_NUMERIC_LITERAL ;
426
sym(1).Node = QScript::makeAstNode<QScript::AST::NumericLiteral> (driver->nodePool(), sym(1).dval);
427
Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(1));
431
PrimaryExpression: T_STRING_LITERAL ;
434
sym(1).Node = QScript::makeAstNode<QScript::AST::StringLiteral> (driver->nodePool(), sym(1).sval);
435
Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(1));
439
PrimaryExpression: T_DIVIDE_ ;
441
#define Q_SCRIPT_REGEXPLITERAL_RULE1 $rule_number
445
bool rx = lexer->scanRegExp(QScript::Lexer::NoPrefix);
447
error_message = lexer->errorMessage();
448
error_lineno = lexer->startLineNo();
449
error_column = lexer->startColumnNo();
452
sym(1).Node = QScript::makeAstNode<QScript::AST::RegExpLiteral> (driver->nodePool(), lexer->pattern, lexer->flags);
453
Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(1));
457
PrimaryExpression: T_DIVIDE_EQ ;
459
#define Q_SCRIPT_REGEXPLITERAL_RULE2 $rule_number
463
bool rx = lexer->scanRegExp(QScript::Lexer::EqualPrefix);
465
error_message = lexer->errorMessage();
466
error_lineno = lexer->startLineNo();
467
error_column = lexer->startColumnNo();
470
sym(1).Node = QScript::makeAstNode<QScript::AST::RegExpLiteral> (driver->nodePool(), lexer->pattern, lexer->flags);
471
Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(1));
475
PrimaryExpression: T_LBRACKET ElisionOpt T_RBRACKET ;
478
sym(1).Node = QScript::makeAstNode<QScript::AST::ArrayLiteral> (driver->nodePool(), sym(2).Elision);
479
Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(3));
483
PrimaryExpression: T_LBRACKET ElementList T_RBRACKET ;
486
sym(1).Node = QScript::makeAstNode<QScript::AST::ArrayLiteral> (driver->nodePool(), sym(2).ElementList->finish ());
487
Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(3));
491
PrimaryExpression: T_LBRACKET ElementList T_COMMA ElisionOpt T_RBRACKET ;
494
sym(1).Node = QScript::makeAstNode<QScript::AST::ArrayLiteral> (driver->nodePool(), sym(2).ElementList->finish (), sym(4).Elision);
495
Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(5));
500
PrimaryExpression: T_LBRACE PropertyNameAndValueListOpt T_RBRACE ;
504
sym(1).Node = QScript::makeAstNode<QScript::AST::ObjectLiteral> (driver->nodePool(), sym(2).PropertyNameAndValueList->finish ());
506
sym(1).Node = QScript::makeAstNode<QScript::AST::ObjectLiteral> (driver->nodePool());
507
Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(3));
511
PrimaryExpression: T_LBRACE PropertyNameAndValueList T_COMMA T_RBRACE ;
514
sym(1).Node = QScript::makeAstNode<QScript::AST::ObjectLiteral> (driver->nodePool(), sym(2).PropertyNameAndValueList->finish ());
515
Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(4));
519
PrimaryExpression: T_LPAREN Expression T_RPAREN ;
523
Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(3));
527
ElementList: ElisionOpt AssignmentExpression ;
530
sym(1).Node = QScript::makeAstNode<QScript::AST::ElementList> (driver->nodePool(), sym(1).Elision, sym(2).Expression);
531
Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(2));
535
ElementList: ElementList T_COMMA ElisionOpt AssignmentExpression ;
538
sym(1).Node = QScript::makeAstNode<QScript::AST::ElementList> (driver->nodePool(), sym(1).ElementList, sym(3).Elision, sym(4).Expression);
539
Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(4));
546
sym(1).Node = QScript::makeAstNode<QScript::AST::Elision> (driver->nodePool());
547
Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(1));
551
Elision: Elision T_COMMA ;
554
sym(1).Node = QScript::makeAstNode<QScript::AST::Elision> (driver->nodePool(), sym(1).Elision);
555
Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(2));
566
ElisionOpt: Elision ;
569
sym(1).Elision = sym(1).Elision->finish ();
570
Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(1));
574
PropertyNameAndValueList: PropertyName T_COLON AssignmentExpression ;
577
sym(1).Node = QScript::makeAstNode<QScript::AST::PropertyNameAndValueList> (driver->nodePool(), sym(1).PropertyName, sym(3).Expression);
578
Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(3));
582
PropertyNameAndValueList: PropertyNameAndValueList T_COMMA PropertyName T_COLON AssignmentExpression ;
585
sym(1).Node = QScript::makeAstNode<QScript::AST::PropertyNameAndValueList> (driver->nodePool(), sym(1).PropertyNameAndValueList, sym(3).PropertyName, sym(5).Expression);
586
Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(5));
590
PropertyName: T_IDENTIFIER ;
593
sym(1).Node = QScript::makeAstNode<QScript::AST::IdentifierPropertyName> (driver->nodePool(), sym(1).sval);
594
Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(1));
598
PropertyName: T_STRING_LITERAL ;
601
sym(1).Node = QScript::makeAstNode<QScript::AST::StringLiteralPropertyName> (driver->nodePool(), sym(1).sval);
602
Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(1));
606
PropertyName: T_NUMERIC_LITERAL ;
609
sym(1).Node = QScript::makeAstNode<QScript::AST::NumericLiteralPropertyName> (driver->nodePool(), sym(1).dval);
610
Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(1));
614
PropertyName: ReservedIdentifier ;
617
sym(1).Node = QScript::makeAstNode<QScript::AST::IdentifierPropertyName> (driver->nodePool(), sym(1).sval);
618
Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(1));
622
ReservedIdentifier: T_BREAK ;
626
ReservedIdentifier: T_CASE ;
630
ReservedIdentifier: T_CATCH ;
634
ReservedIdentifier: T_CONTINUE ;
638
ReservedIdentifier: T_DEFAULT ;
642
ReservedIdentifier: T_DELETE ;
646
ReservedIdentifier: T_DO ;
650
ReservedIdentifier: T_ELSE ;
654
ReservedIdentifier: T_FALSE ;
658
ReservedIdentifier: T_FINALLY ;
662
ReservedIdentifier: T_FOR ;
666
ReservedIdentifier: T_FUNCTION ;
670
ReservedIdentifier: T_IF ;
674
ReservedIdentifier: T_IN ;
678
ReservedIdentifier: T_INSTANCEOF ;
682
ReservedIdentifier: T_NEW ;
686
ReservedIdentifier: T_NULL ;
690
ReservedIdentifier: T_RETURN ;
694
ReservedIdentifier: T_SWITCH ;
698
ReservedIdentifier: T_THIS ;
702
ReservedIdentifier: T_THROW ;
706
ReservedIdentifier: T_TRUE ;
710
ReservedIdentifier: T_TRY ;
714
ReservedIdentifier: T_TYPEOF ;
718
ReservedIdentifier: T_VAR ;
722
ReservedIdentifier: T_VOID ;
726
ReservedIdentifier: T_WHILE ;
730
ReservedIdentifier: T_CONST ;
734
ReservedIdentifier: T_DEBUGGER ;
738
ReservedIdentifier: T_RESERVED_WORD ;
742
ReservedIdentifier: T_WITH ;
746
sym(1).sval = driver->intern(lexer->characterBuffer(), lexer->characterCount());
750
PropertyIdentifier: T_IDENTIFIER ;
751
PropertyIdentifier: ReservedIdentifier ;
753
MemberExpression: PrimaryExpression ;
754
MemberExpression: FunctionExpression ;
756
MemberExpression: MemberExpression T_LBRACKET Expression T_RBRACKET ;
759
sym(1).Node = QScript::makeAstNode<QScript::AST::ArrayMemberExpression> (driver->nodePool(), sym(1).Expression, sym(3).Expression);
760
Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(4));
764
MemberExpression: MemberExpression T_DOT PropertyIdentifier ;
767
sym(1).Node = QScript::makeAstNode<QScript::AST::FieldMemberExpression> (driver->nodePool(), sym(1).Expression, sym(3).sval);
768
Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(4));
772
MemberExpression: T_NEW MemberExpression Arguments ;
775
sym(1).Node = QScript::makeAstNode<QScript::AST::NewMemberExpression> (driver->nodePool(), sym(2).Expression, sym(3).ArgumentList);
776
Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(3));
780
NewExpression: MemberExpression ;
782
NewExpression: T_NEW NewExpression ;
785
sym(1).Node = QScript::makeAstNode<QScript::AST::NewExpression> (driver->nodePool(), sym(2).Expression);
786
Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(2));
790
CallExpression: MemberExpression Arguments ;
793
sym(1).Node = QScript::makeAstNode<QScript::AST::CallExpression> (driver->nodePool(), sym(1).Expression, sym(2).ArgumentList);
794
Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(2));
798
CallExpression: CallExpression Arguments ;
801
sym(1).Node = QScript::makeAstNode<QScript::AST::CallExpression> (driver->nodePool(), sym(1).Expression, sym(2).ArgumentList);
802
Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(2));
806
CallExpression: CallExpression T_LBRACKET Expression T_RBRACKET ;
809
sym(1).Node = QScript::makeAstNode<QScript::AST::ArrayMemberExpression> (driver->nodePool(), sym(1).Expression, sym(3).Expression);
810
Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(4));
814
CallExpression: CallExpression T_DOT PropertyIdentifier ;
817
sym(1).Node = QScript::makeAstNode<QScript::AST::FieldMemberExpression> (driver->nodePool(), sym(1).Expression, sym(3).sval);
818
Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(3));
822
Arguments: T_LPAREN T_RPAREN ;
829
Arguments: T_LPAREN ArgumentList T_RPAREN ;
832
sym(1).Node = sym(2).ArgumentList->finish ();
833
Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(3));
837
ArgumentList: AssignmentExpression ;
840
sym(1).Node = QScript::makeAstNode<QScript::AST::ArgumentList> (driver->nodePool(), sym(1).Expression);
841
Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(1));
845
ArgumentList: ArgumentList T_COMMA AssignmentExpression ;
848
sym(1).Node = QScript::makeAstNode<QScript::AST::ArgumentList> (driver->nodePool(), sym(1).ArgumentList, sym(3).Expression);
849
Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(3));
853
LeftHandSideExpression: NewExpression ;
854
LeftHandSideExpression: CallExpression ;
855
PostfixExpression: LeftHandSideExpression ;
857
PostfixExpression: LeftHandSideExpression T_PLUS_PLUS ;
860
sym(1).Node = QScript::makeAstNode<QScript::AST::PostIncrementExpression> (driver->nodePool(), sym(1).Expression);
861
Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(2));
865
PostfixExpression: LeftHandSideExpression T_MINUS_MINUS ;
868
sym(1).Node = QScript::makeAstNode<QScript::AST::PostDecrementExpression> (driver->nodePool(), sym(1).Expression);
869
Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(2));
873
UnaryExpression: PostfixExpression ;
875
UnaryExpression: T_DELETE UnaryExpression ;
878
sym(1).Node = QScript::makeAstNode<QScript::AST::DeleteExpression> (driver->nodePool(), sym(2).Expression);
879
Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(2));
883
UnaryExpression: T_VOID UnaryExpression ;
886
sym(1).Node = QScript::makeAstNode<QScript::AST::VoidExpression> (driver->nodePool(), sym(2).Expression);
887
Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(2));
891
UnaryExpression: T_TYPEOF UnaryExpression ;
894
sym(1).Node = QScript::makeAstNode<QScript::AST::TypeOfExpression> (driver->nodePool(), sym(2).Expression);
895
Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(2));
899
UnaryExpression: T_PLUS_PLUS UnaryExpression ;
902
sym(1).Node = QScript::makeAstNode<QScript::AST::PreIncrementExpression> (driver->nodePool(), sym(2).Expression);
903
Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(2));
907
UnaryExpression: T_MINUS_MINUS UnaryExpression ;
910
sym(1).Node = QScript::makeAstNode<QScript::AST::PreDecrementExpression> (driver->nodePool(), sym(2).Expression);
911
Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(2));
915
UnaryExpression: T_PLUS UnaryExpression ;
918
sym(1).Node = QScript::makeAstNode<QScript::AST::UnaryPlusExpression> (driver->nodePool(), sym(2).Expression);
919
Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(2));
923
UnaryExpression: T_MINUS UnaryExpression ;
926
sym(1).Node = QScript::makeAstNode<QScript::AST::UnaryMinusExpression> (driver->nodePool(), sym(2).Expression);
927
Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(2));
931
UnaryExpression: T_TILDE UnaryExpression ;
934
sym(1).Node = QScript::makeAstNode<QScript::AST::TildeExpression> (driver->nodePool(), sym(2).Expression);
935
Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(2));
939
UnaryExpression: T_NOT UnaryExpression ;
942
sym(1).Node = QScript::makeAstNode<QScript::AST::NotExpression> (driver->nodePool(), sym(2).Expression);
943
Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(2));
947
MultiplicativeExpression: UnaryExpression ;
949
MultiplicativeExpression: MultiplicativeExpression T_STAR UnaryExpression ;
952
sym(1).Node = QScript::makeAstNode<QScript::AST::BinaryExpression> (driver->nodePool(), sym(1).Expression, QSOperator::Mul, sym(3).Expression);
953
Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(3));
957
MultiplicativeExpression: MultiplicativeExpression T_DIVIDE_ UnaryExpression ;
960
sym(1).Node = QScript::makeAstNode<QScript::AST::BinaryExpression> (driver->nodePool(), sym(1).Expression, QSOperator::Div, sym(3).Expression);
961
Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(3));
965
MultiplicativeExpression: MultiplicativeExpression T_REMAINDER UnaryExpression ;
968
sym(1).Node = QScript::makeAstNode<QScript::AST::BinaryExpression> (driver->nodePool(), sym(1).Expression, QSOperator::Mod, sym(3).Expression);
969
Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(3));
973
AdditiveExpression: MultiplicativeExpression ;
975
AdditiveExpression: AdditiveExpression T_PLUS MultiplicativeExpression ;
978
sym(1).Node = QScript::makeAstNode<QScript::AST::BinaryExpression> (driver->nodePool(), sym(1).Expression, QSOperator::Add, sym(3).Expression);
979
Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(3));
983
AdditiveExpression: AdditiveExpression T_MINUS MultiplicativeExpression ;
986
sym(1).Node = QScript::makeAstNode<QScript::AST::BinaryExpression> (driver->nodePool(), sym(1).Expression, QSOperator::Sub, sym(3).Expression);
987
Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(3));
991
ShiftExpression: AdditiveExpression ;
993
ShiftExpression: ShiftExpression T_LT_LT AdditiveExpression ;
996
sym(1).Node = QScript::makeAstNode<QScript::AST::BinaryExpression> (driver->nodePool(), sym(1).Expression, QSOperator::LShift, sym(3).Expression);
997
Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(3));
1001
ShiftExpression: ShiftExpression T_GT_GT AdditiveExpression ;
1003
case $rule_number: {
1004
sym(1).Node = QScript::makeAstNode<QScript::AST::BinaryExpression> (driver->nodePool(), sym(1).Expression, QSOperator::RShift, sym(3).Expression);
1005
Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(3));
1009
ShiftExpression: ShiftExpression T_GT_GT_GT AdditiveExpression ;
1011
case $rule_number: {
1012
sym(1).Node = QScript::makeAstNode<QScript::AST::BinaryExpression> (driver->nodePool(), sym(1).Expression, QSOperator::URShift, sym(3).Expression);
1013
Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(3));
1017
RelationalExpression: ShiftExpression ;
1019
RelationalExpression: RelationalExpression T_LT ShiftExpression ;
1021
case $rule_number: {
1022
sym(1).Node = QScript::makeAstNode<QScript::AST::BinaryExpression> (driver->nodePool(), sym(1).Expression, QSOperator::Lt, sym(3).Expression);
1023
Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(3));
1027
RelationalExpression: RelationalExpression T_GT ShiftExpression ;
1029
case $rule_number: {
1030
sym(1).Node = QScript::makeAstNode<QScript::AST::BinaryExpression> (driver->nodePool(), sym(1).Expression, QSOperator::Gt, sym(3).Expression);
1031
Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(3));
1035
RelationalExpression: RelationalExpression T_LE ShiftExpression ;
1037
case $rule_number: {
1038
sym(1).Node = QScript::makeAstNode<QScript::AST::BinaryExpression> (driver->nodePool(), sym(1).Expression, QSOperator::Le, sym(3).Expression);
1039
Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(3));
1043
RelationalExpression: RelationalExpression T_GE ShiftExpression ;
1045
case $rule_number: {
1046
sym(1).Node = QScript::makeAstNode<QScript::AST::BinaryExpression> (driver->nodePool(), sym(1).Expression, QSOperator::Ge, sym(3).Expression);
1047
Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(3));
1051
RelationalExpression: RelationalExpression T_INSTANCEOF ShiftExpression ;
1053
case $rule_number: {
1054
sym(1).Node = QScript::makeAstNode<QScript::AST::BinaryExpression> (driver->nodePool(), sym(1).Expression, QSOperator::InstanceOf, sym(3).Expression);
1055
Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(3));
1059
RelationalExpression: RelationalExpression T_IN ShiftExpression ;
1061
case $rule_number: {
1062
sym(1).Node = QScript::makeAstNode<QScript::AST::BinaryExpression> (driver->nodePool(), sym(1).Expression, QSOperator::In, sym(3).Expression);
1063
Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(3));
1067
RelationalExpressionNotIn: ShiftExpression ;
1069
RelationalExpressionNotIn: RelationalExpressionNotIn T_LT ShiftExpression ;
1071
case $rule_number: {
1072
sym(1).Node = QScript::makeAstNode<QScript::AST::BinaryExpression> (driver->nodePool(), sym(1).Expression, QSOperator::Lt, sym(3).Expression);
1073
Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(3));
1077
RelationalExpressionNotIn: RelationalExpressionNotIn T_GT ShiftExpression ;
1079
case $rule_number: {
1080
sym(1).Node = QScript::makeAstNode<QScript::AST::BinaryExpression> (driver->nodePool(), sym(1).Expression, QSOperator::Gt, sym(3).Expression);
1081
Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(3));
1085
RelationalExpressionNotIn: RelationalExpressionNotIn T_LE ShiftExpression ;
1087
case $rule_number: {
1088
sym(1).Node = QScript::makeAstNode<QScript::AST::BinaryExpression> (driver->nodePool(), sym(1).Expression, QSOperator::Le, sym(3).Expression);
1089
Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(3));
1093
RelationalExpressionNotIn: RelationalExpressionNotIn T_GE ShiftExpression ;
1095
case $rule_number: {
1096
sym(1).Node = QScript::makeAstNode<QScript::AST::BinaryExpression> (driver->nodePool(), sym(1).Expression, QSOperator::Ge, sym(3).Expression);
1097
Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(3));
1101
RelationalExpressionNotIn: RelationalExpressionNotIn T_INSTANCEOF ShiftExpression ;
1103
case $rule_number: {
1104
sym(1).Node = QScript::makeAstNode<QScript::AST::BinaryExpression> (driver->nodePool(), sym(1).Expression, QSOperator::InstanceOf, sym(3).Expression);
1105
Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(3));
1109
EqualityExpression: RelationalExpression ;
1111
EqualityExpression: EqualityExpression T_EQ_EQ RelationalExpression ;
1113
case $rule_number: {
1114
sym(1).Node = QScript::makeAstNode<QScript::AST::BinaryExpression> (driver->nodePool(), sym(1).Expression, QSOperator::Equal, sym(3).Expression);
1115
Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(3));
1119
EqualityExpression: EqualityExpression T_NOT_EQ RelationalExpression ;
1121
case $rule_number: {
1122
sym(1).Node = QScript::makeAstNode<QScript::AST::BinaryExpression> (driver->nodePool(), sym(1).Expression, QSOperator::NotEqual, sym(3).Expression);
1123
Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(3));
1127
EqualityExpression: EqualityExpression T_EQ_EQ_EQ RelationalExpression ;
1129
case $rule_number: {
1130
sym(1).Node = QScript::makeAstNode<QScript::AST::BinaryExpression> (driver->nodePool(), sym(1).Expression, QSOperator::StrictEqual, sym(3).Expression);
1131
Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(3));
1135
EqualityExpression: EqualityExpression T_NOT_EQ_EQ RelationalExpression ;
1137
case $rule_number: {
1138
sym(1).Node = QScript::makeAstNode<QScript::AST::BinaryExpression> (driver->nodePool(), sym(1).Expression, QSOperator::StrictNotEqual, sym(3).Expression);
1139
Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(3));
1143
EqualityExpressionNotIn: RelationalExpressionNotIn ;
1145
EqualityExpressionNotIn: EqualityExpressionNotIn T_EQ_EQ RelationalExpressionNotIn ;
1147
case $rule_number: {
1148
sym(1).Node = QScript::makeAstNode<QScript::AST::BinaryExpression> (driver->nodePool(), sym(1).Expression, QSOperator::Equal, sym(3).Expression);
1149
Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(3));
1153
EqualityExpressionNotIn: EqualityExpressionNotIn T_NOT_EQ RelationalExpressionNotIn;
1155
case $rule_number: {
1156
sym(1).Node = QScript::makeAstNode<QScript::AST::BinaryExpression> (driver->nodePool(), sym(1).Expression, QSOperator::NotEqual, sym(3).Expression);
1157
Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(3));
1161
EqualityExpressionNotIn: EqualityExpressionNotIn T_EQ_EQ_EQ RelationalExpressionNotIn ;
1163
case $rule_number: {
1164
sym(1).Node = QScript::makeAstNode<QScript::AST::BinaryExpression> (driver->nodePool(), sym(1).Expression, QSOperator::StrictEqual, sym(3).Expression);
1165
Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(3));
1169
EqualityExpressionNotIn: EqualityExpressionNotIn T_NOT_EQ_EQ RelationalExpressionNotIn ;
1171
case $rule_number: {
1172
sym(1).Node = QScript::makeAstNode<QScript::AST::BinaryExpression> (driver->nodePool(), sym(1).Expression, QSOperator::StrictNotEqual, sym(3).Expression);
1173
Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(3));
1177
BitwiseANDExpression: EqualityExpression ;
1179
BitwiseANDExpression: BitwiseANDExpression T_AND EqualityExpression ;
1181
case $rule_number: {
1182
sym(1).Node = QScript::makeAstNode<QScript::AST::BinaryExpression> (driver->nodePool(), sym(1).Expression, QSOperator::BitAnd, sym(3).Expression);
1183
Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(3));
1187
BitwiseANDExpressionNotIn: EqualityExpressionNotIn ;
1189
BitwiseANDExpressionNotIn: BitwiseANDExpressionNotIn T_AND EqualityExpressionNotIn ;
1191
case $rule_number: {
1192
sym(1).Node = QScript::makeAstNode<QScript::AST::BinaryExpression> (driver->nodePool(), sym(1).Expression, QSOperator::BitAnd, sym(3).Expression);
1193
Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(3));
1197
BitwiseXORExpression: BitwiseANDExpression ;
1199
BitwiseXORExpression: BitwiseXORExpression T_XOR BitwiseANDExpression ;
1201
case $rule_number: {
1202
sym(1).Node = QScript::makeAstNode<QScript::AST::BinaryExpression> (driver->nodePool(), sym(1).Expression, QSOperator::BitXor, sym(3).Expression);
1203
Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(3));
1207
BitwiseXORExpressionNotIn: BitwiseANDExpressionNotIn ;
1209
BitwiseXORExpressionNotIn: BitwiseXORExpressionNotIn T_XOR BitwiseANDExpressionNotIn ;
1211
case $rule_number: {
1212
sym(1).Node = QScript::makeAstNode<QScript::AST::BinaryExpression> (driver->nodePool(), sym(1).Expression, QSOperator::BitXor, sym(3).Expression);
1213
Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(3));
1217
BitwiseORExpression: BitwiseXORExpression ;
1219
BitwiseORExpression: BitwiseORExpression T_OR BitwiseXORExpression ;
1221
case $rule_number: {
1222
sym(1).Node = QScript::makeAstNode<QScript::AST::BinaryExpression> (driver->nodePool(), sym(1).Expression, QSOperator::BitOr, sym(3).Expression);
1223
Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(3));
1227
BitwiseORExpressionNotIn: BitwiseXORExpressionNotIn ;
1229
BitwiseORExpressionNotIn: BitwiseORExpressionNotIn T_OR BitwiseXORExpressionNotIn ;
1231
case $rule_number: {
1232
sym(1).Node = QScript::makeAstNode<QScript::AST::BinaryExpression> (driver->nodePool(), sym(1).Expression, QSOperator::BitOr, sym(3).Expression);
1233
Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(3));
1237
LogicalANDExpression: BitwiseORExpression ;
1239
LogicalANDExpression: LogicalANDExpression T_AND_AND BitwiseORExpression ;
1241
case $rule_number: {
1242
sym(1).Node = QScript::makeAstNode<QScript::AST::BinaryExpression> (driver->nodePool(), sym(1).Expression, QSOperator::And, sym(3).Expression);
1243
Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(3));
1247
LogicalANDExpressionNotIn: BitwiseORExpressionNotIn ;
1249
LogicalANDExpressionNotIn: LogicalANDExpressionNotIn T_AND_AND BitwiseORExpressionNotIn ;
1251
case $rule_number: {
1252
sym(1).Node = QScript::makeAstNode<QScript::AST::BinaryExpression> (driver->nodePool(), sym(1).Expression, QSOperator::And, sym(3).Expression);
1253
Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(3));
1257
LogicalORExpression: LogicalANDExpression ;
1259
LogicalORExpression: LogicalORExpression T_OR_OR LogicalANDExpression ;
1261
case $rule_number: {
1262
sym(1).Node = QScript::makeAstNode<QScript::AST::BinaryExpression> (driver->nodePool(), sym(1).Expression, QSOperator::Or, sym(3).Expression);
1263
Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(3));
1267
LogicalORExpressionNotIn: LogicalANDExpressionNotIn ;
1269
LogicalORExpressionNotIn: LogicalORExpressionNotIn T_OR_OR LogicalANDExpressionNotIn ;
1271
case $rule_number: {
1272
sym(1).Node = QScript::makeAstNode<QScript::AST::BinaryExpression> (driver->nodePool(), sym(1).Expression, QSOperator::Or, sym(3).Expression);
1273
Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(3));
1277
ConditionalExpression: LogicalORExpression ;
1279
ConditionalExpression: LogicalORExpression T_QUESTION AssignmentExpression T_COLON AssignmentExpression ;
1281
case $rule_number: {
1282
sym(1).Node = QScript::makeAstNode<QScript::AST::ConditionalExpression> (driver->nodePool(), sym(1).Expression, sym(3).Expression, sym(5).Expression);
1283
Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(3));
1287
ConditionalExpressionNotIn: LogicalORExpressionNotIn ;
1289
ConditionalExpressionNotIn: LogicalORExpressionNotIn T_QUESTION AssignmentExpressionNotIn T_COLON AssignmentExpressionNotIn ;
1291
case $rule_number: {
1292
sym(1).Node = QScript::makeAstNode<QScript::AST::ConditionalExpression> (driver->nodePool(), sym(1).Expression, sym(3).Expression, sym(5).Expression);
1293
Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(3));
1297
AssignmentExpression: ConditionalExpression ;
1299
AssignmentExpression: LeftHandSideExpression AssignmentOperator AssignmentExpression ;
1301
case $rule_number: {
1302
sym(1).Node = QScript::makeAstNode<QScript::AST::BinaryExpression> (driver->nodePool(), sym(1).Expression, sym(2).ival, sym(3).Expression);
1303
Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(3));
1307
AssignmentExpressionNotIn: ConditionalExpressionNotIn ;
1309
AssignmentExpressionNotIn: LeftHandSideExpression AssignmentOperator AssignmentExpressionNotIn ;
1311
case $rule_number: {
1312
sym(1).Node = QScript::makeAstNode<QScript::AST::BinaryExpression> (driver->nodePool(), sym(1).Expression, sym(2).ival, sym(3).Expression);
1313
Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(3));
1317
AssignmentOperator: T_EQ ;
1319
case $rule_number: {
1320
sym(1).ival = QSOperator::Assign;
1324
AssignmentOperator: T_STAR_EQ ;
1326
case $rule_number: {
1327
sym(1).ival = QSOperator::InplaceMul;
1331
AssignmentOperator: T_DIVIDE_EQ ;
1333
case $rule_number: {
1334
sym(1).ival = QSOperator::InplaceDiv;
1338
AssignmentOperator: T_REMAINDER_EQ ;
1340
case $rule_number: {
1341
sym(1).ival = QSOperator::InplaceMod;
1345
AssignmentOperator: T_PLUS_EQ ;
1347
case $rule_number: {
1348
sym(1).ival = QSOperator::InplaceAdd;
1352
AssignmentOperator: T_MINUS_EQ ;
1354
case $rule_number: {
1355
sym(1).ival = QSOperator::InplaceSub;
1359
AssignmentOperator: T_LT_LT_EQ ;
1361
case $rule_number: {
1362
sym(1).ival = QSOperator::InplaceLeftShift;
1366
AssignmentOperator: T_GT_GT_EQ ;
1368
case $rule_number: {
1369
sym(1).ival = QSOperator::InplaceRightShift;
1373
AssignmentOperator: T_GT_GT_GT_EQ ;
1375
case $rule_number: {
1376
sym(1).ival = QSOperator::InplaceURightShift;
1380
AssignmentOperator: T_AND_EQ ;
1382
case $rule_number: {
1383
sym(1).ival = QSOperator::InplaceAnd;
1387
AssignmentOperator: T_XOR_EQ ;
1389
case $rule_number: {
1390
sym(1).ival = QSOperator::InplaceXor;
1394
AssignmentOperator: T_OR_EQ ;
1396
case $rule_number: {
1397
sym(1).ival = QSOperator::InplaceOr;
1401
Expression: AssignmentExpression ;
1403
Expression: Expression T_COMMA AssignmentExpression ;
1405
case $rule_number: {
1406
sym(1).Node = QScript::makeAstNode<QScript::AST::Expression> (driver->nodePool(), sym(1).Expression, sym(3).Expression);
1407
Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(3));
1413
case $rule_number: {
1418
ExpressionOpt: Expression ;
1420
ExpressionNotIn: AssignmentExpressionNotIn ;
1422
ExpressionNotIn: ExpressionNotIn T_COMMA AssignmentExpressionNotIn ;
1424
case $rule_number: {
1425
sym(1).Node = QScript::makeAstNode<QScript::AST::Expression> (driver->nodePool(), sym(1).Expression, sym(3).Expression);
1426
Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(3));
1430
ExpressionNotInOpt: ;
1432
case $rule_number: {
1437
ExpressionNotInOpt: ExpressionNotIn ;
1440
Statement: VariableStatement ;
1441
Statement: EmptyStatement ;
1442
Statement: ExpressionStatement ;
1443
Statement: IfStatement ;
1444
Statement: IterationStatement ;
1445
Statement: ContinueStatement ;
1446
Statement: BreakStatement ;
1447
Statement: ReturnStatement ;
1448
Statement: WithStatement ;
1449
Statement: LabelledStatement ;
1450
Statement: SwitchStatement ;
1451
Statement: ThrowStatement ;
1452
Statement: TryStatement ;
1453
Statement: DebuggerStatement ;
1456
Block: T_LBRACE StatementListOpt T_RBRACE ;
1458
case $rule_number: {
1459
sym(1).Node = QScript::makeAstNode<QScript::AST::Block> (driver->nodePool(), sym(2).StatementList);
1460
Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(3));
1464
StatementList: Statement ;
1466
case $rule_number: {
1467
sym(1).Node = QScript::makeAstNode<QScript::AST::StatementList> (driver->nodePool(), sym(1).Statement);
1468
Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(1));
1472
StatementList: StatementList Statement ;
1474
case $rule_number: {
1475
sym(1).Node = QScript::makeAstNode<QScript::AST::StatementList> (driver->nodePool(), sym(1).StatementList, sym(2).Statement);
1476
Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(2));
1482
case $rule_number: {
1487
StatementListOpt: StatementList ;
1489
case $rule_number: {
1490
sym(1).Node = sym(1).StatementList->finish ();
1494
VariableStatement: VariableDeclarationKind VariableDeclarationList T_AUTOMATIC_SEMICOLON ; -- automatic semicolon
1495
VariableStatement: VariableDeclarationKind VariableDeclarationList T_SEMICOLON ;
1497
case $rule_number: {
1498
sym(1).Node = QScript::makeAstNode<QScript::AST::VariableStatement> (driver->nodePool(), sym(2).VariableDeclarationList->finish (/*readOnly=*/sym(1).ival == T_CONST));
1499
Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(3));
1503
VariableDeclarationKind: T_CONST ;
1505
case $rule_number: {
1506
sym(1).ival = T_CONST;
1510
VariableDeclarationKind: T_VAR ;
1512
case $rule_number: {
1513
sym(1).ival = T_VAR;
1517
VariableDeclarationList: VariableDeclaration ;
1519
case $rule_number: {
1520
sym(1).Node = QScript::makeAstNode<QScript::AST::VariableDeclarationList> (driver->nodePool(), sym(1).VariableDeclaration);
1521
Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(1));
1525
VariableDeclarationList: VariableDeclarationList T_COMMA VariableDeclaration ;
1527
case $rule_number: {
1528
sym(1).Node = QScript::makeAstNode<QScript::AST::VariableDeclarationList> (driver->nodePool(), sym(1).VariableDeclarationList, sym(3).VariableDeclaration);
1529
Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(3));
1533
VariableDeclarationListNotIn: VariableDeclarationNotIn ;
1535
case $rule_number: {
1536
sym(1).Node = QScript::makeAstNode<QScript::AST::VariableDeclarationList> (driver->nodePool(), sym(1).VariableDeclaration);
1537
Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(1));
1541
VariableDeclarationListNotIn: VariableDeclarationListNotIn T_COMMA VariableDeclarationNotIn ;
1543
case $rule_number: {
1544
sym(1).Node = QScript::makeAstNode<QScript::AST::VariableDeclarationList> (driver->nodePool(), sym(1).VariableDeclarationList, sym(3).VariableDeclaration);
1545
Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(3));
1549
VariableDeclaration: T_IDENTIFIER InitialiserOpt ;
1551
case $rule_number: {
1552
sym(1).Node = QScript::makeAstNode<QScript::AST::VariableDeclaration> (driver->nodePool(), sym(1).sval, sym(2).Expression);
1553
Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(2));
1557
VariableDeclarationNotIn: T_IDENTIFIER InitialiserNotInOpt ;
1559
case $rule_number: {
1560
sym(1).Node = QScript::makeAstNode<QScript::AST::VariableDeclaration> (driver->nodePool(), sym(1).sval, sym(2).Expression);
1561
Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(2));
1565
Initialiser: T_EQ AssignmentExpression ;
1567
case $rule_number: {
1569
Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(2));
1575
case $rule_number: {
1580
InitialiserOpt: Initialiser ;
1582
InitialiserNotIn: T_EQ AssignmentExpressionNotIn ;
1584
case $rule_number: {
1586
Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(2));
1590
InitialiserNotInOpt: ;
1592
case $rule_number: {
1597
InitialiserNotInOpt: InitialiserNotIn ;
1599
EmptyStatement: T_SEMICOLON ;
1601
case $rule_number: {
1602
sym(1).Node = QScript::makeAstNode<QScript::AST::EmptyStatement> (driver->nodePool());
1603
Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(1));
1607
ExpressionStatement: Expression T_AUTOMATIC_SEMICOLON ; -- automatic semicolon
1608
ExpressionStatement: Expression T_SEMICOLON ;
1610
case $rule_number: {
1611
sym(1).Node = QScript::makeAstNode<QScript::AST::ExpressionStatement> (driver->nodePool(), sym(1).Expression);
1612
Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(2));
1616
IfStatement: T_IF T_LPAREN Expression T_RPAREN Statement T_ELSE Statement ;
1618
case $rule_number: {
1619
sym(1).Node = QScript::makeAstNode<QScript::AST::IfStatement> (driver->nodePool(), sym(3).Expression, sym(5).Statement, sym(7).Statement);
1620
Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(7));
1624
IfStatement: T_IF T_LPAREN Expression T_RPAREN Statement ;
1626
case $rule_number: {
1627
sym(1).Node = QScript::makeAstNode<QScript::AST::IfStatement> (driver->nodePool(), sym(3).Expression, sym(5).Statement);
1628
Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(5));
1633
IterationStatement: T_DO Statement T_WHILE T_LPAREN Expression T_RPAREN T_AUTOMATIC_SEMICOLON ; -- automatic semicolon
1634
IterationStatement: T_DO Statement T_WHILE T_LPAREN Expression T_RPAREN T_SEMICOLON ;
1636
case $rule_number: {
1637
sym(1).Node = QScript::makeAstNode<QScript::AST::DoWhileStatement> (driver->nodePool(), sym(2).Statement, sym(5).Expression);
1638
Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(7));
1642
IterationStatement: T_WHILE T_LPAREN Expression T_RPAREN Statement ;
1644
case $rule_number: {
1645
sym(1).Node = QScript::makeAstNode<QScript::AST::WhileStatement> (driver->nodePool(), sym(3).Expression, sym(5).Statement);
1646
Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(5));
1650
IterationStatement: T_FOR T_LPAREN ExpressionNotInOpt T_SEMICOLON ExpressionOpt T_SEMICOLON ExpressionOpt T_RPAREN Statement ;
1652
case $rule_number: {
1653
sym(1).Node = QScript::makeAstNode<QScript::AST::ForStatement> (driver->nodePool(), sym(3).Expression, sym(5).Expression, sym(7).Expression, sym(9).Statement);
1654
Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(9));
1658
IterationStatement: T_FOR T_LPAREN T_VAR VariableDeclarationListNotIn T_SEMICOLON ExpressionOpt T_SEMICOLON ExpressionOpt T_RPAREN Statement ;
1660
case $rule_number: {
1661
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);
1662
Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(10));
1666
IterationStatement: T_FOR T_LPAREN LeftHandSideExpression T_IN Expression T_RPAREN Statement ;
1668
case $rule_number: {
1669
sym(1).Node = QScript::makeAstNode<QScript::AST::ForEachStatement> (driver->nodePool(), sym(3).Expression, sym(5).Expression, sym(7).Statement);
1670
Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(7));
1674
IterationStatement: T_FOR T_LPAREN T_VAR VariableDeclarationNotIn T_IN Expression T_RPAREN Statement ;
1676
case $rule_number: {
1677
sym(1).Node = QScript::makeAstNode<QScript::AST::LocalForEachStatement> (driver->nodePool(), sym(4).VariableDeclaration, sym(6).Expression, sym(8).Statement);
1678
Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(8));
1682
ContinueStatement: T_CONTINUE T_AUTOMATIC_SEMICOLON ; -- automatic semicolon
1683
ContinueStatement: T_CONTINUE T_SEMICOLON ;
1685
case $rule_number: {
1686
sym(1).Node = QScript::makeAstNode<QScript::AST::ContinueStatement> (driver->nodePool());
1687
Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(2));
1691
ContinueStatement: T_CONTINUE T_IDENTIFIER T_AUTOMATIC_SEMICOLON ; -- automatic semicolon
1692
ContinueStatement: T_CONTINUE T_IDENTIFIER T_SEMICOLON ;
1694
case $rule_number: {
1695
sym(1).Node = QScript::makeAstNode<QScript::AST::ContinueStatement> (driver->nodePool(), sym(2).sval);
1696
Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(3));
1700
BreakStatement: T_BREAK T_AUTOMATIC_SEMICOLON ; -- automatic semicolon
1701
BreakStatement: T_BREAK T_SEMICOLON ;
1703
case $rule_number: {
1704
sym(1).Node = QScript::makeAstNode<QScript::AST::BreakStatement> (driver->nodePool());
1705
Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(2));
1709
BreakStatement: T_BREAK T_IDENTIFIER T_AUTOMATIC_SEMICOLON ; -- automatic semicolon
1710
BreakStatement: T_BREAK T_IDENTIFIER T_SEMICOLON ;
1712
case $rule_number: {
1713
sym(1).Node = QScript::makeAstNode<QScript::AST::BreakStatement> (driver->nodePool(), sym(2).sval);
1714
Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(3));
1718
ReturnStatement: T_RETURN ExpressionOpt T_AUTOMATIC_SEMICOLON ; -- automatic semicolon
1719
ReturnStatement: T_RETURN ExpressionOpt T_SEMICOLON ;
1721
case $rule_number: {
1722
sym(1).Node = QScript::makeAstNode<QScript::AST::ReturnStatement> (driver->nodePool(), sym(2).Expression);
1723
Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(3));
1727
WithStatement: T_WITH T_LPAREN Expression T_RPAREN Statement ;
1729
case $rule_number: {
1730
sym(1).Node = QScript::makeAstNode<QScript::AST::WithStatement> (driver->nodePool(), sym(3).Expression, sym(5).Statement);
1731
Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(5));
1735
SwitchStatement: T_SWITCH T_LPAREN Expression T_RPAREN CaseBlock ;
1737
case $rule_number: {
1738
sym(1).Node = QScript::makeAstNode<QScript::AST::SwitchStatement> (driver->nodePool(), sym(3).Expression, sym(5).CaseBlock);
1739
Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(5));
1743
CaseBlock: T_LBRACE CaseClausesOpt T_RBRACE ;
1745
case $rule_number: {
1746
sym(1).Node = QScript::makeAstNode<QScript::AST::CaseBlock> (driver->nodePool(), sym(2).CaseClauses);
1747
Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(3));
1751
CaseBlock: T_LBRACE CaseClausesOpt DefaultClause CaseClausesOpt T_RBRACE ;
1753
case $rule_number: {
1754
sym(1).Node = QScript::makeAstNode<QScript::AST::CaseBlock> (driver->nodePool(), sym(2).CaseClauses, sym(3).DefaultClause, sym(4).CaseClauses);
1755
Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(5));
1759
CaseClauses: CaseClause ;
1761
case $rule_number: {
1762
sym(1).Node = QScript::makeAstNode<QScript::AST::CaseClauses> (driver->nodePool(), sym(1).CaseClause);
1763
Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(1));
1767
CaseClauses: CaseClauses CaseClause ;
1769
case $rule_number: {
1770
sym(1).Node = QScript::makeAstNode<QScript::AST::CaseClauses> (driver->nodePool(), sym(1).CaseClauses, sym(2).CaseClause);
1771
Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(2));
1777
case $rule_number: {
1782
CaseClausesOpt: CaseClauses ;
1784
case $rule_number: {
1785
sym(1).Node = sym(1).CaseClauses->finish ();
1786
Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(1));
1790
CaseClause: T_CASE Expression T_COLON StatementListOpt ;
1792
case $rule_number: {
1793
sym(1).Node = QScript::makeAstNode<QScript::AST::CaseClause> (driver->nodePool(), sym(2).Expression, sym(4).StatementList);
1794
Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(4));
1798
DefaultClause: T_DEFAULT T_COLON StatementListOpt ;
1800
case $rule_number: {
1801
sym(1).Node = QScript::makeAstNode<QScript::AST::DefaultClause> (driver->nodePool(), sym(3).StatementList);
1802
Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(3));
1806
LabelledStatement: T_IDENTIFIER T_COLON Statement ;
1808
case $rule_number: {
1809
sym(1).Node = QScript::makeAstNode<QScript::AST::LabelledStatement> (driver->nodePool(), sym(1).sval, sym(3).Statement);
1810
Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(3));
1814
ThrowStatement: T_THROW Expression T_AUTOMATIC_SEMICOLON ; -- automatic semicolon
1815
ThrowStatement: T_THROW Expression T_SEMICOLON ;
1817
case $rule_number: {
1818
sym(1).Node = QScript::makeAstNode<QScript::AST::ThrowStatement> (driver->nodePool(), sym(2).Expression);
1819
Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(3));
1823
TryStatement: T_TRY Block Catch ;
1825
case $rule_number: {
1826
sym(1).Node = QScript::makeAstNode<QScript::AST::TryStatement> (driver->nodePool(), sym(2).Statement, sym(3).Catch);
1827
Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(3));
1831
TryStatement: T_TRY Block Finally ;
1833
case $rule_number: {
1834
sym(1).Node = QScript::makeAstNode<QScript::AST::TryStatement> (driver->nodePool(), sym(2).Statement, sym(3).Finally);
1835
Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(3));
1839
TryStatement: T_TRY Block Catch Finally ;
1841
case $rule_number: {
1842
sym(1).Node = QScript::makeAstNode<QScript::AST::TryStatement> (driver->nodePool(), sym(2).Statement, sym(3).Catch, sym(4).Finally);
1843
Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(4));
1847
Catch: T_CATCH T_LPAREN T_IDENTIFIER T_RPAREN Block ;
1849
case $rule_number: {
1850
sym(1).Node = QScript::makeAstNode<QScript::AST::Catch> (driver->nodePool(), sym(3).sval, sym(5).Statement);
1851
Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(5));
1855
Finally: T_FINALLY Block ;
1857
case $rule_number: {
1858
sym(1).Node = QScript::makeAstNode<QScript::AST::Finally> (driver->nodePool(), sym(2).Statement);
1859
Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(2));
1863
DebuggerStatement: T_DEBUGGER T_AUTOMATIC_SEMICOLON ; -- automatic semicolon
1864
DebuggerStatement: T_DEBUGGER T_SEMICOLON ;
1866
case $rule_number: {
1867
sym(1).Node = QScript::makeAstNode<QScript::AST::DebuggerStatement> (driver->nodePool());
1868
Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(1));
1872
FunctionDeclaration: T_FUNCTION T_IDENTIFIER T_LPAREN FormalParameterListOpt T_RPAREN T_LBRACE FunctionBodyOpt T_RBRACE ;
1874
case $rule_number: {
1875
sym(1).Node = QScript::makeAstNode<QScript::AST::FunctionDeclaration> (driver->nodePool(), sym(2).sval, sym(4).FormalParameterList, sym(7).FunctionBody);
1876
Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(8));
1880
FunctionExpression: T_FUNCTION IdentifierOpt T_LPAREN FormalParameterListOpt T_RPAREN T_LBRACE FunctionBodyOpt T_RBRACE ;
1882
case $rule_number: {
1883
sym(1).Node = QScript::makeAstNode<QScript::AST::FunctionExpression> (driver->nodePool(), sym(2).sval, sym(4).FormalParameterList, sym(7).FunctionBody);
1884
Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(8));
1888
FormalParameterList: T_IDENTIFIER ;
1890
case $rule_number: {
1891
sym(1).Node = QScript::makeAstNode<QScript::AST::FormalParameterList> (driver->nodePool(), sym(1).sval);
1892
Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(1));
1896
FormalParameterList: FormalParameterList T_COMMA T_IDENTIFIER ;
1898
case $rule_number: {
1899
sym(1).Node = QScript::makeAstNode<QScript::AST::FormalParameterList> (driver->nodePool(), sym(1).FormalParameterList, sym(3).sval);
1900
Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(3));
1904
FormalParameterListOpt: ;
1906
case $rule_number: {
1911
FormalParameterListOpt: FormalParameterList ;
1913
case $rule_number: {
1914
sym(1).Node = sym(1).FormalParameterList->finish ();
1915
Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(1));
1921
case $rule_number: {
1926
FunctionBodyOpt: FunctionBody ;
1928
FunctionBody: SourceElements ;
1930
case $rule_number: {
1931
sym(1).Node = QScript::makeAstNode<QScript::AST::FunctionBody> (driver->nodePool(), sym(1).SourceElements->finish ());
1932
Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(1));
1936
Program: SourceElements ;
1938
case $rule_number: {
1939
sym(1).Node = QScript::makeAstNode<QScript::AST::Program> (driver->nodePool(), sym(1).SourceElements->finish ());
1940
driver->changeAbstractSyntaxTree(sym(1).Node);
1941
Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(1));
1945
SourceElements: SourceElement ;
1947
case $rule_number: {
1948
sym(1).Node = QScript::makeAstNode<QScript::AST::SourceElements> (driver->nodePool(), sym(1).SourceElement);
1949
Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(1));
1953
SourceElements: SourceElements SourceElement ;
1955
case $rule_number: {
1956
sym(1).Node = QScript::makeAstNode<QScript::AST::SourceElements> (driver->nodePool(), sym(1).SourceElements, sym(2).SourceElement);
1957
Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(2));
1961
SourceElement: Statement ;
1963
case $rule_number: {
1964
sym(1).Node = QScript::makeAstNode<QScript::AST::StatementSourceElement> (driver->nodePool(), sym(1).Statement);
1965
Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(1));
1969
SourceElement: FunctionDeclaration ;
1971
case $rule_number: {
1972
sym(1).Node = QScript::makeAstNode<QScript::AST::FunctionSourceElement> (driver->nodePool(), sym(1).FunctionDeclaration);
1973
Q_SCRIPT_UPDATE_POSITION(sym(1).Node, loc(1), loc(1));
1979
case $rule_number: {
1984
IdentifierOpt: T_IDENTIFIER ;
1986
PropertyNameAndValueListOpt: ;
1988
case $rule_number: {
1993
PropertyNameAndValueListOpt: PropertyNameAndValueList ;
1998
state_stack [tos] = nt_action (act, lhs [r] - TERMINAL_COUNT);
2001
location_stack[tos - 1].endLine = location_stack[tos + rhs[r] - 2].endLine;
2002
location_stack[tos - 1].endColumn = location_stack[tos + rhs[r] - 2].endColumn;
2003
location_stack[tos] = location_stack[tos + rhs[r] - 1];
2009
if (saved_yytoken == -1 && automatic (driver, yytoken) && t_action (state, T_AUTOMATIC_SEMICOLON) > 0)
2011
saved_yytoken = yytoken;
2012
yytoken = T_SEMICOLON;
2016
else if ((state == INITIAL_STATE) && (yytoken == 0)) {
2017
// accept empty input
2018
yytoken = T_SEMICOLON;
2025
int expected_tokens [3];
2026
for (int tk = 0; tk < TERMINAL_COUNT; ++tk)
2028
int k = t_action (ers, tk);
2034
else if (spell [tk])
2037
expected_tokens [shifts] = tk;
2042
error_message.clear ();
2043
if (shifts && shifts < 3)
2047
for (int s = 0; s < shifts; ++s)
2050
error_message += QLatin1String ("Expected ");
2052
error_message += QLatin1String (", ");
2055
error_message += QLatin1String("`");
2056
error_message += QLatin1String (spell [expected_tokens [s]]);
2057
error_message += QLatin1String("'");
2061
if (error_message.isEmpty())
2062
error_message = lexer->errorMessage();
2064
error_lineno = lexer->startLineNo();
2065
error_column = lexer->startColumnNo();
2076
#endif // QT_NO_SCRIPT
2081
#endif // QT_NO_SCRIPT
2083
#endif // QSCRIPTPARSER_P_H