Giter VIP home page Giter VIP logo

Comments (4)

mqliang avatar mqliang commented on July 28, 2024

I tried to dump ast using go-spew (https://github.com/davecgh/go-spew), it's practicable: about 7w line source code is generated.

The problem is: we need fork go-spew and modify its source code to make the generated files meet go's syntax.

from go-jsonnet.

sbarzowski avatar sbarzowski commented on July 28, 2024

My feeling is that the easiest and most maintainable way would be to do it by hand (without go-spew), i.e. have a function that does a type switch over ast nodes and formats each of them into a go source code representation. There are just ~30 AST node types IIRC. This will give us full control over the output and let us specially handle location information, aliased nodes and other complex cases. I think that with some helper functions the boilerplate could be minimal.

from go-jsonnet.

mqliang avatar mqliang commented on July 28, 2024

utter(github.com/kortschak/utter) works. See experiment: #101

The only problem is: we need make ALL fields of AST node as public, then the dumped source code can be put in any package. Otherwise, we must put the source code in the "ast" package.

from go-jsonnet.

mqliang avatar mqliang commented on July 28, 2024

#82 will also benefit from this.

from go-jsonnet.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.