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