AST语法树关键字解析

AST语法树关键字解析

一、已知关键字

1、声明

ObjCInterfaceDecl:类声明

super ObjCInterface:继承于那个类

ObjCImplementation:类的实施定义

ObjCProtocol:类继承的协议

ObjCPropertyDecl:类属性定义,包括使用了什么属性,比如:readwrite nonatomic strong

ObjCMethodDecl:OC方法定义

ParmVarDecl:参数定义

ImplicitParamDecl:隐含参数定义,可以看出所有方法都默认带上,self和cmd两个参数

FullComment:注释

ParagraphComment:注释段

TextComment:文案

ParamCommandComment:特殊命令注释

FunctionDecl:C/C++方法定义

ObjCStringLiteral:对应NSString类型

StringLiteral:对应NSString转的char[]类型

IntegerLiteral:源数字类型定义

FloatingLiteral:浮点数

TypedefDecl:对应typedef

BlockPointerType:block的指针类型声明

ParenType:block的函数原型

FunctionProtoType:函数协议类型

TypedefType:参数类型或者是返回值类型,包含Typedef类型以及BuiltinType编译原类型

ObjCIvarDecl:私有变量声明

ObjCPropertyImplDecl:属性的实施声明,可以看出,arc模式下自动生成synthesize

ObjCProperty:声明属性

ObjCIvar:属性对应的私有变量

ObjCProtocolDecl:协议声明

2、表达式

ExprWithCleanups:代表arc模式下带上了autorelease

CallExpr:调用C/C++函数方法

DeclRefExpr:表达式的变量声明

ObjCMessageExpr:OC的方法调用访问

PseudoObjectExpr:OC属性get方法的返回类型

OpaqueValueExpr:关键字表达式,比如:self.

ObjCIvarRefExpr:私有变量表达式,比如:_aaa=@“xxx”

ImplicitCastExpr:隐式转换,<IntegralCast>代表数字类型的转换,'int64_t':'long long' <LValueToRValue>代表int64_t转成longlong,<BitCast>代表位转换, <ARCReclaimReturnedObject>代表ARC模式下的返回值,可以假设带上了autorelease,

ObjCSubscriptRefExpr:NSDictionary[]对应的方法调用

BlockExpr:块表达式对应block的实现

CStyleCastExpr:c语言类型的转换

ObjCBoxedExpr:比如:@()

3、语法

CompoundStmt:等于{}

DeclStmt:局部变量声明

ReturnStmt:return的表达式,多哥return出口有多个,这就是为啥编译也会变慢的原因

IfStmt:if表达语句

ObjCAtSynchronizedStmt:对应@Synchronized

ObjCAtTryStmt:对应@try

ForStmt:对应for

UnaryOperator:对应i++

ObjCAtCatchStmt:对应@catch



4、运算

BinaryOperator:运算表达式,比如“=”,“>”,“<”等等


二、待研究

AvailabilityAttr:

NSConsumesSelfAttr

NSReturnsRetainedAttr

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容