【问题标题】:How to parse groovy code?如何解析 groovy 代码?
【发布时间】:2012-12-30 12:30:49
【问题描述】:

由于 groovy 几乎擅长解析任何东西,因此搜索如何解析 groovy 代码不会显示任何好的结果 - 所以我希望 SO 社区能够提供帮助 :-)

我想为 grails 域类编写某种(图形)编辑器,但不想重新发明轮子。

通过反射检查域类很容易,但我想更进一步 - 我想修改代码并将其写回作为域类文件。

一个问题是反射(以及 AST 也是)会丢弃所​​有 cmets 和格式(格式不是大问题,我可以很好地打印文件)...

有什么想法可以找到我可以在其上构建想法的 groovy 解析器吗?

【问题讨论】:

  • 我敢说 groovy 包含 groovy 解析器,它非常适合解析 groovy 代码
  • 点了。但是你能指出解析器的来源、使用它的教程、API 或其他东西来开始吗?
  • 我想我找到了一个很好的起点:groovy.codehaus.org/From+source+code+to+bytecode,但仍然欢迎提供更多资源!
  • 不确定这是否有帮助:stackoverflow.com/questions/11089391/…
  • 评论可能会很棘手,因为我不相信他们会进入 AST :-/

标签: parsing grails groovy


【解决方案1】:

您应该仔细查看GroovyDocTool 类源代码。

GroovyDoc 使用 GroovyLexer 和 GroovyRecognizer 解析类文本(生成 GroovyDoc HTML 文档文件,类似于 JavaDoc HTML 文件)并利用这些类从给定的源文本创建 AST。

生成的 AST 和源代码文本用于遍历类结构(请参阅SimpleGroovyClassDocAssembler),提取 cmets 和各种其他元数据以填充 GroovyDoc 特定数据结构。

【讨论】:

    【解决方案2】:

    ASM 应该为您完成大部分工作......

    Groovy 代码中的其他类可能围绕 ASM:-

    一旦您有了访问者,如果 Groovy API 中有内置适配器,它可能“或多或少”简单明了...

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-29
      • 1970-01-01
      • 1970-01-01
      • 2018-01-22
      • 2011-10-05
      • 1970-01-01
      相关资源
      最近更新 更多