Lines Matching refs:p

94 def p_start(p):  argument
96 p[0] = p[1]
98 def p_top_statement_list(p): argument
101 if len(p) == 3:
102 p[0] = p[1] + [p[2]]
104 p[0] = []
106 def p_top_statement(p): argument
111 if len(p) == 2:
112 p[0] = p[1]
117 def p_top_statement_namespace(p): argument
121 if len(p) == 4:
122 p[0] = ast.Namespace(p[2], [], lineno=p.lineno(1))
123 elif len(p) == 5:
124 p[0] = ast.Namespace(None, p[3], lineno=p.lineno(1))
126 p[0] = ast.Namespace(p[2], p[4], lineno=p.lineno(1))
128 def p_top_statement_constant(p): argument
130 p[0] = ast.ConstantDeclarations(p[2], lineno=p.lineno(1))
132 def p_top_statement_use(p): argument
134 p[0] = ast.UseDeclarations(p[2], lineno=p.lineno(1))
136 def p_use_declarations(p): argument
139 if len(p) == 4:
140 p[0] = p[1] + [p[3]]
142 p[0] = [p[1]]
144 def p_use_declaration(p): argument
149 if len(p) == 2:
150 p[0] = ast.UseDeclaration(p[1], None, lineno=p.lineno(1))
151 elif len(p) == 3:
152 p[0] = ast.UseDeclaration(p[1] + p[2], None, lineno=p.lineno(1))
153 elif len(p) == 4:
154 p[0] = ast.UseDeclaration(p[1], p[3], lineno=p.lineno(2))
156 p[0] = ast.UseDeclaration(p[1] + p[2], p[4], lineno=p.lineno(1))
158 def p_constant_declarations(p): argument
161 if len(p) == 4:
162 p[0] = p[1] + [p[3]]
164 p[0] = [p[1]]
166 def p_constant_declaration(p): argument
168 p[0] = ast.ConstantDeclaration(p[1], p[3], lineno=p.lineno(1))
170 def p_inner_statement_list(p): argument
173 if len(p) == 3:
174 p[0] = p[1] + [p[2]]
176 p[0] = []
178 def p_inner_statement(p): argument
183 assert len(p) == 2, "__HALT_COMPILER() can only be used from the outermost scope"
184 p[0] = p[1]
186 def p_inner_statement_yield(p): argument
189 if len(p) == 3:
190 p[0] = ast.Yield(None, lineno=p.lineno(1))
192 p[0] = ast.Yield(p[2], lineno=p.lineno(1))
194 def p_statement_block(p): argument
196 p[0] = ast.Block(p[2], lineno=p.lineno(1))
198 def p_statement_if(p): argument
201 if len(p) == 8:
202 p[0] = ast.If(p[3], p[5], p[6], p[7], lineno=p.lineno(1))
204 p[0] = ast.If(p[3], ast.Block(p[6], lineno=p.lineno(5)),
205 p[7], p[8], lineno=p.lineno(1))
207 def p_statement_while(p): argument
209 p[0] = ast.While(p[3], p[5], lineno=p.lineno(1))
211 def p_statement_do_while(p): argument
213 p[0] = ast.DoWhile(p[2], p[5], lineno=p.lineno(1))
215 def p_statement_for(p): argument
217 p[0] = ast.For(p[3], p[5], p[7], p[9], lineno=p.lineno(1))
219 def p_statement_foreach(p): argument
221 if p[6] is None:
222 p[0] = ast.Foreach(p[3], None, p[5], p[8], lineno=p.lineno(1))
224 p[0] = ast.Foreach(p[3], p[5].name, p[6], p[8], lineno=p.lineno(1))
226 def p_statement_switch(p): argument
228 p[0] = ast.Switch(p[3], p[5], lineno=p.lineno(1))
230 def p_statement_break(p): argument
233 if len(p) == 3:
234 p[0] = ast.Break(None, lineno=p.lineno(1))
236 p[0] = ast.Break(p[2], lineno=p.lineno(1))
238 def p_statement_continue(p): argument
241 if len(p) == 3:
242 p[0] = ast.Continue(None, lineno=p.lineno(1))
244 p[0] = ast.Continue(p[2], lineno=p.lineno(1))
246 def p_statement_return(p): argument
249 if len(p) == 3:
250 p[0] = ast.Return(None, lineno=p.lineno(1))
252 p[0] = ast.Return(p[2], lineno=p.lineno(1))
254 def p_statement_global(p): argument
256 p[0] = ast.Global(p[2], lineno=p.lineno(1))
258 def p_statement_static(p): argument
260 p[0] = ast.Static(p[2], lineno=p.lineno(1))
262 def p_statement_echo(p): argument
264 p[0] = ast.Echo(p[2], lineno=p.lineno(1))
266 def p_statement_inline_html(p): argument
268 p[0] = ast.InlineHTML(p[1], lineno=p.lineno(1))
270 def p_statement_expr(p): argument
272 p[0] = p[1]
274 def p_statement_unset(p): argument
276 p[0] = ast.Unset(p[3], lineno=p.lineno(1))
278 def p_statement_empty(p): argument
282 def p_statement_try(p): argument
284 p[0] = ast.Try(p[3], p[5], p[6], lineno=p.lineno(1))
286 def p_additional_catches(p): argument
289 if len(p) == 10:
290 p[0] = p[1] + [ast.Catch(p[4], ast.Variable(p[5], lineno=p.lineno(5)),
291 p[8], lineno=p.lineno(2))]
293 p[0] = []
295 def p_maybe_finally(p): argument
298 if len(p) == 5:
299 p[0] = ast.Finally(p[3], lineno=p.lineno(2))
301 p[0] = None
303 def p_statement_throw(p): argument
305 p[0] = ast.Throw(p[2], lineno=p.lineno(1))
307 def p_statement_declare(p): argument
309 p[0] = ast.Declare(p[3], p[5], lineno=p.lineno(1))
311 def p_declare_list(p): argument
314 if len(p) == 4:
315 p[0] = [ast.Directive(p[1], p[3], lineno=p.lineno(1))]
317 p[0] = p[1] + [ast.Directive(p[3], p[5], lineno=p.lineno(2))]
319 def p_declare_statement(p): argument
322 if len(p) == 2:
323 p[0] = p[1]
325 p[0] = ast.Block(p[2], lineno=p.lineno(1))
327 def p_elseif_list(p): argument
330 if len(p) == 2:
331 p[0] = []
333 p[0] = p[1] + [ast.ElseIf(p[4], p[6], lineno=p.lineno(2))]
335 def p_else_single(p): argument
338 if len(p) == 3:
339 p[0] = ast.Else(p[2], lineno=p.lineno(1))
341 def p_new_elseif_list(p): argument
344 if len(p) == 2:
345 p[0] = []
347 p[0] = p[1] + [ast.ElseIf(p[4], ast.Block(p[7], lineo=p.lineno(6)),
348 lineno=p.lineno(2))]
350 def p_new_else_single(p): argument
353 if len(p) == 4:
354 p[0] = ast.Else(ast.Block(p[3], lineno=p.lineno(2)),
355 lineno=p.lineno(1))
357 def p_while_statement(p): argument
360 if len(p) == 2:
361 p[0] = p[1]
363 p[0] = ast.Block(p[2], lineno=p.lineno(1))
365 def p_for_expr(p): argument
368 p[0] = p[1]
370 def p_non_empty_for_expr(p): argument
373 if len(p) == 4:
374 p[0] = p[1] + [p[3]]
376 p[0] = [p[1]]
378 def p_for_statement(p): argument
381 if len(p) == 2:
382 p[0] = p[1]
384 p[0] = ast.Block(p[2], lineno=p.lineno(1))
386 def p_foreach_variable(p): argument
392 if len(p) == 5:
393 p[0] = ast.ForeachVariable(p[3], False, lineno=p.lineno(1))
394 elif len(p) == 2:
395 p[0] = ast.ForeachVariable(p[1], False, lineno=p.lineno(1))
397 p[0] = ast.ForeachVariable(p[2], True, lineno=p.lineno(1))
399 def p_foreach_optional_arg(p): argument
402 if len(p) == 3:
403 p[0] = p[2]
405 def p_foreach_statement(p): argument
408 if len(p) == 2:
409 p[0] = p[1]
411 p[0] = ast.Block(p[2], lineno=p.lineno(1))
413 def p_switch_case_list(p): argument
416 if len(p) == 4:
417 p[0] = p[2]
419 p[0] = p[3]
421 def p_switch_case_list_colon(p): argument
424 if len(p) == 5:
425 p[0] = p[2]
427 p[0] = p[3]
429 def p_case_list(p): argument
433 if len(p) == 6:
434 p[0] = p[1] + [ast.Case(p[3], p[5], lineno=p.lineno(2))]
435 elif len(p) == 5:
436 p[0] = p[1] + [ast.Default(p[4], lineno=p.lineno(2))]
438 p[0] = []
440 def p_case_separator(p): argument
445 def p_global_var_list(p): argument
448 if len(p) == 4:
449 p[0] = p[1] + [p[3]]
451 p[0] = [p[1]]
453 def p_global_var(p): argument
457 if len(p) == 2:
458 p[0] = ast.Variable(p[1], lineno=p.lineno(1))
459 elif len(p) == 3:
460 p[0] = ast.Variable(p[2], lineno=p.lineno(1))
462 p[0] = ast.Variable(p[3], lineno=p.lineno(1))
464 def p_static_var_list(p): argument
467 if len(p) == 4:
468 p[0] = p[1] + [p[3]]
470 p[0] = [p[1]]
472 def p_static_var(p): argument
475 if len(p) == 4:
476 p[0] = ast.StaticVariable(p[1], p[3], lineno=p.lineno(1))
478 p[0] = ast.StaticVariable(p[1], None, lineno=p.lineno(1))
480 def p_echo_expr_list(p): argument
483 if len(p) == 4:
484 p[0] = p[1] + [p[3]]
486 p[0] = [p[1]]
488 def p_unset_variables(p): argument
491 if len(p) == 4:
492 p[0] = p[1] + [p[3]]
494 p[0] = [p[1]]
496 def p_unset_variable(p): argument
498 p[0] = p[1]
500 def p_function_declaration_statement(p): argument
502 p[0] = ast.Function(p[3], p[5], p[8], p[2], lineno=p.lineno(1))
504 def p_class_declaration_statement(p): argument
508 if len(p) == 8:
511 for s in p[6]:
516 p[0] = ast.Class(p[2], p[1], p[3], p[4], traits, stmts, lineno=p.lineno(2))
517 elif len(p) == 7:
518 p[0] = ast.Interface(p[2], p[3], p[5], lineno=p.lineno(1))
522 for s in p[4]:
527 p[0] = ast.Trait(p[2], traits, stmts, lineno=p.lineno(1))
529 def p_class_entry_type(p): argument
533 if len(p) == 3:
534 p[0] = p[1].lower()
536 def p_extends_from(p): argument
539 if len(p) == 3:
540 p[0] = p[2]
542 def p_fully_qualified_class_name(p): argument
546 if len(p) == 2:
547 p[0] = p[1]
548 elif len(p) == 3:
549 p[0] = p[1] + p[2]
551 p[0] = p[1] + p[2] + p[3]
553 def p_implements_list(p): argument
556 if len(p) == 3:
557 p[0] = p[2]
559 p[0] = []
561 def p_trait_modifiers_list(p): argument
564 if len(p) == 3:
565 p[0] = p[1] + [p[2]]
567 p[0] = []
569 def p_trait_member(p): argument
572 if len(p) == 4:
573 p[0] = ast.StaticProperty(p[1], p[3], lineno=p.lineno(2))
575 p[0] = p[1]
577 def p_trait_modifier(p): argument
579 p[0] = ast.TraitModifier(p[1], p[3], None)
581 def p_trait_modifier_with_visibility(p): argument
584 if len(p) == 6:
585 p[0] = ast.TraitModifier(p[1], p[4], p[3])
587 p[0] = ast.TraitModifier(p[1], None, p[3])
589 def p_trait_statement_list(p): argument
593 if len(p) == 3:
594 p[0] = p[1] + [p[2]]
596 p[0] = []
598 def p_trait_statement(p): argument
603 if len(p) == 9:
604 p[0] = ast.Method(p[4], p[1], p[6], p[8], p[3], lineno=p.lineno(2))
605 elif len(p) == 6:
606 p[0] = ast.TraitUse(p[2], p[4], lineno=p.lineno(1))
608 if p[1] == 'use':
609 p[0] = ast.TraitUse(p[2], [], lineno=p.lineno(1))
611 p[0] = ast.ClassVariables(p[1], p[2], lineno=p.lineno(3))
613 def p_class_statement_list(p): argument
617 if len(p) == 3:
618 p[0] = p[1] + [p[2]]
620 p[0] = []
622 def p_class_statement(p): argument
628 if len(p) == 9:
629 p[0] = ast.Method(p[4], p[1], p[6], p[8], p[3], lineno=p.lineno(2))
630 elif len(p) == 6:
631 p[0] = ast.TraitUse(p[2], p[4], lineno=p.lineno(1))
632 elif len(p) == 4:
633 if p[1] == 'use':
634 p[0] = ast.TraitUse(p[2], [], lineno=p.lineno(1))
636 p[0] = ast.ClassVariables(p[1], p[2], lineno=p.lineno(3))
638 p[0] = ast.ClassConstants(p[1], lineno=p.lineno(2))
640 def p_class_variable_declaration_initial(p): argument
643 if len(p) == 6:
644 p[0] = p[1] + [ast.ClassVariable(p[3], p[5], lineno=p.lineno(2))]
646 p[0] = [ast.ClassVariable(p[1], p[3], lineno=p.lineno(1))]
648 def p_class_variable_declaration_no_initial(p): argument
651 if len(p) == 4:
652 p[0] = p[1] + [ast.ClassVariable(p[3], None, lineno=p.lineno(2))]
654 p[0] = [ast.ClassVariable(p[1], None, lineno=p.lineno(1))]
656 def p_class_constant_declaration(p): argument
659 if len(p) == 6:
660 p[0] = p[1] + [ast.ClassConstant(p[3], p[5], lineno=p.lineno(2))]
662 p[0] = [ast.ClassConstant(p[2], p[4], lineno=p.lineno(1))]
664 def p_interface_list(p): argument
667 if len(p) == 4:
668 p[0] = p[1] + [p[3]]
670 p[0] = [p[1]]
672 def p_interface_extends_list(p): argument
675 if len(p) == 3:
676 p[0] = p[2]
678 def p_variable_modifiers_non_empty(p): argument
680 p[0] = p[1]
682 def p_variable_modifiers_var(p): argument
684 p[0] = []
686 def p_method_modifiers_non_empty(p): argument
688 p[0] = p[1]
690 def p_method_modifiers_empty(p): argument
692 p[0] = []
694 def p_method_body(p): argument
697 if len(p) == 4:
698 p[0] = p[2]
700 p[0] = []
702 def p_non_empty_member_modifiers(p): argument
705 if len(p) == 3:
706 p[0] = p[1] + [p[2]]
708 p[0] = [p[1]]
710 def p_visibility_modifier(p): argument
714 p[0] = p[1].lower()
716 def p_member_modifier(p): argument
721 p[0] = p[1].lower()
723 def p_is_reference(p): argument
726 p[0] = p[1] is not None
728 def p_parameter_list(p): argument
731 if len(p) == 4:
732 p[0] = p[1] + [p[3]]
734 p[0] = [p[1]]
736 def p_parameter_list_empty(p): argument
738 p[0] = []
740 def p_parameter(p): argument
749 if len(p) == 2: # VARIABLE
750 p[0] = ast.FormalParameter(p[1], None, False, None, lineno=p.lineno(1))
751 elif len(p) == 3 and p[1] == '&': # AND VARIABLE
752 p[0] = ast.FormalParameter(p[2], None, True, None, lineno=p.lineno(1))
753 elif len(p) == 3 and p[1] != '&': # STRING VARIABLE
754 p[0] = ast.FormalParameter(p[2], None, False, p[1], lineno=p.lineno(1))
755 elif len(p) == 4 and p[2] != '&': # VARIABLE EQUALS static_scalar
756 p[0] = ast.FormalParameter(p[1], p[3], False, None, lineno=p.lineno(1))
757 elif len(p) == 4 and p[2] == '&': # STRING AND VARIABLE
758 p[0] = ast.FormalParameter(p[3], None, True, p[1], lineno=p.lineno(1))
759 elif len(p) == 5 and p[1] == '&': # AND VARIABLE EQUALS static_scalar
760 p[0] = ast.FormalParameter(p[2], p[4], True, None, lineno=p.lineno(1))
761 elif len(p) == 5 and p[1] != '&': # class_name VARIABLE EQUALS static_scalar
762 p[0] = ast.FormalParameter(p[2], p[4], False, p[1], lineno=p.lineno(1))
764 p[0] = ast.FormalParameter(p[3], p[5], True, p[1], lineno=p.lineno(1))
766 def p_expr_variable(p): argument
768 p[0] = p[1]
770 def p_expr_assign(p): argument
773 if len(p) == 5:
774 p[0] = ast.Assignment(p[1], p[4], True, lineno=p.lineno(2))
776 p[0] = ast.Assignment(p[1], p[3], False, lineno=p.lineno(2))
778 def p_expr_new(p): argument
780 p[0] = ast.New(p[2], p[3], lineno=p.lineno(1))
782 def p_expr_objectop(p): argument
784 name, _dims = p[3]
786 params = p[4]
788 p[0] = ast.MethodCall(p[1], name, params, lineno=p.lineno(3))
790 p[0] = ast.ObjectProperty(p[1], name, lineno=p.lineno(3))
792 def p_class_name_reference(p): argument
795 p[0] = p[1]
797 def p_class_name(p): argument
801 if len(p) == 2:
802 p[0] = p[1]
803 elif len(p) == 3:
804 p[0] = p[1] + p[2]
806 p[0] = p[1] + p[2] + p[3]
808 def p_class_name_static(p): argument
810 p[0] = p[1].lower()
812 def p_dynamic_class_name_reference(p): argument
815 if len(p) == 5:
816 name, dims = p[3]
817 p[0] = ast.ObjectProperty(p[1], name, lineno=p.lineno(2))
819 p[0] = class_(p[0], dim, lineno=lineno)
820 for name, dims in p[4]:
821 p[0] = ast.ObjectProperty(p[0], name, lineno=p.lineno(2))
823 p[0] = class_(p[0], dim, lineno=lineno)
825 p[0] = p[1]
827 def p_dynamic_class_name_variable_properties(p): argument
830 if len(p) == 3:
831 p[0] = p[1] + [p[2]]
833 p[0] = []
835 def p_dynamic_class_name_variable_property(p): argument
837 p[0] = p[2]
839 def p_ctor_arguments(p): argument
842 if len(p) == 4:
843 p[0] = p[2]
845 p[0] = []
847 def p_expr_clone(p): argument
849 p[0] = ast.Clone(p[2], lineno=p.lineno(1))
851 def p_expr_list_assign(p): argument
853 p[0] = ast.ListAssignment(p[3], p[6], lineno=p.lineno(1))
855 def p_assignment_list(p): argument
858 if len(p) == 4:
859 p[0] = p[1] + [p[3]]
861 p[0] = [p[1]]
863 def p_assignment_list_element(p): argument
867 if len(p) == 2:
868 p[0] = p[1]
870 p[0] = p[3]
872 def p_variable(p): argument
875 if len(p) == 6:
876 name, dims = p[3]
877 params = p[4]
879 p[0] = ast.MethodCall(p[1], name, params, lineno=p.lineno(2))
881 p[0] = ast.ObjectProperty(p[1], name, lineno=p.lineno(2))
883 p[0] = class_(p[0], dim, lineno=lineno)
884 for (name, dims), params in p[5]:
886 p[0] = ast.MethodCall(p[0], name, params, lineno=p.lineno(2))
888 p[0] = ast.ObjectProperty(p[0], name, lineno=p.lineno(2))
890 p[0] = class_(p[0], dim, lineno=lineno)
892 p[0] = p[1]
894 def p_base_variable_with_function_calls(p): argument
897 p[0] = p[1]
899 def p_function_call(p): argument
903 if len(p) == 5:
904 p[0] = ast.FunctionCall(p[1], p[3], lineno=p.lineno(2))
905 elif len(p) == 6:
906 p[0] = ast.FunctionCall(p[1] + p[2], p[4], lineno=p.lineno(1))
908 p[0] = ast.FunctionCall(p[1] + p[2] + p[3], p[5], lineno=p.lineno(1))
910 def p_function_call_static(p): argument
915 p[0] = ast.StaticMethodCall(p[1], p[3], p[5], lineno=p.lineno(2))
917 def p_function_call_static_dynamic_name(p): argument
920 p[0] = ast.StaticMethodCall(p[1], p[4], p[7], lineno=p.lineno(2))
922 def p_function_call_variable(p): argument
924 p[0] = ast.FunctionCall(p[1], p[3], lineno=p.lineno(2))
926 def p_function_call_backtick_shell_exec(p): argument
928 p[0] = ast.FunctionCall('shell_exec', [ast.Parameter(p[2], False)], lineno=p.lineno(1))
930 def p_method_or_not(p): argument
933 if len(p) == 4:
934 p[0] = p[2]
936 def p_variable_properties(p): argument
939 if len(p) == 3:
940 p[0] = p[1] + [p[2]]
942 p[0] = []
944 def p_variable_property(p): argument
946 p[0] = (p[2], p[3])
948 def p_base_variable(p): argument
951 p[0] = p[1]
953 def p_simple_indirect_reference(p): argument
956 if len(p) == 3:
957 p[0] = ast.Variable(p[2], lineno=p.lineno(1))
959 p[0] = p[1]
961 def p_static_member(p): argument
966 if len(p) == 4:
967 p[0] = ast.StaticProperty(p[1], p[3], lineno=p.lineno(2))
969 p[0] = ast.StaticProperty(p[1], p[4], lineno=p.lineno(2))
971 def p_variable_class_name(p): argument
973 p[0] = p[1]
975 def p_variable_array_offset(p): argument
977 p[0] = ast.ArrayOffset(p[1], p[3], lineno=p.lineno(2))
979 def p_reference_variable_array_offset(p): argument
981 p[0] = ast.ArrayOffset(p[1], p[3], lineno=p.lineno(2))
983 def p_reference_variable_string_offset(p): argument
985 p[0] = ast.StringOffset(p[1], p[3], lineno=p.lineno(2))
987 def p_reference_variable_compound_variable(p): argument
989 p[0] = p[1]
991 def p_expr_string_offset(p): argument
993 p[0] = ast.StringOffset(p[1], p[3], lineno=p.lineno(2))
995 def p_compound_variable(p): argument
998 if len(p) == 2:
999 p[0] = ast.Variable(p[1], lineno=p.lineno(1))
1001 p[0] = ast.Variable(p[3], lineno=p.lineno(1))
1003 def p_dim_offset(p): argument
1006 p[0] = p[1]
1008 def p_object_property(p): argument
1011 if len(p) == 3:
1012 p[0] = (p[1], p[2])
1014 p[0] = (p[1], [])
1016 def p_object_dim_list_empty(p): argument
1018 p[0] = []
1020 def p_object_dim_list_array_offset(p): argument
1022 p[0] = p[1] + [(ast.ArrayOffset, p[3], p.lineno(2))]
1024 def p_object_dim_list_string_offset(p): argument
1026 p[0] = p[1] + [(ast.StringOffset, p[3], p.lineno(2))]
1028 def p_variable_name(p): argument
1031 if len(p) == 2:
1032 p[0] = p[1]
1034 p[0] = p[2]
1036 def p_variable_without_objects(p): argument
1038 p[0] = p[1]
1040 def p_expr_scalar(p): argument
1042 p[0] = p[1]
1044 def p_expr_array(p): argument
1047 if len(p) == 5:
1048 contents = p[3]
1050 contents = p[2]
1052 p[0] = ast.Array(contents, lineno=p.lineno(1))
1054 def p_array_pair_list(p): argument
1057 if len(p) == 2:
1058 p[0] = []
1060 p[0] = p[1]
1062 def p_non_empty_array_pair_list_item(p): argument
1067 if len(p) == 5:
1068 p[0] = p[1] + [ast.ArrayElement(None, p[4], True, lineno=p.lineno(2))]
1069 elif len(p) == 4:
1070 p[0] = p[1] + [ast.ArrayElement(None, p[3], False, lineno=p.lineno(2))]
1071 elif len(p) == 3:
1072 p[0] = [ast.ArrayElement(None, p[2], True, lineno=p.lineno(1))]
1074 p[0] = [ast.ArrayElement(None, p[1], False, lineno=p.lineno(1))]
1076 def p_non_empty_array_pair_list_pair(p): argument
1081 if len(p) == 7:
1082 p[0] = p[1] + [ast.ArrayElement(p[3], p[6], True, lineno=p.lineno(2))]
1083 elif len(p) == 6:
1084 p[0] = p[1] + [ast.ArrayElement(p[3], p[5], False, lineno=p.lineno(2))]
1085 elif len(p) == 5:
1086 p[0] = [ast.ArrayElement(p[1], p[4], True, lineno=p.lineno(2))]
1088 p[0] = [ast.ArrayElement(p[1], p[3], False, lineno=p.lineno(2))]
1090 def p_possible_comma(p): argument
1095 def p_function_call_parameter_list(p): argument
1098 if len(p) == 4:
1099 p[0] = p[1] + [p[3]]
1101 p[0] = [p[1]]
1103 def p_function_call_parameter_list_empty(p): argument
1105 p[0] = []
1107 def p_function_call_parameter(p): argument
1110 if len(p) == 2:
1111 p[0] = ast.Parameter(p[1], False, lineno=p.lineno(1))
1113 p[0] = ast.Parameter(p[2], True, lineno=p.lineno(1))
1115 def p_expr_function(p): argument
1117 p[0] = ast.Closure(p[4], p[6], p[8], p[2], lineno=p.lineno(1))
1119 def p_lexical_vars(p): argument
1122 if len(p) == 5:
1123 p[0] = p[3]
1125 p[0] = []
1127 def p_lexical_var_list(p): argument
1132 if len(p) == 5:
1133 p[0] = p[1] + [ast.LexicalVariable(p[4], True, lineno=p.lineno(2))]
1134 elif len(p) == 4:
1135 p[0] = p[1] + [ast.LexicalVariable(p[3], False, lineno=p.lineno(2))]
1136 elif len(p) == 3:
1137 p[0] = [ast.LexicalVariable(p[2], True, lineno=p.lineno(1))]
1139 p[0] = [ast.LexicalVariable(p[1], False, lineno=p.lineno(1))]
1141 def p_expr_assign_op(p): argument
1153 p[0] = ast.AssignOp(p[2], p[1], p[3], lineno=p.lineno(2))
1155 def p_expr_binary_op(p): argument
1182 p[0] = ast.BinaryOp(p[2].lower(), p[1], p[3], lineno=p.lineno(2))
1184 def p_expr_unary_op(p): argument
1189 p[0] = ast.UnaryOp(p[1], p[2], lineno=p.lineno(1))
1191 def p_expr_ternary_op(p): argument
1193 p[0] = ast.TernaryOp(p[1], p[3], p[5], lineno=p.lineno(2))
1195 def p_expr_short_ternary_op(p): argument
1197 p[0] = ast.TernaryOp(p[1], p[1], p[4], lineno=p.lineno(2))
1199 def p_expr_pre_incdec(p): argument
1202 p[0] = ast.PreIncDecOp(p[1], p[2], lineno=p.lineno(1))
1204 def p_expr_post_incdec(p): argument
1207 p[0] = ast.PostIncDecOp(p[2], p[1], lineno=p.lineno(2))
1209 def p_expr_cast_int(p): argument
1211 p[0] = ast.Cast('int', p[2], lineno=p.lineno(1))
1213 def p_expr_cast_double(p): argument
1215 p[0] = ast.Cast('double', p[2], lineno=p.lineno(1))
1217 def p_expr_cast_string(p): argument
1219 p[0] = ast.Cast('string', p[2], lineno=p.lineno(1))
1221 def p_expr_cast_array(p): argument
1223 p[0] = ast.Cast('array', p[2], lineno=p.lineno(1))
1225 def p_expr_cast_object(p): argument
1227 p[0] = ast.Cast('object', p[2], lineno=p.lineno(1))
1229 def p_expr_cast_bool(p): argument
1231 p[0] = ast.Cast('bool', p[2], lineno=p.lineno(1))
1233 def p_expr_cast_unset(p): argument
1235 p[0] = ast.Cast('unset', p[2], lineno=p.lineno(1))
1237 def p_expr_cast_binary(p): argument
1239 p[0] = ast.Cast('binary', p[2], lineno=p.lineno(1))
1241 def p_expr_isset(p): argument
1243 p[0] = ast.IsSet(p[3], lineno=p.lineno(1))
1245 def p_isset_variables(p): argument
1248 if len(p) == 4:
1249 p[0] = p[1] + [p[3]]
1251 p[0] = [p[1]]
1253 def p_expr_empty(p): argument
1255 p[0] = ast.Empty(p[3], lineno=p.lineno(1))
1257 def p_expr_eval(p): argument
1259 p[0] = ast.Eval(p[3], lineno=p.lineno(1))
1261 def p_expr_include(p): argument
1263 p[0] = ast.Include(p[2], False, lineno=p.lineno(1))
1265 def p_expr_include_once(p): argument
1267 p[0] = ast.Include(p[2], True, lineno=p.lineno(1))
1269 def p_expr_require(p): argument
1271 p[0] = ast.Require(p[2], False, lineno=p.lineno(1))
1273 def p_expr_require_once(p): argument
1275 p[0] = ast.Require(p[2], True, lineno=p.lineno(1))
1277 def p_exit_or_die(p): argument
1280 p[0] = p[1]
1281 p.set_lineno(0, p.lineno(1))
1283 def p_expr_exit(p): argument
1289 if len(p) == 5:
1290 p[0] = ast.Exit(p[3], p[1], lineno=p.lineno(1))
1292 p[0] = ast.Exit(None, p[1], lineno=p.lineno(1))
1294 def p_expr_print(p): argument
1296 p[0] = ast.Print(p[2], lineno=p.lineno(1))
1298 def p_expr_silence(p): argument
1300 p[0] = ast.Silence(p[2], lineno=p.lineno(1))
1302 def p_expr_group(p): argument
1304 p[0] = p[2]
1306 def p_scalar(p): argument
1314 if len(p) == 4:
1315 p[0] = p[2]
1316 elif len(p) == 5:
1317 if p[1] == 'b':
1318 p[0] = p[3]
1320 p[0] = p[1]
1322 def p_scalar_heredoc(p): argument
1324 if isinstance(p[2], ast.BinaryOp):
1327 assert isinstance(p[2].right, string_type)
1328 p[2].right = p[2].right[:-1]
1329 if p[2].right:
1330 p[0] = p[2]
1332 p[0] = p[2].left
1336 p[0] = p[2][:-1]
1338 def p_nowdoc(p): argument
1342 p[0] = p[2][:-1]
1344 def p_nowdoc_text_content(p): argument
1347 if len(p) == 3:
1348 p[0] = p[1] + p[2]
1350 p[0] = ''
1352 def p_scalar_string_varname(p): argument
1354 p[0] = ast.Variable('$' + p[1], lineno=p.lineno(1))
1356 def p_scalar_namespace_name(p): argument
1360 if len(p) == 2:
1361 p[0] = ast.Constant(p[1], lineno=p.lineno(1))
1362 elif len(p) == 3:
1363 p[0] = ast.Constant(p[1] + p[2], lineno=p.lineno(1))
1365 p[0] = ast.Constant(p[1] + p[2] + p[3], lineno=p.lineno(1))
1367 def p_class_constant(p): argument
1370 p[0] = ast.StaticProperty(p[1], p[3], lineno=p.lineno(2))
1372 def p_common_scalar_lnumber(p): argument
1374 if p[1].startswith('0x'):
1375 p[0] = int(p[1], 16)
1376 elif p[1].startswith('0b'):
1377 p[0] = int(p[1], 2)
1378 elif p[1].startswith('0'):
1379 p[0] = int(p[1], 8)
1381 p[0] = int(p[1])
1383 def p_common_scalar_dnumber(p): argument
1385 p[0] = float(p[1])
1387 def p_common_scalar_string(p): argument
1390 if len(p) == 3:
1391 if p[1] == 'b':
1392 p[0] = p[2][1:-1].replace("\\'", "'").replace('\\\\', '\\')
1394 p[0] = p[1][1:-1].replace("\\'", "'").replace('\\\\', '\\')
1396 def p_common_scalar_magic_line(p): argument
1398 p[0] = ast.MagicConstant(p[1].upper(), p.lineno(1), lineno=p.lineno(1))
1400 def p_common_scalar_magic_file(p): argument
1402 value = getattr(p.lexer, 'filename', None)
1403 p[0] = ast.MagicConstant(p[1].upper(), value, lineno=p.lineno(1))
1405 def p_common_scalar_magic_dir(p): argument
1407 value = getattr(p.lexer, 'filename', None)
1410 p[0] = ast.MagicConstant(p[1].upper(), value, lineno=p.lineno(1))
1412 def p_common_scalar_magic_class(p): argument
1414 p[0] = ast.MagicConstant(p[1].upper(), None, lineno=p.lineno(1))
1416 def p_common_scalar_magic_method(p): argument
1418 p[0] = ast.MagicConstant(p[1].upper(), None, lineno=p.lineno(1))
1420 def p_common_scalar_magic_func(p): argument
1422 p[0] = ast.MagicConstant(p[1].upper(), None, lineno=p.lineno(1))
1424 def p_common_scalar_magic_ns(p): argument
1426 p[0] = ast.MagicConstant(p[1].upper(), None, lineno=p.lineno(1))
1428 def p_static_scalar(p): argument
1436 if len(p) == 2:
1437 p[0] = p[1]
1438 elif len(p) == 3:
1439 p[0] = ''
1441 p[0] = process_php_string_escapes(p[2])
1443 def p_class_name_constant(p): argument
1447 p[0] = p[1]
1449 def p_static_heredoc(p): argument
1453 p[0] = p[2][:-1]
1455 def p_multiple_encapsed(p): argument
1458 if len(p) == 3:
1459 p[0] = p[1] + p[2]
1461 p[0] = ''
1463 def p_static_scalar_namespace_name(p): argument
1467 if len(p) == 2:
1468 p[0] = ast.Constant(p[1], lineno=p.lineno(1))
1469 elif len(p) == 3:
1470 p[0] = ast.Constant(p[1] + p[2], lineno=p.lineno(1))
1472 p[0] = ast.Constant(p[1] + p[2] + p[3], lineno=p.lineno(1))
1474 def p_static_scalar_unary_op(p): argument
1477 p[0] = ast.UnaryOp(p[1], p[2], lineno=p.lineno(1))
1479 def p_static_scalar_array(p): argument
1482 if len(p) == 5:
1483 contents = p[3]
1485 contents = p[2]
1486 p[0] = ast.Array(contents, lineno=p.lineno(1))
1488 def p_static_array_pair_list(p): argument
1491 if len(p) == 2:
1492 p[0] = []
1494 p[0] = p[1]
1496 def p_static_non_empty_array_pair_list_item(p): argument
1499 if len(p) == 4:
1500 p[0] = p[1] + [ast.ArrayElement(None, p[3], False, lineno=p.lineno(2))]
1502 p[0] = [ast.ArrayElement(None, p[1], False, lineno=p.lineno(1))]
1504 def p_static_non_empty_array_pair_list_pair(p): argument
1507 if len(p) == 6:
1508 p[0] = p[1] + [ast.ArrayElement(p[3], p[5], False, lineno=p.lineno(2))]
1510 p[0] = [ast.ArrayElement(p[1], p[3], False, lineno=p.lineno(2))]
1512 def p_static_expr(p): argument
1538 if len(p) == 2:
1540 p[0] = p[1]
1542 p[0] = ast.BinaryOp(p[2].lower(), p[1], p[3], lineno=p.lineno(2))
1544 def p_static_expr_group(p): argument
1546 p[0] = p[2]
1548 def p_namespace_name(p): argument
1552 if len(p) == 4:
1553 p[0] = p[1] + p[2] + p[3]
1555 p[0] = p[1]
1557 def p_encaps_list(p): argument
1560 if len(p) == 3:
1561 if p[1] == '':
1562 p[0] = p[2]
1564 p[0] = ast.BinaryOp('.', p[1], p[2], lineno=p.lineno(2))
1566 p[0] = ''
1568 def p_encaps_list_string(p): argument
1570 p2 = process_php_string_escapes(p[2])
1571 if p[1] == '':
1572 p[0] = process_php_string_escapes(p[2])
1574 if isinstance(p[1], string_type):
1576 p[0] = p[1] + process_php_string_escapes(p[2])
1577 elif isinstance(p[1], ast.BinaryOp) and isinstance(p[1].right, string_type):
1579 p[0] = ast.BinaryOp('.', p[1].left, p[1].right + process_php_string_escapes(p[2]),
1580 lineno=p[1].lineno)
1583 p[0] = ast.BinaryOp('.', p[1], process_php_string_escapes(p[2]),
1584 lineno=p.lineno(2))
1586 def p_encaps_var(p): argument
1588 p[0] = ast.Variable(p[1], lineno=p.lineno(1))
1590 def p_encaps_var_array_offset(p): argument
1592 p[0] = ast.ArrayOffset(ast.Variable(p[1], lineno=p.lineno(1)), p[3],
1593 lineno=p.lineno(2))
1595 def p_encaps_var_object_property(p): argument
1597 p[0] = ast.ObjectProperty(ast.Variable(p[1], lineno=p.lineno(1)), p[3],
1598 lineno=p.lineno(2))
1600 def p_encaps_var_dollar_curly_expr(p): argument
1602 p[0] = p[2]
1604 def p_encaps_var_dollar_curly_array_offset(p): argument
1606 p[0] = ast.ArrayOffset(ast.Variable('$' + p[2], lineno=p.lineno(2)), p[4],
1607 lineno=p.lineno(3))
1609 def p_encaps_var_curly_variable(p): argument
1611 p[0] = p[2]
1613 def p_encaps_var_offset_string(p): argument
1615 p[0] = p[1]
1617 def p_encaps_var_offset_num_string(p): argument
1619 p[0] = int(p[1])
1621 def p_encaps_var_offset_variable(p): argument
1623 p[0] = ast.Variable(p[1], lineno=p.lineno(1))
1625 def p_empty(p): argument