AST語法樹關(guān)鍵字解析
一、已知關(guān)鍵字
1、聲明
ObjCInterfaceDecl:類聲明
super ObjCInterface:繼承于那個類
ObjCImplementation:類的實(shí)施定義
ObjCProtocol:類繼承的協(xié)議
ObjCPropertyDecl:類屬性定義,包括使用了什么屬性,比如:readwrite nonatomic strong
ObjCMethodDecl:OC方法定義
ParmVarDecl:參數(shù)定義
ImplicitParamDecl:隱含參數(shù)定義,可以看出所有方法都默認(rèn)帶上,self和cmd兩個參數(shù)
FullComment:注釋
ParagraphComment:注釋段
TextComment:文案
ParamCommandComment:特殊命令注釋
FunctionDecl:C/C++方法定義
ObjCStringLiteral:對應(yīng)NSString類型
StringLiteral:對應(yīng)NSString轉(zhuǎn)的char[]類型
IntegerLiteral:源數(shù)字類型定義
FloatingLiteral:浮點(diǎn)數(shù)
TypedefDecl:對應(yīng)typedef
BlockPointerType:block的指針類型聲明
ParenType:block的函數(shù)原型
FunctionProtoType:函數(shù)協(xié)議類型
TypedefType:參數(shù)類型或者是返回值類型,包含Typedef類型以及BuiltinType編譯原類型
ObjCIvarDecl:私有變量聲明
ObjCPropertyImplDecl:屬性的實(shí)施聲明,可以看出,arc模式下自動生成synthesize
ObjCProperty:聲明屬性
ObjCIvar:屬性對應(yīng)的私有變量
ObjCProtocolDecl:協(xié)議聲明
2、表達(dá)式
ExprWithCleanups:代表arc模式下帶上了autorelease
CallExpr:調(diào)用C/C++函數(shù)方法
DeclRefExpr:表達(dá)式的變量聲明
ObjCMessageExpr:OC的方法調(diào)用訪問
PseudoObjectExpr:OC屬性get方法的返回類型
OpaqueValueExpr:關(guān)鍵字表達(dá)式,比如:self.
ObjCIvarRefExpr:私有變量表達(dá)式,比如:_aaa=@“xxx”
ImplicitCastExpr:隱式轉(zhuǎn)換,<IntegralCast>代表數(shù)字類型的轉(zhuǎn)換,'int64_t':'long long' <LValueToRValue>代表int64_t轉(zhuǎn)成longlong,<BitCast>代表位轉(zhuǎn)換,?<ARCReclaimReturnedObject>代表ARC模式下的返回值,可以假設(shè)帶上了autorelease,
ObjCSubscriptRefExpr:NSDictionary[]對應(yīng)的方法調(diào)用
BlockExpr:塊表達(dá)式對應(yīng)block的實(shí)現(xiàn)
CStyleCastExpr:c語言類型的轉(zhuǎn)換
ObjCBoxedExpr:比如:@()
3、語法
CompoundStmt:等于{}
DeclStmt:局部變量聲明
ReturnStmt:return的表達(dá)式,多哥return出口有多個,這就是為啥編譯也會變慢的原因
IfStmt:if表達(dá)語句
ObjCAtSynchronizedStmt:對應(yīng)@Synchronized
ObjCAtTryStmt:對應(yīng)@try
ForStmt:對應(yīng)for
UnaryOperator:對應(yīng)i++
ObjCAtCatchStmt:對應(yīng)@catch
4、運(yùn)算
BinaryOperator:運(yùn)算表達(dá)式,比如“=”,“>”,“<”等等
二、待研究
AvailabilityAttr:
NSConsumesSelfAttr
NSReturnsRetainedAttr