由于 groovy 擅长解析几乎任何东西,因此搜索如何解析 groovy 代码不会显示任何好的结果 - 所以我希望 SO 社区能够提供帮助 :-)
我想为 grails 域类编写某种(图形)编辑器,但不想重新发明轮子。
通过反射检查域类很容易,但我想更进一步——我想修改代码并将其作为域类文件写回。
一个问题是反射(以及 AST 也是)会丢弃所有评论和格式(格式不是大问题,我可以很好地打印文件)......
有什么想法可以找到我可以构建我的想法的 groovy 解析器吗?
您应该仔细查看GroovyDocTool类源代码。
GroovyDoc 使用 GroovyLexer 和 GroovyRecognizer 解析类文本(生成 GroovyDoc HTML 文档文件,类似于 JavaDoc HTML 文件)并利用这些类从给定的源文本创建 AST。
生成的 AST 和源代码文本用于遍历类结构(请参阅SimpleGroovyClassDocAssembler),提取注释和各种其他元数据以填充 GroovyDoc 特定的数据结构。
ASM应该为您完成大部分工作......
Groovy 代码中的其他类可能围绕 ASM:-
一旦你有了访问者,如果 Groovy API 中有一个内置的适配器,它可能“或多或少”很简单......