跳转到主要内容

Plex是一个构建词法分析器的库

项目描述

Plex是一个构建词法分析器的库。

Plex是一个用于构建词法分析器(或扫描器)的Python模块。Plex扫描器几乎具有GNU Flex生成的扫描器的所有功能,并且以非常相似的方式指定。令牌由正则表达式定义,每个令牌都有一个相关联的操作,这可能包括返回一个字面值,或者调用一个任意函数。

Plex旨在满足现有Python正则表达式模块未能满足的需求。如果您曾尝试使用其中之一来实现扫描器,您会发现它们并不真正适合这项任务。您可以定义一组匹配您的令牌的正则表达式,但一次只能对输入匹配其中一个。要同时匹配所有这些,您必须将它们全部组合成一个大的正则表达式,但这样您就没有简单的方法来判断哪个匹配了。这就是Plex旨在解决的问题。

Plex的另一个优点是它将所有的正则表达式编译成一个单一的状态转换图(DFA)。一旦完成,输入就可以以与要扫描的字符数量成正比的时间进行处理,而与正则表达式的数量或复杂性无关。Python现有的正则表达式匹配器没有这个特性。

更多信息

您可以在基于Sphinx的文档中获取更多信息,位于http://packages.python.org/plex/

反馈和参与

联系方式

原作者

计算机科学系,
坎特伯雷大学,
基督城,
新西兰

维护者:Stéphane Klein <stephane@harobed.org>

变更

2.0.0 (2009-12-13)

  • 创建 Plex Python 包

  • 将文档转换为 Sphinx 格式

  • 将测试转换为 nose

  • 使用 PEP8 建议格式化源代码

    • 4 个空格缩进

    • 将包和模块名称转换为小写

1.1.5

  • 消除在使用 Python 2.3 时将值赋给 None 的语法警告。

1.1.4

  • 修复了导致 Rep 或 Rep1 的参数在换行后无法匹配的 bug。

1.1.3

  • 修复了在某些情况下导致 Eol 无法匹配行首的 bug。

1.1.2

  • 将 Scanner.yield() 更改为 Scanner.produce() 以适应 Python 2.3,其中 yield 是一个关键字。

  • 修改了 test10,使其不再如此依赖字符串表示的详细信息。

1.1.1

  • 修复了两个小 bug:取消注释 Scanner.next_char() 并在 Regexps.py 中添加了 types 的导入。

1.1

  • 添加了不区分大小写的匹配支持。

1.0

  • 第一个官方版本。

项目详情


下载文件

下载适合您平台文件的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。

源分布

plex-2.0.0dev.tar.gz (20.7 kB 查看哈希值)

上传时间:

支持