返回顶部
首页 > 资讯 > 后端开发 > Python >Python语法规则中的DFA的内容是什么
  • 854
分享到

Python语法规则中的DFA的内容是什么

2023-06-17 15:06:16 854人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

这篇文章将为大家详细讲解有关python语法规则中的DFA的内容是什么,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。Grammar.hGraminit.c中定义了包括Python语法规则的D

这篇文章将为大家详细讲解有关python语法规则中的DFA的内容是什么,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

Grammar.h
Graminit.c中定义了包括Python语法规则的DFA(Deterministic Finite Automaton),关于DFA请参考Alfred V. Aho等人所著的Compilers: Principles, Techniques, and Tools一书。为了定义DFA,graminit.c引用了位于grammar.h中的一些类型:arc, state, dfa, grammar。

Label定义了从状态转移到另外一个状态所经过的边所对应的符号,可以是非终结符(Non-Terminal),也可以是终结符(Terminal)。Label一定依附于一条或者多条边。Lb_type代表符号的类型,如终结符NAME,代表一个标示符,或者非终结符stmt,代表一个语句,等等。

Lb_str代表具体符号的内容。比如,label (NAME, “if”)表示当parser处于某个状态,如果遇到了’if’这个标示符,则移动另外一个状态。如果label是一个非终结符的话,情况则要复杂一些,需要跳转到该非终结符对应的另外一个DFA,请参看编译器相关书籍。

  typedef struct {  int lb_type;  char *lb_str;  } label;

在Graminit.c中定义了包括Python语法规则的DFA中arc代表DFA中一个状态到另一个状态的弧/边。A_lbl代表arc所对应的Label,而a_arrow记录了arc的目标状态。因为arc是属于某个状态的,因此不用纪录arc的起始状态。

  typedef struct {  short a_lbl;   short a_arrow;   } arc;

State代表着DFA中的状态节点。每个state记录了从该state出发的边的集合,存放在s_arc中。其他的一些成员s_lower, s_upper, s_accel, s_accept记录了state所对应的Accelerator,其作用会在后面讲述。注意Accelerator信息并没有定义在graminit.c中,而是在运行时计算出来的。

  typedef struct {  int s_narcs;  arc *s_arc;     int s_lower;   int s_upper;   int *s_accel;   int s_accept;   } state;

DFA结构中记录了起始状态d_initial和所有状态的集合d_state。d_first记录了该DFA所对应的非终结符的firstset,也就是说,当遇到firstset中的终结符的时候,便需要跳转到此DFA中。d_first在后面计算Accelerators的时候会被用到。

  typedef struct {  int d_type;   char *d_name;   Http://new.51cto.com/wuyou/int d_initial;   int d_nstates;  state *d_state;   bitset d_first;  } dfa;

Grammar代表了Python的整个语法,记录了所有的DFA和所有的label。G_start则是Python语法的起始symbol,一般是single_input。不过实际的起始symbol可以在创建Parser的时候指定,可以是single_input, file_input, eval_input中的一个。

关于Python语法规则中的DFA的内容是什么就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

--结束END--

本文标题: Python语法规则中的DFA的内容是什么

本文链接: https://lsjlt.com/news/290216.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Python语法规则中的DFA的内容是什么
    这篇文章将为大家详细讲解有关Python语法规则中的DFA的内容是什么,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。Grammar.hGraminit.c中定义了包括Python语法规则的D...
    99+
    2023-06-17
  • Python中str的语法规则是什么
    Python中str的语法规则如下:1. 字符串由一对单引号、一对双引号或一对三引号括起来。- 单引号示例:'Hello World...
    99+
    2023-08-28
    Python
  • Python切片的语法规则是什么
    Python切片的语法规则如下:sequence[start:stop:step]- sequence:要进行切片操作的序列,可以是...
    99+
    2023-10-21
    Python
  • SQL中like的语法规则是什么
    在SQL中,LIKE是用于在WHERE子句中进行模糊搜索的操作符。它的语法规则如下:SELECT column_na...
    99+
    2023-09-29
    SQL
  • python中join函数语法规则是什么
    在Python中,`join()`函数是字符串对象的方法,用于将字符串序列连接为一个字符串。`join()`函数的语法规则如下:``...
    99+
    2023-09-26
    python
  • Python列表删除的语法规则是什么
    Python列表删除的语法规则是使用 del 关键字后加上要删除的列表元素的索引或切片。语法格式如下:del 列表名[索引]del ...
    99+
    2023-09-26
    Python
  • css3语法规则是什么
    这篇文章主要介绍“css3语法规则是什么”,在日常操作中,相信很多人在css3语法规则是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”css3语法规则是什么”的疑惑有所帮...
    99+
    2024-04-02
  • VB.NET语法规则是什么
    这篇文章将为大家详细讲解有关VB.NET语法规则是什么,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。列举了3个实例了解语法规则的规律。VB.NET语法规则实例1:同 Integer 类型的变量比较&nbs...
    99+
    2023-06-17
  • CSS语法的基本规则是什么
    这篇文章主要为大家展示了“CSS语法的基本规则是什么”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“CSS语法的基本规则是什么”这篇文章吧。 ...
    99+
    2024-04-02
  • avaScript基本的语法规则是什么
    今天小编给大家分享一下avaScript基本的语法规则是什么的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。一、运算符&nbs...
    99+
    2023-06-29
  • include指令的语法规则是什么
    include指令的语法规则如下:1. include指令必须位于代码文件的顶部,并且在任何其他代码之前。2. include指令使...
    99+
    2023-08-12
    include
  • C++ 函数的语法规则是什么?
    c++++ 函数的语法格式为:returntype functionname(parameterlist) {}, 包括返回类型、函数名称和参数列表三个组成部分。具体函数调用示例为计算阶...
    99+
    2024-04-18
    c++ 函数语法
  • python if测试和语法规则是什么
    这篇文章主要讲解了“python if测试和语法规则是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“python if测试和语法规则是什么”吧!一、概述Python条件语句是通过一条或多...
    99+
    2023-06-04
  • python语言中定义函数的规则是什么
    在Python语言中,定义函数的规则如下:1. 使用关键字`def`来定义函数,后面跟着函数名和参数列表,参数列表用括号括起来。2....
    99+
    2023-08-30
    python
  • java中volatile关键字的语法规则是什么
    在Java中,volatile关键字有以下语法规则:1. volatile关键字用于标记一个变量,表示该变量是易变的,即可能被多个线...
    99+
    2023-09-12
    java
  • c语言中除法的运算规则是什么
    在C语言中,除法运算的规则如下: 整数除法:当两个操作数都是整数类型时,执行整数除法。结果将为整数部分的商,而不考虑小数部分。 ...
    99+
    2024-02-29
    c语言
  • CSS中@规则语法是怎么样的
    小编给大家分享一下CSS中@规则语法是怎么样的,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧! @规则语法@import&nbs...
    99+
    2024-04-02
  • c语言中while语句的用法及规则是什么
    在C语言中,while语句用于创建一个循环,只要指定的条件为真,就会重复执行特定的代码块。while语句的一般格式如下:```whi...
    99+
    2023-09-15
    c语言
  • C语言中的命名规则是什么
    本篇内容主要讲解“C语言中的命名规则是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C语言中的命名规则是什么”吧!一、常见命名规则  比较著名的命名规则,首推匈牙利命名法。这种命名方法,是由...
    99+
    2023-06-17
  • Html基本语法规则是什么
    这篇文章主要介绍“Html基本语法规则是什么”,在日常操作中,相信很多人在Html基本语法规则是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Html基本语法规则是什么”...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作