日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
Python_ast.h相關(guān)代碼的詳細(xì)介紹

在Python_ast.h中AST所用到的類型定義,我們以stmt_ty類型的相關(guān)代碼為例來(lái)介紹Python_ast.h中AST所用到的類型,希望大姐在瀏覽完以下的文章會(huì)在Python_ast.h中AST的相關(guān)實(shí)際應(yīng)用中有所收獲。

目前創(chuàng)新互聯(lián)已為上千多家的企業(yè)提供了網(wǎng)站建設(shè)、域名、網(wǎng)絡(luò)空間、網(wǎng)站托管、服務(wù)器托管、企業(yè)網(wǎng)站設(shè)計(jì)、龍里網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長(zhǎng),共同發(fā)展。

AST所用到的類型均定義在Python_ast.h中,以stmt_ty類型為例:

 
 
  1. enum _stmt_kind {FunctionDef_kind=1, ClassDef_kind=2, Return_kind=3,  
  2. Delete_kind=4, Assign_kind=5, AugAssign_kind=6, Print_kind=7,  
  3. For_kind=8, While_kind=9, If_kind=10, With_kind=11,  
  4. Raise_kind=12, TryExcept_kind=13, TryFinally_kind=14,  
  5. Assert_kind=15, Import_kind=16, ImportFrom_kind=17,  
  6. Exec_kind=18, Global_kind=19, Expr_kind=20, Pass_kind=21,  
  7. Break_kind=22, Continue_kind=23};  
  8. struct _stmt {  
  9. enum _stmt_kind kind;  
  10. union {  
  11. struct {  
  12. identifier name;  
  13. arguments_ty args;  
  14. asdl_seq *body;  
  15. asdl_seq *decorators;  
  16. } FunctionDef;  
  17. struct {  
  18. identifier name;  
  19. asdl_seq *bases;  
  20. asdl_seq *body;  
  21. } ClassDef;  
  22. struct {  
  23. expr_ty value;  
  24. } Return;  

過(guò)長(zhǎng),中間從略

 
 
  1. struct {  
  2. expr_ty value;  
  3. } Expr;  
  4. } v;  
  5. int lineno;  
  6. int col_offset;  
  7. };  
  8. typedef struct _stmt *stmt_ty;      

stmt_ty是語(yǔ)句結(jié)點(diǎn)類型,實(shí)際上是_stmt結(jié)構(gòu)的指針。_stmt結(jié)構(gòu)比較長(zhǎng),但有著很清晰的Pattern:

1. 第一個(gè)Field為kind,代表語(yǔ)句的類型。_stmt_kind定義了_stmt的所有可能的語(yǔ)句類型,從函數(shù)定義語(yǔ)句,類定義語(yǔ)句直到Continue語(yǔ)句共有23種類型。

2. 接下來(lái)是一個(gè)union v,每個(gè)成員均為一個(gè)struct,分別對(duì)應(yīng)_stmt_kind中的一種類型,如_stmt.v.FunctionDef對(duì)應(yīng)了_stmt_kind枚舉中的FunctionDef_Kind,也就是說(shuō),當(dāng)_stmt.kind == FunctionDef_Kind時(shí),_stmt.v.FunctionDef中保存的就是對(duì)應(yīng)的函數(shù)定義語(yǔ)句的具體內(nèi)容。#t#

3. 其他數(shù)據(jù),如lineno和col_offset

大部分AST結(jié)點(diǎn)類型均是按照類似的pattern來(lái)定義的,不再贅述。除此之外,另外有一種比較簡(jiǎn)單的AST類型如operator_ty,expr_context_ty等,由于這些類型仍以_ty結(jié)尾,因此也可以認(rèn)為是AST的結(jié)點(diǎn),但實(shí)際上,這些類型只是簡(jiǎn)單的枚舉類型,并非指針。因此在以后的文章中,并不把此類AST類型作為結(jié)點(diǎn)看待,而是作為簡(jiǎn)單的枚舉處理

以上就是對(duì)AST所用到的類型均定義在Python_ast.h中,以stmt_ty類型為例相關(guān)的內(nèi)容的介紹,以及其具有清晰的Pattern的具體體現(xiàn),忘你會(huì)有所收獲。


當(dāng)前標(biāo)題:Python_ast.h相關(guān)代碼的詳細(xì)介紹
鏈接URL:http://m.5511xx.com/article/djgjsjo.html