refactoring: update ast structure of "StaticCall" node
This commit is contained in:
		
							parent
							
								
									0f2341bfa9
								
							
						
					
					
						commit
						ad884c99df
					
				
							
								
								
									
										410
									
								
								internal/php5/php5.go
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										410
									
								
								internal/php5/php5.go
									
									
									
										generated
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| @ -3688,7 +3688,7 @@ function_call: | ||||
|             } | ||||
|     |   class_name T_PAAMAYIM_NEKUDOTAYIM variable_name function_call_parameter_list | ||||
|             { | ||||
|                 $$ = &ast.ExprStaticCall{ | ||||
|                 staticCall := &ast.ExprStaticCall{ | ||||
|                     Position: yylex.(*Parser).builder.NewNodesPosition($1, $4), | ||||
|                     Class:               $1, | ||||
|                     DoubleColonTkn:      $2, | ||||
| @ -3698,6 +3698,14 @@ function_call: | ||||
|                     SeparatorTkns:       $4.(*ast.ArgumentList).SeparatorTkns, | ||||
|                     CloseParenthesisTkn: $4.(*ast.ArgumentList).CloseParenthesisTkn, | ||||
|                 } | ||||
| 
 | ||||
|                 if brackets, ok := $3.(*ast.ParserBrackets); ok { | ||||
|                     staticCall.OpenCurlyBracketTkn  = brackets.OpenBracketTkn | ||||
|                     staticCall.Call                 = brackets.Child | ||||
|                     staticCall.CloseCurlyBracketTkn = brackets.CloseBracketTkn | ||||
|                 } | ||||
| 
 | ||||
|                 $$ = staticCall | ||||
|             } | ||||
|     |   class_name T_PAAMAYIM_NEKUDOTAYIM variable_without_objects function_call_parameter_list | ||||
|             { | ||||
| @ -3714,7 +3722,7 @@ function_call: | ||||
|             } | ||||
|     |   variable_class_name T_PAAMAYIM_NEKUDOTAYIM variable_name function_call_parameter_list | ||||
|             { | ||||
|                 $$ = &ast.ExprStaticCall{ | ||||
|                 staticCall := &ast.ExprStaticCall{ | ||||
|                     Position: yylex.(*Parser).builder.NewNodesPosition($1, $4), | ||||
|                     Class:               $1, | ||||
|                     DoubleColonTkn:      $2, | ||||
| @ -3724,6 +3732,14 @@ function_call: | ||||
|                     SeparatorTkns:       $4.(*ast.ArgumentList).SeparatorTkns, | ||||
|                     CloseParenthesisTkn: $4.(*ast.ArgumentList).CloseParenthesisTkn, | ||||
|                 } | ||||
| 
 | ||||
|                 if brackets, ok := $3.(*ast.ParserBrackets); ok { | ||||
|                     staticCall.OpenCurlyBracketTkn  = brackets.OpenBracketTkn | ||||
|                     staticCall.Call                 = brackets.Child | ||||
|                     staticCall.CloseCurlyBracketTkn = brackets.CloseBracketTkn | ||||
|                 } | ||||
| 
 | ||||
|                 $$ = staticCall | ||||
|             } | ||||
|     |   variable_class_name T_PAAMAYIM_NEKUDOTAYIM variable_without_objects function_call_parameter_list | ||||
|             { | ||||
|  | ||||
							
								
								
									
										240
									
								
								internal/php7/php7.go
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										240
									
								
								internal/php7/php7.go
									
									
									
										generated
									
									
									
								
							| @ -339,7 +339,7 @@ const yyEofCode = 1 | ||||
| const yyErrCode = 2 | ||||
| const yyInitialStackSize = 16 | ||||
| 
 | ||||
| // line internal/php7/php7.y:4374 | ||||
| // line internal/php7/php7.y:4390 | ||||
| 
 | ||||
| // line yacctab:1 | ||||
| var yyExca = [...]int{ | ||||
| @ -5913,7 +5913,7 @@ yydefault: | ||||
| 		yyDollar = yyS[yypt-4 : yypt+1] | ||||
| 		// line internal/php7/php7.y:3323 | ||||
| 		{ | ||||
| 			yyVAL.node = &ast.ExprStaticCall{ | ||||
| 			staticCall := &ast.ExprStaticCall{ | ||||
| 				Position:            yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[4].node), | ||||
| 				Class:               yyDollar[1].node, | ||||
| 				DoubleColonTkn:      yyDollar[2].token, | ||||
| @ -5923,12 +5923,20 @@ yydefault: | ||||
| 				SeparatorTkns:       yyDollar[4].node.(*ast.ArgumentList).SeparatorTkns, | ||||
| 				CloseParenthesisTkn: yyDollar[4].node.(*ast.ArgumentList).CloseParenthesisTkn, | ||||
| 			} | ||||
| 
 | ||||
| 			if brackets, ok := yyDollar[3].node.(*ast.ParserBrackets); ok { | ||||
| 				staticCall.OpenCurlyBracketTkn = brackets.OpenBracketTkn | ||||
| 				staticCall.Call = brackets.Child | ||||
| 				staticCall.CloseCurlyBracketTkn = brackets.CloseBracketTkn | ||||
| 			} | ||||
| 
 | ||||
| 			yyVAL.node = staticCall | ||||
| 		} | ||||
| 	case 386: | ||||
| 		yyDollar = yyS[yypt-4 : yypt+1] | ||||
| 		// line internal/php7/php7.y:3336 | ||||
| 		// line internal/php7/php7.y:3344 | ||||
| 		{ | ||||
| 			yyVAL.node = &ast.ExprStaticCall{ | ||||
| 			staticCall := &ast.ExprStaticCall{ | ||||
| 				Position:            yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[4].node), | ||||
| 				Class:               yyDollar[1].node, | ||||
| 				DoubleColonTkn:      yyDollar[2].token, | ||||
| @ -5938,10 +5946,18 @@ yydefault: | ||||
| 				SeparatorTkns:       yyDollar[4].node.(*ast.ArgumentList).SeparatorTkns, | ||||
| 				CloseParenthesisTkn: yyDollar[4].node.(*ast.ArgumentList).CloseParenthesisTkn, | ||||
| 			} | ||||
| 
 | ||||
| 			if brackets, ok := yyDollar[3].node.(*ast.ParserBrackets); ok { | ||||
| 				staticCall.OpenCurlyBracketTkn = brackets.OpenBracketTkn | ||||
| 				staticCall.Call = brackets.Child | ||||
| 				staticCall.CloseCurlyBracketTkn = brackets.CloseBracketTkn | ||||
| 			} | ||||
| 
 | ||||
| 			yyVAL.node = staticCall | ||||
| 		} | ||||
| 	case 387: | ||||
| 		yyDollar = yyS[yypt-2 : yypt+1] | ||||
| 		// line internal/php7/php7.y:3349 | ||||
| 		// line internal/php7/php7.y:3365 | ||||
| 		{ | ||||
| 			yyVAL.node = &ast.ExprFunctionCall{ | ||||
| 				Position:            yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[2].node), | ||||
| @ -5954,7 +5970,7 @@ yydefault: | ||||
| 		} | ||||
| 	case 388: | ||||
| 		yyDollar = yyS[yypt-1 : yypt+1] | ||||
| 		// line internal/php7/php7.y:3363 | ||||
| 		// line internal/php7/php7.y:3379 | ||||
| 		{ | ||||
| 			yyVAL.node = &ast.Identifier{ | ||||
| 				Position:      yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token), | ||||
| @ -5964,31 +5980,31 @@ yydefault: | ||||
| 		} | ||||
| 	case 389: | ||||
| 		yyDollar = yyS[yypt-1 : yypt+1] | ||||
| 		// line internal/php7/php7.y:3371 | ||||
| 		// line internal/php7/php7.y:3387 | ||||
| 		{ | ||||
| 			yyVAL.node = yyDollar[1].node | ||||
| 		} | ||||
| 	case 390: | ||||
| 		yyDollar = yyS[yypt-1 : yypt+1] | ||||
| 		// line internal/php7/php7.y:3378 | ||||
| 		// line internal/php7/php7.y:3394 | ||||
| 		{ | ||||
| 			yyVAL.node = yyDollar[1].node | ||||
| 		} | ||||
| 	case 391: | ||||
| 		yyDollar = yyS[yypt-1 : yypt+1] | ||||
| 		// line internal/php7/php7.y:3382 | ||||
| 		// line internal/php7/php7.y:3398 | ||||
| 		{ | ||||
| 			yyVAL.node = yyDollar[1].node | ||||
| 		} | ||||
| 	case 392: | ||||
| 		yyDollar = yyS[yypt-0 : yypt+1] | ||||
| 		// line internal/php7/php7.y:3389 | ||||
| 		// line internal/php7/php7.y:3405 | ||||
| 		{ | ||||
| 			yyVAL.node = nil | ||||
| 		} | ||||
| 	case 393: | ||||
| 		yyDollar = yyS[yypt-3 : yypt+1] | ||||
| 		// line internal/php7/php7.y:3393 | ||||
| 		// line internal/php7/php7.y:3409 | ||||
| 		{ | ||||
| 			yyVAL.node = &ast.ParserBrackets{ | ||||
| 				Position:        yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token), | ||||
| @ -5999,13 +6015,13 @@ yydefault: | ||||
| 		} | ||||
| 	case 394: | ||||
| 		yyDollar = yyS[yypt-0 : yypt+1] | ||||
| 		// line internal/php7/php7.y:3405 | ||||
| 		// line internal/php7/php7.y:3421 | ||||
| 		{ | ||||
| 			yyVAL.list = []ast.Vertex{} | ||||
| 		} | ||||
| 	case 395: | ||||
| 		yyDollar = yyS[yypt-1 : yypt+1] | ||||
| 		// line internal/php7/php7.y:3409 | ||||
| 		// line internal/php7/php7.y:3425 | ||||
| 		{ | ||||
| 			yyVAL.list = []ast.Vertex{ | ||||
| 				&ast.ScalarEncapsedStringPart{ | ||||
| @ -6017,25 +6033,25 @@ yydefault: | ||||
| 		} | ||||
| 	case 396: | ||||
| 		yyDollar = yyS[yypt-1 : yypt+1] | ||||
| 		// line internal/php7/php7.y:3419 | ||||
| 		// line internal/php7/php7.y:3435 | ||||
| 		{ | ||||
| 			yyVAL.list = yyDollar[1].list | ||||
| 		} | ||||
| 	case 397: | ||||
| 		yyDollar = yyS[yypt-0 : yypt+1] | ||||
| 		// line internal/php7/php7.y:3426 | ||||
| 		// line internal/php7/php7.y:3442 | ||||
| 		{ | ||||
| 			yyVAL.node = &ast.ArgumentList{} | ||||
| 		} | ||||
| 	case 398: | ||||
| 		yyDollar = yyS[yypt-1 : yypt+1] | ||||
| 		// line internal/php7/php7.y:3430 | ||||
| 		// line internal/php7/php7.y:3446 | ||||
| 		{ | ||||
| 			yyVAL.node = yyDollar[1].node | ||||
| 		} | ||||
| 	case 399: | ||||
| 		yyDollar = yyS[yypt-4 : yypt+1] | ||||
| 		// line internal/php7/php7.y:3437 | ||||
| 		// line internal/php7/php7.y:3453 | ||||
| 		{ | ||||
| 			yyVAL.node = &ast.ExprArray{ | ||||
| 				Position:        yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token), | ||||
| @ -6048,7 +6064,7 @@ yydefault: | ||||
| 		} | ||||
| 	case 400: | ||||
| 		yyDollar = yyS[yypt-3 : yypt+1] | ||||
| 		// line internal/php7/php7.y:3448 | ||||
| 		// line internal/php7/php7.y:3464 | ||||
| 		{ | ||||
| 			yyVAL.node = &ast.ExprArray{ | ||||
| 				Position:        yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token), | ||||
| @ -6060,7 +6076,7 @@ yydefault: | ||||
| 		} | ||||
| 	case 401: | ||||
| 		yyDollar = yyS[yypt-1 : yypt+1] | ||||
| 		// line internal/php7/php7.y:3458 | ||||
| 		// line internal/php7/php7.y:3474 | ||||
| 		{ | ||||
| 			yyVAL.node = &ast.ScalarString{ | ||||
| 				Position:  yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token), | ||||
| @ -6070,7 +6086,7 @@ yydefault: | ||||
| 		} | ||||
| 	case 402: | ||||
| 		yyDollar = yyS[yypt-1 : yypt+1] | ||||
| 		// line internal/php7/php7.y:3469 | ||||
| 		// line internal/php7/php7.y:3485 | ||||
| 		{ | ||||
| 			yyVAL.node = &ast.ScalarLnumber{ | ||||
| 				Position:  yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token), | ||||
| @ -6080,7 +6096,7 @@ yydefault: | ||||
| 		} | ||||
| 	case 403: | ||||
| 		yyDollar = yyS[yypt-1 : yypt+1] | ||||
| 		// line internal/php7/php7.y:3477 | ||||
| 		// line internal/php7/php7.y:3493 | ||||
| 		{ | ||||
| 			yyVAL.node = &ast.ScalarDnumber{ | ||||
| 				Position:  yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token), | ||||
| @ -6090,7 +6106,7 @@ yydefault: | ||||
| 		} | ||||
| 	case 404: | ||||
| 		yyDollar = yyS[yypt-1 : yypt+1] | ||||
| 		// line internal/php7/php7.y:3485 | ||||
| 		// line internal/php7/php7.y:3501 | ||||
| 		{ | ||||
| 			yyVAL.node = &ast.ScalarMagicConstant{ | ||||
| 				Position:      yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token), | ||||
| @ -6100,7 +6116,7 @@ yydefault: | ||||
| 		} | ||||
| 	case 405: | ||||
| 		yyDollar = yyS[yypt-1 : yypt+1] | ||||
| 		// line internal/php7/php7.y:3493 | ||||
| 		// line internal/php7/php7.y:3509 | ||||
| 		{ | ||||
| 			yyVAL.node = &ast.ScalarMagicConstant{ | ||||
| 				Position:      yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token), | ||||
| @ -6110,7 +6126,7 @@ yydefault: | ||||
| 		} | ||||
| 	case 406: | ||||
| 		yyDollar = yyS[yypt-1 : yypt+1] | ||||
| 		// line internal/php7/php7.y:3501 | ||||
| 		// line internal/php7/php7.y:3517 | ||||
| 		{ | ||||
| 			yyVAL.node = &ast.ScalarMagicConstant{ | ||||
| 				Position:      yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token), | ||||
| @ -6120,7 +6136,7 @@ yydefault: | ||||
| 		} | ||||
| 	case 407: | ||||
| 		yyDollar = yyS[yypt-1 : yypt+1] | ||||
| 		// line internal/php7/php7.y:3509 | ||||
| 		// line internal/php7/php7.y:3525 | ||||
| 		{ | ||||
| 			yyVAL.node = &ast.ScalarMagicConstant{ | ||||
| 				Position:      yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token), | ||||
| @ -6130,7 +6146,7 @@ yydefault: | ||||
| 		} | ||||
| 	case 408: | ||||
| 		yyDollar = yyS[yypt-1 : yypt+1] | ||||
| 		// line internal/php7/php7.y:3517 | ||||
| 		// line internal/php7/php7.y:3533 | ||||
| 		{ | ||||
| 			yyVAL.node = &ast.ScalarMagicConstant{ | ||||
| 				Position:      yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token), | ||||
| @ -6140,7 +6156,7 @@ yydefault: | ||||
| 		} | ||||
| 	case 409: | ||||
| 		yyDollar = yyS[yypt-1 : yypt+1] | ||||
| 		// line internal/php7/php7.y:3525 | ||||
| 		// line internal/php7/php7.y:3541 | ||||
| 		{ | ||||
| 			yyVAL.node = &ast.ScalarMagicConstant{ | ||||
| 				Position:      yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token), | ||||
| @ -6150,7 +6166,7 @@ yydefault: | ||||
| 		} | ||||
| 	case 410: | ||||
| 		yyDollar = yyS[yypt-1 : yypt+1] | ||||
| 		// line internal/php7/php7.y:3533 | ||||
| 		// line internal/php7/php7.y:3549 | ||||
| 		{ | ||||
| 			yyVAL.node = &ast.ScalarMagicConstant{ | ||||
| 				Position:      yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token), | ||||
| @ -6160,7 +6176,7 @@ yydefault: | ||||
| 		} | ||||
| 	case 411: | ||||
| 		yyDollar = yyS[yypt-1 : yypt+1] | ||||
| 		// line internal/php7/php7.y:3541 | ||||
| 		// line internal/php7/php7.y:3557 | ||||
| 		{ | ||||
| 			yyVAL.node = &ast.ScalarMagicConstant{ | ||||
| 				Position:      yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token), | ||||
| @ -6170,7 +6186,7 @@ yydefault: | ||||
| 		} | ||||
| 	case 412: | ||||
| 		yyDollar = yyS[yypt-3 : yypt+1] | ||||
| 		// line internal/php7/php7.y:3549 | ||||
| 		// line internal/php7/php7.y:3565 | ||||
| 		{ | ||||
| 			yyVAL.node = &ast.ScalarHeredoc{ | ||||
| 				Position:       yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token), | ||||
| @ -6187,7 +6203,7 @@ yydefault: | ||||
| 		} | ||||
| 	case 413: | ||||
| 		yyDollar = yyS[yypt-2 : yypt+1] | ||||
| 		// line internal/php7/php7.y:3564 | ||||
| 		// line internal/php7/php7.y:3580 | ||||
| 		{ | ||||
| 			yyVAL.node = &ast.ScalarHeredoc{ | ||||
| 				Position:        yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[2].token), | ||||
| @ -6197,7 +6213,7 @@ yydefault: | ||||
| 		} | ||||
| 	case 414: | ||||
| 		yyDollar = yyS[yypt-3 : yypt+1] | ||||
| 		// line internal/php7/php7.y:3572 | ||||
| 		// line internal/php7/php7.y:3588 | ||||
| 		{ | ||||
| 			yyVAL.node = &ast.ScalarEncapsed{ | ||||
| 				Position:      yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token), | ||||
| @ -6208,7 +6224,7 @@ yydefault: | ||||
| 		} | ||||
| 	case 415: | ||||
| 		yyDollar = yyS[yypt-3 : yypt+1] | ||||
| 		// line internal/php7/php7.y:3581 | ||||
| 		// line internal/php7/php7.y:3597 | ||||
| 		{ | ||||
| 			yyVAL.node = &ast.ScalarHeredoc{ | ||||
| 				Position:        yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token), | ||||
| @ -6219,19 +6235,19 @@ yydefault: | ||||
| 		} | ||||
| 	case 416: | ||||
| 		yyDollar = yyS[yypt-1 : yypt+1] | ||||
| 		// line internal/php7/php7.y:3590 | ||||
| 		// line internal/php7/php7.y:3606 | ||||
| 		{ | ||||
| 			yyVAL.node = yyDollar[1].node | ||||
| 		} | ||||
| 	case 417: | ||||
| 		yyDollar = yyS[yypt-1 : yypt+1] | ||||
| 		// line internal/php7/php7.y:3594 | ||||
| 		// line internal/php7/php7.y:3610 | ||||
| 		{ | ||||
| 			yyVAL.node = yyDollar[1].node | ||||
| 		} | ||||
| 	case 418: | ||||
| 		yyDollar = yyS[yypt-1 : yypt+1] | ||||
| 		// line internal/php7/php7.y:3601 | ||||
| 		// line internal/php7/php7.y:3617 | ||||
| 		{ | ||||
| 			yyVAL.node = &ast.ExprConstFetch{ | ||||
| 				Position: yylex.(*Parser).builder.NewNodePosition(yyDollar[1].node), | ||||
| @ -6240,7 +6256,7 @@ yydefault: | ||||
| 		} | ||||
| 	case 419: | ||||
| 		yyDollar = yyS[yypt-3 : yypt+1] | ||||
| 		// line internal/php7/php7.y:3608 | ||||
| 		// line internal/php7/php7.y:3624 | ||||
| 		{ | ||||
| 			yyVAL.node = &ast.ExprClassConstFetch{ | ||||
| 				Position:       yylex.(*Parser).builder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[3].token), | ||||
| @ -6255,7 +6271,7 @@ yydefault: | ||||
| 		} | ||||
| 	case 420: | ||||
| 		yyDollar = yyS[yypt-3 : yypt+1] | ||||
| 		// line internal/php7/php7.y:3621 | ||||
| 		// line internal/php7/php7.y:3637 | ||||
| 		{ | ||||
| 			yyVAL.node = &ast.ExprClassConstFetch{ | ||||
| 				Position:       yylex.(*Parser).builder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[3].token), | ||||
| @ -6270,43 +6286,43 @@ yydefault: | ||||
| 		} | ||||
| 	case 421: | ||||
| 		yyDollar = yyS[yypt-1 : yypt+1] | ||||
| 		// line internal/php7/php7.y:3637 | ||||
| 		// line internal/php7/php7.y:3653 | ||||
| 		{ | ||||
| 			yyVAL.node = yyDollar[1].node | ||||
| 		} | ||||
| 	case 422: | ||||
| 		yyDollar = yyS[yypt-1 : yypt+1] | ||||
| 		// line internal/php7/php7.y:3641 | ||||
| 		// line internal/php7/php7.y:3657 | ||||
| 		{ | ||||
| 			yyVAL.node = yyDollar[1].node | ||||
| 		} | ||||
| 	case 423: | ||||
| 		yyDollar = yyS[yypt-0 : yypt+1] | ||||
| 		// line internal/php7/php7.y:3648 | ||||
| 		// line internal/php7/php7.y:3664 | ||||
| 		{ | ||||
| 			yyVAL.node = nil | ||||
| 		} | ||||
| 	case 424: | ||||
| 		yyDollar = yyS[yypt-1 : yypt+1] | ||||
| 		// line internal/php7/php7.y:3652 | ||||
| 		// line internal/php7/php7.y:3668 | ||||
| 		{ | ||||
| 			yyVAL.node = yyDollar[1].node | ||||
| 		} | ||||
| 	case 425: | ||||
| 		yyDollar = yyS[yypt-1 : yypt+1] | ||||
| 		// line internal/php7/php7.y:3659 | ||||
| 		// line internal/php7/php7.y:3675 | ||||
| 		{ | ||||
| 			yyVAL.node = yyDollar[1].node | ||||
| 		} | ||||
| 	case 426: | ||||
| 		yyDollar = yyS[yypt-1 : yypt+1] | ||||
| 		// line internal/php7/php7.y:3666 | ||||
| 		// line internal/php7/php7.y:3682 | ||||
| 		{ | ||||
| 			yyVAL.node = yyDollar[1].node | ||||
| 		} | ||||
| 	case 427: | ||||
| 		yyDollar = yyS[yypt-3 : yypt+1] | ||||
| 		// line internal/php7/php7.y:3670 | ||||
| 		// line internal/php7/php7.y:3686 | ||||
| 		{ | ||||
| 			yyVAL.node = &ast.ParserBrackets{ | ||||
| 				Position:        yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token), | ||||
| @ -6317,19 +6333,19 @@ yydefault: | ||||
| 		} | ||||
| 	case 428: | ||||
| 		yyDollar = yyS[yypt-1 : yypt+1] | ||||
| 		// line internal/php7/php7.y:3679 | ||||
| 		// line internal/php7/php7.y:3695 | ||||
| 		{ | ||||
| 			yyVAL.node = yyDollar[1].node | ||||
| 		} | ||||
| 	case 429: | ||||
| 		yyDollar = yyS[yypt-1 : yypt+1] | ||||
| 		// line internal/php7/php7.y:3686 | ||||
| 		// line internal/php7/php7.y:3702 | ||||
| 		{ | ||||
| 			yyVAL.node = yyDollar[1].node | ||||
| 		} | ||||
| 	case 430: | ||||
| 		yyDollar = yyS[yypt-3 : yypt+1] | ||||
| 		// line internal/php7/php7.y:3690 | ||||
| 		// line internal/php7/php7.y:3706 | ||||
| 		{ | ||||
| 			yyVAL.node = &ast.ParserBrackets{ | ||||
| 				Position:        yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token), | ||||
| @ -6340,19 +6356,19 @@ yydefault: | ||||
| 		} | ||||
| 	case 431: | ||||
| 		yyDollar = yyS[yypt-1 : yypt+1] | ||||
| 		// line internal/php7/php7.y:3699 | ||||
| 		// line internal/php7/php7.y:3715 | ||||
| 		{ | ||||
| 			yyVAL.node = yyDollar[1].node | ||||
| 		} | ||||
| 	case 432: | ||||
| 		yyDollar = yyS[yypt-1 : yypt+1] | ||||
| 		// line internal/php7/php7.y:3706 | ||||
| 		// line internal/php7/php7.y:3722 | ||||
| 		{ | ||||
| 			yyVAL.node = yyDollar[1].node | ||||
| 		} | ||||
| 	case 433: | ||||
| 		yyDollar = yyS[yypt-4 : yypt+1] | ||||
| 		// line internal/php7/php7.y:3710 | ||||
| 		// line internal/php7/php7.y:3726 | ||||
| 		{ | ||||
| 			yyVAL.node = &ast.ExprArrayDimFetch{ | ||||
| 				Position:        yylex.(*Parser).builder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].token), | ||||
| @ -6364,7 +6380,7 @@ yydefault: | ||||
| 		} | ||||
| 	case 434: | ||||
| 		yyDollar = yyS[yypt-4 : yypt+1] | ||||
| 		// line internal/php7/php7.y:3720 | ||||
| 		// line internal/php7/php7.y:3736 | ||||
| 		{ | ||||
| 			yyVAL.node = &ast.ExprArrayDimFetch{ | ||||
| 				Position:        yylex.(*Parser).builder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].token), | ||||
| @ -6376,7 +6392,7 @@ yydefault: | ||||
| 		} | ||||
| 	case 435: | ||||
| 		yyDollar = yyS[yypt-4 : yypt+1] | ||||
| 		// line internal/php7/php7.y:3730 | ||||
| 		// line internal/php7/php7.y:3746 | ||||
| 		{ | ||||
| 			yyVAL.node = &ast.ExprArrayDimFetch{ | ||||
| 				Position:        yylex.(*Parser).builder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].token), | ||||
| @ -6388,7 +6404,7 @@ yydefault: | ||||
| 		} | ||||
| 	case 436: | ||||
| 		yyDollar = yyS[yypt-4 : yypt+1] | ||||
| 		// line internal/php7/php7.y:3740 | ||||
| 		// line internal/php7/php7.y:3756 | ||||
| 		{ | ||||
| 			methodCall := &ast.ExprMethodCall{ | ||||
| 				Position:            yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[4].node), | ||||
| @ -6411,25 +6427,25 @@ yydefault: | ||||
| 		} | ||||
| 	case 437: | ||||
| 		yyDollar = yyS[yypt-1 : yypt+1] | ||||
| 		// line internal/php7/php7.y:3761 | ||||
| 		// line internal/php7/php7.y:3777 | ||||
| 		{ | ||||
| 			yyVAL.node = yyDollar[1].node | ||||
| 		} | ||||
| 	case 438: | ||||
| 		yyDollar = yyS[yypt-1 : yypt+1] | ||||
| 		// line internal/php7/php7.y:3768 | ||||
| 		// line internal/php7/php7.y:3784 | ||||
| 		{ | ||||
| 			yyVAL.node = yyDollar[1].node | ||||
| 		} | ||||
| 	case 439: | ||||
| 		yyDollar = yyS[yypt-1 : yypt+1] | ||||
| 		// line internal/php7/php7.y:3772 | ||||
| 		// line internal/php7/php7.y:3788 | ||||
| 		{ | ||||
| 			yyVAL.node = yyDollar[1].node | ||||
| 		} | ||||
| 	case 440: | ||||
| 		yyDollar = yyS[yypt-3 : yypt+1] | ||||
| 		// line internal/php7/php7.y:3776 | ||||
| 		// line internal/php7/php7.y:3792 | ||||
| 		{ | ||||
| 			propertyFetch := &ast.ExprPropertyFetch{ | ||||
| 				Position:          yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node), | ||||
| @ -6448,7 +6464,7 @@ yydefault: | ||||
| 		} | ||||
| 	case 441: | ||||
| 		yyDollar = yyS[yypt-1 : yypt+1] | ||||
| 		// line internal/php7/php7.y:3796 | ||||
| 		// line internal/php7/php7.y:3812 | ||||
| 		{ | ||||
| 			yyVAL.node = &ast.ExprVariable{ | ||||
| 				Position: yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token), | ||||
| @ -6461,7 +6477,7 @@ yydefault: | ||||
| 		} | ||||
| 	case 442: | ||||
| 		yyDollar = yyS[yypt-4 : yypt+1] | ||||
| 		// line internal/php7/php7.y:3807 | ||||
| 		// line internal/php7/php7.y:3823 | ||||
| 		{ | ||||
| 			yyVAL.node = &ast.ExprVariable{ | ||||
| 				Position:             yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token), | ||||
| @ -6473,7 +6489,7 @@ yydefault: | ||||
| 		} | ||||
| 	case 443: | ||||
| 		yyDollar = yyS[yypt-2 : yypt+1] | ||||
| 		// line internal/php7/php7.y:3817 | ||||
| 		// line internal/php7/php7.y:3833 | ||||
| 		{ | ||||
| 			yyVAL.node = &ast.ExprVariable{ | ||||
| 				Position:  yylex.(*Parser).builder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node), | ||||
| @ -6483,7 +6499,7 @@ yydefault: | ||||
| 		} | ||||
| 	case 444: | ||||
| 		yyDollar = yyS[yypt-3 : yypt+1] | ||||
| 		// line internal/php7/php7.y:3828 | ||||
| 		// line internal/php7/php7.y:3844 | ||||
| 		{ | ||||
| 			yyVAL.node = &ast.ExprStaticPropertyFetch{ | ||||
| 				Position:       yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node), | ||||
| @ -6494,7 +6510,7 @@ yydefault: | ||||
| 		} | ||||
| 	case 445: | ||||
| 		yyDollar = yyS[yypt-3 : yypt+1] | ||||
| 		// line internal/php7/php7.y:3837 | ||||
| 		// line internal/php7/php7.y:3853 | ||||
| 		{ | ||||
| 			yyVAL.node = &ast.ExprStaticPropertyFetch{ | ||||
| 				Position:       yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node), | ||||
| @ -6505,13 +6521,13 @@ yydefault: | ||||
| 		} | ||||
| 	case 446: | ||||
| 		yyDollar = yyS[yypt-1 : yypt+1] | ||||
| 		// line internal/php7/php7.y:3849 | ||||
| 		// line internal/php7/php7.y:3865 | ||||
| 		{ | ||||
| 			yyVAL.node = yyDollar[1].node | ||||
| 		} | ||||
| 	case 447: | ||||
| 		yyDollar = yyS[yypt-4 : yypt+1] | ||||
| 		// line internal/php7/php7.y:3853 | ||||
| 		// line internal/php7/php7.y:3869 | ||||
| 		{ | ||||
| 			yyVAL.node = &ast.ExprArrayDimFetch{ | ||||
| 				Position:        yylex.(*Parser).builder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].token), | ||||
| @ -6523,7 +6539,7 @@ yydefault: | ||||
| 		} | ||||
| 	case 448: | ||||
| 		yyDollar = yyS[yypt-4 : yypt+1] | ||||
| 		// line internal/php7/php7.y:3863 | ||||
| 		// line internal/php7/php7.y:3879 | ||||
| 		{ | ||||
| 			yyVAL.node = &ast.ExprArrayDimFetch{ | ||||
| 				Position:        yylex.(*Parser).builder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[4].token), | ||||
| @ -6535,7 +6551,7 @@ yydefault: | ||||
| 		} | ||||
| 	case 449: | ||||
| 		yyDollar = yyS[yypt-3 : yypt+1] | ||||
| 		// line internal/php7/php7.y:3873 | ||||
| 		// line internal/php7/php7.y:3889 | ||||
| 		{ | ||||
| 			propertyFetch := &ast.ExprPropertyFetch{ | ||||
| 				Position:          yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node), | ||||
| @ -6554,7 +6570,7 @@ yydefault: | ||||
| 		} | ||||
| 	case 450: | ||||
| 		yyDollar = yyS[yypt-3 : yypt+1] | ||||
| 		// line internal/php7/php7.y:3890 | ||||
| 		// line internal/php7/php7.y:3906 | ||||
| 		{ | ||||
| 			yyVAL.node = &ast.ExprStaticPropertyFetch{ | ||||
| 				Position:       yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node), | ||||
| @ -6565,7 +6581,7 @@ yydefault: | ||||
| 		} | ||||
| 	case 451: | ||||
| 		yyDollar = yyS[yypt-3 : yypt+1] | ||||
| 		// line internal/php7/php7.y:3899 | ||||
| 		// line internal/php7/php7.y:3915 | ||||
| 		{ | ||||
| 			yyVAL.node = &ast.ExprStaticPropertyFetch{ | ||||
| 				Position:       yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node), | ||||
| @ -6576,7 +6592,7 @@ yydefault: | ||||
| 		} | ||||
| 	case 452: | ||||
| 		yyDollar = yyS[yypt-1 : yypt+1] | ||||
| 		// line internal/php7/php7.y:3911 | ||||
| 		// line internal/php7/php7.y:3927 | ||||
| 		{ | ||||
| 			yyVAL.node = &ast.Identifier{ | ||||
| 				Position:      yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token), | ||||
| @ -6586,7 +6602,7 @@ yydefault: | ||||
| 		} | ||||
| 	case 453: | ||||
| 		yyDollar = yyS[yypt-3 : yypt+1] | ||||
| 		// line internal/php7/php7.y:3919 | ||||
| 		// line internal/php7/php7.y:3935 | ||||
| 		{ | ||||
| 			yyVAL.node = &ast.ParserBrackets{ | ||||
| 				Position:        yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token), | ||||
| @ -6597,13 +6613,13 @@ yydefault: | ||||
| 		} | ||||
| 	case 454: | ||||
| 		yyDollar = yyS[yypt-1 : yypt+1] | ||||
| 		// line internal/php7/php7.y:3928 | ||||
| 		// line internal/php7/php7.y:3944 | ||||
| 		{ | ||||
| 			yyVAL.node = yyDollar[1].node | ||||
| 		} | ||||
| 	case 455: | ||||
| 		yyDollar = yyS[yypt-1 : yypt+1] | ||||
| 		// line internal/php7/php7.y:3935 | ||||
| 		// line internal/php7/php7.y:3951 | ||||
| 		{ | ||||
| 			yyVAL.node = &ast.Identifier{ | ||||
| 				Position:      yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token), | ||||
| @ -6613,7 +6629,7 @@ yydefault: | ||||
| 		} | ||||
| 	case 456: | ||||
| 		yyDollar = yyS[yypt-3 : yypt+1] | ||||
| 		// line internal/php7/php7.y:3943 | ||||
| 		// line internal/php7/php7.y:3959 | ||||
| 		{ | ||||
| 			yyVAL.node = &ast.ParserBrackets{ | ||||
| 				Position:        yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token), | ||||
| @ -6624,13 +6640,13 @@ yydefault: | ||||
| 		} | ||||
| 	case 457: | ||||
| 		yyDollar = yyS[yypt-1 : yypt+1] | ||||
| 		// line internal/php7/php7.y:3952 | ||||
| 		// line internal/php7/php7.y:3968 | ||||
| 		{ | ||||
| 			yyVAL.node = yyDollar[1].node | ||||
| 		} | ||||
| 	case 458: | ||||
| 		yyDollar = yyS[yypt-1 : yypt+1] | ||||
| 		// line internal/php7/php7.y:3959 | ||||
| 		// line internal/php7/php7.y:3975 | ||||
| 		{ | ||||
| 			pairList := yyDollar[1].node.(*ast.ParserSeparatedList) | ||||
| 			fistPair := pairList.Items[0].(*ast.ExprArrayItem) | ||||
| @ -6643,19 +6659,19 @@ yydefault: | ||||
| 		} | ||||
| 	case 459: | ||||
| 		yyDollar = yyS[yypt-0 : yypt+1] | ||||
| 		// line internal/php7/php7.y:3973 | ||||
| 		// line internal/php7/php7.y:3989 | ||||
| 		{ | ||||
| 			yyVAL.node = &ast.ExprArrayItem{} | ||||
| 		} | ||||
| 	case 460: | ||||
| 		yyDollar = yyS[yypt-1 : yypt+1] | ||||
| 		// line internal/php7/php7.y:3977 | ||||
| 		// line internal/php7/php7.y:3993 | ||||
| 		{ | ||||
| 			yyVAL.node = yyDollar[1].node | ||||
| 		} | ||||
| 	case 461: | ||||
| 		yyDollar = yyS[yypt-3 : yypt+1] | ||||
| 		// line internal/php7/php7.y:3984 | ||||
| 		// line internal/php7/php7.y:4000 | ||||
| 		{ | ||||
| 			yyDollar[1].node.(*ast.ParserSeparatedList).SeparatorTkns = append(yyDollar[1].node.(*ast.ParserSeparatedList).SeparatorTkns, yyDollar[2].token) | ||||
| 			yyDollar[1].node.(*ast.ParserSeparatedList).Items = append(yyDollar[1].node.(*ast.ParserSeparatedList).Items, yyDollar[3].node) | ||||
| @ -6664,7 +6680,7 @@ yydefault: | ||||
| 		} | ||||
| 	case 462: | ||||
| 		yyDollar = yyS[yypt-1 : yypt+1] | ||||
| 		// line internal/php7/php7.y:3991 | ||||
| 		// line internal/php7/php7.y:4007 | ||||
| 		{ | ||||
| 			yyVAL.node = &ast.ParserSeparatedList{ | ||||
| 				Items: []ast.Vertex{yyDollar[1].node}, | ||||
| @ -6672,7 +6688,7 @@ yydefault: | ||||
| 		} | ||||
| 	case 463: | ||||
| 		yyDollar = yyS[yypt-3 : yypt+1] | ||||
| 		// line internal/php7/php7.y:4000 | ||||
| 		// line internal/php7/php7.y:4016 | ||||
| 		{ | ||||
| 			yyVAL.node = &ast.ExprArrayItem{ | ||||
| 				Position:       yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[3].node), | ||||
| @ -6683,7 +6699,7 @@ yydefault: | ||||
| 		} | ||||
| 	case 464: | ||||
| 		yyDollar = yyS[yypt-1 : yypt+1] | ||||
| 		// line internal/php7/php7.y:4009 | ||||
| 		// line internal/php7/php7.y:4025 | ||||
| 		{ | ||||
| 			yyVAL.node = &ast.ExprArrayItem{ | ||||
| 				Position: yylex.(*Parser).builder.NewNodePosition(yyDollar[1].node), | ||||
| @ -6692,7 +6708,7 @@ yydefault: | ||||
| 		} | ||||
| 	case 465: | ||||
| 		yyDollar = yyS[yypt-4 : yypt+1] | ||||
| 		// line internal/php7/php7.y:4016 | ||||
| 		// line internal/php7/php7.y:4032 | ||||
| 		{ | ||||
| 			yyVAL.node = &ast.ExprArrayItem{ | ||||
| 				Position:       yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[4].node), | ||||
| @ -6704,7 +6720,7 @@ yydefault: | ||||
| 		} | ||||
| 	case 466: | ||||
| 		yyDollar = yyS[yypt-2 : yypt+1] | ||||
| 		// line internal/php7/php7.y:4026 | ||||
| 		// line internal/php7/php7.y:4042 | ||||
| 		{ | ||||
| 			yyVAL.node = &ast.ExprArrayItem{ | ||||
| 				Position:     yylex.(*Parser).builder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node), | ||||
| @ -6714,7 +6730,7 @@ yydefault: | ||||
| 		} | ||||
| 	case 467: | ||||
| 		yyDollar = yyS[yypt-2 : yypt+1] | ||||
| 		// line internal/php7/php7.y:4034 | ||||
| 		// line internal/php7/php7.y:4050 | ||||
| 		{ | ||||
| 			yyVAL.node = &ast.ExprArrayItem{ | ||||
| 				Position:    yylex.(*Parser).builder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node), | ||||
| @ -6724,7 +6740,7 @@ yydefault: | ||||
| 		} | ||||
| 	case 468: | ||||
| 		yyDollar = yyS[yypt-6 : yypt+1] | ||||
| 		// line internal/php7/php7.y:4042 | ||||
| 		// line internal/php7/php7.y:4058 | ||||
| 		{ | ||||
| 			yyVAL.node = &ast.ExprArrayItem{ | ||||
| 				Position:       yylex.(*Parser).builder.NewNodeTokenPosition(yyDollar[1].node, yyDollar[6].token), | ||||
| @ -6742,7 +6758,7 @@ yydefault: | ||||
| 		} | ||||
| 	case 469: | ||||
| 		yyDollar = yyS[yypt-4 : yypt+1] | ||||
| 		// line internal/php7/php7.y:4058 | ||||
| 		// line internal/php7/php7.y:4074 | ||||
| 		{ | ||||
| 			yyVAL.node = &ast.ExprArrayItem{ | ||||
| 				Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token), | ||||
| @ -6758,13 +6774,13 @@ yydefault: | ||||
| 		} | ||||
| 	case 470: | ||||
| 		yyDollar = yyS[yypt-2 : yypt+1] | ||||
| 		// line internal/php7/php7.y:4075 | ||||
| 		// line internal/php7/php7.y:4091 | ||||
| 		{ | ||||
| 			yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) | ||||
| 		} | ||||
| 	case 471: | ||||
| 		yyDollar = yyS[yypt-2 : yypt+1] | ||||
| 		// line internal/php7/php7.y:4079 | ||||
| 		// line internal/php7/php7.y:4095 | ||||
| 		{ | ||||
| 			yyVAL.list = append( | ||||
| 				yyDollar[1].list, | ||||
| @ -6777,13 +6793,13 @@ yydefault: | ||||
| 		} | ||||
| 	case 472: | ||||
| 		yyDollar = yyS[yypt-1 : yypt+1] | ||||
| 		// line internal/php7/php7.y:4090 | ||||
| 		// line internal/php7/php7.y:4106 | ||||
| 		{ | ||||
| 			yyVAL.list = []ast.Vertex{yyDollar[1].node} | ||||
| 		} | ||||
| 	case 473: | ||||
| 		yyDollar = yyS[yypt-2 : yypt+1] | ||||
| 		// line internal/php7/php7.y:4094 | ||||
| 		// line internal/php7/php7.y:4110 | ||||
| 		{ | ||||
| 			yyVAL.list = []ast.Vertex{ | ||||
| 				&ast.ScalarEncapsedStringPart{ | ||||
| @ -6796,7 +6812,7 @@ yydefault: | ||||
| 		} | ||||
| 	case 474: | ||||
| 		yyDollar = yyS[yypt-1 : yypt+1] | ||||
| 		// line internal/php7/php7.y:4108 | ||||
| 		// line internal/php7/php7.y:4124 | ||||
| 		{ | ||||
| 			yyVAL.node = &ast.ExprVariable{ | ||||
| 				Position: yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token), | ||||
| @ -6809,7 +6825,7 @@ yydefault: | ||||
| 		} | ||||
| 	case 475: | ||||
| 		yyDollar = yyS[yypt-4 : yypt+1] | ||||
| 		// line internal/php7/php7.y:4119 | ||||
| 		// line internal/php7/php7.y:4135 | ||||
| 		{ | ||||
| 			yyVAL.node = &ast.ExprArrayDimFetch{ | ||||
| 				Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token), | ||||
| @ -6828,7 +6844,7 @@ yydefault: | ||||
| 		} | ||||
| 	case 476: | ||||
| 		yyDollar = yyS[yypt-3 : yypt+1] | ||||
| 		// line internal/php7/php7.y:4136 | ||||
| 		// line internal/php7/php7.y:4152 | ||||
| 		{ | ||||
| 			yyVAL.node = &ast.ExprPropertyFetch{ | ||||
| 				Position: yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token), | ||||
| @ -6850,7 +6866,7 @@ yydefault: | ||||
| 		} | ||||
| 	case 477: | ||||
| 		yyDollar = yyS[yypt-3 : yypt+1] | ||||
| 		// line internal/php7/php7.y:4156 | ||||
| 		// line internal/php7/php7.y:4172 | ||||
| 		{ | ||||
| 			yyVAL.node = &ast.ParserBrackets{ | ||||
| 				Position:       yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token), | ||||
| @ -6864,7 +6880,7 @@ yydefault: | ||||
| 		} | ||||
| 	case 478: | ||||
| 		yyDollar = yyS[yypt-3 : yypt+1] | ||||
| 		// line internal/php7/php7.y:4168 | ||||
| 		// line internal/php7/php7.y:4184 | ||||
| 		{ | ||||
| 			yyVAL.node = &ast.ParserBrackets{ | ||||
| 				Position:       yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token), | ||||
| @ -6882,7 +6898,7 @@ yydefault: | ||||
| 		} | ||||
| 	case 479: | ||||
| 		yyDollar = yyS[yypt-6 : yypt+1] | ||||
| 		// line internal/php7/php7.y:4184 | ||||
| 		// line internal/php7/php7.y:4200 | ||||
| 		{ | ||||
| 			yyVAL.node = &ast.ParserBrackets{ | ||||
| 				Position:       yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[6].token), | ||||
| @ -6906,7 +6922,7 @@ yydefault: | ||||
| 		} | ||||
| 	case 480: | ||||
| 		yyDollar = yyS[yypt-3 : yypt+1] | ||||
| 		// line internal/php7/php7.y:4206 | ||||
| 		// line internal/php7/php7.y:4222 | ||||
| 		{ | ||||
| 			yyVAL.node = &ast.ParserBrackets{ | ||||
| 				Position:        yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[3].token), | ||||
| @ -6917,7 +6933,7 @@ yydefault: | ||||
| 		} | ||||
| 	case 481: | ||||
| 		yyDollar = yyS[yypt-1 : yypt+1] | ||||
| 		// line internal/php7/php7.y:4218 | ||||
| 		// line internal/php7/php7.y:4234 | ||||
| 		{ | ||||
| 			yyVAL.node = &ast.ScalarString{ | ||||
| 				Position:  yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token), | ||||
| @ -6927,7 +6943,7 @@ yydefault: | ||||
| 		} | ||||
| 	case 482: | ||||
| 		yyDollar = yyS[yypt-1 : yypt+1] | ||||
| 		// line internal/php7/php7.y:4226 | ||||
| 		// line internal/php7/php7.y:4242 | ||||
| 		{ | ||||
| 			// TODO: add option to handle 64 bit integer | ||||
| 			if _, err := strconv.Atoi(string(yyDollar[1].token.Value)); err == nil { | ||||
| @ -6946,7 +6962,7 @@ yydefault: | ||||
| 		} | ||||
| 	case 483: | ||||
| 		yyDollar = yyS[yypt-2 : yypt+1] | ||||
| 		// line internal/php7/php7.y:4243 | ||||
| 		// line internal/php7/php7.y:4259 | ||||
| 		{ | ||||
| 			_, err := strconv.Atoi(string(yyDollar[2].token.Value)) | ||||
| 			isInt := err == nil | ||||
| @ -6972,7 +6988,7 @@ yydefault: | ||||
| 		} | ||||
| 	case 484: | ||||
| 		yyDollar = yyS[yypt-1 : yypt+1] | ||||
| 		// line internal/php7/php7.y:4267 | ||||
| 		// line internal/php7/php7.y:4283 | ||||
| 		{ | ||||
| 			yyVAL.node = &ast.ExprVariable{ | ||||
| 				Position: yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token), | ||||
| @ -6985,7 +7001,7 @@ yydefault: | ||||
| 		} | ||||
| 	case 485: | ||||
| 		yyDollar = yyS[yypt-5 : yypt+1] | ||||
| 		// line internal/php7/php7.y:4281 | ||||
| 		// line internal/php7/php7.y:4297 | ||||
| 		{ | ||||
| 			if yyDollar[4].token != nil { | ||||
| 				yyDollar[3].node.(*ast.ParserSeparatedList).SeparatorTkns = append(yyDollar[3].node.(*ast.ParserSeparatedList).SeparatorTkns, yyDollar[4].token) | ||||
| @ -7002,7 +7018,7 @@ yydefault: | ||||
| 		} | ||||
| 	case 486: | ||||
| 		yyDollar = yyS[yypt-4 : yypt+1] | ||||
| 		// line internal/php7/php7.y:4296 | ||||
| 		// line internal/php7/php7.y:4312 | ||||
| 		{ | ||||
| 			yyVAL.node = &ast.ExprEmpty{ | ||||
| 				Position:            yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token), | ||||
| @ -7014,7 +7030,7 @@ yydefault: | ||||
| 		} | ||||
| 	case 487: | ||||
| 		yyDollar = yyS[yypt-2 : yypt+1] | ||||
| 		// line internal/php7/php7.y:4306 | ||||
| 		// line internal/php7/php7.y:4322 | ||||
| 		{ | ||||
| 			yyVAL.node = &ast.ExprInclude{ | ||||
| 				Position:   yylex.(*Parser).builder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node), | ||||
| @ -7024,7 +7040,7 @@ yydefault: | ||||
| 		} | ||||
| 	case 488: | ||||
| 		yyDollar = yyS[yypt-2 : yypt+1] | ||||
| 		// line internal/php7/php7.y:4314 | ||||
| 		// line internal/php7/php7.y:4330 | ||||
| 		{ | ||||
| 			yyVAL.node = &ast.ExprIncludeOnce{ | ||||
| 				Position:       yylex.(*Parser).builder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node), | ||||
| @ -7034,7 +7050,7 @@ yydefault: | ||||
| 		} | ||||
| 	case 489: | ||||
| 		yyDollar = yyS[yypt-4 : yypt+1] | ||||
| 		// line internal/php7/php7.y:4322 | ||||
| 		// line internal/php7/php7.y:4338 | ||||
| 		{ | ||||
| 			yyVAL.node = &ast.ExprEval{ | ||||
| 				Position:            yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token), | ||||
| @ -7046,7 +7062,7 @@ yydefault: | ||||
| 		} | ||||
| 	case 490: | ||||
| 		yyDollar = yyS[yypt-2 : yypt+1] | ||||
| 		// line internal/php7/php7.y:4332 | ||||
| 		// line internal/php7/php7.y:4348 | ||||
| 		{ | ||||
| 			yyVAL.node = &ast.ExprRequire{ | ||||
| 				Position:   yylex.(*Parser).builder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node), | ||||
| @ -7056,7 +7072,7 @@ yydefault: | ||||
| 		} | ||||
| 	case 491: | ||||
| 		yyDollar = yyS[yypt-2 : yypt+1] | ||||
| 		// line internal/php7/php7.y:4340 | ||||
| 		// line internal/php7/php7.y:4356 | ||||
| 		{ | ||||
| 			yyVAL.node = &ast.ExprRequireOnce{ | ||||
| 				Position:       yylex.(*Parser).builder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node), | ||||
| @ -7066,7 +7082,7 @@ yydefault: | ||||
| 		} | ||||
| 	case 492: | ||||
| 		yyDollar = yyS[yypt-1 : yypt+1] | ||||
| 		// line internal/php7/php7.y:4351 | ||||
| 		// line internal/php7/php7.y:4367 | ||||
| 		{ | ||||
| 			yyVAL.node = &ast.ParserSeparatedList{ | ||||
| 				Items: []ast.Vertex{yyDollar[1].node}, | ||||
| @ -7074,7 +7090,7 @@ yydefault: | ||||
| 		} | ||||
| 	case 493: | ||||
| 		yyDollar = yyS[yypt-3 : yypt+1] | ||||
| 		// line internal/php7/php7.y:4357 | ||||
| 		// line internal/php7/php7.y:4373 | ||||
| 		{ | ||||
| 			yyDollar[1].node.(*ast.ParserSeparatedList).SeparatorTkns = append(yyDollar[1].node.(*ast.ParserSeparatedList).SeparatorTkns, yyDollar[2].token) | ||||
| 			yyDollar[1].node.(*ast.ParserSeparatedList).Items = append(yyDollar[1].node.(*ast.ParserSeparatedList).Items, yyDollar[3].node) | ||||
| @ -7083,7 +7099,7 @@ yydefault: | ||||
| 		} | ||||
| 	case 494: | ||||
| 		yyDollar = yyS[yypt-1 : yypt+1] | ||||
| 		// line internal/php7/php7.y:4367 | ||||
| 		// line internal/php7/php7.y:4383 | ||||
| 		{ | ||||
| 			yyVAL.node = yyDollar[1].node | ||||
| 		} | ||||
|  | ||||
| @ -3321,7 +3321,7 @@ function_call: | ||||
|             } | ||||
|     |   class_name T_PAAMAYIM_NEKUDOTAYIM member_name argument_list | ||||
|             { | ||||
|                 $$ = &ast.ExprStaticCall{ | ||||
|                 staticCall := &ast.ExprStaticCall{ | ||||
|                     Position: yylex.(*Parser).builder.NewNodesPosition($1, $4), | ||||
|                     Class:               $1, | ||||
|                     DoubleColonTkn:      $2, | ||||
| @ -3331,10 +3331,18 @@ function_call: | ||||
|                     SeparatorTkns:       $4.(*ast.ArgumentList).SeparatorTkns, | ||||
|                     CloseParenthesisTkn: $4.(*ast.ArgumentList).CloseParenthesisTkn, | ||||
|                 } | ||||
| 
 | ||||
|                 if brackets, ok := $3.(*ast.ParserBrackets); ok { | ||||
|                     staticCall.OpenCurlyBracketTkn  = brackets.OpenBracketTkn | ||||
|                     staticCall.Call                 = brackets.Child | ||||
|                     staticCall.CloseCurlyBracketTkn = brackets.CloseBracketTkn | ||||
|                 } | ||||
| 
 | ||||
|                 $$ = staticCall | ||||
|             } | ||||
|     |   variable_class_name T_PAAMAYIM_NEKUDOTAYIM member_name argument_list | ||||
|             { | ||||
|                 $$ = &ast.ExprStaticCall{ | ||||
|                 staticCall := &ast.ExprStaticCall{ | ||||
|                     Position: yylex.(*Parser).builder.NewNodesPosition($1, $4), | ||||
|                     Class:               $1, | ||||
|                     DoubleColonTkn:      $2, | ||||
| @ -3344,6 +3352,14 @@ function_call: | ||||
|                     SeparatorTkns:       $4.(*ast.ArgumentList).SeparatorTkns, | ||||
|                     CloseParenthesisTkn: $4.(*ast.ArgumentList).CloseParenthesisTkn, | ||||
|                 } | ||||
| 
 | ||||
|                 if brackets, ok := $3.(*ast.ParserBrackets); ok { | ||||
|                     staticCall.OpenCurlyBracketTkn  = brackets.OpenBracketTkn | ||||
|                     staticCall.Call                 = brackets.Child | ||||
|                     staticCall.CloseCurlyBracketTkn = brackets.CloseBracketTkn | ||||
|                 } | ||||
| 
 | ||||
|                 $$ = staticCall | ||||
|             } | ||||
|     |   callable_expr argument_list | ||||
|             { | ||||
|  | ||||
| @ -1681,14 +1681,16 @@ func (n *ExprShellExec) GetPosition() *position.Position { | ||||
| 
 | ||||
| // ExprStaticCall node | ||||
| type ExprStaticCall struct { | ||||
| 	Position            *position.Position | ||||
| 	Class               Vertex | ||||
| 	DoubleColonTkn      *token.Token | ||||
| 	Call                Vertex | ||||
| 	OpenParenthesisTkn  *token.Token | ||||
| 	Arguments           []Vertex | ||||
| 	SeparatorTkns       []*token.Token | ||||
| 	CloseParenthesisTkn *token.Token | ||||
| 	Position             *position.Position | ||||
| 	Class                Vertex | ||||
| 	DoubleColonTkn       *token.Token | ||||
| 	OpenCurlyBracketTkn  *token.Token | ||||
| 	Call                 Vertex | ||||
| 	CloseCurlyBracketTkn *token.Token | ||||
| 	OpenParenthesisTkn   *token.Token | ||||
| 	Arguments            []Vertex | ||||
| 	SeparatorTkns        []*token.Token | ||||
| 	CloseParenthesisTkn  *token.Token | ||||
| } | ||||
| 
 | ||||
| func (n *ExprStaticCall) Accept(v NodeVisitor) { | ||||
|  | ||||
| @ -1473,7 +1473,9 @@ func (v *Dumper) ExprStaticCall(n *ast.ExprStaticCall) { | ||||
| 	v.dumpPosition(n.Position) | ||||
| 	v.dumpVertex("Class", n.Class) | ||||
| 	v.dumpToken("DoubleColonTkn", n.DoubleColonTkn) | ||||
| 	v.dumpToken("OpenCurlyBracketTkn", n.OpenCurlyBracketTkn) | ||||
| 	v.dumpVertex("Call", n.Call) | ||||
| 	v.dumpToken("CloseCurlyBracketTkn", n.CloseCurlyBracketTkn) | ||||
| 	v.dumpToken("OpenParenthesisTkn", n.OpenParenthesisTkn) | ||||
| 	v.dumpVertexList("Arguments", n.Arguments) | ||||
| 	v.dumpTokenList("SeparatorTkns", n.SeparatorTkns) | ||||
|  | ||||
| @ -1394,6 +1394,17 @@ func (f *formatter) ExprShellExec(n *ast.ExprShellExec) { | ||||
| func (f *formatter) ExprStaticCall(n *ast.ExprStaticCall) { | ||||
| 	n.Class.Accept(f) | ||||
| 	n.DoubleColonTkn = f.newToken(token.T_PAAMAYIM_NEKUDOTAYIM, []byte("::")) | ||||
| 
 | ||||
| 	n.OpenCurlyBracketTkn = nil | ||||
| 	n.CloseCurlyBracketTkn = nil | ||||
| 	switch n.Call.(type) { | ||||
| 	case *ast.Identifier: | ||||
| 	case *ast.ExprVariable: | ||||
| 	default: | ||||
| 		n.OpenCurlyBracketTkn = f.newToken('{', []byte("{")) | ||||
| 		n.CloseCurlyBracketTkn = f.newToken('}', []byte("}")) | ||||
| 	} | ||||
| 
 | ||||
| 	n.Call.Accept(f) | ||||
| 
 | ||||
| 	n.OpenParenthesisTkn = f.newToken('(', []byte("(")) | ||||
|  | ||||
| @ -4692,6 +4692,36 @@ func TestFormatter_ExprStaticCall(t *testing.T) { | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| func TestFormatter_ExprStaticCall_Expr(t *testing.T) { | ||||
| 	o := bytes.NewBufferString("") | ||||
| 
 | ||||
| 	n := &ast.ExprStaticCall{ | ||||
| 		Class: &ast.NameName{ | ||||
| 			Parts: []ast.Vertex{ | ||||
| 				&ast.NameNamePart{ | ||||
| 					Value: []byte("foo"), | ||||
| 				}, | ||||
| 			}, | ||||
| 		}, | ||||
| 		Call: &ast.ScalarString{ | ||||
| 			Value: []byte("'bar'"), | ||||
| 		}, | ||||
| 	} | ||||
| 
 | ||||
| 	f := visitor.NewFormatter().WithState(visitor.FormatterStatePHP).WithIndent(1) | ||||
| 	n.Accept(f) | ||||
| 
 | ||||
| 	p := visitor.NewPrinter(o).WithState(visitor.PrinterStatePHP) | ||||
| 	n.Accept(p) | ||||
| 
 | ||||
| 	expected := `foo::{'bar'}()` | ||||
| 	actual := o.String() | ||||
| 
 | ||||
| 	if expected != actual { | ||||
| 		t.Errorf("\nexpected: %s\ngot: %s\n", expected, actual) | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| func TestFormatter_ExprStaticCall_Arguments(t *testing.T) { | ||||
| 	o := bytes.NewBufferString("") | ||||
| 
 | ||||
|  | ||||
| @ -840,7 +840,9 @@ func (p *printer) ExprShellExec(n *ast.ExprShellExec) { | ||||
| func (p *printer) ExprStaticCall(n *ast.ExprStaticCall) { | ||||
| 	p.printNode(n.Class) | ||||
| 	p.printToken(n.DoubleColonTkn, []byte("::")) | ||||
| 	p.printToken(n.OpenCurlyBracketTkn, nil) | ||||
| 	p.printNode(n.Call) | ||||
| 	p.printToken(n.CloseCurlyBracketTkn, nil) | ||||
| 	p.printToken(n.OpenParenthesisTkn, p.ifNodeList(n.Arguments, []byte("("))) | ||||
| 	p.printSeparatedList(n.Arguments, n.SeparatorTkns, []byte(",")) | ||||
| 	p.printToken(n.CloseParenthesisTkn, p.ifNodeList(n.Arguments, []byte(")"))) | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user