我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Python中怎么声明解析器函数

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Python中怎么声明解析器函数

本篇文章给大家分享的是有关Python中怎么声明解析器函数,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

首先初步了解 DParser 这一由 J. Plevyak 编写的简单而强大的解析工具。然后了解用于 Python 的 DParser,它为 Python 程序员提供了一个访问 DParser 的无缝接口,并看看它与上一期中介绍的解析器的比较。语法规则以类似于 Spark 或 PLY 的方式通过 Python 函数文档字符串加入到 DParser 中。 有很多可用的 Python 解析器程序库。

DParser 与所有其他解析器的不同之处是什么?是这样,类似于 PLY 和 Spark,用于 Python 的 DParser 使用函数文档字符串来表示其结果(productions)。这种风格使得您可以将动作代码直接插入到一个结果中,以处理当一个特定的语法规则得到满足时将发生的事件。

与 PLY 或 Spark 相反,DParser 本身是用 C 编写的,因而可能会比纯粹的 Python 解析器快得多。用于 Python 的 DParser 是底层的 C 程序库之外的一个非常精简的包装器(wrapper) —— 对 Python 的回调需要一些额外的时间。

但是基本的解析是以 C 语言的速度来进行的。不过,就本文而言,我没有尝试进行任何具体的基准测试。所以,相对于其他解析器来说,DParser 到底有多快或多慢不是我所能直接评论的。有很多读者推荐说用于 Python DParaser 值得关注。顺便提一句,如您将在示例中所看到的,DParser 不使用任何单独的标记传递。

而只是直接解析。您可以通过定义保留的 d_whitespace() 函数来控制空格的识别(它分离解析符号);这样就使得您可以随意使用标记。 后面跟有问号的结果是推测性的尝试;那些后面其实没有最终的结果。与此相关, DParser 让您有能力当结果成为推测的或者是最终解析时采取不同的动作。

默认情况下,函数体中的动作只作用于最终解析。不过,您可以向结果指定两个额外参数中的一个来处理推测性解析。(还有很多本文中没有讨论的选项参数。) 尽管得到了一些读者的建议,我还是不太看重 DParser。它有很多可以作用于结果的强大的开关和选项,我还没有讨论到 —— 比如指定关联性。

大体上,DParser 语言非常健壮,我非常怀疑用于 Python 的 DParser 是否会比纯粹的 Python 解析器运行速度快得非常多。 无论如何,我仍然不能对函数文档字符串风格的解析器具有太多热情。显然,关于这一点,很多优秀的 Python 程序员不会赞同我。

此外我还发现一些解析结果有些令人不解:为什么调试模式下可以成功,而标准模式下却不能成功?含糊问题确切是什么时候发生的?使用任何解析工具开发语法都会有类似的意外,但是我发现 DParser 不知何故尤其出乎意料;例如 SimpleParse,就不会让我那么感到惊讶。

可能,如果我了解了底层算法的更多复杂细节,它将会更具意义;不过,就我相对浅薄的学识而言,我可能与 95% 以上的读者差不多。有人比我更加熟悉解析;但是实际上大部分程序员懂得更少。

Python是一门功能强大的高级脚本语言,它的强大不仅表现在其自身的功能上,而且还表现在其良好的可扩展性上,正因如此,Python已经开始受到越来越多人的青睐,并且被屡屡成功地应用于各类大型软件系统的开发过程中。

与其它普通脚本语言有所不同,Python程序员可以借助Python语言提供的API,使用C或者C++来对Python进行功能性扩展,从而即可以利用Python方便灵活的语法和功能,又可以获得与C或者C++几乎相同的执行性能。

执行速度慢是几乎所有脚本语言都具有的共性,也是倍受人们指责的一个重要因素,Python则通过与C语言的有机结合巧妙地解决了这一问题,从而使脚本语言的应用范围得到了很大扩展。

在用Python 解析器开发实际软件系统时,很多时候都需要使用C/C++来对Python进行扩展。最常见的情况是目前已经存在一个用C编写的库,需要在Python语言中使用该库的某些功能。

以上就是Python中怎么声明解析器函数,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注编程网行业资讯频道。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Python中怎么声明解析器函数

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Python中怎么声明解析器函数

本篇文章给大家分享的是有关Python中怎么声明解析器函数,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。首先初步了解 DParser 这一由 J. Plevyak 编写的简单而
2023-06-17

怎么在javascript中声明函数

怎么在javascript中声明函数?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。1、使用函数的结构函数在这种方法中,函数是在函数结构函数的帮助下创建的。技术上,这种方法比使用
2023-06-15

C++ 函数声明中的默认参数:全面解析其声明和用法

c++++ 中的默认参数提供对函数参数指定默认值的功能,从而增强代码可读性、简洁性和灵活性。声明默认参数:在函数声明中将参数后加上 "=" 符号,后跟默认值。用法:函数调用时,若未提供可选参数,则会使用默认值。实战案例:计算两个数之和的函数
C++ 函数声明中的默认参数:全面解析其声明和用法
2024-05-02

c语言pow函数怎么声明

pow() 函数计算以 base 为底数,exponent 为指数的幂次方,其声明为 double pow(double base, double exponent)。参数包括底数 base 和指数 exponent,返回值为 base 的
c语言pow函数怎么声明
2024-05-21

C#中怎么声明数组

今天就跟大家聊聊有关C#中怎么声明数组,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。C#声明数组时,方括号([])必须跟在类型后面,而不是标识符后面。在C#中,将方括号放在标识符后是
2023-06-17

c语言怎么声明一个函数

在C语言中,可以使用以下格式来声明一个函数:返回类型 函数名称(参数列表);其中,- 返回类型指定函数的返回值类型,可以是基本数据类型(如int、float等)或自定义数据类型。- 函数名称是函数的标识符,用于在代码中调用该函数。- 参数列
2023-09-27

python如何在函数声明中使用默认值

小编给大家分享一下python如何在函数声明中使用默认值,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!在函数声明中使用默认值在几乎所有的Python项目中,大多数
2023-06-27

TypeScript中怎么使用Tuple Union声明函数重载

这篇文章主要介绍“TypeScript中怎么使用Tuple Union声明函数重载”,在日常操作中,相信很多人在TypeScript中怎么使用Tuple Union声明函数重载问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希
2023-06-29

Python中关键字nonlocal和global的声明与解析

一、Python中global与nonlocal 声明 如下代码a = 10 def foo(): a = 100 执行foo() 结果 a 还是10函数中对变量的赋值,变量始终绑定到该函数的局部命名空间,使用global 语句可以改变这种
2022-06-04

Python如何规定当解析器在 XML 文档中找到符号声明时被调用的函数

这篇文章讲解了Python中处理XML符号声明的函数。当解析器在XML文档中遇到符号声明时,它会调用xml.sax模块中的以下函数:start_entity、end_entity、start_notation_decl、end_notation_decl和notation_decl。使用这些函数需要重写SAX解析器类的startDocument和endDocument方法。通过示范代码可以了解如何使用该模块处理XML文档中的符号声明。
Python如何规定当解析器在 XML 文档中找到符号声明时被调用的函数
2024-04-02

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录