bison/flex解析器引擎的python绑定

pybison的Python项目详细描述


侏儒

python-3 badgeBuild Status

欢迎来到皮比森!
gnu bison/flex的原始速度和能力带给python

什么是野牛?

pybison是一个有效地将bisonflex“包装”到python类结构中的框架。

您可以定义一个解析器类,将标记和引用定义为属性,并将目标解析为docstring中包含规则的方法, 然后实例化并运行。

black magick发生在后台,因此每次yyparse()解析解析目标时都会得到回调。

安装

您需要:

我们假设已经安装了python、pip和c编译器。

依赖性

首先,安装依赖项bisonflex

arch Linux

sudo pacman -S bison flex

ubuntu

sudo apt-get install bison flex

安装

现在,install pybison使用:

pip install pybison

以下命令将验证安装是否成功:

python -c "import bison"

已经有python的解析器了。为什么要重新发明轮子?

我查看了所有基于python的解析框架。

在imo中,最好的一个是ply-一个纯python lexx/yacc实现 (这是我在设计pybison的oo模型时大量借鉴的)。

但是ply有一些主要的限制:

  • 在lexer中使用“named groups”正则表达式将创建 100个代币的硬限制-不足以轻松处理少校 语言
  • 纯python实现是一种便利,但却带来了一种残酷的 性能惩罚
  • 分析器引擎是slr,不是完整的lalr(1)

其他的框架使用了一种巧妙的脚本语法-

我怎么用这个?

有关用法,请参阅examplesdocs

合作者

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java为什么这一行是charg=(char)(br.read());被跳过?   java三重DES中的IV在哪里?   java Lombok注释不在Intellij idea下编译   java为什么我不能使用过滤器作为流中的最后一步   sqlite Java编译错误找不到符号方法next()   在Java中解析处理对int来说太大的数字   java摄像头不工作   java是“断言错误”好的做法?   java确定api请求是来自CURL还是POSTMAN?   JavaSpringMVC导航   java使单例模式代码更强大   当Java(解释器)区分大小写时,为什么Java编译器(javac)不区分大小写?   java注释字符串[]oneArr();vs字符串[][]twoArr();公告   java命名查询的利弊   java使用log4jweb在web应用程序中配置Log4j2。罐子   java正则表达式查找以开头和结尾的所有可能出现的文本~   java从字符串执行方法