PHP  
 PHP: Test and Code Coverage Analysis
downloads | QA | documentation | faq | getting help | mailing lists | reporting bugs | php.net sites | links | my php.net 
 

LTP GCOV extension - code coverage report
Current view: directory - var/php_gcov/PHP_HEAD/Zend - zend_language_parser.y
Test: PHP Code Coverage
Date: 2009-11-23 Instrumented lines: 505
Code covered: 95.8 % Executed lines: 484
Legend: not executed executed

       1                 : %{
       2                 : /*
       3                 :    +----------------------------------------------------------------------+
       4                 :    | Zend Engine                                                          |
       5                 :    +----------------------------------------------------------------------+
       6                 :    | Copyright (c) 1998-2009 Zend Technologies Ltd. (http://www.zend.com) |
       7                 :    +----------------------------------------------------------------------+
       8                 :    | This source file is subject to version 2.00 of the Zend license,     |
       9                 :    | that is bundled with this package in the file LICENSE, and is        |
      10                 :    | available through the world-wide-web at the following url:           |
      11                 :    | http://www.zend.com/license/2_00.txt.                                |
      12                 :    | If you did not receive a copy of the Zend license and are unable to  |
      13                 :    | obtain it through the world-wide-web, please send a note to          |
      14                 :    | license@zend.com so we can mail you a copy immediately.              |
      15                 :    +----------------------------------------------------------------------+
      16                 :    | Authors: Andi Gutmans <andi@zend.com>                                |
      17                 :    |          Zeev Suraski <zeev@zend.com>                                |
      18                 :    +----------------------------------------------------------------------+
      19                 : */
      20                 : 
      21                 : /* $Id: zend_language_parser.y 281094 2009-05-25 14:32:15Z felipe $ */
      22                 : 
      23                 : /*
      24                 :  * LALR shift/reduce conflicts and how they are resolved:
      25                 :  *
      26                 :  * - 2 shift/reduce conflicts due to the dangling elseif/else ambiguity. Solved by shift.
      27                 :  *
      28                 :  */
      29                 : 
      30                 : 
      31                 : #include "zend_compile.h"
      32                 : #include "zend.h"
      33                 : #include "zend_list.h"
      34                 : #include "zend_globals.h"
      35                 : #include "zend_API.h"
      36                 : #include "zend_constants.h"
      37                 : 
      38                 : 
      39                 : #define YYERROR_VERBOSE
      40                 : #define YYSTYPE znode
      41                 : #ifdef ZTS
      42                 : # define YYPARSE_PARAM tsrm_ls
      43                 : # define YYLEX_PARAM tsrm_ls
      44                 : #endif
      45                 : 
      46                 : 
      47                 : %}
      48                 : 
      49                 : %pure_parser
      50                 : %expect 2
      51                 : 
      52                 : %left T_INCLUDE T_INCLUDE_ONCE T_EVAL T_REQUIRE T_REQUIRE_ONCE
      53                 : %left ','
      54                 : %left T_LOGICAL_OR
      55                 : %left T_LOGICAL_XOR
      56                 : %left T_LOGICAL_AND
      57                 : %right T_PRINT
      58                 : %left '=' T_PLUS_EQUAL T_MINUS_EQUAL T_MUL_EQUAL T_DIV_EQUAL T_CONCAT_EQUAL T_MOD_EQUAL T_AND_EQUAL T_OR_EQUAL T_XOR_EQUAL T_SL_EQUAL T_SR_EQUAL
      59                 : %left '?' ':'
      60                 : %left T_BOOLEAN_OR
      61                 : %left T_BOOLEAN_AND
      62                 : %left '|'
      63                 : %left '^'
      64                 : %left '&'
      65                 : %nonassoc T_IS_EQUAL T_IS_NOT_EQUAL T_IS_IDENTICAL T_IS_NOT_IDENTICAL
      66                 : %nonassoc '<' T_IS_SMALLER_OR_EQUAL '>' T_IS_GREATER_OR_EQUAL
      67                 : %left T_SL T_SR
      68                 : %left '+' '-' '.'
      69                 : %left '*' '/' '%'
      70                 : %right '!'
      71                 : %nonassoc T_INSTANCEOF
      72                 : %right '~' T_INC T_DEC T_INT_CAST T_DOUBLE_CAST T_STRING_CAST T_UNICODE_CAST T_BINARY_CAST T_ARRAY_CAST T_OBJECT_CAST T_BOOL_CAST T_UNSET_CAST '@'
      73                 : %right '['
      74                 : %nonassoc T_NEW T_CLONE
      75                 : %token T_EXIT
      76                 : %token T_IF
      77                 : %left T_ELSEIF
      78                 : %left T_ELSE
      79                 : %left T_ENDIF
      80                 : %token T_LNUMBER
      81                 : %token T_DNUMBER
      82                 : %token T_STRING
      83                 : %token T_STRING_VARNAME
      84                 : %token T_VARIABLE
      85                 : %token T_NUM_STRING
      86                 : %token T_INLINE_HTML
      87                 : %token T_CHARACTER
      88                 : %token T_BAD_CHARACTER
      89                 : %token T_ENCAPSED_AND_WHITESPACE
      90                 : %token T_CONSTANT_ENCAPSED_STRING
      91                 : %token T_ECHO
      92                 : %token T_DO
      93                 : %token T_WHILE
      94                 : %token T_ENDWHILE
      95                 : %token T_FOR
      96                 : %token T_ENDFOR
      97                 : %token T_FOREACH
      98                 : %token T_ENDFOREACH
      99                 : %token T_DECLARE
     100                 : %token T_ENDDECLARE
     101                 : %token T_AS
     102                 : %token T_SWITCH
     103                 : %token T_ENDSWITCH
     104                 : %token T_CASE
     105                 : %token T_DEFAULT
     106                 : %token T_BREAK
     107                 : %token T_CONTINUE
     108                 : %token T_GOTO
     109                 : %token T_FUNCTION
     110                 : %token T_CONST
     111                 : %token T_RETURN
     112                 : %token T_TRY
     113                 : %token T_CATCH
     114                 : %token T_THROW
     115                 : %token T_USE
     116                 : %token T_GLOBAL
     117                 : %right T_STATIC T_ABSTRACT T_FINAL T_PRIVATE T_PROTECTED T_PUBLIC
     118                 : %token T_VAR
     119                 : %token T_UNSET
     120                 : %token T_ISSET
     121                 : %token T_EMPTY
     122                 : %token T_HALT_COMPILER
     123                 : %token T_CLASS
     124                 : %token T_INTERFACE
     125                 : %token T_EXTENDS
     126                 : %token T_IMPLEMENTS
     127                 : %token T_OBJECT_OPERATOR
     128                 : %token T_DOUBLE_ARROW
     129                 : %token T_LIST
     130                 : %token T_ARRAY
     131                 : %token T_CLASS_C
     132                 : %token T_METHOD_C
     133                 : %token T_FUNC_C
     134                 : %token T_LINE
     135                 : %token T_FILE
     136                 : %token T_COMMENT
     137                 : %token T_DOC_COMMENT
     138                 : %token T_OPEN_TAG
     139                 : %token T_OPEN_TAG_WITH_ECHO
     140                 : %token T_CLOSE_TAG
     141                 : %token T_WHITESPACE
     142                 : %token T_START_HEREDOC
     143                 : %token T_END_HEREDOC
     144                 : %token T_DOLLAR_OPEN_CURLY_BRACES
     145                 : %token T_CURLY_OPEN
     146                 : %token T_PAAMAYIM_NEKUDOTAYIM
     147                 : %token T_BINARY_DOUBLE
     148                 : %token T_BINARY_HEREDOC
     149                 : %token T_NAMESPACE
     150                 : %token T_NS_C
     151                 : %token T_DIR
     152                 : %token T_NS_SEPARATOR
     153                 : 
     154                 : %% /* Rules */
     155                 : 
     156                 : start:
     157           24792 :         top_statement_list      { zend_do_end_compilation(TSRMLS_C); }
     158           24792 : ;
     159                 : 
     160                 : top_statement_list:
     161          354169 :                 top_statement_list  { zend_do_extended_info(TSRMLS_C); } top_statement { HANDLE_INTERACTIVE(); }
     162          354169 :         |       /* empty */
     163                 : ;
     164                 : 
     165                 : namespace_name:
     166          307613 :                 T_STRING { $$ = $1; }
     167          307613 :         |       namespace_name T_NS_SEPARATOR T_STRING { zend_do_build_namespace_name(&$$, &$1, &$3 TSRMLS_CC); }
     168             277 : ;
     169                 : 
     170                 : top_statement:
     171          166553 :                 statement                                               { zend_verify_namespace(TSRMLS_C); }
     172          166552 :         |       function_declaration_statement  { zend_verify_namespace(TSRMLS_C); zend_do_early_binding(TSRMLS_C); }
     173            4994 :         |       class_declaration_statement             { zend_verify_namespace(TSRMLS_C); zend_do_early_binding(TSRMLS_C); }
     174            5111 :         |       T_HALT_COMPILER '(' ')' ';'             { zend_do_halt_compiler_register(TSRMLS_C); YYACCEPT; }
     175             121 :         |       T_NAMESPACE namespace_name ';'  { zend_do_begin_namespace(&$2, 0 TSRMLS_CC); }
     176             119 :         |       T_NAMESPACE namespace_name '{'  { zend_do_begin_namespace(&$2, 1 TSRMLS_CC); }
     177               9 :                 top_statement_list '}'              { zend_do_end_namespace(TSRMLS_C); }
     178               7 :         |       T_NAMESPACE '{'                                 { zend_do_begin_namespace(NULL, 1 TSRMLS_CC); }
     179               2 :                 top_statement_list '}'                  { zend_do_end_namespace(TSRMLS_C); }
     180               2 :         |       T_USE use_declarations ';'      { zend_verify_namespace(TSRMLS_C); }
     181              43 :         |       constant_declaration ';'                { zend_verify_namespace(TSRMLS_C); }
     182              32 : ;
     183                 : 
     184                 : use_declarations:
     185                 :                 use_declarations ',' use_declaration
     186                 :         |       use_declaration
     187                 : ;
     188                 : 
     189                 : use_declaration:
     190               7 :                 namespace_name                  { zend_do_use(&$1, NULL, 0 TSRMLS_CC); }
     191               6 :         |       namespace_name T_AS T_STRING    { zend_do_use(&$1, &$3, 0 TSRMLS_CC); }
     192              24 :         |       T_NS_SEPARATOR namespace_name { zend_do_use(&$2, NULL, 1 TSRMLS_CC); }
     193              10 :         |       T_NS_SEPARATOR namespace_name T_AS T_STRING { zend_do_use(&$2, &$4, 1 TSRMLS_CC); }
     194               4 : ;
     195                 : 
     196                 : constant_declaration:
     197               0 :                 constant_declaration ',' T_STRING '=' static_scalar     { zend_do_declare_constant(&$3, &$5 TSRMLS_CC); }
     198               0 :         |       T_CONST T_STRING '=' static_scalar { zend_do_declare_constant(&$2, &$4 TSRMLS_CC); }
     199              32 : ;
     200                 : 
     201                 : inner_statement_list:
     202          377060 :                 inner_statement_list  { zend_do_extended_info(TSRMLS_C); } inner_statement { HANDLE_INTERACTIVE(); }
     203          377060 :         |       /* empty */
     204                 : ;
     205                 : 
     206                 : 
     207                 : inner_statement:
     208                 :                 statement
     209                 :         |       function_declaration_statement
     210                 :         |       class_declaration_statement
     211               1 :         |       T_HALT_COMPILER '(' ')' ';'   { zend_error(E_COMPILE_ERROR, "__HALT_COMPILER() can only be used from the outermost scope"); }
     212               0 : ;
     213                 : 
     214                 : 
     215                 : statement:
     216          433237 :                 unticked_statement { zend_do_ticks(TSRMLS_C); }
     217          433237 :         |       T_STRING ':' { zend_do_label(&$1 TSRMLS_CC); }
     218              24 : ;
     219                 : 
     220                 : unticked_statement:
     221                 :                 '{' inner_statement_list '}'
     222          162545 :         |       T_IF '(' expr ')' { zend_do_if_cond(&$3, &$4 TSRMLS_CC); } statement { zend_do_if_after_statement(&$4, 1 TSRMLS_CC); } elseif_list else_single { zend_do_if_end(TSRMLS_C); }
     223          162551 :         |       T_IF '(' expr ')' ':' { zend_do_if_cond(&$3, &$4 TSRMLS_CC); } inner_statement_list { zend_do_if_after_statement(&$4, 1 TSRMLS_CC); } new_elseif_list new_else_single T_ENDIF ';' { zend_do_if_end(TSRMLS_C); }
     224            1471 :         |       T_WHILE '(' { $1.u.opline_num = get_next_op_number(CG(active_op_array));  } expr  ')' { zend_do_while_cond(&$4, &$5 TSRMLS_CC); } while_statement { zend_do_while_end(&$1, &$5 TSRMLS_CC); }
     225            2725 :         |       T_DO { $1.u.opline_num = get_next_op_number(CG(active_op_array));  zend_do_do_while_begin(TSRMLS_C); } statement T_WHILE '(' { $5.u.opline_num = get_next_op_number(CG(active_op_array)); } expr ')' ';' { zend_do_do_while_end(&$1, &$5, &$7 TSRMLS_CC); }
     226             798 :         |       T_FOR
     227                 :                         '('
     228                 :                                 for_expr
     229            1837 :                         ';' { zend_do_free(&$3 TSRMLS_CC); $4.u.opline_num = get_next_op_number(CG(active_op_array)); }
     230            1837 :                                 for_expr
     231            1837 :                         ';' { zend_do_extended_info(TSRMLS_C); zend_do_for_cond(&$6, &$7 TSRMLS_CC); }
     232            1837 :                                 for_expr
     233            1837 :                         ')' { zend_do_free(&$9 TSRMLS_CC); zend_do_for_before_statement(&$4, &$7 TSRMLS_CC); }
     234            1837 :                         for_statement { zend_do_for_end(&$7 TSRMLS_CC); }
     235            2273 :         |       T_SWITCH '(' expr ')'   { zend_do_switch_cond(&$3 TSRMLS_CC); } switch_case_list { zend_do_switch_end(&$6 TSRMLS_CC); }
     236             872 :         |       T_BREAK ';'                             { zend_do_brk_cont(ZEND_BRK, NULL TSRMLS_CC); }
     237            1618 :         |       T_BREAK expr ';'                { zend_do_brk_cont(ZEND_BRK, &$2 TSRMLS_CC); }
     238              10 :         |       T_CONTINUE ';'                  { zend_do_brk_cont(ZEND_CONT, NULL TSRMLS_CC); }
     239             203 :         |       T_CONTINUE expr ';'             { zend_do_brk_cont(ZEND_CONT, &$2 TSRMLS_CC); }
     240               1 :         |       T_RETURN ';'                                            { zend_do_return(NULL, 0 TSRMLS_CC); }
     241             114 :         |       T_RETURN expr_without_variable ';'      { zend_do_return(&$2, 0 TSRMLS_CC); }
     242           10438 :         |       T_RETURN variable ';'                           { zend_do_return(&$2, 1 TSRMLS_CC); }
     243           17469 :         |       T_GLOBAL global_var_list ';'
     244                 :         |       T_STATIC static_var_list ';'
     245                 :         |       T_ECHO echo_expr_list ';'
     246            3149 :         |       T_INLINE_HTML                   { zend_do_echo(&$1, 1 TSRMLS_CC); }
     247            3149 :         |       expr ';'                                { zend_do_free(&$1 TSRMLS_CC); }
     248          220972 :         |       T_UNSET '(' unset_variables ')' ';'
     249                 :         |       T_FOREACH '(' variable T_AS
     250            8699 :                 { zend_do_foreach_begin(&$1, &$2, &$3, &$4, 1 TSRMLS_CC); }
     251            8699 :                 foreach_variable foreach_optional_arg ')' { zend_do_foreach_cont(&$1, &$2, &$4, &$6, &$7 TSRMLS_CC); }
     252            8694 :                 foreach_statement { zend_do_foreach_end(&$1, &$4 TSRMLS_CC); }
     253            8694 :         |       T_FOREACH '(' expr_without_variable T_AS
     254             215 :                 { zend_do_foreach_begin(&$1, &$2, &$3, &$4, 0 TSRMLS_CC); }
     255             215 :                 variable foreach_optional_arg ')' { zend_check_writable_variable(&$6); zend_do_foreach_cont(&$1, &$2, &$4, &$6, &$7 TSRMLS_CC); }
     256             212 :                 foreach_statement { zend_do_foreach_end(&$1, &$4 TSRMLS_CC); }
     257             280 :         |       T_DECLARE { $1.u.opline_num = get_next_op_number(CG(active_op_array)); zend_do_declare_begin(TSRMLS_C); } '(' declare_list ')' declare_statement { zend_do_declare_end(&$1 TSRMLS_CC); }
     258             137 :         |       ';'             /* empty statement */
     259            1747 :         |       T_TRY { zend_do_try(&$1 TSRMLS_CC); } '{' inner_statement_list '}'
     260            1747 :                 T_CATCH '(' { zend_initialize_try_catch_element(&$1 TSRMLS_CC); }
     261            1747 :                 fully_qualified_class_name { zend_do_first_catch(&$7 TSRMLS_CC); }
     262            1747 :                 T_VARIABLE ')' { zend_do_begin_catch(&$1, &$9, &$11, &$7 TSRMLS_CC); }
     263            1747 :                 '{' inner_statement_list '}' { zend_do_end_catch(&$1 TSRMLS_CC); }
     264            1747 :                 additional_catches { zend_do_mark_last_catch(&$7, &$18 TSRMLS_CC); }
     265            1747 :         |       T_THROW expr ';' { zend_do_throw(&$2 TSRMLS_CC); }
     266             229 :         |       T_GOTO T_STRING ';' { zend_do_goto(&$2 TSRMLS_CC); }
     267              22 : ;
     268                 : 
     269                 : 
     270                 : additional_catches:
     271               7 :                 non_empty_additional_catches { $$ = $1; }
     272               7 :         |       /* empty */ { $$.u.opline_num = -1; }
     273            1740 : ;
     274                 : 
     275                 : non_empty_additional_catches:
     276               7 :                 additional_catch { $$ = $1; }
     277               7 :         |       non_empty_additional_catches additional_catch { $$ = $2; }
     278               0 : ;
     279                 : 
     280                 : 
     281                 : additional_catch:
     282              21 :         T_CATCH '(' fully_qualified_class_name { $$.u.opline_num = get_next_op_number(CG(active_op_array)); } T_VARIABLE ')' { zend_do_begin_catch(&$1, &$3, &$5, NULL TSRMLS_CC); } '{' inner_statement_list '}' { zend_do_end_catch(&$1 TSRMLS_CC); }
     283              21 : ;
     284                 : 
     285                 : 
     286                 : unset_variables:
     287                 :                 unset_variable
     288                 :         |       unset_variables ',' unset_variable
     289                 : ;
     290                 : 
     291                 : unset_variable:
     292            1460 :                 variable        { zend_do_end_variable_parse(&$1, BP_VAR_UNSET, 0 TSRMLS_CC); zend_do_unset(&$1 TSRMLS_CC); }
     293            1459 : ;
     294                 : 
     295                 : function_declaration_statement:
     296            8125 :                 unticked_function_declaration_statement { zend_do_ticks(TSRMLS_C); }
     297            8125 : ;
     298                 : 
     299                 : class_declaration_statement:
     300            5978 :                 unticked_class_declaration_statement    { zend_do_ticks(TSRMLS_C); }
     301            5978 : ;
     302                 : 
     303                 : 
     304                 : is_reference:
     305           23456 :                 /* empty */     { $$.op_type = ZEND_RETURN_VAL; }
     306           23456 :         |       '&'                 { $$.op_type = ZEND_RETURN_REF; }
     307              45 : ;
     308                 : 
     309                 : 
     310                 : unticked_function_declaration_statement:
     311            8127 :                 function is_reference T_STRING { zend_do_begin_function_declaration(&$1, &$3, 0, $2.op_type, NULL TSRMLS_CC); }
     312            8127 :                         '(' parameter_list ')' '{' inner_statement_list '}' { zend_do_end_function_declaration(&$1 TSRMLS_CC); }
     313            8125 : ;
     314                 : 
     315                 : unticked_class_declaration_statement:
     316                 :                 class_entry_type T_STRING extends_from
     317            5905 :                         { zend_do_begin_class_declaration(&$1, &$2, &$3 TSRMLS_CC); }
     318            5899 :                         implements_list
     319                 :                         '{'
     320                 :                                 class_statement_list
     321            5835 :                         '}' { zend_do_end_class_declaration(&$1, &$2 TSRMLS_CC); }
     322            5829 :         |       interface_entry T_STRING
     323             154 :                         { zend_do_begin_class_declaration(&$1, &$2, NULL TSRMLS_CC); }
     324             154 :                         interface_extends_list
     325                 :                         '{'
     326                 :                                 class_statement_list
     327             149 :                         '}' { zend_do_end_class_declaration(&$1, &$2 TSRMLS_CC); }
     328             149 : ;
     329                 : 
     330                 : 
     331                 : class_entry_type:
     332            5837 :                 T_CLASS                 { $$.u.opline_num = CG(zend_lineno); $$.u.EA.type = 0; }
     333            5837 :         |       T_ABSTRACT T_CLASS { $$.u.opline_num = CG(zend_lineno); $$.u.EA.type = ZEND_ACC_EXPLICIT_ABSTRACT_CLASS; }
     334              61 :         |       T_FINAL T_CLASS { $$.u.opline_num = CG(zend_lineno); $$.u.EA.type = ZEND_ACC_FINAL_CLASS; }
     335               9 : ;
     336                 : 
     337                 : extends_from:
     338            3945 :                 /* empty */                                     { $$.op_type = IS_UNUSED; }
     339            3945 :         |       T_EXTENDS fully_qualified_class_name    { zend_do_fetch_class(&$$, &$2 TSRMLS_CC); }
     340            1960 : ;
     341                 : 
     342                 : interface_entry:
     343             155 :         T_INTERFACE             { $$.u.opline_num = CG(zend_lineno); $$.u.EA.type = ZEND_ACC_INTERFACE; }
     344             155 : ;
     345                 : 
     346                 : interface_extends_list:
     347                 :                 /* empty */
     348                 :         |       T_EXTENDS interface_list
     349                 : ;
     350                 : 
     351                 : implements_list:
     352                 :                 /* empty */
     353                 :         |       T_IMPLEMENTS interface_list
     354                 : ;
     355                 : 
     356                 : interface_list:
     357             274 :                 fully_qualified_class_name                      { zend_do_implements_interface(&$1 TSRMLS_CC); }
     358             272 :         |       interface_list ',' fully_qualified_class_name { zend_do_implements_interface(&$3 TSRMLS_CC); }
     359              35 : ;
     360                 : 
     361                 : foreach_optional_arg:
     362            5409 :                 /* empty */                                             { $$.op_type = IS_UNUSED; }
     363            5409 :         |       T_DOUBLE_ARROW foreach_variable { $$ = $2; }
     364            3504 : ;
     365                 : 
     366                 : 
     367                 : foreach_variable:
     368           12136 :                 variable                        { zend_check_writable_variable(&$1); $$ = $1; }
     369           12136 :         |       '&' variable                { zend_check_writable_variable(&$2); $$ = $2;  $$.u.EA.type |= ZEND_PARSED_REFERENCE_VARIABLE; }
     370              67 : ;
     371                 : 
     372                 : for_statement:
     373                 :                 statement
     374                 :         |       ':' inner_statement_list T_ENDFOR ';'
     375                 : ;
     376                 : 
     377                 : 
     378                 : foreach_statement:
     379                 :                 statement
     380                 :         |       ':' inner_statement_list T_ENDFOREACH ';'
     381                 : ;
     382                 : 
     383                 : 
     384                 : declare_statement:
     385                 :                 statement
     386                 :         |       ':' inner_statement_list T_ENDDECLARE ';'
     387                 : ;
     388                 : 
     389                 : 
     390                 : declare_list:
     391              69 :                 T_STRING '=' static_scalar                                      { zend_do_declare_stmt(&$1, &$3 TSRMLS_CC); }
     392              68 :         |       declare_list ',' T_STRING '=' static_scalar     { zend_do_declare_stmt(&$3, &$5 TSRMLS_CC); }
     393               0 : ;
     394                 : 
     395                 : 
     396                 : switch_case_list:
     397             435 :                 '{' case_list '}'                                       { $$ = $2; }
     398             435 :         |       '{' ';' case_list '}'                           { $$ = $3; }
     399               0 :         |       ':' case_list T_ENDSWITCH ';'           { $$ = $2; }
     400               1 :         |       ':' ';' case_list T_ENDSWITCH ';'       { $$ = $3; }
     401               0 : ;
     402                 : 
     403                 : 
     404                 : case_list:
     405             436 :                 /* empty */     { $$.op_type = IS_UNUSED; }
     406            1903 :         |       case_list T_CASE expr case_separator { zend_do_extended_info(TSRMLS_C);  zend_do_case_before_statement(&$1, &$2, &$3 TSRMLS_CC); } inner_statement_list { zend_do_case_after_statement(&$$, &$2 TSRMLS_CC); $$.op_type = IS_CONST; }
     407            3196 :         |       case_list T_DEFAULT case_separator { zend_do_extended_info(TSRMLS_C);  zend_do_default_before_statement(&$1, &$2 TSRMLS_CC); } inner_statement_list { zend_do_case_after_statement(&$$, &$2 TSRMLS_CC); $$.op_type = IS_CONST; }
     408             524 : ;
     409                 : 
     410                 : 
     411                 : case_separator:
     412                 :                 ':'
     413                 :         |       ';'
     414                 : ;
     415                 : 
     416                 : 
     417                 : while_statement:
     418                 :                 statement
     419                 :         |       ':' inner_statement_list T_ENDWHILE ';'
     420                 : ;
     421                 : 
     422                 : 
     423                 : 
     424                 : elseif_list:
     425                 :                 /* empty */
     426            3084 :         |       elseif_list T_ELSEIF '(' expr ')' { zend_do_if_cond(&$4, &$5 TSRMLS_CC); } statement { zend_do_if_after_statement(&$5, 0 TSRMLS_CC); }
     427            3084 : ;
     428                 : 
     429                 : 
     430                 : new_elseif_list:
     431                 :                 /* empty */
     432               0 :         |       new_elseif_list T_ELSEIF '(' expr ')' ':' { zend_do_if_cond(&$4, &$5 TSRMLS_CC); } inner_statement_list { zend_do_if_after_statement(&$5, 0 TSRMLS_CC); }
     433               0 : ;
     434                 : 
     435                 : 
     436                 : else_single:
     437                 :                 /* empty */
     438                 :         |       T_ELSE statement
     439                 : ;
     440                 : 
     441                 : 
     442                 : new_else_single:
     443                 :                 /* empty */
     444                 :         |       T_ELSE ':' inner_statement_list
     445                 : ;
     446                 : 
     447                 : 
     448                 : parameter_list:
     449                 :                 non_empty_parameter_list
     450                 :         |       /* empty */
     451                 : ;
     452                 : 
     453                 : 
     454                 : non_empty_parameter_list:
     455           14675 :                 optional_class_type T_VARIABLE                          { znode tmp;  fetch_simple_variable(&tmp, &$2, 0 TSRMLS_CC); $$.op_type = IS_CONST; Z_LVAL($$.u.constant)=1; Z_TYPE($$.u.constant)=IS_LONG; INIT_PZVAL(&$$.u.constant); zend_do_receive_arg(ZEND_RECV, &tmp, &$$, NULL, &$1, &$2, 0 TSRMLS_CC); }
     456           14673 :         |       optional_class_type '&' T_VARIABLE                  { znode tmp;  fetch_simple_variable(&tmp, &$3, 0 TSRMLS_CC); $$.op_type = IS_CONST; Z_LVAL($$.u.constant)=1; Z_TYPE($$.u.constant)=IS_LONG; INIT_PZVAL(&$$.u.constant); zend_do_receive_arg(ZEND_RECV, &tmp, &$$, NULL, &$1, &$3, 1 TSRMLS_CC); }
     457             235 :         |       optional_class_type '&' T_VARIABLE '=' static_scalar                        { znode tmp;  fetch_simple_variable(&tmp, &$3, 0 TSRMLS_CC); $$.op_type = IS_CONST; Z_LVAL($$.u.constant)=1; Z_TYPE($$.u.constant)=IS_LONG; INIT_PZVAL(&$$.u.constant); zend_do_receive_arg(ZEND_RECV_INIT, &tmp, &$$, &$5, &$1, &$3, 1 TSRMLS_CC); }
     458               0 :         |       optional_class_type T_VARIABLE '=' static_scalar                                { znode tmp;  fetch_simple_variable(&tmp, &$2, 0 TSRMLS_CC); $$.op_type = IS_CONST; Z_LVAL($$.u.constant)=1; Z_TYPE($$.u.constant)=IS_LONG; INIT_PZVAL(&$$.u.constant); zend_do_receive_arg(ZEND_RECV_INIT, &tmp, &$$, &$4, &$1, &$2, 0 TSRMLS_CC); }
     459            1590 :         |       non_empty_parameter_list ',' optional_class_type T_VARIABLE     { znode tmp;  fetch_simple_variable(&tmp, &$4, 0 TSRMLS_CC); $$=$1; Z_LVAL($$.u.constant)++; zend_do_receive_arg(ZEND_RECV, &tmp, &$$, NULL, &$3, &$4, 0 TSRMLS_CC); }
     460           84238 :         |       non_empty_parameter_list ',' optional_class_type '&' T_VARIABLE     { znode tmp;  fetch_simple_variable(&tmp, &$5, 0 TSRMLS_CC); $$=$1; Z_LVAL($$.u.constant)++; zend_do_receive_arg(ZEND_RECV, &tmp, &$$, NULL, &$3, &$5, 1 TSRMLS_CC); }
     461              92 :         |       non_empty_parameter_list ',' optional_class_type '&' T_VARIABLE      '=' static_scalar { znode tmp;  fetch_simple_variable(&tmp, &$5, 0 TSRMLS_CC); $$=$1; Z_LVAL($$.u.constant)++; zend_do_receive_arg(ZEND_RECV_INIT, &tmp, &$$, &$7, &$3, &$5, 1 TSRMLS_CC); }
     462              62 :         |       non_empty_parameter_list ',' optional_class_type T_VARIABLE '=' static_scalar   { znode tmp;  fetch_simple_variable(&tmp, &$4, 0 TSRMLS_CC); $$=$1; Z_LVAL($$.u.constant)++; zend_do_receive_arg(ZEND_RECV_INIT, &tmp, &$$, &$6, &$3, &$4, 0 TSRMLS_CC); }
     463            9284 : ;
     464                 : 
     465                 : 
     466                 : optional_class_type:
     467          109868 :                 /* empty */                                     { $$.op_type = IS_UNUSED; }
     468          109868 :         |       fully_qualified_class_name      { $$ = $1; }
     469             131 :         |       T_ARRAY                                         { $$.op_type = IS_CONST; Z_TYPE($$.u.constant)=IS_NULL;}
     470             179 : ;
     471                 : 
     472                 : 
     473                 : function_call_parameter_list:
     474          228661 :                 non_empty_function_call_parameter_list  { $$ = $1; }
     475          228661 :         |       /* empty */                             { Z_LVAL($$.u.constant) = 0; }
     476           28483 : ;
     477                 : 
     478                 : 
     479                 : non_empty_function_call_parameter_list:
     480          112597 :                 expr_without_variable   { Z_LVAL($$.u.constant) = 1;  zend_do_pass_param(&$1, ZEND_SEND_VAL, Z_LVAL($$.u.constant) TSRMLS_CC); }
     481          112592 :         |       variable                                { Z_LVAL($$.u.constant) = 1;  zend_do_pass_param(&$1, ZEND_SEND_VAR, Z_LVAL($$.u.constant) TSRMLS_CC); }
     482          116050 :         |       '&' w_variable                              { Z_LVAL($$.u.constant) = 1;  zend_do_pass_param(&$2, ZEND_SEND_REF, Z_LVAL($$.u.constant) TSRMLS_CC); }
     483              20 :         |       non_empty_function_call_parameter_list ',' expr_without_variable        { Z_LVAL($$.u.constant)=Z_LVAL($1.u.constant)+1;  zend_do_pass_param(&$3, ZEND_SEND_VAL, Z_LVAL($$.u.constant) TSRMLS_CC); }
     484          131153 :         |       non_empty_function_call_parameter_list ',' variable                                     { Z_LVAL($$.u.constant)=Z_LVAL($1.u.constant)+1;  zend_do_pass_param(&$3, ZEND_SEND_VAR, Z_LVAL($$.u.constant) TSRMLS_CC); }
     485           83833 :         |       non_empty_function_call_parameter_list ',' '&' w_variable                   { Z_LVAL($$.u.constant)=Z_LVAL($1.u.constant)+1;  zend_do_pass_param(&$4, ZEND_SEND_REF, Z_LVAL($$.u.constant) TSRMLS_CC); }
     486              11 : ;
     487                 : 
     488                 : global_var_list:
     489             734 :                 global_var_list ',' global_var  { zend_do_fetch_global_variable(&$3, NULL, ZEND_FETCH_GLOBAL_LOCK TSRMLS_CC); }
     490             734 :         |       global_var                                              { zend_do_fetch_global_variable(&$1, NULL, ZEND_FETCH_GLOBAL_LOCK TSRMLS_CC); }
     491            3718 : ;
     492                 : 
     493                 : 
     494                 : global_var:
     495            4450 :                 T_VARIABLE                      { $$ = $1; }
     496            4450 :         |       '$' r_variable          { zend_do_normalization(&$$, &$2 TSRMLS_CC); }
     497               1 :         |       '$' '{' expr '}'        { zend_do_normalization(&$$, &$3 TSRMLS_CC); }
     498               1 : ;
     499                 : 
     500                 : 
     501                 : static_var_list:
     502               2 :                 static_var_list ',' T_VARIABLE { zend_do_fetch_static_variable(&$3, NULL, ZEND_FETCH_STATIC TSRMLS_CC); }
     503               2 :         |       static_var_list ',' T_VARIABLE '=' static_scalar { zend_do_fetch_static_variable(&$3, &$5, ZEND_FETCH_STATIC TSRMLS_CC); }
     504               6 :         |       T_VARIABLE  { zend_do_fetch_static_variable(&$1, NULL, ZEND_FETCH_STATIC TSRMLS_CC); }
     505              19 :         |       T_VARIABLE '=' static_scalar { zend_do_fetch_static_variable(&$1, &$3, ZEND_FETCH_STATIC TSRMLS_CC); }
     506             890 : 
     507                 : ;
     508                 : 
     509                 : 
     510                 : class_statement_list:
     511                 :                 class_statement_list class_statement
     512                 :         |       /* empty */
     513                 : ;
     514                 : 
     515                 : 
     516                 : class_statement:
     517            1837 :                 variable_modifiers { CG(access_type) = Z_LVAL($1.u.constant); } class_variable_declaration ';'
     518            1837 :         |       class_constant_declaration ';'
     519           15276 :         |       method_modifiers function is_reference T_STRING { zend_do_begin_function_declaration(&$2, &$4, 1, $3.op_type, &$1 TSRMLS_CC); } '('
     520           15259 :                         parameter_list ')' method_body { zend_do_abstract_method(&$4, &$1, &$9 TSRMLS_CC); zend_do_end_function_declaration(&$2 TSRMLS_CC); }
     521           15232 : ;
     522                 : 
     523                 : 
     524                 : method_body:
     525             102 :                 ';' /* abstract method */               { Z_LVAL($$.u.constant) = ZEND_ACC_ABSTRACT; }
     526             102 :         |       '{' inner_statement_list '}'    { Z_LVAL($$.u.constant) = 0;    }
     527           15149 : ;
     528                 : 
     529                 : variable_modifiers:
     530            1718 :                 non_empty_member_modifiers              { $$ = $1; }
     531            1718 :         |       T_VAR                                                   { Z_LVAL($$.u.constant) = ZEND_ACC_PUBLIC; }
     532             119 : ;
     533                 : 
     534                 : method_modifiers:
     535            6658 :                 /* empty */                                                     { Z_LVAL($$.u.constant) = ZEND_ACC_PUBLIC; }
     536            6658 :         |       non_empty_member_modifiers                      { $$ = $1;  if (!(Z_LVAL($$.u.constant) & ZEND_ACC_PPP_MASK)) { Z_LVAL($$.u.constant) |= ZEND_ACC_PUBLIC; } }
     537            8618 : ;
     538                 : 
     539                 : non_empty_member_modifiers:
     540           10347 :                 member_modifier                                         { $$ = $1; }
     541           10347 :         |       non_empty_member_modifiers member_modifier      { Z_LVAL($$.u.constant) = zend_do_verify_access_types(&$1, &$2); }
     542             493 : ;
     543                 : 
     544                 : member_modifier:
     545            3291 :                 T_PUBLIC                                { Z_LVAL($$.u.constant) = ZEND_ACC_PUBLIC; }
     546            3291 :         |       T_PROTECTED                             { Z_LVAL($$.u.constant) = ZEND_ACC_PROTECTED; }
     547             535 :         |       T_PRIVATE                               { Z_LVAL($$.u.constant) = ZEND_ACC_PRIVATE; }
     548             628 :         |       T_STATIC                                { Z_LVAL($$.u.constant) = ZEND_ACC_STATIC; }
     549            6327 :         |       T_ABSTRACT                              { Z_LVAL($$.u.constant) = ZEND_ACC_ABSTRACT; }
     550              46 :         |       T_FINAL                                 { Z_LVAL($$.u.constant) = ZEND_ACC_FINAL; }
     551              24 : ;
     552                 : 
     553                 : class_variable_declaration:
     554              41 :                 class_variable_declaration ',' T_VARIABLE                                       { zend_do_declare_property(&$3, NULL, CG(access_type) TSRMLS_CC); }
     555              41 :         |       class_variable_declaration ',' T_VARIABLE '=' static_scalar     { zend_do_declare_property(&$3, &$5, CG(access_type) TSRMLS_CC); }
     556               3 :         |       T_VARIABLE                                              { zend_do_declare_property(&$1, NULL, CG(access_type) TSRMLS_CC); }
     557             799 :         |       T_VARIABLE '=' static_scalar    { zend_do_declare_property(&$1, &$3, CG(access_type) TSRMLS_CC); }
     558            1034 : ;
     559                 : 
     560                 : class_constant_declaration:
     561               3 :                 class_constant_declaration ',' T_STRING '=' static_scalar       { zend_do_declare_class_constant(&$3, &$5 TSRMLS_CC); }
     562               3 :         |       T_CONST T_STRING '=' static_scalar      { zend_do_declare_class_constant(&$2, &$4 TSRMLS_CC); }
     563             186 : ;
     564                 : 
     565                 : echo_expr_list:
     566             941 :                 echo_expr_list ',' expr { zend_do_echo(&$3, 0 TSRMLS_CC); }
     567             941 :         |       expr                                    { zend_do_echo(&$1, 0 TSRMLS_CC); }
     568           25036 : ;
     569                 : 
     570                 : 
     571                 : for_expr:
     572               8 :                 /* empty */                     { $$.op_type = IS_CONST;  Z_TYPE($$.u.constant) = IS_BOOL;  Z_LVAL($$.u.constant) = 1; }
     573               8 :         |       non_empty_for_expr      { $$ = $1; }
     574            5503 : ;
     575                 : 
     576                 : non_empty_for_expr:
     577              10 :                 non_empty_for_expr ','  { zend_do_free(&$1 TSRMLS_CC); } expr { $$ = $4; }
     578              10 :         |       expr                                    { $$ = $1; }
     579            5503 : ;
     580                 : 
     581                 : expr_without_variable:
     582             196 :                 T_LIST '(' { zend_do_list_init(TSRMLS_C); } assignment_list ')' '=' expr { zend_do_list_end(&$$, &$7 TSRMLS_CC); }
     583             196 :         |       variable '=' expr               { zend_check_writable_variable(&$1); zend_do_assign(&$$, &$1, &$3 TSRMLS_CC); }
     584          113888 :         |       variable '=' '&' variable { zend_check_writable_variable(&$1); zend_do_end_variable_parse(&$4, BP_VAR_W, 1 TSRMLS_CC); zend_do_end_variable_parse(&$1, BP_VAR_W, 0 TSRMLS_CC); zend_do_assign_ref(&$$, &$1, &$4 TSRMLS_CC); }
     585             369 :         |       variable '=' '&' T_NEW class_name_reference { zend_error(E_DEPRECATED, "Assigning the return value of new by reference is deprecated");  zend_check_writable_variable(&$1); zend_do_extended_fcall_begin(TSRMLS_C); zend_do_begin_new_object(&$4, &$5 TSRMLS_CC); } ctor_arguments { zend_do_end_new_object(&$3, &$4, &$7 TSRMLS_CC); zend_do_extended_fcall_end(TSRMLS_C); zend_do_end_variable_parse(&$1, BP_VAR_W, 0 TSRMLS_CC); $3.u.EA.type = ZEND_PARSED_NEW; zend_do_assign_ref(&$$, &$1, &$3 TSRMLS_CC); }
     586            9965 :         |       T_NEW class_name_reference { zend_do_extended_fcall_begin(TSRMLS_C); zend_do_begin_new_object(&$1, &$2 TSRMLS_CC); } ctor_arguments { zend_do_end_new_object(&$$, &$1, &$4 TSRMLS_CC); zend_do_extended_fcall_end(TSRMLS_C); $$.u.EA.type = ZEND_PARSED_NEW; }
     587           19890 :         |       T_CLONE expr { zend_do_clone(&$$, &$2 TSRMLS_CC); }
     588              76 :         |       variable T_PLUS_EQUAL expr      { zend_check_writable_variable(&$1); zend_do_end_variable_parse(&$1, BP_VAR_RW, 0 TSRMLS_CC); zend_do_binary_assign_op(ZEND_ASSIGN_ADD, &$$, &$1, &$3 TSRMLS_CC); }
     589             622 :         |       variable T_MINUS_EQUAL expr     { zend_check_writable_variable(&$1); zend_do_end_variable_parse(&$1, BP_VAR_RW, 0 TSRMLS_CC); zend_do_binary_assign_op(ZEND_ASSIGN_SUB, &$$, &$1, &$3 TSRMLS_CC); }
     590             138 :         |       variable T_MUL_EQUAL expr               { zend_check_writable_variable(&$1); zend_do_end_variable_parse(&$1, BP_VAR_RW, 0 TSRMLS_CC); zend_do_binary_assign_op(ZEND_ASSIGN_MUL, &$$, &$1, &$3 TSRMLS_CC); }
     591              12 :         |       variable T_DIV_EQUAL expr               { zend_check_writable_variable(&$1); zend_do_end_variable_parse(&$1, BP_VAR_RW, 0 TSRMLS_CC); zend_do_binary_assign_op(ZEND_ASSIGN_DIV, &$$, &$1, &$3 TSRMLS_CC); }
     592               3 :         |       variable T_CONCAT_EQUAL expr    { zend_check_writable_variable(&$1); zend_do_end_variable_parse(&$1, BP_VAR_RW, 0 TSRMLS_CC); zend_do_binary_assign_op(ZEND_ASSIGN_CONCAT, &$$, &$1, &$3 TSRMLS_CC); }
     593            1933 :         |       variable T_MOD_EQUAL expr               { zend_check_writable_variable(&$1); zend_do_end_variable_parse(&$1, BP_VAR_RW, 0 TSRMLS_CC); zend_do_binary_assign_op(ZEND_ASSIGN_MOD, &$$, &$1, &$3 TSRMLS_CC); }
     594               0 :         |       variable T_AND_EQUAL expr               { zend_check_writable_variable(&$1); zend_do_end_variable_parse(&$1, BP_VAR_RW, 0 TSRMLS_CC); zend_do_binary_assign_op(ZEND_ASSIGN_BW_AND, &$$, &$1, &$3 TSRMLS_CC); }
     595               2 :         |       variable T_OR_EQUAL expr                { zend_check_writable_variable(&$1); zend_do_end_variable_parse(&$1, BP_VAR_RW, 0 TSRMLS_CC); zend_do_binary_assign_op(ZEND_ASSIGN_BW_OR, &$$, &$1, &$3 TSRMLS_CC); }
     596              95 :         |       variable T_XOR_EQUAL expr               { zend_check_writable_variable(&$1); zend_do_end_variable_parse(&$1, BP_VAR_RW, 0 TSRMLS_CC); zend_do_binary_assign_op(ZEND_ASSIGN_BW_XOR, &$$, &$1, &$3 TSRMLS_CC); }
     597               1 :         |       variable T_SL_EQUAL expr        { zend_check_writable_variable(&$1); zend_do_end_variable_parse(&$1, BP_VAR_RW, 0 TSRMLS_CC); zend_do_binary_assign_op(ZEND_ASSIGN_SL, &$$, &$1, &$3 TSRMLS_CC); }
     598               3 :         |       variable T_SR_EQUAL expr        { zend_check_writable_variable(&$1); zend_do_end_variable_parse(&$1, BP_VAR_RW, 0 TSRMLS_CC); zend_do_binary_assign_op(ZEND_ASSIGN_SR, &$$, &$1, &$3 TSRMLS_CC); }
     599               3 :         |       rw_variable T_INC { zend_do_post_incdec(&$$, &$1, ZEND_POST_INC TSRMLS_CC); }
     600            5157 :         |       T_INC rw_variable { zend_do_pre_incdec(&$$, &$2, ZEND_PRE_INC TSRMLS_CC); }
     601             398 :         |       rw_variable T_DEC { zend_do_post_incdec(&$$, &$1, ZEND_POST_DEC TSRMLS_CC); }
     602              50 :         |       T_DEC rw_variable { zend_do_pre_incdec(&$$, &$2, ZEND_PRE_DEC TSRMLS_CC); }
     603            1970 :         |       expr T_BOOLEAN_OR { zend_do_boolean_or_begin(&$1, &$2 TSRMLS_CC); } expr { zend_do_boolean_or_end(&$$, &$1, &$4, &$2 TSRMLS_CC); }
     604            7578 :         |       expr T_BOOLEAN_AND { zend_do_boolean_and_begin(&$1, &$2 TSRMLS_CC); } expr { zend_do_boolean_and_end(&$$, &$1, &$4, &$2 TSRMLS_CC); }
     605            7958 :         |       expr T_LOGICAL_OR { zend_do_boolean_or_begin(&$1, &$2 TSRMLS_CC); } expr { zend_do_boolean_or_end(&$$, &$1, &$4, &$2 TSRMLS_CC); }
     606            1284 :         |       expr T_LOGICAL_AND { zend_do_boolean_and_begin(&$1, &$2 TSRMLS_CC); } expr { zend_do_boolean_and_end(&$$, &$1, &$4, &$2 TSRMLS_CC); }
     607              16 :         |       expr T_LOGICAL_XOR expr { zend_do_binary_op(ZEND_BOOL_XOR, &$$, &$1, &$3 TSRMLS_CC); }
     608               0 :         |       expr '|' expr   { zend_do_binary_op(ZEND_BW_OR, &$$, &$1, &$3 TSRMLS_CC); }
     609             485 :         |       expr '&' expr       { zend_do_binary_op(ZEND_BW_AND, &$$, &$1, &$3 TSRMLS_CC); }
     610            1064 :         |       expr '^' expr   { zend_do_binary_op(ZEND_BW_XOR, &$$, &$1, &$3 TSRMLS_CC); }
     611              18 :         |       expr '.' expr   { zend_do_binary_op(ZEND_CONCAT, &$$, &$1, &$3 TSRMLS_CC); }
     612           29348 :         |       expr '+' expr   { zend_do_binary_op(ZEND_ADD, &$$, &$1, &$3 TSRMLS_CC); }
     613            3130 :         |       expr '-' expr   { zend_do_binary_op(ZEND_SUB, &$$, &$1, &$3 TSRMLS_CC); }
     614             596 :         |       expr '*' expr   { zend_do_binary_op(ZEND_MUL, &$$, &$1, &$3 TSRMLS_CC); }
     615            2350 :         |       expr '/' expr   { zend_do_binary_op(ZEND_DIV, &$$, &$1, &$3 TSRMLS_CC); }
     616             492 :         |       expr '%' expr   { zend_do_binary_op(ZEND_MOD, &$$, &$1, &$3 TSRMLS_CC); }
     617             113 :         |       expr T_SL expr  { zend_do_binary_op(ZEND_SL, &$$, &$1, &$3 TSRMLS_CC); }
     618             102 :         |       expr T_SR expr  { zend_do_binary_op(ZEND_SR, &$$, &$1, &$3 TSRMLS_CC); }
     619              33 :         |       '+' expr %prec T_INC { ZVAL_LONG(&$1.u.constant, 0); if ($2.op_type == IS_CONST) { add_function(&$2.u.constant, &$1.u.constant, &$2.u.constant TSRMLS_CC); $$ = $2; } else { $1.op_type = IS_CONST; INIT_PZVAL(&$1.u.constant); zend_do_binary_op(ZEND_ADD, &$$, &$1, &$2 TSRMLS_CC); } }
     620             255 :         |       '-' expr %prec T_INC { ZVAL_LONG(&$1.u.constant, 0); if ($2.op_type == IS_CONST) { sub_function(&$2.u.constant, &$1.u.constant, &$2.u.constant TSRMLS_CC); $$ = $2; } else { $1.op_type = IS_CONST; INIT_PZVAL(&$1.u.constant); zend_do_binary_op(ZEND_SUB, &$$, &$1, &$2 TSRMLS_CC); } }
     621            5991 :         |       '!' expr { zend_do_unary_op(ZEND_BOOL_NOT, &$$, &$2 TSRMLS_CC); }
     622           22690 :         |       '~' expr { zend_do_unary_op(ZEND_BW_NOT, &$$, &$2 TSRMLS_CC); }
     623              88 :         |       expr T_IS_IDENTICAL expr                { zend_do_binary_op(ZEND_IS_IDENTICAL, &$$, &$1, &$3 TSRMLS_CC); }
     624            4771 :         |       expr T_IS_NOT_IDENTICAL expr    { zend_do_binary_op(ZEND_IS_NOT_IDENTICAL, &$$, &$1, &$3 TSRMLS_CC); }
     625            6475 :         |       expr T_IS_EQUAL expr                    { zend_do_binary_op(ZEND_IS_EQUAL, &$$, &$1, &$3 TSRMLS_CC); }
     626           11687 :         |       expr T_IS_NOT_EQUAL expr                { zend_do_binary_op(ZEND_IS_NOT_EQUAL, &$$, &$1, &$3 TSRMLS_CC); }
     627            2410 :         |       expr '<' expr                                        { zend_do_binary_op(ZEND_IS_SMALLER, &$$, &$1, &$3 TSRMLS_CC); }
     628            1395 :         |       expr T_IS_SMALLER_OR_EQUAL expr { zend_do_binary_op(ZEND_IS_SMALLER_OR_EQUAL, &$$, &$1, &$3 TSRMLS_CC); }
     629            1607 :         |       expr '>' expr                                        { zend_do_binary_op(ZEND_IS_SMALLER, &$$, &$3, &$1 TSRMLS_CC); }
     630             762 :         |       expr T_IS_GREATER_OR_EQUAL expr { zend_do_binary_op(ZEND_IS_SMALLER_OR_EQUAL, &$$, &$3, &$1 TSRMLS_CC); }
     631             257 :         |       expr T_INSTANCEOF class_name_reference { zend_do_instanceof(&$$, &$1, &$3, 0 TSRMLS_CC); }
     632              59 :         |       '(' expr ')'    { $$ = $2; }
     633           18270 :         |       expr '?' { zend_do_begin_qm_op(&$1, &$2 TSRMLS_CC); }
     634           17058 :                 expr ':' { zend_do_qm_true(&$4, &$2, &$5 TSRMLS_CC); }
     635           17058 :                 expr     { zend_do_qm_false(&$$, &$7, &$2, &$5 TSRMLS_CC); }
     636           17058 :         |       expr '?' ':' { zend_do_jmp_set(&$1, &$2, &$3 TSRMLS_CC); }
     637               8 :                 expr     { zend_do_jmp_set_else(&$$, &$5, &$2, &$3 TSRMLS_CC); }
     638               8 :         |       internal_functions_in_yacc { $$ = $1; }
     639           17254 :         |       T_INT_CAST expr         { zend_do_cast(&$$, &$2, IS_LONG TSRMLS_CC); }
     640            4447 :         |       T_DOUBLE_CAST expr      { zend_do_cast(&$$, &$2, IS_DOUBLE TSRMLS_CC); }
     641              17 :         |       T_STRING_CAST expr      { zend_do_cast(&$$, &$2, IS_UNICODE TSRMLS_CC); }
     642             378 :         |       T_UNICODE_CAST expr     { zend_do_cast(&$$, &$2, IS_UNICODE TSRMLS_CC); }
     643              13 :         |       T_BINARY_CAST expr      { zend_do_cast(&$$, &$2, IS_STRING TSRMLS_CC); }
     644            1326 :         |       T_ARRAY_CAST expr       { zend_do_cast(&$$, &$2, IS_ARRAY TSRMLS_CC); }
     645              10 :         |       T_OBJECT_CAST expr      { zend_do_cast(&$$, &$2, IS_OBJECT TSRMLS_CC); }
     646             144 :         |       T_BOOL_CAST expr        { zend_do_cast(&$$, &$2, IS_BOOL TSRMLS_CC); }
     647             239 :         |       T_UNSET_CAST expr       { zend_do_cast(&$$, &$2, IS_NULL TSRMLS_CC); }
     648               0 :         |       T_EXIT exit_expr        { zend_do_exit(&$$, &$2 TSRMLS_CC); }
     649           16929 :         |       '@' { zend_do_begin_silence(&$1 TSRMLS_CC); } expr { zend_do_end_silence(&$1 TSRMLS_CC); $$ = $3; }
     650           10514 :         |       scalar                          { $$ = $1; }
     651          498717 :         |       T_ARRAY '(' array_pair_list ')' { $$ = $3; }
     652           19563 :         |       '`' { CG(literal_type) = IS_UNICODE; } backticks_expr '`' { zend_do_shell_exec(&$$, &$3 TSRMLS_CC); }
     653             210 :         |       T_PRINT expr  { zend_do_print(&$$, &$2 TSRMLS_CC); }
     654            2660 :         |       function is_reference '(' { zend_do_begin_lambda_function_declaration(&$$, &$1, $2.op_type, 0 TSRMLS_CC); }
     655              97 :                         parameter_list ')' lexical_vars '{' inner_statement_list '}' {  zend_do_end_function_declaration(&$1 TSRMLS_CC); $$ = $4; }
     656              97 :         |       T_STATIC function is_reference '(' { zend_do_begin_lambda_function_declaration(&$$, &$2, $3.op_type, 1 TSRMLS_CC); }
     657               1 :                         parameter_list ')' lexical_vars '{' inner_statement_list '}' {  zend_do_end_function_declaration(&$2 TSRMLS_CC); $$ = $5; }
     658               1 : ;
     659                 : 
     660                 : function:
     661           23501 :         T_FUNCTION { $$.u.opline_num = CG(zend_lineno); }
     662           23501 : ;
     663                 : 
     664                 : lexical_vars:
     665                 :                 /* empty */
     666                 :         |       T_USE '(' lexical_var_list ')'
     667                 : ;
     668                 : 
     669                 : lexical_var_list:
     670               1 :                 lexical_var_list ',' T_VARIABLE                 { zend_do_fetch_lexical_variable(&$3, 0 TSRMLS_CC); }
     671               1 :         |       lexical_var_list ',' '&' T_VARIABLE         { zend_do_fetch_lexical_variable(&$4, 1 TSRMLS_CC); }
     672               0 :         |       T_VARIABLE                                                              { zend_do_fetch_lexical_variable(&$1, 0 TSRMLS_CC); }
     673              15 :         |       '&' T_VARIABLE                                                      { zend_do_fetch_lexical_variable(&$2, 1 TSRMLS_CC); }
     674              11 : ;
     675                 : 
     676                 : function_call:
     677          217872 :                 namespace_name '(' { $2.u.opline_num = zend_do_begin_function_call(&$1, 1 TSRMLS_CC); }
     678          217872 :                                 function_call_parameter_list
     679          217859 :                                 ')' { zend_do_end_function_call(&$1, &$$, &$4, 0, $2.u.opline_num TSRMLS_CC); zend_do_extended_fcall_end(TSRMLS_C); }
     680          217859 :         |       T_NAMESPACE T_NS_SEPARATOR namespace_name '(' { $1.op_type = IS_CONST; ZVAL_EMPTY_UNICODE(&$1.u.constant);  zend_do_build_namespace_name(&$1, &$1, &$3 TSRMLS_CC); $4.u.opline_num = zend_do_begin_function_call(&$1, 0 TSRMLS_CC); }
     681               8 :                                 function_call_parameter_list
     682               8 :                                 ')' { zend_do_end_function_call(&$1, &$$, &$6, 0, $4.u.opline_num TSRMLS_CC); zend_do_extended_fcall_end(TSRMLS_C); }
     683               8 :         |       T_NS_SEPARATOR namespace_name '(' { $3.u.opline_num = zend_do_begin_function_call(&$2, 0 TSRMLS_CC); }
     684              14 :                                 function_call_parameter_list
     685              14 :                                 ')' { zend_do_end_function_call(&$2, &$$, &$5, 0, $3.u.opline_num TSRMLS_CC); zend_do_extended_fcall_end(TSRMLS_C); }
     686              14 :         |       class_name T_PAAMAYIM_NEKUDOTAYIM T_STRING '(' { $4.u.opline_num = zend_do_begin_class_member_function_call(&$1, &$3 TSRMLS_CC); }
     687            6443 :                         function_call_parameter_list
     688            6443 :                         ')' { zend_do_end_function_call($4.u.opline_num?NULL:&$3, &$$, &$6, $4.u.opline_num, $4.u.opline_num TSRMLS_CC); zend_do_extended_fcall_end(TSRMLS_C);}
     689            6443 :         |       variable_class_name T_PAAMAYIM_NEKUDOTAYIM T_STRING '(' { zend_do_begin_class_member_function_call(&$1, &$3 TSRMLS_CC); }
     690              14 :                         function_call_parameter_list
     691              14 :                         ')' { zend_do_end_function_call(NULL, &$$, &$6, 1, 1 TSRMLS_CC); zend_do_extended_fcall_end(TSRMLS_C);}
     692              14 :         |       variable_class_name T_PAAMAYIM_NEKUDOTAYIM variable_without_objects '(' { zend_do_end_variable_parse(&$3, BP_VAR_R, 0 TSRMLS_CC); zend_do_begin_class_member_function_call(&$1, &$3 TSRMLS_CC); }
     693              26 :                         function_call_parameter_list
     694              26 :                         ')' { zend_do_end_function_call(NULL, &$$, &$6, 1, 1 TSRMLS_CC); zend_do_extended_fcall_end(TSRMLS_C);}
     695              26 :         |       class_name T_PAAMAYIM_NEKUDOTAYIM variable_without_objects '(' { zend_do_end_variable_parse(&$3, BP_VAR_R, 0 TSRMLS_CC); zend_do_begin_class_member_function_call(&$1, &$3 TSRMLS_CC); }
     696               8 :                         function_call_parameter_list
     697               8 :                         ')' { zend_do_end_function_call(NULL, &$$, &$6, 1, 1 TSRMLS_CC); zend_do_extended_fcall_end(TSRMLS_C);}
     698               8 :         |       variable_without_objects  '(' { zend_do_end_variable_parse(&$1, BP_VAR_R, 0 TSRMLS_CC); zend_do_begin_dynamic_function_call(&$1, 0 TSRMLS_CC); }
     699            1823 :                         function_call_parameter_list ')'
     700            1823 :                         { zend_do_end_function_call(&$1, &$$, &$4, 0, 1 TSRMLS_CC); zend_do_extended_fcall_end(TSRMLS_C);}
     701            1823 : ;
     702                 : 
     703                 : class_name:
     704              39 :                 T_STATIC { $$.op_type = IS_CONST; ZVAL_ASCII_STRINGL(&$$.u.constant, "static", sizeof("static")-1, 1);}
     705              39 :         |       namespace_name { $$ = $1; }
     706           23528 :         |       T_NAMESPACE T_NS_SEPARATOR namespace_name { $$.op_type = IS_CONST; ZVAL_EMPTY_UNICODE(&$$.u.constant);  zend_do_build_namespace_name(&$$, &$$, &$3 TSRMLS_CC); }
     707              14 :         |       T_NS_SEPARATOR namespace_name { $$.op_type = IS_CONST; ZVAL_EMPTY_UNICODE(&$$.u.constant);  zend_do_build_full_name(NULL, &$$, &$2, 0 TSRMLS_CC); }
     708              69 : ;
     709                 : 
     710                 : fully_qualified_class_name:
     711            4134 :                 namespace_name { $$ = $1; }
     712            4134 :         |       T_NAMESPACE T_NS_SEPARATOR namespace_name { $$.op_type = IS_CONST; ZVAL_EMPTY_UNICODE(&$$.u.constant);  zend_do_build_namespace_name(&$$, &$$, &$3 TSRMLS_CC); }
     713               2 :         |       T_NS_SEPARATOR namespace_name { $$.op_type = IS_CONST; ZVAL_EMPTY_UNICODE(&$$.u.constant);  zend_do_build_full_name(NULL, &$$, &$2, 0 TSRMLS_CC); }
     714              18 : ;
     715                 : 
     716                 : 
     717                 : class_name_reference:
     718            8955 :                 class_name                                              { zend_do_fetch_class(&$$, &$1 TSRMLS_CC); }
     719            8955 :         |       dynamic_class_name_reference    { zend_do_end_variable_parse(&$1, BP_VAR_R, 0 TSRMLS_CC); zend_do_fetch_class(&$$, &$1 TSRMLS_CC); }
     720            1060 : ;
     721                 : 
     722                 : 
     723                 : dynamic_class_name_reference:
     724               1 :                 base_variable T_OBJECT_OPERATOR { zend_do_push_object(&$1 TSRMLS_CC); }
     725               1 :                         object_property { zend_do_push_object(&$4 TSRMLS_CC); zend_do_declare_implicit_property(TSRMLS_C); } dynamic_class_name_variable_properties
     726               1 :                         { zend_do_pop_object(&$$ TSRMLS_CC); $$.u.EA.type = ZEND_PARSED_MEMBER; }
     727               1 :         |       base_variable { $$ = $1; }
     728            1059 : ;
     729                 : 
     730                 : 
     731                 : dynamic_class_name_variable_properties:
     732                 :                 dynamic_class_name_variable_properties dynamic_class_name_variable_property
     733                 :         |       /* empty */
     734                 : ;
     735                 : 
     736                 : 
     737                 : dynamic_class_name_variable_property:
     738               0 :                 T_OBJECT_OPERATOR object_property { zend_do_push_object(&$2 TSRMLS_CC); zend_do_declare_implicit_property(TSRMLS_C); }
     739               0 : ;
     740                 : 
     741                 : exit_expr:
     742             353 :                 /* empty */     { memset(&$$, 0, sizeof(znode)); $$.op_type = IS_UNUSED; }
     743             353 :         |       '(' ')'         { memset(&$$, 0, sizeof(znode)); $$.op_type = IS_UNUSED; }
     744             115 :         |       '(' expr ')'    { $$ = $2; }
     745           11204 : ;
     746                 : 
     747                 : backticks_expr:
     748               0 :                 /* empty */     { ZVAL_EMPTY_UNICODE(&$$.u.constant); INIT_PZVAL(&$$.u.constant); $$.op_type = IS_CONST; }
     749               0 :         |       T_ENCAPSED_AND_WHITESPACE       { $$ = $1; }
     750               2 :         |       encaps_list     { $$ = $1; }
     751             103 : ;
     752                 : 
     753                 : 
     754                 : ctor_arguments:
     755            2083 :                 /* empty */     { Z_LVAL($$.u.constant)=0; }
     756            2083 :         |       '(' function_call_parameter_list ')'    { $$ = $2; }
     757            7872 : ;
     758                 : 
     759                 : 
     760                 : common_scalar:
     761           80234 :                 T_LNUMBER                                       { $$ = $1; }
     762           80234 :         |       T_DNUMBER                                       { $$ = $1; }
     763            7343 :         |       T_CONSTANT_ENCAPSED_STRING      { $$ = $1; }
     764          335993 :         |       T_LINE                                          { $$ = $1; }
     765              15 :         |       T_FILE                                          { $$ = $1; }
     766            7424 :         |       T_DIR                                           { $$ = $1; }
     767              97 :         |       T_CLASS_C                                       { $$ = $1; }
     768              75 :         |       T_METHOD_C                                      { $$ = $1; }
     769             745 :         |       T_FUNC_C                                        { $$ = $1; }
     770              97 :         |       T_NS_C                                          { $$ = $1; }
     771              33 :         |       start_heredoc T_ENCAPSED_AND_WHITESPACE T_END_HEREDOC { $$ = $2; CG(heredoc) = Z_STRVAL($1.u.constant); CG(heredoc_len) = Z_STRLEN($1.u.constant); }
     772            1210 :         |       start_heredoc T_END_HEREDOC { if (CG(literal_type) == IS_UNICODE) { ZVAL_EMPTY_UNICODE(&$$.u.constant); } else { ZVAL_EMPTY_STRING(&$$.u.constant); } INIT_PZVAL(&$$.u.constant); $$.op_type = IS_CONST; CG(heredoc) = Z_STRVAL($1.u.constant); CG(heredoc_len) = Z_STRLEN($1.u.constant); }
     773              59 : ;
     774                 : 
     775                 : start_heredoc:
     776            1272 :                 T_START_HEREDOC  { CG(literal_type) = IS_UNICODE; $$ = $1; }
     777            1272 :         |       T_BINARY_HEREDOC { CG(literal_type) = IS_STRING; $$ = $1; }
     778             103 : ;
     779                 : 
     780                 : 
     781                 : static_scalar: /* compile-time evaluated scalars */
     782           10490 :                 common_scalar           { $$ = $1; }
     783           10490 :         |       namespace_name          { zend_do_fetch_constant(&$$, NULL, &$1, ZEND_CT, 1 TSRMLS_CC); }
     784            4346 :         |       T_NAMESPACE T_NS_SEPARATOR namespace_name { $$.op_type = IS_CONST; ZVAL_EMPTY_UNICODE(&$$.u.constant);  zend_do_build_namespace_name(&$$, &$$, &$3 TSRMLS_CC); $3 = $$; zend_do_fetch_constant(&$$, NULL, &$3, ZEND_CT, 0 TSRMLS_CC); }
     785              14 :         |       T_NS_SEPARATOR namespace_name { $$.op_type = IS_CONST; ZVAL_EMPTY_UNICODE(&$$.u.constant);  zend_do_build_full_name(NULL, &$$, &$2, 0 TSRMLS_CC); $2 = $$;zend_do_fetch_constant(&$$, NULL, &$2, ZEND_CT, 0 TSRMLS_CC); }
     786              13 :         |       '+' static_scalar { ZVAL_LONG(&$1.u.constant, 0); add_function(&$2.u.constant, &$1.u.constant, &$2.u.constant TSRMLS_CC); $$ = $2; }
     787               2 :         |       '-' static_scalar { ZVAL_LONG(&$1.u.constant, 0); sub_function(&$2.u.constant, &$1.u.constant, &$2.u.constant TSRMLS_CC); $$ = $2; }
     788               5 :         |       T_ARRAY '(' static_array_pair_list ')' { $$ = $3; Z_TYPE($$.u.constant) = IS_CONSTANT_ARRAY; }
     789            1015 :         |       static_class_constant { $$ = $1; }
     790             118 : ;
     791                 : 
     792                 : static_class_constant:
     793             118 :                 class_name T_PAAMAYIM_NEKUDOTAYIM T_STRING { zend_do_fetch_constant(&$$, &$1, &$3, ZEND_CT, 0 TSRMLS_CC); }
     794             118 : ;
     795                 : 
     796                 : scalar:
     797              75 :                 T_STRING_VARNAME                { $$ = $1; }
     798              75 :         |       class_constant          { $$ = $1; }
     799            7802 :         |       namespace_name  { zend_do_fetch_constant(&$$, NULL, &$1, ZEND_RT, 1 TSRMLS_CC); }
     800           57379 :         |       T_NAMESPACE T_NS_SEPARATOR namespace_name { $$.op_type = IS_CONST; ZVAL_EMPTY_UNICODE(&$$.u.constant);  zend_do_build_namespace_name(&$$, &$$, &$3 TSRMLS_CC); $3 = $$; zend_do_fetch_constant(&$$, NULL, &$3, ZEND_RT, 0 TSRMLS_CC); }
     801               9 :         |       T_NS_SEPARATOR namespace_name { $$.op_type = IS_CONST; ZVAL_EMPTY_UNICODE(&$$.u.constant);  zend_do_build_full_name(NULL, &$$, &$2, 0 TSRMLS_CC); $2 = $$; zend_do_fetch_constant(&$$, NULL, &$2, ZEND_RT, 0 TSRMLS_CC); }
     802              14 :         |       common_scalar                   { $$ = $1; }
     803          433264 :         |       '"' { CG(literal_type) = IS_UNICODE; } encaps_list '"' { $$ = $3; }
     804           20928 :         |       T_BINARY_DOUBLE { CG(literal_type) = IS_STRING; } encaps_list '"' { $$ = $3; }
     805             138 :         |       start_heredoc encaps_list T_END_HEREDOC { $$ = $2; CG(heredoc) = Z_STRVAL($1.u.constant); CG(heredoc_len) = Z_STRLEN($1.u.constant); }
     806             105 : ;
     807                 : 
     808                 : 
     809                 : static_array_pair_list:
     810              55 :                 /* empty */ { $$.op_type = IS_CONST; INIT_PZVAL(&$$.u.constant); array_init(&$$.u.constant); }
     811              55 :         |       non_empty_static_array_pair_list possible_comma { $$ = $1; }
     812             960 : ;
     813                 : 
     814                 : possible_comma:
     815                 :                 /* empty */
     816                 :         |       ','
     817                 : ;
     818                 : 
     819                 : non_empty_static_array_pair_list:
     820              34 :                 non_empty_static_array_pair_list ',' static_scalar T_DOUBLE_ARROW static_scalar { zend_do_add_static_array_element(&$$, &$3, &$5); }
     821              34 :         |       non_empty_static_array_pair_list ',' static_scalar { zend_do_add_static_array_element(&$$, NULL, &$3); }
     822            1703 :         |       static_scalar T_DOUBLE_ARROW static_scalar { $$.op_type = IS_CONST; INIT_PZVAL(&$$.u.constant); array_init(&$$.u.constant); zend_do_add_static_array_element(&$$, &$1, &$3); }
     823              96 :         |       static_scalar { $$.op_type = IS_CONST; INIT_PZVAL(&$$.u.constant); array_init(&$$.u.constant); zend_do_add_static_array_element(&$$, NULL, &$1); }
     824             864 : ;
     825                 : 
     826                 : expr:
     827          271123 :                 r_variable                                      { $$ = $1; }
     828          271123 :         |       expr_without_variable           { $$ = $1; }
     829          577974 : ;
     830                 : 
     831                 : 
     832                 : r_variable:
     833          271125 :         variable { zend_do_end_variable_parse(&$1, BP_VAR_R, 0 TSRMLS_CC); $$ = $1; }
     834          271124 : ;
     835                 : 
     836                 : 
     837                 : w_variable:
     838             163 :         variable        { zend_do_end_variable_parse(&$1, BP_VAR_W, 0 TSRMLS_CC); $$ = $1; zend_check_writable_variable(&$1); }
     839             163 : ;
     840                 : 
     841                 : rw_variable:
     842            5616 :         variable        { zend_do_end_variable_parse(&$1, BP_VAR_RW, 0 TSRMLS_CC); $$ = $1; zend_check_writable_variable(&$1); }
     843            5616 : ;
     844                 : 
     845                 : variable:
     846           30196 :                 base_variable_with_function_calls T_OBJECT_OPERATOR { zend_do_push_object(&$1 TSRMLS_CC); }
     847           30196 :                         object_property { zend_do_push_object(&$4 TSRMLS_CC); } method_or_not variable_properties
     848           30196 :                         { zend_do_pop_object(&$$ TSRMLS_CC); $$.u.EA.type = $1.u.EA.type | ($7.u.EA.type ? $7.u.EA.type : $6.u.EA.type); }
     849           30195 :         |       base_variable_with_function_calls { $$ = $1; }
     850          611850 : ;
     851                 : 
     852                 : variable_properties:
     853            1123 :                 variable_properties variable_property { $$.u.EA.type = $2.u.EA.type; }
     854            1123 :         |       /* empty */ { $$.u.EA.type = 0; }
     855           30195 : ;
     856                 : 
     857                 : 
     858                 : variable_property:
     859            2246 :                 T_OBJECT_OPERATOR object_property { zend_do_push_object(&$2 TSRMLS_CC); } method_or_not { $$.u.EA.type = $4.u.EA.type; }
     860            2246 : ;
     861                 : 
     862                 : method_or_not:
     863           23078 :                 '(' { zend_do_pop_object(&$1 TSRMLS_CC); zend_do_begin_method_call(&$1 TSRMLS_CC); }
     864           23077 :                                 function_call_parameter_list ')'
     865           23077 :                         { zend_do_end_function_call(&$1, &$$, &$3, 1, 1 TSRMLS_CC); zend_do_extended_fcall_end(TSRMLS_C);
     866           23077 :                           zend_do_push_object(&$$ TSRMLS_CC); $$.u.EA.type = ZEND_PARSED_METHOD_CALL; }
     867           23077 :         |       /* empty */ { zend_do_declare_implicit_property(TSRMLS_C); $$.u.EA.type = ZEND_PARSED_MEMBER; }
     868            8241 : ;
     869                 : 
     870                 : variable_without_objects:
     871            2249 :                 reference_variable { $$ = $1; }
     872            2249 :         |       simple_indirect_reference reference_variable { zend_do_indirect_references(&$$, &$1, &$2 TSRMLS_CC); }
     873               7 : ;
     874                 : 
     875                 : static_member:
     876             328 :                 class_name T_PAAMAYIM_NEKUDOTAYIM variable_without_objects { $$ = $3; zend_do_fetch_static_member(&$$, &$1 TSRMLS_CC); }
     877             328 :         |       variable_class_name T_PAAMAYIM_NEKUDOTAYIM variable_without_objects { $$ = $3; zend_do_fetch_static_member(&$$, &$1 TSRMLS_CC); }
     878               4 : ;
     879                 : 
     880                 : variable_class_name:
     881              49 :         reference_variable { zend_do_end_variable_parse(&$1, BP_VAR_R, 0 TSRMLS_CC); $$=$1;}
     882              49 : ;
     883                 : 
     884                 : 
     885                 : base_variable_with_function_calls:
     886          415851 :                 base_variable           { $$ = $1; }
     887          415851 :         |       function_call { zend_do_begin_variable_parse(TSRMLS_C); $$ = $1; $$.u.EA.type = ZEND_PARSED_FUNCTION_CALL; }
     888          226195 : ;
     889                 : 
     890                 : 
     891                 : base_variable:
     892          416447 :                 reference_variable { $$ = $1; $$.u.EA.type = ZEND_PARSED_VARIABLE; }
     893          416447 :         |       simple_indirect_reference reference_variable { zend_do_indirect_references(&$$, &$1, &$2 TSRMLS_CC); $$.u.EA.type = ZEND_PARSED_VARIABLE; }
     894             132 :         |       static_member { $$ = $1; $$.u.EA.type = ZEND_PARSED_STATIC_MEMBER; }
     895             332 : ;
     896                 : 
     897                 : reference_variable:
     898           37484 :                 reference_variable '[' dim_offset ']'   { fetch_array_dim(&$$, &$1, &$3 TSRMLS_CC); }
     899           37484 :         |       reference_variable '{' expr '}'         { fetch_string_offset(&$$, &$1, &$3 TSRMLS_CC); }
     900              36 :         |       compound_variable                       { zend_do_begin_variable_parse(TSRMLS_C); fetch_simple_variable(&$$, &$1, 1 TSRMLS_CC); }
     901          418884 : ;
     902                 : 
     903                 : 
     904                 : compound_variable:
     905          418855 :                 T_VARIABLE                      { $$ = $1; }
     906          418855 :         |       '$' '{' expr '}'        { zend_do_normalization(&$$, &$3 TSRMLS_CC); }
     907              29 : ;
     908                 : 
     909                 : dim_offset:
     910             355 :                 /* empty */             { $$.op_type = IS_UNUSED; }
     911             355 :         |       expr                    { $$ = $1; }
     912           37608 : ;
     913                 : 
     914                 : 
     915                 : object_property:
     916           31253 :                 object_dim_list { $$ = $1; }
     917           31253 :         |       variable_without_objects { znode tmp_znode; zend_do_end_variable_parse(&$1, BP_VAR_R, 0 TSRMLS_CC); zend_do_pop_object(&tmp_znode TSRMLS_CC); zend_do_fetch_property(&$$, &tmp_znode, &$1 TSRMLS_CC);}
     918              67 : ;
     919                 : 
     920                 : object_dim_list:
     921             479 :                 object_dim_list '[' dim_offset ']'      { fetch_array_dim(&$$, &$1, &$3 TSRMLS_CC); }
     922             479 :         |       object_dim_list '{' expr '}'            { fetch_string_offset(&$$, &$1, &$3 TSRMLS_CC); }
     923               0 :         |       variable_name { znode tmp_znode;  zend_do_pop_object(&tmp_znode TSRMLS_CC);  zend_do_fetch_property(&$$, &tmp_znode, &$1 TSRMLS_CC);}
     924           31253 : ;
     925                 : 
     926                 : variable_name:
     927           31215 :                 T_STRING                { $$ = $1; }
     928           31215 :         |       '{' expr '}'    { zend_do_normalization(&$$, &$2 TSRMLS_CC); }
     929              38 : ;
     930                 : 
     931                 : simple_indirect_reference:
     932             139 :                 '$' { Z_LVAL($$.u.constant) = 1; }
     933             139 :         |       simple_indirect_reference '$' { Z_LVAL($$.u.constant)++; }
     934              10 : ;
     935                 : 
     936                 : assignment_list:
     937                 :                 assignment_list ',' assignment_list_element
     938                 :         |       assignment_list_element
     939                 : ;
     940                 : 
     941                 : 
     942                 : assignment_list_element:
     943             229 :                 variable                                                                { zend_do_add_list_element(&$1 TSRMLS_CC); }
     944             241 :         |       T_LIST '(' { zend_do_new_list_begin(TSRMLS_C); } assignment_list ')'    { zend_do_new_list_end(TSRMLS_C); }
     945              24 :         |       /* empty */                                                     { zend_do_add_list_element(NULL TSRMLS_CC); }
     946              17 : ;
     947                 : 
     948                 : 
     949                 : array_pair_list:
     950            2116 :                 /* empty */ { zend_do_init_array(&$$, NULL, NULL, 0 TSRMLS_CC); }
     951            2116 :         |       non_empty_array_pair_list possible_comma        { $$ = $1; }
     952           17342 : ;
     953                 : 
     954                 : non_empty_array_pair_list:
     955           17513 :                 non_empty_array_pair_list ',' expr T_DOUBLE_ARROW expr  { zend_do_add_array_element(&$$, &$5, &$3, 0 TSRMLS_CC); }
     956           17513 :         |       non_empty_array_pair_list ',' expr                      { zend_do_add_array_element(&$$, &$3, NULL, 0 TSRMLS_CC); }
     957           43465 :         |       expr T_DOUBLE_ARROW expr        { zend_do_init_array(&$$, &$3, &$1, 0 TSRMLS_CC); }
     958            6271 :         |       expr                            { zend_do_init_array(&$$, &$1, NULL, 0 TSRMLS_CC); }
     959           11023 :         |       non_empty_array_pair_list ',' expr T_DOUBLE_ARROW '&' w_variable { zend_do_add_array_element(&$$, &$6, &$3, 1 TSRMLS_CC); }
     960              46 :         |       non_empty_array_pair_list ',' '&' w_variable { zend_do_add_array_element(&$$, &$4, NULL, 1 TSRMLS_CC); }
     961              38 :         |       expr T_DOUBLE_ARROW '&' w_variable  { zend_do_init_array(&$$, &$4, &$1, 1 TSRMLS_CC); }
     962              14 :         |       '&' w_variable                      { zend_do_init_array(&$$, &$2, NULL, 1 TSRMLS_CC); }
     963              34 : ;
     964                 : 
     965                 : encaps_list:
     966            5244 :                 encaps_list encaps_var { zend_do_end_variable_parse(&$2, BP_VAR_R, 0 TSRMLS_CC);  zend_do_add_variable(&$$, &$1, &$2 TSRMLS_CC); }
     967            5244 :         |       encaps_list T_ENCAPSED_AND_WHITESPACE   { zend_do_add_string(&$$, &$1, &$2 TSRMLS_CC); }
     968           12022 :         |       encaps_var { zend_do_end_variable_parse(&$1, BP_VAR_R, 0 TSRMLS_CC); zend_do_add_variable(&$$, NULL, &$1 TSRMLS_CC); }
     969            3561 :         |       T_ENCAPSED_AND_WHITESPACE encaps_var    { zend_do_add_string(&$$, NULL, &$1 TSRMLS_CC); zend_do_end_variable_parse(&$2, BP_VAR_R, 0 TSRMLS_CC); zend_do_add_variable(&$$, &$$, &$2 TSRMLS_CC); }
     970            7146 : ;
     971                 : 
     972                 : 
     973                 : 
     974                 : encaps_var:
     975           14688 :                 T_VARIABLE { zend_do_begin_variable_parse(TSRMLS_C); fetch_simple_variable(&$$, &$1, 1 TSRMLS_CC); }
     976           15546 :         |       T_VARIABLE '[' { zend_do_begin_variable_parse(TSRMLS_C); } encaps_var_offset ']'        { fetch_array_begin(&$$, &$1, &$4 TSRMLS_CC); }
     977            1718 :         |       T_VARIABLE T_OBJECT_OPERATOR T_STRING { zend_do_begin_variable_parse(TSRMLS_C); fetch_simple_variable(&$2, &$1, 1 TSRMLS_CC); zend_do_fetch_property(&$$, &$2, &$3 TSRMLS_CC); }
     978              59 :         |       T_DOLLAR_OPEN_CURLY_BRACES expr '}' { zend_do_begin_variable_parse(TSRMLS_C);  fetch_simple_variable(&$$, &$2, 1 TSRMLS_CC); }
     979              75 :         |       T_DOLLAR_OPEN_CURLY_BRACES T_STRING_VARNAME '[' expr ']' '}' { zend_do_begin_variable_parse(TSRMLS_C);  fetch_array_begin(&$$, &$2, &$4 TSRMLS_CC); }
     980              10 :         |       T_CURLY_OPEN variable '}' { $$ = $2; }
     981             261 : ;
     982                 : 
     983                 : 
     984                 : encaps_var_offset:
     985               0 :                 T_STRING                { $$ = $1; }
     986               0 :         |       T_NUM_STRING    { $$ = $1; }
     987             286 :         |       T_VARIABLE              { fetch_simple_variable(&$$, &$1, 1 TSRMLS_CC); }
     988             572 : ;
     989                 : 
     990                 : 
     991                 : internal_functions_in_yacc:
     992            1866 :                 T_ISSET '(' isset_variables ')' { $$ = $3; }
     993            1866 :         |       T_EMPTY '(' variable ')'        { zend_do_isset_or_isempty(ZEND_ISEMPTY, &$$, &$3 TSRMLS_CC); }
     994            5375 :         |       T_INCLUDE expr                  { zend_do_include_or_eval(ZEND_INCLUDE, &$$, &$2 TSRMLS_CC); }
     995            1673 :         |       T_INCLUDE_ONCE expr     { zend_do_include_or_eval(ZEND_INCLUDE_ONCE, &$$, &$2 TSRMLS_CC); }
     996             401 :         |       T_EVAL '(' expr ')'     { zend_do_include_or_eval(ZEND_EVAL, &$$, &$3 TSRMLS_CC); }
     997            1701 :         |       T_REQUIRE expr                  { zend_do_include_or_eval(ZEND_REQUIRE, &$$, &$2 TSRMLS_CC); }
     998            1229 :         |       T_REQUIRE_ONCE expr             { zend_do_include_or_eval(ZEND_REQUIRE_ONCE, &$$, &$2 TSRMLS_CC); }
     999            5009 : ;
    1000                 : 
    1001                 : isset_variables:
    1002            1867 :                 variable                                { zend_do_isset_or_isempty(ZEND_ISSET, &$$, &$1 TSRMLS_CC); }
    1003            1909 :         |       isset_variables ',' { zend_do_boolean_and_begin(&$1, &$2 TSRMLS_CC); } variable { znode tmp; zend_do_isset_or_isempty(ZEND_ISSET, &tmp, &$4 TSRMLS_CC); zend_do_boolean_and_end(&$$, &$1, &tmp, &$2 TSRMLS_CC); }
    1004              86 : ;
    1005                 : 
    1006                 : class_constant:
    1007            7797 :                 class_name T_PAAMAYIM_NEKUDOTAYIM T_STRING { zend_do_fetch_constant(&$$, &$1, &$3, ZEND_RT, 0 TSRMLS_CC); }
    1008            7797 :         |       variable_class_name T_PAAMAYIM_NEKUDOTAYIM T_STRING { zend_do_fetch_constant(&$$, &$1, &$3, ZEND_RT, 0 TSRMLS_CC); }
    1009                 : ;
    1010                 : 
    1011                 : %%
    1012                 : 
    1013                 : /*
    1014                 :  * Local variables:
    1015                 :  * tab-width: 4
    1016                 :  * c-basic-offset: 4
    1017                 :  * indent-tabs-mode: t
    1018                 :  * End:
    1019                 :  */

Generated by: LTP GCOV extension version 1.5

Generated at Mon, 23 Nov 2009 17:39:27 +0000 (36 hours ago)

Copyright © 2005-2009 The PHP Group
All rights reserved.