abstract-syntax-tree相关内容
我正在尝试解释您可以在下图中看到的 Clang AST 的部分内容.简而言之,我想做的是检查两个变量在不同的程序点是否相同.检查 AST 后,我注意到 AST 部分之间唯一的共同点是蓝色圈出的部分. 谁能帮助我了解这些十六进制数字在 AST 中对应的内容?我知道第一个块对应一个变量声明,第二个块对应一个表达式.是否有 Stmt 和 Expr 类上的方法可以调用来获取这些十六进制数? 解
..
我有一个 Eclipse 插件代码来操作项目/工作区中的类 (smcho.Hello).我可以创建一个 CompilationUnit 并对其进行一些修改,但我需要将结果保存在不同的文件中以检查两个版本之间的差异. 这是我如何获得 CompilationUnit 的代码. IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoo
..
我正在 OCaml 中创建一个编译器,其语法如下: type expr =|const 的缺点|字符串变量|列表(expr列表)|( expr * expr ) 的总和|小于 ( expr * expr )|( expr * expr * expr ) 的条件|Array_literal of ( expr )|Array_read of ( expr * expr ) AST 的节点如下所示
..
我正在尝试使用 eclipse 插件、JDT 和 AST(抽象语法树)修改源代码.我可以读取所有 Java 文件并对所有这些文件进行操作,但是当我使用 将这些更改(编辑)保存到文件中时 TextEdit edits = rewriter.rewriteAST();//将文本编辑应用到编译单元编辑.应用(文件);iCompilationUnit.getBuffer().setContents(
..
我正在为使用 JDT 的 IType 和 IMethod 接口的插件编写单元测试.要编写单元测试,我需要实例化这样的接口.回答这个问题展示了如何创建 AST 模型,但我没有知道如何将其转换为Java模型吗? 我的代码如下: 字符串源 ="包com.test\n" +"\n" +“导入com.test.something;"+"\n" +"公共课课{\n" +"int sum(int a,
..
我的需求是将**操作符改为幂函数 例如 1.输入-"B**2"输出-功率(B,2)2.“B**2&&T**2*X"输出-功率(B,2) 我写了以下正则表达式来解决这个问题 rx=r"([a-zA-Z0-9]+)\*\*([a-zA-Z0-9()]+)"结果 = regex.sub(rx, r"power(\1,\2)", expression, 0, regex.IGNORECASE
..
总的来说,我对 Haskell 和函数式编程很陌生,所以如果问题看起来很简单或很愚蠢,请原谅我. 我有一个用于生成抽象语法树的简单语言的解析器.为了展平 AST(将 while 和 if 语句转换为跳转),我需要在树中放置标签.问题是我不知道下一个标签应该是什么(我还在急切地思考,因为如果我有状态,这一切都不是问题). 到目前为止,我拥有的功能如下: transform :: Stm
..
我想使用 PHP-Parser 库以获取全局方法(_POST、_GET、_REQUEST)以获取 PHP 中的值.我正在使用 PHP-Parser 其中我想检查节点名称是否等于 (_POST, _GET, _REQUEST).我仍然是 PHP-Parser 的初学者,不知道如何获取这些全局变量.例如,如果我有以下源代码: 代码:
..
我有一段代码接收格式化为python字典的字符串 "{'a':'1','b':'2',...}" 我需要将其转换为合适的字典. 我尝试了两种方法,使用 json.loads(s) 和 ast.literal_eval(s)ast 似乎更加健壮,接受字符串中的任何形式的引号并且“正常工作",而 json 似乎对引用细节非常挑剔,并且不会仅在单一形式的引用格式上失败.我真的希望输入尽可能灵活
..
我想使用 Roslyn 加载 C# 源代码并将其写入另一个文件,用替代品替换关键字.示例: for (int i=0; i 翻译为 foobar (int i=0; i 这种操作的语法是什么样的? 解决方案 我不知道这会有多好,但是你可以用另一个 ForKeyword 替换每个 ForKeyword 标记 标记,但这次使用您的自定义文本.为此,您可以使用 CSharpSyntaxR
..
我需要对来自数据库的文本进行多次替换,然后再将其显示给用户. 我的示例是最有可能在 CRM 上找到的数据,输出是用于 Web 的 HTML,但该问题可以推广到任何其他文本替换需求.这个问题对于任何编程语言都是通用的.就我而言,我使用 PHP,但它更像是一个算法问题而不是 PHP 问题. 问题 我在下面写的 3 个示例中的每一个都非常容易通过正则表达式完成.但是,即使我进行多步替换
..
我有一个包含以下两个字符串的文本文件 (.txt)(这是一个较大文件的片段,其中所有字符串都具有相同的格式): ["('a', '1')", "('b', '2')"]["('c', '3')", "('d', '4')"] 我使用下面的代码来解析文本文件中的字符串,以便我可以访问每个元素进行数据分析.如果我将其声明为变量,则代码适用于字符串,例如: string = ["('c', '
..
您是否知道有任何工具可以从 Java 程序或类创建 AST 并从 AST 创建 XML 表示(集合或单个 XML 文档)? 亲切的问候, 约翰内斯 解决方案 我们的 DMS 软件Reengineering Toolkit 及其 Java 前端 可以直接执行此操作.您要求 DMS 解析文件,并使用命令行开关 ++XML 生成 XML 转储. 请参阅面向对象编程语言的 AST(抽
..
我编写了一个 ANTLR3 语法,将其细分为更小的规则以提高可读性.例如: messageSequenceChart:'msc' mscHead bmsc 'endmsc' 结束;# 其中 mscHead 是一个快捷方式:msc头:mscName mscParameterDecl?时间偏移?结尾mscInst 接口?mscGate接口; 我知道内置的 ANTLR AST 构建功能允许用户声明不
..
我想开始一个涉及转换C 代码的项目,但我想包括预处理器指令.我不想通过编写自己的 C 解析器来重新发明轮子,所以有人知道可以解析 C 预处理器和 C 代码,并生成可用于重新生成(或漂亮打印)原始源代码的 AST? 例如: #define FILENAME "文件名"#include 文件 *f=0;...如果(file_is_open){#ifdef CAN_OPEN_ITf = fope
..
我的问题是关于解析 R 语言中的表达式.让我直接进入一个例子: fun_text 之后,我们得到这些结果: expression(0 -> var, f1 sum_varsum_var2 = 0sum_var3 sum_varsum_var2 = 0sum_var3 f2, f3 = 函数(x){0 ->sum_varsum_var2 = 0sum_var3 和 var 和
..
我目前正在学习语法分析,尤其是自顶向下的解析. 我知道自下而上的 LR 解析器的术语和区别,而且由于自上而下的 LL 解析器更容易手动实现,我期待着自己制作. 我见过两种方法: 使用一组递归函数的递归下降函数. 基于堆栈和表驱动的自动机,如在维基百科上显示. 我对后者更感兴趣,因为它的强大和消除了调用堆栈递归.但是,我不明白如何从隐式解析树构建 AST. 此代码示例
..
假设我有一个文件 example.py:导入示例 VVV = 2字典名称B = {'a' : VVV,'bb' : 'SomethingB','c':错误,'ccc':无,'dddd' : '真','eeee':0.123456,'f' : 2,'h' : [1,2,3]} 我写了一个使用 ast.literal_eval() 的函数: def getDicFromFile(self, di
..
我使用 ANTLR wiki 中的语法 Java.g 生成一个词法分析器和Java 源文件的解析器.然后使用以下代码生成抽象语法树(AST). ANTLRInputStream input = new ANTLRInputStream(new FileInputStream(fileName));JavaLexer 词法分析器 = new JavaLexer(input);//创建词法分析器/
..
LINQ 表达式树最多可以做多少? 它可以定义一个类吗?一个带有所有声明名称、修饰符、参数类型和返回类型的方法怎么样? 程序必须始终定义树本身吗?是否可以从给定的 C# 文件生成树? 解决方案 在 C# 3 中,表达式树可以表示表达式.由此得名.而且它们被进一步限制为 C# 表达式的一个子集——没有赋值表达式,没有涉及指针类型的表达式,等等. 在 C# 4 附带的库中,我
..