2013-02-06 25 views
5

Ich bin auf der Suche nach einer Möglichkeit, Go-Quellcode zu generieren.Generate Go Quellcode

Ich habe Go/Parser gefunden, um eine AST-Form einer Go-Quelldatei zu generieren, konnte aber keine Möglichkeit finden, Go-Quelle von AST zu generieren.

Antwort

15

Um einen AST in die Quellform zu konvertieren, kann man das go/printer Paket verwenden.

Beispiel (angepasst Form eines anderen example)

package main 

import (
     "go/parser" 
     "go/printer" 
     "go/token" 
     "os" 
) 

func main() { 
     // src is the input for which we want to print the AST. 
     src := ` 
package main 
func main() { 
     println("Hello, World!") 
} 
` 

     // Create the AST by parsing src. 
     fset := token.NewFileSet() // positions are relative to fset 
     f, err := parser.ParseFile(fset, "", src, 0) 
     if err != nil { 
       panic(err) 
     } 

     printer.Fprint(os.Stdout, fset, f) 

} 

(auch here)


Ausgang:

package main 

func main() { 
     println("Hello, World!") 
} 
+0

Thank you! Sehr hilfreich. –