AST語法樹關(guān)鍵字解析

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

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容