[refactoring] remove *FreeFloating* functions
This commit is contained in:
		
							parent
							
								
									af968a7c3b
								
							
						
					
					
						commit
						94897d8c66
					
				| @ -1,8 +1,6 @@ | ||||
| package php5 | ||||
| 
 | ||||
| import ( | ||||
| 	"bytes" | ||||
| 
 | ||||
| 	"github.com/z7zmey/php-parser/internal/scanner" | ||||
| 	"github.com/z7zmey/php-parser/pkg/ast" | ||||
| 	"github.com/z7zmey/php-parser/pkg/errors" | ||||
| @ -62,110 +60,3 @@ func lastNode(nn []ast.Vertex) ast.Vertex { | ||||
| 	} | ||||
| 	return nn[len(nn)-1] | ||||
| } | ||||
| 
 | ||||
| func (p *Parser) MoveFreeFloating(src ast.Vertex, dst ast.Vertex) { | ||||
| 	if _, ok := src.GetNode().Tokens[token.Start]; !ok { | ||||
| 		return | ||||
| 	} | ||||
| 
 | ||||
| 	if src.GetNode().Tokens == nil { | ||||
| 		return | ||||
| 	} | ||||
| 
 | ||||
| 	dstCollection := &dst.GetNode().Tokens | ||||
| 	if *dstCollection == nil { | ||||
| 		*dstCollection = make(token.Collection) | ||||
| 	} | ||||
| 
 | ||||
| 	(*dstCollection)[token.Start] = src.GetNode().Tokens[token.Start] | ||||
| 	delete(src.GetNode().Tokens, token.Start) | ||||
| } | ||||
| 
 | ||||
