与python -OO一起使用ply



我有一个系统,该系统开始使用:

python -OO my_app.py

我无法更改应用程序的启动方式,但我可以完全控制应用程序。当使用ply添加解析器时

不可能在以-OO开头的应用程序中使用PLY?有没有聪明的python技巧可以用来解决此问题?

我一直在考虑使用Cython编译解析器模块。我不确定是否可以这样做,并且会增加一层复杂性,因此在我走那条路之前,我会很感激任何其他想法。

好吧,在写这个问题时找到答案的经典案例...

在PLY手册中清楚地说明,有一种优化模式,用于此精确用例。我认为它是指另一种性能优化。

请注意,由于-OO删除docstrings,用优化的lexer和解析器实例化= 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]