有没有可能在没有grako的情况下使用with-grako生成的解析器?

2024-04-30 04:43:36 发布

您现在位置:Python中文网/ 问答频道 /正文

看标题。我决定用一个简单的语言分析器来编写一个简单的过滤器。在和grako玩了一会儿之后,我发现我很喜欢它,并且很快就完成了过滤语言(这也很不错:)

现在的问题是,如果我想在其他电脑上使用这个工具,或者把它给其他人,我首先必须让grako在那里可用,这有点麻烦,因为其他东西都是标准的python3东西。在

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


Tags: 工具方法语言分析器标题过滤器标准方式
1条回答
网友
1楼 · 发布于 2024-04-30 04:43:36

简单的回答是。在

Grako生成的解析器确实需要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的解析器是一种设计选择,旨在使解析器更小、更易于理解,这是该项目的主要目标之一(因为有许多其他优秀的解析器生成器可以生成模糊代码)。在

另一个选择是将生成的解析器可以依赖的代码复制到每个解析器上,但这似乎有点不和谐。在

相关问题 更多 >