0

我有一个应用程序启动的系统:

python -OO my_app.py

我无法更改应用程序的启动方式,但我可以完全控制应用程序。当使用PLY向应用程序添加解析器时,我被 -OO 删除了 PLY 所依赖的文档字符串这一事实所困扰。

在以 -OO 开头的应用程序中是否无法使用 PLY?有没有什么聪明的 Python 技巧可以用来解决这个问题?

我一直在考虑使用 Cython 来编译解析器模块。我不确定它是否可以完成,它会增加一层复杂性,所以在我走这条路之前,我会很感激任何其他想法。

4

1 回答 1

3

好的,就像写问题一样找到答案的经典案例......

PLY 手册中明确指出,有一种优化模式可用于这个确切的用例。我认为它指的是另一种性能优化。

请注意,由于 -OO 删除了文档字符串,因此使用 optimize=1 实例化您的词法分析器和解析器将不会处理如下所示的空规则:

def p_commands(self, p):
    """commands :
                | commands command"""
    # This will fail when running optimized

def p_command(self, p):
    """command : foo
               | bar"""
    p[0] = p[1]
于 2014-01-30T13:41:59.797 回答