Reputation: 11042
Since groovy is good at parsing nearly anything, a search on how to parse groovy code will not reveal any good results - so I hope that the SO community is able to help :-)
I would like to write some kind of (graphical) editor for grails domain classes, but don't want to reinvent the wheel.
It's easy to inspect the domain class through reflection, but I would like to go one step further - I want to modify the code and write it back as a domain class file.
One problem is that reflection (and afaik the AST too) will throw away all comments and formatting (formatting is not the big problem, I could pretty print the file)...
Any ideas where I can find a groovy parser upon which I can build my ideas?
Upvotes: 19
Views: 9830
Reputation: 2383
ASM should do most of the work for you....
Additional classes in Groovy Code likely wrap around ASM : -
Once you have a visitor, if there's a built-in adapter in the Groovy API, it could be "more or less" straightforward...
Upvotes: 2
Reputation: 4411
You should have an intensive look at the GroovyDocTool class source.
GroovyDoc uses the GroovyLexer and GroovyRecognizer to parse class texts (to generate GroovyDoc HTML documentation files, similar to JavaDoc HTML files) and utilizes these classes to create an AST from the given source text.
The generated AST and the source code text are used to walk through the class structure (see SimpleGroovyClassDocAssembler), extract comments and various other meta-data to fill the GroovyDoc specific data structures.
Upvotes: 9