我有一个应用程序启动的系统:
python -OO my_app.py
我无法更改应用程序的启动方式,但我可以完全控制应用程序。当使用PLY向应用程序添加解析器时,我被 -OO 删除了 PLY 所依赖的文档字符串这一事实所困扰。
在以 -OO 开头的应用程序中是否无法使用 PLY?有没有什么聪明的 Python 技巧可以用来解决这个问题?
我一直在考虑使用 Cython 来编译解析器模块。我不确定它是否可以完成,它会增加一层复杂性,所以在我走这条路之前,我会很感激任何其他想法。
好的,就像写问题一样找到答案的经典案例......
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]