refactoring: update ast structure of "ArrayItem" node
This commit is contained in:
		
							parent
							
								
									8bf1fa822d
								
							
						
					
					
						commit
						0f5f5e7dc7
					
				| @ -30780,13 +30780,6 @@ func TestExprArray_Items(t *testing.T) { | |||||||
| 							}, | 							}, | ||||||
| 						}, | 						}, | ||||||
| 						&ast.ExprArrayItem{ | 						&ast.ExprArrayItem{ | ||||||
| 							Position: &position.Position{ |  | ||||||
| 								StartLine: 1, |  | ||||||
| 								EndLine:   1, |  | ||||||
| 								StartPos:  15, |  | ||||||
| 								EndPos:    18, |  | ||||||
| 							}, |  | ||||||
| 							Val: &ast.ExprReference{ |  | ||||||
| 							Position: &position.Position{ | 							Position: &position.Position{ | ||||||
| 								StartLine: 1, | 								StartLine: 1, | ||||||
| 								EndLine:   1, | 								EndLine:   1, | ||||||
| @ -30815,7 +30808,7 @@ func TestExprArray_Items(t *testing.T) { | |||||||
| 									}, | 									}, | ||||||
| 								}, | 								}, | ||||||
| 							}, | 							}, | ||||||
| 								Var: &ast.ExprVariable{ | 							Val: &ast.ExprVariable{ | ||||||
| 								Position: &position.Position{ | 								Position: &position.Position{ | ||||||
| 									StartLine: 1, | 									StartLine: 1, | ||||||
| 									EndLine:   1, | 									EndLine:   1, | ||||||
| @ -30843,7 +30836,6 @@ func TestExprArray_Items(t *testing.T) { | |||||||
| 								}, | 								}, | ||||||
| 							}, | 							}, | ||||||
| 						}, | 						}, | ||||||
| 						}, |  | ||||||
| 						&ast.ExprArrayItem{}, | 						&ast.ExprArrayItem{}, | ||||||
| 					}, | 					}, | ||||||
| 					SeparatorTkns: []*token.Token{ | 					SeparatorTkns: []*token.Token{ | ||||||
| @ -39019,13 +39011,6 @@ func TestExprShortArray_Items(t *testing.T) { | |||||||
| 							}, | 							}, | ||||||
| 						}, | 						}, | ||||||
| 						&ast.ExprArrayItem{ | 						&ast.ExprArrayItem{ | ||||||
| 							Position: &position.Position{ |  | ||||||
| 								StartLine: 1, |  | ||||||
| 								EndLine:   1, |  | ||||||
| 								StartPos:  10, |  | ||||||
| 								EndPos:    13, |  | ||||||
| 							}, |  | ||||||
| 							Val: &ast.ExprReference{ |  | ||||||
| 							Position: &position.Position{ | 							Position: &position.Position{ | ||||||
| 								StartLine: 1, | 								StartLine: 1, | ||||||
| 								EndLine:   1, | 								EndLine:   1, | ||||||
| @ -39054,7 +39039,7 @@ func TestExprShortArray_Items(t *testing.T) { | |||||||
| 									}, | 									}, | ||||||
| 								}, | 								}, | ||||||
| 							}, | 							}, | ||||||
| 								Var: &ast.ExprVariable{ | 							Val: &ast.ExprVariable{ | ||||||
| 								Position: &position.Position{ | 								Position: &position.Position{ | ||||||
| 									StartLine: 1, | 									StartLine: 1, | ||||||
| 									EndLine:   1, | 									EndLine:   1, | ||||||
| @ -39082,7 +39067,6 @@ func TestExprShortArray_Items(t *testing.T) { | |||||||
| 								}, | 								}, | ||||||
| 							}, | 							}, | ||||||
| 						}, | 						}, | ||||||
| 						}, |  | ||||||
| 						&ast.ExprArrayItem{}, | 						&ast.ExprArrayItem{}, | ||||||
| 					}, | 					}, | ||||||
| 					SeparatorTkns: []*token.Token{ | 					SeparatorTkns: []*token.Token{ | ||||||
|  | |||||||
							
								
								
									
										88
									
								
								internal/php5/php5.go
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										88
									
								
								internal/php5/php5.go
									
									
									
										generated
									
									
									
								
							| @ -340,7 +340,7 @@ const yyEofCode = 1 | |||||||
| const yyErrCode = 2 | const yyErrCode = 2 | ||||||
| const yyInitialStackSize = 16 | const yyInitialStackSize = 16 | ||||||
| 
 | 
 | ||||||
| // line internal/php5/php5.y:5669 | // line internal/php5/php5.y:5657 | ||||||
| 
 | 
 | ||||||
| // line yacctab:1 | // line yacctab:1 | ||||||
| var yyExca = [...]int{ | var yyExca = [...]int{ | ||||||
| @ -7825,11 +7825,8 @@ yydefault: | |||||||
| 				Position:       yylex.(*Parser).builder.NewNodesPosition(yyDollar[3].node, yyDollar[6].node), | 				Position:       yylex.(*Parser).builder.NewNodesPosition(yyDollar[3].node, yyDollar[6].node), | ||||||
| 				Key:            yyDollar[3].node, | 				Key:            yyDollar[3].node, | ||||||
| 				DoubleArrowTkn: yyDollar[4].token, | 				DoubleArrowTkn: yyDollar[4].token, | ||||||
| 				Val: &ast.ExprReference{ |  | ||||||
| 					Position:     yylex.(*Parser).builder.NewTokenNodePosition(yyDollar[5].token, yyDollar[6].node), |  | ||||||
| 				AmpersandTkn:   yyDollar[5].token, | 				AmpersandTkn:   yyDollar[5].token, | ||||||
| 					Var:          yyDollar[6].node, | 				Val:            yyDollar[6].node, | ||||||
| 				}, |  | ||||||
| 			} | 			} | ||||||
| 
 | 
 | ||||||
| 			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) | ||||||
| @ -7839,15 +7836,12 @@ yydefault: | |||||||
| 		} | 		} | ||||||
| 	case 488: | 	case 488: | ||||||
| 		yyDollar = yyS[yypt-4 : yypt+1] | 		yyDollar = yyS[yypt-4 : yypt+1] | ||||||
| 		// line internal/php5/php5.y:5274 | 		// line internal/php5/php5.y:5271 | ||||||
| 		{ | 		{ | ||||||
| 			arrayItem := &ast.ExprArrayItem{ | 			arrayItem := &ast.ExprArrayItem{ | ||||||
| 				Position: yylex.(*Parser).builder.NewTokenNodePosition(yyDollar[3].token, yyDollar[4].node), |  | ||||||
| 				Val: &ast.ExprReference{ |  | ||||||
| 				Position:     yylex.(*Parser).builder.NewTokenNodePosition(yyDollar[3].token, yyDollar[4].node), | 				Position:     yylex.(*Parser).builder.NewTokenNodePosition(yyDollar[3].token, yyDollar[4].node), | ||||||
| 				AmpersandTkn: yyDollar[3].token, | 				AmpersandTkn: yyDollar[3].token, | ||||||
| 					Var:          yyDollar[4].node, | 				Val:          yyDollar[4].node, | ||||||
| 				}, |  | ||||||
| 			} | 			} | ||||||
| 
 | 
 | ||||||
| 			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) | ||||||
| @ -7857,7 +7851,7 @@ yydefault: | |||||||
| 		} | 		} | ||||||
| 	case 489: | 	case 489: | ||||||
| 		yyDollar = yyS[yypt-4 : yypt+1] | 		yyDollar = yyS[yypt-4 : yypt+1] | ||||||
| 		// line internal/php5/php5.y:5290 | 		// line internal/php5/php5.y:5284 | ||||||
| 		{ | 		{ | ||||||
| 			yyVAL.node = &ast.ParserSeparatedList{ | 			yyVAL.node = &ast.ParserSeparatedList{ | ||||||
| 				Items: []ast.Vertex{ | 				Items: []ast.Vertex{ | ||||||
| @ -7865,41 +7859,35 @@ yydefault: | |||||||
| 						Position:       yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[4].node), | 						Position:       yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[4].node), | ||||||
| 						Key:            yyDollar[1].node, | 						Key:            yyDollar[1].node, | ||||||
| 						DoubleArrowTkn: yyDollar[2].token, | 						DoubleArrowTkn: yyDollar[2].token, | ||||||
| 						Val: &ast.ExprReference{ |  | ||||||
| 							Position:     yylex.(*Parser).builder.NewTokenNodePosition(yyDollar[3].token, yyDollar[4].node), |  | ||||||
| 						AmpersandTkn:   yyDollar[3].token, | 						AmpersandTkn:   yyDollar[3].token, | ||||||
| 							Var:          yyDollar[4].node, | 						Val:            yyDollar[4].node, | ||||||
| 						}, |  | ||||||
| 					}, | 					}, | ||||||
| 				}, | 				}, | ||||||
| 			} | 			} | ||||||
| 		} | 		} | ||||||
| 	case 490: | 	case 490: | ||||||
| 		yyDollar = yyS[yypt-2 : yypt+1] | 		yyDollar = yyS[yypt-2 : yypt+1] | ||||||
| 		// line internal/php5/php5.y:5307 | 		// line internal/php5/php5.y:5298 | ||||||
| 		{ | 		{ | ||||||
| 			yyVAL.node = &ast.ParserSeparatedList{ | 			yyVAL.node = &ast.ParserSeparatedList{ | ||||||
| 				Items: []ast.Vertex{ | 				Items: []ast.Vertex{ | ||||||
| 					&ast.ExprArrayItem{ | 					&ast.ExprArrayItem{ | ||||||
| 						Position: yylex.(*Parser).builder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node), |  | ||||||
| 						Val: &ast.ExprReference{ |  | ||||||
| 						Position:     yylex.(*Parser).builder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node), | 						Position:     yylex.(*Parser).builder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node), | ||||||
| 						AmpersandTkn: yyDollar[1].token, | 						AmpersandTkn: yyDollar[1].token, | ||||||
| 							Var:          yyDollar[2].node, | 						Val:          yyDollar[2].node, | ||||||
| 						}, |  | ||||||
| 					}, | 					}, | ||||||
| 				}, | 				}, | ||||||
| 			} | 			} | ||||||
| 		} | 		} | ||||||
| 	case 491: | 	case 491: | ||||||
| 		yyDollar = yyS[yypt-2 : yypt+1] | 		yyDollar = yyS[yypt-2 : yypt+1] | ||||||
| 		// line internal/php5/php5.y:5325 | 		// line internal/php5/php5.y:5313 | ||||||
| 		{ | 		{ | ||||||
| 			yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) | 			yyVAL.list = append(yyDollar[1].list, yyDollar[2].node) | ||||||
| 		} | 		} | ||||||
| 	case 492: | 	case 492: | ||||||
| 		yyDollar = yyS[yypt-2 : yypt+1] | 		yyDollar = yyS[yypt-2 : yypt+1] | ||||||
| 		// line internal/php5/php5.y:5329 | 		// line internal/php5/php5.y:5317 | ||||||
| 		{ | 		{ | ||||||
| 			yyVAL.list = append( | 			yyVAL.list = append( | ||||||
| 				yyDollar[1].list, | 				yyDollar[1].list, | ||||||
| @ -7912,13 +7900,13 @@ yydefault: | |||||||
| 		} | 		} | ||||||
| 	case 493: | 	case 493: | ||||||
| 		yyDollar = yyS[yypt-1 : yypt+1] | 		yyDollar = yyS[yypt-1 : yypt+1] | ||||||
| 		// line internal/php5/php5.y:5340 | 		// line internal/php5/php5.y:5328 | ||||||
| 		{ | 		{ | ||||||
| 			yyVAL.list = []ast.Vertex{yyDollar[1].node} | 			yyVAL.list = []ast.Vertex{yyDollar[1].node} | ||||||
| 		} | 		} | ||||||
| 	case 494: | 	case 494: | ||||||
| 		yyDollar = yyS[yypt-2 : yypt+1] | 		yyDollar = yyS[yypt-2 : yypt+1] | ||||||
| 		// line internal/php5/php5.y:5344 | 		// line internal/php5/php5.y:5332 | ||||||
| 		{ | 		{ | ||||||
| 			yyVAL.list = []ast.Vertex{ | 			yyVAL.list = []ast.Vertex{ | ||||||
| 				&ast.ScalarEncapsedStringPart{ | 				&ast.ScalarEncapsedStringPart{ | ||||||
| @ -7931,7 +7919,7 @@ yydefault: | |||||||
| 		} | 		} | ||||||
| 	case 495: | 	case 495: | ||||||
| 		yyDollar = yyS[yypt-1 : yypt+1] | 		yyDollar = yyS[yypt-1 : yypt+1] | ||||||
| 		// line internal/php5/php5.y:5358 | 		// line internal/php5/php5.y:5346 | ||||||
| 		{ | 		{ | ||||||
| 			yyVAL.node = &ast.ExprVariable{ | 			yyVAL.node = &ast.ExprVariable{ | ||||||
| 				Position: yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token), | 				Position: yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token), | ||||||
| @ -7944,7 +7932,7 @@ yydefault: | |||||||
| 		} | 		} | ||||||
| 	case 496: | 	case 496: | ||||||
| 		yyDollar = yyS[yypt-4 : yypt+1] | 		yyDollar = yyS[yypt-4 : yypt+1] | ||||||
| 		// line internal/php5/php5.y:5369 | 		// line internal/php5/php5.y:5357 | ||||||
| 		{ | 		{ | ||||||
| 			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), | ||||||
| @ -7963,7 +7951,7 @@ yydefault: | |||||||
| 		} | 		} | ||||||
| 	case 497: | 	case 497: | ||||||
| 		yyDollar = yyS[yypt-3 : yypt+1] | 		yyDollar = yyS[yypt-3 : yypt+1] | ||||||
| 		// line internal/php5/php5.y:5386 | 		// line internal/php5/php5.y:5374 | ||||||
| 		{ | 		{ | ||||||
| 			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), | ||||||
| @ -7985,7 +7973,7 @@ yydefault: | |||||||
| 		} | 		} | ||||||
| 	case 498: | 	case 498: | ||||||
| 		yyDollar = yyS[yypt-3 : yypt+1] | 		yyDollar = yyS[yypt-3 : yypt+1] | ||||||
| 		// line internal/php5/php5.y:5406 | 		// line internal/php5/php5.y:5394 | ||||||
| 		{ | 		{ | ||||||
| 			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), | ||||||
| @ -7999,7 +7987,7 @@ yydefault: | |||||||
| 		} | 		} | ||||||
| 	case 499: | 	case 499: | ||||||
| 		yyDollar = yyS[yypt-3 : yypt+1] | 		yyDollar = yyS[yypt-3 : yypt+1] | ||||||
| 		// line internal/php5/php5.y:5418 | 		// line internal/php5/php5.y:5406 | ||||||
| 		{ | 		{ | ||||||
| 			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), | ||||||
| @ -8017,7 +8005,7 @@ yydefault: | |||||||
| 		} | 		} | ||||||
| 	case 500: | 	case 500: | ||||||
| 		yyDollar = yyS[yypt-6 : yypt+1] | 		yyDollar = yyS[yypt-6 : yypt+1] | ||||||
| 		// line internal/php5/php5.y:5434 | 		// line internal/php5/php5.y:5422 | ||||||
| 		{ | 		{ | ||||||
| 			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), | ||||||
| @ -8041,7 +8029,7 @@ yydefault: | |||||||
| 		} | 		} | ||||||
| 	case 501: | 	case 501: | ||||||
| 		yyDollar = yyS[yypt-3 : yypt+1] | 		yyDollar = yyS[yypt-3 : yypt+1] | ||||||
| 		// line internal/php5/php5.y:5456 | 		// line internal/php5/php5.y:5444 | ||||||
| 		{ | 		{ | ||||||
| 			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), | ||||||
| @ -8052,7 +8040,7 @@ yydefault: | |||||||
| 		} | 		} | ||||||
| 	case 502: | 	case 502: | ||||||
| 		yyDollar = yyS[yypt-1 : yypt+1] | 		yyDollar = yyS[yypt-1 : yypt+1] | ||||||
| 		// line internal/php5/php5.y:5468 | 		// line internal/php5/php5.y:5456 | ||||||
| 		{ | 		{ | ||||||
| 			yyVAL.node = &ast.ScalarString{ | 			yyVAL.node = &ast.ScalarString{ | ||||||
| 				Position:  yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token), | 				Position:  yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token), | ||||||
| @ -8062,7 +8050,7 @@ yydefault: | |||||||
| 		} | 		} | ||||||
| 	case 503: | 	case 503: | ||||||
| 		yyDollar = yyS[yypt-1 : yypt+1] | 		yyDollar = yyS[yypt-1 : yypt+1] | ||||||
| 		// line internal/php5/php5.y:5476 | 		// line internal/php5/php5.y:5464 | ||||||
| 		{ | 		{ | ||||||
| 			// 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 { | ||||||
| @ -8081,7 +8069,7 @@ yydefault: | |||||||
| 		} | 		} | ||||||
| 	case 504: | 	case 504: | ||||||
| 		yyDollar = yyS[yypt-1 : yypt+1] | 		yyDollar = yyS[yypt-1 : yypt+1] | ||||||
| 		// line internal/php5/php5.y:5493 | 		// line internal/php5/php5.y:5481 | ||||||
| 		{ | 		{ | ||||||
| 			yyVAL.node = &ast.ExprVariable{ | 			yyVAL.node = &ast.ExprVariable{ | ||||||
| 				Position: yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token), | 				Position: yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token), | ||||||
| @ -8094,7 +8082,7 @@ yydefault: | |||||||
| 		} | 		} | ||||||
| 	case 505: | 	case 505: | ||||||
| 		yyDollar = yyS[yypt-4 : yypt+1] | 		yyDollar = yyS[yypt-4 : yypt+1] | ||||||
| 		// line internal/php5/php5.y:5507 | 		// line internal/php5/php5.y:5495 | ||||||
| 		{ | 		{ | ||||||
| 			yyVAL.node = &ast.ExprIsset{ | 			yyVAL.node = &ast.ExprIsset{ | ||||||
| 				Position:            yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token), | 				Position:            yylex.(*Parser).builder.NewTokensPosition(yyDollar[1].token, yyDollar[4].token), | ||||||
| @ -8107,7 +8095,7 @@ yydefault: | |||||||
| 		} | 		} | ||||||
| 	case 506: | 	case 506: | ||||||
| 		yyDollar = yyS[yypt-4 : yypt+1] | 		yyDollar = yyS[yypt-4 : yypt+1] | ||||||
| 		// line internal/php5/php5.y:5518 | 		// line internal/php5/php5.y:5506 | ||||||
| 		{ | 		{ | ||||||
| 			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), | ||||||
| @ -8119,7 +8107,7 @@ yydefault: | |||||||
| 		} | 		} | ||||||
| 	case 507: | 	case 507: | ||||||
| 		yyDollar = yyS[yypt-4 : yypt+1] | 		yyDollar = yyS[yypt-4 : yypt+1] | ||||||
| 		// line internal/php5/php5.y:5528 | 		// line internal/php5/php5.y:5516 | ||||||
| 		{ | 		{ | ||||||
| 			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), | ||||||
| @ -8131,7 +8119,7 @@ yydefault: | |||||||
| 		} | 		} | ||||||
| 	case 508: | 	case 508: | ||||||
| 		yyDollar = yyS[yypt-2 : yypt+1] | 		yyDollar = yyS[yypt-2 : yypt+1] | ||||||
| 		// line internal/php5/php5.y:5538 | 		// line internal/php5/php5.y:5526 | ||||||
| 		{ | 		{ | ||||||
| 			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), | ||||||
| @ -8141,7 +8129,7 @@ yydefault: | |||||||
| 		} | 		} | ||||||
| 	case 509: | 	case 509: | ||||||
| 		yyDollar = yyS[yypt-2 : yypt+1] | 		yyDollar = yyS[yypt-2 : yypt+1] | ||||||
| 		// line internal/php5/php5.y:5546 | 		// line internal/php5/php5.y:5534 | ||||||
| 		{ | 		{ | ||||||
| 			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), | ||||||
| @ -8151,7 +8139,7 @@ yydefault: | |||||||
| 		} | 		} | ||||||
| 	case 510: | 	case 510: | ||||||
| 		yyDollar = yyS[yypt-4 : yypt+1] | 		yyDollar = yyS[yypt-4 : yypt+1] | ||||||
| 		// line internal/php5/php5.y:5554 | 		// line internal/php5/php5.y:5542 | ||||||
| 		{ | 		{ | ||||||
| 			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), | ||||||
| @ -8163,7 +8151,7 @@ yydefault: | |||||||
| 		} | 		} | ||||||
| 	case 511: | 	case 511: | ||||||
| 		yyDollar = yyS[yypt-2 : yypt+1] | 		yyDollar = yyS[yypt-2 : yypt+1] | ||||||
| 		// line internal/php5/php5.y:5564 | 		// line internal/php5/php5.y:5552 | ||||||
| 		{ | 		{ | ||||||
| 			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), | ||||||
| @ -8173,7 +8161,7 @@ yydefault: | |||||||
| 		} | 		} | ||||||
| 	case 512: | 	case 512: | ||||||
| 		yyDollar = yyS[yypt-2 : yypt+1] | 		yyDollar = yyS[yypt-2 : yypt+1] | ||||||
| 		// line internal/php5/php5.y:5572 | 		// line internal/php5/php5.y:5560 | ||||||
| 		{ | 		{ | ||||||
| 			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), | ||||||
| @ -8183,7 +8171,7 @@ yydefault: | |||||||
| 		} | 		} | ||||||
| 	case 513: | 	case 513: | ||||||
| 		yyDollar = yyS[yypt-1 : yypt+1] | 		yyDollar = yyS[yypt-1 : yypt+1] | ||||||
| 		// line internal/php5/php5.y:5583 | 		// line internal/php5/php5.y:5571 | ||||||
| 		{ | 		{ | ||||||
| 			yyVAL.node = &ast.ParserSeparatedList{ | 			yyVAL.node = &ast.ParserSeparatedList{ | ||||||
| 				Items: []ast.Vertex{yyDollar[1].node}, | 				Items: []ast.Vertex{yyDollar[1].node}, | ||||||
| @ -8191,7 +8179,7 @@ yydefault: | |||||||
| 		} | 		} | ||||||
| 	case 514: | 	case 514: | ||||||
| 		yyDollar = yyS[yypt-3 : yypt+1] | 		yyDollar = yyS[yypt-3 : yypt+1] | ||||||
| 		// line internal/php5/php5.y:5589 | 		// line internal/php5/php5.y:5577 | ||||||
| 		{ | 		{ | ||||||
| 			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) | ||||||
| @ -8200,19 +8188,19 @@ yydefault: | |||||||
| 		} | 		} | ||||||
| 	case 515: | 	case 515: | ||||||
| 		yyDollar = yyS[yypt-1 : yypt+1] | 		yyDollar = yyS[yypt-1 : yypt+1] | ||||||
| 		// line internal/php5/php5.y:5599 | 		// line internal/php5/php5.y:5587 | ||||||
| 		{ | 		{ | ||||||
| 			yyVAL.node = yyDollar[1].node | 			yyVAL.node = yyDollar[1].node | ||||||
| 		} | 		} | ||||||
| 	case 516: | 	case 516: | ||||||
| 		yyDollar = yyS[yypt-1 : yypt+1] | 		yyDollar = yyS[yypt-1 : yypt+1] | ||||||
| 		// line internal/php5/php5.y:5603 | 		// line internal/php5/php5.y:5591 | ||||||
| 		{ | 		{ | ||||||
| 			yyVAL.node = yyDollar[1].node | 			yyVAL.node = yyDollar[1].node | ||||||
| 		} | 		} | ||||||
| 	case 517: | 	case 517: | ||||||
| 		yyDollar = yyS[yypt-3 : yypt+1] | 		yyDollar = yyS[yypt-3 : yypt+1] | ||||||
| 		// line internal/php5/php5.y:5610 | 		// line internal/php5/php5.y:5598 | ||||||
| 		{ | 		{ | ||||||
| 			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), | ||||||
| @ -8227,7 +8215,7 @@ yydefault: | |||||||
| 		} | 		} | ||||||
| 	case 518: | 	case 518: | ||||||
| 		yyDollar = yyS[yypt-3 : yypt+1] | 		yyDollar = yyS[yypt-3 : yypt+1] | ||||||
| 		// line internal/php5/php5.y:5623 | 		// line internal/php5/php5.y:5611 | ||||||
| 		{ | 		{ | ||||||
| 			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), | ||||||
| @ -8242,7 +8230,7 @@ yydefault: | |||||||
| 		} | 		} | ||||||
| 	case 519: | 	case 519: | ||||||
| 		yyDollar = yyS[yypt-3 : yypt+1] | 		yyDollar = yyS[yypt-3 : yypt+1] | ||||||
| 		// line internal/php5/php5.y:5639 | 		// line internal/php5/php5.y:5627 | ||||||
| 		{ | 		{ | ||||||
| 			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), | ||||||
| @ -8257,7 +8245,7 @@ yydefault: | |||||||
| 		} | 		} | ||||||
| 	case 520: | 	case 520: | ||||||
| 		yyDollar = yyS[yypt-3 : yypt+1] | 		yyDollar = yyS[yypt-3 : yypt+1] | ||||||
| 		// line internal/php5/php5.y:5655 | 		// line internal/php5/php5.y:5643 | ||||||
| 		{ | 		{ | ||||||
| 			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), | ||||||
|  | |||||||
| @ -5258,11 +5258,8 @@ non_empty_array_pair_list: | |||||||
|                     Position:       yylex.(*Parser).builder.NewNodesPosition($3, $6), |                     Position:       yylex.(*Parser).builder.NewNodesPosition($3, $6), | ||||||
|                     Key:            $3, |                     Key:            $3, | ||||||
|                     DoubleArrowTkn: $4, |                     DoubleArrowTkn: $4, | ||||||
|                     Val: &ast.ExprReference{ |  | ||||||
|                         Position: yylex.(*Parser).builder.NewTokenNodePosition($5, $6), |  | ||||||
|                     AmpersandTkn:   $5, |                     AmpersandTkn:   $5, | ||||||
|                         Var:          $6, |                     Val:            $6, | ||||||
|                     }, |  | ||||||
|                 } |                 } | ||||||
| 
 | 
 | ||||||
