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