当前位置: 首页 > 知识库问答 >
问题:

如何解析groovy代码?

谢鸿羲
2023-03-14

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

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

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

一个问题是反射(以及afaik AST)会丢弃所有注释和格式(格式不是大问题,我可以打印文件)…

我可以在哪里找到一个groovy解析器来构建我的想法呢?

共有2个答案

盖绪
2023-03-14

ASM应该为您做大部分工作……

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

    < Li > http://groovy-lang . org/API/org/code Haus/groovy/ast/class node . html。 < Li > http://groovy-lang . org/API/org/code Haus/groovy/ast/groovy class visitor . html

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

江迪
2023-03-14

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

GroovyDoc使用GroovyLexer和Groovy识别器来解析类文本(以生成GroovyDoc超文本标记语言留档文件,类似于JavaDoc超文本标记语言文件),并利用这些类从给定的源文本创建AST。

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

 类似资料:
  • 例如,我有一个包含一些属性的Jenkinsfile 我想在groovy代码中解析上面的Jenkinsfile,以便访问一些属性值。 当我像这样使用GroovyShell时 我得到这个错误 我可能能够通过一些Groovy元编程绕过特定错误,但是,我不确定这是否是正确的方向。我的问题是,在Groovy代码中解析Jenkinsfile的最佳方法是什么?这就是Groovy DSL,我希望它更简单。

  • 问题内容: 我想解析传入的JSON数据,例如: 我使用的代码是: 但是我无法分配任何东西给。有什么建议? 问题答案: 该响应是一个Map,具有单个元素,键为“ 212315952136472”。地图中没有“数据”键。如果要遍历所有条目,请使用以下命令: 如果您知道它是单元素地图,则可以直接访问: 而且,如果您知道ID(例如,如果您使用它来发出请求),则可以更简洁地访问该值:

  • 请帮助::我如何处理这些每一个。每一个或为每一个或什么?我有一个.xml我正试图用Groovy脚本解析。下面是.xml: 下面是我的Groovy脚本: 结果如下: 我的问题是:我可以在的代码块中放入什么代码 为了单独打印每个项,如“port”和“protocol”等等,对于.xml块“connector”的每个实例?多谢了。

  • IntelliJ的Sonarlint插件对我们的Java代码进行分析,但它不会在同一项目中分析Groovy代码。 我们有一个Grails项目,它在命令行上与sonar runner一起工作。当我安装IntelliJ IDEA Sonarlint插件时,该插件似乎没有从命令行配置中获取设置,并且它没有像编辑器中的Java文件那样显示问题的警告突出显示。 我们的项目使用“代码覆盖率”Grails插件生

  • 当我通过命令行或Jenkins运行Groovy脚本时,会出现“无法解析类”错误。 我在C中的同一文件夹中有以下两个groovy文件:\Users\myuser\git\productname\mycompany build\src\main\groovy\com\mycompany\build 富。groovy公司 酒吧groovy公司 我经营Foo。groovy使用命令行。 运行Groovy时,

  • 我在我的Tomcat/Java应用程序中有一个解析代码的GroovyShell实例。解析非常慢,100行大约1秒。在分析应用程序时,我注意到解析抛出了大量java.lang.ClassNotFoundException异常。我想有什么东西在吞噬它们,因为我在原木的任何地方都没有看到它们。由于脚本使用了大量主应用程序的类,所以我假设这就是导致应用程序变慢的原因。 有没有办法让我捕捉那些异常并获取它们