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