Maison  >  Article  >  développement back-end  >  Comment générer du code source Go à partir d’un AST ?

Comment générer du code source Go à partir d’un AST ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-01 06:54:02354parcourir

How To Generate Go Source Code From An AST?

Génération du code source Go

Vous avez posé des questions sur la génération du code source Go. Le package go/parser fournit la fonctionnalité permettant de générer un AST (Abstract Syntax Tree) à partir d'un fichier source Go. Cependant, vous avez exprimé des difficultés à générer du code source Go à partir de l'AST.

Heureusement, le package go/printer propose une solution à ce problème. En utilisant ce package, vous pouvez facilement reconvertir un AST en sa forme de code source.

Considérez l'exemple ci-dessous (adapté d'une autre source) :

<code class="go">package main

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

func main() {
        // src represents the input source code 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)

}</code>

L'exécution de cet exemple produira le résultat suivant :

package main

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

Cela démontre l'utilisation efficace du package go/printer pour reconvertir un AST en sa représentation de code source.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn