17得票4回答
有没有一个可用的库可以根据抽象语法树(AST)获取源代码?

有没有一种方法可以将给定的 Python 抽象语法树 (AST) 转换为源代码呢? 这里有一个很好的例子,展示了如何使用 Python 的 ast 模块,特别是 NodeTransformer。我正在寻找一种将结果 AST 转换回源代码的方法,以便可以通过视觉手段来检查更改。

17得票2回答
为什么在Groovy脚本中的@Grab声明之后无法执行方法调用?

我正在尝试构建一种DSL,并使用全局AST转换来完成。使用groovyc编译脚本没有问题,但是我想让用户使用Grab/Grape来拉取JAR,然后立即像Groovy脚本一样执行。 但我发现,如果在@Grab调用后没有方法声明或导入语句,就会出现解析错误,无法正确执行。 以下是一个示例:@G...

17得票2回答
修改现有的yaml文件并添加新的数据和注释。

我最近看到 Go 的 yaml 库有新版本(V3)。 其使用了节点功能,在我看来这是一个很强大的特性 :) 它可以帮助我们修改 yaml 文件而不改变文件结构。 但由于它相对较新(从上周开始),我没有找到一些针对我需要的上下文(添加新对象/节点并保持文件结构相同,而不删除注释等)的有用文档...

17得票2回答
在R语言中解析“->”赋值运算符

我想问一下R语言中关于表达式解析的问题。让我举一个例子:fun_text <- c(" 0 -> var f1 <- function() { 0 -> sum_var sum_var2 = 0 sum_var3 <- 0 } (func...

17得票3回答
如何使用JDT/AST将代码片段添加到方法体中

我正在尝试使用JDT/AST生成Java源代码。现在我有一个MethodDeclaration,想要将另一个源中的代码片段添加到该方法体中。该代码片段可以包含任何Java代码,即使是语法无效的代码。我只是找不到如何做到这一点。 使用JCodeModel,你可以使用JBlock#directS...

16得票1回答
解析类 SQL 语法,设计模式。

我试图模拟SQL语法,构建一个简单的类似SQL的接口来访问键值存储。这些值本质上是POJOs。 一个示例:select A.B.C from OBJ_POOL where A.B.X = 45 AND A.B.Y > '88' AND A.B.Z != 'abc'; OBJ_POOL只...

16得票1回答
使用TreeTranslator重命名Kotlin函数无效

我正在尝试使用AST(抽象语法树)重写,在构建过程中重命名Java接口中的方法以及Kotlin接口中的函数。在这个问题中,我们忽略了重命名方法/函数为调用带来的影响。为了找到需要重命名的方法/函数,我使用了自定义注解和注解处理器。遵循这些说明,我已经成功地将其应用于Java接口。 我创建了一...

16得票6回答
从抽象语法树获取控制流图

我有一个从ANTLR解析器生成器 for Java派生的抽象语法树(AST)。我的目标是以某种方式构建源代码的控制流图,其中每个语句或表达式都是唯一的节点。我理解这必须具有某种递归性质来实现该识别,我想知道您建议的最佳选项是什么,以及ANTLR是否具有可用于此任务的工具集。 谢谢, Chris...

16得票7回答
在C#中编写解析器的最佳/最快方式是什么?

如何在C#中构建最佳解析器来解析我的自定义语言?理想情况下,我希望提供语法并获得抽象语法树作为输出。谢谢,Nestor

16得票1回答
有没有一种合适的方法可以直接从Scala Parser Combinators生成[jpg,png等]语法图(和/或AST)?

我所知道的唯一方法都不是“直接”的: 将其转换为ANTLR格式并使用其自己的可视化器。 VISUALLANGLAB,它似乎需要整个鼠标点击的“重写”。 自己实现一个转换器(这可能很有趣,但也很费时间)。 下面是第二个链接。 相关: 比较 包装器 第三方尝试 第二个链接建议通过向...