使用PLY和python -OO?

时间:2014-01-30 13:28:00

标签: python ply

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

python -OO my_app.py

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

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

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

1 个答案:

答案 0 :(得分:3)

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

在PLY手册中明确指出,有一个optimize mode用于这个确切的用例。我认为它提到了另一种性能优化。

请注意,由于-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]