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_5_3/Zend - zend_language_parser.y
Test: PHP Code Coverage
Date: 2009-11-21 Instrumented lines: 499
Code covered: 96.2 % Executed lines: 480
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 277815 2009-03-26 12:37:54Z dmitry $ */
      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_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_NAMESPACE
     148                 : %token T_NS_C
     149                 : %token T_DIR
     150                 : %token T_NS_SEPARATOR
     151                 : 
     152                 : %% /* Rules */
     153                 : 
     154                 : start:
     155           25822 :         top_statement_list      { zend_do_end_compilation(TSRMLS_C); }
     156           25822 : ;
     157                 : 
     158                 : top_statement_list:
     159          376303 :                 top_statement_list  { zend_do_extended_info(TSRMLS_C); } top_statement { HANDLE_INTERACTIVE(); }
     160          376303 :         |       /* empty */
     161                 : ;
     162                 : 
     163                 : namespace_name:
     164          327274 :                 T_STRING { $$ = $1; }
     165          327274 :         |       namespace_name T_NS_SEPARATOR T_STRING { zend_do_build_namespace_name(&$$, &$1, &$3 TSRMLS_CC); }
     166             287 : ;
     167                 : 
     168                 : top_statement:
     169          171839 :                 statement                                               { zend_verify_namespace(TSRMLS_C); }
     170          171838 :         |       function_declaration_statement  { zend_verify_namespace(TSRMLS_C); zend_do_early_binding(TSRMLS_C); }
     171           10605 :         |       class_declaration_statement             { zend_verify_namespace(TSRMLS_C); zend_do_early_binding(TSRMLS_C); }
     172            5284 :         |       T_HALT_COMPILER '(' ')' ';'             { zend_do_halt_compiler_register(TSRMLS_C); YYACCEPT; }
     173             121 :         |       T_NAMESPACE namespace_name ';'  { zend_do_begin_namespace(&$2, 0 TSRMLS_CC); }
     174             119 :         |       T_NAMESPACE namespace_name '{'  { zend_do_begin_namespace(&$2, 1 TSRMLS_CC); }
     175              11 :                 top_statement_list '}'              { zend_do_end_namespace(TSRMLS_C); }
     176               8 :         |       T_NAMESPACE '{'                                 { zend_do_begin_namespace(NULL, 1 TSRMLS_CC); }
     177               2 :                 top_statement_list '}'                  { zend_do_end_namespace(TSRMLS_C); }
     178               2 :         |       T_USE use_declarations ';'      { zend_verify_namespace(TSRMLS_C); }
     179              43 :         |       constant_declaration ';'                { zend_verify_namespace(TSRMLS_C); }
     180              32 : ;
     181                 : 
     182                 : use_declarations:
     183                 :                 use_declarations ',' use_declaration
     184                 :         |       use_declaration
     185                 : ;
     186                 : 
     187                 : use_declaration:
     188               7 :                 namespace_name                  { zend_do_use(&$1, NULL, 0 TSRMLS_CC); }
     189               6 :         |       namespace_name T_AS T_STRING    { zend_do_use(&$1, &$3, 0 TSRMLS_CC); }
     190              24 :         |       T_NS_SEPARATOR namespace_name { zend_do_use(&$2, NULL, 1 TSRMLS_CC); }
     191              10 :         |       T_NS_SEPARATOR namespace_name T_AS T_STRING { zend_do_use(&$2, &$4, 1 TSRMLS_CC); }
     192               4 : ;
     193                 : 
     194                 : constant_declaration:
     195               0 :                 constant_declaration ',' T_STRING '=' static_scalar     { zend_do_declare_constant(&$3, &$5 TSRMLS_CC); }
     196               0 :         |       T_CONST T_STRING '=' static_scalar { zend_do_declare_constant(&$2, &$4 TSRMLS_CC); }
     197              32 : ;
     198                 : 
     199                 : inner_statement_list:
     200          401661 :                 inner_statement_list  { zend_do_extended_info(TSRMLS_C); } inner_statement { HANDLE_INTERACTIVE(); }
     201          401661 :         |       /* empty */
     202                 : ;
     203                 : 
     204                 : 
     205                 : inner_statement:
     206                 :                 statement
     207                 :         |       function_declaration_statement
     208                 :         |       class_declaration_statement
     209               1 :         |       T_HALT_COMPILER '(' ')' ';'   { zend_error(E_COMPILE_ERROR, "__HALT_COMPILER() can only be used from the outermost scope"); }
     210               0 : ;
     211                 : 
     212                 : 
     213                 : statement:
     214          454043 :                 unticked_statement { zend_do_ticks(TSRMLS_C); }
     215          454043 :         |       T_STRING ':' { zend_do_label(&$1 TSRMLS_CC); }
     216              24 : ;
     217                 : 
     218                 : unticked_statement:
     219                 :                 '{' inner_statement_list '}'
     220          171346 :         |       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); }
     221          171352 :         |       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); }
     222            1475 :         |       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); }
     223            2723 :         |       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); }
     224             786 :         |       T_FOR
     225                 :                         '('
     226                 :                                 for_expr
     227            1882 :                         ';' { zend_do_free(&$3 TSRMLS_CC); $4.u.opline_num = get_next_op_number(CG(active_op_array)); }
     228            1882 :                                 for_expr
     229            1882 :                         ';' { zend_do_extended_info(TSRMLS_C); zend_do_for_cond(&$6, &$7 TSRMLS_CC); }
     230            1882 :                                 for_expr
     231            1882 :                         ')' { zend_do_free(&$9 TSRMLS_CC); zend_do_for_before_statement(&$4, &$7 TSRMLS_CC); }
     232            1882 :                         for_statement { zend_do_for_end(&$7 TSRMLS_CC); }
     233            2321 :         |       T_SWITCH '(' expr ')'   { zend_do_switch_cond(&$3 TSRMLS_CC); } switch_case_list { zend_do_switch_end(&$6 TSRMLS_CC); }
     234             878 :         |       T_BREAK ';'                             { zend_do_brk_cont(ZEND_BRK, NULL TSRMLS_CC); }
     235            1624 :         |       T_BREAK expr ';'                { zend_do_brk_cont(ZEND_BRK, &$2 TSRMLS_CC); }
     236              10 :         |       T_CONTINUE ';'                  { zend_do_brk_cont(ZEND_CONT, NULL TSRMLS_CC); }
     237             216 :         |       T_CONTINUE expr ';'             { zend_do_brk_cont(ZEND_CONT, &$2 TSRMLS_CC); }
     238               1 :         |       T_RETURN ';'                                            { zend_do_return(NULL, 0 TSRMLS_CC); }
     239             185 :         |       T_RETURN expr_without_variable ';'      { zend_do_return(&$2, 0 TSRMLS_CC); }
     240           15199 :         |       T_RETURN variable ';'                           { zend_do_return(&$2, 1 TSRMLS_CC); }
     241           17165 :         |       T_GLOBAL global_var_list ';'
     242                 :         |       T_STATIC static_var_list ';'
     243                 :         |       T_ECHO echo_expr_list ';'
     244            3223 :         |       T_INLINE_HTML                   { zend_do_echo(&$1 TSRMLS_CC); }
     245            3223 :         |       expr ';'                                { zend_do_free(&$1 TSRMLS_CC); }
     246          230272 :         |       T_UNSET '(' unset_variables ')' ';'
     247                 :         |       T_FOREACH '(' variable T_AS
     248            8447 :                 { zend_do_foreach_begin(&$1, &$2, &$3, &$4, 1 TSRMLS_CC); }
     249            8447 :                 foreach_variable foreach_optional_arg ')' { zend_do_foreach_cont(&$1, &$2, &$4, &$6, &$7 TSRMLS_CC); }
     250            8442 :                 foreach_statement { zend_do_foreach_end(&$1, &$4 TSRMLS_CC); }
     251            8442 :         |       T_FOREACH '(' expr_without_variable T_AS
     252             212 :                 { zend_do_foreach_begin(&$1, &$2, &$3, &$4, 0 TSRMLS_CC); }
     253             212 :                 variable foreach_optional_arg ')' { zend_check_writable_variable(&$6); zend_do_foreach_cont(&$1, &$2, &$4, &$6, &$7 TSRMLS_CC); }
     254             209 :                 foreach_statement { zend_do_foreach_end(&$1, &$4 TSRMLS_CC); }
     255             220 :         |       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); }
     256              22 :         |       ';'             /* empty statement */
     257            1854 :         |       T_TRY { zend_do_try(&$1 TSRMLS_CC); } '{' inner_statement_list '}'
     258            1854 :                 T_CATCH '(' { zend_initialize_try_catch_element(&$1 TSRMLS_CC); }
     259            1854 :                 fully_qualified_class_name { zend_do_first_catch(&$7 TSRMLS_CC); }
     260            1854 :                 T_VARIABLE ')' { zend_do_begin_catch(&$1, &$9, &$11, &$7 TSRMLS_CC); }
     261            1854 :                 '{' inner_statement_list '}' { zend_do_end_catch(&$1 TSRMLS_CC); }
     262            1854 :                 additional_catches { zend_do_mark_last_catch(&$7, &$18 TSRMLS_CC); }
     263            1854 :         |       T_THROW expr ';' { zend_do_throw(&$2 TSRMLS_CC); }
     264             237 :         |       T_GOTO T_STRING ';' { zend_do_goto(&$2 TSRMLS_CC); }
     265              22 : ;
     266                 : 
     267                 : 
     268                 : additional_catches:
     269               7 :                 non_empty_additional_catches { $$ = $1; }
     270               7 :         |       /* empty */ { $$.u.opline_num = -1; }
     271            1847 : ;
     272                 : 
     273                 : non_empty_additional_catches:
     274               7 :                 additional_catch { $$ = $1; }
     275               7 :         |       non_empty_additional_catches additional_catch { $$ = $2; }
     276               0 : ;
     277                 : 
     278                 : 
     279                 : additional_catch:
     280              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); }
     281              21 : ;
     282                 : 
     283                 : 
     284                 : unset_variables:
     285                 :                 unset_variable
     286                 :         |       unset_variables ',' unset_variable
     287                 : ;
     288                 : 
     289                 : unset_variable:
     290            1524 :                 variable        { zend_do_end_variable_parse(&$1, BP_VAR_UNSET, 0 TSRMLS_CC); zend_do_unset(&$1 TSRMLS_CC); }
     291            1523 : ;
     292                 : 
     293                 : function_declaration_statement:
     294           13787 :                 unticked_function_declaration_statement { zend_do_ticks(TSRMLS_C); }
     295           13787 : ;
     296                 : 
     297                 : class_declaration_statement:
     298            6169 :                 unticked_class_declaration_statement    { zend_do_ticks(TSRMLS_C); }
     299            6169 : ;
     300                 : 
     301                 : 
     302                 : is_reference:
     303           28710 :                 /* empty */     { $$.op_type = ZEND_RETURN_VAL; }
     304           28710 :         |       '&'                 { $$.op_type = ZEND_RETURN_REF; }
     305              45 : ;
     306                 : 
     307                 : 
     308                 : unticked_function_declaration_statement:
     309           13789 :                 function is_reference T_STRING { zend_do_begin_function_declaration(&$1, &$3, 0, $2.op_type, NULL TSRMLS_CC); }
     310           13789 :                         '(' parameter_list ')' '{' inner_statement_list '}' { zend_do_end_function_declaration(&$1 TSRMLS_CC); }
     311           13787 : ;
     312                 : 
     313                 : unticked_class_declaration_statement:
     314                 :                 class_entry_type T_STRING extends_from
     315            6085 :                         { zend_do_begin_class_declaration(&$1, &$2, &$3 TSRMLS_CC); }
     316            6079 :                         implements_list
     317                 :                         '{'
     318                 :                                 class_statement_list
     319            6026 :                         '}' { zend_do_end_class_declaration(&$1, &$2 TSRMLS_CC); }
     320            6018 :         |       interface_entry T_STRING
     321             154 :                         { zend_do_begin_class_declaration(&$1, &$2, NULL TSRMLS_CC); }
     322             154 :                         interface_extends_list
     323                 :                         '{'
     324                 :                                 class_statement_list
     325             151 :                         '}' { zend_do_end_class_declaration(&$1, &$2 TSRMLS_CC); }
     326             151 : ;
     327                 : 
     328                 : 
     329                 : class_entry_type:
     330            6016 :                 T_CLASS                 { $$.u.opline_num = CG(zend_lineno); $$.u.EA.type = 0; }
     331            6016 :         |       T_ABSTRACT T_CLASS { $$.u.opline_num = CG(zend_lineno); $$.u.EA.type = ZEND_ACC_EXPLICIT_ABSTRACT_CLASS; }
     332              62 :         |       T_FINAL T_CLASS { $$.u.opline_num = CG(zend_lineno); $$.u.EA.type = ZEND_ACC_FINAL_CLASS; }
     333               9 : ;
     334                 : 
     335                 : extends_from:
     336            4096 :                 /* empty */                                     { $$.op_type = IS_UNUSED; }
     337            4096 :         |       T_EXTENDS fully_qualified_class_name    { zend_do_fetch_class(&$$, &$2 TSRMLS_CC); }
     338            1989 : ;
     339                 : 
     340                 : interface_entry:
     341             155 :         T_INTERFACE             { $$.u.opline_num = CG(zend_lineno); $$.u.EA.type = ZEND_ACC_INTERFACE; }
     342             155 : ;
     343                 : 
     344                 : interface_extends_list:
     345                 :                 /* empty */
     346                 :         |       T_EXTENDS interface_list
     347                 : ;
     348                 : 
     349                 : implements_list:
     350                 :                 /* empty */
     351                 :         |       T_IMPLEMENTS interface_list
     352                 : ;
     353                 : 
     354                 : interface_list:
     355             276 :                 fully_qualified_class_name                      { zend_do_implements_interface(&$1 TSRMLS_CC); }
     356             274 :         |       interface_list ',' fully_qualified_class_name { zend_do_implements_interface(&$3 TSRMLS_CC); }
     357              35 : ;
     358                 : 
     359                 : foreach_optional_arg:
     360            4941 :                 /* empty */                                             { $$.op_type = IS_UNUSED; }
     361            4941 :         |       T_DOUBLE_ARROW foreach_variable { $$ = $2; }
     362            3717 : ;
     363                 : 
     364                 : 
     365                 : foreach_variable:
     366           12097 :                 variable                        { zend_check_writable_variable(&$1); $$ = $1; }
     367           12097 :         |       '&' variable                { zend_check_writable_variable(&$2); $$ = $2;  $$.u.EA.type |= ZEND_PARSED_REFERENCE_VARIABLE; }
     368              67 : ;
     369                 : 
     370                 : for_statement:
     371                 :                 statement
     372                 :         |       ':' inner_statement_list T_ENDFOR ';'
     373                 : ;
     374                 : 
     375                 : 
     376                 : foreach_statement:
     377                 :                 statement
     378                 :         |       ':' inner_statement_list T_ENDFOREACH ';'
     379                 : ;
     380                 : 
     381                 : 
     382                 : declare_statement:
     383                 :                 statement
     384                 :         |       ':' inner_statement_list T_ENDDECLARE ';'
     385                 : ;
     386                 : 
     387                 : 
     388                 : declare_list:
     389              11 :                 T_STRING '=' static_scalar                                      { zend_do_declare_stmt(&$1, &$3 TSRMLS_CC); }
     390              11 :         |       declare_list ',' T_STRING '=' static_scalar     { zend_do_declare_stmt(&$3, &$5 TSRMLS_CC); }
     391               0 : ;
     392                 : 
     393                 : 
     394                 : switch_case_list:
     395             438 :                 '{' case_list '}'                                       { $$ = $2; }
     396             438 :         |       '{' ';' case_list '}'                           { $$ = $3; }
     397               0 :         |       ':' case_list T_ENDSWITCH ';'           { $$ = $2; }
     398               1 :         |       ':' ';' case_list T_ENDSWITCH ';'       { $$ = $3; }
     399               0 : ;
     400                 : 
     401                 : 
     402                 : case_list:
     403             439 :                 /* empty */     { $$.op_type = IS_UNUSED; }
     404            1915 :         |       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; }
     405            3215 :         |       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; }
     406             526 : ;
     407                 : 
     408                 : 
     409                 : case_separator:
     410                 :                 ':'
     411                 :         |       ';'
     412                 : ;
     413                 : 
     414                 : 
     415                 : while_statement:
     416                 :                 statement
     417                 :         |       ':' inner_statement_list T_ENDWHILE ';'
     418                 : ;
     419                 : 
     420                 : 
     421                 : 
     422                 : elseif_list:
     423                 :                 /* empty */
     424            3288 :         |       elseif_list T_ELSEIF '(' expr ')' { zend_do_if_cond(&$4, &$5 TSRMLS_CC); } statement { zend_do_if_after_statement(&$5, 0 TSRMLS_CC); }
     425            3288 : ;
     426                 : 
     427                 : 
     428                 : new_elseif_list:
     429                 :                 /* empty */
     430               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); }
     431               0 : ;
     432                 : 
     433                 : 
     434                 : else_single:
     435                 :                 /* empty */
     436                 :         |       T_ELSE statement
     437                 : ;
     438                 : 
     439                 : 
     440                 : new_else_single:
     441                 :                 /* empty */
     442                 :         |       T_ELSE ':' inner_statement_list
     443                 : ;
     444                 : 
     445                 : 
     446                 : parameter_list:
     447                 :                 non_empty_parameter_list
     448                 :         |       /* empty */
     449                 : ;
     450                 : 
     451                 : 
     452                 : non_empty_parameter_list:
     453           19338 :                 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); }
     454           19336 :         |       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); }
     455             236 :         |       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); }
     456               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); }
     457            1697 :         |       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); }
     458           88331 :         |       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); }
     459             356 :         |       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); }
     460             326 :         |       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); }
     461           10945 : ;
     462                 : 
     463                 : 
     464                 : optional_class_type:
     465          120917 :                 /* empty */                                     { $$.op_type = IS_UNUSED; }
     466          120917 :         |       fully_qualified_class_name      { $$ = $1; }
     467             135 :         |       T_ARRAY                                         { $$.op_type = IS_CONST; Z_TYPE($$.u.constant)=IS_NULL;}
     468             179 : ;
     469                 : 
     470                 : 
     471                 : function_call_parameter_list:
     472          245830 :                 non_empty_function_call_parameter_list  { $$ = $1; }
     473          245830 :         |       /* empty */                             { Z_LVAL($$.u.constant) = 0; }
     474           30663 : ;
     475                 : 
     476                 : 
     477                 : non_empty_function_call_parameter_list:
     478          116206 :                 expr_without_variable   { Z_LVAL($$.u.constant) = 1;  zend_do_pass_param(&$1, ZEND_SEND_VAL, Z_LVAL($$.u.constant) TSRMLS_CC); }
     479          116201 :         |       variable                                { Z_LVAL($$.u.constant) = 1;  zend_do_pass_param(&$1, ZEND_SEND_VAR, Z_LVAL($$.u.constant) TSRMLS_CC); }
     480          129610 :         |       '&' w_variable                              { Z_LVAL($$.u.constant) = 1;  zend_do_pass_param(&$2, ZEND_SEND_REF, Z_LVAL($$.u.constant) TSRMLS_CC); }
     481              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); }
     482          131800 :         |       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); }
     483           93099 :         |       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); }
     484              11 : ;
     485                 : 
     486                 : global_var_list:
     487             738 :                 global_var_list ',' global_var  { zend_do_fetch_global_variable(&$3, NULL, ZEND_FETCH_GLOBAL_LOCK TSRMLS_CC); }
     488             738 :         |       global_var                                              { zend_do_fetch_global_variable(&$1, NULL, ZEND_FETCH_GLOBAL_LOCK TSRMLS_CC); }
     489            3788 : ;
     490                 : 
     491                 : 
     492                 : global_var:
     493            4524 :                 T_VARIABLE                      { $$ = $1; }
     494            4524 :         |       '$' r_variable          { $$ = $2; }
     495               1 :         |       '$' '{' expr '}'        { $$ = $3; }
     496               1 : ;
     497                 : 
     498                 : 
     499                 : static_var_list:
     500               2 :                 static_var_list ',' T_VARIABLE { zend_do_fetch_static_variable(&$3, NULL, ZEND_FETCH_STATIC TSRMLS_CC); }
     501               2 :         |       static_var_list ',' T_VARIABLE '=' static_scalar { zend_do_fetch_static_variable(&$3, &$5, ZEND_FETCH_STATIC TSRMLS_CC); }
     502               6 :         |       T_VARIABLE  { zend_do_fetch_static_variable(&$1, NULL, ZEND_FETCH_STATIC TSRMLS_CC); }
     503              18 :         |       T_VARIABLE '=' static_scalar { zend_do_fetch_static_variable(&$1, &$3, ZEND_FETCH_STATIC TSRMLS_CC); }
     504             988 : 
     505                 : ;
     506                 : 
     507                 : 
     508                 : class_statement_list:
     509                 :                 class_statement_list class_statement
     510                 :         |       /* empty */
     511                 : ;
     512                 : 
     513                 : 
     514                 : class_statement:
     515            1857 :                 variable_modifiers { CG(access_type) = Z_LVAL($1.u.constant); } class_variable_declaration ';'
     516            1857 :         |       class_constant_declaration ';'
     517           14876 :         |       method_modifiers function is_reference T_STRING { zend_do_begin_function_declaration(&$2, &$4, 1, $3.op_type, &$1 TSRMLS_CC); } '('
     518           14873 :                         parameter_list ')' method_body { zend_do_abstract_method(&$4, &$1, &$9 TSRMLS_CC); zend_do_end_function_declaration(&$2 TSRMLS_CC); }
     519           14846 : ;
     520                 : 
     521                 : 
     522                 : method_body:
     523             109 :                 ';' /* abstract method */               { Z_LVAL($$.u.constant) = ZEND_ACC_ABSTRACT; }
     524             109 :         |       '{' inner_statement_list '}'    { Z_LVAL($$.u.constant) = 0;    }
     525           14756 : ;
     526                 : 
     527                 : variable_modifiers:
     528            1738 :                 non_empty_member_modifiers              { $$ = $1; }
     529            1738 :         |       T_VAR                                                   { Z_LVAL($$.u.constant) = ZEND_ACC_PUBLIC; }
     530             119 : ;
     531                 : 
     532                 : method_modifiers:
     533            6741 :                 /* empty */                                                     { Z_LVAL($$.u.constant) = ZEND_ACC_PUBLIC; }
     534            6741 :         |       non_empty_member_modifiers                      { $$ = $1;  if (!(Z_LVAL($$.u.constant) & ZEND_ACC_PPP_MASK)) { Z_LVAL($$.u.constant) |= ZEND_ACC_PUBLIC; } }
     535            8136 : ;
     536                 : 
     537                 : non_empty_member_modifiers:
     538            9885 :                 member_modifier                                         { $$ = $1; }
     539            9885 :         |       non_empty_member_modifiers member_modifier      { Z_LVAL($$.u.constant) = zend_do_verify_access_types(&$1, &$2); }
     540             498 : ;
     541                 : 
     542                 : member_modifier:
     543            3370 :                 T_PUBLIC                                { Z_LVAL($$.u.constant) = ZEND_ACC_PUBLIC; }
     544            3370 :         |       T_PROTECTED                             { Z_LVAL($$.u.constant) = ZEND_ACC_PROTECTED; }
     545             540 :         |       T_PRIVATE                               { Z_LVAL($$.u.constant) = ZEND_ACC_PRIVATE; }
     546             620 :         |       T_STATIC                                { Z_LVAL($$.u.constant) = ZEND_ACC_STATIC; }
     547            5793 :         |       T_ABSTRACT                              { Z_LVAL($$.u.constant) = ZEND_ACC_ABSTRACT; }
     548              47 :         |       T_FINAL                                 { Z_LVAL($$.u.constant) = ZEND_ACC_FINAL; }
     549              24 : ;
     550                 : 
     551                 : class_variable_declaration:
     552              41 :                 class_variable_declaration ',' T_VARIABLE                                       { zend_do_declare_property(&$3, NULL, CG(access_type) TSRMLS_CC); }
     553              41 :         |       class_variable_declaration ',' T_VARIABLE '=' static_scalar     { zend_do_declare_property(&$3, &$5, CG(access_type) TSRMLS_CC); }
     554               3 :         |       T_VARIABLE                                              { zend_do_declare_property(&$1, NULL, CG(access_type) TSRMLS_CC); }
     555             812 :         |       T_VARIABLE '=' static_scalar    { zend_do_declare_property(&$1, &$3, CG(access_type) TSRMLS_CC); }
     556            1041 : ;
     557                 : 
     558                 : class_constant_declaration:
     559               3 :                 class_constant_declaration ',' T_STRING '=' static_scalar       { zend_do_declare_class_constant(&$3, &$5 TSRMLS_CC); }
     560               3 :         |       T_CONST T_STRING '=' static_scalar      { zend_do_declare_class_constant(&$2, &$4 TSRMLS_CC); }
     561             186 : ;
     562                 : 
     563                 : echo_expr_list:
     564             927 :                 echo_expr_list ',' expr { zend_do_echo(&$3 TSRMLS_CC); }
     565             927 :         |       expr                                    { zend_do_echo(&$1 TSRMLS_CC); }
     566           26334 : ;
     567                 : 
     568                 : 
     569                 : for_expr:
     570               8 :                 /* empty */                     { $$.op_type = IS_CONST;  Z_TYPE($$.u.constant) = IS_BOOL;  Z_LVAL($$.u.constant) = 1; }
     571               8 :         |       non_empty_for_expr      { $$ = $1; }
     572            5638 : ;
     573                 : 
     574                 : non_empty_for_expr:
     575              10 :                 non_empty_for_expr ','  { zend_do_free(&$1 TSRMLS_CC); } expr { $$ = $4; }
     576              10 :         |       expr                                    { $$ = $1; }
     577            5638 : ;
     578                 : 
     579                 : expr_without_variable:
     580             202 :                 T_LIST '(' { zend_do_list_init(TSRMLS_C); } assignment_list ')' '=' expr { zend_do_list_end(&$$, &$7 TSRMLS_CC); }
     581             202 :         |       variable '=' expr               { zend_check_writable_variable(&$1); zend_do_assign(&$$, &$1, &$3 TSRMLS_CC); }
     582          119151 :         |       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); }
     583             380 :         |       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); }
     584           10265 :         |       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);}
     585           20490 :         |       T_CLONE expr { zend_do_clone(&$$, &$2 TSRMLS_CC); }
     586              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); }
     587             619 :         |       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); }
     588             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); }
     589              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); }
     590               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); }
     591            2415 :         |       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); }
     592               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); }
     593               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); }
     594              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); }
     595               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); }
     596               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); }
     597               3 :         |       rw_variable T_INC { zend_do_post_incdec(&$$, &$1, ZEND_POST_INC TSRMLS_CC); }
     598            5263 :         |       T_INC rw_variable { zend_do_pre_incdec(&$$, &$2, ZEND_PRE_INC TSRMLS_CC); }
     599             422 :         |       rw_variable T_DEC { zend_do_post_incdec(&$$, &$1, ZEND_POST_DEC TSRMLS_CC); }
     600              50 :         |       T_DEC rw_variable { zend_do_pre_incdec(&$$, &$2, ZEND_PRE_DEC TSRMLS_CC); }
     601            1143 :         |       expr T_BOOLEAN_OR { zend_do_boolean_or_begin(&$1, &$2 TSRMLS_CC); } expr { zend_do_boolean_or_end(&$$, &$1, &$4, &$2 TSRMLS_CC); }
     602            5373 :         |       expr T_BOOLEAN_AND { zend_do_boolean_and_begin(&$1, &$2 TSRMLS_CC); } expr { zend_do_boolean_and_end(&$$, &$1, &$4, &$2 TSRMLS_CC); }
     603            6907 :         |       expr T_LOGICAL_OR { zend_do_boolean_or_begin(&$1, &$2 TSRMLS_CC); } expr { zend_do_boolean_or_end(&$$, &$1, &$4, &$2 TSRMLS_CC); }
     604            1389 :         |       expr T_LOGICAL_AND { zend_do_boolean_and_begin(&$1, &$2 TSRMLS_CC); } expr { zend_do_boolean_and_end(&$$, &$1, &$4, &$2 TSRMLS_CC); }
     605              22 :         |       expr T_LOGICAL_XOR expr { zend_do_binary_op(ZEND_BOOL_XOR, &$$, &$1, &$3 TSRMLS_CC); }
     606               0 :         |       expr '|' expr   { zend_do_binary_op(ZEND_BW_OR, &$$, &$1, &$3 TSRMLS_CC); }
     607             486 :         |       expr '&' expr       { zend_do_binary_op(ZEND_BW_AND, &$$, &$1, &$3 TSRMLS_CC); }
     608            1082 :         |       expr '^' expr   { zend_do_binary_op(ZEND_BW_XOR, &$$, &$1, &$3 TSRMLS_CC); }
     609              19 :         |       expr '.' expr   { zend_do_binary_op(ZEND_CONCAT, &$$, &$1, &$3 TSRMLS_CC); }
     610           31661 :         |       expr '+' expr   { zend_do_binary_op(ZEND_ADD, &$$, &$1, &$3 TSRMLS_CC); }
     611            3174 :         |       expr '-' expr   { zend_do_binary_op(ZEND_SUB, &$$, &$1, &$3 TSRMLS_CC); }
     612             618 :         |       expr '*' expr   { zend_do_binary_op(ZEND_MUL, &$$, &$1, &$3 TSRMLS_CC); }
     613            2383 :         |       expr '/' expr   { zend_do_binary_op(ZEND_DIV, &$$, &$1, &$3 TSRMLS_CC); }
     614             497 :         |       expr '%' expr   { zend_do_binary_op(ZEND_MOD, &$$, &$1, &$3 TSRMLS_CC); }
     615             113 :         |       expr T_SL expr  { zend_do_binary_op(ZEND_SL, &$$, &$1, &$3 TSRMLS_CC); }
     616             108 :         |       expr T_SR expr  { zend_do_binary_op(ZEND_SR, &$$, &$1, &$3 TSRMLS_CC); }
     617              34 :         |       '+' 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); } }
     618             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); } }
     619            6163 :         |       '!' expr { zend_do_unary_op(ZEND_BOOL_NOT, &$$, &$2 TSRMLS_CC); }
     620           23325 :         |       '~' expr { zend_do_unary_op(ZEND_BW_NOT, &$$, &$2 TSRMLS_CC); }
     621              82 :         |       expr T_IS_IDENTICAL expr                { zend_do_binary_op(ZEND_IS_IDENTICAL, &$$, &$1, &$3 TSRMLS_CC); }
     622            5200 :         |       expr T_IS_NOT_IDENTICAL expr    { zend_do_binary_op(ZEND_IS_NOT_IDENTICAL, &$$, &$1, &$3 TSRMLS_CC); }
     623            6696 :         |       expr T_IS_EQUAL expr                    { zend_do_binary_op(ZEND_IS_EQUAL, &$$, &$1, &$3 TSRMLS_CC); }
     624            9465 :         |       expr T_IS_NOT_EQUAL expr                { zend_do_binary_op(ZEND_IS_NOT_EQUAL, &$$, &$1, &$3 TSRMLS_CC); }
     625            2436 :         |       expr '<' expr                                        { zend_do_binary_op(ZEND_IS_SMALLER, &$$, &$1, &$3 TSRMLS_CC); }
     626            1446 :         |       expr T_IS_SMALLER_OR_EQUAL expr { zend_do_binary_op(ZEND_IS_SMALLER_OR_EQUAL, &$$, &$1, &$3 TSRMLS_CC); }
     627            1609 :         |       expr '>' expr                                        { zend_do_binary_op(ZEND_IS_SMALLER, &$$, &$3, &$1 TSRMLS_CC); }
     628             768 :         |       expr T_IS_GREATER_OR_EQUAL expr { zend_do_binary_op(ZEND_IS_SMALLER_OR_EQUAL, &$$, &$3, &$1 TSRMLS_CC); }
     629             257 :         |       expr T_INSTANCEOF class_name_reference { zend_do_instanceof(&$$, &$1, &$3, 0 TSRMLS_CC); }
     630              59 :         |       '(' expr ')'    { $$ = $2; }
     631           17918 :         |       expr '?' { zend_do_begin_qm_op(&$1, &$2 TSRMLS_CC); }
     632           22826 :                 expr ':' { zend_do_qm_true(&$4, &$2, &$5 TSRMLS_CC); }
     633           22826 :                 expr     { zend_do_qm_false(&$$, &$7, &$2, &$5 TSRMLS_CC); }
     634           22826 :         |       expr '?' ':' { zend_do_jmp_set(&$1, &$2, &$3 TSRMLS_CC); }
     635               8 :                 expr     { zend_do_jmp_set_else(&$$, &$5, &$2, &$3 TSRMLS_CC); }
     636               8 :         |       internal_functions_in_yacc { $$ = $1; }
     637           17893 :         |       T_INT_CAST expr         { zend_do_cast(&$$, &$2, IS_LONG TSRMLS_CC); }
     638            4514 :         |       T_DOUBLE_CAST expr      { zend_do_cast(&$$, &$2, IS_DOUBLE TSRMLS_CC); }
     639              20 :         |       T_STRING_CAST expr      { zend_do_cast(&$$, &$2, IS_STRING TSRMLS_CC); }
     640            1307 :         |       T_ARRAY_CAST expr       { zend_do_cast(&$$, &$2, IS_ARRAY TSRMLS_CC); }
     641              10 :         |       T_OBJECT_CAST expr      { zend_do_cast(&$$, &$2, IS_OBJECT TSRMLS_CC); }
     642             144 :         |       T_BOOL_CAST expr        { zend_do_cast(&$$, &$2, IS_BOOL TSRMLS_CC); }
     643             240 :         |       T_UNSET_CAST expr       { zend_do_cast(&$$, &$2, IS_NULL TSRMLS_CC); }
     644               0 :         |       T_EXIT exit_expr        { zend_do_exit(&$$, &$2 TSRMLS_CC); }
     645           17554 :         |       '@' { zend_do_begin_silence(&$1 TSRMLS_CC); } expr { zend_do_end_silence(&$1 TSRMLS_CC); $$ = $3; }
     646           10472 :         |       scalar                          { $$ = $1; }
     647          514426 :         |       T_ARRAY '(' array_pair_list ')' { $$ = $3; }
     648           20440 :         |       '`' backticks_expr '`' { zend_do_shell_exec(&$$, &$2 TSRMLS_CC); }
     649             104 :         |       T_PRINT expr  { zend_do_print(&$$, &$2 TSRMLS_CC); }
     650            3000 :         |       function is_reference '(' { zend_do_begin_lambda_function_declaration(&$$, &$1, $2.op_type TSRMLS_CC); }
     651              90 :                         parameter_list ')' lexical_vars '{' inner_statement_list '}' {  zend_do_end_function_declaration(&$1 TSRMLS_CC); $$ = $4; }
     652              90 : ;
     653                 : 
     654                 : function:
     655           28755 :         T_FUNCTION { $$.u.opline_num = CG(zend_lineno); }
     656           28755 : ;
     657                 : 
     658                 : lexical_vars:
     659                 :                 /* empty */
     660                 :         |       T_USE '(' lexical_var_list ')'
     661                 : ;
     662                 : 
     663                 : lexical_var_list:
     664               1 :                 lexical_var_list ',' T_VARIABLE                 { zend_do_fetch_lexical_variable(&$3, 0 TSRMLS_CC); }
     665               1 :         |       lexical_var_list ',' '&' T_VARIABLE         { zend_do_fetch_lexical_variable(&$4, 1 TSRMLS_CC); }
     666               0 :         |       T_VARIABLE                                                              { zend_do_fetch_lexical_variable(&$1, 0 TSRMLS_CC); }
     667              12 :         |       '&' T_VARIABLE                                                      { zend_do_fetch_lexical_variable(&$2, 1 TSRMLS_CC); }
     668              11 : ;
     669                 : 
     670                 : function_call:
     671          231086 :                 namespace_name '(' { $2.u.opline_num = zend_do_begin_function_call(&$1, 1 TSRMLS_CC); }
     672          231086 :                                 function_call_parameter_list
     673          231073 :                                 ')' { zend_do_end_function_call(&$1, &$$, &$4, 0, $2.u.opline_num TSRMLS_CC); zend_do_extended_fcall_end(TSRMLS_C); }
     674          231073 :         |       T_NAMESPACE T_NS_SEPARATOR namespace_name '(' { $1.op_type = IS_CONST; ZVAL_EMPTY_STRING(&$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); }
     675               8 :                                 function_call_parameter_list
     676               8 :                                 ')' { zend_do_end_function_call(&$1, &$$, &$6, 0, $4.u.opline_num TSRMLS_CC); zend_do_extended_fcall_end(TSRMLS_C); }
     677               8 :         |       T_NS_SEPARATOR namespace_name '(' { $3.u.opline_num = zend_do_begin_function_call(&$2, 0 TSRMLS_CC); }
     678              14 :                                 function_call_parameter_list
     679              14 :                                 ')' { zend_do_end_function_call(&$2, &$$, &$5, 0, $3.u.opline_num TSRMLS_CC); zend_do_extended_fcall_end(TSRMLS_C); }
     680              14 :         |       class_name T_PAAMAYIM_NEKUDOTAYIM T_STRING '(' { $4.u.opline_num = zend_do_begin_class_member_function_call(&$1, &$3 TSRMLS_CC); }
     681            8632 :                         function_call_parameter_list
     682            8632 :                         ')' { 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);}
     683            8632 :         |       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); }
     684               8 :                         function_call_parameter_list
     685               8 :                         ')' { zend_do_end_function_call(NULL, &$$, &$6, 1, 1 TSRMLS_CC); zend_do_extended_fcall_end(TSRMLS_C);}
     686               8 :         |       variable_class_name T_PAAMAYIM_NEKUDOTAYIM T_STRING '(' { zend_do_begin_class_member_function_call(&$1, &$3 TSRMLS_CC); }
     687              13 :                         function_call_parameter_list
     688              13 :                         ')' { zend_do_end_function_call(NULL, &$$, &$6, 1, 1 TSRMLS_CC); zend_do_extended_fcall_end(TSRMLS_C);}
     689              13 :         |       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); }
     690              23 :                         function_call_parameter_list
     691              23 :                         ')' { zend_do_end_function_call(NULL, &$$, &$6, 1, 1 TSRMLS_CC); zend_do_extended_fcall_end(TSRMLS_C);}
     692              23 :         |       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); }
     693            1807 :                         function_call_parameter_list ')'
     694            1807 :                         { zend_do_end_function_call(&$1, &$$, &$4, 0, 1 TSRMLS_CC); zend_do_extended_fcall_end(TSRMLS_C);}
     695            1807 : ;
     696                 : 
     697                 : class_name:
     698              39 :                 T_STATIC { $$.op_type = IS_CONST; ZVAL_STRINGL(&$$.u.constant, "static", sizeof("static")-1, 1);}
     699              39 :         |       namespace_name { $$ = $1; }
     700           26899 :         |       T_NAMESPACE T_NS_SEPARATOR namespace_name { $$.op_type = IS_CONST; ZVAL_EMPTY_STRING(&$$.u.constant);  zend_do_build_namespace_name(&$$, &$$, &$3 TSRMLS_CC); }
     701              14 :         |       T_NS_SEPARATOR namespace_name { char *tmp = estrndup(Z_STRVAL($2.u.constant), Z_STRLEN($2.u.constant)+1); memcpy(&(tmp[1]), Z_STRVAL($2.u.constant), Z_STRLEN($2.u.constant)+1); tmp[0] = '\\'; efree(Z_STRVAL($2.u.constant)); Z_STRVAL($2.u.constant) = tmp; ++Z_STRLEN($2.u.constant); $$ = $2; }
     702              75 : ;
     703                 : 
     704                 : fully_qualified_class_name:
     705            4276 :                 namespace_name { $$ = $1; }
     706            4276 :         |       T_NAMESPACE T_NS_SEPARATOR namespace_name { $$.op_type = IS_CONST; ZVAL_EMPTY_STRING(&$$.u.constant);  zend_do_build_namespace_name(&$$, &$$, &$3 TSRMLS_CC); }
     707               2 :         |       T_NS_SEPARATOR namespace_name { char *tmp = estrndup(Z_STRVAL($2.u.constant), Z_STRLEN($2.u.constant)+1); memcpy(&(tmp[1]), Z_STRVAL($2.u.constant), Z_STRLEN($2.u.constant)+1); tmp[0] = '\\'; efree(Z_STRVAL($2.u.constant)); Z_STRVAL($2.u.constant) = tmp; ++Z_STRLEN($2.u.constant); $$ = $2; }
     708              18 : ;
     709                 : 
     710                 : 
     711                 : 
     712                 : class_name_reference:
     713            9158 :                 class_name                                              { zend_do_fetch_class(&$$, &$1 TSRMLS_CC); }
     714            9158 :         |       dynamic_class_name_reference    { zend_do_end_variable_parse(&$1, BP_VAR_R, 0 TSRMLS_CC); zend_do_fetch_class(&$$, &$1 TSRMLS_CC); }
     715            1157 : ;
     716                 : 
     717                 : 
     718                 : dynamic_class_name_reference:
     719               1 :                 base_variable T_OBJECT_OPERATOR { zend_do_push_object(&$1 TSRMLS_CC); }
     720               1 :                         object_property { zend_do_push_object(&$4 TSRMLS_CC); zend_do_declare_implicit_property(TSRMLS_C); } dynamic_class_name_variable_properties
     721               1 :                         { zend_do_pop_object(&$$ TSRMLS_CC); $$.u.EA.type = ZEND_PARSED_MEMBER; }
     722               1 :         |       base_variable { $$ = $1; }
     723            1156 : ;
     724                 : 
     725                 : 
     726                 : dynamic_class_name_variable_properties:
     727                 :                 dynamic_class_name_variable_properties dynamic_class_name_variable_property
     728                 :         |       /* empty */
     729                 : ;
     730                 : 
     731                 : 
     732                 : dynamic_class_name_variable_property:
     733               0 :                 T_OBJECT_OPERATOR object_property { zend_do_push_object(&$2 TSRMLS_CC); zend_do_declare_implicit_property(TSRMLS_C); }
     734               0 : ;
     735                 : 
     736                 : exit_expr:
     737             380 :                 /* empty */     { memset(&$$, 0, sizeof(znode)); $$.op_type = IS_UNUSED; }
     738             380 :         |       '(' ')'         { memset(&$$, 0, sizeof(znode)); $$.op_type = IS_UNUSED; }
     739             115 :         |       '(' expr ')'    { $$ = $2; }
     740           11823 : ;
     741                 : 
     742                 : backticks_expr:
     743               0 :                 /* empty */     { ZVAL_EMPTY_STRING(&$$.u.constant); INIT_PZVAL(&$$.u.constant); $$.op_type = IS_CONST; }
     744               0 :         |       T_ENCAPSED_AND_WHITESPACE       { $$ = $1; }
     745               2 :         |       encaps_list     { $$ = $1; }
     746             102 : ;
     747                 : 
     748                 : 
     749                 : ctor_arguments:
     750            2149 :                 /* empty */     { Z_LVAL($$.u.constant)=0; }
     751            2149 :         |       '(' function_call_parameter_list ')'    { $$ = $2; }
     752            8106 : ;
     753                 : 
     754                 : 
     755                 : common_scalar:
     756           79303 :                 T_LNUMBER                                       { $$ = $1; }
     757           79303 :         |       T_DNUMBER                                       { $$ = $1; }
     758            7561 :         |       T_CONSTANT_ENCAPSED_STRING      { $$ = $1; }
     759          349902 :         |       T_LINE                                          { $$ = $1; }
     760              15 :         |       T_FILE                                          { $$ = $1; }
     761            7549 :         |       T_DIR                                           { $$ = $1; }
     762             122 :         |       T_CLASS_C                                       { $$ = $1; }
     763              73 :         |       T_METHOD_C                                      { $$ = $1; }
     764             768 :         |       T_FUNC_C                                        { $$ = $1; }
     765              97 :         |       T_NS_C                                          { $$ = $1; }
     766              33 :         |       T_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); }
     767            1229 :         |       T_START_HEREDOC T_END_HEREDOC { 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); }
     768              62 : ;
     769                 : 
     770                 : 
     771                 : static_scalar: /* compile-time evaluated scalars */
     772           11059 :                 common_scalar           { $$ = $1; }
     773           11059 :         |       namespace_name          { zend_do_fetch_constant(&$$, NULL, &$1, ZEND_CT, 1 TSRMLS_CC); }
     774            5844 :         |       T_NAMESPACE T_NS_SEPARATOR namespace_name { $$.op_type = IS_CONST; ZVAL_EMPTY_STRING(&$$.u.constant);  zend_do_build_namespace_name(&$$, &$$, &$3 TSRMLS_CC); $3 = $$; zend_do_fetch_constant(&$$, NULL, &$3, ZEND_CT, 0 TSRMLS_CC); }
     775              14 :         |       T_NS_SEPARATOR namespace_name { char *tmp = estrndup(Z_STRVAL($2.u.constant), Z_STRLEN($2.u.constant)+1); memcpy(&(tmp[1]), Z_STRVAL($2.u.constant), Z_STRLEN($2.u.constant)+1); tmp[0] = '\\'; efree(Z_STRVAL($2.u.constant)); Z_STRVAL($2.u.constant) = tmp; ++Z_STRLEN($2.u.constant); zend_do_fetch_constant(&$$, NULL, &$2, ZEND_CT, 0 TSRMLS_CC); }
     776              13 :         |       '+' static_scalar { ZVAL_LONG(&$1.u.constant, 0); add_function(&$2.u.constant, &$1.u.constant, &$2.u.constant TSRMLS_CC); $$ = $2; }
     777               2 :         |       '-' static_scalar { ZVAL_LONG(&$1.u.constant, 0); sub_function(&$2.u.constant, &$1.u.constant, &$2.u.constant TSRMLS_CC); $$ = $2; }
     778               5 :         |       T_ARRAY '(' static_array_pair_list ')' { $$ = $3; Z_TYPE($$.u.constant) = IS_CONSTANT_ARRAY; }
     779            1125 :         |       static_class_constant { $$ = $1; }
     780             314 : ;
     781                 : 
     782                 : static_class_constant:
     783             314 :                 class_name T_PAAMAYIM_NEKUDOTAYIM T_STRING { zend_do_fetch_constant(&$$, &$1, &$3, ZEND_CT, 0 TSRMLS_CC); }
     784             314 : ;
     785                 : 
     786                 : scalar:
     787              77 :                 T_STRING_VARNAME                { $$ = $1; }
     788              77 :         |       class_constant          { $$ = $1; }
     789            8590 :         |       namespace_name  { zend_do_fetch_constant(&$$, NULL, &$1, ZEND_RT, 1 TSRMLS_CC); }
     790           58807 :         |       T_NAMESPACE T_NS_SEPARATOR namespace_name { $$.op_type = IS_CONST; ZVAL_EMPTY_STRING(&$$.u.constant);  zend_do_build_namespace_name(&$$, &$$, &$3 TSRMLS_CC); $3 = $$; zend_do_fetch_constant(&$$, NULL, &$3, ZEND_RT, 0 TSRMLS_CC); }
     791               9 :         |       T_NS_SEPARATOR namespace_name { char *tmp = estrndup(Z_STRVAL($2.u.constant), Z_STRLEN($2.u.constant)+1); memcpy(&(tmp[1]), Z_STRVAL($2.u.constant), Z_STRLEN($2.u.constant)+1); tmp[0] = '\\'; efree(Z_STRVAL($2.u.constant)); Z_STRVAL($2.u.constant) = tmp; ++Z_STRLEN($2.u.constant); zend_do_fetch_constant(&$$, NULL, &$2, ZEND_RT, 0 TSRMLS_CC); }
     792              14 :         |       common_scalar                   { $$ = $1; }
     793          435655 :         |       '"' encaps_list '"'   { $$ = $2; }
     794           11169 :         |       T_START_HEREDOC encaps_list T_END_HEREDOC { $$ = $2; CG(heredoc) = Z_STRVAL($1.u.constant); CG(heredoc_len) = Z_STRLEN($1.u.constant); }
     795             105 : ;
     796                 : 
     797                 : 
     798                 : static_array_pair_list:
     799              67 :                 /* empty */ { $$.op_type = IS_CONST; INIT_PZVAL(&$$.u.constant); array_init(&$$.u.constant); }
     800              67 :         |       non_empty_static_array_pair_list possible_comma { $$ = $1; }
     801            1058 : ;
     802                 : 
     803                 : possible_comma:
     804                 :                 /* empty */
     805                 :         |       ','
     806                 : ;
     807                 : 
     808                 : non_empty_static_array_pair_list:
     809              34 :                 non_empty_static_array_pair_list ',' static_scalar T_DOUBLE_ARROW static_scalar { zend_do_add_static_array_element(&$$, &$3, &$5); }
     810              34 :         |       non_empty_static_array_pair_list ',' static_scalar { zend_do_add_static_array_element(&$$, NULL, &$3); }
     811            1899 :         |       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); }
     812              96 :         |       static_scalar { $$.op_type = IS_CONST; INIT_PZVAL(&$$.u.constant); array_init(&$$.u.constant); zend_do_add_static_array_element(&$$, NULL, &$1); }
     813             962 : ;
     814                 : 
     815                 : expr:
     816          297256 :                 r_variable                                      { $$ = $1; }
     817          297256 :         |       expr_without_variable           { $$ = $1; }
     818          598943 : ;
     819                 : 
     820                 : 
     821                 : r_variable:
     822          297258 :         variable { zend_do_end_variable_parse(&$1, BP_VAR_R, 0 TSRMLS_CC); $$ = $1; }
     823          297257 : ;
     824                 : 
     825                 : 
     826                 : w_variable:
     827             164 :         variable        { zend_do_end_variable_parse(&$1, BP_VAR_W, 0 TSRMLS_CC); $$ = $1;
     828             164 :                                   zend_check_writable_variable(&$1); }
     829             164 : ;
     830                 : 
     831                 : rw_variable:
     832            5746 :         variable        { zend_do_end_variable_parse(&$1, BP_VAR_RW, 0 TSRMLS_CC); $$ = $1;
     833            5746 :                                   zend_check_writable_variable(&$1); }
     834            5746 : ;
     835                 : 
     836                 : variable:
     837           33931 :                 base_variable_with_function_calls T_OBJECT_OPERATOR { zend_do_push_object(&$1 TSRMLS_CC); }
     838           33931 :                         object_property { zend_do_push_object(&$4 TSRMLS_CC); } method_or_not variable_properties
     839           33931 :                         { 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); }
     840           33930 :         |       base_variable_with_function_calls { $$ = $1; }
     841          662544 : ;
     842                 : 
     843                 : variable_properties:
     844            1174 :                 variable_properties variable_property { $$.u.EA.type = $2.u.EA.type; }
     845            1174 :         |       /* empty */ { $$.u.EA.type = 0; }
     846           33930 : ;
     847                 : 
     848                 : 
     849                 : variable_property:
     850            2348 :                 T_OBJECT_OPERATOR object_property { zend_do_push_object(&$2 TSRMLS_CC); } method_or_not { $$.u.EA.type = $4.u.EA.type; }
     851            2348 : ;
     852                 : 
     853                 : method_or_not:
     854           26810 :                 '(' { zend_do_pop_object(&$1 TSRMLS_CC); zend_do_begin_method_call(&$1 TSRMLS_CC); }
     855           26809 :                                 function_call_parameter_list ')'
     856           26809 :                         { zend_do_end_function_call(&$1, &$$, &$3, 1, 1 TSRMLS_CC); zend_do_extended_fcall_end(TSRMLS_C);
     857           26809 :                           zend_do_push_object(&$$ TSRMLS_CC); $$.u.EA.type = ZEND_PARSED_METHOD_CALL; }
     858           26809 :         |       /* empty */ { zend_do_declare_implicit_property(TSRMLS_C); $$.u.EA.type = ZEND_PARSED_MEMBER; }
     859            8295 : ;
     860                 : 
     861                 : variable_without_objects:
     862            2229 :                 reference_variable { $$ = $1; }
     863            2229 :         |       simple_indirect_reference reference_variable { zend_do_indirect_references(&$$, &$1, &$2 TSRMLS_CC); }
     864               7 : ;
     865                 : 
     866                 : static_member:
     867             328 :                 class_name T_PAAMAYIM_NEKUDOTAYIM variable_without_objects { $$ = $3; zend_do_fetch_static_member(&$$, &$1 TSRMLS_CC); }
     868             328 :         |       variable_class_name T_PAAMAYIM_NEKUDOTAYIM variable_without_objects { $$ = $3; zend_do_fetch_static_member(&$$, &$1 TSRMLS_CC); }
     869               3 : 
     870                 : ;
     871                 : 
     872                 : variable_class_name:
     873              43 :                 reference_variable { zend_do_end_variable_parse(&$1, BP_VAR_R, 0 TSRMLS_CC); $$=$1;; }
     874              43 : ;
     875                 : 
     876                 : base_variable_with_function_calls:
     877          454897 :                 base_variable           { $$ = $1; }
     878          454897 :         |       function_call { zend_do_begin_variable_parse(TSRMLS_C); $$ = $1; $$.u.EA.type = ZEND_PARSED_FUNCTION_CALL; }
     879          241578 : ;
     880                 : 
     881                 : 
     882                 : base_variable:
     883          455587 :                 reference_variable { $$ = $1; $$.u.EA.type = ZEND_PARSED_VARIABLE; }
     884          455587 :         |       simple_indirect_reference reference_variable { zend_do_indirect_references(&$$, &$1, &$2 TSRMLS_CC); $$.u.EA.type = ZEND_PARSED_VARIABLE; }
     885             136 :         |       static_member { $$ = $1; $$.u.EA.type = ZEND_PARSED_STATIC_MEMBER; }
     886             331 : ;
     887                 : 
     888                 : reference_variable:
     889           41090 :                 reference_variable '[' dim_offset ']'   { fetch_array_dim(&$$, &$1, &$3 TSRMLS_CC); }
     890           41090 :         |       reference_variable '{' expr '}'         { fetch_string_offset(&$$, &$1, &$3 TSRMLS_CC); }
     891               5 :         |       compound_variable                       { zend_do_begin_variable_parse(TSRMLS_C); fetch_simple_variable(&$$, &$1, 1 TSRMLS_CC); }
     892          458002 : ;
     893                 : 
     894                 : 
     895                 : compound_variable:
     896          457974 :                 T_VARIABLE                      { $$ = $1; }
     897          457974 :         |       '$' '{' expr '}'        { $$ = $3; }
     898              28 : ;
     899                 : 
     900                 : dim_offset:
     901             363 :                 /* empty */             { $$.op_type = IS_UNUSED; }
     902             363 :         |       expr                    { $$ = $1; }
     903           41213 : ;
     904                 : 
     905                 : 
     906                 : object_property:
     907           35039 :                 object_dim_list { $$ = $1; }
     908           35106 :         |       variable_without_objects { zend_do_end_variable_parse(&$1, BP_VAR_R, 0 TSRMLS_CC); } { znode tmp_znode;  zend_do_pop_object(&tmp_znode TSRMLS_CC);  zend_do_fetch_property(&$$, &tmp_znode, &$1 TSRMLS_CC);}
     909             134 : ;
     910                 : 
     911                 : object_dim_list:
     912             486 :                 object_dim_list '[' dim_offset ']'      { fetch_array_dim(&$$, &$1, &$3 TSRMLS_CC); }
     913             486 :         |       object_dim_list '{' expr '}'            { fetch_string_offset(&$$, &$1, &$3 TSRMLS_CC); }
     914               0 :         |       variable_name { znode tmp_znode;  zend_do_pop_object(&tmp_znode TSRMLS_CC);  zend_do_fetch_property(&$$, &tmp_znode, &$1 TSRMLS_CC);}
     915           35039 : ;
     916                 : 
     917                 : variable_name:
     918           35001 :                 T_STRING                { $$ = $1; }
     919           35001 :         |       '{' expr '}'    { $$ = $2; }
     920              38 : ;
     921                 : 
     922                 : simple_indirect_reference:
     923             144 :                 '$' { Z_LVAL($$.u.constant) = 1; }
     924             144 :         |       simple_indirect_reference '$' { Z_LVAL($$.u.constant)++; }
     925              10 : ;
     926                 : 
     927                 : assignment_list:
     928                 :                 assignment_list ',' assignment_list_element
     929                 :         |       assignment_list_element
     930                 : ;
     931                 : 
     932                 : 
     933                 : assignment_list_element:
     934             240 :                 variable                                                                { zend_do_add_list_element(&$1 TSRMLS_CC); }
     935             252 :         |       T_LIST '(' { zend_do_new_list_begin(TSRMLS_C); } assignment_list ')'    { zend_do_new_list_end(TSRMLS_C); }
     936              24 :         |       /* empty */                                                     { zend_do_add_list_element(NULL TSRMLS_CC); }
     937              17 : ;
     938                 : 
     939                 : 
     940                 : array_pair_list:
     941            2152 :                 /* empty */ { zend_do_init_array(&$$, NULL, NULL, 0 TSRMLS_CC); }
     942            2152 :         |       non_empty_array_pair_list possible_comma        { $$ = $1; }
     943           18288 : ;
     944                 : 
     945                 : non_empty_array_pair_list:
     946           18035 :                 non_empty_array_pair_list ',' expr T_DOUBLE_ARROW expr  { zend_do_add_array_element(&$$, &$5, &$3, 0 TSRMLS_CC); }
     947           18035 :         |       non_empty_array_pair_list ',' expr                      { zend_do_add_array_element(&$$, &$3, NULL, 0 TSRMLS_CC); }
     948           47132 :         |       expr T_DOUBLE_ARROW expr        { zend_do_init_array(&$$, &$3, &$1, 0 TSRMLS_CC); }
     949            6446 :         |       expr                            { zend_do_init_array(&$$, &$1, NULL, 0 TSRMLS_CC); }
     950           11793 :         |       non_empty_array_pair_list ',' expr T_DOUBLE_ARROW '&' w_variable { zend_do_add_array_element(&$$, &$6, &$3, 1 TSRMLS_CC); }
     951              46 :         |       non_empty_array_pair_list ',' '&' w_variable { zend_do_add_array_element(&$$, &$4, NULL, 1 TSRMLS_CC); }
     952              38 :         |       expr T_DOUBLE_ARROW '&' w_variable  { zend_do_init_array(&$$, &$4, &$1, 1 TSRMLS_CC); }
     953              14 :         |       '&' w_variable                      { zend_do_init_array(&$$, &$2, NULL, 1 TSRMLS_CC); }
     954              35 : ;
     955                 : 
     956                 : encaps_list:
     957            5616 :                 encaps_list encaps_var { zend_do_end_variable_parse(&$2, BP_VAR_R, 0 TSRMLS_CC);  zend_do_add_variable(&$$, &$1, &$2 TSRMLS_CC); }
     958            5616 :         |       encaps_list T_ENCAPSED_AND_WHITESPACE   { zend_do_add_string(&$$, &$1, &$2 TSRMLS_CC); }
     959           12709 :         |       encaps_var { zend_do_end_variable_parse(&$1, BP_VAR_R, 0 TSRMLS_CC); zend_do_add_variable(&$$, NULL, &$1 TSRMLS_CC); }
     960            3794 :         |       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); }
     961            7583 : ;
     962                 : 
     963                 : 
     964                 : 
     965                 : encaps_var:
     966           15682 :                 T_VARIABLE { zend_do_begin_variable_parse(TSRMLS_C); fetch_simple_variable(&$$, &$1, 1 TSRMLS_CC); }
     967           16566 :         |       T_VARIABLE '[' { zend_do_begin_variable_parse(TSRMLS_C); } encaps_var_offset ']'        { fetch_array_begin(&$$, &$1, &$4 TSRMLS_CC); }
     968            1770 :         |       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); }
     969              59 :         |       T_DOLLAR_OPEN_CURLY_BRACES expr '}' { zend_do_begin_variable_parse(TSRMLS_C);  fetch_simple_variable(&$$, &$2, 1 TSRMLS_CC); }
     970              77 :         |       T_DOLLAR_OPEN_CURLY_BRACES T_STRING_VARNAME '[' expr ']' '}' { zend_do_begin_variable_parse(TSRMLS_C);  fetch_array_begin(&$$, &$2, &$4 TSRMLS_CC); }
     971              10 :         |       T_CURLY_OPEN variable '}' { $$ = $2; }
     972             281 : ;
     973                 : 
     974                 : 
     975                 : encaps_var_offset:
     976               2 :                 T_STRING                { $$ = $1; }
     977               2 :         |       T_NUM_STRING    { $$ = $1; }
     978             304 :         |       T_VARIABLE              { fetch_simple_variable(&$$, &$1, 1 TSRMLS_CC); }
     979             578 : ;
     980                 : 
     981                 : 
     982                 : internal_functions_in_yacc:
     983            1884 :                 T_ISSET '(' isset_variables ')' { $$ = $3; }
     984            1884 :         |       T_EMPTY '(' variable ')'        { zend_do_isset_or_isempty(ZEND_ISEMPTY, &$$, &$3 TSRMLS_CC); }
     985            5435 :         |       T_INCLUDE expr                  { zend_do_include_or_eval(ZEND_INCLUDE, &$$, &$2 TSRMLS_CC); }
     986            1710 :         |       T_INCLUDE_ONCE expr     { zend_do_include_or_eval(ZEND_INCLUDE_ONCE, &$$, &$2 TSRMLS_CC); }
     987             480 :         |       T_EVAL '(' expr ')'     { zend_do_include_or_eval(ZEND_EVAL, &$$, &$3 TSRMLS_CC); }
     988            1897 :         |       T_REQUIRE expr                  { zend_do_include_or_eval(ZEND_REQUIRE, &$$, &$2 TSRMLS_CC); }
     989            1231 :         |       T_REQUIRE_ONCE expr             { zend_do_include_or_eval(ZEND_REQUIRE_ONCE, &$$, &$2 TSRMLS_CC); }
     990            5256 : ;
     991                 : 
     992                 : isset_variables:
     993            1885 :                 variable                                { zend_do_isset_or_isempty(ZEND_ISSET, &$$, &$1 TSRMLS_CC); }
     994            1927 :         |       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); }
     995              86 : ;
     996                 : 
     997                 : class_constant:
     998            8586 :                 class_name T_PAAMAYIM_NEKUDOTAYIM T_STRING { zend_do_fetch_constant(&$$, &$1, &$3, ZEND_RT, 0 TSRMLS_CC); }
     999            8586 :         |       variable_class_name T_PAAMAYIM_NEKUDOTAYIM T_STRING { zend_do_fetch_constant(&$$, &$1, &$3, ZEND_RT, 0 TSRMLS_CC); }
    1000                 : ;
    1001                 : 
    1002                 : %%
    1003                 : 
    1004                 : /*
    1005                 :  * Local variables:
    1006                 :  * tab-width: 4
    1007                 :  * c-basic-offset: 4
    1008                 :  * indent-tabs-mode: t
    1009                 :  * End:
    1010                 :  */

Generated by: LTP GCOV extension version 1.5

Generated at Sat, 21 Nov 2009 12:26:55 +0000 (3 days ago)

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