1
// THIS FILE IS GENERATED
2
// WARNING! All changes made in this file will be lost!
8
#include <QtCore/QDebug>
9
#include <KTextEditor/Range>
14
void Parser::tokenize(const QString& contents, int initialState)
16
m_contents = contents;
17
Lexer lexer(tokenStream, contents, initialState);
18
int kind = Parser::Token_EOF;
19
int lastDocCommentBegin;
20
int lastDocCommentEnd;
24
lastDocCommentBegin = 0;
25
lastDocCommentEnd = 0;
26
kind = lexer.nextTokenKind();
27
while (kind == Parser::Token_WHITESPACE || kind == Parser::Token_COMMENT || kind == Parser::Token_DOC_COMMENT)
29
if (kind == Parser::Token_DOC_COMMENT)
31
lastDocCommentBegin = lexer.tokenBegin();
32
lastDocCommentEnd = lexer.tokenEnd();
34
kind = lexer.nextTokenKind();
36
if ( !kind ) // when the lexer returns 0, the end of file is reached
38
kind = Parser::Token_EOF;
40
Parser::Token &t = tokenStream->next();
41
t.begin = lexer.tokenBegin();
42
t.end = lexer.tokenEnd();
44
t.docCommentBegin = lastDocCommentBegin;
45
t.docCommentEnd = lastDocCommentEnd;
46
//if ( m_debug ) qDebug() << kind << tokenText(t.begin,t.end) << t.begin << t.end;
48
while ( kind != Parser::Token_EOF );
50
yylex(); // produce the look ahead token
54
QString Parser::tokenText(qint64 begin, qint64 end)
56
return m_contents.mid(begin,end-begin+1);
60
void Parser::reportProblem( Parser::ProblemType type, const QString& message )
63
qDebug() << "** ERROR:" << message;
64
else if (type == Warning)
65
qDebug() << "** WARNING:" << message;
66
else if (type == Info)
67
qDebug() << "** Info:" << message;
71
qint64 index = tokenStream->index()-1;
72
tokenStream->startPosition(index, &sLine, &sCol);
75
tokenStream->endPosition(index, &eLine, &eCol);
76
KDevelop::Problem *p = new KDevelop::Problem();
77
p->setSource(KDevelop::ProblemData::Parser);
81
p->setSeverity(KDevelop::ProblemData::Error);
84
p->setSeverity(KDevelop::ProblemData::Warning);
87
p->setSeverity(KDevelop::ProblemData::Hint);
90
p->setDescription(message);
91
p->setFinalLocation(KDevelop::DocumentRange(m_currentDocument, KTextEditor::Range(sLine, sCol, eLine, eCol+1)));
92
m_problems << KDevelop::ProblemPointer(p);
96
// custom error recovery
97
void Parser::expectedToken(int /*expected*/, qint64 /*where*/, const QString& name)
99
reportProblem( Parser::Error, QString("Expected token \"%1\"").arg(name));
102
void Parser::expectedSymbol(int /*expectedSymbol*/, const QString& name)
106
qint64 index = tokenStream->index()-1;
107
Token &token = tokenStream->token(index);
108
kDebug() << "token starts at:" << token.begin;
109
kDebug() << "index is:" << index;
110
tokenStream->startPosition(index, &line, &col);
111
QString tokenValue = tokenText(token.begin, token.end);
114
tokenStream->endPosition(index, &eLine, &eCol);
115
reportProblem( Parser::Error,
116
QString("Expected symbol \"%1\" (current token: \"%2\" [%3] at %4:%5 - %6:%7)")
118
.arg(token.kind != 0 ? tokenValue : "EOF")
126
void Parser::setDebug( bool debug )
131
void Parser::setCurrentDocument(QString url)
133
m_currentDocument = url;
137
Parser::ParserState *Parser::copyCurrentState()
139
ParserState *state = new ParserState();
140
state->varExpressionState = m_state.varExpressionState;
141
state->varExpressionIsVariable = m_state.varExpressionIsVariable;
145
void Parser::restoreState( Parser::ParserState* state)
147
m_state.varExpressionState = state->varExpressionState;
148
m_state.varExpressionIsVariable = state->varExpressionIsVariable;
151
} // end of namespace Php
157
bool Parser::parseAdditiveExpression(AdditiveExpressionAst **yynode)
159
*yynode = create<AdditiveExpressionAst>();
161
(*yynode)->startToken = tokenStream->index() - 1;
163
if (yytoken == Token_ARRAY
164
|| yytoken == Token_ARRAY_CAST
165
|| yytoken == Token_AT
166
|| yytoken == Token_BACKTICK
167
|| yytoken == Token_BANG
168
|| yytoken == Token_BOOL_CAST
169
|| yytoken == Token_CLASS_C
170
|| yytoken == Token_CLONE
171
|| yytoken == Token_CONSTANT_ENCAPSED_STRING
172
|| yytoken == Token_DEC
173
|| yytoken == Token_DNUMBER
174
|| yytoken == Token_DOLLAR
175
|| yytoken == Token_DOUBLE_CAST
176
|| yytoken == Token_DOUBLE_QUOTE
177
|| yytoken == Token_EMPTY
178
|| yytoken == Token_EVAL
179
|| yytoken == Token_EXIT
180
|| yytoken == Token_FILE
181
|| yytoken == Token_FUNC_C
182
|| yytoken == Token_INC
183
|| yytoken == Token_INCLUDE
184
|| yytoken == Token_INCLUDE_ONCE
185
|| yytoken == Token_INT_CAST
186
|| yytoken == Token_ISSET
187
|| yytoken == Token_LINE
188
|| yytoken == Token_LIST
189
|| yytoken == Token_LNUMBER
190
|| yytoken == Token_LPAREN
191
|| yytoken == Token_METHOD_C
192
|| yytoken == Token_MINUS
193
|| yytoken == Token_NEW
194
|| yytoken == Token_OBJECT_CAST
195
|| yytoken == Token_PLUS
196
|| yytoken == Token_REQUIRE
197
|| yytoken == Token_REQUIRE_ONCE
198
|| yytoken == Token_START_HEREDOC
199
|| yytoken == Token_STRING
200
|| yytoken == Token_STRING_CAST
201
|| yytoken == Token_STRING_VARNAME
202
|| yytoken == Token_TILDE
203
|| yytoken == Token_UNSET_CAST
204
|| yytoken == Token_VARIABLE)
206
MultiplicativeExpressionAst *__node_0 = 0;
207
if (!parseMultiplicativeExpression(&__node_0))
211
expectedSymbol(AstNode::MultiplicativeExpressionKind, "multiplicativeExpression");
215
(*yynode)->expression = __node_0;
217
while (yytoken == Token_CONCAT
218
|| yytoken == Token_MINUS
219
|| yytoken == Token_PLUS)
221
AdditiveExpressionRestAst *__node_1 = 0;
222
if (!parseAdditiveExpressionRest(&__node_1))
226
expectedSymbol(AstNode::AdditiveExpressionRestKind, "additiveExpressionRest");
230
(*yynode)->additionalExpressionSequence = snoc((*yynode)->additionalExpressionSequence, __node_1, memoryPool);
239
(*yynode)->endToken = tokenStream->index() - 2;
244
bool Parser::parseAdditiveExpressionRest(AdditiveExpressionRestAst **yynode)
246
*yynode = create<AdditiveExpressionRestAst>();
248
(*yynode)->startToken = tokenStream->index() - 1;
250
if (yytoken == Token_CONCAT
251
|| yytoken == Token_MINUS
252
|| yytoken == Token_PLUS)
254
if (yytoken == Token_PLUS)
256
if (yytoken != Token_PLUS)
260
expectedToken(yytoken, Token_PLUS, "+");
266
(*yynode)->operation = OperationPlus;
268
else if (yytoken == Token_MINUS)
270
if (yytoken != Token_MINUS)
274
expectedToken(yytoken, Token_MINUS, "-");
280
(*yynode)->operation = OperationMinus;
282
else if (yytoken == Token_CONCAT)
284
if (yytoken != Token_CONCAT)
288
expectedToken(yytoken, Token_CONCAT, ".");
294
(*yynode)->operation = OperationConcat;
300
MultiplicativeExpressionAst *__node_2 = 0;
301
if (!parseMultiplicativeExpression(&__node_2))
305
expectedSymbol(AstNode::MultiplicativeExpressionKind, "multiplicativeExpression");
309
(*yynode)->expression = __node_2;
317
(*yynode)->endToken = tokenStream->index() - 2;
322
bool Parser::parseArrayPairValue(ArrayPairValueAst **yynode)
324
*yynode = create<ArrayPairValueAst>();
326
(*yynode)->startToken = tokenStream->index() - 1;
328
if (yytoken == Token_ARRAY
329
|| yytoken == Token_ARRAY_CAST
330
|| yytoken == Token_AT
331
|| yytoken == Token_BACKTICK
332
|| yytoken == Token_BANG
333
|| yytoken == Token_BIT_AND
334
|| yytoken == Token_BOOL_CAST
335
|| yytoken == Token_CLASS_C
336
|| yytoken == Token_CLONE
337
|| yytoken == Token_CONSTANT_ENCAPSED_STRING
338
|| yytoken == Token_DEC
339
|| yytoken == Token_DNUMBER
340
|| yytoken == Token_DOLLAR
341
|| yytoken == Token_DOUBLE_CAST
342
|| yytoken == Token_DOUBLE_QUOTE
343
|| yytoken == Token_EMPTY
344
|| yytoken == Token_EVAL
345
|| yytoken == Token_EXIT
346
|| yytoken == Token_FILE
347
|| yytoken == Token_FUNC_C
348
|| yytoken == Token_INC
349
|| yytoken == Token_INCLUDE
350
|| yytoken == Token_INCLUDE_ONCE
351
|| yytoken == Token_INT_CAST
352
|| yytoken == Token_ISSET
353
|| yytoken == Token_LINE
354
|| yytoken == Token_LIST
355
|| yytoken == Token_LNUMBER
356
|| yytoken == Token_LPAREN
357
|| yytoken == Token_METHOD_C
358
|| yytoken == Token_MINUS
359
|| yytoken == Token_NEW
360
|| yytoken == Token_OBJECT_CAST
361
|| yytoken == Token_PLUS
362
|| yytoken == Token_PRINT
363
|| yytoken == Token_REQUIRE
364
|| yytoken == Token_REQUIRE_ONCE
365
|| yytoken == Token_START_HEREDOC
366
|| yytoken == Token_STRING
367
|| yytoken == Token_STRING_CAST
368
|| yytoken == Token_STRING_VARNAME
369
|| yytoken == Token_TILDE
370
|| yytoken == Token_UNSET_CAST
371
|| yytoken == Token_VARIABLE)
373
if (yytoken == Token_ARRAY
374
|| yytoken == Token_ARRAY_CAST
375
|| yytoken == Token_AT
376
|| yytoken == Token_BACKTICK
377
|| yytoken == Token_BANG
378
|| yytoken == Token_BOOL_CAST
379
|| yytoken == Token_CLASS_C
380
|| yytoken == Token_CLONE
381
|| yytoken == Token_CONSTANT_ENCAPSED_STRING
382
|| yytoken == Token_DEC
383
|| yytoken == Token_DNUMBER
384
|| yytoken == Token_DOLLAR
385
|| yytoken == Token_DOUBLE_CAST
386
|| yytoken == Token_DOUBLE_QUOTE
387
|| yytoken == Token_EMPTY
388
|| yytoken == Token_EVAL
389
|| yytoken == Token_EXIT
390
|| yytoken == Token_FILE
391
|| yytoken == Token_FUNC_C
392
|| yytoken == Token_INC
393
|| yytoken == Token_INCLUDE
394
|| yytoken == Token_INCLUDE_ONCE
395
|| yytoken == Token_INT_CAST
396
|| yytoken == Token_ISSET
397
|| yytoken == Token_LINE
398
|| yytoken == Token_LIST
399
|| yytoken == Token_LNUMBER
400
|| yytoken == Token_LPAREN
401
|| yytoken == Token_METHOD_C
402
|| yytoken == Token_MINUS
403
|| yytoken == Token_NEW
404
|| yytoken == Token_OBJECT_CAST
405
|| yytoken == Token_PLUS
406
|| yytoken == Token_PRINT
407
|| yytoken == Token_REQUIRE
408
|| yytoken == Token_REQUIRE_ONCE
409
|| yytoken == Token_START_HEREDOC
410
|| yytoken == Token_STRING
411
|| yytoken == Token_STRING_CAST
412
|| yytoken == Token_STRING_VARNAME
413
|| yytoken == Token_TILDE
414
|| yytoken == Token_UNSET_CAST
415
|| yytoken == Token_VARIABLE)
417
ExprAst *__node_3 = 0;
418
if (!parseExpr(&__node_3))
422
expectedSymbol(AstNode::ExprKind, "expr");
426
(*yynode)->expr = __node_3;
428
if (yytoken == Token_DOUBLE_ARROW)
430
if (yytoken != Token_DOUBLE_ARROW)
434
expectedToken(yytoken, Token_DOUBLE_ARROW, "=>");
440
if (yytoken == Token_ARRAY
441
|| yytoken == Token_ARRAY_CAST
442
|| yytoken == Token_AT
443
|| yytoken == Token_BACKTICK
444
|| yytoken == Token_BANG
445
|| yytoken == Token_BOOL_CAST
446
|| yytoken == Token_CLASS_C
447
|| yytoken == Token_CLONE
448
|| yytoken == Token_CONSTANT_ENCAPSED_STRING
449
|| yytoken == Token_DEC
450
|| yytoken == Token_DNUMBER
451
|| yytoken == Token_DOLLAR
452
|| yytoken == Token_DOUBLE_CAST
453
|| yytoken == Token_DOUBLE_QUOTE
454
|| yytoken == Token_EMPTY
455
|| yytoken == Token_EVAL
456
|| yytoken == Token_EXIT
457
|| yytoken == Token_FILE
458
|| yytoken == Token_FUNC_C
459
|| yytoken == Token_INC
460
|| yytoken == Token_INCLUDE
461
|| yytoken == Token_INCLUDE_ONCE
462
|| yytoken == Token_INT_CAST
463
|| yytoken == Token_ISSET
464
|| yytoken == Token_LINE
465
|| yytoken == Token_LIST
466
|| yytoken == Token_LNUMBER
467
|| yytoken == Token_LPAREN
468
|| yytoken == Token_METHOD_C
469
|| yytoken == Token_MINUS
470
|| yytoken == Token_NEW
471
|| yytoken == Token_OBJECT_CAST
472
|| yytoken == Token_PLUS
473
|| yytoken == Token_PRINT
474
|| yytoken == Token_REQUIRE
475
|| yytoken == Token_REQUIRE_ONCE
476
|| yytoken == Token_START_HEREDOC
477
|| yytoken == Token_STRING
478
|| yytoken == Token_STRING_CAST
479
|| yytoken == Token_STRING_VARNAME
480
|| yytoken == Token_TILDE
481
|| yytoken == Token_UNSET_CAST
482
|| yytoken == Token_VARIABLE)
484
ExprAst *__node_4 = 0;
485
if (!parseExpr(&__node_4))
489
expectedSymbol(AstNode::ExprKind, "expr");
493
(*yynode)->exprValue = __node_4;
496
else if (yytoken == Token_BIT_AND)
498
if (yytoken != Token_BIT_AND)
502
expectedToken(yytoken, Token_BIT_AND, "&");
508
VariableAst *__node_5 = 0;
509
if (!parseVariable(&__node_5))
513
expectedSymbol(AstNode::VariableKind, "variable");
517
(*yynode)->varValue = __node_5;
525
else if (true /*epsilon*/)
533
else if (yytoken == Token_BIT_AND)
535
if (yytoken != Token_BIT_AND)
539
expectedToken(yytoken, Token_BIT_AND, "&");
545
VariableAst *__node_6 = 0;
546
if (!parseVariable(&__node_6))
550
expectedSymbol(AstNode::VariableKind, "variable");
554
(*yynode)->variable = __node_6;
567
(*yynode)->endToken = tokenStream->index() - 2;
572
bool Parser::parseAssignmentExpression(AssignmentExpressionAst **yynode)
574
*yynode = create<AssignmentExpressionAst>();
576
(*yynode)->startToken = tokenStream->index() - 1;
578
if (yytoken == Token_ARRAY
579
|| yytoken == Token_ARRAY_CAST
580
|| yytoken == Token_AT
581
|| yytoken == Token_BACKTICK
582
|| yytoken == Token_BANG
583
|| yytoken == Token_BOOL_CAST
584
|| yytoken == Token_CLASS_C
585
|| yytoken == Token_CLONE
586
|| yytoken == Token_CONSTANT_ENCAPSED_STRING
587
|| yytoken == Token_DEC
588
|| yytoken == Token_DNUMBER
589
|| yytoken == Token_DOLLAR
590
|| yytoken == Token_DOUBLE_CAST
591
|| yytoken == Token_DOUBLE_QUOTE
592
|| yytoken == Token_EMPTY
593
|| yytoken == Token_EVAL
594
|| yytoken == Token_EXIT
595
|| yytoken == Token_FILE
596
|| yytoken == Token_FUNC_C
597
|| yytoken == Token_INC
598
|| yytoken == Token_INCLUDE
599
|| yytoken == Token_INCLUDE_ONCE
600
|| yytoken == Token_INT_CAST
601
|| yytoken == Token_ISSET
602
|| yytoken == Token_LINE
603
|| yytoken == Token_LIST
604
|| yytoken == Token_LNUMBER
605
|| yytoken == Token_LPAREN
606
|| yytoken == Token_METHOD_C
607
|| yytoken == Token_MINUS
608
|| yytoken == Token_NEW
609
|| yytoken == Token_OBJECT_CAST
610
|| yytoken == Token_PLUS
611
|| yytoken == Token_REQUIRE
612
|| yytoken == Token_REQUIRE_ONCE
613
|| yytoken == Token_START_HEREDOC
614
|| yytoken == Token_STRING
615
|| yytoken == Token_STRING_CAST
616
|| yytoken == Token_STRING_VARNAME
617
|| yytoken == Token_TILDE
618
|| yytoken == Token_UNSET_CAST
619
|| yytoken == Token_VARIABLE)
621
m_state.varExpressionIsVariable = false;
622
ConditionalExpressionAst *__node_7 = 0;
623
if (!parseConditionalExpression(&__node_7))
627
expectedSymbol(AstNode::ConditionalExpressionKind, "conditionalExpression");
631
(*yynode)->expression = __node_7;
633
if (yytoken == Token_ASSIGN)
635
AssignmentExpressionEqualAst *__node_8 = 0;
636
if (!parseAssignmentExpressionEqual(&__node_8))
640
expectedSymbol(AstNode::AssignmentExpressionEqualKind, "assignmentExpressionEqual");
644
(*yynode)->assignmentExpressionEqual = __node_8;
647
else if (yytoken == Token_AND_ASSIGN
648
|| yytoken == Token_CONCAT_ASSIGN
649
|| yytoken == Token_DIV_ASSIGN
650
|| yytoken == Token_MINUS_ASSIGN
651
|| yytoken == Token_MOD_ASSIGN
652
|| yytoken == Token_MUL_ASSIGN
653
|| yytoken == Token_OR_ASSIGN
654
|| yytoken == Token_PLUS_ASSIGN
655
|| yytoken == Token_SL_ASSIGN
656
|| yytoken == Token_SR_ASSIGN
657
|| yytoken == Token_XOR_ASSIGN)
659
if (yytoken == Token_PLUS_ASSIGN)
661
if (yytoken != Token_PLUS_ASSIGN)
665
expectedToken(yytoken, Token_PLUS_ASSIGN, "+=");
671
(*yynode)->operation = OperationPlus;
673
else if (yytoken == Token_MINUS_ASSIGN)
675
if (yytoken != Token_MINUS_ASSIGN)
679
expectedToken(yytoken, Token_MINUS_ASSIGN, "-=");
685
(*yynode)->operation = OperationMinus;
687
else if (yytoken == Token_MUL_ASSIGN)
689
if (yytoken != Token_MUL_ASSIGN)
693
expectedToken(yytoken, Token_MUL_ASSIGN, "*=");
699
(*yynode)->operation = OperationMul;
701
else if (yytoken == Token_DIV_ASSIGN)
703
if (yytoken != Token_DIV_ASSIGN)
707
expectedToken(yytoken, Token_DIV_ASSIGN, "/=");
713
(*yynode)->operation = OperationDiv;
715
else if (yytoken == Token_CONCAT_ASSIGN)
717
if (yytoken != Token_CONCAT_ASSIGN)
721
expectedToken(yytoken, Token_CONCAT_ASSIGN, ".=");
727
(*yynode)->operation = OperationConcat;
729
else if (yytoken == Token_MOD_ASSIGN)
731
if (yytoken != Token_MOD_ASSIGN)
735
expectedToken(yytoken, Token_MOD_ASSIGN, "%=");
741
(*yynode)->operation = OperationMod;
743
else if (yytoken == Token_AND_ASSIGN)
745
if (yytoken != Token_AND_ASSIGN)
749
expectedToken(yytoken, Token_AND_ASSIGN, "&=");
755
(*yynode)->operation = OperationAnd;
757
else if (yytoken == Token_OR_ASSIGN)
759
if (yytoken != Token_OR_ASSIGN)
763
expectedToken(yytoken, Token_OR_ASSIGN, "|=");
769
(*yynode)->operation = OperationOr;
771
else if (yytoken == Token_XOR_ASSIGN)
773
if (yytoken != Token_XOR_ASSIGN)
777
expectedToken(yytoken, Token_XOR_ASSIGN, "^=");
783
(*yynode)->operation = OperationXor;
785
else if (yytoken == Token_SL_ASSIGN)
787
if (yytoken != Token_SL_ASSIGN)
791
expectedToken(yytoken, Token_SL_ASSIGN, "<<=");
797
(*yynode)->operation = OperationSl;
799
else if (yytoken == Token_SR_ASSIGN)
801
if (yytoken != Token_SR_ASSIGN)
805
expectedToken(yytoken, Token_SR_ASSIGN, ">>=");
811
(*yynode)->operation = OperationSr;
817
AssignmentExpressionCheckIfVariableAst *__node_9 = 0;
818
if (!parseAssignmentExpressionCheckIfVariable(&__node_9))
822
expectedSymbol(AstNode::AssignmentExpressionCheckIfVariableKind, "assignmentExpressionCheckIfVariable");
826
AssignmentExpressionAst *__node_10 = 0;
827
if (!parseAssignmentExpression(&__node_10))
831
expectedSymbol(AstNode::AssignmentExpressionKind, "assignmentExpression");
835
(*yynode)->assignmentExpression = __node_10;
838
else if (true /*epsilon*/)
851
(*yynode)->endToken = tokenStream->index() - 2;
856
bool Parser::parseAssignmentExpressionCheckIfVariable(AssignmentExpressionCheckIfVariableAst **yynode)
858
*yynode = create<AssignmentExpressionCheckIfVariableAst>();
860
(*yynode)->startToken = tokenStream->index() - 1;
862
if (true /*epsilon*/ || yytoken == Token_ARRAY
863
|| yytoken == Token_ARRAY_CAST
864
|| yytoken == Token_AT
865
|| yytoken == Token_BACKTICK
866
|| yytoken == Token_BANG
867
|| yytoken == Token_BIT_AND
868
|| yytoken == Token_BOOL_CAST
869
|| yytoken == Token_CLASS_C
870
|| yytoken == Token_CLONE
871
|| yytoken == Token_CONSTANT_ENCAPSED_STRING
872
|| yytoken == Token_DEC
873
|| yytoken == Token_DNUMBER
874
|| yytoken == Token_DOLLAR
875
|| yytoken == Token_DOUBLE_CAST
876
|| yytoken == Token_DOUBLE_QUOTE
877
|| yytoken == Token_EMPTY
878
|| yytoken == Token_EOF
879
|| yytoken == Token_EVAL
880
|| yytoken == Token_EXIT
881
|| yytoken == Token_FILE
882
|| yytoken == Token_FUNC_C
883
|| yytoken == Token_INC
884
|| yytoken == Token_INCLUDE
885
|| yytoken == Token_INCLUDE_ONCE
886
|| yytoken == Token_INT_CAST
887
|| yytoken == Token_ISSET
888
|| yytoken == Token_LINE
889
|| yytoken == Token_LIST
890
|| yytoken == Token_LNUMBER
891
|| yytoken == Token_LPAREN
892
|| yytoken == Token_METHOD_C
893
|| yytoken == Token_MINUS
894
|| yytoken == Token_NEW
895
|| yytoken == Token_OBJECT_CAST
896
|| yytoken == Token_PLUS
897
|| yytoken == Token_REQUIRE
898
|| yytoken == Token_REQUIRE_ONCE
899
|| yytoken == Token_START_HEREDOC
900
|| yytoken == Token_STRING
901
|| yytoken == Token_STRING_CAST
902
|| yytoken == Token_STRING_VARNAME
903
|| yytoken == Token_TILDE
904
|| yytoken == Token_UNSET_CAST
905
|| yytoken == Token_VARIABLE)
908
if (!m_state.varExpressionIsVariable)
910
reportProblem(Error, "Left side is not a variable");
919
(*yynode)->endToken = tokenStream->index() - 2;
924
bool Parser::parseAssignmentExpressionEqual(AssignmentExpressionEqualAst **yynode)
926
*yynode = create<AssignmentExpressionEqualAst>();
928
(*yynode)->startToken = tokenStream->index() - 1;
930
if (yytoken == Token_ASSIGN)
932
if (yytoken != Token_ASSIGN)
936
expectedToken(yytoken, Token_ASSIGN, "=");
942
AssignmentExpressionCheckIfVariableAst *__node_11 = 0;
943
if (!parseAssignmentExpressionCheckIfVariable(&__node_11))
947
expectedSymbol(AstNode::AssignmentExpressionCheckIfVariableKind, "assignmentExpressionCheckIfVariable");
951
if (yytoken == Token_BIT_AND)
953
if (yytoken != Token_BIT_AND)
957
expectedToken(yytoken, Token_BIT_AND, "&");
963
if (yytoken == Token_NEW)
965
reportProblem(Warning, "=& new foo() is deprecated");
966
m_state.varExpressionState = OnlyNewObject;
970
m_state.varExpressionState = OnlyVariable;
973
else if (true /*epsilon*/)
980
AssignmentExpressionAst *__node_12 = 0;
981
if (!parseAssignmentExpression(&__node_12))
985
expectedSymbol(AstNode::AssignmentExpressionKind, "assignmentExpression");
989
(*yynode)->assignmentExpression = __node_12;
991
m_state.varExpressionState = Normal;
998
(*yynode)->endToken = tokenStream->index() - 2;
1003
bool Parser::parseAssignmentList(AssignmentListAst **yynode)
1005
*yynode = create<AssignmentListAst>();
1007
(*yynode)->startToken = tokenStream->index() - 1;
1009
if (yytoken == Token_COMMA
1010
|| yytoken == Token_DOLLAR
1011
|| yytoken == Token_LIST
1012
|| yytoken == Token_STRING
1013
|| yytoken == Token_VARIABLE || yytoken == Token_EOF
1014
|| yytoken == Token_RPAREN)
1016
AssignmentListElementAst *__node_13 = 0;
1017
if (!parseAssignmentListElement(&__node_13))
1021
expectedSymbol(AstNode::AssignmentListElementKind, "assignmentListElement");
1025
(*yynode)->elementSequence = snoc((*yynode)->elementSequence, __node_13, memoryPool);
1027
while (yytoken == Token_COMMA)
1029
if (yytoken != Token_COMMA)
1033
expectedToken(yytoken, Token_COMMA, ",");
1039
AssignmentListElementAst *__node_14 = 0;
1040
if (!parseAssignmentListElement(&__node_14))
1044
expectedSymbol(AstNode::AssignmentListElementKind, "assignmentListElement");
1048
(*yynode)->elementSequence = snoc((*yynode)->elementSequence, __node_14, memoryPool);
1057
(*yynode)->endToken = tokenStream->index() - 2;
1062
bool Parser::parseAssignmentListElement(AssignmentListElementAst **yynode)
1064
*yynode = create<AssignmentListElementAst>();
1066
(*yynode)->startToken = tokenStream->index() - 1;
1068
if (yytoken == Token_DOLLAR
1069
|| yytoken == Token_LIST
1070
|| yytoken == Token_STRING
1071
|| yytoken == Token_VARIABLE || yytoken == Token_COMMA
1072
|| yytoken == Token_EOF
1073
|| yytoken == Token_RPAREN)
1075
if (yytoken == Token_DOLLAR
1076
|| yytoken == Token_STRING
1077
|| yytoken == Token_VARIABLE)
1079
VariableAst *__node_15 = 0;
1080
if (!parseVariable(&__node_15))
1084
expectedSymbol(AstNode::VariableKind, "variable");
1088
(*yynode)->variable = __node_15;
1091
else if (yytoken == Token_LIST)
1093
if (yytoken != Token_LIST)
1097
expectedToken(yytoken, Token_LIST, "list");
1103
if (yytoken != Token_LPAREN)
1107
expectedToken(yytoken, Token_LPAREN, "(");
1113
AssignmentListAst *__node_16 = 0;
1114
if (!parseAssignmentList(&__node_16))
1118
expectedSymbol(AstNode::AssignmentListKind, "assignmentList");
1122
(*yynode)->assignmentList = __node_16;
1124
if (yytoken != Token_RPAREN)
1128
expectedToken(yytoken, Token_RPAREN, ")");
1135
else if (true /*epsilon*/)
1148
(*yynode)->endToken = tokenStream->index() - 2;
1153
bool Parser::parseBaseVariable(BaseVariableAst **yynode)
1155
*yynode = create<BaseVariableAst>();
1157
(*yynode)->startToken = tokenStream->index() - 1;
1159
if (yytoken == Token_DOLLAR
1160
|| yytoken == Token_STRING
1161
|| yytoken == Token_VARIABLE)
1163
if (yytoken == Token_DOLLAR
1164
|| yytoken == Token_VARIABLE)
1166
CompoundVariableWithSimpleIndirectReferenceAst *__node_17 = 0;
1167
if (!parseCompoundVariableWithSimpleIndirectReference(&__node_17))
1171
expectedSymbol(AstNode::CompoundVariableWithSimpleIndirectReferenceKind, "compoundVariableWithSimpleIndirectReference");
1175
(*yynode)->var = __node_17;
1177
while (yytoken == Token_LBRACE
1178
|| yytoken == Token_LBRACKET)
1180
DimListItemAst *__node_18 = 0;
1181
if (!parseDimListItem(&__node_18))
1185
expectedSymbol(AstNode::DimListItemKind, "dimListItem");
1189
(*yynode)->offsetItemsSequence = snoc((*yynode)->offsetItemsSequence, __node_18, memoryPool);
1193
else if (yytoken == Token_STRING)
1195
StaticMemberAst *__node_19 = 0;
1196
if (!parseStaticMember(&__node_19))
1200
expectedSymbol(AstNode::StaticMemberKind, "staticMember");
1204
(*yynode)->staticMember = __node_19;
1217
(*yynode)->endToken = tokenStream->index() - 2;
1222
bool Parser::parseBaseVariableWithFunctionCalls(BaseVariableWithFunctionCallsAst **yynode)
1224
*yynode = create<BaseVariableWithFunctionCallsAst>();
1226
(*yynode)->startToken = tokenStream->index() - 1;
1228
if (yytoken == Token_DOLLAR
1229
|| yytoken == Token_STRING
1230
|| yytoken == Token_VARIABLE)
1232
bool blockErrors_1 = blockErrors(true);
1233
qint64 try_startToken_1 = tokenStream->index() - 1;
1234
ParserState *try_startState_1 = copyCurrentState();
1236
FunctionCallAst *__node_20 = 0;
1237
if (!parseFunctionCall(&__node_20))
1241
(*yynode)->functionCall = __node_20;
1244
blockErrors(blockErrors_1);
1245
if (try_startState_1)
1246
delete try_startState_1;
1248
if (false) // the only way to enter here is using goto
1251
if (try_startState_1)
1253
restoreState(try_startState_1);
1254
delete try_startState_1;
1256
blockErrors(blockErrors_1);
1257
rewind(try_startToken_1);
1259
BaseVariableAst *__node_21 = 0;
1260
if (!parseBaseVariable(&__node_21))
1264
expectedSymbol(AstNode::BaseVariableKind, "baseVariable");
1268
(*yynode)->baseVariable = __node_21;
1278
(*yynode)->endToken = tokenStream->index() - 2;
1283
bool Parser::parseBitAndExpression(BitAndExpressionAst **yynode)
1285
*yynode = create<BitAndExpressionAst>();
1287
(*yynode)->startToken = tokenStream->index() - 1;
1289
if (yytoken == Token_ARRAY
1290
|| yytoken == Token_ARRAY_CAST
1291
|| yytoken == Token_AT
1292
|| yytoken == Token_BACKTICK
1293
|| yytoken == Token_BANG
1294
|| yytoken == Token_BOOL_CAST
1295
|| yytoken == Token_CLASS_C
1296
|| yytoken == Token_CLONE
1297
|| yytoken == Token_CONSTANT_ENCAPSED_STRING
1298
|| yytoken == Token_DEC
1299
|| yytoken == Token_DNUMBER
1300
|| yytoken == Token_DOLLAR
1301
|| yytoken == Token_DOUBLE_CAST
1302
|| yytoken == Token_DOUBLE_QUOTE
1303
|| yytoken == Token_EMPTY
1304
|| yytoken == Token_EVAL
1305
|| yytoken == Token_EXIT
1306
|| yytoken == Token_FILE
1307
|| yytoken == Token_FUNC_C
1308
|| yytoken == Token_INC
1309
|| yytoken == Token_INCLUDE
1310
|| yytoken == Token_INCLUDE_ONCE
1311
|| yytoken == Token_INT_CAST
1312
|| yytoken == Token_ISSET
1313
|| yytoken == Token_LINE
1314
|| yytoken == Token_LIST
1315
|| yytoken == Token_LNUMBER
1316
|| yytoken == Token_LPAREN
1317
|| yytoken == Token_METHOD_C
1318
|| yytoken == Token_MINUS
1319
|| yytoken == Token_NEW
1320
|| yytoken == Token_OBJECT_CAST
1321
|| yytoken == Token_PLUS
1322
|| yytoken == Token_REQUIRE
1323
|| yytoken == Token_REQUIRE_ONCE
1324
|| yytoken == Token_START_HEREDOC
1325
|| yytoken == Token_STRING
1326
|| yytoken == Token_STRING_CAST
1327
|| yytoken == Token_STRING_VARNAME
1328
|| yytoken == Token_TILDE
1329
|| yytoken == Token_UNSET_CAST
1330
|| yytoken == Token_VARIABLE)
1332
EqualityExpressionAst *__node_22 = 0;
1333
if (!parseEqualityExpression(&__node_22))
1337
expectedSymbol(AstNode::EqualityExpressionKind, "equalityExpression");
1341
(*yynode)->expressionSequence = snoc((*yynode)->expressionSequence, __node_22, memoryPool);
1343
while (yytoken == Token_BIT_AND)
1345
if (yytoken != Token_BIT_AND)
1349
expectedToken(yytoken, Token_BIT_AND, "&");
1355
EqualityExpressionAst *__node_23 = 0;
1356
if (!parseEqualityExpression(&__node_23))
1360
expectedSymbol(AstNode::EqualityExpressionKind, "equalityExpression");
1364
(*yynode)->expressionSequence = snoc((*yynode)->expressionSequence, __node_23, memoryPool);
1373
(*yynode)->endToken = tokenStream->index() - 2;
1378
bool Parser::parseBitOrExpression(BitOrExpressionAst **yynode)
1380
*yynode = create<BitOrExpressionAst>();
1382
(*yynode)->startToken = tokenStream->index() - 1;
1384
if (yytoken == Token_ARRAY
1385
|| yytoken == Token_ARRAY_CAST
1386
|| yytoken == Token_AT
1387
|| yytoken == Token_BACKTICK
1388
|| yytoken == Token_BANG
1389
|| yytoken == Token_BOOL_CAST
1390
|| yytoken == Token_CLASS_C
1391
|| yytoken == Token_CLONE
1392
|| yytoken == Token_CONSTANT_ENCAPSED_STRING
1393
|| yytoken == Token_DEC
1394
|| yytoken == Token_DNUMBER
1395
|| yytoken == Token_DOLLAR
1396
|| yytoken == Token_DOUBLE_CAST
1397
|| yytoken == Token_DOUBLE_QUOTE
1398
|| yytoken == Token_EMPTY
1399
|| yytoken == Token_EVAL
1400
|| yytoken == Token_EXIT
1401
|| yytoken == Token_FILE
1402
|| yytoken == Token_FUNC_C
1403
|| yytoken == Token_INC
1404
|| yytoken == Token_INCLUDE
1405
|| yytoken == Token_INCLUDE_ONCE
1406
|| yytoken == Token_INT_CAST
1407
|| yytoken == Token_ISSET
1408
|| yytoken == Token_LINE
1409
|| yytoken == Token_LIST
1410
|| yytoken == Token_LNUMBER
1411
|| yytoken == Token_LPAREN
1412
|| yytoken == Token_METHOD_C
1413
|| yytoken == Token_MINUS
1414
|| yytoken == Token_NEW
1415
|| yytoken == Token_OBJECT_CAST
1416
|| yytoken == Token_PLUS
1417
|| yytoken == Token_REQUIRE
1418
|| yytoken == Token_REQUIRE_ONCE
1419
|| yytoken == Token_START_HEREDOC
1420
|| yytoken == Token_STRING
1421
|| yytoken == Token_STRING_CAST
1422
|| yytoken == Token_STRING_VARNAME
1423
|| yytoken == Token_TILDE
1424
|| yytoken == Token_UNSET_CAST
1425
|| yytoken == Token_VARIABLE)
1427
BitXorExpressionAst *__node_24 = 0;
1428
if (!parseBitXorExpression(&__node_24))
1432
expectedSymbol(AstNode::BitXorExpressionKind, "bitXorExpression");
1436
(*yynode)->expressionSequence = snoc((*yynode)->expressionSequence, __node_24, memoryPool);
1438
while (yytoken == Token_BIT_OR)
1440
if (yytoken != Token_BIT_OR)
1444
expectedToken(yytoken, Token_BIT_OR, "|");
1450
BitXorExpressionAst *__node_25 = 0;
1451
if (!parseBitXorExpression(&__node_25))
1455
expectedSymbol(AstNode::BitXorExpressionKind, "bitXorExpression");
1459
(*yynode)->expressionSequence = snoc((*yynode)->expressionSequence, __node_25, memoryPool);
1468
(*yynode)->endToken = tokenStream->index() - 2;
1473
bool Parser::parseBitXorExpression(BitXorExpressionAst **yynode)
1475
*yynode = create<BitXorExpressionAst>();
1477
(*yynode)->startToken = tokenStream->index() - 1;
1479
if (yytoken == Token_ARRAY
1480
|| yytoken == Token_ARRAY_CAST
1481
|| yytoken == Token_AT
1482
|| yytoken == Token_BACKTICK
1483
|| yytoken == Token_BANG
1484
|| yytoken == Token_BOOL_CAST
1485
|| yytoken == Token_CLASS_C
1486
|| yytoken == Token_CLONE
1487
|| yytoken == Token_CONSTANT_ENCAPSED_STRING
1488
|| yytoken == Token_DEC
1489
|| yytoken == Token_DNUMBER
1490
|| yytoken == Token_DOLLAR
1491
|| yytoken == Token_DOUBLE_CAST
1492
|| yytoken == Token_DOUBLE_QUOTE
1493
|| yytoken == Token_EMPTY
1494
|| yytoken == Token_EVAL
1495
|| yytoken == Token_EXIT
1496
|| yytoken == Token_FILE
1497
|| yytoken == Token_FUNC_C
1498
|| yytoken == Token_INC
1499
|| yytoken == Token_INCLUDE
1500
|| yytoken == Token_INCLUDE_ONCE
1501
|| yytoken == Token_INT_CAST
1502
|| yytoken == Token_ISSET
1503
|| yytoken == Token_LINE
1504
|| yytoken == Token_LIST
1505
|| yytoken == Token_LNUMBER
1506
|| yytoken == Token_LPAREN
1507
|| yytoken == Token_METHOD_C
1508
|| yytoken == Token_MINUS
1509
|| yytoken == Token_NEW
1510
|| yytoken == Token_OBJECT_CAST
1511
|| yytoken == Token_PLUS
1512
|| yytoken == Token_REQUIRE
1513
|| yytoken == Token_REQUIRE_ONCE
1514
|| yytoken == Token_START_HEREDOC
1515
|| yytoken == Token_STRING
1516
|| yytoken == Token_STRING_CAST
1517
|| yytoken == Token_STRING_VARNAME
1518
|| yytoken == Token_TILDE
1519
|| yytoken == Token_UNSET_CAST
1520
|| yytoken == Token_VARIABLE)
1522
BitAndExpressionAst *__node_26 = 0;
1523
if (!parseBitAndExpression(&__node_26))
1527
expectedSymbol(AstNode::BitAndExpressionKind, "bitAndExpression");
1531
(*yynode)->expressionSequence = snoc((*yynode)->expressionSequence, __node_26, memoryPool);
1533
while (yytoken == Token_BIT_XOR)
1535
if (yytoken != Token_BIT_XOR)
1539
expectedToken(yytoken, Token_BIT_XOR, "^");
1545
BitAndExpressionAst *__node_27 = 0;
1546
if (!parseBitAndExpression(&__node_27))
1550
expectedSymbol(AstNode::BitAndExpressionKind, "bitAndExpression");
1554
(*yynode)->expressionSequence = snoc((*yynode)->expressionSequence, __node_27, memoryPool);
1563
(*yynode)->endToken = tokenStream->index() - 2;
1568
bool Parser::parseBooleanAndExpression(BooleanAndExpressionAst **yynode)
1570
*yynode = create<BooleanAndExpressionAst>();
1572
(*yynode)->startToken = tokenStream->index() - 1;
1574
if (yytoken == Token_ARRAY
1575
|| yytoken == Token_ARRAY_CAST
1576
|| yytoken == Token_AT
1577
|| yytoken == Token_BACKTICK
1578
|| yytoken == Token_BANG
1579
|| yytoken == Token_BOOL_CAST
1580
|| yytoken == Token_CLASS_C
1581
|| yytoken == Token_CLONE
1582
|| yytoken == Token_CONSTANT_ENCAPSED_STRING
1583
|| yytoken == Token_DEC
1584
|| yytoken == Token_DNUMBER
1585
|| yytoken == Token_DOLLAR
1586
|| yytoken == Token_DOUBLE_CAST
1587
|| yytoken == Token_DOUBLE_QUOTE
1588
|| yytoken == Token_EMPTY
1589
|| yytoken == Token_EVAL
1590
|| yytoken == Token_EXIT
1591
|| yytoken == Token_FILE
1592
|| yytoken == Token_FUNC_C
1593
|| yytoken == Token_INC
1594
|| yytoken == Token_INCLUDE
1595
|| yytoken == Token_INCLUDE_ONCE
1596
|| yytoken == Token_INT_CAST
1597
|| yytoken == Token_ISSET
1598
|| yytoken == Token_LINE
1599
|| yytoken == Token_LIST
1600
|| yytoken == Token_LNUMBER
1601
|| yytoken == Token_LPAREN
1602
|| yytoken == Token_METHOD_C
1603
|| yytoken == Token_MINUS
1604
|| yytoken == Token_NEW
1605
|| yytoken == Token_OBJECT_CAST
1606
|| yytoken == Token_PLUS
1607
|| yytoken == Token_REQUIRE
1608
|| yytoken == Token_REQUIRE_ONCE
1609
|| yytoken == Token_START_HEREDOC
1610
|| yytoken == Token_STRING
1611
|| yytoken == Token_STRING_CAST
1612
|| yytoken == Token_STRING_VARNAME
1613
|| yytoken == Token_TILDE
1614
|| yytoken == Token_UNSET_CAST
1615
|| yytoken == Token_VARIABLE)
1617
BitOrExpressionAst *__node_28 = 0;
1618
if (!parseBitOrExpression(&__node_28))
1622
expectedSymbol(AstNode::BitOrExpressionKind, "bitOrExpression");
1626
(*yynode)->expressionSequence = snoc((*yynode)->expressionSequence, __node_28, memoryPool);
1628
while (yytoken == Token_BOOLEAN_AND)
1630
if (yytoken != Token_BOOLEAN_AND)
1634
expectedToken(yytoken, Token_BOOLEAN_AND, "&&");
1640
BitOrExpressionAst *__node_29 = 0;
1641
if (!parseBitOrExpression(&__node_29))
1645
expectedSymbol(AstNode::BitOrExpressionKind, "bitOrExpression");
1649
(*yynode)->expressionSequence = snoc((*yynode)->expressionSequence, __node_29, memoryPool);
1658
(*yynode)->endToken = tokenStream->index() - 2;
1663
bool Parser::parseBooleanOrExpression(BooleanOrExpressionAst **yynode)
1665
*yynode = create<BooleanOrExpressionAst>();
1667
(*yynode)->startToken = tokenStream->index() - 1;
1669
if (yytoken == Token_ARRAY
1670
|| yytoken == Token_ARRAY_CAST
1671
|| yytoken == Token_AT
1672
|| yytoken == Token_BACKTICK
1673
|| yytoken == Token_BANG
1674
|| yytoken == Token_BOOL_CAST
1675
|| yytoken == Token_CLASS_C
1676
|| yytoken == Token_CLONE
1677
|| yytoken == Token_CONSTANT_ENCAPSED_STRING
1678
|| yytoken == Token_DEC
1679
|| yytoken == Token_DNUMBER
1680
|| yytoken == Token_DOLLAR
1681
|| yytoken == Token_DOUBLE_CAST
1682
|| yytoken == Token_DOUBLE_QUOTE
1683
|| yytoken == Token_EMPTY
1684
|| yytoken == Token_EVAL
1685
|| yytoken == Token_EXIT
1686
|| yytoken == Token_FILE
1687
|| yytoken == Token_FUNC_C
1688
|| yytoken == Token_INC
1689
|| yytoken == Token_INCLUDE
1690
|| yytoken == Token_INCLUDE_ONCE
1691
|| yytoken == Token_INT_CAST
1692
|| yytoken == Token_ISSET
1693
|| yytoken == Token_LINE
1694
|| yytoken == Token_LIST
1695
|| yytoken == Token_LNUMBER
1696
|| yytoken == Token_LPAREN
1697
|| yytoken == Token_METHOD_C
1698
|| yytoken == Token_MINUS
1699
|| yytoken == Token_NEW
1700
|| yytoken == Token_OBJECT_CAST
1701
|| yytoken == Token_PLUS
1702
|| yytoken == Token_REQUIRE
1703
|| yytoken == Token_REQUIRE_ONCE
1704
|| yytoken == Token_START_HEREDOC
1705
|| yytoken == Token_STRING
1706
|| yytoken == Token_STRING_CAST
1707
|| yytoken == Token_STRING_VARNAME
1708
|| yytoken == Token_TILDE
1709
|| yytoken == Token_UNSET_CAST
1710
|| yytoken == Token_VARIABLE)
1712
BooleanAndExpressionAst *__node_30 = 0;
1713
if (!parseBooleanAndExpression(&__node_30))
1717
expectedSymbol(AstNode::BooleanAndExpressionKind, "booleanAndExpression");
1721
(*yynode)->expressionSequence = snoc((*yynode)->expressionSequence, __node_30, memoryPool);
1723
while (yytoken == Token_BOOLEAN_OR)
1725
if (yytoken != Token_BOOLEAN_OR)
1729
expectedToken(yytoken, Token_BOOLEAN_OR, "||");
1735
BooleanAndExpressionAst *__node_31 = 0;
1736
if (!parseBooleanAndExpression(&__node_31))
1740
expectedSymbol(AstNode::BooleanAndExpressionKind, "booleanAndExpression");
1744
(*yynode)->expressionSequence = snoc((*yynode)->expressionSequence, __node_31, memoryPool);
1753
(*yynode)->endToken = tokenStream->index() - 2;
1758
bool Parser::parseCaseList(CaseListAst **yynode)
1760
*yynode = create<CaseListAst>();
1762
(*yynode)->startToken = tokenStream->index() - 1;
1764
if (yytoken == Token_CASE
1765
|| yytoken == Token_DEFAULT || yytoken == Token_ENDSWITCH
1766
|| yytoken == Token_EOF
1767
|| yytoken == Token_RBRACE)
1769
while (yytoken == Token_CASE
1770
|| yytoken == Token_DEFAULT)
1772
Case_itemAst *__node_32 = 0;
1773
if (!parseCase_item(&__node_32))
1777
expectedSymbol(AstNode::Case_itemKind, "case_item");
1781
(*yynode)->caseItemsSequence = snoc((*yynode)->caseItemsSequence, __node_32, memoryPool);
1790
(*yynode)->endToken = tokenStream->index() - 2;
1795
bool Parser::parseCase_item(Case_itemAst **yynode)
1797
*yynode = create<Case_itemAst>();
1799
(*yynode)->startToken = tokenStream->index() - 1;
1800
(*yynode)->def = -1;
1802
if (yytoken == Token_CASE
1803
|| yytoken == Token_DEFAULT)
1805
if (yytoken == Token_CASE)
1807
if (yytoken != Token_CASE)
1811
expectedToken(yytoken, Token_CASE, "case");
1817
ExprAst *__node_33 = 0;
1818
if (!parseExpr(&__node_33))
1822
expectedSymbol(AstNode::ExprKind, "expr");
1826
(*yynode)->expr = __node_33;
1828
if (yytoken == Token_COLON)
1830
if (yytoken != Token_COLON)
1834
expectedToken(yytoken, Token_COLON, ":");
1841
else if (yytoken == Token_SEMICOLON)
1843
if (yytoken != Token_SEMICOLON)
1847
expectedToken(yytoken, Token_SEMICOLON, ";");
1858
InnerStatementListAst *__node_34 = 0;
1859
if (!parseInnerStatementList(&__node_34))
1863
expectedSymbol(AstNode::InnerStatementListKind, "innerStatementList");
1867
(*yynode)->statements = __node_34;
1870
else if (yytoken == Token_DEFAULT)
1872
if (yytoken != Token_DEFAULT)
1876
expectedToken(yytoken, Token_DEFAULT, "default");
1880
(*yynode)->def = tokenStream->index() - 1;
1883
if (yytoken == Token_COLON)
1885
if (yytoken != Token_COLON)
1889
expectedToken(yytoken, Token_COLON, ":");
1896
else if (yytoken == Token_SEMICOLON)
1898
if (yytoken != Token_SEMICOLON)
1902
expectedToken(yytoken, Token_SEMICOLON, ";");
1913
InnerStatementListAst *__node_35 = 0;
1914
if (!parseInnerStatementList(&__node_35))
1918
expectedSymbol(AstNode::InnerStatementListKind, "innerStatementList");
1922
(*yynode)->statements = __node_35;
1935
(*yynode)->endToken = tokenStream->index() - 2;
1940
bool Parser::parseCatchItem(CatchItemAst **yynode)
1942
*yynode = create<CatchItemAst>();
1944
(*yynode)->startToken = tokenStream->index() - 1;
1946
if (yytoken == Token_CATCH)
1948
if (yytoken != Token_CATCH)
1952
expectedToken(yytoken, Token_CATCH, "catch");
1958
if (yytoken != Token_LPAREN)
1962
expectedToken(yytoken, Token_LPAREN, "(");
1968
IdentifierAst *__node_36 = 0;
1969
if (!parseIdentifier(&__node_36))
1973
expectedSymbol(AstNode::IdentifierKind, "identifier");
1977
(*yynode)->catchClass = __node_36;
1979
VariableIdentifierAst *__node_37 = 0;
1980
if (!parseVariableIdentifier(&__node_37))
1984
expectedSymbol(AstNode::VariableIdentifierKind, "variableIdentifier");
1988
(*yynode)->var = __node_37;
1990
if (yytoken != Token_RPAREN)
1994
expectedToken(yytoken, Token_RPAREN, ")");
2000
if (yytoken != Token_LBRACE)
2004
expectedToken(yytoken, Token_LBRACE, "{");
2010
InnerStatementListAst *__node_38 = 0;
2011
if (!parseInnerStatementList(&__node_38))
2015
expectedSymbol(AstNode::InnerStatementListKind, "innerStatementList");
2019
(*yynode)->statements = __node_38;
2021
if (yytoken != Token_RBRACE)
2025
expectedToken(yytoken, Token_RBRACE, "}");
2037
(*yynode)->endToken = tokenStream->index() - 2;
2042
bool Parser::parseClassBody(ClassBodyAst **yynode)
2044
*yynode = create<ClassBodyAst>();
2046
(*yynode)->startToken = tokenStream->index() - 1;
2048
if (yytoken == Token_ABSTRACT
2049
|| yytoken == Token_CONST
2050
|| yytoken == Token_FINAL
2051
|| yytoken == Token_FUNCTION
2052
|| yytoken == Token_PRIVATE
2053
|| yytoken == Token_PROTECTED
2054
|| yytoken == Token_PUBLIC
2055
|| yytoken == Token_STATIC
2056
|| yytoken == Token_VAR
2057
|| yytoken == Token_VARIABLE || yytoken == Token_EOF
2058
|| yytoken == Token_RBRACE)
2060
while (yytoken == Token_ABSTRACT
2061
|| yytoken == Token_CONST
2062
|| yytoken == Token_FINAL
2063
|| yytoken == Token_FUNCTION
2064
|| yytoken == Token_PRIVATE
2065
|| yytoken == Token_PROTECTED
2066
|| yytoken == Token_PUBLIC
2067
|| yytoken == Token_STATIC
2068
|| yytoken == Token_VAR
2069
|| yytoken == Token_VARIABLE)
2071
ClassStatementAst *__node_39 = 0;
2072
if (!parseClassStatement(&__node_39))
2076
expectedSymbol(AstNode::ClassStatementKind, "classStatement");
2080
(*yynode)->classStatementsSequence = snoc((*yynode)->classStatementsSequence, __node_39, memoryPool);
2089
(*yynode)->endToken = tokenStream->index() - 2;
2094
bool Parser::parseClassConstantDeclaration(ClassConstantDeclarationAst **yynode)
2096
*yynode = create<ClassConstantDeclarationAst>();
2098
(*yynode)->startToken = tokenStream->index() - 1;
2100
if (yytoken == Token_STRING)
2102
IdentifierAst *__node_40 = 0;
2103
if (!parseIdentifier(&__node_40))
2107
expectedSymbol(AstNode::IdentifierKind, "identifier");
2111
(*yynode)->identifier = __node_40;
2113
if (yytoken != Token_ASSIGN)
2117
expectedToken(yytoken, Token_ASSIGN, "=");
2123
StaticScalarAst *__node_41 = 0;
2124
if (!parseStaticScalar(&__node_41))
2128
expectedSymbol(AstNode::StaticScalarKind, "staticScalar");
2132
(*yynode)->scalar = __node_41;
2140
(*yynode)->endToken = tokenStream->index() - 2;
2145
bool Parser::parseClassDeclarationStatement(ClassDeclarationStatementAst **yynode)
2147
*yynode = create<ClassDeclarationStatementAst>();
2149
(*yynode)->startToken = tokenStream->index() - 1;
2151
if (yytoken == Token_ABSTRACT
2152
|| yytoken == Token_CLASS
2153
|| yytoken == Token_FINAL)
2155
OptionalClassModifierAst *__node_42 = 0;
2156
if (!parseOptionalClassModifier(&__node_42))
2160
expectedSymbol(AstNode::OptionalClassModifierKind, "optionalClassModifier");
2164
(*yynode)->modifier = __node_42;
2166
if (yytoken != Token_CLASS)
2170
expectedToken(yytoken, Token_CLASS, "class");
2176
IdentifierAst *__node_43 = 0;
2177
if (!parseIdentifier(&__node_43))
2181
expectedSymbol(AstNode::IdentifierKind, "identifier");
2185
(*yynode)->className = __node_43;
2187
if (yytoken == Token_EXTENDS)
2189
if (yytoken != Token_EXTENDS)
2193
expectedToken(yytoken, Token_EXTENDS, "extends");
2199
ClassExtendsAst *__node_44 = 0;
2200
if (!parseClassExtends(&__node_44))
2204
expectedSymbol(AstNode::ClassExtendsKind, "classExtends");
2208
(*yynode)->extends = __node_44;
2211
else if (true /*epsilon*/)
2218
if (yytoken == Token_IMPLEMENTS)
2220
if (yytoken != Token_IMPLEMENTS)
2224
expectedToken(yytoken, Token_IMPLEMENTS, "implements");
2230
ClassImplementsAst *__node_45 = 0;
2231
if (!parseClassImplements(&__node_45))
2235
expectedSymbol(AstNode::ClassImplementsKind, "classImplements");
2239
(*yynode)->implements = __node_45;
2242
else if (true /*epsilon*/)
2249
if (yytoken != Token_LBRACE)
2253
expectedToken(yytoken, Token_LBRACE, "{");
2259
ClassBodyAst *__node_46 = 0;
2260
if (!parseClassBody(&__node_46))
2264
expectedSymbol(AstNode::ClassBodyKind, "classBody");
2268
(*yynode)->body = __node_46;
2270
if (yytoken != Token_RBRACE)
2274
expectedToken(yytoken, Token_RBRACE, "}");
2286
(*yynode)->endToken = tokenStream->index() - 2;
2291
bool Parser::parseClassExtends(ClassExtendsAst **yynode)
2293
*yynode = create<ClassExtendsAst>();
2295
(*yynode)->startToken = tokenStream->index() - 1;
2297
if (yytoken == Token_STRING)
2299
IdentifierAst *__node_47 = 0;
2300
if (!parseIdentifier(&__node_47))
2304
expectedSymbol(AstNode::IdentifierKind, "identifier");
2308
(*yynode)->identifier = __node_47;
2316
(*yynode)->endToken = tokenStream->index() - 2;
2321
bool Parser::parseClassImplements(ClassImplementsAst **yynode)
2323
*yynode = create<ClassImplementsAst>();
2325
(*yynode)->startToken = tokenStream->index() - 1;
2327
if (yytoken == Token_STRING)
2329
IdentifierAst *__node_48 = 0;
2330
if (!parseIdentifier(&__node_48))
2334
expectedSymbol(AstNode::IdentifierKind, "identifier");
2338
(*yynode)->implementsSequence = snoc((*yynode)->implementsSequence, __node_48, memoryPool);
2340
while (yytoken == Token_COMMA)
2342
if (yytoken != Token_COMMA)
2346
expectedToken(yytoken, Token_COMMA, ",");
2352
IdentifierAst *__node_49 = 0;
2353
if (!parseIdentifier(&__node_49))
2357
expectedSymbol(AstNode::IdentifierKind, "identifier");
2361
(*yynode)->implementsSequence = snoc((*yynode)->implementsSequence, __node_49, memoryPool);
2370
(*yynode)->endToken = tokenStream->index() - 2;
2375
bool Parser::parseClassNameReference(ClassNameReferenceAst **yynode)
2377
*yynode = create<ClassNameReferenceAst>();
2379
(*yynode)->startToken = tokenStream->index() - 1;
2381
if (yytoken == Token_DOLLAR
2382
|| yytoken == Token_STRING
2383
|| yytoken == Token_VARIABLE)
2385
if ((yytoken == Token_STRING) && ( LA(2).kind != Token_PAAMAYIM_NEKUDOTAYIM ))
2387
IdentifierAst *__node_50 = 0;
2388
if (!parseIdentifier(&__node_50))
2392
expectedSymbol(AstNode::IdentifierKind, "identifier");
2396
(*yynode)->identifier = __node_50;
2399
else if (yytoken == Token_DOLLAR
2400
|| yytoken == Token_STRING
2401
|| yytoken == Token_VARIABLE)
2403
DynamicClassNameReferenceAst *__node_51 = 0;
2404
if (!parseDynamicClassNameReference(&__node_51))
2408
expectedSymbol(AstNode::DynamicClassNameReferenceKind, "dynamicClassNameReference");
2412
(*yynode)->dynamicClassNameReference = __node_51;
2425
(*yynode)->endToken = tokenStream->index() - 2;
2430
bool Parser::parseClassStatement(ClassStatementAst **yynode)
2432
*yynode = create<ClassStatementAst>();
2434
(*yynode)->startToken = tokenStream->index() - 1;
2436
if (yytoken == Token_ABSTRACT
2437
|| yytoken == Token_CONST
2438
|| yytoken == Token_FINAL
2439
|| yytoken == Token_FUNCTION
2440
|| yytoken == Token_PRIVATE
2441
|| yytoken == Token_PROTECTED
2442
|| yytoken == Token_PUBLIC
2443
|| yytoken == Token_STATIC
2444
|| yytoken == Token_VAR
2445
|| yytoken == Token_VARIABLE)
2447
if (yytoken == Token_CONST)
2449
if (yytoken != Token_CONST)
2453
expectedToken(yytoken, Token_CONST, "const");
2459
ClassConstantDeclarationAst *__node_52 = 0;
2460
if (!parseClassConstantDeclaration(&__node_52))
2464
expectedSymbol(AstNode::ClassConstantDeclarationKind, "classConstantDeclaration");
2468
(*yynode)->consts = __node_52;
2470
while (yytoken == Token_COMMA)
2472
if (yytoken != Token_COMMA)
2476
expectedToken(yytoken, Token_COMMA, ",");
2482
ClassConstantDeclarationAst *__node_53 = 0;
2483
if (!parseClassConstantDeclaration(&__node_53))
2487
expectedSymbol(AstNode::ClassConstantDeclarationKind, "classConstantDeclaration");
2491
(*yynode)->consts = __node_53;
2494
if (yytoken != Token_SEMICOLON)
2498
expectedToken(yytoken, Token_SEMICOLON, ";");
2505
else if (yytoken == Token_VAR)
2507
if (yytoken != Token_VAR)
2511
expectedToken(yytoken, Token_VAR, "var ");
2517
ClassVariableDeclarationAst *__node_54 = 0;
2518
if (!parseClassVariableDeclaration(&__node_54))
2522
expectedSymbol(AstNode::ClassVariableDeclarationKind, "classVariableDeclaration");
2526
(*yynode)->variable = __node_54;
2528
if (yytoken != Token_SEMICOLON)
2532
expectedToken(yytoken, Token_SEMICOLON, ";");
2539
else if (yytoken == Token_ABSTRACT
2540
|| yytoken == Token_FINAL
2541
|| yytoken == Token_FUNCTION
2542
|| yytoken == Token_PRIVATE
2543
|| yytoken == Token_PROTECTED
2544
|| yytoken == Token_PUBLIC
2545
|| yytoken == Token_STATIC
2546
|| yytoken == Token_VARIABLE)
2548
OptionalModifiersAst *__node_55 = 0;
2549
if (!parseOptionalModifiers(&__node_55))
2553
expectedSymbol(AstNode::OptionalModifiersKind, "optionalModifiers");
2557
(*yynode)->modifiers = __node_55;
2559
if (yytoken == Token_VARIABLE)
2561
ClassVariableDeclarationAst *__node_56 = 0;
2562
if (!parseClassVariableDeclaration(&__node_56))
2566
expectedSymbol(AstNode::ClassVariableDeclarationKind, "classVariableDeclaration");
2570
(*yynode)->variable = __node_56;
2572
if (yytoken != Token_SEMICOLON)
2576
expectedToken(yytoken, Token_SEMICOLON, ";");
2583
else if (yytoken == Token_FUNCTION)
2585
if (yytoken != Token_FUNCTION)
2589
expectedToken(yytoken, Token_FUNCTION, "function");
2595
if (yytoken == Token_BIT_AND)
2597
if (yytoken != Token_BIT_AND)
2601
expectedToken(yytoken, Token_BIT_AND, "&");
2608
else if (true /*epsilon*/)
2615
IdentifierAst *__node_57 = 0;
2616
if (!parseIdentifier(&__node_57))
2620
expectedSymbol(AstNode::IdentifierKind, "identifier");
2624
(*yynode)->methodName = __node_57;
2626
if (yytoken != Token_LPAREN)
2630
expectedToken(yytoken, Token_LPAREN, "(");
2636
ParameterListAst *__node_58 = 0;
2637
if (!parseParameterList(&__node_58))
2641
expectedSymbol(AstNode::ParameterListKind, "parameterList");
2645
(*yynode)->parameters = __node_58;
2647
if (yytoken != Token_RPAREN)
2651
expectedToken(yytoken, Token_RPAREN, ")");
2657
MethodBodyAst *__node_59 = 0;
2658
if (!parseMethodBody(&__node_59))
2662
expectedSymbol(AstNode::MethodBodyKind, "methodBody");
2666
(*yynode)->methodBody = __node_59;
2684
(*yynode)->endToken = tokenStream->index() - 2;
2689
bool Parser::parseClassVariable(ClassVariableAst **yynode)
2691
*yynode = create<ClassVariableAst>();
2693
(*yynode)->startToken = tokenStream->index() - 1;
2695
if (yytoken == Token_VARIABLE)
2697
VariableIdentifierAst *__node_60 = 0;
2698
if (!parseVariableIdentifier(&__node_60))
2702
expectedSymbol(AstNode::VariableIdentifierKind, "variableIdentifier");
2706
(*yynode)->variable = __node_60;
2708
if (yytoken == Token_ASSIGN)
2710
if (yytoken != Token_ASSIGN)
2714
expectedToken(yytoken, Token_ASSIGN, "=");
2720
StaticScalarAst *__node_61 = 0;
2721
if (!parseStaticScalar(&__node_61))
2725
expectedSymbol(AstNode::StaticScalarKind, "staticScalar");
2729
(*yynode)->value = __node_61;
2732
else if (true /*epsilon*/)
2745
(*yynode)->endToken = tokenStream->index() - 2;
2750
bool Parser::parseClassVariableDeclaration(ClassVariableDeclarationAst **yynode)
2752
*yynode = create<ClassVariableDeclarationAst>();
2754
(*yynode)->startToken = tokenStream->index() - 1;
2756
if (yytoken == Token_VARIABLE)
2758
ClassVariableAst *__node_62 = 0;
2759
if (!parseClassVariable(&__node_62))
2763
expectedSymbol(AstNode::ClassVariableKind, "classVariable");
2767
(*yynode)->varsSequence = snoc((*yynode)->varsSequence, __node_62, memoryPool);
2769
while (yytoken == Token_COMMA)
2771
if (yytoken != Token_COMMA)
2775
expectedToken(yytoken, Token_COMMA, ",");
2781
ClassVariableAst *__node_63 = 0;
2782
if (!parseClassVariable(&__node_63))
2786
expectedSymbol(AstNode::ClassVariableKind, "classVariable");
2790
(*yynode)->varsSequence = snoc((*yynode)->varsSequence, __node_63, memoryPool);
2799
(*yynode)->endToken = tokenStream->index() - 2;
2804
bool Parser::parseCommonScalar(CommonScalarAst **yynode)
2806
*yynode = create<CommonScalarAst>();
2808
(*yynode)->startToken = tokenStream->index() - 1;
2809
(*yynode)->string = -1;
2811
if (yytoken == Token_CLASS_C
2812
|| yytoken == Token_CONSTANT_ENCAPSED_STRING
2813
|| yytoken == Token_DNUMBER
2814
|| yytoken == Token_FILE
2815
|| yytoken == Token_FUNC_C
2816
|| yytoken == Token_LINE
2817
|| yytoken == Token_LNUMBER
2818
|| yytoken == Token_METHOD_C)
2820
if (yytoken == Token_LNUMBER)
2822
if (yytoken != Token_LNUMBER)
2826
expectedToken(yytoken, Token_LNUMBER, "long number");
2832
(*yynode)->scalarType = ScalarTypeInt;
2834
else if (yytoken == Token_DNUMBER)
2836
if (yytoken != Token_DNUMBER)
2840
expectedToken(yytoken, Token_DNUMBER, "double number");
2846
(*yynode)->scalarType = ScalarTypeFloat;
2848
else if (yytoken == Token_CONSTANT_ENCAPSED_STRING)
2850
if (yytoken != Token_CONSTANT_ENCAPSED_STRING)
2854
expectedToken(yytoken, Token_CONSTANT_ENCAPSED_STRING, "constant encapsed string");
2858
(*yynode)->string = tokenStream->index() - 1;
2861
(*yynode)->scalarType = ScalarTypeString;
2863
else if (yytoken == Token_LINE)
2865
if (yytoken != Token_LINE)
2869
expectedToken(yytoken, Token_LINE, "__LINE__");
2875
(*yynode)->scalarType = ScalarTypeInt;
2877
else if (yytoken == Token_FILE)
2879
if (yytoken != Token_FILE)
2883
expectedToken(yytoken, Token_FILE, "__FILE__");
2889
(*yynode)->scalarType = ScalarTypeString;
2891
else if (yytoken == Token_CLASS_C)
2893
if (yytoken != Token_CLASS_C)
2897
expectedToken(yytoken, Token_CLASS_C, "__CLASS__");
2903
(*yynode)->scalarType = ScalarTypeString;
2905
else if (yytoken == Token_METHOD_C)
2907
if (yytoken != Token_METHOD_C)
2911
expectedToken(yytoken, Token_METHOD_C, "__METHOD__");
2917
(*yynode)->scalarType = ScalarTypeString;
2919
else if (yytoken == Token_FUNC_C)
2921
if (yytoken != Token_FUNC_C)
2925
expectedToken(yytoken, Token_FUNC_C, "__FUNCTION__");
2931
(*yynode)->scalarType = ScalarTypeString;
2943
(*yynode)->endToken = tokenStream->index() - 2;
2948
bool Parser::parseCompoundVariable(CompoundVariableAst **yynode)
2950
*yynode = create<CompoundVariableAst>();
2952
(*yynode)->startToken = tokenStream->index() - 1;
2954
if (yytoken == Token_DOLLAR
2955
|| yytoken == Token_VARIABLE)
2957
if (yytoken == Token_VARIABLE)
2959
VariableIdentifierAst *__node_64 = 0;
2960
if (!parseVariableIdentifier(&__node_64))
2964
expectedSymbol(AstNode::VariableIdentifierKind, "variableIdentifier");
2968
(*yynode)->variable = __node_64;
2971
else if (yytoken == Token_DOLLAR)
2973
if (yytoken != Token_DOLLAR)
2977
expectedToken(yytoken, Token_DOLLAR, "$");
2983
if (yytoken != Token_LBRACE)
2987
expectedToken(yytoken, Token_LBRACE, "{");
2993
ExprAst *__node_65 = 0;
2994
if (!parseExpr(&__node_65))
2998
expectedSymbol(AstNode::ExprKind, "expr");
3002
(*yynode)->expr = __node_65;
3004
if (yytoken != Token_RBRACE)
3008
expectedToken(yytoken, Token_RBRACE, "}");
3025
(*yynode)->endToken = tokenStream->index() - 2;
3030
bool Parser::parseCompoundVariableWithSimpleIndirectReference(CompoundVariableWithSimpleIndirectReferenceAst **yynode)
3032
*yynode = create<CompoundVariableWithSimpleIndirectReferenceAst>();
3034
(*yynode)->startToken = tokenStream->index() - 1;
3036
if (yytoken == Token_DOLLAR
3037
|| yytoken == Token_VARIABLE)
3039
if (yytoken == Token_DOLLAR)
3041
if (yytoken != Token_DOLLAR)
3045
expectedToken(yytoken, Token_DOLLAR, "$");
3051
if (yytoken == Token_DOLLAR)
3055
if (yytoken != Token_DOLLAR)
3059
expectedToken(yytoken, Token_DOLLAR, "$");
3066
while (yytoken == Token_DOLLAR);
3068
else if (true /*epsilon*/)
3075
if (yytoken == Token_VARIABLE)
3077
VariableIdentifierAst *__node_66 = 0;
3078
if (!parseVariableIdentifier(&__node_66))
3082
expectedSymbol(AstNode::VariableIdentifierKind, "variableIdentifier");
3086
(*yynode)->indirectVariable = __node_66;
3089
else if (yytoken == Token_LBRACE)
3091
if (yytoken != Token_LBRACE)
3095
expectedToken(yytoken, Token_LBRACE, "{");
3101
ExprAst *__node_67 = 0;
3102
if (!parseExpr(&__node_67))
3106
expectedSymbol(AstNode::ExprKind, "expr");
3110
(*yynode)->expr = __node_67;
3112
if (yytoken != Token_RBRACE)
3116
expectedToken(yytoken, Token_RBRACE, "}");
3128
else if (yytoken == Token_VARIABLE)
3130
VariableIdentifierAst *__node_68 = 0;
3131
if (!parseVariableIdentifier(&__node_68))
3135
expectedSymbol(AstNode::VariableIdentifierKind, "variableIdentifier");
3139
(*yynode)->variable = __node_68;
3152
(*yynode)->endToken = tokenStream->index() - 2;
3157
bool Parser::parseConditionalExpression(ConditionalExpressionAst **yynode)
3159
*yynode = create<ConditionalExpressionAst>();
3161
(*yynode)->startToken = tokenStream->index() - 1;
3163
if (yytoken == Token_ARRAY
3164
|| yytoken == Token_ARRAY_CAST
3165
|| yytoken == Token_AT
3166
|| yytoken == Token_BACKTICK
3167
|| yytoken == Token_BANG
3168
|| yytoken == Token_BOOL_CAST
3169
|| yytoken == Token_CLASS_C
3170
|| yytoken == Token_CLONE
3171
|| yytoken == Token_CONSTANT_ENCAPSED_STRING
3172
|| yytoken == Token_DEC
3173
|| yytoken == Token_DNUMBER
3174
|| yytoken == Token_DOLLAR
3175
|| yytoken == Token_DOUBLE_CAST
3176
|| yytoken == Token_DOUBLE_QUOTE
3177
|| yytoken == Token_EMPTY
3178
|| yytoken == Token_EVAL
3179
|| yytoken == Token_EXIT
3180
|| yytoken == Token_FILE
3181
|| yytoken == Token_FUNC_C
3182
|| yytoken == Token_INC
3183
|| yytoken == Token_INCLUDE
3184
|| yytoken == Token_INCLUDE_ONCE
3185
|| yytoken == Token_INT_CAST
3186
|| yytoken == Token_ISSET
3187
|| yytoken == Token_LINE
3188
|| yytoken == Token_LIST
3189
|| yytoken == Token_LNUMBER
3190
|| yytoken == Token_LPAREN
3191
|| yytoken == Token_METHOD_C
3192
|| yytoken == Token_MINUS
3193
|| yytoken == Token_NEW
3194
|| yytoken == Token_OBJECT_CAST
3195
|| yytoken == Token_PLUS
3196
|| yytoken == Token_REQUIRE
3197
|| yytoken == Token_REQUIRE_ONCE
3198
|| yytoken == Token_START_HEREDOC
3199
|| yytoken == Token_STRING
3200
|| yytoken == Token_STRING_CAST
3201
|| yytoken == Token_STRING_VARNAME
3202
|| yytoken == Token_TILDE
3203
|| yytoken == Token_UNSET_CAST
3204
|| yytoken == Token_VARIABLE)
3206
BooleanOrExpressionAst *__node_69 = 0;
3207
if (!parseBooleanOrExpression(&__node_69))
3211
expectedSymbol(AstNode::BooleanOrExpressionKind, "booleanOrExpression");
3215
(*yynode)->expression = __node_69;
3217
if (yytoken == Token_QUESTION)
3219
if (yytoken != Token_QUESTION)
3223
expectedToken(yytoken, Token_QUESTION, "?");
3229
ExprAst *__node_70 = 0;
3230
if (!parseExpr(&__node_70))
3234
expectedSymbol(AstNode::ExprKind, "expr");
3238
(*yynode)->ifExpression = __node_70;
3240
if (yytoken != Token_COLON)
3244
expectedToken(yytoken, Token_COLON, ":");
3250
ConditionalExpressionAst *__node_71 = 0;
3251
if (!parseConditionalExpression(&__node_71))
3255
expectedSymbol(AstNode::ConditionalExpressionKind, "conditionalExpression");
3259
(*yynode)->elseExpression = __node_71;
3262
else if (true /*epsilon*/)
3275
(*yynode)->endToken = tokenStream->index() - 2;
3280
bool Parser::parseConstantOrClassConst(ConstantOrClassConstAst **yynode)
3282
*yynode = create<ConstantOrClassConstAst>();
3284
(*yynode)->startToken = tokenStream->index() - 1;
3286
if (yytoken == Token_STRING)
3288
if ((yytoken == Token_STRING) && ( LA(2).kind == Token_PAAMAYIM_NEKUDOTAYIM ))
3290
IdentifierAst *__node_72 = 0;
3291
if (!parseIdentifier(&__node_72))
3295
expectedSymbol(AstNode::IdentifierKind, "identifier");
3299
(*yynode)->className = __node_72;
3301
if (yytoken != Token_PAAMAYIM_NEKUDOTAYIM)
3305
expectedToken(yytoken, Token_PAAMAYIM_NEKUDOTAYIM, "::");
3311
IdentifierAst *__node_73 = 0;
3312
if (!parseIdentifier(&__node_73))
3316
expectedSymbol(AstNode::IdentifierKind, "identifier");
3320
(*yynode)->constant = __node_73;
3323
else if (yytoken == Token_STRING)
3325
IdentifierAst *__node_74 = 0;
3326
if (!parseIdentifier(&__node_74))
3330
expectedSymbol(AstNode::IdentifierKind, "identifier");
3334
(*yynode)->constant = __node_74;
3347
(*yynode)->endToken = tokenStream->index() - 2;
3352
bool Parser::parseCtorArguments(CtorArgumentsAst **yynode)
3354
*yynode = create<CtorArgumentsAst>();
3356
(*yynode)->startToken = tokenStream->index() - 1;
3358
if (yytoken == Token_LPAREN || yytoken == Token_AND_ASSIGN
3359
|| yytoken == Token_AS
3360
|| yytoken == Token_ASSIGN
3361
|| yytoken == Token_BIT_AND
3362
|| yytoken == Token_BIT_OR
3363
|| yytoken == Token_BIT_XOR
3364
|| yytoken == Token_BOOLEAN_AND
3365
|| yytoken == Token_BOOLEAN_OR
3366
|| yytoken == Token_CLOSE_TAG
3367
|| yytoken == Token_COLON
3368
|| yytoken == Token_COMMA
3369
|| yytoken == Token_CONCAT
3370
|| yytoken == Token_CONCAT_ASSIGN
3371
|| yytoken == Token_DEC
3372
|| yytoken == Token_DIV
3373
|| yytoken == Token_DIV_ASSIGN
3374
|| yytoken == Token_DOUBLE_ARROW
3375
|| yytoken == Token_EOF
3376
|| yytoken == Token_INC
3377
|| yytoken == Token_INSTANCEOF
3378
|| yytoken == Token_IS_EQUAL
3379
|| yytoken == Token_IS_GREATER
3380
|| yytoken == Token_IS_GREATER_OR_EQUAL
3381
|| yytoken == Token_IS_IDENTICAL
3382
|| yytoken == Token_IS_NOT_EQUAL
3383
|| yytoken == Token_IS_NOT_IDENTICAL
3384
|| yytoken == Token_IS_SMALLER
3385
|| yytoken == Token_IS_SMALLER_OR_EQUAL
3386
|| yytoken == Token_LOGICAL_AND
3387
|| yytoken == Token_LOGICAL_OR
3388
|| yytoken == Token_LOGICAL_XOR
3389
|| yytoken == Token_MINUS
3390
|| yytoken == Token_MINUS_ASSIGN
3391
|| yytoken == Token_MOD
3392
|| yytoken == Token_MOD_ASSIGN
3393
|| yytoken == Token_MUL
3394
|| yytoken == Token_MUL_ASSIGN
3395
|| yytoken == Token_OR_ASSIGN
3396
|| yytoken == Token_PLUS
3397
|| yytoken == Token_PLUS_ASSIGN
3398
|| yytoken == Token_QUESTION
3399
|| yytoken == Token_RBRACE
3400
|| yytoken == Token_RBRACKET
3401
|| yytoken == Token_RPAREN
3402
|| yytoken == Token_SEMICOLON
3403
|| yytoken == Token_SL
3404
|| yytoken == Token_SL_ASSIGN
3405
|| yytoken == Token_SR
3406
|| yytoken == Token_SR_ASSIGN
3407
|| yytoken == Token_XOR_ASSIGN)
3409
if (yytoken == Token_LPAREN)
3411
if (yytoken != Token_LPAREN)
3415
expectedToken(yytoken, Token_LPAREN, "(");
3421
FunctionCallParameterListAst *__node_75 = 0;
3422
if (!parseFunctionCallParameterList(&__node_75))
3426
expectedSymbol(AstNode::FunctionCallParameterListKind, "functionCallParameterList");
3430
(*yynode)->parameterList = __node_75;
3432
if (yytoken != Token_RPAREN)
3436
expectedToken(yytoken, Token_RPAREN, ")");
3443
else if (true /*epsilon*/)
3456
(*yynode)->endToken = tokenStream->index() - 2;
3461
bool Parser::parseDeclareItem(DeclareItemAst **yynode)
3463
*yynode = create<DeclareItemAst>();
3465
(*yynode)->startToken = tokenStream->index() - 1;
3467
if (yytoken == Token_STRING)
3469
if (yytoken != Token_STRING)
3473
expectedToken(yytoken, Token_STRING, "string");
3479
if (yytoken != Token_ASSIGN)
3483
expectedToken(yytoken, Token_ASSIGN, "=");
3489
StaticScalarAst *__node_76 = 0;
3490
if (!parseStaticScalar(&__node_76))
3494
expectedSymbol(AstNode::StaticScalarKind, "staticScalar");
3498
(*yynode)->scalar = __node_76;
3506
(*yynode)->endToken = tokenStream->index() - 2;
3511
bool Parser::parseDeclareStatement(DeclareStatementAst **yynode)
3513
*yynode = create<DeclareStatementAst>();
3515
(*yynode)->startToken = tokenStream->index() - 1;
3517
if (yytoken == Token_ARRAY
3518
|| yytoken == Token_ARRAY_CAST
3519
|| yytoken == Token_AT
3520
|| yytoken == Token_BACKTICK
3521
|| yytoken == Token_BANG
3522
|| yytoken == Token_BOOL_CAST
3523
|| yytoken == Token_BREAK
3524
|| yytoken == Token_CLASS_C
3525
|| yytoken == Token_CLONE
3526
|| yytoken == Token_CLOSE_TAG
3527
|| yytoken == Token_COLON
3528
|| yytoken == Token_CONSTANT_ENCAPSED_STRING
3529
|| yytoken == Token_CONTINUE
3530
|| yytoken == Token_DEC
3531
|| yytoken == Token_DECLARE
3532
|| yytoken == Token_DNUMBER
3533
|| yytoken == Token_DO
3534
|| yytoken == Token_DOLLAR
3535
|| yytoken == Token_DOUBLE_CAST
3536
|| yytoken == Token_DOUBLE_QUOTE
3537
|| yytoken == Token_ECHO
3538
|| yytoken == Token_EMPTY
3539
|| yytoken == Token_EVAL
3540
|| yytoken == Token_EXIT
3541
|| yytoken == Token_FILE
3542
|| yytoken == Token_FOR
3543
|| yytoken == Token_FOREACH
3544
|| yytoken == Token_FUNC_C
3545
|| yytoken == Token_GLOBAL
3546
|| yytoken == Token_IF
3547
|| yytoken == Token_INC
3548
|| yytoken == Token_INCLUDE
3549
|| yytoken == Token_INCLUDE_ONCE
3550
|| yytoken == Token_INLINE_HTML
3551
|| yytoken == Token_INT_CAST
3552
|| yytoken == Token_ISSET
3553
|| yytoken == Token_LBRACE
3554
|| yytoken == Token_LINE
3555
|| yytoken == Token_LIST
3556
|| yytoken == Token_LNUMBER
3557
|| yytoken == Token_LPAREN
3558
|| yytoken == Token_METHOD_C
3559
|| yytoken == Token_MINUS
3560
|| yytoken == Token_NEW
3561
|| yytoken == Token_OBJECT_CAST
3562
|| yytoken == Token_OPEN_TAG
3563
|| yytoken == Token_OPEN_TAG_WITH_ECHO
3564
|| yytoken == Token_PLUS
3565
|| yytoken == Token_PRINT
3566
|| yytoken == Token_REQUIRE
3567
|| yytoken == Token_REQUIRE_ONCE
3568
|| yytoken == Token_RETURN
3569
|| yytoken == Token_SEMICOLON
3570
|| yytoken == Token_START_HEREDOC
3571
|| yytoken == Token_STATIC
3572
|| yytoken == Token_STRING
3573
|| yytoken == Token_STRING_CAST
3574
|| yytoken == Token_STRING_VARNAME
3575
|| yytoken == Token_SWITCH
3576
|| yytoken == Token_THROW
3577
|| yytoken == Token_TILDE
3578
|| yytoken == Token_TRY
3579
|| yytoken == Token_UNSET
3580
|| yytoken == Token_UNSET_CAST
3581
|| yytoken == Token_VARIABLE
3582
|| yytoken == Token_WHILE)
3584
if (yytoken == Token_ARRAY
3585
|| yytoken == Token_ARRAY_CAST
3586
|| yytoken == Token_AT
3587
|| yytoken == Token_BACKTICK
3588
|| yytoken == Token_BANG
3589
|| yytoken == Token_BOOL_CAST
3590
|| yytoken == Token_BREAK
3591
|| yytoken == Token_CLASS_C
3592
|| yytoken == Token_CLONE
3593
|| yytoken == Token_CLOSE_TAG
3594
|| yytoken == Token_CONSTANT_ENCAPSED_STRING
3595
|| yytoken == Token_CONTINUE
3596
|| yytoken == Token_DEC
3597
|| yytoken == Token_DECLARE
3598
|| yytoken == Token_DNUMBER
3599
|| yytoken == Token_DO
3600
|| yytoken == Token_DOLLAR
3601
|| yytoken == Token_DOUBLE_CAST
3602
|| yytoken == Token_DOUBLE_QUOTE
3603
|| yytoken == Token_ECHO
3604
|| yytoken == Token_EMPTY
3605
|| yytoken == Token_EVAL
3606
|| yytoken == Token_EXIT
3607
|| yytoken == Token_FILE
3608
|| yytoken == Token_FOR
3609
|| yytoken == Token_FOREACH
3610
|| yytoken == Token_FUNC_C
3611
|| yytoken == Token_GLOBAL
3612
|| yytoken == Token_IF
3613
|| yytoken == Token_INC
3614
|| yytoken == Token_INCLUDE
3615
|| yytoken == Token_INCLUDE_ONCE
3616
|| yytoken == Token_INLINE_HTML
3617
|| yytoken == Token_INT_CAST
3618
|| yytoken == Token_ISSET
3619
|| yytoken == Token_LBRACE
3620
|| yytoken == Token_LINE
3621
|| yytoken == Token_LIST
3622
|| yytoken == Token_LNUMBER
3623
|| yytoken == Token_LPAREN
3624
|| yytoken == Token_METHOD_C
3625
|| yytoken == Token_MINUS
3626
|| yytoken == Token_NEW
3627
|| yytoken == Token_OBJECT_CAST
3628
|| yytoken == Token_OPEN_TAG
3629
|| yytoken == Token_OPEN_TAG_WITH_ECHO
3630
|| yytoken == Token_PLUS
3631
|| yytoken == Token_PRINT
3632
|| yytoken == Token_REQUIRE
3633
|| yytoken == Token_REQUIRE_ONCE
3634
|| yytoken == Token_RETURN
3635
|| yytoken == Token_SEMICOLON
3636
|| yytoken == Token_START_HEREDOC
3637
|| yytoken == Token_STATIC
3638
|| yytoken == Token_STRING
3639
|| yytoken == Token_STRING_CAST
3640
|| yytoken == Token_STRING_VARNAME
3641
|| yytoken == Token_SWITCH
3642
|| yytoken == Token_THROW
3643
|| yytoken == Token_TILDE
3644
|| yytoken == Token_TRY
3645
|| yytoken == Token_UNSET
3646
|| yytoken == Token_UNSET_CAST
3647
|| yytoken == Token_VARIABLE
3648
|| yytoken == Token_WHILE)
3650
StatementAst *__node_77 = 0;
3651
if (!parseStatement(&__node_77))
3655
expectedSymbol(AstNode::StatementKind, "statement");
3659
(*yynode)->statement = __node_77;
3662
else if (yytoken == Token_COLON)
3664
if (yytoken != Token_COLON)
3668
expectedToken(yytoken, Token_COLON, ":");
3674
InnerStatementListAst *__node_78 = 0;
3675
if (!parseInnerStatementList(&__node_78))
3679
expectedSymbol(AstNode::InnerStatementListKind, "innerStatementList");
3683
(*yynode)->statements = __node_78;
3685
if (yytoken != Token_ENDDECLARE)
3689
expectedToken(yytoken, Token_ENDDECLARE, "enddeclare");
3695
SemicolonOrCloseTagAst *__node_79 = 0;
3696
if (!parseSemicolonOrCloseTag(&__node_79))
3700
expectedSymbol(AstNode::SemicolonOrCloseTagKind, "semicolonOrCloseTag");
3715
(*yynode)->endToken = tokenStream->index() - 2;
3720
bool Parser::parseDimListItem(DimListItemAst **yynode)
3722
*yynode = create<DimListItemAst>();
3724
(*yynode)->startToken = tokenStream->index() - 1;
3726
if (yytoken == Token_LBRACE
3727
|| yytoken == Token_LBRACKET)
3729
if (yytoken == Token_LBRACKET)
3731
if (yytoken != Token_LBRACKET)
3735
expectedToken(yytoken, Token_LBRACKET, "[");
3741
DimOffsetAst *__node_80 = 0;
3742
if (!parseDimOffset(&__node_80))
3746
expectedSymbol(AstNode::DimOffsetKind, "dimOffset");
3750
(*yynode)->dimOffset = __node_80;
3752
if (yytoken != Token_RBRACKET)
3756
expectedToken(yytoken, Token_RBRACKET, "]");
3763
else if (yytoken == Token_LBRACE)
3765
if (yytoken != Token_LBRACE)
3769
expectedToken(yytoken, Token_LBRACE, "{");
3775
ExprAst *__node_81 = 0;
3776
if (!parseExpr(&__node_81))
3780
expectedSymbol(AstNode::ExprKind, "expr");
3784
(*yynode)->expr = __node_81;
3786
if (yytoken != Token_RBRACE)
3790
expectedToken(yytoken, Token_RBRACE, "}");
3807
(*yynode)->endToken = tokenStream->index() - 2;
3812
bool Parser::parseDimOffset(DimOffsetAst **yynode)
3814
*yynode = create<DimOffsetAst>();
3816
(*yynode)->startToken = tokenStream->index() - 1;
3818
if (yytoken == Token_ARRAY
3819
|| yytoken == Token_ARRAY_CAST
3820
|| yytoken == Token_AT
3821
|| yytoken == Token_BACKTICK
3822
|| yytoken == Token_BANG
3823
|| yytoken == Token_BOOL_CAST
3824
|| yytoken == Token_CLASS_C
3825
|| yytoken == Token_CLONE
3826
|| yytoken == Token_CONSTANT_ENCAPSED_STRING
3827
|| yytoken == Token_DEC
3828
|| yytoken == Token_DNUMBER
3829
|| yytoken == Token_DOLLAR
3830
|| yytoken == Token_DOUBLE_CAST
3831
|| yytoken == Token_DOUBLE_QUOTE
3832
|| yytoken == Token_EMPTY
3833
|| yytoken == Token_EVAL
3834
|| yytoken == Token_EXIT
3835
|| yytoken == Token_FILE
3836
|| yytoken == Token_FUNC_C
3837
|| yytoken == Token_INC
3838
|| yytoken == Token_INCLUDE
3839
|| yytoken == Token_INCLUDE_ONCE
3840
|| yytoken == Token_INT_CAST
3841
|| yytoken == Token_ISSET
3842
|| yytoken == Token_LINE
3843
|| yytoken == Token_LIST
3844
|| yytoken == Token_LNUMBER
3845
|| yytoken == Token_LPAREN
3846
|| yytoken == Token_METHOD_C
3847
|| yytoken == Token_MINUS
3848
|| yytoken == Token_NEW
3849
|| yytoken == Token_OBJECT_CAST
3850
|| yytoken == Token_PLUS
3851
|| yytoken == Token_PRINT
3852
|| yytoken == Token_REQUIRE
3853
|| yytoken == Token_REQUIRE_ONCE
3854
|| yytoken == Token_START_HEREDOC
3855
|| yytoken == Token_STRING
3856
|| yytoken == Token_STRING_CAST
3857
|| yytoken == Token_STRING_VARNAME
3858
|| yytoken == Token_TILDE
3859
|| yytoken == Token_UNSET_CAST
3860
|| yytoken == Token_VARIABLE || yytoken == Token_EOF
3861
|| yytoken == Token_RBRACKET)
3863
if (yytoken == Token_ARRAY
3864
|| yytoken == Token_ARRAY_CAST
3865
|| yytoken == Token_AT
3866
|| yytoken == Token_BACKTICK
3867
|| yytoken == Token_BANG
3868
|| yytoken == Token_BOOL_CAST
3869
|| yytoken == Token_CLASS_C
3870
|| yytoken == Token_CLONE
3871
|| yytoken == Token_CONSTANT_ENCAPSED_STRING
3872
|| yytoken == Token_DEC
3873
|| yytoken == Token_DNUMBER
3874
|| yytoken == Token_DOLLAR
3875
|| yytoken == Token_DOUBLE_CAST
3876
|| yytoken == Token_DOUBLE_QUOTE
3877
|| yytoken == Token_EMPTY
3878
|| yytoken == Token_EVAL
3879
|| yytoken == Token_EXIT
3880
|| yytoken == Token_FILE
3881
|| yytoken == Token_FUNC_C
3882
|| yytoken == Token_INC
3883
|| yytoken == Token_INCLUDE
3884
|| yytoken == Token_INCLUDE_ONCE
3885
|| yytoken == Token_INT_CAST
3886
|| yytoken == Token_ISSET
3887
|| yytoken == Token_LINE
3888
|| yytoken == Token_LIST
3889
|| yytoken == Token_LNUMBER
3890
|| yytoken == Token_LPAREN
3891
|| yytoken == Token_METHOD_C
3892
|| yytoken == Token_MINUS
3893
|| yytoken == Token_NEW
3894
|| yytoken == Token_OBJECT_CAST
3895
|| yytoken == Token_PLUS
3896
|| yytoken == Token_PRINT
3897
|| yytoken == Token_REQUIRE
3898
|| yytoken == Token_REQUIRE_ONCE
3899
|| yytoken == Token_START_HEREDOC
3900
|| yytoken == Token_STRING
3901
|| yytoken == Token_STRING_CAST
3902
|| yytoken == Token_STRING_VARNAME
3903
|| yytoken == Token_TILDE
3904
|| yytoken == Token_UNSET_CAST
3905
|| yytoken == Token_VARIABLE)
3907
ExprAst *__node_82 = 0;
3908
if (!parseExpr(&__node_82))
3912
expectedSymbol(AstNode::ExprKind, "expr");
3916
(*yynode)->expr = __node_82;
3919
else if (true /*epsilon*/)
3932
(*yynode)->endToken = tokenStream->index() - 2;
3937
bool Parser::parseDynamicClassNameReference(DynamicClassNameReferenceAst **yynode)
3939
*yynode = create<DynamicClassNameReferenceAst>();
3941
(*yynode)->startToken = tokenStream->index() - 1;
3943
if (yytoken == Token_DOLLAR
3944
|| yytoken == Token_STRING
3945
|| yytoken == Token_VARIABLE)
3947
BaseVariableAst *__node_83 = 0;
3948
if (!parseBaseVariable(&__node_83))
3952
expectedSymbol(AstNode::BaseVariableKind, "baseVariable");
3956
(*yynode)->baseVariable = __node_83;
3958
if (yytoken == Token_OBJECT_OPERATOR)
3960
if (yytoken != Token_OBJECT_OPERATOR)
3964
expectedToken(yytoken, Token_OBJECT_OPERATOR, "->");
3970
ObjectPropertyAst *__node_84 = 0;
3971
if (!parseObjectProperty(&__node_84))
3975
expectedSymbol(AstNode::ObjectPropertyKind, "objectProperty");
3979
(*yynode)->objectProperty = __node_84;
3981
DynamicClassNameVariablePropertiesAst *__node_85 = 0;
3982
if (!parseDynamicClassNameVariableProperties(&__node_85))
3986
expectedSymbol(AstNode::DynamicClassNameVariablePropertiesKind, "dynamicClassNameVariableProperties");
3990
(*yynode)->properties = __node_85;
3993
else if (true /*epsilon*/)
4006
(*yynode)->endToken = tokenStream->index() - 2;
4011
bool Parser::parseDynamicClassNameVariableProperties(DynamicClassNameVariablePropertiesAst **yynode)
4013
*yynode = create<DynamicClassNameVariablePropertiesAst>();
4015
(*yynode)->startToken = tokenStream->index() - 1;
4017
if (yytoken == Token_OBJECT_OPERATOR || yytoken == Token_AND_ASSIGN
4018
|| yytoken == Token_AS
4019
|| yytoken == Token_ASSIGN
4020
|| yytoken == Token_BIT_AND
4021
|| yytoken == Token_BIT_OR
4022
|| yytoken == Token_BIT_XOR
4023
|| yytoken == Token_BOOLEAN_AND
4024
|| yytoken == Token_BOOLEAN_OR
4025
|| yytoken == Token_CLOSE_TAG
4026
|| yytoken == Token_COLON
4027
|| yytoken == Token_COMMA
4028
|| yytoken == Token_CONCAT
4029
|| yytoken == Token_CONCAT_ASSIGN
4030
|| yytoken == Token_DEC
4031
|| yytoken == Token_DIV
4032
|| yytoken == Token_DIV_ASSIGN
4033
|| yytoken == Token_DOUBLE_ARROW
4034
|| yytoken == Token_EOF
4035
|| yytoken == Token_INC
4036
|| yytoken == Token_INSTANCEOF
4037
|| yytoken == Token_IS_EQUAL
4038
|| yytoken == Token_IS_GREATER
4039
|| yytoken == Token_IS_GREATER_OR_EQUAL
4040
|| yytoken == Token_IS_IDENTICAL
4041
|| yytoken == Token_IS_NOT_EQUAL
4042
|| yytoken == Token_IS_NOT_IDENTICAL
4043
|| yytoken == Token_IS_SMALLER
4044
|| yytoken == Token_IS_SMALLER_OR_EQUAL
4045
|| yytoken == Token_LOGICAL_AND
4046
|| yytoken == Token_LOGICAL_OR
4047
|| yytoken == Token_LOGICAL_XOR
4048
|| yytoken == Token_LPAREN
4049
|| yytoken == Token_MINUS
4050
|| yytoken == Token_MINUS_ASSIGN
4051
|| yytoken == Token_MOD
4052
|| yytoken == Token_MOD_ASSIGN
4053
|| yytoken == Token_MUL
4054
|| yytoken == Token_MUL_ASSIGN
4055
|| yytoken == Token_OR_ASSIGN
4056
|| yytoken == Token_PLUS
4057
|| yytoken == Token_PLUS_ASSIGN
4058
|| yytoken == Token_QUESTION
4059
|| yytoken == Token_RBRACE
4060
|| yytoken == Token_RBRACKET
4061
|| yytoken == Token_RPAREN
4062
|| yytoken == Token_SEMICOLON
4063
|| yytoken == Token_SL
4064
|| yytoken == Token_SL_ASSIGN
4065
|| yytoken == Token_SR
4066
|| yytoken == Token_SR_ASSIGN
4067
|| yytoken == Token_XOR_ASSIGN)
4069
while (yytoken == Token_OBJECT_OPERATOR)
4071
DynamicClassNameVariablePropertyAst *__node_86 = 0;
4072
if (!parseDynamicClassNameVariableProperty(&__node_86))
4076
expectedSymbol(AstNode::DynamicClassNameVariablePropertyKind, "dynamicClassNameVariableProperty");
4080
(*yynode)->propertiesSequence = snoc((*yynode)->propertiesSequence, __node_86, memoryPool);
4089
(*yynode)->endToken = tokenStream->index() - 2;
4094
bool Parser::parseDynamicClassNameVariableProperty(DynamicClassNameVariablePropertyAst **yynode)
4096
*yynode = create<DynamicClassNameVariablePropertyAst>();
4098
(*yynode)->startToken = tokenStream->index() - 1;
4100
if (yytoken == Token_OBJECT_OPERATOR)
4102
if (yytoken != Token_OBJECT_OPERATOR)
4106
expectedToken(yytoken, Token_OBJECT_OPERATOR, "->");
4112
ObjectPropertyAst *__node_87 = 0;
4113
if (!parseObjectProperty(&__node_87))
4117
expectedSymbol(AstNode::ObjectPropertyKind, "objectProperty");
4121
(*yynode)->property = __node_87;
4129
(*yynode)->endToken = tokenStream->index() - 2;
4134
bool Parser::parseElseSingle(ElseSingleAst **yynode)
4136
*yynode = create<ElseSingleAst>();
4138
(*yynode)->startToken = tokenStream->index() - 1;
4140
if (yytoken == Token_ELSE || yytoken == Token_ABSTRACT
4141
|| yytoken == Token_ARRAY
4142
|| yytoken == Token_ARRAY_CAST
4143
|| yytoken == Token_AT
4144
|| yytoken == Token_BACKTICK
4145
|| yytoken == Token_BANG
4146
|| yytoken == Token_BOOL_CAST
4147
|| yytoken == Token_BREAK
4148
|| yytoken == Token_CASE
4149
|| yytoken == Token_CLASS
4150
|| yytoken == Token_CLASS_C
4151
|| yytoken == Token_CLONE
4152
|| yytoken == Token_CLOSE_TAG
4153
|| yytoken == Token_CONSTANT_ENCAPSED_STRING
4154
|| yytoken == Token_CONTINUE
4155
|| yytoken == Token_DEC
4156
|| yytoken == Token_DECLARE
4157
|| yytoken == Token_DEFAULT
4158
|| yytoken == Token_DNUMBER
4159
|| yytoken == Token_DO
4160
|| yytoken == Token_DOLLAR
4161
|| yytoken == Token_DOUBLE_CAST
4162
|| yytoken == Token_DOUBLE_QUOTE
4163
|| yytoken == Token_ECHO
4164
|| yytoken == Token_ELSE
4165
|| yytoken == Token_ELSEIF
4166
|| yytoken == Token_EMPTY
4167
|| yytoken == Token_ENDDECLARE
4168
|| yytoken == Token_ENDFOR
4169
|| yytoken == Token_ENDFOREACH
4170
|| yytoken == Token_ENDIF
4171
|| yytoken == Token_ENDSWITCH
4172
|| yytoken == Token_ENDWHILE
4173
|| yytoken == Token_EOF
4174
|| yytoken == Token_EVAL
4175
|| yytoken == Token_EXIT
4176
|| yytoken == Token_FILE
4177
|| yytoken == Token_FINAL
4178
|| yytoken == Token_FOR
4179
|| yytoken == Token_FOREACH
4180
|| yytoken == Token_FUNCTION
4181
|| yytoken == Token_FUNC_C
4182
|| yytoken == Token_GLOBAL
4183
|| yytoken == Token_HALT_COMPILER
4184
|| yytoken == Token_IF
4185
|| yytoken == Token_INC
4186
|| yytoken == Token_INCLUDE
4187
|| yytoken == Token_INCLUDE_ONCE
4188
|| yytoken == Token_INLINE_HTML
4189
|| yytoken == Token_INTERFACE
4190
|| yytoken == Token_INT_CAST
4191
|| yytoken == Token_ISSET
4192
|| yytoken == Token_LBRACE
4193
|| yytoken == Token_LINE
4194
|| yytoken == Token_LIST
4195
|| yytoken == Token_LNUMBER
4196
|| yytoken == Token_LPAREN
4197
|| yytoken == Token_METHOD_C
4198
|| yytoken == Token_MINUS
4199
|| yytoken == Token_NEW
4200
|| yytoken == Token_OBJECT_CAST
4201
|| yytoken == Token_OPEN_TAG
4202
|| yytoken == Token_OPEN_TAG_WITH_ECHO
4203
|| yytoken == Token_PLUS
4204
|| yytoken == Token_PRINT
4205
|| yytoken == Token_RBRACE
4206
|| yytoken == Token_REQUIRE
4207
|| yytoken == Token_REQUIRE_ONCE
4208
|| yytoken == Token_RETURN
4209
|| yytoken == Token_SEMICOLON
4210
|| yytoken == Token_START_HEREDOC
4211
|| yytoken == Token_STATIC
4212
|| yytoken == Token_STRING
4213
|| yytoken == Token_STRING_CAST
4214
|| yytoken == Token_STRING_VARNAME
4215
|| yytoken == Token_SWITCH
4216
|| yytoken == Token_THROW
4217
|| yytoken == Token_TILDE
4218
|| yytoken == Token_TRY
4219
|| yytoken == Token_UNSET
4220
|| yytoken == Token_UNSET_CAST
4221
|| yytoken == Token_VARIABLE
4222
|| yytoken == Token_WHILE)
4224
if (yytoken == Token_ELSE)
4226
if (yytoken != Token_ELSE)
4230
expectedToken(yytoken, Token_ELSE, "else");
4236
StatementAst *__node_88 = 0;
4237
if (!parseStatement(&__node_88))
4241
expectedSymbol(AstNode::StatementKind, "statement");
4245
(*yynode)->statement = __node_88;
4248
else if (true /*epsilon*/)
4261
(*yynode)->endToken = tokenStream->index() - 2;
4266
bool Parser::parseElseifList(ElseifListAst **yynode)
4268
*yynode = create<ElseifListAst>();
4270
(*yynode)->startToken = tokenStream->index() - 1;
4272
if (yytoken == Token_ELSEIF || yytoken == Token_ABSTRACT
4273
|| yytoken == Token_ARRAY
4274
|| yytoken == Token_ARRAY_CAST
4275
|| yytoken == Token_AT
4276
|| yytoken == Token_BACKTICK
4277
|| yytoken == Token_BANG
4278
|| yytoken == Token_BOOL_CAST
4279
|| yytoken == Token_BREAK
4280
|| yytoken == Token_CASE
4281
|| yytoken == Token_CLASS
4282
|| yytoken == Token_CLASS_C
4283
|| yytoken == Token_CLONE
4284
|| yytoken == Token_CLOSE_TAG
4285
|| yytoken == Token_CONSTANT_ENCAPSED_STRING
4286
|| yytoken == Token_CONTINUE
4287
|| yytoken == Token_DEC
4288
|| yytoken == Token_DECLARE
4289
|| yytoken == Token_DEFAULT
4290
|| yytoken == Token_DNUMBER
4291
|| yytoken == Token_DO
4292
|| yytoken == Token_DOLLAR
4293
|| yytoken == Token_DOUBLE_CAST
4294
|| yytoken == Token_DOUBLE_QUOTE
4295
|| yytoken == Token_ECHO
4296
|| yytoken == Token_ELSE
4297
|| yytoken == Token_ELSEIF
4298
|| yytoken == Token_EMPTY
4299
|| yytoken == Token_ENDDECLARE
4300
|| yytoken == Token_ENDFOR
4301
|| yytoken == Token_ENDFOREACH
4302
|| yytoken == Token_ENDIF
4303
|| yytoken == Token_ENDSWITCH
4304
|| yytoken == Token_ENDWHILE
4305
|| yytoken == Token_EOF
4306
|| yytoken == Token_EVAL
4307
|| yytoken == Token_EXIT
4308
|| yytoken == Token_FILE
4309
|| yytoken == Token_FINAL
4310
|| yytoken == Token_FOR
4311
|| yytoken == Token_FOREACH
4312
|| yytoken == Token_FUNCTION
4313
|| yytoken == Token_FUNC_C
4314
|| yytoken == Token_GLOBAL
4315
|| yytoken == Token_HALT_COMPILER
4316
|| yytoken == Token_IF
4317
|| yytoken == Token_INC
4318
|| yytoken == Token_INCLUDE
4319
|| yytoken == Token_INCLUDE_ONCE
4320
|| yytoken == Token_INLINE_HTML
4321
|| yytoken == Token_INTERFACE
4322
|| yytoken == Token_INT_CAST
4323
|| yytoken == Token_ISSET
4324
|| yytoken == Token_LBRACE
4325
|| yytoken == Token_LINE
4326
|| yytoken == Token_LIST
4327
|| yytoken == Token_LNUMBER
4328
|| yytoken == Token_LPAREN
4329
|| yytoken == Token_METHOD_C
4330
|| yytoken == Token_MINUS
4331
|| yytoken == Token_NEW
4332
|| yytoken == Token_OBJECT_CAST
4333
|| yytoken == Token_OPEN_TAG
4334
|| yytoken == Token_OPEN_TAG_WITH_ECHO
4335
|| yytoken == Token_PLUS
4336
|| yytoken == Token_PRINT
4337
|| yytoken == Token_RBRACE
4338
|| yytoken == Token_REQUIRE
4339
|| yytoken == Token_REQUIRE_ONCE
4340
|| yytoken == Token_RETURN
4341
|| yytoken == Token_SEMICOLON
4342
|| yytoken == Token_START_HEREDOC
4343
|| yytoken == Token_STATIC
4344
|| yytoken == Token_STRING
4345
|| yytoken == Token_STRING_CAST
4346
|| yytoken == Token_STRING_VARNAME
4347
|| yytoken == Token_SWITCH
4348
|| yytoken == Token_THROW
4349
|| yytoken == Token_TILDE
4350
|| yytoken == Token_TRY
4351
|| yytoken == Token_UNSET
4352
|| yytoken == Token_UNSET_CAST
4353
|| yytoken == Token_VARIABLE
4354
|| yytoken == Token_WHILE)
4356
while (yytoken == Token_ELSEIF)
4358
ElseifListItemAst *__node_89 = 0;
4359
if (!parseElseifListItem(&__node_89))
4363
expectedSymbol(AstNode::ElseifListItemKind, "elseifListItem");
4367
(*yynode)->elseifListItemSequence = snoc((*yynode)->elseifListItemSequence, __node_89, memoryPool);
4376
(*yynode)->endToken = tokenStream->index() - 2;
4381
bool Parser::parseElseifListItem(ElseifListItemAst **yynode)
4383
*yynode = create<ElseifListItemAst>();
4385
(*yynode)->startToken = tokenStream->index() - 1;
4387
if (yytoken == Token_ELSEIF)
4389
if (yytoken != Token_ELSEIF)
4393
expectedToken(yytoken, Token_ELSEIF, "elseif");
4399
if (yytoken != Token_LPAREN)
4403
expectedToken(yytoken, Token_LPAREN, "(");
4409
ExprAst *__node_90 = 0;
4410
if (!parseExpr(&__node_90))
4414
expectedSymbol(AstNode::ExprKind, "expr");
4418
(*yynode)->expr = __node_90;
4420
if (yytoken != Token_RPAREN)
4424
expectedToken(yytoken, Token_RPAREN, ")");
4430
StatementAst *__node_91 = 0;
4431
if (!parseStatement(&__node_91))
4435
expectedSymbol(AstNode::StatementKind, "statement");
4439
(*yynode)->statement = __node_91;
4447
(*yynode)->endToken = tokenStream->index() - 2;
4452
bool Parser::parseEncaps(EncapsAst **yynode)
4454
*yynode = create<EncapsAst>();
4456
(*yynode)->startToken = tokenStream->index() - 1;
4457
(*yynode)->value = -1;
4459
if (yytoken == Token_CURLY_OPEN
4460
|| yytoken == Token_DOLLAR_OPEN_CURLY_BRACES
4461
|| yytoken == Token_ENCAPSED_AND_WHITESPACE
4462
|| yytoken == Token_VARIABLE)
4464
if (yytoken == Token_CURLY_OPEN
4465
|| yytoken == Token_DOLLAR_OPEN_CURLY_BRACES
4466
|| yytoken == Token_VARIABLE)
4468
EncapsVarAst *__node_92 = 0;
4469
if (!parseEncapsVar(&__node_92))
4473
expectedSymbol(AstNode::EncapsVarKind, "encapsVar");
4477
(*yynode)->var = __node_92;
4480
else if (yytoken == Token_ENCAPSED_AND_WHITESPACE)
4482
if (yytoken != Token_ENCAPSED_AND_WHITESPACE)
4486
expectedToken(yytoken, Token_ENCAPSED_AND_WHITESPACE, "encapsed and whitespace");
4490
(*yynode)->value = tokenStream->index() - 1;
4504
(*yynode)->endToken = tokenStream->index() - 2;
4509
bool Parser::parseEncapsList(EncapsListAst **yynode)
4511
*yynode = create<EncapsListAst>();
4513
(*yynode)->startToken = tokenStream->index() - 1;
4515
if (yytoken == Token_CURLY_OPEN
4516
|| yytoken == Token_DOLLAR_OPEN_CURLY_BRACES
4517
|| yytoken == Token_ENCAPSED_AND_WHITESPACE
4518
|| yytoken == Token_VARIABLE || yytoken == Token_BACKTICK
4519
|| yytoken == Token_DOUBLE_QUOTE
4520
|| yytoken == Token_END_HEREDOC
4521
|| yytoken == Token_EOF)
4523
while (yytoken == Token_CURLY_OPEN
4524
|| yytoken == Token_DOLLAR_OPEN_CURLY_BRACES
4525
|| yytoken == Token_ENCAPSED_AND_WHITESPACE
4526
|| yytoken == Token_VARIABLE)
4528
EncapsAst *__node_93 = 0;
4529
if (!parseEncaps(&__node_93))
4533
expectedSymbol(AstNode::EncapsKind, "encaps");
4537
(*yynode)->encapsSequence = snoc((*yynode)->encapsSequence, __node_93, memoryPool);
4546
(*yynode)->endToken = tokenStream->index() - 2;
4551
bool Parser::parseEncapsVar(EncapsVarAst **yynode)
4553
*yynode = create<EncapsVarAst>();
4555
(*yynode)->startToken = tokenStream->index() - 1;
4557
if (yytoken == Token_CURLY_OPEN
4558
|| yytoken == Token_DOLLAR_OPEN_CURLY_BRACES
4559
|| yytoken == Token_VARIABLE)
4561
if (yytoken == Token_DOLLAR_OPEN_CURLY_BRACES)
4563
if (yytoken != Token_DOLLAR_OPEN_CURLY_BRACES)
4567
expectedToken(yytoken, Token_DOLLAR_OPEN_CURLY_BRACES, "${");
4573
if ((yytoken == Token_STRING_VARNAME) && ( LA(2).kind == Token_LBRACKET))
4575
if (yytoken != Token_STRING_VARNAME)
4579
expectedToken(yytoken, Token_STRING_VARNAME, "string varname");
4585
if (yytoken != Token_LBRACKET)
4589
expectedToken(yytoken, Token_LBRACKET, "[");
4595
ExprAst *__node_94 = 0;
4596
if (!parseExpr(&__node_94))
4600
expectedSymbol(AstNode::ExprKind, "expr");
4604
(*yynode)->expr = __node_94;
4606
if (yytoken != Token_RBRACKET)
4610
expectedToken(yytoken, Token_RBRACKET, "]");
4616
if (yytoken != Token_RBRACE)
4620
expectedToken(yytoken, Token_RBRACE, "}");
4627
else if (yytoken == Token_ARRAY
4628
|| yytoken == Token_ARRAY_CAST
4629
|| yytoken == Token_AT
4630
|| yytoken == Token_BACKTICK
4631
|| yytoken == Token_BANG
4632
|| yytoken == Token_BOOL_CAST
4633
|| yytoken == Token_CLASS_C
4634
|| yytoken == Token_CLONE
4635
|| yytoken == Token_CONSTANT_ENCAPSED_STRING
4636
|| yytoken == Token_DEC
4637
|| yytoken == Token_DNUMBER
4638
|| yytoken == Token_DOLLAR
4639
|| yytoken == Token_DOUBLE_CAST
4640
|| yytoken == Token_DOUBLE_QUOTE
4641
|| yytoken == Token_EMPTY
4642
|| yytoken == Token_EVAL
4643
|| yytoken == Token_EXIT
4644
|| yytoken == Token_FILE
4645
|| yytoken == Token_FUNC_C
4646
|| yytoken == Token_INC
4647
|| yytoken == Token_INCLUDE
4648
|| yytoken == Token_INCLUDE_ONCE
4649
|| yytoken == Token_INT_CAST
4650
|| yytoken == Token_ISSET
4651
|| yytoken == Token_LINE
4652
|| yytoken == Token_LIST
4653
|| yytoken == Token_LNUMBER
4654
|| yytoken == Token_LPAREN
4655
|| yytoken == Token_METHOD_C
4656
|| yytoken == Token_MINUS
4657
|| yytoken == Token_NEW
4658
|| yytoken == Token_OBJECT_CAST
4659
|| yytoken == Token_PLUS
4660
|| yytoken == Token_PRINT
4661
|| yytoken == Token_REQUIRE
4662
|| yytoken == Token_REQUIRE_ONCE
4663
|| yytoken == Token_START_HEREDOC
4664
|| yytoken == Token_STRING
4665
|| yytoken == Token_STRING_CAST
4666
|| yytoken == Token_STRING_VARNAME
4667
|| yytoken == Token_TILDE
4668
|| yytoken == Token_UNSET_CAST
4669
|| yytoken == Token_VARIABLE)
4671
ExprAst *__node_95 = 0;
4672
if (!parseExpr(&__node_95))
4676
expectedSymbol(AstNode::ExprKind, "expr");
4680
(*yynode)->expr = __node_95;
4682
if (yytoken != Token_RBRACE)
4686
expectedToken(yytoken, Token_RBRACE, "}");
4698
else if (yytoken == Token_VARIABLE)
4700
VariableIdentifierAst *__node_96 = 0;
4701
if (!parseVariableIdentifier(&__node_96))
4705
expectedSymbol(AstNode::VariableIdentifierKind, "variableIdentifier");
4709
(*yynode)->variable = __node_96;
4711
if (yytoken == Token_OBJECT_OPERATOR)
4713
if (yytoken != Token_OBJECT_OPERATOR)
4717
expectedToken(yytoken, Token_OBJECT_OPERATOR, "->");
4723
IdentifierAst *__node_97 = 0;
4724
if (!parseIdentifier(&__node_97))
4728
expectedSymbol(AstNode::IdentifierKind, "identifier");
4732
(*yynode)->propertyIdentifier = __node_97;
4735
else if (yytoken == Token_LBRACKET)
4737
if (yytoken != Token_LBRACKET)
4741
expectedToken(yytoken, Token_LBRACKET, "[");
4747
EncapsVarOffsetAst *__node_98 = 0;
4748
if (!parseEncapsVarOffset(&__node_98))
4752
expectedSymbol(AstNode::EncapsVarOffsetKind, "encapsVarOffset");
4756
(*yynode)->offset = __node_98;
4758
if (yytoken != Token_RBRACKET)
4762
expectedToken(yytoken, Token_RBRACKET, "]");
4769
else if (true /*epsilon*/)
4777
else if (yytoken == Token_CURLY_OPEN)
4779
if (yytoken != Token_CURLY_OPEN)
4783
expectedToken(yytoken, Token_CURLY_OPEN, "curly open");
4789
ExprAst *__node_99 = 0;
4790
if (!parseExpr(&__node_99))
4794
expectedSymbol(AstNode::ExprKind, "expr");
4798
(*yynode)->expr = __node_99;
4800
if (yytoken != Token_RBRACE)
4804
expectedToken(yytoken, Token_RBRACE, "}");
4821
(*yynode)->endToken = tokenStream->index() - 2;
4826
bool Parser::parseEncapsVarOffset(EncapsVarOffsetAst **yynode)
4828
*yynode = create<EncapsVarOffsetAst>();
4830
(*yynode)->startToken = tokenStream->index() - 1;
4832
if (yytoken == Token_NUM_STRING
4833
|| yytoken == Token_STRING
4834
|| yytoken == Token_VARIABLE)
4836
if (yytoken == Token_STRING)
4838
if (yytoken != Token_STRING)
4842
expectedToken(yytoken, Token_STRING, "string");
4849
else if (yytoken == Token_NUM_STRING)
4851
if (yytoken != Token_NUM_STRING)
4855
expectedToken(yytoken, Token_NUM_STRING, "num string");
4862
else if (yytoken == Token_VARIABLE)
4864
VariableIdentifierAst *__node_100 = 0;
4865
if (!parseVariableIdentifier(&__node_100))
4869
expectedSymbol(AstNode::VariableIdentifierKind, "variableIdentifier");
4884
(*yynode)->endToken = tokenStream->index() - 2;
4889
bool Parser::parseEqualityExpression(EqualityExpressionAst **yynode)
4891
*yynode = create<EqualityExpressionAst>();
4893
(*yynode)->startToken = tokenStream->index() - 1;
4895
if (yytoken == Token_ARRAY
4896
|| yytoken == Token_ARRAY_CAST
4897
|| yytoken == Token_AT
4898
|| yytoken == Token_BACKTICK
4899
|| yytoken == Token_BANG
4900
|| yytoken == Token_BOOL_CAST
4901
|| yytoken == Token_CLASS_C
4902
|| yytoken == Token_CLONE
4903
|| yytoken == Token_CONSTANT_ENCAPSED_STRING
4904
|| yytoken == Token_DEC
4905
|| yytoken == Token_DNUMBER
4906
|| yytoken == Token_DOLLAR
4907
|| yytoken == Token_DOUBLE_CAST
4908
|| yytoken == Token_DOUBLE_QUOTE
4909
|| yytoken == Token_EMPTY
4910
|| yytoken == Token_EVAL
4911
|| yytoken == Token_EXIT
4912
|| yytoken == Token_FILE
4913
|| yytoken == Token_FUNC_C
4914
|| yytoken == Token_INC
4915
|| yytoken == Token_INCLUDE
4916
|| yytoken == Token_INCLUDE_ONCE
4917
|| yytoken == Token_INT_CAST
4918
|| yytoken == Token_ISSET
4919
|| yytoken == Token_LINE
4920
|| yytoken == Token_LIST
4921
|| yytoken == Token_LNUMBER
4922
|| yytoken == Token_LPAREN
4923
|| yytoken == Token_METHOD_C
4924
|| yytoken == Token_MINUS
4925
|| yytoken == Token_NEW
4926
|| yytoken == Token_OBJECT_CAST
4927
|| yytoken == Token_PLUS
4928
|| yytoken == Token_REQUIRE
4929
|| yytoken == Token_REQUIRE_ONCE
4930
|| yytoken == Token_START_HEREDOC
4931
|| yytoken == Token_STRING
4932
|| yytoken == Token_STRING_CAST
4933
|| yytoken == Token_STRING_VARNAME
4934
|| yytoken == Token_TILDE
4935
|| yytoken == Token_UNSET_CAST
4936
|| yytoken == Token_VARIABLE)
4938
RelationalExpressionAst *__node_101 = 0;
4939
if (!parseRelationalExpression(&__node_101))
4943
expectedSymbol(AstNode::RelationalExpressionKind, "relationalExpression");
4947
(*yynode)->expression = __node_101;
4949
while (yytoken == Token_IS_EQUAL
4950
|| yytoken == Token_IS_IDENTICAL
4951
|| yytoken == Token_IS_NOT_EQUAL
4952
|| yytoken == Token_IS_NOT_IDENTICAL)
4954
EqualityExpressionRestAst *__node_102 = 0;
4955
if (!parseEqualityExpressionRest(&__node_102))
4959
expectedSymbol(AstNode::EqualityExpressionRestKind, "equalityExpressionRest");
4963
(*yynode)->additionalExpressionSequence = snoc((*yynode)->additionalExpressionSequence, __node_102, memoryPool);
4972
(*yynode)->endToken = tokenStream->index() - 2;
4977
bool Parser::parseEqualityExpressionRest(EqualityExpressionRestAst **yynode)
4979
*yynode = create<EqualityExpressionRestAst>();
4981
(*yynode)->startToken = tokenStream->index() - 1;
4983
if (yytoken == Token_IS_EQUAL
4984
|| yytoken == Token_IS_IDENTICAL
4985
|| yytoken == Token_IS_NOT_EQUAL
4986
|| yytoken == Token_IS_NOT_IDENTICAL)
4988
if (yytoken == Token_IS_EQUAL)
4990
if (yytoken != Token_IS_EQUAL)
4994
expectedToken(yytoken, Token_IS_EQUAL, "==");
5001
else if (yytoken == Token_IS_NOT_EQUAL)
5003
if (yytoken != Token_IS_NOT_EQUAL)
5007
expectedToken(yytoken, Token_IS_NOT_EQUAL, "!=");
5014
else if (yytoken == Token_IS_IDENTICAL)
5016
if (yytoken != Token_IS_IDENTICAL)
5020
expectedToken(yytoken, Token_IS_IDENTICAL, "===");
5027
else if (yytoken == Token_IS_NOT_IDENTICAL)
5029
if (yytoken != Token_IS_NOT_IDENTICAL)
5033
expectedToken(yytoken, Token_IS_NOT_IDENTICAL, "!==");
5044
RelationalExpressionAst *__node_103 = 0;
5045
if (!parseRelationalExpression(&__node_103))
5049
expectedSymbol(AstNode::RelationalExpressionKind, "relationalExpression");
5053
(*yynode)->expression = __node_103;
5061
(*yynode)->endToken = tokenStream->index() - 2;
5066
bool Parser::parseExpr(ExprAst **yynode)
5068
*yynode = create<ExprAst>();
5070
(*yynode)->startToken = tokenStream->index() - 1;
5072
if (yytoken == Token_ARRAY
5073
|| yytoken == Token_ARRAY_CAST
5074
|| yytoken == Token_AT
5075
|| yytoken == Token_BACKTICK
5076
|| yytoken == Token_BANG
5077
|| yytoken == Token_BOOL_CAST
5078
|| yytoken == Token_CLASS_C
5079
|| yytoken == Token_CLONE
5080
|| yytoken == Token_CONSTANT_ENCAPSED_STRING
5081
|| yytoken == Token_DEC
5082
|| yytoken == Token_DNUMBER
5083
|| yytoken == Token_DOLLAR
5084
|| yytoken == Token_DOUBLE_CAST
5085
|| yytoken == Token_DOUBLE_QUOTE
5086
|| yytoken == Token_EMPTY
5087
|| yytoken == Token_EVAL
5088
|| yytoken == Token_EXIT
5089
|| yytoken == Token_FILE
5090
|| yytoken == Token_FUNC_C
5091
|| yytoken == Token_INC
5092
|| yytoken == Token_INCLUDE
5093
|| yytoken == Token_INCLUDE_ONCE
5094
|| yytoken == Token_INT_CAST
5095
|| yytoken == Token_ISSET
5096
|| yytoken == Token_LINE
5097
|| yytoken == Token_LIST
5098
|| yytoken == Token_LNUMBER
5099
|| yytoken == Token_LPAREN
5100
|| yytoken == Token_METHOD_C
5101
|| yytoken == Token_MINUS
5102
|| yytoken == Token_NEW
5103
|| yytoken == Token_OBJECT_CAST
5104
|| yytoken == Token_PLUS
5105
|| yytoken == Token_PRINT
5106
|| yytoken == Token_REQUIRE
5107
|| yytoken == Token_REQUIRE_ONCE
5108
|| yytoken == Token_START_HEREDOC
5109
|| yytoken == Token_STRING
5110
|| yytoken == Token_STRING_CAST
5111
|| yytoken == Token_STRING_VARNAME
5112
|| yytoken == Token_TILDE
5113
|| yytoken == Token_UNSET_CAST
5114
|| yytoken == Token_VARIABLE)
5116
LogicalOrExpressionAst *__node_104 = 0;
5117
if (!parseLogicalOrExpression(&__node_104))
5121
expectedSymbol(AstNode::LogicalOrExpressionKind, "logicalOrExpression");
5125
(*yynode)->expression = __node_104;
5133
(*yynode)->endToken = tokenStream->index() - 2;
5138
bool Parser::parseForExpr(ForExprAst **yynode)
5140
*yynode = create<ForExprAst>();
5142
(*yynode)->startToken = tokenStream->index() - 1;
5144
if (yytoken == Token_ARRAY
5145
|| yytoken == Token_ARRAY_CAST
5146
|| yytoken == Token_AT
5147
|| yytoken == Token_BACKTICK
5148
|| yytoken == Token_BANG
5149
|| yytoken == Token_BOOL_CAST
5150
|| yytoken == Token_CLASS_C
5151
|| yytoken == Token_CLONE
5152
|| yytoken == Token_CONSTANT_ENCAPSED_STRING
5153
|| yytoken == Token_DEC
5154
|| yytoken == Token_DNUMBER
5155
|| yytoken == Token_DOLLAR
5156
|| yytoken == Token_DOUBLE_CAST
5157
|| yytoken == Token_DOUBLE_QUOTE
5158
|| yytoken == Token_EMPTY
5159
|| yytoken == Token_EVAL
5160
|| yytoken == Token_EXIT
5161
|| yytoken == Token_FILE
5162
|| yytoken == Token_FUNC_C
5163
|| yytoken == Token_INC
5164
|| yytoken == Token_INCLUDE
5165
|| yytoken == Token_INCLUDE_ONCE
5166
|| yytoken == Token_INT_CAST
5167
|| yytoken == Token_ISSET
5168
|| yytoken == Token_LINE
5169
|| yytoken == Token_LIST
5170
|| yytoken == Token_LNUMBER
5171
|| yytoken == Token_LPAREN
5172
|| yytoken == Token_METHOD_C
5173
|| yytoken == Token_MINUS
5174
|| yytoken == Token_NEW
5175
|| yytoken == Token_OBJECT_CAST
5176
|| yytoken == Token_PLUS
5177
|| yytoken == Token_PRINT
5178
|| yytoken == Token_REQUIRE
5179
|| yytoken == Token_REQUIRE_ONCE
5180
|| yytoken == Token_START_HEREDOC
5181
|| yytoken == Token_STRING
5182
|| yytoken == Token_STRING_CAST
5183
|| yytoken == Token_STRING_VARNAME
5184
|| yytoken == Token_TILDE
5185
|| yytoken == Token_UNSET_CAST
5186
|| yytoken == Token_VARIABLE || yytoken == Token_EOF
5187
|| yytoken == Token_RPAREN
5188
|| yytoken == Token_SEMICOLON)
5190
if (yytoken == Token_ARRAY
5191
|| yytoken == Token_ARRAY_CAST
5192
|| yytoken == Token_AT
5193
|| yytoken == Token_BACKTICK
5194
|| yytoken == Token_BANG
5195
|| yytoken == Token_BOOL_CAST
5196
|| yytoken == Token_CLASS_C
5197
|| yytoken == Token_CLONE
5198
|| yytoken == Token_CONSTANT_ENCAPSED_STRING
5199
|| yytoken == Token_DEC
5200
|| yytoken == Token_DNUMBER
5201
|| yytoken == Token_DOLLAR
5202
|| yytoken == Token_DOUBLE_CAST
5203
|| yytoken == Token_DOUBLE_QUOTE
5204
|| yytoken == Token_EMPTY
5205
|| yytoken == Token_EVAL
5206
|| yytoken == Token_EXIT
5207
|| yytoken == Token_FILE
5208
|| yytoken == Token_FUNC_C
5209
|| yytoken == Token_INC
5210
|| yytoken == Token_INCLUDE
5211
|| yytoken == Token_INCLUDE_ONCE
5212
|| yytoken == Token_INT_CAST
5213
|| yytoken == Token_ISSET
5214
|| yytoken == Token_LINE
5215
|| yytoken == Token_LIST
5216
|| yytoken == Token_LNUMBER
5217
|| yytoken == Token_LPAREN
5218
|| yytoken == Token_METHOD_C
5219
|| yytoken == Token_MINUS
5220
|| yytoken == Token_NEW
5221
|| yytoken == Token_OBJECT_CAST
5222
|| yytoken == Token_PLUS
5223
|| yytoken == Token_PRINT
5224
|| yytoken == Token_REQUIRE
5225
|| yytoken == Token_REQUIRE_ONCE
5226
|| yytoken == Token_START_HEREDOC
5227
|| yytoken == Token_STRING
5228
|| yytoken == Token_STRING_CAST
5229
|| yytoken == Token_STRING_VARNAME
5230
|| yytoken == Token_TILDE
5231
|| yytoken == Token_UNSET_CAST
5232
|| yytoken == Token_VARIABLE)
5234
ExprAst *__node_105 = 0;
5235
if (!parseExpr(&__node_105))
5239
expectedSymbol(AstNode::ExprKind, "expr");
5243
(*yynode)->exprsSequence = snoc((*yynode)->exprsSequence, __node_105, memoryPool);
5245
while (yytoken == Token_COMMA)
5247
if (yytoken != Token_COMMA)
5251
expectedToken(yytoken, Token_COMMA, ",");
5257
ExprAst *__node_106 = 0;
5258
if (!parseExpr(&__node_106))
5262
expectedSymbol(AstNode::ExprKind, "expr");
5266
(*yynode)->exprsSequence = snoc((*yynode)->exprsSequence, __node_106, memoryPool);
5270
else if (true /*epsilon*/)
5283
(*yynode)->endToken = tokenStream->index() - 2;
5288
bool Parser::parseForStatement(ForStatementAst **yynode)
5290
*yynode = create<ForStatementAst>();
5292
(*yynode)->startToken = tokenStream->index() - 1;
5294
if (yytoken == Token_ARRAY
5295
|| yytoken == Token_ARRAY_CAST
5296
|| yytoken == Token_AT
5297
|| yytoken == Token_BACKTICK
5298
|| yytoken == Token_BANG
5299
|| yytoken == Token_BOOL_CAST
5300
|| yytoken == Token_BREAK
5301
|| yytoken == Token_CLASS_C
5302
|| yytoken == Token_CLONE
5303
|| yytoken == Token_CLOSE_TAG
5304
|| yytoken == Token_COLON
5305
|| yytoken == Token_CONSTANT_ENCAPSED_STRING
5306
|| yytoken == Token_CONTINUE
5307
|| yytoken == Token_DEC
5308
|| yytoken == Token_DECLARE
5309
|| yytoken == Token_DNUMBER
5310
|| yytoken == Token_DO
5311
|| yytoken == Token_DOLLAR
5312
|| yytoken == Token_DOUBLE_CAST
5313
|| yytoken == Token_DOUBLE_QUOTE
5314
|| yytoken == Token_ECHO
5315
|| yytoken == Token_EMPTY
5316
|| yytoken == Token_EVAL
5317
|| yytoken == Token_EXIT
5318
|| yytoken == Token_FILE
5319
|| yytoken == Token_FOR
5320
|| yytoken == Token_FOREACH
5321
|| yytoken == Token_FUNC_C
5322
|| yytoken == Token_GLOBAL
5323
|| yytoken == Token_IF
5324
|| yytoken == Token_INC
5325
|| yytoken == Token_INCLUDE
5326
|| yytoken == Token_INCLUDE_ONCE
5327
|| yytoken == Token_INLINE_HTML
5328
|| yytoken == Token_INT_CAST
5329
|| yytoken == Token_ISSET
5330
|| yytoken == Token_LBRACE
5331
|| yytoken == Token_LINE
5332
|| yytoken == Token_LIST
5333
|| yytoken == Token_LNUMBER
5334
|| yytoken == Token_LPAREN
5335
|| yytoken == Token_METHOD_C
5336
|| yytoken == Token_MINUS
5337
|| yytoken == Token_NEW
5338
|| yytoken == Token_OBJECT_CAST
5339
|| yytoken == Token_OPEN_TAG
5340
|| yytoken == Token_OPEN_TAG_WITH_ECHO
5341
|| yytoken == Token_PLUS
5342
|| yytoken == Token_PRINT
5343
|| yytoken == Token_REQUIRE
5344
|| yytoken == Token_REQUIRE_ONCE
5345
|| yytoken == Token_RETURN
5346
|| yytoken == Token_SEMICOLON
5347
|| yytoken == Token_START_HEREDOC
5348
|| yytoken == Token_STATIC
5349
|| yytoken == Token_STRING
5350
|| yytoken == Token_STRING_CAST
5351
|| yytoken == Token_STRING_VARNAME
5352
|| yytoken == Token_SWITCH
5353
|| yytoken == Token_THROW
5354
|| yytoken == Token_TILDE
5355
|| yytoken == Token_TRY
5356
|| yytoken == Token_UNSET
5357
|| yytoken == Token_UNSET_CAST
5358
|| yytoken == Token_VARIABLE
5359
|| yytoken == Token_WHILE)
5361
if (yytoken == Token_ARRAY
5362
|| yytoken == Token_ARRAY_CAST
5363
|| yytoken == Token_AT
5364
|| yytoken == Token_BACKTICK
5365
|| yytoken == Token_BANG
5366
|| yytoken == Token_BOOL_CAST
5367
|| yytoken == Token_BREAK
5368
|| yytoken == Token_CLASS_C
5369
|| yytoken == Token_CLONE
5370
|| yytoken == Token_CLOSE_TAG
5371
|| yytoken == Token_CONSTANT_ENCAPSED_STRING
5372
|| yytoken == Token_CONTINUE
5373
|| yytoken == Token_DEC
5374
|| yytoken == Token_DECLARE
5375
|| yytoken == Token_DNUMBER
5376
|| yytoken == Token_DO
5377
|| yytoken == Token_DOLLAR
5378
|| yytoken == Token_DOUBLE_CAST
5379
|| yytoken == Token_DOUBLE_QUOTE
5380
|| yytoken == Token_ECHO
5381
|| yytoken == Token_EMPTY
5382
|| yytoken == Token_EVAL
5383
|| yytoken == Token_EXIT
5384
|| yytoken == Token_FILE
5385
|| yytoken == Token_FOR
5386
|| yytoken == Token_FOREACH
5387
|| yytoken == Token_FUNC_C
5388
|| yytoken == Token_GLOBAL
5389
|| yytoken == Token_IF
5390
|| yytoken == Token_INC
5391
|| yytoken == Token_INCLUDE
5392
|| yytoken == Token_INCLUDE_ONCE
5393
|| yytoken == Token_INLINE_HTML
5394
|| yytoken == Token_INT_CAST
5395
|| yytoken == Token_ISSET
5396
|| yytoken == Token_LBRACE
5397
|| yytoken == Token_LINE
5398
|| yytoken == Token_LIST
5399
|| yytoken == Token_LNUMBER
5400
|| yytoken == Token_LPAREN
5401
|| yytoken == Token_METHOD_C
5402
|| yytoken == Token_MINUS
5403
|| yytoken == Token_NEW
5404
|| yytoken == Token_OBJECT_CAST
5405
|| yytoken == Token_OPEN_TAG
5406
|| yytoken == Token_OPEN_TAG_WITH_ECHO
5407
|| yytoken == Token_PLUS
5408
|| yytoken == Token_PRINT
5409
|| yytoken == Token_REQUIRE
5410
|| yytoken == Token_REQUIRE_ONCE
5411
|| yytoken == Token_RETURN
5412
|| yytoken == Token_SEMICOLON
5413
|| yytoken == Token_START_HEREDOC
5414
|| yytoken == Token_STATIC
5415
|| yytoken == Token_STRING
5416
|| yytoken == Token_STRING_CAST
5417
|| yytoken == Token_STRING_VARNAME
5418
|| yytoken == Token_SWITCH
5419
|| yytoken == Token_THROW
5420
|| yytoken == Token_TILDE
5421
|| yytoken == Token_TRY
5422
|| yytoken == Token_UNSET
5423
|| yytoken == Token_UNSET_CAST
5424
|| yytoken == Token_VARIABLE
5425
|| yytoken == Token_WHILE)
5427
StatementAst *__node_107 = 0;
5428
if (!parseStatement(&__node_107))
5432
expectedSymbol(AstNode::StatementKind, "statement");
5436
(*yynode)->statement = __node_107;
5439
else if (yytoken == Token_COLON)
5441
if (yytoken != Token_COLON)
5445
expectedToken(yytoken, Token_COLON, ":");
5451
InnerStatementListAst *__node_108 = 0;
5452
if (!parseInnerStatementList(&__node_108))
5456
expectedSymbol(AstNode::InnerStatementListKind, "innerStatementList");
5460
(*yynode)->statements = __node_108;
5462
if (yytoken != Token_ENDFOR)
5466
expectedToken(yytoken, Token_ENDFOR, "endfor");
5472
SemicolonOrCloseTagAst *__node_109 = 0;
5473
if (!parseSemicolonOrCloseTag(&__node_109))
5477
expectedSymbol(AstNode::SemicolonOrCloseTagKind, "semicolonOrCloseTag");
5492
(*yynode)->endToken = tokenStream->index() - 2;
5497
bool Parser::parseForeachStatement(ForeachStatementAst **yynode)
5499
*yynode = create<ForeachStatementAst>();
5501
(*yynode)->startToken = tokenStream->index() - 1;
5503
if (yytoken == Token_ARRAY
5504
|| yytoken == Token_ARRAY_CAST
5505
|| yytoken == Token_AT
5506
|| yytoken == Token_BACKTICK
5507
|| yytoken == Token_BANG
5508
|| yytoken == Token_BOOL_CAST
5509
|| yytoken == Token_BREAK
5510
|| yytoken == Token_CLASS_C
5511
|| yytoken == Token_CLONE
5512
|| yytoken == Token_CLOSE_TAG
5513
|| yytoken == Token_COLON
5514
|| yytoken == Token_CONSTANT_ENCAPSED_STRING
5515
|| yytoken == Token_CONTINUE
5516
|| yytoken == Token_DEC
5517
|| yytoken == Token_DECLARE
5518
|| yytoken == Token_DNUMBER
5519
|| yytoken == Token_DO
5520
|| yytoken == Token_DOLLAR
5521
|| yytoken == Token_DOUBLE_CAST
5522
|| yytoken == Token_DOUBLE_QUOTE
5523
|| yytoken == Token_ECHO
5524
|| yytoken == Token_EMPTY
5525
|| yytoken == Token_EVAL
5526
|| yytoken == Token_EXIT
5527
|| yytoken == Token_FILE
5528
|| yytoken == Token_FOR
5529
|| yytoken == Token_FOREACH
5530
|| yytoken == Token_FUNC_C
5531
|| yytoken == Token_GLOBAL
5532
|| yytoken == Token_IF
5533
|| yytoken == Token_INC
5534
|| yytoken == Token_INCLUDE
5535
|| yytoken == Token_INCLUDE_ONCE
5536
|| yytoken == Token_INLINE_HTML
5537
|| yytoken == Token_INT_CAST
5538
|| yytoken == Token_ISSET
5539
|| yytoken == Token_LBRACE
5540
|| yytoken == Token_LINE
5541
|| yytoken == Token_LIST
5542
|| yytoken == Token_LNUMBER
5543
|| yytoken == Token_LPAREN
5544
|| yytoken == Token_METHOD_C
5545
|| yytoken == Token_MINUS
5546
|| yytoken == Token_NEW
5547
|| yytoken == Token_OBJECT_CAST
5548
|| yytoken == Token_OPEN_TAG
5549
|| yytoken == Token_OPEN_TAG_WITH_ECHO
5550
|| yytoken == Token_PLUS
5551
|| yytoken == Token_PRINT
5552
|| yytoken == Token_REQUIRE
5553
|| yytoken == Token_REQUIRE_ONCE
5554
|| yytoken == Token_RETURN
5555
|| yytoken == Token_SEMICOLON
5556
|| yytoken == Token_START_HEREDOC
5557
|| yytoken == Token_STATIC
5558
|| yytoken == Token_STRING
5559
|| yytoken == Token_STRING_CAST
5560
|| yytoken == Token_STRING_VARNAME
5561
|| yytoken == Token_SWITCH
5562
|| yytoken == Token_THROW
5563
|| yytoken == Token_TILDE
5564
|| yytoken == Token_TRY
5565
|| yytoken == Token_UNSET
5566
|| yytoken == Token_UNSET_CAST
5567
|| yytoken == Token_VARIABLE
5568
|| yytoken == Token_WHILE)
5570
if (yytoken == Token_ARRAY
5571
|| yytoken == Token_ARRAY_CAST
5572
|| yytoken == Token_AT
5573
|| yytoken == Token_BACKTICK
5574
|| yytoken == Token_BANG
5575
|| yytoken == Token_BOOL_CAST
5576
|| yytoken == Token_BREAK
5577
|| yytoken == Token_CLASS_C
5578
|| yytoken == Token_CLONE
5579
|| yytoken == Token_CLOSE_TAG
5580
|| yytoken == Token_CONSTANT_ENCAPSED_STRING
5581
|| yytoken == Token_CONTINUE
5582
|| yytoken == Token_DEC
5583
|| yytoken == Token_DECLARE
5584
|| yytoken == Token_DNUMBER
5585
|| yytoken == Token_DO
5586
|| yytoken == Token_DOLLAR
5587
|| yytoken == Token_DOUBLE_CAST
5588
|| yytoken == Token_DOUBLE_QUOTE
5589
|| yytoken == Token_ECHO
5590
|| yytoken == Token_EMPTY
5591
|| yytoken == Token_EVAL
5592
|| yytoken == Token_EXIT
5593
|| yytoken == Token_FILE
5594
|| yytoken == Token_FOR
5595
|| yytoken == Token_FOREACH
5596
|| yytoken == Token_FUNC_C
5597
|| yytoken == Token_GLOBAL
5598
|| yytoken == Token_IF
5599
|| yytoken == Token_INC
5600
|| yytoken == Token_INCLUDE
5601
|| yytoken == Token_INCLUDE_ONCE
5602
|| yytoken == Token_INLINE_HTML
5603
|| yytoken == Token_INT_CAST
5604
|| yytoken == Token_ISSET
5605
|| yytoken == Token_LBRACE
5606
|| yytoken == Token_LINE
5607
|| yytoken == Token_LIST
5608
|| yytoken == Token_LNUMBER
5609
|| yytoken == Token_LPAREN
5610
|| yytoken == Token_METHOD_C
5611
|| yytoken == Token_MINUS
5612
|| yytoken == Token_NEW
5613
|| yytoken == Token_OBJECT_CAST
5614
|| yytoken == Token_OPEN_TAG
5615
|| yytoken == Token_OPEN_TAG_WITH_ECHO
5616
|| yytoken == Token_PLUS
5617
|| yytoken == Token_PRINT
5618
|| yytoken == Token_REQUIRE
5619
|| yytoken == Token_REQUIRE_ONCE
5620
|| yytoken == Token_RETURN
5621
|| yytoken == Token_SEMICOLON
5622
|| yytoken == Token_START_HEREDOC
5623
|| yytoken == Token_STATIC
5624
|| yytoken == Token_STRING
5625
|| yytoken == Token_STRING_CAST
5626
|| yytoken == Token_STRING_VARNAME
5627
|| yytoken == Token_SWITCH
5628
|| yytoken == Token_THROW
5629
|| yytoken == Token_TILDE
5630
|| yytoken == Token_TRY
5631
|| yytoken == Token_UNSET
5632
|| yytoken == Token_UNSET_CAST
5633
|| yytoken == Token_VARIABLE
5634
|| yytoken == Token_WHILE)
5636
StatementAst *__node_110 = 0;
5637
if (!parseStatement(&__node_110))
5641
expectedSymbol(AstNode::StatementKind, "statement");
5645
(*yynode)->statement = __node_110;
5648
else if (yytoken == Token_COLON)
5650
if (yytoken != Token_COLON)
5654
expectedToken(yytoken, Token_COLON, ":");
5660
InnerStatementListAst *__node_111 = 0;
5661
if (!parseInnerStatementList(&__node_111))
5665
expectedSymbol(AstNode::InnerStatementListKind, "innerStatementList");
5669
(*yynode)->statements = __node_111;
5671
if (yytoken != Token_ENDFOREACH)
5675
expectedToken(yytoken, Token_ENDFOREACH, "endforeach");
5681
SemicolonOrCloseTagAst *__node_112 = 0;
5682
if (!parseSemicolonOrCloseTag(&__node_112))
5686
expectedSymbol(AstNode::SemicolonOrCloseTagKind, "semicolonOrCloseTag");
5701
(*yynode)->endToken = tokenStream->index() - 2;
5706
bool Parser::parseForeachVariable(ForeachVariableAst **yynode)
5708
*yynode = create<ForeachVariableAst>();
5710
(*yynode)->startToken = tokenStream->index() - 1;
5712
if (yytoken == Token_BIT_AND
5713
|| yytoken == Token_VARIABLE)
5715
if (yytoken == Token_BIT_AND)
5717
if (yytoken != Token_BIT_AND)
5721
expectedToken(yytoken, Token_BIT_AND, "&");
5728
else if (true /*epsilon*/)
5735
VariableIdentifierAst *__node_113 = 0;
5736
if (!parseVariableIdentifier(&__node_113))
5740
expectedSymbol(AstNode::VariableIdentifierKind, "variableIdentifier");
5744
(*yynode)->variable = __node_113;
5752
(*yynode)->endToken = tokenStream->index() - 2;
5757
bool Parser::parseFunctionCall(FunctionCallAst **yynode)
5759
*yynode = create<FunctionCallAst>();
5761
(*yynode)->startToken = tokenStream->index() - 1;
5763
if (yytoken == Token_DOLLAR
5764
|| yytoken == Token_STRING
5765
|| yytoken == Token_VARIABLE)
5767
if (yytoken == Token_STRING)
5769
IdentifierAst *__node_114 = 0;
5770
if (!parseIdentifier(&__node_114))
5774
expectedSymbol(AstNode::IdentifierKind, "identifier");
5778
(*yynode)->stringFunctionNameOrClass = __node_114;
5780
if (yytoken == Token_LPAREN)
5782
if (yytoken != Token_LPAREN)
5786
expectedToken(yytoken, Token_LPAREN, "(");
5792
FunctionCallParameterListAst *__node_115 = 0;
5793
if (!parseFunctionCallParameterList(&__node_115))
5797
expectedSymbol(AstNode::FunctionCallParameterListKind, "functionCallParameterList");
5801
(*yynode)->stringParameterList = __node_115;
5803
if (yytoken != Token_RPAREN)
5807
expectedToken(yytoken, Token_RPAREN, ")");
5814
else if (yytoken == Token_PAAMAYIM_NEKUDOTAYIM)
5816
if (yytoken != Token_PAAMAYIM_NEKUDOTAYIM)
5820
expectedToken(yytoken, Token_PAAMAYIM_NEKUDOTAYIM, "::");
5826
if (yytoken == Token_STRING)
5828
IdentifierAst *__node_116 = 0;
5829
if (!parseIdentifier(&__node_116))
5833
expectedSymbol(AstNode::IdentifierKind, "identifier");
5837
(*yynode)->stringFunctionName = __node_116;
5839
if (yytoken != Token_LPAREN)
5843
expectedToken(yytoken, Token_LPAREN, "(");
5849
FunctionCallParameterListAst *__node_117 = 0;
5850
if (!parseFunctionCallParameterList(&__node_117))
5854
expectedSymbol(AstNode::FunctionCallParameterListKind, "functionCallParameterList");
5858
(*yynode)->stringParameterList = __node_117;
5860
if (yytoken != Token_RPAREN)
5864
expectedToken(yytoken, Token_RPAREN, ")");
5871
else if (yytoken == Token_DOLLAR
5872
|| yytoken == Token_VARIABLE)
5874
VariableWithoutObjectsAst *__node_118 = 0;
5875
if (!parseVariableWithoutObjects(&__node_118))
5879
expectedSymbol(AstNode::VariableWithoutObjectsKind, "variableWithoutObjects");
5883
(*yynode)->varFunctionName = __node_118;
5885
if (yytoken != Token_LPAREN)
5889
expectedToken(yytoken, Token_LPAREN, "(");
5895
FunctionCallParameterListAst *__node_119 = 0;
5896
if (!parseFunctionCallParameterList(&__node_119))
5900
expectedSymbol(AstNode::FunctionCallParameterListKind, "functionCallParameterList");
5904
(*yynode)->stringParameterList = __node_119;
5906
if (yytoken != Token_RPAREN)
5910
expectedToken(yytoken, Token_RPAREN, ")");
5927
else if (yytoken == Token_DOLLAR
5928
|| yytoken == Token_VARIABLE)
5930
VariableWithoutObjectsAst *__node_120 = 0;
5931
if (!parseVariableWithoutObjects(&__node_120))
5935
expectedSymbol(AstNode::VariableWithoutObjectsKind, "variableWithoutObjects");
5939
(*yynode)->varFunctionName = __node_120;
5941
if (yytoken != Token_LPAREN)
5945
expectedToken(yytoken, Token_LPAREN, "(");
5951
FunctionCallParameterListAst *__node_121 = 0;
5952
if (!parseFunctionCallParameterList(&__node_121))
5956
expectedSymbol(AstNode::FunctionCallParameterListKind, "functionCallParameterList");
5960
(*yynode)->varParameterList = __node_121;
5962
if (yytoken != Token_RPAREN)
5966
expectedToken(yytoken, Token_RPAREN, ")");
5983
(*yynode)->endToken = tokenStream->index() - 2;
5988
bool Parser::parseFunctionCallParameterList(FunctionCallParameterListAst **yynode)
5990
*yynode = create<FunctionCallParameterListAst>();
5992
(*yynode)->startToken = tokenStream->index() - 1;
5994
if (yytoken == Token_ARRAY
5995
|| yytoken == Token_ARRAY_CAST
5996
|| yytoken == Token_AT
5997
|| yytoken == Token_BACKTICK
5998
|| yytoken == Token_BANG
5999
|| yytoken == Token_BIT_AND
6000
|| yytoken == Token_BOOL_CAST
6001
|| yytoken == Token_CLASS_C
6002
|| yytoken == Token_CLONE
6003
|| yytoken == Token_CONSTANT_ENCAPSED_STRING
6004
|| yytoken == Token_DEC
6005
|| yytoken == Token_DNUMBER
6006
|| yytoken == Token_DOLLAR
6007
|| yytoken == Token_DOUBLE_CAST
6008
|| yytoken == Token_DOUBLE_QUOTE
6009
|| yytoken == Token_EMPTY
6010
|| yytoken == Token_EVAL
6011
|| yytoken == Token_EXIT
6012
|| yytoken == Token_FILE
6013
|| yytoken == Token_FUNC_C
6014
|| yytoken == Token_INC
6015
|| yytoken == Token_INCLUDE
6016
|| yytoken == Token_INCLUDE_ONCE
6017
|| yytoken == Token_INT_CAST
6018
|| yytoken == Token_ISSET
6019
|| yytoken == Token_LINE
6020
|| yytoken == Token_LIST
6021
|| yytoken == Token_LNUMBER
6022
|| yytoken == Token_LPAREN
6023
|| yytoken == Token_METHOD_C
6024
|| yytoken == Token_MINUS
6025
|| yytoken == Token_NEW
6026
|| yytoken == Token_OBJECT_CAST
6027
|| yytoken == Token_PLUS
6028
|| yytoken == Token_PRINT
6029
|| yytoken == Token_REQUIRE
6030
|| yytoken == Token_REQUIRE_ONCE
6031
|| yytoken == Token_START_HEREDOC
6032
|| yytoken == Token_STRING
6033
|| yytoken == Token_STRING_CAST
6034
|| yytoken == Token_STRING_VARNAME
6035
|| yytoken == Token_TILDE
6036
|| yytoken == Token_UNSET_CAST
6037
|| yytoken == Token_VARIABLE || yytoken == Token_EOF
6038
|| yytoken == Token_RPAREN)
6040
if (yytoken == Token_ARRAY
6041
|| yytoken == Token_ARRAY_CAST
6042
|| yytoken == Token_AT
6043
|| yytoken == Token_BACKTICK
6044
|| yytoken == Token_BANG
6045
|| yytoken == Token_BIT_AND
6046
|| yytoken == Token_BOOL_CAST
6047
|| yytoken == Token_CLASS_C
6048
|| yytoken == Token_CLONE
6049
|| yytoken == Token_CONSTANT_ENCAPSED_STRING
6050
|| yytoken == Token_DEC
6051
|| yytoken == Token_DNUMBER
6052
|| yytoken == Token_DOLLAR
6053
|| yytoken == Token_DOUBLE_CAST
6054
|| yytoken == Token_DOUBLE_QUOTE
6055
|| yytoken == Token_EMPTY
6056
|| yytoken == Token_EVAL
6057
|| yytoken == Token_EXIT
6058
|| yytoken == Token_FILE
6059
|| yytoken == Token_FUNC_C
6060
|| yytoken == Token_INC
6061
|| yytoken == Token_INCLUDE
6062
|| yytoken == Token_INCLUDE_ONCE
6063
|| yytoken == Token_INT_CAST
6064
|| yytoken == Token_ISSET
6065
|| yytoken == Token_LINE
6066
|| yytoken == Token_LIST
6067
|| yytoken == Token_LNUMBER
6068
|| yytoken == Token_LPAREN
6069
|| yytoken == Token_METHOD_C
6070
|| yytoken == Token_MINUS
6071
|| yytoken == Token_NEW
6072
|| yytoken == Token_OBJECT_CAST
6073
|| yytoken == Token_PLUS
6074
|| yytoken == Token_PRINT
6075
|| yytoken == Token_REQUIRE
6076
|| yytoken == Token_REQUIRE_ONCE
6077
|| yytoken == Token_START_HEREDOC
6078
|| yytoken == Token_STRING
6079
|| yytoken == Token_STRING_CAST
6080
|| yytoken == Token_STRING_VARNAME
6081
|| yytoken == Token_TILDE
6082
|| yytoken == Token_UNSET_CAST
6083
|| yytoken == Token_VARIABLE)
6085
FunctionCallParameterListElementAst *__node_122 = 0;
6086
if (!parseFunctionCallParameterListElement(&__node_122))
6090
expectedSymbol(AstNode::FunctionCallParameterListElementKind, "functionCallParameterListElement");
6094
(*yynode)->parametersSequence = snoc((*yynode)->parametersSequence, __node_122, memoryPool);
6096
while (yytoken == Token_COMMA)
6098
if (yytoken != Token_COMMA)
6102
expectedToken(yytoken, Token_COMMA, ",");
6108
FunctionCallParameterListElementAst *__node_123 = 0;
6109
if (!parseFunctionCallParameterListElement(&__node_123))
6113
expectedSymbol(AstNode::FunctionCallParameterListElementKind, "functionCallParameterListElement");
6117
(*yynode)->parametersSequence = snoc((*yynode)->parametersSequence, __node_123, memoryPool);
6121
else if (true /*epsilon*/)
6134
(*yynode)->endToken = tokenStream->index() - 2;
6139
bool Parser::parseFunctionCallParameterListElement(FunctionCallParameterListElementAst **yynode)
6141
*yynode = create<FunctionCallParameterListElementAst>();
6143
(*yynode)->startToken = tokenStream->index() - 1;
6145
if (yytoken == Token_ARRAY
6146
|| yytoken == Token_ARRAY_CAST
6147
|| yytoken == Token_AT
6148
|| yytoken == Token_BACKTICK
6149
|| yytoken == Token_BANG
6150
|| yytoken == Token_BIT_AND
6151
|| yytoken == Token_BOOL_CAST
6152
|| yytoken == Token_CLASS_C
6153
|| yytoken == Token_CLONE
6154
|| yytoken == Token_CONSTANT_ENCAPSED_STRING
6155
|| yytoken == Token_DEC
6156
|| yytoken == Token_DNUMBER
6157
|| yytoken == Token_DOLLAR
6158
|| yytoken == Token_DOUBLE_CAST
6159
|| yytoken == Token_DOUBLE_QUOTE
6160
|| yytoken == Token_EMPTY
6161
|| yytoken == Token_EVAL
6162
|| yytoken == Token_EXIT
6163
|| yytoken == Token_FILE
6164
|| yytoken == Token_FUNC_C
6165
|| yytoken == Token_INC
6166
|| yytoken == Token_INCLUDE
6167
|| yytoken == Token_INCLUDE_ONCE
6168
|| yytoken == Token_INT_CAST
6169
|| yytoken == Token_ISSET
6170
|| yytoken == Token_LINE
6171
|| yytoken == Token_LIST
6172
|| yytoken == Token_LNUMBER
6173
|| yytoken == Token_LPAREN
6174
|| yytoken == Token_METHOD_C
6175
|| yytoken == Token_MINUS
6176
|| yytoken == Token_NEW
6177
|| yytoken == Token_OBJECT_CAST
6178
|| yytoken == Token_PLUS
6179
|| yytoken == Token_PRINT
6180
|| yytoken == Token_REQUIRE
6181
|| yytoken == Token_REQUIRE_ONCE
6182
|| yytoken == Token_START_HEREDOC
6183
|| yytoken == Token_STRING
6184
|| yytoken == Token_STRING_CAST
6185
|| yytoken == Token_STRING_VARNAME
6186
|| yytoken == Token_TILDE
6187
|| yytoken == Token_UNSET_CAST
6188
|| yytoken == Token_VARIABLE)
6190
if (yytoken == Token_BIT_AND)
6192
if (yytoken != Token_BIT_AND)
6196
expectedToken(yytoken, Token_BIT_AND, "&");
6202
VariableAst *__node_124 = 0;
6203
if (!parseVariable(&__node_124))
6207
expectedSymbol(AstNode::VariableKind, "variable");
6211
(*yynode)->variable = __node_124;
6214
else if (yytoken == Token_ARRAY
6215
|| yytoken == Token_ARRAY_CAST
6216
|| yytoken == Token_AT
6217
|| yytoken == Token_BACKTICK
6218
|| yytoken == Token_BANG
6219
|| yytoken == Token_BOOL_CAST
6220
|| yytoken == Token_CLASS_C
6221
|| yytoken == Token_CLONE
6222
|| yytoken == Token_CONSTANT_ENCAPSED_STRING
6223
|| yytoken == Token_DEC
6224
|| yytoken == Token_DNUMBER
6225
|| yytoken == Token_DOLLAR
6226
|| yytoken == Token_DOUBLE_CAST
6227
|| yytoken == Token_DOUBLE_QUOTE
6228
|| yytoken == Token_EMPTY
6229
|| yytoken == Token_EVAL
6230
|| yytoken == Token_EXIT
6231
|| yytoken == Token_FILE
6232
|| yytoken == Token_FUNC_C
6233
|| yytoken == Token_INC
6234
|| yytoken == Token_INCLUDE
6235
|| yytoken == Token_INCLUDE_ONCE
6236
|| yytoken == Token_INT_CAST
6237
|| yytoken == Token_ISSET
6238
|| yytoken == Token_LINE
6239
|| yytoken == Token_LIST
6240
|| yytoken == Token_LNUMBER
6241
|| yytoken == Token_LPAREN
6242
|| yytoken == Token_METHOD_C
6243
|| yytoken == Token_MINUS
6244
|| yytoken == Token_NEW
6245
|| yytoken == Token_OBJECT_CAST
6246
|| yytoken == Token_PLUS
6247
|| yytoken == Token_PRINT
6248
|| yytoken == Token_REQUIRE
6249
|| yytoken == Token_REQUIRE_ONCE
6250
|| yytoken == Token_START_HEREDOC
6251
|| yytoken == Token_STRING
6252
|| yytoken == Token_STRING_CAST
6253
|| yytoken == Token_STRING_VARNAME
6254
|| yytoken == Token_TILDE
6255
|| yytoken == Token_UNSET_CAST
6256
|| yytoken == Token_VARIABLE)
6258
ExprAst *__node_125 = 0;
6259
if (!parseExpr(&__node_125))
6263
expectedSymbol(AstNode::ExprKind, "expr");
6267
(*yynode)->expr = __node_125;
6280
(*yynode)->endToken = tokenStream->index() - 2;
6285
bool Parser::parseFunctionDeclarationStatement(FunctionDeclarationStatementAst **yynode)
6287
*yynode = create<FunctionDeclarationStatementAst>();
6289
(*yynode)->startToken = tokenStream->index() - 1;
6291
if (yytoken == Token_FUNCTION)
6293
if (yytoken != Token_FUNCTION)
6297
expectedToken(yytoken, Token_FUNCTION, "function");
6303
if (yytoken == Token_BIT_AND)
6305
if (yytoken != Token_BIT_AND)
6309
expectedToken(yytoken, Token_BIT_AND, "&");
6316
else if (true /*epsilon*/)
6323
IdentifierAst *__node_126 = 0;
6324
if (!parseIdentifier(&__node_126))
6328
expectedSymbol(AstNode::IdentifierKind, "identifier");
6332
(*yynode)->functionName = __node_126;
6334
if (yytoken != Token_LPAREN)
6338
expectedToken(yytoken, Token_LPAREN, "(");
6344
ParameterListAst *__node_127 = 0;
6345
if (!parseParameterList(&__node_127))
6349
expectedSymbol(AstNode::ParameterListKind, "parameterList");
6353
(*yynode)->parameters = __node_127;
6355
if (yytoken != Token_RPAREN)
6359
expectedToken(yytoken, Token_RPAREN, ")");
6365
if (yytoken != Token_LBRACE)
6369
expectedToken(yytoken, Token_LBRACE, "{");
6375
InnerStatementListAst *__node_128 = 0;
6376
if (!parseInnerStatementList(&__node_128))
6380
expectedSymbol(AstNode::InnerStatementListKind, "innerStatementList");
6384
(*yynode)->functionBody = __node_128;
6386
if (yytoken != Token_RBRACE)
6390
expectedToken(yytoken, Token_RBRACE, "}");
6402
(*yynode)->endToken = tokenStream->index() - 2;
6407
bool Parser::parseGlobalVar(GlobalVarAst **yynode)
6409
*yynode = create<GlobalVarAst>();
6411
(*yynode)->startToken = tokenStream->index() - 1;
6413
if (yytoken == Token_DOLLAR
6414
|| yytoken == Token_VARIABLE)
6416
if (yytoken == Token_VARIABLE)
6418
VariableIdentifierAst *__node_129 = 0;
6419
if (!parseVariableIdentifier(&__node_129))
6423
expectedSymbol(AstNode::VariableIdentifierKind, "variableIdentifier");
6427
(*yynode)->var = __node_129;
6430
else if (yytoken == Token_DOLLAR)
6432
if (yytoken != Token_DOLLAR)
6436
expectedToken(yytoken, Token_DOLLAR, "$");
6442
if (yytoken == Token_DOLLAR
6443
|| yytoken == Token_STRING
6444
|| yytoken == Token_VARIABLE)
6446
VariableAst *__node_130 = 0;
6447
if (!parseVariable(&__node_130))
6451
expectedSymbol(AstNode::VariableKind, "variable");
6455
(*yynode)->dollarVar = __node_130;
6458
else if (yytoken == Token_LBRACE)
6460
if (yytoken != Token_LBRACE)
6464
expectedToken(yytoken, Token_LBRACE, "{");
6470
ExprAst *__node_131 = 0;
6471
if (!parseExpr(&__node_131))
6475
expectedSymbol(AstNode::ExprKind, "expr");
6479
(*yynode)->expr = __node_131;
6481
if (yytoken != Token_RBRACE)
6485
expectedToken(yytoken, Token_RBRACE, "}");
6507
(*yynode)->endToken = tokenStream->index() - 2;
6512
bool Parser::parseIdentifier(IdentifierAst **yynode)
6514
*yynode = create<IdentifierAst>();
6516
(*yynode)->startToken = tokenStream->index() - 1;
6517
(*yynode)->string = -1;
6519
if (yytoken == Token_STRING)
6521
if (yytoken != Token_STRING)
6525
expectedToken(yytoken, Token_STRING, "string");
6529
(*yynode)->string = tokenStream->index() - 1;
6538
(*yynode)->endToken = tokenStream->index() - 2;
6543
bool Parser::parseInnerStatementList(InnerStatementListAst **yynode)
6545
*yynode = create<InnerStatementListAst>();
6547
(*yynode)->startToken = tokenStream->index() - 1;
6549
if (yytoken == Token_ABSTRACT
6550
|| yytoken == Token_ARRAY
6551
|| yytoken == Token_ARRAY_CAST
6552
|| yytoken == Token_AT
6553
|| yytoken == Token_BACKTICK
6554
|| yytoken == Token_BANG
6555
|| yytoken == Token_BOOL_CAST
6556
|| yytoken == Token_BREAK
6557
|| yytoken == Token_CLASS
6558
|| yytoken == Token_CLASS_C
6559
|| yytoken == Token_CLONE
6560
|| yytoken == Token_CLOSE_TAG
6561
|| yytoken == Token_CONSTANT_ENCAPSED_STRING
6562
|| yytoken == Token_CONTINUE
6563
|| yytoken == Token_DEC
6564
|| yytoken == Token_DECLARE
6565
|| yytoken == Token_DNUMBER
6566
|| yytoken == Token_DO
6567
|| yytoken == Token_DOLLAR
6568
|| yytoken == Token_DOUBLE_CAST
6569
|| yytoken == Token_DOUBLE_QUOTE
6570
|| yytoken == Token_ECHO
6571
|| yytoken == Token_EMPTY
6572
|| yytoken == Token_EVAL
6573
|| yytoken == Token_EXIT
6574
|| yytoken == Token_FILE
6575
|| yytoken == Token_FINAL
6576
|| yytoken == Token_FOR
6577
|| yytoken == Token_FOREACH
6578
|| yytoken == Token_FUNCTION
6579
|| yytoken == Token_FUNC_C
6580
|| yytoken == Token_GLOBAL
6581
|| yytoken == Token_HALT_COMPILER
6582
|| yytoken == Token_IF
6583
|| yytoken == Token_INC
6584
|| yytoken == Token_INCLUDE
6585
|| yytoken == Token_INCLUDE_ONCE
6586
|| yytoken == Token_INLINE_HTML
6587
|| yytoken == Token_INTERFACE
6588
|| yytoken == Token_INT_CAST
6589
|| yytoken == Token_ISSET
6590
|| yytoken == Token_LBRACE
6591
|| yytoken == Token_LINE
6592
|| yytoken == Token_LIST
6593
|| yytoken == Token_LNUMBER
6594
|| yytoken == Token_LPAREN
6595
|| yytoken == Token_METHOD_C
6596
|| yytoken == Token_MINUS
6597
|| yytoken == Token_NEW
6598
|| yytoken == Token_OBJECT_CAST
6599
|| yytoken == Token_OPEN_TAG
6600
|| yytoken == Token_OPEN_TAG_WITH_ECHO
6601
|| yytoken == Token_PLUS
6602
|| yytoken == Token_PRINT
6603
|| yytoken == Token_REQUIRE
6604
|| yytoken == Token_REQUIRE_ONCE
6605
|| yytoken == Token_RETURN
6606
|| yytoken == Token_SEMICOLON
6607
|| yytoken == Token_START_HEREDOC
6608
|| yytoken == Token_STATIC
6609
|| yytoken == Token_STRING
6610
|| yytoken == Token_STRING_CAST
6611
|| yytoken == Token_STRING_VARNAME
6612
|| yytoken == Token_SWITCH
6613
|| yytoken == Token_THROW
6614
|| yytoken == Token_TILDE
6615
|| yytoken == Token_TRY
6616
|| yytoken == Token_UNSET
6617
|| yytoken == Token_UNSET_CAST
6618
|| yytoken == Token_VARIABLE
6619
|| yytoken == Token_WHILE || yytoken == Token_CASE
6620
|| yytoken == Token_DEFAULT
6621
|| yytoken == Token_ELSE
6622
|| yytoken == Token_ELSEIF
6623
|| yytoken == Token_ENDDECLARE
6624
|| yytoken == Token_ENDFOR
6625
|| yytoken == Token_ENDFOREACH
6626
|| yytoken == Token_ENDIF
6627
|| yytoken == Token_ENDSWITCH
6628
|| yytoken == Token_ENDWHILE
6629
|| yytoken == Token_EOF
6630
|| yytoken == Token_RBRACE)
6632
while (yytoken == Token_ABSTRACT
6633
|| yytoken == Token_ARRAY
6634
|| yytoken == Token_ARRAY_CAST
6635
|| yytoken == Token_AT
6636
|| yytoken == Token_BACKTICK
6637
|| yytoken == Token_BANG
6638
|| yytoken == Token_BOOL_CAST
6639
|| yytoken == Token_BREAK
6640
|| yytoken == Token_CLASS
6641
|| yytoken == Token_CLASS_C
6642
|| yytoken == Token_CLONE
6643
|| yytoken == Token_CLOSE_TAG
6644
|| yytoken == Token_CONSTANT_ENCAPSED_STRING
6645
|| yytoken == Token_CONTINUE
6646
|| yytoken == Token_DEC
6647
|| yytoken == Token_DECLARE
6648
|| yytoken == Token_DNUMBER
6649
|| yytoken == Token_DO
6650
|| yytoken == Token_DOLLAR
6651
|| yytoken == Token_DOUBLE_CAST
6652
|| yytoken == Token_DOUBLE_QUOTE
6653
|| yytoken == Token_ECHO
6654
|| yytoken == Token_EMPTY
6655
|| yytoken == Token_EVAL
6656
|| yytoken == Token_EXIT
6657
|| yytoken == Token_FILE
6658
|| yytoken == Token_FINAL
6659
|| yytoken == Token_FOR
6660
|| yytoken == Token_FOREACH
6661
|| yytoken == Token_FUNCTION
6662
|| yytoken == Token_FUNC_C
6663
|| yytoken == Token_GLOBAL
6664
|| yytoken == Token_HALT_COMPILER
6665
|| yytoken == Token_IF
6666
|| yytoken == Token_INC
6667
|| yytoken == Token_INCLUDE
6668
|| yytoken == Token_INCLUDE_ONCE
6669
|| yytoken == Token_INLINE_HTML
6670
|| yytoken == Token_INTERFACE
6671
|| yytoken == Token_INT_CAST
6672
|| yytoken == Token_ISSET
6673
|| yytoken == Token_LBRACE
6674
|| yytoken == Token_LINE
6675
|| yytoken == Token_LIST
6676
|| yytoken == Token_LNUMBER
6677
|| yytoken == Token_LPAREN
6678
|| yytoken == Token_METHOD_C
6679
|| yytoken == Token_MINUS
6680
|| yytoken == Token_NEW
6681
|| yytoken == Token_OBJECT_CAST
6682
|| yytoken == Token_OPEN_TAG
6683
|| yytoken == Token_OPEN_TAG_WITH_ECHO
6684
|| yytoken == Token_PLUS
6685
|| yytoken == Token_PRINT
6686
|| yytoken == Token_REQUIRE
6687
|| yytoken == Token_REQUIRE_ONCE
6688
|| yytoken == Token_RETURN
6689
|| yytoken == Token_SEMICOLON
6690
|| yytoken == Token_START_HEREDOC
6691
|| yytoken == Token_STATIC
6692
|| yytoken == Token_STRING
6693
|| yytoken == Token_STRING_CAST
6694
|| yytoken == Token_STRING_VARNAME
6695
|| yytoken == Token_SWITCH
6696
|| yytoken == Token_THROW
6697
|| yytoken == Token_TILDE
6698
|| yytoken == Token_TRY
6699
|| yytoken == Token_UNSET
6700
|| yytoken == Token_UNSET_CAST
6701
|| yytoken == Token_VARIABLE
6702
|| yytoken == Token_WHILE)
6704
TopStatementAst *__node_132 = 0;
6705
if (!parseTopStatement(&__node_132))
6709
expectedSymbol(AstNode::TopStatementKind, "topStatement");
6713
(*yynode)->statementsSequence = snoc((*yynode)->statementsSequence, __node_132, memoryPool);
6722
(*yynode)->endToken = tokenStream->index() - 2;
6727
bool Parser::parseInterfaceDeclarationStatement(InterfaceDeclarationStatementAst **yynode)
6729
*yynode = create<InterfaceDeclarationStatementAst>();
6731
(*yynode)->startToken = tokenStream->index() - 1;
6733
if (yytoken == Token_INTERFACE)
6735
if (yytoken != Token_INTERFACE)
6739
expectedToken(yytoken, Token_INTERFACE, "interface");
6745
IdentifierAst *__node_133 = 0;
6746
if (!parseIdentifier(&__node_133))
6750
expectedSymbol(AstNode::IdentifierKind, "identifier");
6754
(*yynode)->interfaceName = __node_133;
6756
if (yytoken == Token_EXTENDS)
6758
if (yytoken != Token_EXTENDS)
6762
expectedToken(yytoken, Token_EXTENDS, "extends");
6768
ClassImplementsAst *__node_134 = 0;
6769
if (!parseClassImplements(&__node_134))
6773
expectedSymbol(AstNode::ClassImplementsKind, "classImplements");
6777
(*yynode)->extends = __node_134;
6780
else if (true /*epsilon*/)
6787
if (yytoken != Token_LBRACE)
6791
expectedToken(yytoken, Token_LBRACE, "{");
6797
ClassBodyAst *__node_135 = 0;
6798
if (!parseClassBody(&__node_135))
6802
expectedSymbol(AstNode::ClassBodyKind, "classBody");
6806
(*yynode)->body = __node_135;
6808
if (yytoken != Token_RBRACE)
6812
expectedToken(yytoken, Token_RBRACE, "}");
6824
(*yynode)->endToken = tokenStream->index() - 2;
6829
bool Parser::parseLogicalAndExpression(LogicalAndExpressionAst **yynode)
6831
*yynode = create<LogicalAndExpressionAst>();
6833
(*yynode)->startToken = tokenStream->index() - 1;
6835
if (yytoken == Token_ARRAY
6836
|| yytoken == Token_ARRAY_CAST
6837
|| yytoken == Token_AT
6838
|| yytoken == Token_BACKTICK
6839
|| yytoken == Token_BANG
6840
|| yytoken == Token_BOOL_CAST
6841
|| yytoken == Token_CLASS_C
6842
|| yytoken == Token_CLONE
6843
|| yytoken == Token_CONSTANT_ENCAPSED_STRING
6844
|| yytoken == Token_DEC
6845
|| yytoken == Token_DNUMBER
6846
|| yytoken == Token_DOLLAR
6847
|| yytoken == Token_DOUBLE_CAST
6848
|| yytoken == Token_DOUBLE_QUOTE
6849
|| yytoken == Token_EMPTY
6850
|| yytoken == Token_EVAL
6851
|| yytoken == Token_EXIT
6852
|| yytoken == Token_FILE
6853
|| yytoken == Token_FUNC_C
6854
|| yytoken == Token_INC
6855
|| yytoken == Token_INCLUDE
6856
|| yytoken == Token_INCLUDE_ONCE
6857
|| yytoken == Token_INT_CAST
6858
|| yytoken == Token_ISSET
6859
|| yytoken == Token_LINE
6860
|| yytoken == Token_LIST
6861
|| yytoken == Token_LNUMBER
6862
|| yytoken == Token_LPAREN
6863
|| yytoken == Token_METHOD_C
6864
|| yytoken == Token_MINUS
6865
|| yytoken == Token_NEW
6866
|| yytoken == Token_OBJECT_CAST
6867
|| yytoken == Token_PLUS
6868
|| yytoken == Token_PRINT
6869
|| yytoken == Token_REQUIRE
6870
|| yytoken == Token_REQUIRE_ONCE
6871
|| yytoken == Token_START_HEREDOC
6872
|| yytoken == Token_STRING
6873
|| yytoken == Token_STRING_CAST
6874
|| yytoken == Token_STRING_VARNAME
6875
|| yytoken == Token_TILDE
6876
|| yytoken == Token_UNSET_CAST
6877
|| yytoken == Token_VARIABLE)
6879
PrintExpressionAst *__node_136 = 0;
6880
if (!parsePrintExpression(&__node_136))
6884
expectedSymbol(AstNode::PrintExpressionKind, "printExpression");
6888
(*yynode)->expressionSequence = snoc((*yynode)->expressionSequence, __node_136, memoryPool);
6890
while (yytoken == Token_LOGICAL_AND)
6892
if (yytoken != Token_LOGICAL_AND)
6896
expectedToken(yytoken, Token_LOGICAL_AND, "logical and");
6902
PrintExpressionAst *__node_137 = 0;
6903
if (!parsePrintExpression(&__node_137))
6907
expectedSymbol(AstNode::PrintExpressionKind, "printExpression");
6911
(*yynode)->expressionSequence = snoc((*yynode)->expressionSequence, __node_137, memoryPool);
6920
(*yynode)->endToken = tokenStream->index() - 2;
6925
bool Parser::parseLogicalOrExpression(LogicalOrExpressionAst **yynode)
6927
*yynode = create<LogicalOrExpressionAst>();
6929
(*yynode)->startToken = tokenStream->index() - 1;
6931
if (yytoken == Token_ARRAY
6932
|| yytoken == Token_ARRAY_CAST
6933
|| yytoken == Token_AT
6934
|| yytoken == Token_BACKTICK
6935
|| yytoken == Token_BANG
6936
|| yytoken == Token_BOOL_CAST
6937
|| yytoken == Token_CLASS_C
6938
|| yytoken == Token_CLONE
6939
|| yytoken == Token_CONSTANT_ENCAPSED_STRING
6940
|| yytoken == Token_DEC
6941
|| yytoken == Token_DNUMBER
6942
|| yytoken == Token_DOLLAR
6943
|| yytoken == Token_DOUBLE_CAST
6944
|| yytoken == Token_DOUBLE_QUOTE
6945
|| yytoken == Token_EMPTY
6946
|| yytoken == Token_EVAL
6947
|| yytoken == Token_EXIT
6948
|| yytoken == Token_FILE
6949
|| yytoken == Token_FUNC_C
6950
|| yytoken == Token_INC
6951
|| yytoken == Token_INCLUDE
6952
|| yytoken == Token_INCLUDE_ONCE
6953
|| yytoken == Token_INT_CAST
6954
|| yytoken == Token_ISSET
6955
|| yytoken == Token_LINE
6956
|| yytoken == Token_LIST
6957
|| yytoken == Token_LNUMBER
6958
|| yytoken == Token_LPAREN
6959
|| yytoken == Token_METHOD_C
6960
|| yytoken == Token_MINUS
6961
|| yytoken == Token_NEW
6962
|| yytoken == Token_OBJECT_CAST
6963
|| yytoken == Token_PLUS
6964
|| yytoken == Token_PRINT
6965
|| yytoken == Token_REQUIRE
6966
|| yytoken == Token_REQUIRE_ONCE
6967
|| yytoken == Token_START_HEREDOC
6968
|| yytoken == Token_STRING
6969
|| yytoken == Token_STRING_CAST
6970
|| yytoken == Token_STRING_VARNAME
6971
|| yytoken == Token_TILDE
6972
|| yytoken == Token_UNSET_CAST
6973
|| yytoken == Token_VARIABLE)
6975
LogicalXorExpressionAst *__node_138 = 0;
6976
if (!parseLogicalXorExpression(&__node_138))
6980
expectedSymbol(AstNode::LogicalXorExpressionKind, "logicalXorExpression");
6984
(*yynode)->expressionSequence = snoc((*yynode)->expressionSequence, __node_138, memoryPool);
6986
while (yytoken == Token_LOGICAL_OR)
6988
if (yytoken != Token_LOGICAL_OR)
6992
expectedToken(yytoken, Token_LOGICAL_OR, "logical or");
6998
LogicalXorExpressionAst *__node_139 = 0;
6999
if (!parseLogicalXorExpression(&__node_139))
7003
expectedSymbol(AstNode::LogicalXorExpressionKind, "logicalXorExpression");
7007
(*yynode)->expressionSequence = snoc((*yynode)->expressionSequence, __node_139, memoryPool);
7016
(*yynode)->endToken = tokenStream->index() - 2;
7021
bool Parser::parseLogicalXorExpression(LogicalXorExpressionAst **yynode)
7023
*yynode = create<LogicalXorExpressionAst>();
7025
(*yynode)->startToken = tokenStream->index() - 1;
7027
if (yytoken == Token_ARRAY
7028
|| yytoken == Token_ARRAY_CAST
7029
|| yytoken == Token_AT
7030
|| yytoken == Token_BACKTICK
7031
|| yytoken == Token_BANG
7032
|| yytoken == Token_BOOL_CAST
7033
|| yytoken == Token_CLASS_C
7034
|| yytoken == Token_CLONE
7035
|| yytoken == Token_CONSTANT_ENCAPSED_STRING
7036
|| yytoken == Token_DEC
7037
|| yytoken == Token_DNUMBER
7038
|| yytoken == Token_DOLLAR
7039
|| yytoken == Token_DOUBLE_CAST
7040
|| yytoken == Token_DOUBLE_QUOTE
7041
|| yytoken == Token_EMPTY
7042
|| yytoken == Token_EVAL
7043
|| yytoken == Token_EXIT
7044
|| yytoken == Token_FILE
7045
|| yytoken == Token_FUNC_C
7046
|| yytoken == Token_INC
7047
|| yytoken == Token_INCLUDE
7048
|| yytoken == Token_INCLUDE_ONCE
7049
|| yytoken == Token_INT_CAST
7050
|| yytoken == Token_ISSET
7051
|| yytoken == Token_LINE
7052
|| yytoken == Token_LIST
7053
|| yytoken == Token_LNUMBER
7054
|| yytoken == Token_LPAREN
7055
|| yytoken == Token_METHOD_C
7056
|| yytoken == Token_MINUS
7057
|| yytoken == Token_NEW
7058
|| yytoken == Token_OBJECT_CAST
7059
|| yytoken == Token_PLUS
7060
|| yytoken == Token_PRINT
7061
|| yytoken == Token_REQUIRE
7062
|| yytoken == Token_REQUIRE_ONCE
7063
|| yytoken == Token_START_HEREDOC
7064
|| yytoken == Token_STRING
7065
|| yytoken == Token_STRING_CAST
7066
|| yytoken == Token_STRING_VARNAME
7067
|| yytoken == Token_TILDE
7068
|| yytoken == Token_UNSET_CAST
7069
|| yytoken == Token_VARIABLE)
7071
LogicalAndExpressionAst *__node_140 = 0;
7072
if (!parseLogicalAndExpression(&__node_140))
7076
expectedSymbol(AstNode::LogicalAndExpressionKind, "logicalAndExpression");
7080
(*yynode)->expressionSequence = snoc((*yynode)->expressionSequence, __node_140, memoryPool);
7082
while (yytoken == Token_LOGICAL_XOR)
7084
if (yytoken != Token_LOGICAL_XOR)
7088
expectedToken(yytoken, Token_LOGICAL_XOR, "logical xor");
7094
LogicalAndExpressionAst *__node_141 = 0;
7095
if (!parseLogicalAndExpression(&__node_141))
7099
expectedSymbol(AstNode::LogicalAndExpressionKind, "logicalAndExpression");
7103
(*yynode)->expressionSequence = snoc((*yynode)->expressionSequence, __node_141, memoryPool);
7112
(*yynode)->endToken = tokenStream->index() - 2;
7117
bool Parser::parseMethodBody(MethodBodyAst **yynode)
7119
*yynode = create<MethodBodyAst>();
7121
(*yynode)->startToken = tokenStream->index() - 1;
7123
if (yytoken == Token_LBRACE
7124
|| yytoken == Token_SEMICOLON)
7126
if (yytoken == Token_SEMICOLON)
7128
if (yytoken != Token_SEMICOLON)
7132
expectedToken(yytoken, Token_SEMICOLON, ";");
7139
else if (yytoken == Token_LBRACE)
7141
if (yytoken != Token_LBRACE)
7145
expectedToken(yytoken, Token_LBRACE, "{");
7151
InnerStatementListAst *__node_142 = 0;
7152
if (!parseInnerStatementList(&__node_142))
7156
expectedSymbol(AstNode::InnerStatementListKind, "innerStatementList");
7160
(*yynode)->statements = __node_142;
7162
if (yytoken != Token_RBRACE)
7166
expectedToken(yytoken, Token_RBRACE, "}");
7183
(*yynode)->endToken = tokenStream->index() - 2;
7188
bool Parser::parseMultiplicativeExpression(MultiplicativeExpressionAst **yynode)
7190
*yynode = create<MultiplicativeExpressionAst>();
7192
(*yynode)->startToken = tokenStream->index() - 1;
7194
if (yytoken == Token_ARRAY
7195
|| yytoken == Token_ARRAY_CAST
7196
|| yytoken == Token_AT
7197
|| yytoken == Token_BACKTICK
7198
|| yytoken == Token_BANG
7199
|| yytoken == Token_BOOL_CAST
7200
|| yytoken == Token_CLASS_C
7201
|| yytoken == Token_CLONE
7202
|| yytoken == Token_CONSTANT_ENCAPSED_STRING
7203
|| yytoken == Token_DEC
7204
|| yytoken == Token_DNUMBER
7205
|| yytoken == Token_DOLLAR
7206
|| yytoken == Token_DOUBLE_CAST
7207
|| yytoken == Token_DOUBLE_QUOTE
7208
|| yytoken == Token_EMPTY
7209
|| yytoken == Token_EVAL
7210
|| yytoken == Token_EXIT
7211
|| yytoken == Token_FILE
7212
|| yytoken == Token_FUNC_C
7213
|| yytoken == Token_INC
7214
|| yytoken == Token_INCLUDE
7215
|| yytoken == Token_INCLUDE_ONCE
7216
|| yytoken == Token_INT_CAST
7217
|| yytoken == Token_ISSET
7218
|| yytoken == Token_LINE
7219
|| yytoken == Token_LIST
7220
|| yytoken == Token_LNUMBER
7221
|| yytoken == Token_LPAREN
7222
|| yytoken == Token_METHOD_C
7223
|| yytoken == Token_MINUS
7224
|| yytoken == Token_NEW
7225
|| yytoken == Token_OBJECT_CAST
7226
|| yytoken == Token_PLUS
7227
|| yytoken == Token_REQUIRE
7228
|| yytoken == Token_REQUIRE_ONCE
7229
|| yytoken == Token_START_HEREDOC
7230
|| yytoken == Token_STRING
7231
|| yytoken == Token_STRING_CAST
7232
|| yytoken == Token_STRING_VARNAME
7233
|| yytoken == Token_TILDE
7234
|| yytoken == Token_UNSET_CAST
7235
|| yytoken == Token_VARIABLE)
7237
UnaryExpressionAst *__node_143 = 0;
7238
if (!parseUnaryExpression(&__node_143))
7242
expectedSymbol(AstNode::UnaryExpressionKind, "unaryExpression");
7246
(*yynode)->expression = __node_143;
7248
while (yytoken == Token_DIV
7249
|| yytoken == Token_MOD
7250
|| yytoken == Token_MUL)
7252
MultiplicativeExpressionRestAst *__node_144 = 0;
7253
if (!parseMultiplicativeExpressionRest(&__node_144))
7257
expectedSymbol(AstNode::MultiplicativeExpressionRestKind, "multiplicativeExpressionRest");
7261
(*yynode)->additionalExpressionSequence = snoc((*yynode)->additionalExpressionSequence, __node_144, memoryPool);
7270
(*yynode)->endToken = tokenStream->index() - 2;
7275
bool Parser::parseMultiplicativeExpressionRest(MultiplicativeExpressionRestAst **yynode)
7277
*yynode = create<MultiplicativeExpressionRestAst>();
7279
(*yynode)->startToken = tokenStream->index() - 1;
7281
if (yytoken == Token_DIV
7282
|| yytoken == Token_MOD
7283
|| yytoken == Token_MUL)
7285
if (yytoken == Token_MUL)
7287
if (yytoken != Token_MUL)
7291
expectedToken(yytoken, Token_MUL, "*");
7297
(*yynode)->operation = OperationMul;
7299
else if (yytoken == Token_DIV)
7301
if (yytoken != Token_DIV)
7305
expectedToken(yytoken, Token_DIV, "/");
7311
(*yynode)->operation = OperationDiv;
7313
else if (yytoken == Token_MOD)
7315
if (yytoken != Token_MOD)
7319
expectedToken(yytoken, Token_MOD, "%");
7325
(*yynode)->operation = OperationMod;
7331
UnaryExpressionAst *__node_145 = 0;
7332
if (!parseUnaryExpression(&__node_145))
7336
expectedSymbol(AstNode::UnaryExpressionKind, "unaryExpression");
7340
(*yynode)->expression = __node_145;
7348
(*yynode)->endToken = tokenStream->index() - 2;
7353
bool Parser::parseNewElseSingle(NewElseSingleAst **yynode)
7355
*yynode = create<NewElseSingleAst>();
7357
(*yynode)->startToken = tokenStream->index() - 1;
7359
if (yytoken == Token_ELSE || yytoken == Token_ENDIF
7360
|| yytoken == Token_EOF)
7362
if (yytoken == Token_ELSE)
7364
if (yytoken != Token_ELSE)
7368
expectedToken(yytoken, Token_ELSE, "else");
7374
if (yytoken != Token_COLON)
7378
expectedToken(yytoken, Token_COLON, ":");
7384
InnerStatementListAst *__node_146 = 0;
7385
if (!parseInnerStatementList(&__node_146))
7389
expectedSymbol(AstNode::InnerStatementListKind, "innerStatementList");
7393
(*yynode)->statements = __node_146;
7396
else if (true /*epsilon*/)
7409
(*yynode)->endToken = tokenStream->index() - 2;
7414
bool Parser::parseNewElseifList(NewElseifListAst **yynode)
7416
*yynode = create<NewElseifListAst>();
7418
(*yynode)->startToken = tokenStream->index() - 1;
7420
if (yytoken == Token_ELSEIF || yytoken == Token_ELSE
7421
|| yytoken == Token_ENDIF
7422
|| yytoken == Token_EOF)
7424
while (yytoken == Token_ELSEIF)
7426
NewelseifListItemAst *__node_147 = 0;
7427
if (!parseNewelseifListItem(&__node_147))
7431
expectedSymbol(AstNode::NewelseifListItemKind, "newelseifListItem");
7435
(*yynode)->newElseifListItemSequence = snoc((*yynode)->newElseifListItemSequence, __node_147, memoryPool);
7444
(*yynode)->endToken = tokenStream->index() - 2;
7449
bool Parser::parseNewelseifListItem(NewelseifListItemAst **yynode)
7451
*yynode = create<NewelseifListItemAst>();
7453
(*yynode)->startToken = tokenStream->index() - 1;
7455
if (yytoken == Token_ELSEIF)
7457
if (yytoken != Token_ELSEIF)
7461
expectedToken(yytoken, Token_ELSEIF, "elseif");
7467
if (yytoken != Token_LPAREN)
7471
expectedToken(yytoken, Token_LPAREN, "(");
7477
ExprAst *__node_148 = 0;
7478
if (!parseExpr(&__node_148))
7482
expectedSymbol(AstNode::ExprKind, "expr");
7486
(*yynode)->expr = __node_148;
7488
if (yytoken != Token_RPAREN)
7492
expectedToken(yytoken, Token_RPAREN, ")");
7498
if (yytoken != Token_COLON)
7502
expectedToken(yytoken, Token_COLON, ":");
7508
InnerStatementListAst *__node_149 = 0;
7509
if (!parseInnerStatementList(&__node_149))
7513
expectedSymbol(AstNode::InnerStatementListKind, "innerStatementList");
7517
(*yynode)->statements = __node_149;
7525
(*yynode)->endToken = tokenStream->index() - 2;
7530
bool Parser::parseObjectDimList(ObjectDimListAst **yynode)
7532
*yynode = create<ObjectDimListAst>();
7534
(*yynode)->startToken = tokenStream->index() - 1;
7536
if (yytoken == Token_LBRACE
7537
|| yytoken == Token_STRING)
7539
VariableNameAst *__node_150 = 0;
7540
if (!parseVariableName(&__node_150))
7544
expectedSymbol(AstNode::VariableNameKind, "variableName");
7548
(*yynode)->variableName = __node_150;
7550
while (yytoken == Token_LBRACE
7551
|| yytoken == Token_LBRACKET)
7553
DimListItemAst *__node_151 = 0;
7554
if (!parseDimListItem(&__node_151))
7558
expectedSymbol(AstNode::DimListItemKind, "dimListItem");
7562
(*yynode)->offsetItemsSequence = snoc((*yynode)->offsetItemsSequence, __node_151, memoryPool);
7571
(*yynode)->endToken = tokenStream->index() - 2;
7576
bool Parser::parseObjectProperty(ObjectPropertyAst **yynode)
7578
*yynode = create<ObjectPropertyAst>();
7580
(*yynode)->startToken = tokenStream->index() - 1;
7582
if (yytoken == Token_DOLLAR
7583
|| yytoken == Token_LBRACE
7584
|| yytoken == Token_STRING
7585
|| yytoken == Token_VARIABLE)
7587
if (yytoken == Token_LBRACE
7588
|| yytoken == Token_STRING)
7590
ObjectDimListAst *__node_152 = 0;
7591
if (!parseObjectDimList(&__node_152))
7595
expectedSymbol(AstNode::ObjectDimListKind, "objectDimList");
7599
(*yynode)->objectDimList = __node_152;
7602
else if (yytoken == Token_DOLLAR
7603
|| yytoken == Token_VARIABLE)
7605
VariableWithoutObjectsAst *__node_153 = 0;
7606
if (!parseVariableWithoutObjects(&__node_153))
7610
expectedSymbol(AstNode::VariableWithoutObjectsKind, "variableWithoutObjects");
7614
(*yynode)->variableWithoutObjects = __node_153;
7627
(*yynode)->endToken = tokenStream->index() - 2;
7632
bool Parser::parseOptionalClassModifier(OptionalClassModifierAst **yynode)
7634
*yynode = create<OptionalClassModifierAst>();
7636
(*yynode)->startToken = tokenStream->index() - 1;
7638
if (yytoken == Token_ABSTRACT
7639
|| yytoken == Token_FINAL || yytoken == Token_CLASS
7640
|| yytoken == Token_EOF)
7642
if (yytoken == Token_ABSTRACT)
7644
if (yytoken != Token_ABSTRACT)
7648
expectedToken(yytoken, Token_ABSTRACT, "abstract");
7654
(*yynode)->modifier = AbstractClass;
7656
else if (yytoken == Token_FINAL)
7658
if (yytoken != Token_FINAL)
7662
expectedToken(yytoken, Token_FINAL, "final");
7668
(*yynode)->modifier = FinalClass;
7670
else if (true /*epsilon*/)
7683
(*yynode)->endToken = tokenStream->index() - 2;
7688
bool Parser::parseOptionalModifiers(OptionalModifiersAst **yynode)
7690
*yynode = create<OptionalModifiersAst>();
7692
(*yynode)->startToken = tokenStream->index() - 1;
7694
if (yytoken == Token_ABSTRACT
7695
|| yytoken == Token_FINAL
7696
|| yytoken == Token_PRIVATE
7697
|| yytoken == Token_PROTECTED
7698
|| yytoken == Token_PUBLIC
7699
|| yytoken == Token_STATIC || yytoken == Token_EOF
7700
|| yytoken == Token_FUNCTION
7701
|| yytoken == Token_VARIABLE)
7703
while (yytoken == Token_ABSTRACT
7704
|| yytoken == Token_FINAL
7705
|| yytoken == Token_PRIVATE
7706
|| yytoken == Token_PROTECTED
7707
|| yytoken == Token_PUBLIC
7708
|| yytoken == Token_STATIC)
7710
if (yytoken == Token_PUBLIC)
7712
if (yytoken != Token_PUBLIC)
7716
expectedToken(yytoken, Token_PUBLIC, "public");
7722
(*yynode)->modifiers |= ModifierPublic;
7724
else if (yytoken == Token_PROTECTED)
7726
if (yytoken != Token_PROTECTED)
7730
expectedToken(yytoken, Token_PROTECTED, "protected");
7736
(*yynode)->modifiers |= ModifierProtected;
7738
else if (yytoken == Token_PRIVATE)
7740
if (yytoken != Token_PRIVATE)
7744
expectedToken(yytoken, Token_PRIVATE, "private");
7750
(*yynode)->modifiers |= ModifierPrivate;
7752
else if (yytoken == Token_STATIC)
7754
if (yytoken != Token_STATIC)
7758
expectedToken(yytoken, Token_STATIC, "static");
7764
(*yynode)->modifiers |= ModifierStatic;
7766
else if (yytoken == Token_ABSTRACT)
7768
if (yytoken != Token_ABSTRACT)
7772
expectedToken(yytoken, Token_ABSTRACT, "abstract");
7778
(*yynode)->modifiers |= ModifierAbstract;
7780
else if (yytoken == Token_FINAL)
7782
if (yytoken != Token_FINAL)
7786
expectedToken(yytoken, Token_FINAL, "final");
7792
(*yynode)->modifiers |= ModifierFinal;
7794
else if (true /*epsilon*/)
7808
(*yynode)->endToken = tokenStream->index() - 2;
7813
bool Parser::parseParameter(ParameterAst **yynode)
7815
*yynode = create<ParameterAst>();
7817
(*yynode)->startToken = tokenStream->index() - 1;
7818
(*yynode)->arrayType = -1;
7819
(*yynode)->isRef = -1;
7821
if (yytoken == Token_ARRAY
7822
|| yytoken == Token_BIT_AND
7823
|| yytoken == Token_STRING
7824
|| yytoken == Token_VARIABLE)
7826
if (yytoken == Token_STRING)
7828
IdentifierAst *__node_154 = 0;
7829
if (!parseIdentifier(&__node_154))
7833
expectedSymbol(AstNode::IdentifierKind, "identifier");
7837
(*yynode)->parameterType = __node_154;
7840
else if (yytoken == Token_ARRAY)
7842
if (yytoken != Token_ARRAY)
7846
expectedToken(yytoken, Token_ARRAY, "array");
7850
(*yynode)->arrayType = tokenStream->index() - 1;
7854
else if (true /*epsilon*/)
7861
if (yytoken == Token_BIT_AND)
7863
if (yytoken != Token_BIT_AND)
7867
expectedToken(yytoken, Token_BIT_AND, "&");
7871
(*yynode)->isRef = tokenStream->index() - 1;
7875
else if (true /*epsilon*/)
7882
VariableIdentifierAst *__node_155 = 0;
7883
if (!parseVariableIdentifier(&__node_155))
7887
expectedSymbol(AstNode::VariableIdentifierKind, "variableIdentifier");
7891
(*yynode)->variable = __node_155;
7893
if (yytoken == Token_ASSIGN)
7895
if (yytoken != Token_ASSIGN)
7899
expectedToken(yytoken, Token_ASSIGN, "=");
7905
StaticScalarAst *__node_156 = 0;
7906
if (!parseStaticScalar(&__node_156))
7910
expectedSymbol(AstNode::StaticScalarKind, "staticScalar");
7914
(*yynode)->defaultValue = __node_156;
7917
else if (true /*epsilon*/)
7930
(*yynode)->endToken = tokenStream->index() - 2;
7935
bool Parser::parseParameterList(ParameterListAst **yynode)
7937
*yynode = create<ParameterListAst>();
7939
(*yynode)->startToken = tokenStream->index() - 1;
7941
if (yytoken == Token_ARRAY
7942
|| yytoken == Token_BIT_AND
7943
|| yytoken == Token_STRING
7944
|| yytoken == Token_VARIABLE || yytoken == Token_EOF
7945
|| yytoken == Token_RPAREN)
7947
if (yytoken == Token_ARRAY
7948
|| yytoken == Token_BIT_AND
7949
|| yytoken == Token_STRING
7950
|| yytoken == Token_VARIABLE)
7952
ParameterAst *__node_157 = 0;
7953
if (!parseParameter(&__node_157))
7957
expectedSymbol(AstNode::ParameterKind, "parameter");
7961
(*yynode)->parametersSequence = snoc((*yynode)->parametersSequence, __node_157, memoryPool);
7963
while (yytoken == Token_COMMA)
7965
if (yytoken != Token_COMMA)
7969
expectedToken(yytoken, Token_COMMA, ",");
7975
ParameterAst *__node_158 = 0;
7976
if (!parseParameter(&__node_158))
7980
expectedSymbol(AstNode::ParameterKind, "parameter");
7984
(*yynode)->parametersSequence = snoc((*yynode)->parametersSequence, __node_158, memoryPool);
7988
else if (true /*epsilon*/)
8001
(*yynode)->endToken = tokenStream->index() - 2;
8006
bool Parser::parsePostprefixOperator(PostprefixOperatorAst **yynode)
8008
*yynode = create<PostprefixOperatorAst>();
8010
(*yynode)->startToken = tokenStream->index() - 1;
8014
if (yytoken == Token_DEC
8015
|| yytoken == Token_INC)
8017
if (yytoken == Token_INC)
8019
if (yytoken != Token_INC)
8023
expectedToken(yytoken, Token_INC, "++");
8027
(*yynode)->op = tokenStream->index() - 1;
8031
else if (yytoken == Token_DEC)
8033
if (yytoken != Token_DEC)
8037
expectedToken(yytoken, Token_DEC, "--");
8041
(*yynode)->op = tokenStream->index() - 1;
8055
(*yynode)->endToken = tokenStream->index() - 2;
8060
bool Parser::parsePrintExpression(PrintExpressionAst **yynode)
8062
*yynode = create<PrintExpressionAst>();
8064
(*yynode)->startToken = tokenStream->index() - 1;
8065
(*yynode)->print = -1;
8067
if (yytoken == Token_ARRAY
8068
|| yytoken == Token_ARRAY_CAST
8069
|| yytoken == Token_AT
8070
|| yytoken == Token_BACKTICK
8071
|| yytoken == Token_BANG
8072
|| yytoken == Token_BOOL_CAST
8073
|| yytoken == Token_CLASS_C
8074
|| yytoken == Token_CLONE
8075
|| yytoken == Token_CONSTANT_ENCAPSED_STRING
8076
|| yytoken == Token_DEC
8077
|| yytoken == Token_DNUMBER
8078
|| yytoken == Token_DOLLAR
8079
|| yytoken == Token_DOUBLE_CAST
8080
|| yytoken == Token_DOUBLE_QUOTE
8081
|| yytoken == Token_EMPTY
8082
|| yytoken == Token_EVAL
8083
|| yytoken == Token_EXIT
8084
|| yytoken == Token_FILE
8085
|| yytoken == Token_FUNC_C
8086
|| yytoken == Token_INC
8087
|| yytoken == Token_INCLUDE
8088
|| yytoken == Token_INCLUDE_ONCE
8089
|| yytoken == Token_INT_CAST
8090
|| yytoken == Token_ISSET
8091
|| yytoken == Token_LINE
8092
|| yytoken == Token_LIST
8093
|| yytoken == Token_LNUMBER
8094
|| yytoken == Token_LPAREN
8095
|| yytoken == Token_METHOD_C
8096
|| yytoken == Token_MINUS
8097
|| yytoken == Token_NEW
8098
|| yytoken == Token_OBJECT_CAST
8099
|| yytoken == Token_PLUS
8100
|| yytoken == Token_PRINT
8101
|| yytoken == Token_REQUIRE
8102
|| yytoken == Token_REQUIRE_ONCE
8103
|| yytoken == Token_START_HEREDOC
8104
|| yytoken == Token_STRING
8105
|| yytoken == Token_STRING_CAST
8106
|| yytoken == Token_STRING_VARNAME
8107
|| yytoken == Token_TILDE
8108
|| yytoken == Token_UNSET_CAST
8109
|| yytoken == Token_VARIABLE)
8111
while (yytoken == Token_PRINT)
8113
if (yytoken != Token_PRINT)
8117
expectedToken(yytoken, Token_PRINT, "print");
8121
(*yynode)->print = tokenStream->index() - 1;
8125
AssignmentExpressionAst *__node_159 = 0;
8126
if (!parseAssignmentExpression(&__node_159))
8130
expectedSymbol(AstNode::AssignmentExpressionKind, "assignmentExpression");
8134
(*yynode)->expression = __node_159;
8142
(*yynode)->endToken = tokenStream->index() - 2;
8147
bool Parser::parseRelationalExpression(RelationalExpressionAst **yynode)
8149
*yynode = create<RelationalExpressionAst>();
8151
(*yynode)->startToken = tokenStream->index() - 1;
8153
if (yytoken == Token_ARRAY
8154
|| yytoken == Token_ARRAY_CAST
8155
|| yytoken == Token_AT
8156
|| yytoken == Token_BACKTICK
8157
|| yytoken == Token_BANG
8158
|| yytoken == Token_BOOL_CAST
8159
|| yytoken == Token_CLASS_C
8160
|| yytoken == Token_CLONE
8161
|| yytoken == Token_CONSTANT_ENCAPSED_STRING
8162
|| yytoken == Token_DEC
8163
|| yytoken == Token_DNUMBER
8164
|| yytoken == Token_DOLLAR
8165
|| yytoken == Token_DOUBLE_CAST
8166
|| yytoken == Token_DOUBLE_QUOTE
8167
|| yytoken == Token_EMPTY
8168
|| yytoken == Token_EVAL
8169
|| yytoken == Token_EXIT
8170
|| yytoken == Token_FILE
8171
|| yytoken == Token_FUNC_C
8172
|| yytoken == Token_INC
8173
|| yytoken == Token_INCLUDE
8174
|| yytoken == Token_INCLUDE_ONCE
8175
|| yytoken == Token_INT_CAST
8176
|| yytoken == Token_ISSET
8177
|| yytoken == Token_LINE
8178
|| yytoken == Token_LIST
8179
|| yytoken == Token_LNUMBER
8180
|| yytoken == Token_LPAREN
8181
|| yytoken == Token_METHOD_C
8182
|| yytoken == Token_MINUS
8183
|| yytoken == Token_NEW
8184
|| yytoken == Token_OBJECT_CAST
8185
|| yytoken == Token_PLUS
8186
|| yytoken == Token_REQUIRE
8187
|| yytoken == Token_REQUIRE_ONCE
8188
|| yytoken == Token_START_HEREDOC
8189
|| yytoken == Token_STRING
8190
|| yytoken == Token_STRING_CAST
8191
|| yytoken == Token_STRING_VARNAME
8192
|| yytoken == Token_TILDE
8193
|| yytoken == Token_UNSET_CAST
8194
|| yytoken == Token_VARIABLE)
8196
ShiftExpressionAst *__node_160 = 0;
8197
if (!parseShiftExpression(&__node_160))
8201
expectedSymbol(AstNode::ShiftExpressionKind, "shiftExpression");
8205
(*yynode)->expression = __node_160;
8207
if (yytoken == Token_IS_GREATER
8208
|| yytoken == Token_IS_GREATER_OR_EQUAL
8209
|| yytoken == Token_IS_SMALLER
8210
|| yytoken == Token_IS_SMALLER_OR_EQUAL)
8214
RelationalExpressionRestAst *__node_161 = 0;
8215
if (!parseRelationalExpressionRest(&__node_161))
8219
expectedSymbol(AstNode::RelationalExpressionRestKind, "relationalExpressionRest");
8223
(*yynode)->additionalExpressionSequence = snoc((*yynode)->additionalExpressionSequence, __node_161, memoryPool);
8226
while (yytoken == Token_IS_GREATER
8227
|| yytoken == Token_IS_GREATER_OR_EQUAL
8228
|| yytoken == Token_IS_SMALLER
8229
|| yytoken == Token_IS_SMALLER_OR_EQUAL);
8231
else if (yytoken == Token_INSTANCEOF)
8233
if (yytoken != Token_INSTANCEOF)
8237
expectedToken(yytoken, Token_INSTANCEOF, "instanceof");
8243
ClassNameReferenceAst *__node_162 = 0;
8244
if (!parseClassNameReference(&__node_162))
8248
expectedSymbol(AstNode::ClassNameReferenceKind, "classNameReference");
8252
(*yynode)->instanceofType = __node_162;
8255
else if (true /*epsilon*/)
8268
(*yynode)->endToken = tokenStream->index() - 2;
8273
bool Parser::parseRelationalExpressionRest(RelationalExpressionRestAst **yynode)
8275
*yynode = create<RelationalExpressionRestAst>();
8277
(*yynode)->startToken = tokenStream->index() - 1;
8279
if (yytoken == Token_IS_GREATER
8280
|| yytoken == Token_IS_GREATER_OR_EQUAL
8281
|| yytoken == Token_IS_SMALLER
8282
|| yytoken == Token_IS_SMALLER_OR_EQUAL)
8284
if (yytoken == Token_IS_SMALLER)
8286
if (yytoken != Token_IS_SMALLER)
8290
expectedToken(yytoken, Token_IS_SMALLER, "<");
8297
else if (yytoken == Token_IS_GREATER)
8299
if (yytoken != Token_IS_GREATER)
8303
expectedToken(yytoken, Token_IS_GREATER, ">");
8310
else if (yytoken == Token_IS_SMALLER_OR_EQUAL)
8312
if (yytoken != Token_IS_SMALLER_OR_EQUAL)
8316
expectedToken(yytoken, Token_IS_SMALLER_OR_EQUAL, "<=");
8323
else if (yytoken == Token_IS_GREATER_OR_EQUAL)
8325
if (yytoken != Token_IS_GREATER_OR_EQUAL)
8329
expectedToken(yytoken, Token_IS_GREATER_OR_EQUAL, ">=");
8340
ShiftExpressionAst *__node_163 = 0;
8341
if (!parseShiftExpression(&__node_163))
8345
expectedSymbol(AstNode::ShiftExpressionKind, "shiftExpression");
8349
(*yynode)->expression = __node_163;
8357
(*yynode)->endToken = tokenStream->index() - 2;
8362
bool Parser::parseScalar(ScalarAst **yynode)
8364
*yynode = create<ScalarAst>();
8366
(*yynode)->startToken = tokenStream->index() - 1;
8367
(*yynode)->varname = -1;
8369
if (yytoken == Token_CLASS_C
8370
|| yytoken == Token_CONSTANT_ENCAPSED_STRING
8371
|| yytoken == Token_DNUMBER
8372
|| yytoken == Token_DOUBLE_QUOTE
8373
|| yytoken == Token_FILE
8374
|| yytoken == Token_FUNC_C
8375
|| yytoken == Token_LINE
8376
|| yytoken == Token_LNUMBER
8377
|| yytoken == Token_METHOD_C
8378
|| yytoken == Token_START_HEREDOC
8379
|| yytoken == Token_STRING
8380
|| yytoken == Token_STRING_VARNAME)
8382
if (yytoken == Token_CLASS_C
8383
|| yytoken == Token_CONSTANT_ENCAPSED_STRING
8384
|| yytoken == Token_DNUMBER
8385
|| yytoken == Token_FILE
8386
|| yytoken == Token_FUNC_C
8387
|| yytoken == Token_LINE
8388
|| yytoken == Token_LNUMBER
8389
|| yytoken == Token_METHOD_C)
8391
CommonScalarAst *__node_164 = 0;
8392
if (!parseCommonScalar(&__node_164))
8396
expectedSymbol(AstNode::CommonScalarKind, "commonScalar");
8400
(*yynode)->commonScalar = __node_164;
8403
else if (yytoken == Token_STRING)
8405
ConstantOrClassConstAst *__node_165 = 0;
8406
if (!parseConstantOrClassConst(&__node_165))
8410
expectedSymbol(AstNode::ConstantOrClassConstKind, "constantOrClassConst");
8414
(*yynode)->constantOrClassConst = __node_165;
8417
else if (yytoken == Token_STRING_VARNAME)
8419
if (yytoken != Token_STRING_VARNAME)
8423
expectedToken(yytoken, Token_STRING_VARNAME, "string varname");
8427
(*yynode)->varname = tokenStream->index() - 1;
8431
else if (yytoken == Token_DOUBLE_QUOTE)
8433
if (yytoken != Token_DOUBLE_QUOTE)
8437
expectedToken(yytoken, Token_DOUBLE_QUOTE, "\"");
8443
EncapsListAst *__node_166 = 0;
8444
if (!parseEncapsList(&__node_166))
8448
expectedSymbol(AstNode::EncapsListKind, "encapsList");
8452
(*yynode)->encapsList = __node_166;
8454
if (yytoken != Token_DOUBLE_QUOTE)
8458
expectedToken(yytoken, Token_DOUBLE_QUOTE, "\"");
8465
else if (yytoken == Token_START_HEREDOC)
8467
if (yytoken != Token_START_HEREDOC)
8471
expectedToken(yytoken, Token_START_HEREDOC, "start heredoc");
8477
EncapsListAst *__node_167 = 0;
8478
if (!parseEncapsList(&__node_167))
8482
expectedSymbol(AstNode::EncapsListKind, "encapsList");
8486
(*yynode)->encapsList = __node_167;
8488
if (yytoken != Token_END_HEREDOC)
8492
expectedToken(yytoken, Token_END_HEREDOC, "end heredoc");
8509
(*yynode)->endToken = tokenStream->index() - 2;
8514
bool Parser::parseSemicolonOrCloseTag(SemicolonOrCloseTagAst **yynode)
8516
*yynode = create<SemicolonOrCloseTagAst>();
8518
(*yynode)->startToken = tokenStream->index() - 1;
8520
if (yytoken == Token_CLOSE_TAG
8521
|| yytoken == Token_SEMICOLON)
8523
if (yytoken == Token_SEMICOLON)
8525
if (yytoken != Token_SEMICOLON)
8529
expectedToken(yytoken, Token_SEMICOLON, ";");
8536
else if (yytoken == Token_CLOSE_TAG)
8538
if (yytoken != Token_CLOSE_TAG)
8542
expectedToken(yytoken, Token_CLOSE_TAG, "?>");
8559
(*yynode)->endToken = tokenStream->index() - 2;
8564
bool Parser::parseShiftExpression(ShiftExpressionAst **yynode)
8566
*yynode = create<ShiftExpressionAst>();
8568
(*yynode)->startToken = tokenStream->index() - 1;
8570
if (yytoken == Token_ARRAY
8571
|| yytoken == Token_ARRAY_CAST
8572
|| yytoken == Token_AT
8573
|| yytoken == Token_BACKTICK
8574
|| yytoken == Token_BANG
8575
|| yytoken == Token_BOOL_CAST
8576
|| yytoken == Token_CLASS_C
8577
|| yytoken == Token_CLONE
8578
|| yytoken == Token_CONSTANT_ENCAPSED_STRING
8579
|| yytoken == Token_DEC
8580
|| yytoken == Token_DNUMBER
8581
|| yytoken == Token_DOLLAR
8582
|| yytoken == Token_DOUBLE_CAST
8583
|| yytoken == Token_DOUBLE_QUOTE
8584
|| yytoken == Token_EMPTY
8585
|| yytoken == Token_EVAL
8586
|| yytoken == Token_EXIT
8587
|| yytoken == Token_FILE
8588
|| yytoken == Token_FUNC_C
8589
|| yytoken == Token_INC
8590
|| yytoken == Token_INCLUDE
8591
|| yytoken == Token_INCLUDE_ONCE
8592
|| yytoken == Token_INT_CAST
8593
|| yytoken == Token_ISSET
8594
|| yytoken == Token_LINE
8595
|| yytoken == Token_LIST
8596
|| yytoken == Token_LNUMBER
8597
|| yytoken == Token_LPAREN
8598
|| yytoken == Token_METHOD_C
8599
|| yytoken == Token_MINUS
8600
|| yytoken == Token_NEW
8601
|| yytoken == Token_OBJECT_CAST
8602
|| yytoken == Token_PLUS
8603
|| yytoken == Token_REQUIRE
8604
|| yytoken == Token_REQUIRE_ONCE
8605
|| yytoken == Token_START_HEREDOC
8606
|| yytoken == Token_STRING
8607
|| yytoken == Token_STRING_CAST
8608
|| yytoken == Token_STRING_VARNAME
8609
|| yytoken == Token_TILDE
8610
|| yytoken == Token_UNSET_CAST
8611
|| yytoken == Token_VARIABLE)
8613
AdditiveExpressionAst *__node_168 = 0;
8614
if (!parseAdditiveExpression(&__node_168))
8618
expectedSymbol(AstNode::AdditiveExpressionKind, "additiveExpression");
8622
(*yynode)->expression = __node_168;
8624
while (yytoken == Token_SL
8625
|| yytoken == Token_SR)
8627
ShiftExpressionRestAst *__node_169 = 0;
8628
if (!parseShiftExpressionRest(&__node_169))
8632
expectedSymbol(AstNode::ShiftExpressionRestKind, "shiftExpressionRest");
8636
(*yynode)->additionalExpressionSequence = snoc((*yynode)->additionalExpressionSequence, __node_169, memoryPool);
8645
(*yynode)->endToken = tokenStream->index() - 2;
8650
bool Parser::parseShiftExpressionRest(ShiftExpressionRestAst **yynode)
8652
*yynode = create<ShiftExpressionRestAst>();
8654
(*yynode)->startToken = tokenStream->index() - 1;
8656
if (yytoken == Token_SL
8657
|| yytoken == Token_SR)
8659
if (yytoken == Token_SL)
8661
if (yytoken != Token_SL)
8665
expectedToken(yytoken, Token_SL, "<<");
8672
else if (yytoken == Token_SR)
8674
if (yytoken != Token_SR)
8678
expectedToken(yytoken, Token_SR, ">>");
8689
AdditiveExpressionAst *__node_170 = 0;
8690
if (!parseAdditiveExpression(&__node_170))
8694
expectedSymbol(AstNode::AdditiveExpressionKind, "additiveExpression");
8698
(*yynode)->expression = __node_170;
8706
(*yynode)->endToken = tokenStream->index() - 2;
8711
bool Parser::parseStart(StartAst **yynode)
8713
*yynode = create<StartAst>();
8715
(*yynode)->startToken = tokenStream->index() - 1;
8717
if (yytoken == Token_ABSTRACT
8718
|| yytoken == Token_ARRAY
8719
|| yytoken == Token_ARRAY_CAST
8720
|| yytoken == Token_AT
8721
|| yytoken == Token_BACKTICK
8722
|| yytoken == Token_BANG
8723
|| yytoken == Token_BOOL_CAST
8724
|| yytoken == Token_BREAK
8725
|| yytoken == Token_CLASS
8726
|| yytoken == Token_CLASS_C
8727
|| yytoken == Token_CLONE
8728
|| yytoken == Token_CLOSE_TAG
8729
|| yytoken == Token_CONSTANT_ENCAPSED_STRING
8730
|| yytoken == Token_CONTINUE
8731
|| yytoken == Token_DEC
8732
|| yytoken == Token_DECLARE
8733
|| yytoken == Token_DNUMBER
8734
|| yytoken == Token_DO
8735
|| yytoken == Token_DOLLAR
8736
|| yytoken == Token_DOUBLE_CAST
8737
|| yytoken == Token_DOUBLE_QUOTE
8738
|| yytoken == Token_ECHO
8739
|| yytoken == Token_EMPTY
8740
|| yytoken == Token_EVAL
8741
|| yytoken == Token_EXIT
8742
|| yytoken == Token_FILE
8743
|| yytoken == Token_FINAL
8744
|| yytoken == Token_FOR
8745
|| yytoken == Token_FOREACH
8746
|| yytoken == Token_FUNCTION
8747
|| yytoken == Token_FUNC_C
8748
|| yytoken == Token_GLOBAL
8749
|| yytoken == Token_HALT_COMPILER
8750
|| yytoken == Token_IF
8751
|| yytoken == Token_INC
8752
|| yytoken == Token_INCLUDE
8753
|| yytoken == Token_INCLUDE_ONCE
8754
|| yytoken == Token_INLINE_HTML
8755
|| yytoken == Token_INTERFACE
8756
|| yytoken == Token_INT_CAST
8757
|| yytoken == Token_ISSET
8758
|| yytoken == Token_LBRACE
8759
|| yytoken == Token_LINE
8760
|| yytoken == Token_LIST
8761
|| yytoken == Token_LNUMBER
8762
|| yytoken == Token_LPAREN
8763
|| yytoken == Token_METHOD_C
8764
|| yytoken == Token_MINUS
8765
|| yytoken == Token_NEW
8766
|| yytoken == Token_OBJECT_CAST
8767
|| yytoken == Token_OPEN_TAG
8768
|| yytoken == Token_OPEN_TAG_WITH_ECHO
8769
|| yytoken == Token_PLUS
8770
|| yytoken == Token_PRINT
8771
|| yytoken == Token_REQUIRE
8772
|| yytoken == Token_REQUIRE_ONCE
8773
|| yytoken == Token_RETURN
8774
|| yytoken == Token_SEMICOLON
8775
|| yytoken == Token_START_HEREDOC
8776
|| yytoken == Token_STATIC
8777
|| yytoken == Token_STRING
8778
|| yytoken == Token_STRING_CAST
8779
|| yytoken == Token_STRING_VARNAME
8780
|| yytoken == Token_SWITCH
8781
|| yytoken == Token_THROW
8782
|| yytoken == Token_TILDE
8783
|| yytoken == Token_TRY
8784
|| yytoken == Token_UNSET
8785
|| yytoken == Token_UNSET_CAST
8786
|| yytoken == Token_VARIABLE
8787
|| yytoken == Token_WHILE || yytoken == Token_EOF)
8789
InnerStatementListAst *__node_171 = 0;
8790
if (!parseInnerStatementList(&__node_171))
8794
expectedSymbol(AstNode::InnerStatementListKind, "innerStatementList");
8798
(*yynode)->statements = __node_171;
8800
if (Token_EOF != yytoken)
8810
(*yynode)->endToken = tokenStream->index() - 2;
8815
bool Parser::parseStatement(StatementAst **yynode)
8817
*yynode = create<StatementAst>();
8819
(*yynode)->startToken = tokenStream->index() - 1;
8821
if (yytoken == Token_ARRAY
8822
|| yytoken == Token_ARRAY_CAST
8823
|| yytoken == Token_AT
8824
|| yytoken == Token_BACKTICK
8825
|| yytoken == Token_BANG
8826
|| yytoken == Token_BOOL_CAST
8827
|| yytoken == Token_BREAK
8828
|| yytoken == Token_CLASS_C
8829
|| yytoken == Token_CLONE
8830
|| yytoken == Token_CLOSE_TAG
8831
|| yytoken == Token_CONSTANT_ENCAPSED_STRING
8832
|| yytoken == Token_CONTINUE
8833
|| yytoken == Token_DEC
8834
|| yytoken == Token_DECLARE
8835
|| yytoken == Token_DNUMBER
8836
|| yytoken == Token_DO
8837
|| yytoken == Token_DOLLAR
8838
|| yytoken == Token_DOUBLE_CAST
8839
|| yytoken == Token_DOUBLE_QUOTE
8840
|| yytoken == Token_ECHO
8841
|| yytoken == Token_EMPTY
8842
|| yytoken == Token_EVAL
8843
|| yytoken == Token_EXIT
8844
|| yytoken == Token_FILE
8845
|| yytoken == Token_FOR
8846
|| yytoken == Token_FOREACH
8847
|| yytoken == Token_FUNC_C
8848
|| yytoken == Token_GLOBAL
8849
|| yytoken == Token_IF
8850
|| yytoken == Token_INC
8851
|| yytoken == Token_INCLUDE
8852
|| yytoken == Token_INCLUDE_ONCE
8853
|| yytoken == Token_INLINE_HTML
8854
|| yytoken == Token_INT_CAST
8855
|| yytoken == Token_ISSET
8856
|| yytoken == Token_LBRACE
8857
|| yytoken == Token_LINE
8858
|| yytoken == Token_LIST
8859
|| yytoken == Token_LNUMBER
8860
|| yytoken == Token_LPAREN
8861
|| yytoken == Token_METHOD_C
8862
|| yytoken == Token_MINUS
8863
|| yytoken == Token_NEW
8864
|| yytoken == Token_OBJECT_CAST
8865
|| yytoken == Token_OPEN_TAG
8866
|| yytoken == Token_OPEN_TAG_WITH_ECHO
8867
|| yytoken == Token_PLUS
8868
|| yytoken == Token_PRINT
8869
|| yytoken == Token_REQUIRE
8870
|| yytoken == Token_REQUIRE_ONCE
8871
|| yytoken == Token_RETURN
8872
|| yytoken == Token_SEMICOLON
8873
|| yytoken == Token_START_HEREDOC
8874
|| yytoken == Token_STATIC
8875
|| yytoken == Token_STRING
8876
|| yytoken == Token_STRING_CAST
8877
|| yytoken == Token_STRING_VARNAME
8878
|| yytoken == Token_SWITCH
8879
|| yytoken == Token_THROW
8880
|| yytoken == Token_TILDE
8881
|| yytoken == Token_TRY
8882
|| yytoken == Token_UNSET
8883
|| yytoken == Token_UNSET_CAST
8884
|| yytoken == Token_VARIABLE
8885
|| yytoken == Token_WHILE)
8887
if (yytoken == Token_LBRACE)
8889
if (yytoken != Token_LBRACE)
8893
expectedToken(yytoken, Token_LBRACE, "{");
8899
InnerStatementListAst *__node_172 = 0;
8900
if (!parseInnerStatementList(&__node_172))
8904
expectedSymbol(AstNode::InnerStatementListKind, "innerStatementList");
8908
(*yynode)->statements = __node_172;
8910
if (yytoken != Token_RBRACE)
8914
expectedToken(yytoken, Token_RBRACE, "}");
8921
else if (yytoken == Token_IF)
8923
if (yytoken != Token_IF)
8927
expectedToken(yytoken, Token_IF, "if");
8933
if (yytoken != Token_LPAREN)
8937
expectedToken(yytoken, Token_LPAREN, "(");
8943
ExprAst *__node_173 = 0;
8944
if (!parseExpr(&__node_173))
8948
expectedSymbol(AstNode::ExprKind, "expr");
8952
(*yynode)->ifExpr = __node_173;
8954
if (yytoken != Token_RPAREN)
8958
expectedToken(yytoken, Token_RPAREN, ")");
8964
if (yytoken == Token_COLON)
8966
if (yytoken != Token_COLON)
8970
expectedToken(yytoken, Token_COLON, ":");
8976
InnerStatementListAst *__node_174 = 0;
8977
if (!parseInnerStatementList(&__node_174))
8981
expectedSymbol(AstNode::InnerStatementListKind, "innerStatementList");
8985
(*yynode)->statements = __node_174;
8987
NewElseifListAst *__node_175 = 0;
8988
if (!parseNewElseifList(&__node_175))
8992
expectedSymbol(AstNode::NewElseifListKind, "newElseifList");
8996
NewElseSingleAst *__node_176 = 0;
8997
if (!parseNewElseSingle(&__node_176))
9001
expectedSymbol(AstNode::NewElseSingleKind, "newElseSingle");
9005
if (yytoken != Token_ENDIF)
9009
expectedToken(yytoken, Token_ENDIF, "endif");
9015
SemicolonOrCloseTagAst *__node_177 = 0;
9016
if (!parseSemicolonOrCloseTag(&__node_177))
9020
expectedSymbol(AstNode::SemicolonOrCloseTagKind, "semicolonOrCloseTag");
9025
else if (yytoken == Token_ARRAY
9026
|| yytoken == Token_ARRAY_CAST
9027
|| yytoken == Token_AT
9028
|| yytoken == Token_BACKTICK
9029
|| yytoken == Token_BANG
9030
|| yytoken == Token_BOOL_CAST
9031
|| yytoken == Token_BREAK
9032
|| yytoken == Token_CLASS_C
9033
|| yytoken == Token_CLONE
9034
|| yytoken == Token_CLOSE_TAG
9035
|| yytoken == Token_CONSTANT_ENCAPSED_STRING
9036
|| yytoken == Token_CONTINUE
9037
|| yytoken == Token_DEC
9038
|| yytoken == Token_DECLARE
9039
|| yytoken == Token_DNUMBER
9040
|| yytoken == Token_DO
9041
|| yytoken == Token_DOLLAR
9042
|| yytoken == Token_DOUBLE_CAST
9043
|| yytoken == Token_DOUBLE_QUOTE
9044
|| yytoken == Token_ECHO
9045
|| yytoken == Token_EMPTY
9046
|| yytoken == Token_EVAL
9047
|| yytoken == Token_EXIT
9048
|| yytoken == Token_FILE
9049
|| yytoken == Token_FOR
9050
|| yytoken == Token_FOREACH
9051
|| yytoken == Token_FUNC_C
9052
|| yytoken == Token_GLOBAL
9053
|| yytoken == Token_IF
9054
|| yytoken == Token_INC
9055
|| yytoken == Token_INCLUDE
9056
|| yytoken == Token_INCLUDE_ONCE
9057
|| yytoken == Token_INLINE_HTML
9058
|| yytoken == Token_INT_CAST
9059
|| yytoken == Token_ISSET
9060
|| yytoken == Token_LBRACE
9061
|| yytoken == Token_LINE
9062
|| yytoken == Token_LIST
9063
|| yytoken == Token_LNUMBER
9064
|| yytoken == Token_LPAREN
9065
|| yytoken == Token_METHOD_C
9066
|| yytoken == Token_MINUS
9067
|| yytoken == Token_NEW
9068
|| yytoken == Token_OBJECT_CAST
9069
|| yytoken == Token_OPEN_TAG
9070
|| yytoken == Token_OPEN_TAG_WITH_ECHO
9071
|| yytoken == Token_PLUS
9072
|| yytoken == Token_PRINT
9073
|| yytoken == Token_REQUIRE
9074
|| yytoken == Token_REQUIRE_ONCE
9075
|| yytoken == Token_RETURN
9076
|| yytoken == Token_SEMICOLON
9077
|| yytoken == Token_START_HEREDOC
9078
|| yytoken == Token_STATIC
9079
|| yytoken == Token_STRING
9080
|| yytoken == Token_STRING_CAST
9081
|| yytoken == Token_STRING_VARNAME
9082
|| yytoken == Token_SWITCH
9083
|| yytoken == Token_THROW
9084
|| yytoken == Token_TILDE
9085
|| yytoken == Token_TRY
9086
|| yytoken == Token_UNSET
9087
|| yytoken == Token_UNSET_CAST
9088
|| yytoken == Token_VARIABLE
9089
|| yytoken == Token_WHILE)
9091
StatementAst *__node_178 = 0;
9092
if (!parseStatement(&__node_178))
9096
expectedSymbol(AstNode::StatementKind, "statement");
9100
(*yynode)->ifStatement = __node_178;
9102
ElseifListAst *__node_179 = 0;
9103
if (!parseElseifList(&__node_179))
9107
expectedSymbol(AstNode::ElseifListKind, "elseifList");
9111
(*yynode)->elseifList = __node_179;
9113
ElseSingleAst *__node_180 = 0;
9114
if (!parseElseSingle(&__node_180))
9118
expectedSymbol(AstNode::ElseSingleKind, "elseSingle");
9122
(*yynode)->elseSingle = __node_180;
9130
else if (yytoken == Token_WHILE)
9132
if (yytoken != Token_WHILE)
9136
expectedToken(yytoken, Token_WHILE, "while");
9142
if (yytoken != Token_LPAREN)
9146
expectedToken(yytoken, Token_LPAREN, "(");
9152
ExprAst *__node_181 = 0;
9153
if (!parseExpr(&__node_181))
9157
expectedSymbol(AstNode::ExprKind, "expr");
9161
(*yynode)->whileExpr = __node_181;
9163
if (yytoken != Token_RPAREN)
9167
expectedToken(yytoken, Token_RPAREN, ")");
9173
WhileStatementAst *__node_182 = 0;
9174
if (!parseWhileStatement(&__node_182))
9178
expectedSymbol(AstNode::WhileStatementKind, "whileStatement");
9182
(*yynode)->whilteStatement = __node_182;
9185
else if (yytoken == Token_FOR)
9187
if (yytoken != Token_FOR)
9191
expectedToken(yytoken, Token_FOR, "for");
9197
if (yytoken != Token_LPAREN)
9201
expectedToken(yytoken, Token_LPAREN, "(");
9207
ForExprAst *__node_183 = 0;
9208
if (!parseForExpr(&__node_183))
9212
expectedSymbol(AstNode::ForExprKind, "forExpr");
9216
(*yynode)->forExpr1 = __node_183;
9218
if (yytoken != Token_SEMICOLON)
9222
expectedToken(yytoken, Token_SEMICOLON, ";");
9228
ForExprAst *__node_184 = 0;
9229
if (!parseForExpr(&__node_184))
9233
expectedSymbol(AstNode::ForExprKind, "forExpr");
9237
(*yynode)->forExpr2 = __node_184;
9239
if (yytoken != Token_SEMICOLON)
9243
expectedToken(yytoken, Token_SEMICOLON, ";");
9249
ForExprAst *__node_185 = 0;
9250
if (!parseForExpr(&__node_185))
9254
expectedSymbol(AstNode::ForExprKind, "forExpr");
9258
(*yynode)->forExpr3 = __node_185;
9260
if (yytoken != Token_RPAREN)
9264
expectedToken(yytoken, Token_RPAREN, ")");
9270
ForStatementAst *__node_186 = 0;
9271
if (!parseForStatement(&__node_186))
9275
expectedSymbol(AstNode::ForStatementKind, "forStatement");
9279
(*yynode)->forStatement = __node_186;
9282
else if (yytoken == Token_SWITCH)
9284
if (yytoken != Token_SWITCH)
9288
expectedToken(yytoken, Token_SWITCH, "switch");
9294
if (yytoken != Token_LPAREN)
9298
expectedToken(yytoken, Token_LPAREN, "(");
9304
ExprAst *__node_187 = 0;
9305
if (!parseExpr(&__node_187))
9309
expectedSymbol(AstNode::ExprKind, "expr");
9313
(*yynode)->swtichExpr = __node_187;
9315
if (yytoken != Token_RPAREN)
9319
expectedToken(yytoken, Token_RPAREN, ")");
9325
SwitchCaseListAst *__node_188 = 0;
9326
if (!parseSwitchCaseList(&__node_188))
9330
expectedSymbol(AstNode::SwitchCaseListKind, "switchCaseList");
9334
(*yynode)->switchCaseList = __node_188;
9337
else if (yytoken == Token_FOREACH)
9339
if (yytoken != Token_FOREACH)
9343
expectedToken(yytoken, Token_FOREACH, "foreach");
9349
if (yytoken != Token_LPAREN)
9353
expectedToken(yytoken, Token_LPAREN, "(");
9359
bool blockErrors_2 = blockErrors(true);
9360
qint64 try_startToken_2 = tokenStream->index() - 1;
9361
ParserState *try_startState_2 = copyCurrentState();
9363
VariableAst *__node_189 = 0;
9364
if (!parseVariable(&__node_189))
9368
(*yynode)->foreachVar = __node_189;
9370
if (yytoken != Token_AS)
9374
ForeachVariableAst *__node_190 = 0;
9375
if (!parseForeachVariable(&__node_190))
9379
(*yynode)->foreachVarAsVar = __node_190;
9382
blockErrors(blockErrors_2);
9383
if (try_startState_2)
9384
delete try_startState_2;
9386
if (false) // the only way to enter here is using goto
9389
if (try_startState_2)
9391
restoreState(try_startState_2);
9392
delete try_startState_2;
9394
blockErrors(blockErrors_2);
9395
rewind(try_startToken_2);
9397
ExprAst *__node_191 = 0;
9398
if (!parseExpr(&__node_191))
9402
expectedSymbol(AstNode::ExprKind, "expr");
9406
(*yynode)->foreachExpr = __node_191;
9408
if (yytoken != Token_AS)
9412
expectedToken(yytoken, Token_AS, "as");
9418
VariableIdentifierAst *__node_192 = 0;
9419
if (!parseVariableIdentifier(&__node_192))
9423
expectedSymbol(AstNode::VariableIdentifierKind, "variableIdentifier");
9427
(*yynode)->foreachExprAsVar = __node_192;
9431
if (yytoken == Token_DOUBLE_ARROW)
9433
if (yytoken != Token_DOUBLE_ARROW)
9437
expectedToken(yytoken, Token_DOUBLE_ARROW, "=>");
9443
ForeachVariableAst *__node_193 = 0;
9444
if (!parseForeachVariable(&__node_193))
9448
expectedSymbol(AstNode::ForeachVariableKind, "foreachVariable");
9452
(*yynode)->foreachVariable = __node_193;
9455
else if (true /*epsilon*/)
9462
if (yytoken != Token_RPAREN)
9466
expectedToken(yytoken, Token_RPAREN, ")");
9472
ForeachStatementAst *__node_194 = 0;
9473
if (!parseForeachStatement(&__node_194))
9477
expectedSymbol(AstNode::ForeachStatementKind, "foreachStatement");
9481
(*yynode)->foreachStatement = __node_194;
9484
else if (yytoken == Token_DECLARE)
9486
if (yytoken != Token_DECLARE)
9490
expectedToken(yytoken, Token_DECLARE, "declare");
9496
if (yytoken != Token_LPAREN)
9500
expectedToken(yytoken, Token_LPAREN, "(");
9506
DeclareItemAst *__node_195 = 0;
9507
if (!parseDeclareItem(&__node_195))
9511
expectedSymbol(AstNode::DeclareItemKind, "declareItem");
9515
(*yynode)->declareItem = __node_195;
9517
while (yytoken == Token_COMMA)
9519
if (yytoken != Token_COMMA)
9523
expectedToken(yytoken, Token_COMMA, ",");
9529
DeclareItemAst *__node_196 = 0;
9530
if (!parseDeclareItem(&__node_196))
9534
expectedSymbol(AstNode::DeclareItemKind, "declareItem");
9538
(*yynode)->declareItem = __node_196;
9541
if (yytoken != Token_RPAREN)
9545
expectedToken(yytoken, Token_RPAREN, ")");
9551
DeclareStatementAst *__node_197 = 0;
9552
if (!parseDeclareStatement(&__node_197))
9556
expectedSymbol(AstNode::DeclareStatementKind, "declareStatement");
9561
else if (yytoken == Token_SEMICOLON)
9563
if (yytoken != Token_SEMICOLON)
9567
expectedToken(yytoken, Token_SEMICOLON, ";");
9574
else if (yytoken == Token_TRY)
9576
if (yytoken != Token_TRY)
9580
expectedToken(yytoken, Token_TRY, "try");
9586
if (yytoken != Token_LBRACE)
9590
expectedToken(yytoken, Token_LBRACE, "{");
9596
InnerStatementListAst *__node_198 = 0;
9597
if (!parseInnerStatementList(&__node_198))
9601
expectedSymbol(AstNode::InnerStatementListKind, "innerStatementList");
9605
(*yynode)->statements = __node_198;
9607
if (yytoken != Token_RBRACE)
9611
expectedToken(yytoken, Token_RBRACE, "}");
9617
while (yytoken == Token_CATCH)
9619
CatchItemAst *__node_199 = 0;
9620
if (!parseCatchItem(&__node_199))
9624
expectedSymbol(AstNode::CatchItemKind, "catchItem");
9628
(*yynode)->catchesSequence = snoc((*yynode)->catchesSequence, __node_199, memoryPool);
9632
else if (yytoken == Token_UNSET)
9634
if (yytoken != Token_UNSET)
9638
expectedToken(yytoken, Token_UNSET, "unset");
9644
if (yytoken != Token_LPAREN)
9648
expectedToken(yytoken, Token_LPAREN, "(");
9654
VariableAst *__node_200 = 0;
9655
if (!parseVariable(&__node_200))
9659
expectedSymbol(AstNode::VariableKind, "variable");
9663
(*yynode)->unsetVariablesSequence = snoc((*yynode)->unsetVariablesSequence, __node_200, memoryPool);
9665
while (yytoken == Token_COMMA)
9667
if (yytoken != Token_COMMA)
9671
expectedToken(yytoken, Token_COMMA, ",");
9677
VariableAst *__node_201 = 0;
9678
if (!parseVariable(&__node_201))
9682
expectedSymbol(AstNode::VariableKind, "variable");
9686
(*yynode)->unsetVariablesSequence = snoc((*yynode)->unsetVariablesSequence, __node_201, memoryPool);
9689
if (yytoken != Token_RPAREN)
9693
expectedToken(yytoken, Token_RPAREN, ")");
9699
SemicolonOrCloseTagAst *__node_202 = 0;
9700
if (!parseSemicolonOrCloseTag(&__node_202))
9704
expectedSymbol(AstNode::SemicolonOrCloseTagKind, "semicolonOrCloseTag");
9709
else if (yytoken == Token_ARRAY
9710
|| yytoken == Token_ARRAY_CAST
9711
|| yytoken == Token_AT
9712
|| yytoken == Token_BACKTICK
9713
|| yytoken == Token_BANG
9714
|| yytoken == Token_BOOL_CAST
9715
|| yytoken == Token_CLASS_C
9716
|| yytoken == Token_CLONE
9717
|| yytoken == Token_CONSTANT_ENCAPSED_STRING
9718
|| yytoken == Token_DEC
9719
|| yytoken == Token_DNUMBER
9720
|| yytoken == Token_DOLLAR
9721
|| yytoken == Token_DOUBLE_CAST
9722
|| yytoken == Token_DOUBLE_QUOTE
9723
|| yytoken == Token_EMPTY
9724
|| yytoken == Token_EVAL
9725
|| yytoken == Token_EXIT
9726
|| yytoken == Token_FILE
9727
|| yytoken == Token_FUNC_C
9728
|| yytoken == Token_INC
9729
|| yytoken == Token_INCLUDE
9730
|| yytoken == Token_INCLUDE_ONCE
9731
|| yytoken == Token_INT_CAST
9732
|| yytoken == Token_ISSET
9733
|| yytoken == Token_LINE
9734
|| yytoken == Token_LIST
9735
|| yytoken == Token_LNUMBER
9736
|| yytoken == Token_LPAREN
9737
|| yytoken == Token_METHOD_C
9738
|| yytoken == Token_MINUS
9739
|| yytoken == Token_NEW
9740
|| yytoken == Token_OBJECT_CAST
9741
|| yytoken == Token_PLUS
9742
|| yytoken == Token_PRINT
9743
|| yytoken == Token_REQUIRE
9744
|| yytoken == Token_REQUIRE_ONCE
9745
|| yytoken == Token_START_HEREDOC
9746
|| yytoken == Token_STRING
9747
|| yytoken == Token_STRING_CAST
9748
|| yytoken == Token_STRING_VARNAME
9749
|| yytoken == Token_TILDE
9750
|| yytoken == Token_UNSET_CAST
9751
|| yytoken == Token_VARIABLE)
9753
ExprAst *__node_203 = 0;
9754
if (!parseExpr(&__node_203))
9758
expectedSymbol(AstNode::ExprKind, "expr");
9762
(*yynode)->expr = __node_203;
9764
SemicolonOrCloseTagAst *__node_204 = 0;
9765
if (!parseSemicolonOrCloseTag(&__node_204))
9769
expectedSymbol(AstNode::SemicolonOrCloseTagKind, "semicolonOrCloseTag");
9774
else if (yytoken == Token_DO)
9776
if (yytoken != Token_DO)
9780
expectedToken(yytoken, Token_DO, "do");
9786
StatementAst *__node_205 = 0;
9787
if (!parseStatement(&__node_205))
9791
expectedSymbol(AstNode::StatementKind, "statement");
9795
(*yynode)->doStatement = __node_205;
9797
if (yytoken != Token_WHILE)
9801
expectedToken(yytoken, Token_WHILE, "while");
9807
if (yytoken != Token_LPAREN)
9811
expectedToken(yytoken, Token_LPAREN, "(");
9817
ExprAst *__node_206 = 0;
9818
if (!parseExpr(&__node_206))
9822
expectedSymbol(AstNode::ExprKind, "expr");
9826
(*yynode)->whilteExpr = __node_206;
9828
if (yytoken != Token_RPAREN)
9832
expectedToken(yytoken, Token_RPAREN, ")");
9838
SemicolonOrCloseTagAst *__node_207 = 0;
9839
if (!parseSemicolonOrCloseTag(&__node_207))
9843
expectedSymbol(AstNode::SemicolonOrCloseTagKind, "semicolonOrCloseTag");
9848
else if (yytoken == Token_BREAK)
9850
if (yytoken != Token_BREAK)
9854
expectedToken(yytoken, Token_BREAK, "break");
9860
if (yytoken == Token_ARRAY
9861
|| yytoken == Token_ARRAY_CAST
9862
|| yytoken == Token_AT
9863
|| yytoken == Token_BACKTICK
9864
|| yytoken == Token_BANG
9865
|| yytoken == Token_BOOL_CAST
9866
|| yytoken == Token_CLASS_C
9867
|| yytoken == Token_CLONE
9868
|| yytoken == Token_CONSTANT_ENCAPSED_STRING
9869
|| yytoken == Token_DEC
9870
|| yytoken == Token_DNUMBER
9871
|| yytoken == Token_DOLLAR
9872
|| yytoken == Token_DOUBLE_CAST
9873
|| yytoken == Token_DOUBLE_QUOTE
9874
|| yytoken == Token_EMPTY
9875
|| yytoken == Token_EVAL
9876
|| yytoken == Token_EXIT
9877
|| yytoken == Token_FILE
9878
|| yytoken == Token_FUNC_C
9879
|| yytoken == Token_INC
9880
|| yytoken == Token_INCLUDE
9881
|| yytoken == Token_INCLUDE_ONCE
9882
|| yytoken == Token_INT_CAST
9883
|| yytoken == Token_ISSET
9884
|| yytoken == Token_LINE
9885
|| yytoken == Token_LIST
9886
|| yytoken == Token_LNUMBER
9887
|| yytoken == Token_LPAREN
9888
|| yytoken == Token_METHOD_C
9889
|| yytoken == Token_MINUS
9890
|| yytoken == Token_NEW
9891
|| yytoken == Token_OBJECT_CAST
9892
|| yytoken == Token_PLUS
9893
|| yytoken == Token_PRINT
9894
|| yytoken == Token_REQUIRE
9895
|| yytoken == Token_REQUIRE_ONCE
9896
|| yytoken == Token_START_HEREDOC
9897
|| yytoken == Token_STRING
9898
|| yytoken == Token_STRING_CAST
9899
|| yytoken == Token_STRING_VARNAME
9900
|| yytoken == Token_TILDE
9901
|| yytoken == Token_UNSET_CAST
9902
|| yytoken == Token_VARIABLE)
9904
ExprAst *__node_208 = 0;
9905
if (!parseExpr(&__node_208))
9909
expectedSymbol(AstNode::ExprKind, "expr");
9913
(*yynode)->breakExpr = __node_208;
9916
else if (true /*epsilon*/)
9923
SemicolonOrCloseTagAst *__node_209 = 0;
9924
if (!parseSemicolonOrCloseTag(&__node_209))
9928
expectedSymbol(AstNode::SemicolonOrCloseTagKind, "semicolonOrCloseTag");
9933
else if (yytoken == Token_CONTINUE)
9935
if (yytoken != Token_CONTINUE)
9939
expectedToken(yytoken, Token_CONTINUE, "continue");
9945
if (yytoken == Token_ARRAY
9946
|| yytoken == Token_ARRAY_CAST
9947
|| yytoken == Token_AT
9948
|| yytoken == Token_BACKTICK
9949
|| yytoken == Token_BANG
9950
|| yytoken == Token_BOOL_CAST
9951
|| yytoken == Token_CLASS_C
9952
|| yytoken == Token_CLONE
9953
|| yytoken == Token_CONSTANT_ENCAPSED_STRING
9954
|| yytoken == Token_DEC
9955
|| yytoken == Token_DNUMBER
9956
|| yytoken == Token_DOLLAR
9957
|| yytoken == Token_DOUBLE_CAST
9958
|| yytoken == Token_DOUBLE_QUOTE
9959
|| yytoken == Token_EMPTY
9960
|| yytoken == Token_EVAL
9961
|| yytoken == Token_EXIT
9962
|| yytoken == Token_FILE
9963
|| yytoken == Token_FUNC_C
9964
|| yytoken == Token_INC
9965
|| yytoken == Token_INCLUDE
9966
|| yytoken == Token_INCLUDE_ONCE
9967
|| yytoken == Token_INT_CAST
9968
|| yytoken == Token_ISSET
9969
|| yytoken == Token_LINE
9970
|| yytoken == Token_LIST
9971
|| yytoken == Token_LNUMBER
9972
|| yytoken == Token_LPAREN
9973
|| yytoken == Token_METHOD_C
9974
|| yytoken == Token_MINUS
9975
|| yytoken == Token_NEW
9976
|| yytoken == Token_OBJECT_CAST
9977
|| yytoken == Token_PLUS
9978
|| yytoken == Token_PRINT
9979
|| yytoken == Token_REQUIRE
9980
|| yytoken == Token_REQUIRE_ONCE
9981
|| yytoken == Token_START_HEREDOC
9982
|| yytoken == Token_STRING
9983
|| yytoken == Token_STRING_CAST
9984
|| yytoken == Token_STRING_VARNAME
9985
|| yytoken == Token_TILDE
9986
|| yytoken == Token_UNSET_CAST
9987
|| yytoken == Token_VARIABLE)
9989
ExprAst *__node_210 = 0;
9990
if (!parseExpr(&__node_210))
9994
expectedSymbol(AstNode::ExprKind, "expr");
9998
(*yynode)->continueExpr = __node_210;
10001
else if (true /*epsilon*/)
10008
SemicolonOrCloseTagAst *__node_211 = 0;
10009
if (!parseSemicolonOrCloseTag(&__node_211))
10013
expectedSymbol(AstNode::SemicolonOrCloseTagKind, "semicolonOrCloseTag");
10018
else if (yytoken == Token_RETURN)
10020
if (yytoken != Token_RETURN)
10024
expectedToken(yytoken, Token_RETURN, "return");
10030
if (yytoken == Token_ARRAY
10031
|| yytoken == Token_ARRAY_CAST
10032
|| yytoken == Token_AT
10033
|| yytoken == Token_BACKTICK
10034
|| yytoken == Token_BANG
10035
|| yytoken == Token_BOOL_CAST
10036
|| yytoken == Token_CLASS_C
10037
|| yytoken == Token_CLONE
10038
|| yytoken == Token_CONSTANT_ENCAPSED_STRING
10039
|| yytoken == Token_DEC
10040
|| yytoken == Token_DNUMBER
10041
|| yytoken == Token_DOLLAR
10042
|| yytoken == Token_DOUBLE_CAST
10043
|| yytoken == Token_DOUBLE_QUOTE
10044
|| yytoken == Token_EMPTY
10045
|| yytoken == Token_EVAL
10046
|| yytoken == Token_EXIT
10047
|| yytoken == Token_FILE
10048
|| yytoken == Token_FUNC_C
10049
|| yytoken == Token_INC
10050
|| yytoken == Token_INCLUDE
10051
|| yytoken == Token_INCLUDE_ONCE
10052
|| yytoken == Token_INT_CAST
10053
|| yytoken == Token_ISSET
10054
|| yytoken == Token_LINE
10055
|| yytoken == Token_LIST
10056
|| yytoken == Token_LNUMBER
10057
|| yytoken == Token_LPAREN
10058
|| yytoken == Token_METHOD_C
10059
|| yytoken == Token_MINUS
10060
|| yytoken == Token_NEW
10061
|| yytoken == Token_OBJECT_CAST
10062
|| yytoken == Token_PLUS
10063
|| yytoken == Token_PRINT
10064
|| yytoken == Token_REQUIRE
10065
|| yytoken == Token_REQUIRE_ONCE
10066
|| yytoken == Token_START_HEREDOC
10067
|| yytoken == Token_STRING
10068
|| yytoken == Token_STRING_CAST
10069
|| yytoken == Token_STRING_VARNAME
10070
|| yytoken == Token_TILDE
10071
|| yytoken == Token_UNSET_CAST
10072
|| yytoken == Token_VARIABLE)
10074
ExprAst *__node_212 = 0;
10075
if (!parseExpr(&__node_212))
10079
expectedSymbol(AstNode::ExprKind, "expr");
10083
(*yynode)->returnExpr = __node_212;
10086
else if (true /*epsilon*/)
10093
SemicolonOrCloseTagAst *__node_213 = 0;
10094
if (!parseSemicolonOrCloseTag(&__node_213))
10098
expectedSymbol(AstNode::SemicolonOrCloseTagKind, "semicolonOrCloseTag");
10103
else if (yytoken == Token_GLOBAL)
10105
if (yytoken != Token_GLOBAL)
10109
expectedToken(yytoken, Token_GLOBAL, "global");
10115
GlobalVarAst *__node_214 = 0;
10116
if (!parseGlobalVar(&__node_214))
10120
expectedSymbol(AstNode::GlobalVarKind, "globalVar");
10124
(*yynode)->globalVarsSequence = snoc((*yynode)->globalVarsSequence, __node_214, memoryPool);
10126
while (yytoken == Token_COMMA)
10128
if (yytoken != Token_COMMA)
10132
expectedToken(yytoken, Token_COMMA, ",");
10138
GlobalVarAst *__node_215 = 0;
10139
if (!parseGlobalVar(&__node_215))
10143
expectedSymbol(AstNode::GlobalVarKind, "globalVar");
10147
(*yynode)->globalVarsSequence = snoc((*yynode)->globalVarsSequence, __node_215, memoryPool);
10150
SemicolonOrCloseTagAst *__node_216 = 0;
10151
if (!parseSemicolonOrCloseTag(&__node_216))
10155
expectedSymbol(AstNode::SemicolonOrCloseTagKind, "semicolonOrCloseTag");
10160
else if (yytoken == Token_STATIC)
10162
if (yytoken != Token_STATIC)
10166
expectedToken(yytoken, Token_STATIC, "static");
10172
StaticVarAst *__node_217 = 0;
10173
if (!parseStaticVar(&__node_217))
10177
expectedSymbol(AstNode::StaticVarKind, "staticVar");
10181
(*yynode)->staticVarsSequence = snoc((*yynode)->staticVarsSequence, __node_217, memoryPool);
10183
while (yytoken == Token_COMMA)
10185
if (yytoken != Token_COMMA)
10189
expectedToken(yytoken, Token_COMMA, ",");
10195
StaticVarAst *__node_218 = 0;
10196
if (!parseStaticVar(&__node_218))
10200
expectedSymbol(AstNode::StaticVarKind, "staticVar");
10204
(*yynode)->staticVarsSequence = snoc((*yynode)->staticVarsSequence, __node_218, memoryPool);
10207
SemicolonOrCloseTagAst *__node_219 = 0;
10208
if (!parseSemicolonOrCloseTag(&__node_219))
10212
expectedSymbol(AstNode::SemicolonOrCloseTagKind, "semicolonOrCloseTag");
10217
else if (yytoken == Token_ECHO)
10219
if (yytoken != Token_ECHO)
10223
expectedToken(yytoken, Token_ECHO, "echo");
10229
ExprAst *__node_220 = 0;
10230
if (!parseExpr(&__node_220))
10234
expectedSymbol(AstNode::ExprKind, "expr");
10238
(*yynode)->echoExprsSequence = snoc((*yynode)->echoExprsSequence, __node_220, memoryPool);
10240
while (yytoken == Token_COMMA)
10242
if (yytoken != Token_COMMA)
10246
expectedToken(yytoken, Token_COMMA, ",");
10252
ExprAst *__node_221 = 0;
10253
if (!parseExpr(&__node_221))
10257
expectedSymbol(AstNode::ExprKind, "expr");
10261
(*yynode)->echoExprsSequence = snoc((*yynode)->echoExprsSequence, __node_221, memoryPool);
10264
SemicolonOrCloseTagAst *__node_222 = 0;
10265
if (!parseSemicolonOrCloseTag(&__node_222))
10269
expectedSymbol(AstNode::SemicolonOrCloseTagKind, "semicolonOrCloseTag");
10274
else if (yytoken == Token_THROW)
10276
if (yytoken != Token_THROW)
10280
expectedToken(yytoken, Token_THROW, "throw");
10286
ExprAst *__node_223 = 0;
10287
if (!parseExpr(&__node_223))
10291
expectedSymbol(AstNode::ExprKind, "expr");
10295
(*yynode)->throwExpr = __node_223;
10297
SemicolonOrCloseTagAst *__node_224 = 0;
10298
if (!parseSemicolonOrCloseTag(&__node_224))
10302
expectedSymbol(AstNode::SemicolonOrCloseTagKind, "semicolonOrCloseTag");
10307
else if (yytoken == Token_CLOSE_TAG)
10309
if (yytoken != Token_CLOSE_TAG)
10313
expectedToken(yytoken, Token_CLOSE_TAG, "?>");
10320
else if (yytoken == Token_OPEN_TAG)
10322
if (yytoken != Token_OPEN_TAG)
10326
expectedToken(yytoken, Token_OPEN_TAG, "<?");
10333
else if (yytoken == Token_OPEN_TAG_WITH_ECHO)
10335
if (yytoken != Token_OPEN_TAG_WITH_ECHO)
10339
expectedToken(yytoken, Token_OPEN_TAG_WITH_ECHO, "<?=");
10345
ExprAst *__node_225 = 0;
10346
if (!parseExpr(&__node_225))
10350
expectedSymbol(AstNode::ExprKind, "expr");
10354
(*yynode)->expr = __node_225;
10356
SemicolonOrCloseTagAst *__node_226 = 0;
10357
if (!parseSemicolonOrCloseTag(&__node_226))
10361
expectedSymbol(AstNode::SemicolonOrCloseTagKind, "semicolonOrCloseTag");
10366
else if (yytoken == Token_INLINE_HTML)
10368
if (yytoken != Token_INLINE_HTML)
10372
expectedToken(yytoken, Token_INLINE_HTML, "inline html");
10389
(*yynode)->endToken = tokenStream->index() - 2;
10394
bool Parser::parseStaticArrayPairValue(StaticArrayPairValueAst **yynode)
10396
*yynode = create<StaticArrayPairValueAst>();
10398
(*yynode)->startToken = tokenStream->index() - 1;
10400
if (yytoken == Token_ARRAY
10401
|| yytoken == Token_CLASS_C
10402
|| yytoken == Token_CONSTANT_ENCAPSED_STRING
10403
|| yytoken == Token_DNUMBER
10404
|| yytoken == Token_FILE
10405
|| yytoken == Token_FUNC_C
10406
|| yytoken == Token_LINE
10407
|| yytoken == Token_LNUMBER
10408
|| yytoken == Token_METHOD_C
10409
|| yytoken == Token_MINUS
10410
|| yytoken == Token_PLUS
10411
|| yytoken == Token_STRING)
10413
StaticScalarAst *__node_227 = 0;
10414
if (!parseStaticScalar(&__node_227))
10418
expectedSymbol(AstNode::StaticScalarKind, "staticScalar");
10422
(*yynode)->val1Sequence = snoc((*yynode)->val1Sequence, __node_227, memoryPool);
10424
if (yytoken == Token_DOUBLE_ARROW)
10426
if (yytoken != Token_DOUBLE_ARROW)
10430
expectedToken(yytoken, Token_DOUBLE_ARROW, "=>");
10436
StaticScalarAst *__node_228 = 0;
10437
if (!parseStaticScalar(&__node_228))
10441
expectedSymbol(AstNode::StaticScalarKind, "staticScalar");
10445
(*yynode)->val2Sequence = snoc((*yynode)->val2Sequence, __node_228, memoryPool);
10448
else if (true /*epsilon*/)
10461
(*yynode)->endToken = tokenStream->index() - 2;
10466
bool Parser::parseStaticMember(StaticMemberAst **yynode)
10468
*yynode = create<StaticMemberAst>();
10470
(*yynode)->startToken = tokenStream->index() - 1;
10472
if (yytoken == Token_STRING)
10474
IdentifierAst *__node_229 = 0;
10475
if (!parseIdentifier(&__node_229))
10479
expectedSymbol(AstNode::IdentifierKind, "identifier");
10483
(*yynode)->className = __node_229;
10485
if (yytoken != Token_PAAMAYIM_NEKUDOTAYIM)
10489
expectedToken(yytoken, Token_PAAMAYIM_NEKUDOTAYIM, "::");
10495
VariableWithoutObjectsAst *__node_230 = 0;
10496
if (!parseVariableWithoutObjects(&__node_230))
10500
expectedSymbol(AstNode::VariableWithoutObjectsKind, "variableWithoutObjects");
10504
(*yynode)->variable = __node_230;
10512
(*yynode)->endToken = tokenStream->index() - 2;
10517
bool Parser::parseStaticScalar(StaticScalarAst **yynode)
10519
*yynode = create<StaticScalarAst>();
10521
(*yynode)->startToken = tokenStream->index() - 1;
10522
(*yynode)->array = -1;
10524
if (yytoken == Token_ARRAY
10525
|| yytoken == Token_CLASS_C
10526
|| yytoken == Token_CONSTANT_ENCAPSED_STRING
10527
|| yytoken == Token_DNUMBER
10528
|| yytoken == Token_FILE
10529
|| yytoken == Token_FUNC_C
10530
|| yytoken == Token_LINE
10531
|| yytoken == Token_LNUMBER
10532
|| yytoken == Token_METHOD_C
10533
|| yytoken == Token_MINUS
10534
|| yytoken == Token_PLUS
10535
|| yytoken == Token_STRING)
10537
if (yytoken == Token_CLASS_C
10538
|| yytoken == Token_CONSTANT_ENCAPSED_STRING
10539
|| yytoken == Token_DNUMBER
10540
|| yytoken == Token_FILE
10541
|| yytoken == Token_FUNC_C
10542
|| yytoken == Token_LINE
10543
|| yytoken == Token_LNUMBER
10544
|| yytoken == Token_METHOD_C)
10546
CommonScalarAst *__node_231 = 0;
10547
if (!parseCommonScalar(&__node_231))
10551
expectedSymbol(AstNode::CommonScalarKind, "commonScalar");
10555
(*yynode)->value = __node_231;
10558
else if (yytoken == Token_STRING)
10560
ConstantOrClassConstAst *__node_232 = 0;
10561
if (!parseConstantOrClassConst(&__node_232))
10565
expectedSymbol(AstNode::ConstantOrClassConstKind, "constantOrClassConst");
10569
(*yynode)->constantOrClassConst = __node_232;
10572
else if (yytoken == Token_PLUS)
10574
if (yytoken != Token_PLUS)
10578
expectedToken(yytoken, Token_PLUS, "+");
10584
StaticScalarAst *__node_233 = 0;
10585
if (!parseStaticScalar(&__node_233))
10589
expectedSymbol(AstNode::StaticScalarKind, "staticScalar");
10593
(*yynode)->plusValue = __node_233;
10596
else if (yytoken == Token_MINUS)
10598
if (yytoken != Token_MINUS)
10602
expectedToken(yytoken, Token_MINUS, "-");
10608
StaticScalarAst *__node_234 = 0;
10609
if (!parseStaticScalar(&__node_234))
10613
expectedSymbol(AstNode::StaticScalarKind, "staticScalar");
10617
(*yynode)->minusValue = __node_234;
10620
else if (yytoken == Token_ARRAY)
10622
if (yytoken != Token_ARRAY)
10626
expectedToken(yytoken, Token_ARRAY, "array");
10630
(*yynode)->array = tokenStream->index() - 1;
10633
if (yytoken != Token_LPAREN)
10637
expectedToken(yytoken, Token_LPAREN, "(");
10643
if (yytoken == Token_ARRAY
10644
|| yytoken == Token_CLASS_C
10645
|| yytoken == Token_CONSTANT_ENCAPSED_STRING
10646
|| yytoken == Token_DNUMBER
10647
|| yytoken == Token_FILE
10648
|| yytoken == Token_FUNC_C
10649
|| yytoken == Token_LINE
10650
|| yytoken == Token_LNUMBER
10651
|| yytoken == Token_METHOD_C
10652
|| yytoken == Token_MINUS
10653
|| yytoken == Token_PLUS
10654
|| yytoken == Token_STRING)
10656
StaticArrayPairValueAst *__node_235 = 0;
10657
if (!parseStaticArrayPairValue(&__node_235))
10661
expectedSymbol(AstNode::StaticArrayPairValueKind, "staticArrayPairValue");
10665
(*yynode)->arrayValuesSequence = snoc((*yynode)->arrayValuesSequence, __node_235, memoryPool);
10667
while (yytoken == Token_COMMA)
10669
if (yytoken != Token_COMMA)
10673
expectedToken(yytoken, Token_COMMA, ",");
10679
if (yytoken == Token_RPAREN)
10683
StaticArrayPairValueAst *__node_236 = 0;
10684
if (!parseStaticArrayPairValue(&__node_236))
10688
expectedSymbol(AstNode::StaticArrayPairValueKind, "staticArrayPairValue");
10692
(*yynode)->arrayValuesSequence = snoc((*yynode)->arrayValuesSequence, __node_236, memoryPool);
10696
else if (true /*epsilon*/)
10703
if (yytoken != Token_RPAREN)
10707
expectedToken(yytoken, Token_RPAREN, ")");
10724
(*yynode)->endToken = tokenStream->index() - 2;
10729
bool Parser::parseStaticVar(StaticVarAst **yynode)
10731
*yynode = create<StaticVarAst>();
10733
(*yynode)->startToken = tokenStream->index() - 1;
10735
if (yytoken == Token_VARIABLE)
10737
VariableIdentifierAst *__node_237 = 0;
10738
if (!parseVariableIdentifier(&__node_237))
10742
expectedSymbol(AstNode::VariableIdentifierKind, "variableIdentifier");
10746
(*yynode)->var = __node_237;
10748
if (yytoken == Token_ASSIGN)
10750
if (yytoken != Token_ASSIGN)
10754
expectedToken(yytoken, Token_ASSIGN, "=");
10760
StaticScalarAst *__node_238 = 0;
10761
if (!parseStaticScalar(&__node_238))
10765
expectedSymbol(AstNode::StaticScalarKind, "staticScalar");
10769
(*yynode)->value = __node_238;
10772
else if (true /*epsilon*/)
10785
(*yynode)->endToken = tokenStream->index() - 2;
10790
bool Parser::parseSwitchCaseList(SwitchCaseListAst **yynode)
10792
*yynode = create<SwitchCaseListAst>();
10794
(*yynode)->startToken = tokenStream->index() - 1;
10796
if (yytoken == Token_COLON
10797
|| yytoken == Token_LBRACE)
10799
if (yytoken == Token_LBRACE)
10801
if (yytoken != Token_LBRACE)
10805
expectedToken(yytoken, Token_LBRACE, "{");
10811
if (yytoken == Token_SEMICOLON)
10813
if (yytoken != Token_SEMICOLON)
10817
expectedToken(yytoken, Token_SEMICOLON, ";");
10824
else if (true /*epsilon*/)
10831
CaseListAst *__node_239 = 0;
10832
if (!parseCaseList(&__node_239))
10836
expectedSymbol(AstNode::CaseListKind, "caseList");
10840
(*yynode)->caseList = __node_239;
10842
if (yytoken != Token_RBRACE)
10846
expectedToken(yytoken, Token_RBRACE, "}");
10853
else if (yytoken == Token_COLON)
10855
if (yytoken != Token_COLON)
10859
expectedToken(yytoken, Token_COLON, ":");
10865
if (yytoken == Token_SEMICOLON)
10867
if (yytoken != Token_SEMICOLON)
10871
expectedToken(yytoken, Token_SEMICOLON, ";");
10878
else if (true /*epsilon*/)
10885
CaseListAst *__node_240 = 0;
10886
if (!parseCaseList(&__node_240))
10890
expectedSymbol(AstNode::CaseListKind, "caseList");
10894
(*yynode)->caseList = __node_240;
10896
if (yytoken != Token_ENDSWITCH)
10900
expectedToken(yytoken, Token_ENDSWITCH, "endswitch");
10906
SemicolonOrCloseTagAst *__node_241 = 0;
10907
if (!parseSemicolonOrCloseTag(&__node_241))
10911
expectedSymbol(AstNode::SemicolonOrCloseTagKind, "semicolonOrCloseTag");
10926
(*yynode)->endToken = tokenStream->index() - 2;
10931
bool Parser::parseTopStatement(TopStatementAst **yynode)
10933
*yynode = create<TopStatementAst>();
10935
(*yynode)->startToken = tokenStream->index() - 1;
10937
if (yytoken == Token_ABSTRACT
10938
|| yytoken == Token_ARRAY
10939
|| yytoken == Token_ARRAY_CAST
10940
|| yytoken == Token_AT
10941
|| yytoken == Token_BACKTICK
10942
|| yytoken == Token_BANG
10943
|| yytoken == Token_BOOL_CAST
10944
|| yytoken == Token_BREAK
10945
|| yytoken == Token_CLASS
10946
|| yytoken == Token_CLASS_C
10947
|| yytoken == Token_CLONE
10948
|| yytoken == Token_CLOSE_TAG
10949
|| yytoken == Token_CONSTANT_ENCAPSED_STRING
10950
|| yytoken == Token_CONTINUE
10951
|| yytoken == Token_DEC
10952
|| yytoken == Token_DECLARE
10953
|| yytoken == Token_DNUMBER
10954
|| yytoken == Token_DO
10955
|| yytoken == Token_DOLLAR
10956
|| yytoken == Token_DOUBLE_CAST
10957
|| yytoken == Token_DOUBLE_QUOTE
10958
|| yytoken == Token_ECHO
10959
|| yytoken == Token_EMPTY
10960
|| yytoken == Token_EVAL
10961
|| yytoken == Token_EXIT
10962
|| yytoken == Token_FILE
10963
|| yytoken == Token_FINAL
10964
|| yytoken == Token_FOR
10965
|| yytoken == Token_FOREACH
10966
|| yytoken == Token_FUNCTION
10967
|| yytoken == Token_FUNC_C
10968
|| yytoken == Token_GLOBAL
10969
|| yytoken == Token_HALT_COMPILER
10970
|| yytoken == Token_IF
10971
|| yytoken == Token_INC
10972
|| yytoken == Token_INCLUDE
10973
|| yytoken == Token_INCLUDE_ONCE
10974
|| yytoken == Token_INLINE_HTML
10975
|| yytoken == Token_INTERFACE
10976
|| yytoken == Token_INT_CAST
10977
|| yytoken == Token_ISSET
10978
|| yytoken == Token_LBRACE
10979
|| yytoken == Token_LINE
10980
|| yytoken == Token_LIST
10981
|| yytoken == Token_LNUMBER
10982
|| yytoken == Token_LPAREN
10983
|| yytoken == Token_METHOD_C
10984
|| yytoken == Token_MINUS
10985
|| yytoken == Token_NEW
10986
|| yytoken == Token_OBJECT_CAST
10987
|| yytoken == Token_OPEN_TAG
10988
|| yytoken == Token_OPEN_TAG_WITH_ECHO
10989
|| yytoken == Token_PLUS
10990
|| yytoken == Token_PRINT
10991
|| yytoken == Token_REQUIRE
10992
|| yytoken == Token_REQUIRE_ONCE
10993
|| yytoken == Token_RETURN
10994
|| yytoken == Token_SEMICOLON
10995
|| yytoken == Token_START_HEREDOC
10996
|| yytoken == Token_STATIC
10997
|| yytoken == Token_STRING
10998
|| yytoken == Token_STRING_CAST
10999
|| yytoken == Token_STRING_VARNAME
11000
|| yytoken == Token_SWITCH
11001
|| yytoken == Token_THROW
11002
|| yytoken == Token_TILDE
11003
|| yytoken == Token_TRY
11004
|| yytoken == Token_UNSET
11005
|| yytoken == Token_UNSET_CAST
11006
|| yytoken == Token_VARIABLE
11007
|| yytoken == Token_WHILE)
11009
if (yytoken == Token_ARRAY
11010
|| yytoken == Token_ARRAY_CAST
11011
|| yytoken == Token_AT
11012
|| yytoken == Token_BACKTICK
11013
|| yytoken == Token_BANG
11014
|| yytoken == Token_BOOL_CAST
11015
|| yytoken == Token_BREAK
11016
|| yytoken == Token_CLASS_C
11017
|| yytoken == Token_CLONE
11018
|| yytoken == Token_CLOSE_TAG
11019
|| yytoken == Token_CONSTANT_ENCAPSED_STRING
11020
|| yytoken == Token_CONTINUE
11021
|| yytoken == Token_DEC
11022
|| yytoken == Token_DECLARE
11023
|| yytoken == Token_DNUMBER
11024
|| yytoken == Token_DO
11025
|| yytoken == Token_DOLLAR
11026
|| yytoken == Token_DOUBLE_CAST
11027
|| yytoken == Token_DOUBLE_QUOTE
11028
|| yytoken == Token_ECHO
11029
|| yytoken == Token_EMPTY
11030
|| yytoken == Token_EVAL
11031
|| yytoken == Token_EXIT
11032
|| yytoken == Token_FILE
11033
|| yytoken == Token_FOR
11034
|| yytoken == Token_FOREACH
11035
|| yytoken == Token_FUNC_C
11036
|| yytoken == Token_GLOBAL
11037
|| yytoken == Token_IF
11038
|| yytoken == Token_INC
11039
|| yytoken == Token_INCLUDE
11040
|| yytoken == Token_INCLUDE_ONCE
11041
|| yytoken == Token_INLINE_HTML
11042
|| yytoken == Token_INT_CAST
11043
|| yytoken == Token_ISSET
11044
|| yytoken == Token_LBRACE
11045
|| yytoken == Token_LINE
11046
|| yytoken == Token_LIST
11047
|| yytoken == Token_LNUMBER
11048
|| yytoken == Token_LPAREN
11049
|| yytoken == Token_METHOD_C
11050
|| yytoken == Token_MINUS
11051
|| yytoken == Token_NEW
11052
|| yytoken == Token_OBJECT_CAST
11053
|| yytoken == Token_OPEN_TAG
11054
|| yytoken == Token_OPEN_TAG_WITH_ECHO
11055
|| yytoken == Token_PLUS
11056
|| yytoken == Token_PRINT
11057
|| yytoken == Token_REQUIRE
11058
|| yytoken == Token_REQUIRE_ONCE
11059
|| yytoken == Token_RETURN
11060
|| yytoken == Token_SEMICOLON
11061
|| yytoken == Token_START_HEREDOC
11062
|| yytoken == Token_STATIC
11063
|| yytoken == Token_STRING
11064
|| yytoken == Token_STRING_CAST
11065
|| yytoken == Token_STRING_VARNAME
11066
|| yytoken == Token_SWITCH
11067
|| yytoken == Token_THROW
11068
|| yytoken == Token_TILDE
11069
|| yytoken == Token_TRY
11070
|| yytoken == Token_UNSET
11071
|| yytoken == Token_UNSET_CAST
11072
|| yytoken == Token_VARIABLE
11073
|| yytoken == Token_WHILE)
11075
StatementAst *__node_242 = 0;
11076
if (!parseStatement(&__node_242))
11080
expectedSymbol(AstNode::StatementKind, "statement");
11084
(*yynode)->statement = __node_242;
11087
else if (yytoken == Token_FUNCTION)
11089
FunctionDeclarationStatementAst *__node_243 = 0;
11090
if (!parseFunctionDeclarationStatement(&__node_243))
11094
expectedSymbol(AstNode::FunctionDeclarationStatementKind, "functionDeclarationStatement");
11098
(*yynode)->functionDeclaration = __node_243;
11101
else if (yytoken == Token_ABSTRACT
11102
|| yytoken == Token_CLASS
11103
|| yytoken == Token_FINAL)
11105
ClassDeclarationStatementAst *__node_244 = 0;
11106
if (!parseClassDeclarationStatement(&__node_244))
11110
expectedSymbol(AstNode::ClassDeclarationStatementKind, "classDeclarationStatement");
11114
(*yynode)->classDeclaration = __node_244;
11117
else if (yytoken == Token_INTERFACE)
11119
InterfaceDeclarationStatementAst *__node_245 = 0;
11120
if (!parseInterfaceDeclarationStatement(&__node_245))
11124
expectedSymbol(AstNode::InterfaceDeclarationStatementKind, "interfaceDeclarationStatement");
11128
(*yynode)->interfaceDeclaration = __node_245;
11131
else if (yytoken == Token_HALT_COMPILER)
11133
if (yytoken != Token_HALT_COMPILER)
11137
expectedToken(yytoken, Token_HALT_COMPILER, "halt compiler");
11143
if (yytoken != Token_LPAREN)
11147
expectedToken(yytoken, Token_LPAREN, "(");
11153
if (yytoken != Token_RPAREN)
11157
expectedToken(yytoken, Token_RPAREN, ")");
11163
if (yytoken != Token_SEMICOLON)
11167
expectedToken(yytoken, Token_SEMICOLON, ";");
11184
(*yynode)->endToken = tokenStream->index() - 2;
11189
bool Parser::parseUnaryExpression(UnaryExpressionAst **yynode)
11191
*yynode = create<UnaryExpressionAst>();
11193
(*yynode)->startToken = tokenStream->index() - 1;
11195
if (yytoken == Token_ARRAY
11196
|| yytoken == Token_ARRAY_CAST
11197
|| yytoken == Token_AT
11198
|| yytoken == Token_BACKTICK
11199
|| yytoken == Token_BANG
11200
|| yytoken == Token_BOOL_CAST
11201
|| yytoken == Token_CLASS_C
11202
|| yytoken == Token_CLONE
11203
|| yytoken == Token_CONSTANT_ENCAPSED_STRING
11204
|| yytoken == Token_DEC
11205
|| yytoken == Token_DNUMBER
11206
|| yytoken == Token_DOLLAR
11207
|| yytoken == Token_DOUBLE_CAST
11208
|| yytoken == Token_DOUBLE_QUOTE
11209
|| yytoken == Token_EMPTY
11210
|| yytoken == Token_EVAL
11211
|| yytoken == Token_EXIT
11212
|| yytoken == Token_FILE
11213
|| yytoken == Token_FUNC_C
11214
|| yytoken == Token_INC
11215
|| yytoken == Token_INCLUDE
11216
|| yytoken == Token_INCLUDE_ONCE
11217
|| yytoken == Token_INT_CAST
11218
|| yytoken == Token_ISSET
11219
|| yytoken == Token_LINE
11220
|| yytoken == Token_LIST
11221
|| yytoken == Token_LNUMBER
11222
|| yytoken == Token_LPAREN
11223
|| yytoken == Token_METHOD_C
11224
|| yytoken == Token_MINUS
11225
|| yytoken == Token_NEW
11226
|| yytoken == Token_OBJECT_CAST
11227
|| yytoken == Token_PLUS
11228
|| yytoken == Token_REQUIRE
11229
|| yytoken == Token_REQUIRE_ONCE
11230
|| yytoken == Token_START_HEREDOC
11231
|| yytoken == Token_STRING
11232
|| yytoken == Token_STRING_CAST
11233
|| yytoken == Token_STRING_VARNAME
11234
|| yytoken == Token_TILDE
11235
|| yytoken == Token_UNSET_CAST
11236
|| yytoken == Token_VARIABLE)
11238
if (yytoken == Token_MINUS)
11240
if (yytoken != Token_MINUS)
11244
expectedToken(yytoken, Token_MINUS, "-");
11250
UnaryExpressionAst *__node_246 = 0;
11251
if (!parseUnaryExpression(&__node_246))
11255
expectedSymbol(AstNode::UnaryExpressionKind, "unaryExpression");
11259
(*yynode)->unaryExpression = __node_246;
11262
else if (yytoken == Token_PLUS)
11264
if (yytoken != Token_PLUS)
11268
expectedToken(yytoken, Token_PLUS, "+");
11274
UnaryExpressionAst *__node_247 = 0;
11275
if (!parseUnaryExpression(&__node_247))
11279
expectedSymbol(AstNode::UnaryExpressionKind, "unaryExpression");
11283
(*yynode)->unaryExpression = __node_247;
11286
else if (yytoken == Token_BANG)
11288
if (yytoken != Token_BANG)
11292
expectedToken(yytoken, Token_BANG, "!");
11298
UnaryExpressionAst *__node_248 = 0;
11299
if (!parseUnaryExpression(&__node_248))
11303
expectedSymbol(AstNode::UnaryExpressionKind, "unaryExpression");
11307
(*yynode)->unaryExpression = __node_248;
11310
else if (yytoken == Token_TILDE)
11312
if (yytoken != Token_TILDE)
11316
expectedToken(yytoken, Token_TILDE, "~");
11322
UnaryExpressionAst *__node_249 = 0;
11323
if (!parseUnaryExpression(&__node_249))
11327
expectedSymbol(AstNode::UnaryExpressionKind, "unaryExpression");
11331
(*yynode)->unaryExpression = __node_249;
11334
else if (yytoken == Token_INT_CAST)
11336
if (yytoken != Token_INT_CAST)
11340
expectedToken(yytoken, Token_INT_CAST, "int cast");
11346
UnaryExpressionAst *__node_250 = 0;
11347
if (!parseUnaryExpression(&__node_250))
11351
expectedSymbol(AstNode::UnaryExpressionKind, "unaryExpression");
11355
(*yynode)->unaryExpression = __node_250;
11357
(*yynode)->castType = CastInt;
11359
else if (yytoken == Token_DOUBLE_CAST)
11361
if (yytoken != Token_DOUBLE_CAST)
11365
expectedToken(yytoken, Token_DOUBLE_CAST, "double cast");
11371
UnaryExpressionAst *__node_251 = 0;
11372
if (!parseUnaryExpression(&__node_251))
11376
expectedSymbol(AstNode::UnaryExpressionKind, "unaryExpression");
11380
(*yynode)->unaryExpression = __node_251;
11382
(*yynode)->castType = CastDouble;
11384
else if (yytoken == Token_STRING_CAST)
11386
if (yytoken != Token_STRING_CAST)
11390
expectedToken(yytoken, Token_STRING_CAST, "string cast");
11396
UnaryExpressionAst *__node_252 = 0;
11397
if (!parseUnaryExpression(&__node_252))
11401
expectedSymbol(AstNode::UnaryExpressionKind, "unaryExpression");
11405
(*yynode)->unaryExpression = __node_252;
11407
(*yynode)->castType = CastString;
11409
else if (yytoken == Token_ARRAY_CAST)
11411
if (yytoken != Token_ARRAY_CAST)
11415
expectedToken(yytoken, Token_ARRAY_CAST, "array cast");
11421
UnaryExpressionAst *__node_253 = 0;
11422
if (!parseUnaryExpression(&__node_253))
11426
expectedSymbol(AstNode::UnaryExpressionKind, "unaryExpression");
11430
(*yynode)->unaryExpression = __node_253;
11432
(*yynode)->castType = CastArray;
11434
else if (yytoken == Token_OBJECT_CAST)
11436
if (yytoken != Token_OBJECT_CAST)
11440
expectedToken(yytoken, Token_OBJECT_CAST, "object cast");
11446
UnaryExpressionAst *__node_254 = 0;
11447
if (!parseUnaryExpression(&__node_254))
11451
expectedSymbol(AstNode::UnaryExpressionKind, "unaryExpression");
11455
(*yynode)->unaryExpression = __node_254;
11457
(*yynode)->castType = CastObject;
11459
else if (yytoken == Token_BOOL_CAST)
11461
if (yytoken != Token_BOOL_CAST)
11465
expectedToken(yytoken, Token_BOOL_CAST, "bool cast");
11471
UnaryExpressionAst *__node_255 = 0;
11472
if (!parseUnaryExpression(&__node_255))
11476
expectedSymbol(AstNode::UnaryExpressionKind, "unaryExpression");
11480
(*yynode)->unaryExpression = __node_255;
11482
(*yynode)->castType = CastBool;
11484
else if (yytoken == Token_UNSET_CAST)
11486
if (yytoken != Token_UNSET_CAST)
11490
expectedToken(yytoken, Token_UNSET_CAST, "unset cast");
11496
UnaryExpressionAst *__node_256 = 0;
11497
if (!parseUnaryExpression(&__node_256))
11501
expectedSymbol(AstNode::UnaryExpressionKind, "unaryExpression");
11505
(*yynode)->unaryExpression = __node_256;
11507
(*yynode)->castType = CastUnset;
11509
else if (yytoken == Token_AT)
11511
if (yytoken != Token_AT)
11515
expectedToken(yytoken, Token_AT, "@");
11521
UnaryExpressionAst *__node_257 = 0;
11522
if (!parseUnaryExpression(&__node_257))
11526
expectedSymbol(AstNode::UnaryExpressionKind, "unaryExpression");
11530
(*yynode)->unaryExpression = __node_257;
11533
else if (yytoken == Token_LIST)
11535
if (yytoken != Token_LIST)
11539
expectedToken(yytoken, Token_LIST, "list");
11545
if (yytoken != Token_LPAREN)
11549
expectedToken(yytoken, Token_LPAREN, "(");
11555
AssignmentListAst *__node_258 = 0;
11556
if (!parseAssignmentList(&__node_258))
11560
expectedSymbol(AstNode::AssignmentListKind, "assignmentList");
11564
(*yynode)->assignmentList = __node_258;
11566
if (yytoken != Token_RPAREN)
11570
expectedToken(yytoken, Token_RPAREN, ")");
11576
if (yytoken != Token_ASSIGN)
11580
expectedToken(yytoken, Token_ASSIGN, "=");
11586
UnaryExpressionAst *__node_259 = 0;
11587
if (!parseUnaryExpression(&__node_259))
11591
expectedSymbol(AstNode::UnaryExpressionKind, "unaryExpression");
11595
(*yynode)->unaryExpression = __node_259;
11598
else if (yytoken == Token_EXIT)
11600
if (yytoken != Token_EXIT)
11604
expectedToken(yytoken, Token_EXIT, "exit");
11610
if (yytoken == Token_LPAREN)
11612
if (yytoken != Token_LPAREN)
11616
expectedToken(yytoken, Token_LPAREN, "(");
11622
if (yytoken == Token_ARRAY
11623
|| yytoken == Token_ARRAY_CAST
11624
|| yytoken == Token_AT
11625
|| yytoken == Token_BACKTICK
11626
|| yytoken == Token_BANG
11627
|| yytoken == Token_BOOL_CAST
11628
|| yytoken == Token_CLASS_C
11629
|| yytoken == Token_CLONE
11630
|| yytoken == Token_CONSTANT_ENCAPSED_STRING
11631
|| yytoken == Token_DEC
11632
|| yytoken == Token_DNUMBER
11633
|| yytoken == Token_DOLLAR
11634
|| yytoken == Token_DOUBLE_CAST
11635
|| yytoken == Token_DOUBLE_QUOTE
11636
|| yytoken == Token_EMPTY
11637
|| yytoken == Token_EVAL
11638
|| yytoken == Token_EXIT
11639
|| yytoken == Token_FILE
11640
|| yytoken == Token_FUNC_C
11641
|| yytoken == Token_INC
11642
|| yytoken == Token_INCLUDE
11643
|| yytoken == Token_INCLUDE_ONCE
11644
|| yytoken == Token_INT_CAST
11645
|| yytoken == Token_ISSET
11646
|| yytoken == Token_LINE
11647
|| yytoken == Token_LIST
11648
|| yytoken == Token_LNUMBER
11649
|| yytoken == Token_LPAREN
11650
|| yytoken == Token_METHOD_C
11651
|| yytoken == Token_MINUS
11652
|| yytoken == Token_NEW
11653
|| yytoken == Token_OBJECT_CAST
11654
|| yytoken == Token_PLUS
11655
|| yytoken == Token_PRINT
11656
|| yytoken == Token_REQUIRE
11657
|| yytoken == Token_REQUIRE_ONCE
11658
|| yytoken == Token_START_HEREDOC
11659
|| yytoken == Token_STRING
11660
|| yytoken == Token_STRING_CAST
11661
|| yytoken == Token_STRING_VARNAME
11662
|| yytoken == Token_TILDE
11663
|| yytoken == Token_UNSET_CAST
11664
|| yytoken == Token_VARIABLE)
11666
ExprAst *__node_260 = 0;
11667
if (!parseExpr(&__node_260))
11671
expectedSymbol(AstNode::ExprKind, "expr");
11675
(*yynode)->expression = __node_260;
11678
else if (true /*epsilon*/)
11685
if (yytoken != Token_RPAREN)
11689
expectedToken(yytoken, Token_RPAREN, ")");
11696
else if (true /*epsilon*/)
11704
else if (yytoken == Token_EVAL)
11706
if (yytoken != Token_EVAL)
11710
expectedToken(yytoken, Token_EVAL, "eval");
11716
if (yytoken != Token_LPAREN)
11720
expectedToken(yytoken, Token_LPAREN, "(");
11726
ExprAst *__node_261 = 0;
11727
if (!parseExpr(&__node_261))
11731
expectedSymbol(AstNode::ExprKind, "expr");
11735
(*yynode)->expression = __node_261;
11737
if (yytoken != Token_RPAREN)
11741
expectedToken(yytoken, Token_RPAREN, ")");
11748
else if (yytoken == Token_INCLUDE)
11750
if (yytoken != Token_INCLUDE)
11754
expectedToken(yytoken, Token_INCLUDE, "include");
11760
UnaryExpressionAst *__node_262 = 0;
11761
if (!parseUnaryExpression(&__node_262))
11765
expectedSymbol(AstNode::UnaryExpressionKind, "unaryExpression");
11769
(*yynode)->includeExpression = __node_262;
11772
else if (yytoken == Token_INCLUDE_ONCE)
11774
if (yytoken != Token_INCLUDE_ONCE)
11778
expectedToken(yytoken, Token_INCLUDE_ONCE, "include_once");
11784
UnaryExpressionAst *__node_263 = 0;
11785
if (!parseUnaryExpression(&__node_263))
11789
expectedSymbol(AstNode::UnaryExpressionKind, "unaryExpression");
11793
(*yynode)->includeExpression = __node_263;
11796
else if (yytoken == Token_REQUIRE)
11798
if (yytoken != Token_REQUIRE)
11802
expectedToken(yytoken, Token_REQUIRE, "require");
11808
UnaryExpressionAst *__node_264 = 0;
11809
if (!parseUnaryExpression(&__node_264))
11813
expectedSymbol(AstNode::UnaryExpressionKind, "unaryExpression");
11817
(*yynode)->includeExpression = __node_264;
11820
else if (yytoken == Token_REQUIRE_ONCE)
11822
if (yytoken != Token_REQUIRE_ONCE)
11826
expectedToken(yytoken, Token_REQUIRE_ONCE, "require_once");
11832
UnaryExpressionAst *__node_265 = 0;
11833
if (!parseUnaryExpression(&__node_265))
11837
expectedSymbol(AstNode::UnaryExpressionKind, "unaryExpression");
11841
(*yynode)->includeExpression = __node_265;
11844
else if (yytoken == Token_ARRAY
11845
|| yytoken == Token_BACKTICK
11846
|| yytoken == Token_CLASS_C
11847
|| yytoken == Token_CLONE
11848
|| yytoken == Token_CONSTANT_ENCAPSED_STRING
11849
|| yytoken == Token_DEC
11850
|| yytoken == Token_DNUMBER
11851
|| yytoken == Token_DOLLAR
11852
|| yytoken == Token_DOUBLE_QUOTE
11853
|| yytoken == Token_EMPTY
11854
|| yytoken == Token_FILE
11855
|| yytoken == Token_FUNC_C
11856
|| yytoken == Token_INC
11857
|| yytoken == Token_ISSET
11858
|| yytoken == Token_LINE
11859
|| yytoken == Token_LNUMBER
11860
|| yytoken == Token_LPAREN
11861
|| yytoken == Token_METHOD_C
11862
|| yytoken == Token_NEW
11863
|| yytoken == Token_START_HEREDOC
11864
|| yytoken == Token_STRING
11865
|| yytoken == Token_STRING_VARNAME
11866
|| yytoken == Token_VARIABLE)
11868
UnaryExpressionNotPlusminusAst *__node_266 = 0;
11869
if (!parseUnaryExpressionNotPlusminus(&__node_266))
11873
expectedSymbol(AstNode::UnaryExpressionNotPlusminusKind, "unaryExpressionNotPlusminus");
11877
(*yynode)->unaryExpressionNotPlusminus = __node_266;
11890
(*yynode)->endToken = tokenStream->index() - 2;
11895
bool Parser::parseUnaryExpressionNotPlusminus(UnaryExpressionNotPlusminusAst **yynode)
11897
*yynode = create<UnaryExpressionNotPlusminusAst>();
11899
(*yynode)->startToken = tokenStream->index() - 1;
11901
if (yytoken == Token_ARRAY
11902
|| yytoken == Token_BACKTICK
11903
|| yytoken == Token_CLASS_C
11904
|| yytoken == Token_CLONE
11905
|| yytoken == Token_CONSTANT_ENCAPSED_STRING
11906
|| yytoken == Token_DEC
11907
|| yytoken == Token_DNUMBER
11908
|| yytoken == Token_DOLLAR
11909
|| yytoken == Token_DOUBLE_QUOTE
11910
|| yytoken == Token_EMPTY
11911
|| yytoken == Token_FILE
11912
|| yytoken == Token_FUNC_C
11913
|| yytoken == Token_INC
11914
|| yytoken == Token_ISSET
11915
|| yytoken == Token_LINE
11916
|| yytoken == Token_LNUMBER
11917
|| yytoken == Token_LPAREN
11918
|| yytoken == Token_METHOD_C
11919
|| yytoken == Token_NEW
11920
|| yytoken == Token_START_HEREDOC
11921
|| yytoken == Token_STRING
11922
|| yytoken == Token_STRING_VARNAME
11923
|| yytoken == Token_VARIABLE)
11925
while (yytoken == Token_DEC
11926
|| yytoken == Token_INC)
11928
PostprefixOperatorAst *__node_267 = 0;
11929
if (!parsePostprefixOperator(&__node_267))
11933
expectedSymbol(AstNode::PostprefixOperatorKind, "postprefixOperator");
11937
(*yynode)->prefixOperatorSequence = snoc((*yynode)->prefixOperatorSequence, __node_267, memoryPool);
11940
VarExpressionAst *__node_268 = 0;
11941
if (!parseVarExpression(&__node_268))
11945
expectedSymbol(AstNode::VarExpressionKind, "varExpression");
11949
(*yynode)->varExpression = __node_268;
11951
while (yytoken == Token_DEC
11952
|| yytoken == Token_INC)
11954
PostprefixOperatorAst *__node_269 = 0;
11955
if (!parsePostprefixOperator(&__node_269))
11959
expectedSymbol(AstNode::PostprefixOperatorKind, "postprefixOperator");
11963
(*yynode)->postfixOperatorSequence = snoc((*yynode)->postfixOperatorSequence, __node_269, memoryPool);
11972
(*yynode)->endToken = tokenStream->index() - 2;
11977
bool Parser::parseVarExpression(VarExpressionAst **yynode)
11979
*yynode = create<VarExpressionAst>();
11981
(*yynode)->startToken = tokenStream->index() - 1;
11983
if (yytoken == Token_ARRAY
11984
|| yytoken == Token_BACKTICK
11985
|| yytoken == Token_CLASS_C
11986
|| yytoken == Token_CLONE
11987
|| yytoken == Token_CONSTANT_ENCAPSED_STRING
11988
|| yytoken == Token_DNUMBER
11989
|| yytoken == Token_DOLLAR
11990
|| yytoken == Token_DOUBLE_QUOTE
11991
|| yytoken == Token_EMPTY
11992
|| yytoken == Token_FILE
11993
|| yytoken == Token_FUNC_C
11994
|| yytoken == Token_ISSET
11995
|| yytoken == Token_LINE
11996
|| yytoken == Token_LNUMBER
11997
|| yytoken == Token_LPAREN
11998
|| yytoken == Token_METHOD_C
11999
|| yytoken == Token_NEW
12000
|| yytoken == Token_START_HEREDOC
12001
|| yytoken == Token_STRING
12002
|| yytoken == Token_STRING_VARNAME
12003
|| yytoken == Token_VARIABLE)
12005
if ((yytoken == Token_DOLLAR
12006
|| yytoken == Token_STRING
12007
|| yytoken == Token_VARIABLE) && ( m_state.varExpressionState == OnlyVariable ))
12009
m_state.varExpressionState = Normal;
12010
VariableAst *__node_270 = 0;
12011
if (!parseVariable(&__node_270))
12015
expectedSymbol(AstNode::VariableKind, "variable");
12019
(*yynode)->variable = __node_270;
12022
else if ((yytoken == Token_NEW) && ( m_state.varExpressionState == OnlyNewObject ))
12024
m_state.varExpressionState = Normal;
12025
VarExpressionNewObjectAst *__node_271 = 0;
12026
if (!parseVarExpressionNewObject(&__node_271))
12030
expectedSymbol(AstNode::VarExpressionNewObjectKind, "varExpressionNewObject");
12034
(*yynode)->newObject = __node_271;
12037
else if (yytoken == Token_ARRAY
12038
|| yytoken == Token_BACKTICK
12039
|| yytoken == Token_CLASS_C
12040
|| yytoken == Token_CLONE
12041
|| yytoken == Token_CONSTANT_ENCAPSED_STRING
12042
|| yytoken == Token_DNUMBER
12043
|| yytoken == Token_DOLLAR
12044
|| yytoken == Token_DOUBLE_QUOTE
12045
|| yytoken == Token_EMPTY
12046
|| yytoken == Token_FILE
12047
|| yytoken == Token_FUNC_C
12048
|| yytoken == Token_ISSET
12049
|| yytoken == Token_LINE
12050
|| yytoken == Token_LNUMBER
12051
|| yytoken == Token_LPAREN
12052
|| yytoken == Token_METHOD_C
12053
|| yytoken == Token_NEW
12054
|| yytoken == Token_START_HEREDOC
12055
|| yytoken == Token_STRING
12056
|| yytoken == Token_STRING_VARNAME
12057
|| yytoken == Token_VARIABLE)
12059
VarExpressionNormalAst *__node_272 = 0;
12060
if (!parseVarExpressionNormal(&__node_272))
12064
expectedSymbol(AstNode::VarExpressionNormalKind, "varExpressionNormal");
12068
(*yynode)->varExpressionNormal = __node_272;
12081
(*yynode)->endToken = tokenStream->index() - 2;
12086
bool Parser::parseVarExpressionNewObject(VarExpressionNewObjectAst **yynode)
12088
*yynode = create<VarExpressionNewObjectAst>();
12090
(*yynode)->startToken = tokenStream->index() - 1;
12092
if (yytoken == Token_NEW)
12094
if (yytoken != Token_NEW)
12098
expectedToken(yytoken, Token_NEW, "new");
12104
ClassNameReferenceAst *__node_273 = 0;
12105
if (!parseClassNameReference(&__node_273))
12109
expectedSymbol(AstNode::ClassNameReferenceKind, "classNameReference");
12113
(*yynode)->className = __node_273;
12115
CtorArgumentsAst *__node_274 = 0;
12116
if (!parseCtorArguments(&__node_274))
12120
expectedSymbol(AstNode::CtorArgumentsKind, "ctorArguments");
12124
(*yynode)->ctor = __node_274;
12132
(*yynode)->endToken = tokenStream->index() - 2;
12137
bool Parser::parseVarExpressionNormal(VarExpressionNormalAst **yynode)
12139
*yynode = create<VarExpressionNormalAst>();
12141
(*yynode)->startToken = tokenStream->index() - 1;
12142
(*yynode)->array = -1;
12144
if (yytoken == Token_ARRAY
12145
|| yytoken == Token_BACKTICK
12146
|| yytoken == Token_CLASS_C
12147
|| yytoken == Token_CLONE
12148
|| yytoken == Token_CONSTANT_ENCAPSED_STRING
12149
|| yytoken == Token_DNUMBER
12150
|| yytoken == Token_DOLLAR
12151
|| yytoken == Token_DOUBLE_QUOTE
12152
|| yytoken == Token_EMPTY
12153
|| yytoken == Token_FILE
12154
|| yytoken == Token_FUNC_C
12155
|| yytoken == Token_ISSET
12156
|| yytoken == Token_LINE
12157
|| yytoken == Token_LNUMBER
12158
|| yytoken == Token_LPAREN
12159
|| yytoken == Token_METHOD_C
12160
|| yytoken == Token_NEW
12161
|| yytoken == Token_START_HEREDOC
12162
|| yytoken == Token_STRING
12163
|| yytoken == Token_STRING_VARNAME
12164
|| yytoken == Token_VARIABLE)
12166
if (yytoken == Token_LPAREN)
12168
if (yytoken != Token_LPAREN)
12172
expectedToken(yytoken, Token_LPAREN, "(");
12178
ExprAst *__node_275 = 0;
12179
if (!parseExpr(&__node_275))
12183
expectedSymbol(AstNode::ExprKind, "expr");
12187
(*yynode)->expression = __node_275;
12189
if (yytoken != Token_RPAREN)
12193
expectedToken(yytoken, Token_RPAREN, ")");
12200
else if (yytoken == Token_BACKTICK)
12202
if (yytoken != Token_BACKTICK)
12206
expectedToken(yytoken, Token_BACKTICK, "`");
12212
EncapsListAst *__node_276 = 0;
12213
if (!parseEncapsList(&__node_276))
12217
expectedSymbol(AstNode::EncapsListKind, "encapsList");
12221
(*yynode)->encapsList = __node_276;
12223
if (yytoken != Token_BACKTICK)
12227
expectedToken(yytoken, Token_BACKTICK, "`");
12234
else if (yytoken == Token_CLASS_C
12235
|| yytoken == Token_CONSTANT_ENCAPSED_STRING
12236
|| yytoken == Token_DNUMBER
12237
|| yytoken == Token_DOLLAR
12238
|| yytoken == Token_DOUBLE_QUOTE
12239
|| yytoken == Token_FILE
12240
|| yytoken == Token_FUNC_C
12241
|| yytoken == Token_LINE
12242
|| yytoken == Token_LNUMBER
12243
|| yytoken == Token_METHOD_C
12244
|| yytoken == Token_START_HEREDOC
12245
|| yytoken == Token_STRING
12246
|| yytoken == Token_STRING_VARNAME
12247
|| yytoken == Token_VARIABLE)
12249
bool blockErrors_3 = blockErrors(true);
12250
qint64 try_startToken_3 = tokenStream->index() - 1;
12251
ParserState *try_startState_3 = copyCurrentState();
12253
VariableAst *__node_277 = 0;
12254
if (!parseVariable(&__node_277))
12258
(*yynode)->variable = __node_277;
12260
m_state.varExpressionIsVariable = true;
12262
blockErrors(blockErrors_3);
12263
if (try_startState_3)
12264
delete try_startState_3;
12266
if (false) // the only way to enter here is using goto
12269
if (try_startState_3)
12271
restoreState(try_startState_3);
12272
delete try_startState_3;
12274
blockErrors(blockErrors_3);
12275
rewind(try_startToken_3);
12277
ScalarAst *__node_278 = 0;
12278
if (!parseScalar(&__node_278))
12282
expectedSymbol(AstNode::ScalarKind, "scalar");
12286
(*yynode)->scalar = __node_278;
12291
else if (yytoken == Token_ARRAY)
12293
if (yytoken != Token_ARRAY)
12297
expectedToken(yytoken, Token_ARRAY, "array");
12301
(*yynode)->array = tokenStream->index() - 1;
12304
if (yytoken != Token_LPAREN)
12308
expectedToken(yytoken, Token_LPAREN, "(");
12314
if (yytoken == Token_ARRAY
12315
|| yytoken == Token_ARRAY_CAST
12316
|| yytoken == Token_AT
12317
|| yytoken == Token_BACKTICK
12318
|| yytoken == Token_BANG
12319
|| yytoken == Token_BIT_AND
12320
|| yytoken == Token_BOOL_CAST
12321
|| yytoken == Token_CLASS_C
12322
|| yytoken == Token_CLONE
12323
|| yytoken == Token_CONSTANT_ENCAPSED_STRING
12324
|| yytoken == Token_DEC
12325
|| yytoken == Token_DNUMBER
12326
|| yytoken == Token_DOLLAR
12327
|| yytoken == Token_DOUBLE_CAST
12328
|| yytoken == Token_DOUBLE_QUOTE
12329
|| yytoken == Token_EMPTY
12330
|| yytoken == Token_EVAL
12331
|| yytoken == Token_EXIT
12332
|| yytoken == Token_FILE
12333
|| yytoken == Token_FUNC_C
12334
|| yytoken == Token_INC
12335
|| yytoken == Token_INCLUDE
12336
|| yytoken == Token_INCLUDE_ONCE
12337
|| yytoken == Token_INT_CAST
12338
|| yytoken == Token_ISSET
12339
|| yytoken == Token_LINE
12340
|| yytoken == Token_LIST
12341
|| yytoken == Token_LNUMBER
12342
|| yytoken == Token_LPAREN
12343
|| yytoken == Token_METHOD_C
12344
|| yytoken == Token_MINUS
12345
|| yytoken == Token_NEW
12346
|| yytoken == Token_OBJECT_CAST
12347
|| yytoken == Token_PLUS
12348
|| yytoken == Token_PRINT
12349
|| yytoken == Token_REQUIRE
12350
|| yytoken == Token_REQUIRE_ONCE
12351
|| yytoken == Token_START_HEREDOC
12352
|| yytoken == Token_STRING
12353
|| yytoken == Token_STRING_CAST
12354
|| yytoken == Token_STRING_VARNAME
12355
|| yytoken == Token_TILDE
12356
|| yytoken == Token_UNSET_CAST
12357
|| yytoken == Token_VARIABLE)
12359
ArrayPairValueAst *__node_279 = 0;
12360
if (!parseArrayPairValue(&__node_279))
12364
expectedSymbol(AstNode::ArrayPairValueKind, "arrayPairValue");
12368
(*yynode)->arrayValuesSequence = snoc((*yynode)->arrayValuesSequence, __node_279, memoryPool);
12370
while (yytoken == Token_COMMA)
12372
if (yytoken != Token_COMMA)
12376
expectedToken(yytoken, Token_COMMA, ",");
12382
if (yytoken == Token_RPAREN)
12386
ArrayPairValueAst *__node_280 = 0;
12387
if (!parseArrayPairValue(&__node_280))
12391
expectedSymbol(AstNode::ArrayPairValueKind, "arrayPairValue");
12395
(*yynode)->arrayValuesSequence = snoc((*yynode)->arrayValuesSequence, __node_280, memoryPool);
12399
else if (true /*epsilon*/)
12406
if (yytoken != Token_RPAREN)
12410
expectedToken(yytoken, Token_RPAREN, ")");
12417
else if (yytoken == Token_ISSET)
12419
if (yytoken != Token_ISSET)
12423
expectedToken(yytoken, Token_ISSET, "isset");
12429
if (yytoken != Token_LPAREN)
12433
expectedToken(yytoken, Token_LPAREN, "(");
12439
VariableAst *__node_281 = 0;
12440
if (!parseVariable(&__node_281))
12444
expectedSymbol(AstNode::VariableKind, "variable");
12448
(*yynode)->issetVariableSequence = snoc((*yynode)->issetVariableSequence, __node_281, memoryPool);
12450
while (yytoken == Token_COMMA)
12452
if (yytoken != Token_COMMA)
12456
expectedToken(yytoken, Token_COMMA, ",");
12462
VariableAst *__node_282 = 0;
12463
if (!parseVariable(&__node_282))
12467
expectedSymbol(AstNode::VariableKind, "variable");
12471
(*yynode)->issetVariableSequence = snoc((*yynode)->issetVariableSequence, __node_282, memoryPool);
12474
if (yytoken != Token_RPAREN)
12478
expectedToken(yytoken, Token_RPAREN, ")");
12485
else if (yytoken == Token_EMPTY)
12487
if (yytoken != Token_EMPTY)
12491
expectedToken(yytoken, Token_EMPTY, "empty");
12497
if (yytoken != Token_LPAREN)
12501
expectedToken(yytoken, Token_LPAREN, "(");
12507
VariableAst *__node_283 = 0;
12508
if (!parseVariable(&__node_283))
12512
expectedSymbol(AstNode::VariableKind, "variable");
12516
(*yynode)->emptyVarialbe = __node_283;
12518
if (yytoken != Token_RPAREN)
12522
expectedToken(yytoken, Token_RPAREN, ")");
12529
else if (yytoken == Token_NEW)
12531
VarExpressionNewObjectAst *__node_284 = 0;
12532
if (!parseVarExpressionNewObject(&__node_284))
12536
expectedSymbol(AstNode::VarExpressionNewObjectKind, "varExpressionNewObject");
12540
(*yynode)->newObject = __node_284;
12543
else if (yytoken == Token_CLONE)
12545
if (yytoken != Token_CLONE)
12549
expectedToken(yytoken, Token_CLONE, "clone");
12555
VarExpressionNormalAst *__node_285 = 0;
12556
if (!parseVarExpressionNormal(&__node_285))
12560
expectedSymbol(AstNode::VarExpressionNormalKind, "varExpressionNormal");
12564
(*yynode)->cloneCar = __node_285;
12577
(*yynode)->endToken = tokenStream->index() - 2;
12582
bool Parser::parseVariable(VariableAst **yynode)
12584
*yynode = create<VariableAst>();
12586
(*yynode)->startToken = tokenStream->index() - 1;
12588
if (yytoken == Token_DOLLAR
12589
|| yytoken == Token_STRING
12590
|| yytoken == Token_VARIABLE)
12592
BaseVariableWithFunctionCallsAst *__node_286 = 0;
12593
if (!parseBaseVariableWithFunctionCalls(&__node_286))
12597
expectedSymbol(AstNode::BaseVariableWithFunctionCallsKind, "baseVariableWithFunctionCalls");
12601
(*yynode)->var = __node_286;
12603
while (yytoken == Token_OBJECT_OPERATOR)
12605
VariablePropertyAst *__node_287 = 0;
12606
if (!parseVariableProperty(&__node_287))
12610
expectedSymbol(AstNode::VariablePropertyKind, "variableProperty");
12614
(*yynode)->variablePropertiesSequence = snoc((*yynode)->variablePropertiesSequence, __node_287, memoryPool);
12623
(*yynode)->endToken = tokenStream->index() - 2;
12628
bool Parser::parseVariableIdentifier(VariableIdentifierAst **yynode)
12630
*yynode = create<VariableIdentifierAst>();
12632
(*yynode)->startToken = tokenStream->index() - 1;
12633
(*yynode)->variable = -1;
12635
if (yytoken == Token_VARIABLE)
12637
if (yytoken != Token_VARIABLE)
12641
expectedToken(yytoken, Token_VARIABLE, "variable");
12645
(*yynode)->variable = tokenStream->index() - 1;
12654
(*yynode)->endToken = tokenStream->index() - 2;
12659
bool Parser::parseVariableName(VariableNameAst **yynode)
12661
*yynode = create<VariableNameAst>();
12663
(*yynode)->startToken = tokenStream->index() - 1;
12665
if (yytoken == Token_LBRACE
12666
|| yytoken == Token_STRING)
12668
if (yytoken == Token_STRING)
12670
IdentifierAst *__node_288 = 0;
12671
if (!parseIdentifier(&__node_288))
12675
expectedSymbol(AstNode::IdentifierKind, "identifier");
12679
(*yynode)->name = __node_288;
12682
else if (yytoken == Token_LBRACE)
12684
if (yytoken != Token_LBRACE)
12688
expectedToken(yytoken, Token_LBRACE, "{");
12694
ExprAst *__node_289 = 0;
12695
if (!parseExpr(&__node_289))
12699
expectedSymbol(AstNode::ExprKind, "expr");
12703
(*yynode)->expr = __node_289;
12705
if (yytoken != Token_RBRACE)
12709
expectedToken(yytoken, Token_RBRACE, "}");
12726
(*yynode)->endToken = tokenStream->index() - 2;
12731
bool Parser::parseVariableProperty(VariablePropertyAst **yynode)
12733
*yynode = create<VariablePropertyAst>();
12735
(*yynode)->startToken = tokenStream->index() - 1;
12736
(*yynode)->isFunctionCall = -1;
12738
if (yytoken == Token_OBJECT_OPERATOR)
12740
if (yytoken != Token_OBJECT_OPERATOR)
12744
expectedToken(yytoken, Token_OBJECT_OPERATOR, "->");
12750
ObjectPropertyAst *__node_290 = 0;
12751
if (!parseObjectProperty(&__node_290))
12755
expectedSymbol(AstNode::ObjectPropertyKind, "objectProperty");
12759
(*yynode)->objectProperty = __node_290;
12761
if (yytoken == Token_LPAREN)
12763
if (yytoken != Token_LPAREN)
12767
expectedToken(yytoken, Token_LPAREN, "(");
12771
(*yynode)->isFunctionCall = tokenStream->index() - 1;
12774
FunctionCallParameterListAst *__node_291 = 0;
12775
if (!parseFunctionCallParameterList(&__node_291))
12779
expectedSymbol(AstNode::FunctionCallParameterListKind, "functionCallParameterList");
12783
(*yynode)->parameterList = __node_291;
12785
if (yytoken != Token_RPAREN)
12789
expectedToken(yytoken, Token_RPAREN, ")");
12796
else if (true /*epsilon*/)
12809
(*yynode)->endToken = tokenStream->index() - 2;
12814
bool Parser::parseVariableWithoutObjects(VariableWithoutObjectsAst **yynode)
12816
*yynode = create<VariableWithoutObjectsAst>();
12818
(*yynode)->startToken = tokenStream->index() - 1;
12820
if (yytoken == Token_DOLLAR
12821
|| yytoken == Token_VARIABLE)
12823
CompoundVariableWithSimpleIndirectReferenceAst *__node_292 = 0;
12824
if (!parseCompoundVariableWithSimpleIndirectReference(&__node_292))
12828
expectedSymbol(AstNode::CompoundVariableWithSimpleIndirectReferenceKind, "compoundVariableWithSimpleIndirectReference");
12832
(*yynode)->variable = __node_292;
12834
while (yytoken == Token_LBRACE
12835
|| yytoken == Token_LBRACKET)
12837
DimListItemAst *__node_293 = 0;
12838
if (!parseDimListItem(&__node_293))
12842
expectedSymbol(AstNode::DimListItemKind, "dimListItem");
12846
(*yynode)->offsetItemsSequence = snoc((*yynode)->offsetItemsSequence, __node_293, memoryPool);
12855
(*yynode)->endToken = tokenStream->index() - 2;
12860
bool Parser::parseWhileStatement(WhileStatementAst **yynode)
12862
*yynode = create<WhileStatementAst>();
12864
(*yynode)->startToken = tokenStream->index() - 1;
12866
if (yytoken == Token_ARRAY
12867
|| yytoken == Token_ARRAY_CAST
12868
|| yytoken == Token_AT
12869
|| yytoken == Token_BACKTICK
12870
|| yytoken == Token_BANG
12871
|| yytoken == Token_BOOL_CAST
12872
|| yytoken == Token_BREAK
12873
|| yytoken == Token_CLASS_C
12874
|| yytoken == Token_CLONE
12875
|| yytoken == Token_CLOSE_TAG
12876
|| yytoken == Token_COLON
12877
|| yytoken == Token_CONSTANT_ENCAPSED_STRING
12878
|| yytoken == Token_CONTINUE
12879
|| yytoken == Token_DEC
12880
|| yytoken == Token_DECLARE
12881
|| yytoken == Token_DNUMBER
12882
|| yytoken == Token_DO
12883
|| yytoken == Token_DOLLAR
12884
|| yytoken == Token_DOUBLE_CAST
12885
|| yytoken == Token_DOUBLE_QUOTE
12886
|| yytoken == Token_ECHO
12887
|| yytoken == Token_EMPTY
12888
|| yytoken == Token_EVAL
12889
|| yytoken == Token_EXIT
12890
|| yytoken == Token_FILE
12891
|| yytoken == Token_FOR
12892
|| yytoken == Token_FOREACH
12893
|| yytoken == Token_FUNC_C
12894
|| yytoken == Token_GLOBAL
12895
|| yytoken == Token_IF
12896
|| yytoken == Token_INC
12897
|| yytoken == Token_INCLUDE
12898
|| yytoken == Token_INCLUDE_ONCE
12899
|| yytoken == Token_INLINE_HTML
12900
|| yytoken == Token_INT_CAST
12901
|| yytoken == Token_ISSET
12902
|| yytoken == Token_LBRACE
12903
|| yytoken == Token_LINE
12904
|| yytoken == Token_LIST
12905
|| yytoken == Token_LNUMBER
12906
|| yytoken == Token_LPAREN
12907
|| yytoken == Token_METHOD_C
12908
|| yytoken == Token_MINUS
12909
|| yytoken == Token_NEW
12910
|| yytoken == Token_OBJECT_CAST
12911
|| yytoken == Token_OPEN_TAG
12912
|| yytoken == Token_OPEN_TAG_WITH_ECHO
12913
|| yytoken == Token_PLUS
12914
|| yytoken == Token_PRINT
12915
|| yytoken == Token_REQUIRE
12916
|| yytoken == Token_REQUIRE_ONCE
12917
|| yytoken == Token_RETURN
12918
|| yytoken == Token_SEMICOLON
12919
|| yytoken == Token_START_HEREDOC
12920
|| yytoken == Token_STATIC
12921
|| yytoken == Token_STRING
12922
|| yytoken == Token_STRING_CAST
12923
|| yytoken == Token_STRING_VARNAME
12924
|| yytoken == Token_SWITCH
12925
|| yytoken == Token_THROW
12926
|| yytoken == Token_TILDE
12927
|| yytoken == Token_TRY
12928
|| yytoken == Token_UNSET
12929
|| yytoken == Token_UNSET_CAST
12930
|| yytoken == Token_VARIABLE
12931
|| yytoken == Token_WHILE)
12933
if (yytoken == Token_ARRAY
12934
|| yytoken == Token_ARRAY_CAST
12935
|| yytoken == Token_AT
12936
|| yytoken == Token_BACKTICK
12937
|| yytoken == Token_BANG
12938
|| yytoken == Token_BOOL_CAST
12939
|| yytoken == Token_BREAK
12940
|| yytoken == Token_CLASS_C
12941
|| yytoken == Token_CLONE
12942
|| yytoken == Token_CLOSE_TAG
12943
|| yytoken == Token_CONSTANT_ENCAPSED_STRING
12944
|| yytoken == Token_CONTINUE
12945
|| yytoken == Token_DEC
12946
|| yytoken == Token_DECLARE
12947
|| yytoken == Token_DNUMBER
12948
|| yytoken == Token_DO
12949
|| yytoken == Token_DOLLAR
12950
|| yytoken == Token_DOUBLE_CAST
12951
|| yytoken == Token_DOUBLE_QUOTE
12952
|| yytoken == Token_ECHO
12953
|| yytoken == Token_EMPTY
12954
|| yytoken == Token_EVAL
12955
|| yytoken == Token_EXIT
12956
|| yytoken == Token_FILE
12957
|| yytoken == Token_FOR
12958
|| yytoken == Token_FOREACH
12959
|| yytoken == Token_FUNC_C
12960
|| yytoken == Token_GLOBAL
12961
|| yytoken == Token_IF
12962
|| yytoken == Token_INC
12963
|| yytoken == Token_INCLUDE
12964
|| yytoken == Token_INCLUDE_ONCE
12965
|| yytoken == Token_INLINE_HTML
12966
|| yytoken == Token_INT_CAST
12967
|| yytoken == Token_ISSET
12968
|| yytoken == Token_LBRACE
12969
|| yytoken == Token_LINE
12970
|| yytoken == Token_LIST
12971
|| yytoken == Token_LNUMBER
12972
|| yytoken == Token_LPAREN
12973
|| yytoken == Token_METHOD_C
12974
|| yytoken == Token_MINUS
12975
|| yytoken == Token_NEW
12976
|| yytoken == Token_OBJECT_CAST
12977
|| yytoken == Token_OPEN_TAG
12978
|| yytoken == Token_OPEN_TAG_WITH_ECHO
12979
|| yytoken == Token_PLUS
12980
|| yytoken == Token_PRINT
12981
|| yytoken == Token_REQUIRE
12982
|| yytoken == Token_REQUIRE_ONCE
12983
|| yytoken == Token_RETURN
12984
|| yytoken == Token_SEMICOLON
12985
|| yytoken == Token_START_HEREDOC
12986
|| yytoken == Token_STATIC
12987
|| yytoken == Token_STRING
12988
|| yytoken == Token_STRING_CAST
12989
|| yytoken == Token_STRING_VARNAME
12990
|| yytoken == Token_SWITCH
12991
|| yytoken == Token_THROW
12992
|| yytoken == Token_TILDE
12993
|| yytoken == Token_TRY
12994
|| yytoken == Token_UNSET
12995
|| yytoken == Token_UNSET_CAST
12996
|| yytoken == Token_VARIABLE
12997
|| yytoken == Token_WHILE)
12999
StatementAst *__node_294 = 0;
13000
if (!parseStatement(&__node_294))
13004
expectedSymbol(AstNode::StatementKind, "statement");
13008
(*yynode)->statement = __node_294;
13011
else if (yytoken == Token_COLON)
13013
if (yytoken != Token_COLON)
13017
expectedToken(yytoken, Token_COLON, ":");
13023
InnerStatementListAst *__node_295 = 0;
13024
if (!parseInnerStatementList(&__node_295))
13028
expectedSymbol(AstNode::InnerStatementListKind, "innerStatementList");
13032
(*yynode)->statements = __node_295;
13034
if (yytoken != Token_ENDWHILE)
13038
expectedToken(yytoken, Token_ENDWHILE, "endwhile");
13044
SemicolonOrCloseTagAst *__node_296 = 0;
13045
if (!parseSemicolonOrCloseTag(&__node_296))
13049
expectedSymbol(AstNode::SemicolonOrCloseTagKind, "semicolonOrCloseTag");
13064
(*yynode)->endToken = tokenStream->index() - 2;
13070
} // end of namespace Php