| func (p *Parser) setFreeFloating(dst ast.Vertex, pos token.Position, tokens []*token.Token) { | ||||
| 	if len(tokens) == 0 { | ||||
| 		return | ||||
| 	} | ||||
| 
 | ||||
| 	dstCollection := &dst.GetNode().Tokens | ||||
| 	if *dstCollection == nil { | ||||
| 		*dstCollection = make(token.Collection) | ||||
| 	} | ||||
| 
 | ||||
| 	l := len(tokens) | ||||
| 	for _, v := range tokens[0 : l-1] { | ||||
| 		(*dstCollection)[pos] = append((*dstCollection)[pos], v) | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| func (p *Parser) setFreeFloatingTokens(dst ast.Vertex, pos token.Position, tokens []*token.Token) { | ||||
| 	if len(tokens) == 0 { | ||||
| 		return | ||||
| 	} | ||||
| 
 | ||||
| 	dstCollection := &dst.GetNode().Tokens | ||||
| 	if *dstCollection == nil { | ||||
| 		*dstCollection = make(token.Collection) | ||||
| 	} | ||||
| 
 | ||||
| 	(*dstCollection)[pos] = make([]*token.Token, 0) | ||||
| 
 | ||||
| 	for _, v := range tokens { | ||||
| 		(*dstCollection)[pos] = append((*dstCollection)[pos], v) | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| func (p *Parser) setToken(dst ast.Vertex, pos token.Position, tokens []*token.Token) { | ||||
| 	if len(tokens) == 0 { | ||||
| 		return | ||||
| 	} | ||||
| 
 | ||||
| 	dstCollection := &dst.GetNode().Tokens | ||||
| 	if *dstCollection == nil { | ||||
| 		*dstCollection = make(token.Collection) | ||||
| 	} | ||||
| 
 | ||||
| 	l := len(tokens) | ||||
| 	(*dstCollection)[pos] = append((*dstCollection)[pos], tokens[l-1]) | ||||
| } | ||||
| 
 | ||||
| func (p *Parser) splitSemiColonAndPhpCloseTag(htmlNode ast.Vertex, prevNode ast.Vertex) { | ||||
| 	if _, ok := prevNode.GetNode().Tokens[token.SemiColon]; !ok { | ||||
| 		return | ||||
| 	} | ||||
| 
 | ||||
| 	semiColon := prevNode.GetNode().Tokens[token.SemiColon] | ||||
| 	delete(prevNode.GetNode().Tokens, token.SemiColon) | ||||
| 	if len(semiColon) == 0 { | ||||
| 		return | ||||
| 	} | ||||
| 
 | ||||
| 	if semiColon[0].Value[0] == ';' { | ||||
| 		p.setFreeFloatingTokens(prevNode, token.SemiColon, []*token.Token{ | ||||
| 			{ | ||||
| 				ID:    token.ID(';'), | ||||
| 				Value: semiColon[0].Value[0:1], | ||||
| 			}, | ||||
| 		}) | ||||
| 	} | ||||
| 
 | ||||
| 	vlen := len(semiColon[0].Value) | ||||
| 	tlen := 2 | ||||
| 	if bytes.HasSuffix(semiColon[0].Value, []byte("?>\n")) { | ||||
| 		tlen = 3 | ||||
| 	} | ||||
| 
 | ||||
| 	phpCloseTag := []*token.Token{} | ||||
| 	if vlen-tlen > 1 { | ||||
| 		phpCloseTag = append(phpCloseTag, &token.Token{ | ||||
| 			ID:    token.T_WHITESPACE, | ||||
| 			Value: semiColon[0].Value[1 : vlen-tlen], | ||||
| 		}) | ||||
| 	} | ||||
| 
 | ||||
| 	phpCloseTag = append(phpCloseTag, &token.Token{ | ||||
| 		ID:    T_CLOSE_TAG, | ||||
| 		Value: semiColon[0].Value[vlen-tlen:], | ||||
| 	}) | ||||
| 
 | ||||
| 	p.setFreeFloatingTokens(htmlNode, token.Start, append(phpCloseTag, htmlNode.GetNode().Tokens[token.Start]...)) | ||||
| } | ||||
|  | ||||
							
								
								
									
										1129
									
								
								internal/php5/php5.go
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										1129
									
								
								internal/php5/php5.go
									
									
									
										generated
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| @ -280,11 +280,6 @@ start: | ||||
| top_statement_list: | ||||
|         top_statement_list top_statement | ||||
|             { | ||||
|                 if inlineHtmlNode, ok := $2.(*ast.StmtInlineHtml); ok && len($1) > 0 { | ||||
|                     prevNode := lastNode($1) | ||||
|                     yylex.(*Parser).splitSemiColonAndPhpCloseTag(inlineHtmlNode, prevNode) | ||||
|                 } | ||||
| 
 | ||||
|                 if $2 != nil { | ||||
|                     $$ = append($1, $2) | ||||
|                 } | ||||
| @ -744,8 +739,6 @@ constant_declaration: | ||||
|                 }) | ||||
| 
 | ||||
|                 $$ = $1 | ||||
| 
 | ||||
|                 yylex.(*Parser).setFreeFloating(lastNode($$.(*ast.StmtConstList).Consts).(*ast.StmtConstant).Name, token.Start, $3.SkippedTokens) | ||||
|             } | ||||
|     |   T_CONST T_STRING '=' static_scalar | ||||
|             { | ||||
| @ -771,19 +764,12 @@ constant_declaration: | ||||
|                         }, | ||||
|                     }, | ||||
|                 } | ||||
| 
 | ||||
|                 yylex.(*Parser).setFreeFloating(lastNode($$.(*ast.StmtConstList).Consts).(*ast.StmtConstant).Name, token.Start, $2.SkippedTokens) | ||||
|             } | ||||
| ; | ||||
| 
 | ||||
| inner_statement_list: | ||||
|         inner_statement_list inner_statement | ||||
|             { | ||||
|                 if inlineHtmlNode, ok := $2.(*ast.StmtInlineHtml); ok && len($1) > 0 { | ||||
|                     prevNode := lastNode($1) | ||||
|                     yylex.(*Parser).splitSemiColonAndPhpCloseTag(inlineHtmlNode, prevNode) | ||||
|                 } | ||||
| 
 | ||||
|                 if $2 != nil { | ||||
|                     $$ = append($1, $2) | ||||
|                 } | ||||
| @ -1752,8 +1738,6 @@ declare_list: | ||||
|                         }, | ||||
|                     }, | ||||
|                 } | ||||
| 
 | ||||