|                 $1.(*ast.ParserSeparatedList).SeparatorTkns = append($1.(*ast.ParserSeparatedList).SeparatorTkns, $2) |                 $1.(*ast.ParserSeparatedList).SeparatorTkns = append($1.(*ast.ParserSeparatedList).SeparatorTkns, $2) | ||||||
| @ -5273,12 +5270,9 @@ non_empty_array_pair_list: | |||||||
|     |   non_empty_array_pair_list ',' '&' w_variable |     |   non_empty_array_pair_list ',' '&' w_variable | ||||||
|             { |             { | ||||||
|                 arrayItem := &ast.ExprArrayItem{ |                 arrayItem := &ast.ExprArrayItem{ | ||||||
|                     Position: yylex.(*Parser).builder.NewTokenNodePosition($3, $4), |  | ||||||
|                     Val: &ast.ExprReference{ |  | ||||||
|                     Position:     yylex.(*Parser).builder.NewTokenNodePosition($3, $4), |                     Position:     yylex.(*Parser).builder.NewTokenNodePosition($3, $4), | ||||||
|                     AmpersandTkn: $3, |                     AmpersandTkn: $3, | ||||||
|                         Var:          $4, |                     Val:          $4, | ||||||
|                     }, |  | ||||||
|                 } |                 } | ||||||
| 
 | 
 | ||||||
|                 $1.(*ast.ParserSeparatedList).SeparatorTkns = append($1.(*ast.ParserSeparatedList).SeparatorTkns, $2) |                 $1.(*ast.ParserSeparatedList).SeparatorTkns = append($1.(*ast.ParserSeparatedList).SeparatorTkns, $2) | ||||||
| @ -5294,11 +5288,8 @@ non_empty_array_pair_list: | |||||||
|                             Position:       yylex.(*Parser).builder.NewNodesPosition($1, $4), |                             Position:       yylex.(*Parser).builder.NewNodesPosition($1, $4), | ||||||
|                             Key:            $1, |                             Key:            $1, | ||||||
|                             DoubleArrowTkn: $2, |                             DoubleArrowTkn: $2, | ||||||
|                             Val: &ast.ExprReference{ |  | ||||||
|                                 Position: yylex.(*Parser).builder.NewTokenNodePosition($3, $4), |  | ||||||
|                             AmpersandTkn:   $3, |                             AmpersandTkn:   $3, | ||||||
|                                 Var:          $4, |                             Val:            $4, | ||||||
|                             }, |  | ||||||
|                         }, |                         }, | ||||||
|                     }, |                     }, | ||||||
|                 } |                 } | ||||||
| @ -5308,12 +5299,9 @@ non_empty_array_pair_list: | |||||||
|                 $$ = &ast.ParserSeparatedList{ |                 $$ = &ast.ParserSeparatedList{ | ||||||
|                     Items: []ast.Vertex{ |                     Items: []ast.Vertex{ | ||||||
|                         &ast.ExprArrayItem{ |                         &ast.ExprArrayItem{ | ||||||
|                             Position: yylex.(*Parser).builder.NewTokenNodePosition($1, $2), |  | ||||||
|                             Val: &ast.ExprReference{ |  | ||||||
|                             Position:     yylex.(*Parser).builder.NewTokenNodePosition($1, $2), |                             Position:     yylex.(*Parser).builder.NewTokenNodePosition($1, $2), | ||||||
|                             AmpersandTkn: $1, |                             AmpersandTkn: $1, | ||||||
|                                 Var:          $2, |                             Val:          $2, | ||||||
|                             }, |  | ||||||
|                         }, |                         }, | ||||||
|                     }, |                     }, | ||||||
|                 } |                 } | ||||||
|  | |||||||
| @ -34712,13 +34712,6 @@ func TestExprArray_Items(t *testing.T) { | |||||||
| 							}, | 							}, | ||||||
| 						}, | 						}, | ||||||
| 						&ast.ExprArrayItem{ | 						&ast.ExprArrayItem{ | ||||||
| 							Position: &position.Position{ |  | ||||||
| 								StartLine: 1, |  | ||||||
| 								EndLine:   1, |  | ||||||
| 								StartPos:  15, |  | ||||||
| 								EndPos:    18, |  | ||||||
| 							}, |  | ||||||
| 							Val: &ast.ExprReference{ |  | ||||||
| 							Position: &position.Position{ | 							Position: &position.Position{ | ||||||
| 								StartLine: 1, | 								StartLine: 1, | ||||||
| 								EndLine:   1, | 								EndLine:   1, | ||||||
| @ -34747,7 +34740,7 @@ func TestExprArray_Items(t *testing.T) { | |||||||
| 									}, | 									}, | ||||||
| 								}, | 								}, | ||||||
| 							}, | 							}, | ||||||
| 								Var: &ast.ExprVariable{ | 							Val: &ast.ExprVariable{ | ||||||
| 								Position: &position.Position{ | 								Position: &position.Position{ | ||||||
| 									StartLine: 1, | 									StartLine: 1, | ||||||
| 									EndLine:   1, | 									EndLine:   1, | ||||||
| @ -34775,7 +34768,6 @@ func TestExprArray_Items(t *testing.T) { | |||||||
| 								}, | 								}, | ||||||
| 							}, | 							}, | ||||||
| 						}, | 						}, | ||||||
| 						}, |  | ||||||
| 						&ast.ExprArrayItem{}, | 						&ast.ExprArrayItem{}, | ||||||
| 					}, | 					}, | ||||||
| 					SeparatorTkns: []*token.Token{ | 					SeparatorTkns: []*token.Token{ | ||||||
| @ -43977,13 +43969,6 @@ func TestExprShortArray_Items(t *testing.T) { | |||||||
| 							}, | 							}, | ||||||
| 						}, | 						}, | ||||||
| 						&ast.ExprArrayItem{ | 						&ast.ExprArrayItem{ | ||||||
| 							Position: &position.Position{ |  | ||||||
| 								StartLine: 1, |  | ||||||
| 								EndLine:   1, |  | ||||||
| 								StartPos:  10, |  | ||||||
| 								EndPos:    13, |  | ||||||
| 							}, |  | ||||||
| 							Val: &ast.ExprReference{ |  | ||||||
| 							Position: &position.Position{ | 							Position: &position.Position{ | ||||||
| 								StartLine: 1, | 								StartLine: 1, | ||||||
| 								EndLine:   1, | 								EndLine:   1, | ||||||
| @ -44012,7 +43997,7 @@ func TestExprShortArray_Items(t *testing.T) { | |||||||
| 									}, | 									}, | ||||||
| 								}, | 								}, | ||||||
| 							}, | 							}, | ||||||
| 								Var: &ast.ExprVariable{ | 							Val: &ast.ExprVariable{ | ||||||
| 								Position: &position.Position{ | 								Position: &position.Position{ | ||||||
| 									StartLine: 1, | 									StartLine: 1, | ||||||
| 									EndLine:   1, | 									EndLine:   1, | ||||||
| @ -44040,7 +44025,6 @@ func TestExprShortArray_Items(t *testing.T) { | |||||||
| 								}, | 								}, | ||||||
| 							}, | 							}, | ||||||
| 						}, | 						}, | ||||||
| 						}, |  | ||||||
| 						&ast.ExprArrayItem{}, | 						&ast.ExprArrayItem{}, | ||||||
| 					}, | 					}, | ||||||
| 					SeparatorTkns: []*token.Token{ | 					SeparatorTkns: []*token.Token{ | ||||||
|  | |||||||
							
								
								
									
										70
									
								
								internal/php7/php7.go
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										70
									
								
								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:4359 | // line internal/php7/php7.y:4353 | ||||||
| 
 | 
 | ||||||
| // line yacctab:1 | // line yacctab:1 | ||||||
| var yyExca = [...]int{ | var yyExca = [...]int{ | ||||||
| @ -6677,29 +6677,23 @@ yydefault: | |||||||
| 				Position:       yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[4].node), | 				Position:       yylex.(*Parser).builder.NewNodesPosition(yyDollar[1].node, yyDollar[4].node), | ||||||
| 				Key:            yyDollar[1].node, | 				Key:            yyDollar[1].node, | ||||||
| 				DoubleArrowTkn: yyDollar[2].token, | 				DoubleArrowTkn: yyDollar[2].token, | ||||||
| 				Val: &ast.ExprReference{ |  | ||||||
| 					Position:     yylex.(*Parser).builder.NewTokenNodePosition(yyDollar[3].token, yyDollar[4].node), |  | ||||||
| 				AmpersandTkn:   yyDollar[3].token, | 				AmpersandTkn:   yyDollar[3].token, | ||||||
| 					Var:          yyDollar[4].node, | 				Val:            yyDollar[4].node, | ||||||
| 				}, |  | ||||||
| 			} | 			} | ||||||
| 		} | 		} | ||||||
| 	case 466: | 	case 466: | ||||||
| 		yyDollar = yyS[yypt-2 : yypt+1] | 		yyDollar = yyS[yypt-2 : yypt+1] | ||||||
| 		// line internal/php7/php7.y:4008 | 		// line internal/php7/php7.y:4005 | ||||||
| 		{ | 		{ | ||||||
| 			yyVAL.node = &ast.ExprArrayItem{ | 			yyVAL.node = &ast.ExprArrayItem{ | ||||||
| 				Position: yylex.(*Parser).builder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node), |  | ||||||
| 				Val: &ast.ExprReference{ |  | ||||||
| 				Position:     yylex.(*Parser).builder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node), | 				Position:     yylex.(*Parser).builder.NewTokenNodePosition(yyDollar[1].token, yyDollar[2].node), | ||||||
| 				AmpersandTkn: yyDollar[1].token, | 				AmpersandTkn: yyDollar[1].token, | ||||||
| 					Var:          yyDollar[2].node, | 				Val:          yyDollar[2].node, | ||||||
| 				}, |  | ||||||
| 			} | 			} | ||||||
| 		} | 		} | ||||||
| 	case 467: | 	case 467: | ||||||
| 		yyDollar = yyS[yypt-2 : yypt+1] | 		yyDollar = yyS[yypt-2 : yypt+1] | ||||||
| 		// line internal/php7/php7.y:4019 | 		// line internal/php7/php7.y:4013 | ||||||
| 		{ | 		{ | ||||||
| 			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), | ||||||
| @ -6709,7 +6703,7 @@ yydefault: | |||||||
| 		} | 		} | ||||||
| 	case 468: | 	case 468: | ||||||
| 		yyDollar = yyS[yypt-6 : yypt+1] | 		yyDollar = yyS[yypt-6 : yypt+1] | ||||||
| 		// line internal/php7/php7.y:4027 | 		// line internal/php7/php7.y:4021 | ||||||
| 		{ | 		{ | ||||||
| 			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), | ||||||
| @ -6727,7 +6721,7 @@ yydefault: | |||||||
| 		} | 		} | ||||||
| 	case 469: | 	case 469: | ||||||
| 		yyDollar = yyS[yypt-4 : yypt+1] | 		yyDollar = yyS[yypt-4 : yypt+1] | ||||||
| 		// line internal/php7/php7.y:4043 | 		// line internal/php7/php7.y:4037 | ||||||
| 		{ | 		{ | ||||||
| 			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), | ||||||
| @ -6743,13 +6737,13 @@ yydefault: | |||||||
| 		} | 		} | ||||||
| 	case 470: | 	case 470: | ||||||
| 		yyDollar = yyS[yypt-2 : yypt+1] | 		yyDollar = yyS[yypt-2 : yypt+1] | ||||||
| 		// line internal/php7/php7.y:4060 | 		// line internal/php7/php7.y:4054 | ||||||
| 		{ | 		{ | ||||||
| 			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:4064 | 		// line internal/php7/php7.y:4058 | ||||||
| 		{ | 		{ | ||||||
| 			yyVAL.list = append( | 			yyVAL.list = append( | ||||||
| 				yyDollar[1].list, | 				yyDollar[1].list, | ||||||
| @ -6762,13 +6756,13 @@ yydefault: | |||||||
| 		} | 		} | ||||||
| 	case 472: | 	case 472: | ||||||
| 		yyDollar = yyS[yypt-1 : yypt+1] | 		yyDollar = yyS[yypt-1 : yypt+1] | ||||||
| 		// line internal/php7/php7.y:4075 | 		// line internal/php7/php7.y:4069 | ||||||
| 		{ | 		{ | ||||||
| 			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:4079 | 		// line internal/php7/php7.y:4073 | ||||||
| 		{ | 		{ | ||||||
| 			yyVAL.list = []ast.Vertex{ | 			yyVAL.list = []ast.Vertex{ | ||||||
| 				&ast.ScalarEncapsedStringPart{ | 				&ast.ScalarEncapsedStringPart{ | ||||||
| @ -6781,7 +6775,7 @@ yydefault: | |||||||
| 		} | 		} | ||||||
| 	case 474: | 	case 474: | ||||||
| 		yyDollar = yyS[yypt-1 : yypt+1] | 		yyDollar = yyS[yypt-1 : yypt+1] | ||||||
| 		// line internal/php7/php7.y:4093 | 		// line internal/php7/php7.y:4087 | ||||||
| 		{ | 		{ | ||||||
| 			yyVAL.node = &ast.ExprVariable{ | 			yyVAL.node = &ast.ExprVariable{ | ||||||
| 				Position: yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token), | 				Position: yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token), | ||||||
| @ -6794,7 +6788,7 @@ yydefault: | |||||||
| 		} | 		} | ||||||
| 	case 475: | 	case 475: | ||||||
| 		yyDollar = yyS[yypt-4 : yypt+1] | 		yyDollar = yyS[yypt-4 : yypt+1] | ||||||
| 		// line internal/php7/php7.y:4104 | 		// line internal/php7/php7.y:4098 | ||||||
| 		{ | 		{ | ||||||
| 			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), | ||||||
| @ -6813,7 +6807,7 @@ yydefault: | |||||||
| 		} | 		} | ||||||
| 	case 476: | 	case 476: | ||||||
| 		yyDollar = yyS[yypt-3 : yypt+1] | 		yyDollar = yyS[yypt-3 : yypt+1] | ||||||
| 		// line internal/php7/php7.y:4121 | 		// line internal/php7/php7.y:4115 | ||||||
| 		{ | 		{ | ||||||
| 			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), | ||||||
| @ -6835,7 +6829,7 @@ yydefault: | |||||||
| 		} | 		} | ||||||
| 	case 477: | 	case 477: | ||||||
| 		yyDollar = yyS[yypt-3 : yypt+1] | 		yyDollar = yyS[yypt-3 : yypt+1] | ||||||
| 		// line internal/php7/php7.y:4141 | 		// line internal/php7/php7.y:4135 | ||||||
| 		{ | 		{ | ||||||
| 			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), | ||||||
| @ -6849,7 +6843,7 @@ yydefault: | |||||||
| 		} | 		} | ||||||
| 	case 478: | 	case 478: | ||||||
| 		yyDollar = yyS[yypt-3 : yypt+1] | 		yyDollar = yyS[yypt-3 : yypt+1] | ||||||
| 		// line internal/php7/php7.y:4153 | 		// line internal/php7/php7.y:4147 | ||||||
| 		{ | 		{ | ||||||
| 			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), | ||||||
| @ -6867,7 +6861,7 @@ yydefault: | |||||||
| 		} | 		} | ||||||
| 	case 479: | 	case 479: | ||||||
| 		yyDollar = yyS[yypt-6 : yypt+1] | 		yyDollar = yyS[yypt-6 : yypt+1] | ||||||
| 		// line internal/php7/php7.y:4169 | 		// line internal/php7/php7.y:4163 | ||||||
| 		{ | 		{ | ||||||
| 			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), | ||||||
| @ -6891,7 +6885,7 @@ yydefault: | |||||||
| 		} | 		} | ||||||
| 	case 480: | 	case 480: | ||||||
| 		yyDollar = yyS[yypt-3 : yypt+1] | 		yyDollar = yyS[yypt-3 : yypt+1] | ||||||
| 		// line internal/php7/php7.y:4191 | 		// line internal/php7/php7.y:4185 | ||||||
| 		{ | 		{ | ||||||
| 			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), | ||||||
| @ -6902,7 +6896,7 @@ yydefault: | |||||||
| 		} | 		} | ||||||
| 	case 481: | 	case 481: | ||||||
| 		yyDollar = yyS[yypt-1 : yypt+1] | 		yyDollar = yyS[yypt-1 : yypt+1] | ||||||
| 		// line internal/php7/php7.y:4203 | 		// line internal/php7/php7.y:4197 | ||||||
| 		{ | 		{ | ||||||
| 			yyVAL.node = &ast.ScalarString{ | 			yyVAL.node = &ast.ScalarString{ | ||||||
| 				Position:  yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token), | 				Position:  yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token), | ||||||
| @ -6912,7 +6906,7 @@ yydefault: | |||||||
| 		} | 		} | ||||||
| 	case 482: | 	case 482: | ||||||
| 		yyDollar = yyS[yypt-1 : yypt+1] | 		yyDollar = yyS[yypt-1 : yypt+1] | ||||||
| 		// line internal/php7/php7.y:4211 | 		// line internal/php7/php7.y:4205 | ||||||
| 		{ | 		{ | ||||||
| 			// 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 { | ||||||
| @ -6931,7 +6925,7 @@ yydefault: | |||||||
| 		} | 		} | ||||||
| 	case 483: | 	case 483: | ||||||
| 		yyDollar = yyS[yypt-2 : yypt+1] | 		yyDollar = yyS[yypt-2 : yypt+1] | ||||||
| 		// line internal/php7/php7.y:4228 | 		// line internal/php7/php7.y:4222 | ||||||
| 		{ | 		{ | ||||||
| 			_, err := strconv.Atoi(string(yyDollar[2].token.Value)) | 			_, err := strconv.Atoi(string(yyDollar[2].token.Value)) | ||||||
| 			isInt := err == nil | 			isInt := err == nil | ||||||
| @ -6957,7 +6951,7 @@ yydefault: | |||||||
| 		} | 		} | ||||||
| 	case 484: | 	case 484: | ||||||
| 		yyDollar = yyS[yypt-1 : yypt+1] | 		yyDollar = yyS[yypt-1 : yypt+1] | ||||||
| 		// line internal/php7/php7.y:4252 | 		// line internal/php7/php7.y:4246 | ||||||
| 		{ | 		{ | ||||||
| 			yyVAL.node = &ast.ExprVariable{ | 			yyVAL.node = &ast.ExprVariable{ | ||||||
| 				Position: yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token), | 				Position: yylex.(*Parser).builder.NewTokenPosition(yyDollar[1].token), | ||||||
| @ -6970,7 +6964,7 @@ yydefault: | |||||||
| 		} | 		} | ||||||
| 	case 485: | 	case 485: | ||||||
| 		yyDollar = yyS[yypt-5 : yypt+1] | 		yyDollar = yyS[yypt-5 : yypt+1] | ||||||
| 		// line internal/php7/php7.y:4266 | 		// line internal/php7/php7.y:4260 | ||||||
| 		{ | 		{ | ||||||
| 			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) | ||||||
| @ -6987,7 +6981,7 @@ yydefault: | |||||||
| 		} | 		} | ||||||
| 	case 486: | 	case 486: | ||||||
| 		yyDollar = yyS[yypt-4 : yypt+1] | 		yyDollar = yyS[yypt-4 : yypt+1] | ||||||
| 		// line internal/php7/php7.y:4281 | 		// line internal/php7/php7.y:4275 | ||||||
| 		{ | 		{ | ||||||
| 			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), | ||||||
| @ -6999,7 +6993,7 @@ yydefault: | |||||||
| 		} | 		} | ||||||
| 	case 487: | 	case 487: | ||||||
| 		yyDollar = yyS[yypt-2 : yypt+1] | 		yyDollar = yyS[yypt-2 : yypt+1] | ||||||
| 		// line internal/php7/php7.y:4291 | 		// line internal/php7/php7.y:4285 | ||||||
| 		{ | 		{ | ||||||
| 			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), | ||||||
| @ -7009,7 +7003,7 @@ yydefault: | |||||||
| 		} | 		} | ||||||
| 	case 488: | 	case 488: | ||||||
| 		yyDollar = yyS[yypt-2 : yypt+1] | 		yyDollar = yyS[yypt-2 : yypt+1] | ||||||
| 		// line internal/php7/php7.y:4299 | 		// line internal/php7/php7.y:4293 | ||||||
| 		{ | 		{ | ||||||
| 			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), | ||||||
| @ -7019,7 +7013,7 @@ yydefault: | |||||||
| 		} | 		} | ||||||
| 	case 489: | 	case 489: | ||||||
| 		yyDollar = yyS[yypt-4 : yypt+1] | 		yyDollar = yyS[yypt-4 : yypt+1] | ||||||
| 		// line internal/php7/php7.y:4307 | 		// line internal/php7/php7.y:4301 | ||||||
| 		{ | 		{ | ||||||
| 			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), | ||||||
| @ -7031,7 +7025,7 @@ yydefault: | |||||||
| 		} | 		} | ||||||
| 	case 490: | 	case 490: | ||||||
| 		yyDollar = yyS[yypt-2 : yypt+1] | 		yyDollar = yyS[yypt-2 : yypt+1] | ||||||
| 		// line internal/php7/php7.y:4317 | 		// line internal/php7/php7.y:4311 | ||||||
| 		{ | 		{ | ||||||
| 			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), | ||||||
| @ -7041,7 +7035,7 @@ yydefault: | |||||||
| 		} | 		} | ||||||
| 	case 491: | 	case 491: | ||||||
| 		yyDollar = yyS[yypt-2 : yypt+1] | 		yyDollar = yyS[yypt-2 : yypt+1] | ||||||
| 		// line internal/php7/php7.y:4325 | 		// line internal/php7/php7.y:4319 | ||||||
| 		{ | 		{ | ||||||
| 			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), | ||||||
| @ -7051,7 +7045,7 @@ yydefault: | |||||||
| 		} | 		} | ||||||
| 	case 492: | 	case 492: | ||||||
| 		yyDollar = yyS[yypt-1 : yypt+1] | 		yyDollar = yyS[yypt-1 : yypt+1] | ||||||
| 		// line internal/php7/php7.y:4336 | 		// line internal/php7/php7.y:4330 | ||||||
| 		{ | 		{ | ||||||
| 			yyVAL.node = &ast.ParserSeparatedList{ | 			yyVAL.node = &ast.ParserSeparatedList{ | ||||||
| 				Items: []ast.Vertex{yyDollar[1].node}, | 				Items: []ast.Vertex{yyDollar[1].node}, | ||||||
| @ -7059,7 +7053,7 @@ yydefault: | |||||||
| 		} | 		} | ||||||
| 	case 493: | 	case 493: | ||||||
| 		yyDollar = yyS[yypt-3 : yypt+1] | 		yyDollar = yyS[yypt-3 : yypt+1] | ||||||
| 		// line internal/php7/php7.y:4342 | 		// line internal/php7/php7.y:4336 | ||||||
| 		{ | 		{ | ||||||
| 			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) | ||||||
| @ -7068,7 +7062,7 @@ yydefault: | |||||||
| 		} | 		} | ||||||
| 	case 494: | 	case 494: | ||||||
| 		yyDollar = yyS[yypt-1 : yypt+1] | 		yyDollar = yyS[yypt-1 : yypt+1] | ||||||
| 		// line internal/php7/php7.y:4352 | 		// line internal/php7/php7.y:4346 | ||||||
| 		{ | 		{ | ||||||
| 			yyVAL.node = yyDollar[1].node | 			yyVAL.node = yyDollar[1].node | ||||||
| 		} | 		} | ||||||
|  | |||||||
| @ -3997,22 +3997,16 @@ array_pair: | |||||||
|                     Position:       yylex.(*Parser).builder.NewNodesPosition($1, $4), |                     Position:       yylex.(*Parser).builder.NewNodesPosition($1, $4), | ||||||
|                     Key:            $1, |                     Key:            $1, | ||||||
|                     DoubleArrowTkn: $2, |                     DoubleArrowTkn: $2, | ||||||
|                     Val: &ast.ExprReference{ |  | ||||||
|                         Position: yylex.(*Parser).builder.NewTokenNodePosition($3, $4), |  | ||||||
|                     AmpersandTkn:   $3, |                     AmpersandTkn:   $3, | ||||||
|                         Var:          $4, |                     Val:            $4, | ||||||
|                     }, |  | ||||||
|                 } |                 } | ||||||
|             } |             } | ||||||
|     |   '&' variable |     |   '&' variable | ||||||
|             { |             { | ||||||
|                 $$ = &ast.ExprArrayItem{ |                 $$ = &ast.ExprArrayItem{ | ||||||
|                     Position: yylex.(*Parser).builder.NewTokenNodePosition($1, $2), |  | ||||||
|                     Val: &ast.ExprReference{ |  | ||||||
|                     Position:     yylex.(*Parser).builder.NewTokenNodePosition($1, $2), |                     Position:     yylex.(*Parser).builder.NewTokenNodePosition($1, $2), | ||||||
|                     AmpersandTkn: $1, |                     AmpersandTkn: $1, | ||||||
|                         Var:          $2, |                     Val:          $2, | ||||||
|                     }, |  | ||||||
|                 } |                 } | ||||||
|             } |             } | ||||||
|     |   T_ELLIPSIS expr |     |   T_ELLIPSIS expr | ||||||
|  | |||||||
| @ -1177,6 +1177,7 @@ type ExprArrayItem struct { | |||||||
| 	EllipsisTkn    *token.Token | 	EllipsisTkn    *token.Token | ||||||
| 	Key            Vertex | 	Key            Vertex | ||||||
| 	DoubleArrowTkn *token.Token | 	DoubleArrowTkn *token.Token | ||||||
|  | 	AmpersandTkn   *token.Token | ||||||
| 	Val            Vertex | 	Val            Vertex | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -1056,6 +1056,7 @@ func (v *Dumper) ExprArrayItem(n *ast.ExprArrayItem) { | |||||||
| 	v.dumpToken("EllipsisTkn", n.EllipsisTkn) | 	v.dumpToken("EllipsisTkn", n.EllipsisTkn) | ||||||
| 	v.dumpVertex("Key", n.Key) | 	v.dumpVertex("Key", n.Key) | ||||||
| 	v.dumpToken("DoubleArrowTkn", n.DoubleArrowTkn) | 	v.dumpToken("DoubleArrowTkn", n.DoubleArrowTkn) | ||||||
|  | 	v.dumpToken("AmpersandTkn", n.AmpersandTkn) | ||||||
| 	v.dumpVertex("Val", n.Val) | 	v.dumpVertex("Val", n.Val) | ||||||
| 
 | 
 | ||||||
| 	v.indent-- | 	v.indent-- | ||||||
|  | |||||||
| @ -641,6 +641,7 @@ func (p *printer) ExprArrayItem(n *ast.ExprArrayItem) { | |||||||
| 	p.printToken(n.EllipsisTkn, nil) | 	p.printToken(n.EllipsisTkn, nil) | ||||||
| 	p.printNode(n.Key) | 	p.printNode(n.Key) | ||||||
| 	p.printToken(n.DoubleArrowTkn, p.ifNode(n.Key, []byte("=>"))) | 	p.printToken(n.DoubleArrowTkn, p.ifNode(n.Key, []byte("=>"))) | ||||||
|  | 	p.printToken(n.AmpersandTkn, nil) | ||||||
| 	p.printNode(n.Val) | 	p.printNode(n.Val) | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -1559,9 +1559,31 @@ func TestPrinterPrintExprArrayItem(t *testing.T) { | |||||||
| 
 | 
 | ||||||
| 	p := visitor.NewPrinter(o).WithState(visitor.PrinterStatePHP) | 	p := visitor.NewPrinter(o).WithState(visitor.PrinterStatePHP) | ||||||
| 	n := &ast.ExprArrayItem{ | 	n := &ast.ExprArrayItem{ | ||||||
| 		Val: &ast.ExprReference{Var: &ast.ExprVariable{ | 		Val: &ast.ExprVariable{ | ||||||
| 			VarName: &ast.Identifier{Value: []byte("$world")}, | 			VarName: &ast.Identifier{Value: []byte("$world")}, | ||||||
| 		}}, | 		}, | ||||||
|  | 	} | ||||||
|  | 	n.Accept(p) | ||||||
|  | 
 | ||||||
|  | 	expected := `$world` | ||||||
|  | 	actual := o.String() | ||||||
|  | 
 | ||||||
|  | 	if expected != actual { | ||||||
|  | 		t.Errorf("\nexpected: %s\ngot: %s\n", expected, actual) | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | func TestPrinterPrintExprArrayItem_Reference(t *testing.T) { | ||||||
|  | 	o := bytes.NewBufferString("") | ||||||
|  | 
 | ||||||
|  | 	p := visitor.NewPrinter(o).WithState(visitor.PrinterStatePHP) | ||||||
|  | 	n := &ast.ExprArrayItem{ | ||||||
|  | 		AmpersandTkn: &token.Token{ | ||||||
|  | 			Value: []byte("&"), | ||||||
|  | 		}, | ||||||
|  | 		Val: &ast.ExprVariable{ | ||||||
|  | 			VarName: &ast.Identifier{Value: []byte("$world")}, | ||||||
|  | 		}, | ||||||
| 	} | 	} | ||||||
| 	n.Accept(p) | 	n.Accept(p) | ||||||
| 
 | 
 | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user