[refactoring] update ast structure of "HaltCompiler" node
This commit is contained in:
		
							parent
							
								
									c1b3e6f5b2
								
							
						
					
					
						commit
						0285900fe5
					
				
							
								
								
									
										1056
									
								
								internal/php5/php5.go
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										1056
									
								
								internal/php5/php5.go
									
									
									
										generated
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| @ -344,14 +344,15 @@ top_statement: | ||||
|             } | ||||
|     |   T_HALT_COMPILER '(' ')' ';' | ||||
|             { | ||||
|                 $$ = &ast.StmtHaltCompiler{ast.Node{}} | ||||
| 
 | ||||
|                 // save position | ||||
|                 $$.GetNode().Position = position.NewTokensPosition($1, $4) | ||||
| 
 | ||||
|                 // save comments | ||||
|                 yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens) | ||||
|                 yylex.(*Parser).setFreeFloatingTokens($$, token.End, append($2.SkippedTokens, append($3.SkippedTokens, $4.SkippedTokens...)...)) | ||||
|                 $$ = &ast.StmtHaltCompiler{ | ||||
|                     Node: ast.Node{ | ||||
|                         Position: position.NewTokensPosition($1, $4), | ||||
|                     }, | ||||
|                     HaltCompilerTkn:     $1, | ||||
|                     OpenParenthesisTkn:  $2, | ||||
|                     CloseParenthesisTkn: $3, | ||||
|                     SemiColonTkn:        $4, | ||||
|                 } | ||||
|             } | ||||
|     |   T_NAMESPACE namespace_name ';' | ||||
|             { | ||||
| @ -799,14 +800,15 @@ inner_statement: | ||||
|             } | ||||
|     |   T_HALT_COMPILER '(' ')' ';' | ||||
|             { | ||||
|                 $$ = &ast.StmtHaltCompiler{ast.Node{}} | ||||
| 
 | ||||
|                 // save position | ||||
|                 $$.GetNode().Position = position.NewTokensPosition($1, $4) | ||||
| 
 | ||||
|                 // save comments | ||||
|                 yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens) | ||||
|                 yylex.(*Parser).setFreeFloatingTokens($$, token.End, append($2.SkippedTokens, append($3.SkippedTokens, $4.SkippedTokens...)...)) | ||||
|                 $$ = &ast.StmtHaltCompiler{ | ||||
|                     Node: ast.Node{ | ||||
|                         Position: position.NewTokensPosition($1, $4), | ||||
|                     }, | ||||
|                     HaltCompilerTkn:     $1, | ||||
|                     OpenParenthesisTkn:  $2, | ||||
|                     CloseParenthesisTkn: $3, | ||||
|                     SemiColonTkn:        $4, | ||||
|                 } | ||||
|             } | ||||
| ; | ||||
| 
 | ||||
|  | ||||
							
								
								
									
										1022
									
								
								internal/php7/php7.go
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										1022
									
								
								internal/php7/php7.go
									
									
									
										generated
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| @ -434,14 +434,15 @@ top_statement: | ||||
|             } | ||||
|     |   T_HALT_COMPILER '(' ')' ';' | ||||
|             { | ||||
|                 $$ = &ast.StmtHaltCompiler{ast.Node{}} | ||||
| 
 | ||||
|                 // save position | ||||
|                 $$.GetNode().Position = position.NewTokensPosition($1, $4) | ||||
| 
 | ||||
|                 // save comments | ||||
|                 yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens) | ||||
|                 yylex.(*Parser).setFreeFloatingTokens($$, token.End, append($2.SkippedTokens, append($3.SkippedTokens, $4.SkippedTokens...)...)) | ||||
|                 $$ = &ast.StmtHaltCompiler{ | ||||
|                     Node: ast.Node{ | ||||
|                         Position: position.NewTokensPosition($1, $4), | ||||
|                     }, | ||||
|                     HaltCompilerTkn:     $1, | ||||
|                     OpenParenthesisTkn:  $2, | ||||
|                     CloseParenthesisTkn: $3, | ||||
|                     SemiColonTkn:        $4, | ||||
|                 } | ||||
|             } | ||||
|     |   T_NAMESPACE namespace_name ';' | ||||
|             { | ||||
| @ -838,14 +839,15 @@ inner_statement: | ||||
|             } | ||||
|     |   T_HALT_COMPILER '(' ')' ';' | ||||
|             { | ||||
|                 $$ = &ast.StmtHaltCompiler{ast.Node{}} | ||||
| 
 | ||||
|                 // save position | ||||
|                 $$.GetNode().Position = position.NewTokensPosition($1, $4) | ||||
| 
 | ||||
|                 // save comments | ||||
|                 yylex.(*Parser).setFreeFloating($$, token.Start, $1.SkippedTokens) | ||||
|                 yylex.(*Parser).setFreeFloatingTokens($$, token.End, append($2.SkippedTokens, append($3.SkippedTokens, $4.SkippedTokens...)...)) | ||||
|                 $$ = &ast.StmtHaltCompiler{ | ||||
|                     Node: ast.Node{ | ||||
|                         Position: position.NewTokensPosition($1, $4), | ||||
|                     }, | ||||
|                     HaltCompilerTkn:     $1, | ||||
|                     OpenParenthesisTkn:  $2, | ||||
|                     CloseParenthesisTkn: $3, | ||||
|                     SemiColonTkn:        $4, | ||||
|                 } | ||||
|             } | ||||
| 
 | ||||
