摘要: Clang中包含了非常多的关于抽象语法树(AST)的访问和操作的类和接口。我们程序开发人员可以直接通过继承其中的某些类,重写其中的关键成员方法,从而形成我们自己的对抽象语法树的操作。 那么,首先我们简要介绍几个概念: 抽象语法树(AST):抽象语法树是源代码的抽象语法结构的树状表现形式。树上的每个节 阅读全文
posted @ 2016-08-04 23:16 saintlas 阅读(2550) 评论(0) 推荐(0) 编辑
摘要: LLVM是构架编译器(compiler)的框架系统,以C++编写而成,用于优化以任意程序语言编写的程序的编译时间(compile-time)、链接时间(link-time)、运行时间(run-time)以及空闲时间(idle-time),对开发者保持开放,并兼容已有脚本。LLVM计划启动于2000年 阅读全文
posted @ 2016-08-04 23:00 saintlas 阅读(12875) 评论(0) 推荐(1) 编辑
摘要: LLVM 是一个开源的编译器架构,它已经被成功应用到多个应用领域。Clang是 LLVM 的一个编译器前端,它目前支持 C, C++, Objective-C 以及 Objective-C++ 等编程语言。Clang 对源程序进行词法分析和语义分析,并将分析结果转换为 AST ( 抽象语法树 ) , 阅读全文
posted @ 2016-08-04 22:58 saintlas 阅读(7375) 评论(0) 推荐(0) 编辑
摘要: 众所周知,我们在编程的时候经常会在函数中声明局部变量(包括普通类型的变量、指针、引用等等)。 同时,为了满足程序功能的需要,函数的返回值也经常是指针类型或是引用类型,而这返回的指针或是引用也经常指向函数中我们自己声明的局部变量。 这样,程序在某些情况下就可能存在一定的问题。看似很简单的问题,通过仔细 阅读全文
posted @ 2016-08-04 22:56 saintlas 阅读(1286) 评论(0) 推荐(0) 编辑
摘要: 我们都知道,在C++中有很多类型转换。今天在这里,我们不讨论普通变量的类型转换(比如int转换成double等等)。本文主要讨论面向对象相关的类型转换:向上转换和向下转换。 首先,我们定义一个基类Base和继承类Derived,相关代码如下: 向上转换:指的是子类向基类的转换。即:Derived向B 阅读全文
posted @ 2016-08-04 22:55 saintlas 阅读(332) 评论(0) 推荐(0) 编辑