是否可以使用grako生成的解析器而不使用grako?

时间:2016-03-18 19:17:53

标签: python python-3.x parser-generator grako

看标题。对于我正在编写的一个小工具,我想介绍一个简单的布尔过滤器语言并决定这样做"正确"并使用解析器生成器。在玩了一下grako之后,我发现我喜欢它并且相当快地完成了过滤器语言(这也很好:))

问题是现在,如果我想在其他计算机上使用该工具或将其交给其他人,我首先必须以某种方式在那里使用grako,这有点麻烦,因为其他一切都是标准的python3东西。

我想通过共同打包必要的grako类是可能的,但这似乎有点混乱(许可将以任何方式提及)。也许我忽略了一些内置的方法。

1 个答案:

答案 0 :(得分:1)

简短的回答是

Grako生成的解析器确实需要#!/bin/bash for pid in $(xdotool search --class "libreoffice-writer") do xdotool type --window $pid 'Hello World' done 库。

例如:

grako

所有with self._group(): with self._choice(): with self._option(): self._token('nameguard') with self._option(): self._token('ignorecase') with self._option(): self._token('left_recursion') self._error('expecting one of: ignorecase left_recursion nameguard') 来自self._xyz()grako.contexts.ParseContext。所需的回溯,缓存和簿记都隐藏在上下文管理器和装饰器之后。

生成的解析器依赖于grako.parsing.Parser是一个旨在使解析器更小且更容易理解的设计选择,这是该项目的主要目标之一(因为有很多其他很好的解析器生成器可以生成混淆代码)。

另一种选择是将生成的解析器可能依赖的代码复制到每个解析器上,但这看起来有点不合理。