abstract-syntax-tree相关内容

Clang AST 解释

我正在尝试解释您可以在下图中看到的 Clang AST 的部分内容.简而言之,我想做的是检查两个变量在不同的程序点是否相同.检查 AST 后,我注意到 AST 部分之间唯一的共同点是蓝色圈出的部分. 谁能帮助我了解这些十六进制数字在 AST 中对应的内容?我知道第一个块对应一个变量声明,第二个块对应一个表达式.是否有 Stmt 和 Expr 类上的方法可以调用来获取这些十六进制数? 解 ..
发布时间:2021-11-26 17:51:17 其他开发

使用 Eclipse 插件将修改后的 AST 保存在新文件中

我有一个 Eclipse 插件代码来操作项目/工作区中的类 (smcho.Hello).我可以创建一个 CompilationUnit 并对其进行一些修改,但我需要将结果保存在不同的文件中以检查两个版本之间的差异. 这是我如何获得 CompilationUnit 的代码. IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoo ..

Eclipse AST 不更改未在 Eclipse 中打开的文件

我正在尝试使用 eclipse 插件、JDT 和 AST(抽象语法树)修改源代码.我可以读取所有 Java 文件并对所有这些文件进行操作,但是当我使用 将这些更改(编辑)保存到文件中时 TextEdit edits = rewriter.rewriteAST();//将文本编辑应用到编译单元编辑.应用(文件);iCompilationUnit.getBuffer().setContents( ..
发布时间:2021-11-26 17:50:50 其他开发

如何将 AST 转换为 JDT Java 模型

我正在为使用 JDT 的 IType 和 IMethod 接口的插件编写单元测试.要编写单元测试,我需要实例化这样的接口.回答这个问题展示了如何创建 AST 模型,但我没有知道如何将其转换为Java模型吗? 我的代码如下: 字符串源 ="包com.test\n" +"\n" +“导入com.test.something;"+"\n" +"公共课课{\n" +"int sum(int a, ..
发布时间:2021-11-26 17:50:40 Java开发

Haskell 在递归函数中标记项目

总的来说,我对 Haskell 和函数式编程很陌生,所以如果问题看起来很简单或很愚蠢,请原谅我. 我有一个用于生成抽象语法树的简单语言的解析器.为了展平 AST(将 while 和 if 语句转换为跳转),我需要在树中放置标签.问题是我不知道下一个标签应该是什么(我还在急切地思考,因为如果我有状态,这一切都不是问题). 到目前为止,我拥有的功能如下: transform :: Stm ..
发布时间:2021-11-26 17:50:20 其他开发

python ast vs json用于str到dict翻译

我有一段代码接收格式化为python字典的字符串 "{'a':'1','b':'2',...}" 我需要将其转换为合适的字典. 我尝试了两种方法,使用 json.loads(s) 和 ast.literal_eval(s)ast 似乎更加健壮,接受字符串中的任何形式的引号并且“正常工作",而 json 似乎对引用细节非常挑剔,并且不会仅在单一形式的引用格式上失败.我真的希望输入尽可能灵活 ..
发布时间:2021-11-26 17:49:58 Python

如何使用 Roslyn 用字符串替换替换 C# 关键字?

我想使用 Roslyn 加载 C# 源代码并将其写入另一个文件,用替代品替换关键字.示例: for (int i=0; i 翻译为 foobar (int i=0; i 这种操作的语法是什么样的? 解决方案 我不知道这会有多好,但是你可以用另一个 ForKeyword 替换每个 ForKeyword 标记 标记,但这次使用您的自定义文本.为此,您可以使用 CSharpSyntaxR ..
发布时间:2021-11-26 17:49:47 C#/.NET

复杂的文本替换算法或设计模式

我需要对来自数据库的文本进行多次替换,然后再将其显示给用户. 我的示例是最有可能在 CRM 上找到的数据,输出是用于 Web 的 HTML,但该问题可以推广到任何其他文本替换需求.这个问题对于任何编程语言都是通用的.就我而言,我使用 PHP,但它更像是一个算法问题而不是 PHP 问题. 问题 我在下面写的 3 个示例中的每一个都非常容易通过正则表达式完成.但是,即使我进行多步替换 ..

Python:使用 Ast 模块解析文本文件中的字符串时出错

我有一个包含以下两个字符串的文本文件 (.txt)(这是一个较大文件的片段,其中所有字符串都具有相同的格式): ["('a', '1')", "('b', '2')"]["('c', '3')", "('d', '4')"] 我使用下面的代码来解析文本文件中的字符串,以便我可以访问每个元素进行数据分析.如果我将其声明为变量,则代码适用于字符串,例如: string = ["('c', ' ..
发布时间:2021-11-26 17:49:27 Python

Java/抽象语法树转化为 XML 表示

您是否知道有任何工具可以从 Java 程序或类创建 AST 并从 AST 创建 XML 表示(集合或单个 XML 文档)? 亲切的问候, 约翰内斯 解决方案 我们的 DMS 软件Reengineering Toolkit 及其 Java 前端 可以直接执行此操作.您要求 DMS 解析文件,并使用命令行开关 ++XML 生成 XML 转储. 请参阅面向对象编程语言的 AST(抽 ..
发布时间:2021-11-26 17:49:15 Java开发

推荐保留预处理器指令的C前端

我想开始一个涉及转换C 代码的项目,但我想包括预处理器指令.我不想通过编写自己的 C 解析器来重新发明轮子,所以有人知道可以解析 C 预处理器和 C 代码,并生成可用于重新生成(或漂亮打印)原始源代码的 AST? 例如: #define FILENAME "文件名"#include 文件 *f=0;...如果(file_is_open){#ifdef CAN_OPEN_ITf = fope ..

LL 自顶向下的解析器,从 CST 到 AST

我目前正在学习语法分析,尤其是自顶向下的解析. 我知道自下而上的 LR 解析器的术语和区别,而且由于自上而下的 LL 解析器更容易手动实现,我期待着自己制作. 我见过两种方法: 使用一组递归函数的递归下降函数. 基于堆栈和表驱动的自动机,如在维基百科上显示. 我对后者更感兴趣,因为它的强大和消除了调用堆栈递归.但是,我不明白如何从隐式解析树构建 AST. 此代码示例 ..
发布时间:2021-11-26 17:48:36 其他开发

LINQ 表达式树最多可以做什么?

LINQ 表达式树最多可以做多少? 它可以定义一个类吗?一个带有所有声明名称、修饰符、参数类型和返回类型的方法怎么样? 程序必须始终定义树本身吗?是否可以从给定的 C# 文件生成树? 解决方案 在 C# 3 中,表达式树可以表示表达式.由此得名.而且它们被进一步限制为 C# 表达式的一个子集——没有赋值表达式,没有涉及指针类型的表达式,等等. 在 C# 4 附带的库中,我 ..
发布时间:2021-11-26 17:48:08 C#/.NET