|                 yylex.(*Parser).setFreeFloating(lastNode($$.(*ast.ParserSeparatedList).Items).(*ast.StmtConstant).Name, token.Start, $1.SkippedTokens) | ||||
|             } | ||||
|     |   declare_list ',' T_STRING '=' static_scalar | ||||
|             { | ||||
| @ -1777,8 +1761,6 @@ declare_list: | ||||
|                 ) | ||||
| 
 | ||||
|                 $$ = $1 | ||||
| 
 | ||||
|                 yylex.(*Parser).setFreeFloating(lastNode($$.(*ast.ParserSeparatedList).Items).(*ast.StmtConstant).Name, token.Start, $3.SkippedTokens) | ||||
|             } | ||||
| ; | ||||
| 
 | ||||
| @ -2923,8 +2905,6 @@ class_constant_declaration: | ||||
|                 }) | ||||
| 
 | ||||
|                 $$ = $1 | ||||
| 
 | ||||
|                 yylex.(*Parser).setFreeFloating(lastNode($$.(*ast.StmtClassConstList).Consts).(*ast.StmtConstant).Name, token.Start, $3.SkippedTokens) | ||||
|             } | ||||
|     |   T_CONST T_STRING '=' static_scalar | ||||
|             { | ||||
| @ -2950,8 +2930,6 @@ class_constant_declaration: | ||||
|                         }, | ||||
|                     }, | ||||
|                 } | ||||
| 
 | ||||
|                 yylex.(*Parser).setFreeFloating(lastNode($$.(*ast.StmtClassConstList).Consts).(*ast.StmtConstant).Name, token.Start, $2.SkippedTokens) | ||||
|             } | ||||
| ; | ||||
| 
 | ||||
| @ -3624,7 +3602,6 @@ expr_without_variable: | ||||
|                     OpTkn: $2, | ||||
|                     Right: $3, | ||||
|                 } | ||||
|                 yylex.(*Parser).setToken($$, token.Equal, $2.SkippedTokens) | ||||
|             } | ||||
|     |   expr '<' expr | ||||
|             { | ||||
| @ -4416,13 +4393,11 @@ dynamic_class_name_reference: | ||||
|                             nn.Var = $$ | ||||
|                             $$.GetNode().Position = position.NewNodesPosition($$, nn) | ||||
|                             $$ = nn | ||||
|                             yylex.(*Parser).MoveFreeFloating(nn.Var, $$) | ||||
| 
 | ||||
|                         case *ast.ExprPropertyFetch: | ||||
|                             nn.Var = $$ | ||||
|                             $$.GetNode().Position = position.NewNodesPosition($$, nn) | ||||
|                             $$ = nn | ||||
|                             yylex.(*Parser).MoveFreeFloating(nn.Var, $$) | ||||
|                     } | ||||
|                 } | ||||
| 
 | ||||
| @ -4432,13 +4407,11 @@ dynamic_class_name_reference: | ||||
|                             nn.Var = $$ | ||||
|                             $$.GetNode().Position = position.NewNodesPosition($$, nn) | ||||
|                             $$ = nn | ||||
|                             yylex.(*Parser).MoveFreeFloating(nn.Var, $$) | ||||
| 
 | ||||
|                         case *ast.ExprPropertyFetch: | ||||
|                             nn.Var = $$ | ||||
|                             $$.GetNode().Position = position.NewNodesPosition($$, nn) | ||||
|                             $$ = nn | ||||
|                             yylex.(*Parser).MoveFreeFloating(nn.Var, $$) | ||||
|                     } | ||||
|                 } | ||||
|             } | ||||
| @ -5046,7 +5019,6 @@ static_operation: | ||||
|                     OpTkn: $2, | ||||
|                     Right: $3, | ||||
|                 } | ||||
|                 yylex.(*Parser).setToken($$, token.Equal, $2.SkippedTokens) | ||||
|             } | ||||
|     |   static_scalar_value '<' static_scalar_value | ||||
|             { | ||||
| @ -6333,12 +6305,6 @@ encaps_var_offset: | ||||
|                         Value:     $1.Value, | ||||
|                     } | ||||
|                 } | ||||
| 
 | ||||
