网创优客建站品牌官网
为成都网站建设公司企业提供高品质网站建设
热线:028-86922220
成都专业网站建设公司

定制建站费用3500元

符合中小企业对网站设计、功能常规化式的企业展示型网站建设

成都品牌网站建设

品牌网站建设费用6000元

本套餐主要针对企业品牌型网站、中高端设计、前端互动体验...

成都商城网站建设

商城网站建设费用8000元

商城网站建设因基本功能的需求不同费用上面也有很大的差别...

成都微信网站建设

手机微信网站建站3000元

手机微信网站开发、微信官网、微信商城网站...

建站知识

当前位置:首页 > 建站知识

Python运行是由Graminit.c定义的示例分析

本篇文章为大家展示了Python运行是由Graminit.c定义的示例分析,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

创新互联建站网络公司拥有10多年的成都网站开发建设经验,上1000家客户的共同信赖。提供网站设计制作、成都做网站、网站开发、网站定制、买链接、建网站、网站搭建、响应式网站开发、网页设计师打造企业风格,提供周到的售前咨询和贴心的售后服务

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定义的示例分析,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注创新互联行业资讯频道。


当前题目:Python运行是由Graminit.c定义的示例分析
网页路径:http://bjjierui.cn/article/gphohs.html

其他资讯