abstract-syntax-tree相关内容

什么是使用访问者模式与返回值实现AST的最好方法?

我试图使用访问者模式在C ++中实现一个简单的抽象语法树(AST)。通常访问者模式不处理返回值。但在我的AST有表达式节点关心的返回类型和其子节点的值。例如,我有一个这样的Node结构: class AstNode { public: virtual void accept(AstNodeVisitor&)= 0; void addChild(AstNode * child ..
发布时间:2016-11-02 22:57:13 C/C++开发

递归下降解析器问题

我有两个关于如何编写递归下降解析器的问题: 第一个是什么时候有一个非终结符可以匹配几个不同的终结符之一?如何检查哪种方式是正确的? 其次,如何构建AST?使用YACC,我可以只写一段代码来为非终结符的每个实例执行,并且它有特殊的变量,引用规则的“值”。如何在递归下降解析器中做类似的事情? 解决方案 ,然后在故障时回溯。或者您证明自己的语言位于 LL( k ) 对于规则的每 ..
发布时间:2016-10-27 00:50:39 C/C++开发

使用Clang AST打印函数的参数

我想得到传递给函数的参数。例如,如果我有呼叫 printf(“%d%d”,i,j); 输出应为 %d%d ielves J 我可以使用RecursiveASTVisitor中的VisitCallExpr()函数调用函数。也能够获得参数的数量和参数类型。但我不知道如何获得参数。 bool MyRecursiveASTVisitor :: VisitCallExpr( ..
发布时间:2016-10-23 12:04:21 C/C++开发

Clang:AST(抽象语法树)是什么样子?

您好我是编译器开发的新,我想知道AST是什么样子。我有一小段代码,我使用Clang生成AST。我没有得到太多的信息。 从外观上看,语法树与源代码完全相同,除了几乎添加到我测试的任何样本的一个结构。 来源: class A { public: int * a,* b,* c; int i; void sum(){ a = new int [5]; b = new i ..
发布时间:2016-10-22 18:37:40 C/C++开发

如何手动遍历clang AST?

我可以使用recursivevisitor类遍历clang AST的特定子树,但我想要做的是通过节点遍历clang AST节点。 提前感谢。 解决方案 实施成员方法 TraverseDecl(Decl * x), TraverseStmt(Stmt * x) code> TraverseType(QualType x)为您的RecursiveASTVisitor的派生类(例如My ..
发布时间:2016-10-14 13:01:50 C/C++开发

从c ++代码获取人类可读的AST

为了更好地了解C ++语言和语法的一些细节,我希望能够编写一个小的C ++程序,并且看到编译器从中生成的AST。 看起来clang在过去有这个功能(-emit-asm),但它已经删除。 一个简单的方法来做这个今天? 解决方案 clang仍然具有该功能: 命令 -ast-dump 和 -ast-dump-xml 注意: -ast-dump-xml 只能在调试模式下构建 ..
发布时间:2016-10-11 20:12:02 C/C++开发

从行号方法名称

鉴于特定类的源代码行数(Java / C#) - 有一种简单的方法来获得它属于内的方法的名称? (如果它属于一个之内)(据推测使用抽象语法树) (这将是在限制的Checkstyle的输出,以只方法触及有用)。 我假设你必须使用一个抽象语法树做线路# - >方法名 解决方案 (针对Java) 如果类文件与调试信息编译然后是行号表将包含一个映射代码< - >行号。我不认 ..
发布时间:2016-10-01 00:16:36 Java开发

什么是最大的LINQ表达式树可以做什么?

什么是maximun的LINQ表达式树可以做什么? 可不可以这样定义一个类? 怎么样的方法,所有的声明的名称,修饰符,参数类型和返回类型? 必须程序总是定义树本人呢?是否有可能从给定的C#文件树? 我在哪里可以得到资源,了解写作基础到高级表达式树和表达式树访客? (文章和视频将是伟大的)对于那些谁能够帮助... 谢谢解决方案 在C#3,表达式树可以代表的表达式的。故名。 ..
发布时间:2016-09-20 22:43:21 C#/.NET

微软CCI - 资源,用于编写编译器引用

前一段时间,我工作的编译器,我使用的System.Reflection 生成从我的AST代码(IL)。现在,我已经为我愿意去努力(这将是另外一个宠物项目,没有什么会在产品代码现在可以使用,至少不会)另一个编译器的想法。 如你所知,宠物项目有超过生产代码一大好处:你可以实验和失败。所以,我决定尝试使用微软的CCI 写的编译器。 唯一的好参考,我发现是基本的语言的样本编译器(即CCI Co ..
发布时间:2016-09-08 19:31:39 C#/.NET

翻译的C#代码到AST?

这是目前可能的C#代码转换成抽象语法树 编辑:澄清;我并不指望编译器生成我AST - “官方”一个解析器就可以了,但我想使用的东西Lambda表达式是不幸的是不会是足够给他们不允许我用的语句机构,这正是我要找的。 解决方案 Syntax树,等等。 SyntaxTree树= SyntaxTree.ParseCompilationUnit( @“C#代码在这里”); VAR ..
发布时间:2016-08-30 14:58:26 C#/.NET

印刷抽象语法树,无限递归问题

有关在我的C编程类项目的最后,我们正在实施一个逆波兰式计算器,它可以评估的正确性一名前pression,返回相应的缀前pression,或打印出模拟装配$ C $℃。要做到这一点,我们要同时实现栈和抽象语法树。 结构snode / *堆栈数据结构* / { INT数据; 结构snode *底部; };结构TNODE / *树数据结构* / { INT数据; 结构TNODE *离开 ..
发布时间:2016-08-23 12:17:15 C/C++

如何获得一个`C`程序的抽象语法树`GCC`

我 怎样才能在GCC C程序的抽象语法树?结果 我想自动插入OpenMP编译到输入C程序。结果 我需要分析嵌套的为循环查找的依赖关系,这样我可以插入相应的OpenMP编译。结果 所以基本上我想要做的是横向和分析输入C程序的抽象语法树。结果 我该如何实现这一目标? 解决方案 您需要完全的数据流发现'依赖'。然后,你将需要真正的插入的OpenMP的要求。 你想要的是一个程序转化体系 ..
发布时间:2016-08-21 21:30:08 C/C++

再$ P $用C psenting抽象语法树

我执行的C.一个简单的玩具语言,我有一个工作扫描器和分析器,并在概念上的功能/结构的AST的合理背景的编译器。我的问题是有关重新present的具体方式C.一个AST我遇到三种风格pretty频频在不同的文本/资源在线: 每类节点的一个结构。 这有一个基本节点“类”(结构),它是在所有的子结构的第一个字段。基节点包含一个存储节点(不变,双目运算符,分配等)的类型枚举。该结构的成员使用一组宏的访 ..
发布时间:2016-08-19 16:15:39 C/C++

从C code构建AST

如何建立从GCC C code。将AST(抽象语法树)为了进行一些修改,比如将一些诠释变量浮动,并再次重现(生成)的code到C语法之后。 事实上,就目前而言,我真正需要的唯一功能是从由几行C程序中提取的变量及其类型的表...我认为这是一个简单的解析器这样做。 我有一些变量,如: INT var_bss; 浮var_f_bss; INT var_data = 4; 浮var_f_data ..
发布时间:2016-08-18 23:20:32 C/C++

如何利用锵的AST的?

我在看利用了锵的AST为我的C code和做在AST一些分析。就从哪里开始一些指针,如何获取锵的AST,辅导或任何在这方面将有很大的帮助! 我一直在试图找到一些和我这是在2本链接几年前。但由于某些原因,它不是为我工作。样品code,在本教程中,给了我太多的错误。所以,我不知道,如果我建code正确或某些事情是错误的教程。不过,我会很乐意从其他页面开始为好。 解决方案 开始与沙尔斯链接的教 ..
发布时间:2016-08-18 22:08:14 C/C++