|                 // save position | ||||
|                 $$.GetNode().Position = position.NewTokenPosition($1) | ||||
| 
 | ||||
|                 // save comments | ||||
|                 yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens) | ||||
|             } | ||||
|     |   T_VARIABLE | ||||
|             { | ||||
|  | ||||
| @ -1,8 +1,6 @@ | ||||
| package php7 | ||||
| 
 | ||||
| import ( | ||||
| 	"bytes" | ||||
| 
 | ||||
| 	"github.com/z7zmey/php-parser/internal/scanner" | ||||
| 	"github.com/z7zmey/php-parser/pkg/ast" | ||||
| 	"github.com/z7zmey/php-parser/pkg/errors" | ||||
| @ -62,110 +60,3 @@ func lastNode(nn []ast.Vertex) ast.Vertex { | ||||
| 	} | ||||
| 	return nn[len(nn)-1] | ||||
| } | ||||
| 
 | ||||
| func (p *Parser) MoveFreeFloating(src ast.Vertex, dst ast.Vertex) { | ||||
| 	if _, ok := src.GetNode().Tokens[token.Start]; !ok { | ||||
| 		return | ||||
| 	} | ||||
| 
 | ||||
| 	if src.GetNode().Tokens == nil { | ||||
| 		return | ||||
| 	} | ||||
| 
 | ||||
| 	dstCollection := &dst.GetNode().Tokens | ||||
| 	if *dstCollection == nil { | ||||
| 		*dstCollection = make(token.Collection) | ||||
| 	} | ||||
| 
 | ||||
| 	(*dstCollection)[token.Start] = src.GetNode().Tokens[token.Start] | ||||
| 	delete(src.GetNode().Tokens, token.Start) | ||||
| } | ||||
| 
 | ||||
| func (p *Parser) setFreeFloating(dst ast.Vertex, pos token.Position, tokens []*token.Token) { | ||||
| 	if len(tokens) == 0 { | ||||
| 		return | ||||
| 	} | ||||
| 
 | ||||
| 	dstCollection := &dst.GetNode().Tokens | ||||
| 	if *dstCollection == nil { | ||||
| 		*dstCollection = make(token.Collection) | ||||
| 	} | ||||
| 
 | ||||
| 	l := len(tokens) | ||||
| 	for _, v := range tokens[0 : l-1] { | ||||
| 		(*dstCollection)[pos] = append((*dstCollection)[pos], v) | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| func (p *Parser) setFreeFloatingTokens(dst ast.Vertex, pos token.Position, tokens []*token.Token) { | ||||
| 	if len(tokens) == 0 { | ||||
| 		return | ||||
| 	} | ||||
| 
 | ||||
| 	dstCollection := &dst.GetNode().Tokens | ||||
| 	if *dstCollection == nil { | ||||
| 		*dstCollection = make(token.Collection) | ||||
| 	} | ||||
| 
 | ||||
| 	(*dstCollection)[pos] = make([]*token.Token, 0) | ||||
| 
 | ||||
| 	for _, v := range tokens { | ||||
| 		(*dstCollection)[pos] = append((*dstCollection)[pos], v) | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| func (p *Parser) setToken(dst ast.Vertex, pos token.Position, tokens []*token.Token) { | ||||
| 	if len(tokens) == 0 { | ||||
| 		return | ||||
| 	} | ||||
| 
 | ||||
| 	dstCollection := &dst.GetNode().Tokens | ||||
| 	if *dstCollection == nil { | ||||
| 		*dstCollection = make(token.Collection) | ||||
| 	} | ||||
| 
 | ||||
| 	l := len(tokens) | ||||
| 	(*dstCollection)[pos] = append((*dstCollection)[pos], tokens[l-1]) | ||||
| } | ||||
| 
 | ||||
| func (p *Parser) splitSemiColonAndPhpCloseTag(htmlNode ast.Vertex, prevNode ast.Vertex) { | ||||
| 	if _, ok := prevNode.GetNode().Tokens[token.SemiColon]; !ok { | ||||
| 		return | ||||
| 	} | ||||
| 
 | ||||
| 	semiColon := prevNode.GetNode().Tokens[token.SemiColon] | ||||
| 	delete(prevNode.GetNode().Tokens, token.SemiColon) | ||||
| 	if len(semiColon) == 0 { | ||||
| 		return | ||||
| 	} | ||||
| 
 | ||||
| 	if semiColon[0].Value[0] == ';' { | ||||
| 		p.setFreeFloatingTokens(prevNode, token.SemiColon, []*token.Token{ | ||||
| 			{ | ||||
| 				ID:    token.ID(';'), | ||||
| 				Value: semiColon[0].Value[0:1], | ||||
| 			}, | ||||
| 		}) | ||||
| 	} | ||||
| 
 | ||||
| 	vlen := len(semiColon[0].Value) | ||||
| 	tlen := 2 | ||||
| 	if bytes.HasSuffix(semiColon[0].Value, []byte("?>\n")) { | ||||
| 		tlen = 3 | ||||
| 	} | ||||
| 
 | ||||
| 	phpCloseTag := []*token.Token{} | ||||
| 	if vlen-tlen > 1 { | ||||
| 		phpCloseTag = append(phpCloseTag, &token.Token{ | ||||
| 			ID:    token.T_WHITESPACE, | ||||
| 			Value: semiColon[0].Value[1 : vlen-tlen], | ||||
| 		}) | ||||
| 	} | ||||
| 
 | ||||
| 	phpCloseTag = append(phpCloseTag, &token.Token{ | ||||
| 		ID:    T_CLOSE_TAG, | ||||
| 		Value: semiColon[0].Value[vlen-tlen:], | ||||
| 	}) | ||||
| 
 | ||||
| 	p.setFreeFloatingTokens(htmlNode, token.Start, append(phpCloseTag, htmlNode.GetNode().Tokens[token.Start]...)) | ||||
| } | ||||
|  | ||||
							
								
								
									
										928
									
								
								internal/php7/php7.go
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										928
									
								
								internal/php7/php7.go
									
									
									
										generated
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| @ -329,11 +329,6 @@ identifier: | ||||
| top_statement_list: | ||||
|         top_statement_list top_statement | ||||
|             { | ||||
|                 if inlineHtmlNode, ok := $2.(*ast.StmtInlineHtml); ok && len($1) > 0 { | ||||
|                     prevNode := lastNode($1) | ||||
|                     yylex.(*Parser).splitSemiColonAndPhpCloseTag(inlineHtmlNode, prevNode) | ||||
|                 } | ||||
| 
 | ||||
|                 if $2 != nil { | ||||
|                     $$ = append($1, $2) | ||||
|                 } | ||||
| @ -796,11 +791,6 @@ const_list: | ||||
| inner_statement_list: | ||||
|         inner_statement_list inner_statement | ||||
|             { | ||||
|                 if inlineHtmlNode, ok := $2.(*ast.StmtInlineHtml); ok && len($1) > 0 { | ||||
|                     prevNode := lastNode($1) | ||||
|                     yylex.(*Parser).splitSemiColonAndPhpCloseTag(inlineHtmlNode, prevNode) | ||||
|                 } | ||||
| 
 | ||||
|                 if $2 != nil { | ||||
|                     $$ = append($1, $2) | ||||
|                 } | ||||
| @ -2633,8 +2623,6 @@ class_const_decl: | ||||
|                     EqualTkn: $2, | ||||
|                     Expr:     $3, | ||||
|                 } | ||||
| 
 | ||||
|                 yylex.(*Parser).setFreeFloating($$.(*ast.StmtConstant).Name, token.Start, $1.SkippedTokens) | ||||
|             } | ||||
| ; | ||||
| 
 | ||||
| @ -2655,8 +2643,6 @@ const_decl: | ||||
|                     EqualTkn: $2, | ||||
|                     Expr:     $3, | ||||
|                 } | ||||
| 
 | ||||
|                 yylex.(*Parser).setFreeFloating($$.(*ast.StmtConstant).Name, token.Start, $1.SkippedTokens) | ||||
|             } | ||||
| ; | ||||
| 
 | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user