Using PLY with python -OO?
我有一个应用程序启动的系统:
1 | python -OO my_app.py |
我无法更改应用程序的启动方式,但我完全控制了应用程序。当使用ply向应用程序添加解析器时,我被-oo删除ply所依赖的docstring这一事实咬了一口。
在以-oo开头的应用程序中不可能使用ply吗?有没有什么聪明的python技巧可以用来解决这个问题?
我一直在考虑使用Cython来编译解析器模块。我不确定是否能做到,这会增加一层复杂性,所以在我走上这条路之前,我会欣赏其他的想法。
好吧,找到答案的经典案例,就像写问题一样…
在PLY手册中明确指出,有一个优化模式用于这个确切的用例。我认为这涉及到另一种性能优化。
请注意,由于-oo删除了docstrings,因此使用optimize=1实例化lexer和parser将不会处理以下空规则:
1 2 3 4 5 6 7 8 9 | 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] |