| statement: | ||||
|  | ||||
| @ -539,6 +539,10 @@ func (n *StmtGoto) Accept(v NodeVisitor) { | ||||
| // StmtHaltCompiler node | ||||
| type StmtHaltCompiler struct { | ||||
| 	Node | ||||
| 	HaltCompilerTkn     *token.Token | ||||
| 	OpenParenthesisTkn  *token.Token | ||||
| 	CloseParenthesisTkn *token.Token | ||||
| 	SemiColonTkn        *token.Token | ||||
| } | ||||
| 
 | ||||
| func (n *StmtHaltCompiler) Accept(v NodeVisitor) { | ||||
|  | ||||
| @ -60,3 +60,10 @@ func (v *FilterTokens) StmtNamespace(n *ast.StmtNamespace) { | ||||
| 	n.CloseCurlyBracket = nil | ||||
| 	n.SemiColonTkn = nil | ||||
| } | ||||
| 
 | ||||
| func (v *FilterTokens) StmtHaltCompiler(n *ast.StmtHaltCompiler) { | ||||
| 	n.HaltCompilerTkn = nil | ||||
| 	n.OpenParenthesisTkn = nil | ||||
| 	n.CloseParenthesisTkn = nil | ||||
| 	n.SemiColonTkn = nil | ||||
| } | ||||
|  | ||||
| @ -2823,13 +2823,11 @@ func (p *Printer) printStmtGoto(n ast.Vertex) { | ||||
| 	p.printFreeFloating(nn, token.End) | ||||
| } | ||||
| 
 | ||||
| func (p *Printer) printStmtHaltCompiler(n ast.Vertex) { | ||||
| 	nn := n.(*ast.StmtHaltCompiler) | ||||
| 	p.printFreeFloating(nn, token.Start) | ||||
| 
 | ||||
| 	io.WriteString(p.w, "__halt_compiler") | ||||
| 
 | ||||
| 	p.printFreeFloatingOrDefault(nn, token.End, "();") | ||||
| func (p *Printer) printStmtHaltCompiler(n *ast.StmtHaltCompiler) { | ||||
| 	p.printToken(n.HaltCompilerTkn, "__halt_compiler") | ||||
| 	p.printToken(n.OpenParenthesisTkn, "(") | ||||
| 	p.printToken(n.CloseParenthesisTkn, ")") | ||||
| 	p.printToken(n.SemiColonTkn, ";") | ||||
| } | ||||
| 
 | ||||
| func (p *Printer) printStmtIf(n ast.Vertex) { | ||||
|  | ||||
| @ -1049,7 +1049,8 @@ func TestParseAndPrintPhp5Goto(t *testing.T) { | ||||
| } | ||||
| 
 | ||||
| func TestParseAndPrintPhp5HaltCompiler(t *testing.T) { | ||||
| 	src := `<?php | ||||
| 	// TODO: remove ; after <?php | ||||
| 	src := `<?php ; | ||||
| 	__halt_compiler ( ) ; | ||||
| 	this text is ignored by parser | ||||
| 	` | ||||
|  | ||||
| @ -1182,7 +1182,8 @@ func TestParseAndPrintGroupUse(t *testing.T) { | ||||
| } | ||||
| 
 | ||||
| func TestParseAndPrintHaltCompiler(t *testing.T) { | ||||
| 	src := `<?php | ||||
| 	// TODO: remove ; after <?php | ||||
| 	src := `<?php ; | ||||
| 	__halt_compiler ( ) ; | ||||
| 	this text is ignored by parser | ||||
| 	` | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user