亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python運行是由Graminit.c定義的示例分析

發布時間:2021-10-26 16:34:58 來源:億速云 閱讀:127 作者:柒染 欄目:編程語言

本篇文章為大家展示了Python運行是由Graminit.c定義的示例分析,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

Graminit.c中定義了Python運行時刻進行語法分析所需要的靜態數據(部分數據,主要是Accelerator,會在運行時計算出來),按照如下的順序:

static arc arcs_0_0[3] = {  {2, 1},  {3, 1},  {4, 2},  };  static arc arcs_0_1[1] = {  {0, 1},  };  static arc arcs_0_2[1] = {  {2, 1},  };  static state states_0[3] = {  {3, arcs_0_0},  {1, arcs_0_1},  {1, arcs_0_2},  };

Arc_0_0代表DFA0中從狀態0出發的所有arc,arcs_0_1代表DFA0中從狀態1出發的所有arc,依此類推。Arcs_0_0中Arc { 2, 1 }代表一條邊從狀態0開始到狀態1,Label為2(可以在后面查到label2代表NEWLINE,即換行符)。States_0記錄了DFA0中所有的狀態節點上面的所有邊。

當定義完所有的DFA的狀態和邊的信息之后,接下來定義了所有的DFA的數組:

  1. static dfa dfas[84] = {  

  2. {256, "single_input", 0, 3, states_0,  

  3. "\004\050\014\000\000\000\000\025\074\005\023\
    310\011\020\004\000\300\020\222\006\201"},  

  4. {257, "file_input", 0, 2, states_1,  

  5. "\204\050\014\000\000\000\000\025\074\005\023
    \310\011\020\004\000\300\020\222\006\201"},  

  6. ...  

Graminit.c中定義了Python運行時刻進行語法分析所需要的靜態數據的順序中我們就拿***個元素舉例,256在graminit.h中可以查到代表single_input,也就是交互模式下單條語句。初始狀態為0,共有3個狀態,對應的狀態和邊的信息存在states_0中,***的一個很長的字符串代表了該非終結符的firstset,每個字節對應著label的ID。

接下來,graminit.c定義了所有的Labels:

static label labels[168] = {  {0, "EMPTY"},  {256, 0},  {4, 0},  {267, 0},  ...

{ 0, “EMPTY” }是一條特殊的邊,表示該狀態是accept狀態,代表DFA的結束。{ 256, 0 } 則代表該label對應的是符號256,也就是single_input,無對應字符串描述。由于每個關鍵字在語法中是直接出現的,因此在Label中定義了每個關鍵字。

***,定義了grammar:

grammar _PyParser_Grammar = {  84,  dfas,  {168, labels},  256  };

可以看到,整個Python2.5的語法共有84條規則/DFA,168個Label,起始Label為256, single_input。(部分數據主要是Accelerator,會在運行時計算出來)

上述內容就是Python運行是由Graminit.c定義的示例分析,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

太湖县| 顺义区| 湄潭县| 滁州市| 吴川市| 永胜县| 阳春市| 吉安市| 保定市| 大姚县| 潍坊市| 容城县| 林州市| 巴彦淖尔市| 绥化市| 正安县| 左云县| 罗田县| 道孚县| 孟村| 肇东市| 东明县| 晴隆县| 湟中县| 和硕县| 嘉义县| 彰化市| 岗巴县| 盐山县| 特克斯县| 丹寨县| 县级市| 克拉玛依市| 仲巴县| 龙岩市| 天峻县| 泰宁县| 河西区| 鹤壁市| 玉田县| 公安县|