<p>看起来pyparsing人员已经预料到了您的问题。来自<a href="https://github.com/pyparsing/pyparsing/blob/master/HowToUsePyparsing.rst" rel="nofollow noreferrer">https://github.com/pyparsing/pyparsing/blob/master/HowToUsePyparsing.rst</a>:</p>
<blockquote>
<p>Performance of <code>pyparsing</code> may be slow for complex grammars and/or large input strings. The <code>psyco</code> package can be used to improve the speed of the <code>pyparsing</code> module with no changes to grammar or program logic - observed improvments have been in the 20-50% range.</p>
</blockquote>
<p>然而,正如Vangel在下面的评论中指出的,<code>psyco</code>是一个截至2012年3月的过时项目。它的后续是<a href="http://pypy.org" rel="nofollow noreferrer" title="PyPy">PyPy</a>项目,它从相同的基本性能方法开始:使用JIT本机代码编译器而不是字节码解释器。如果切换Python实现对您有用,那么使用PyPy应该能够获得类似或更大的收益。在</p>
<p>如果你真的是一个速度恶魔,但想保持一些易读性和声明性语法,我建议你看看ANTLR。可能不是Python生成的后端;我怀疑它是否足够成熟或高性能以满足您的需求。我说的是产品:启动这一切的C后端。在</p>
<p>将pythoncextensionmodule包装在解析器的入口点周围,并将其打开。在</p>
<p>话虽如此,在这个转换过程中您将放弃很多:基本上,您想在解析器中执行的任何Python都必须通过capi完成(不完全是漂亮的)。另外,你必须习惯不同的做事方式。ANTLR有它的魅力,但它不是基于组合词的,所以语法和语言之间没有pyparsing那样简单流畅的关系。另外,它是它自己的DSL,很像lex/yacc,可以呈现一个学习曲线,但是,因为它是基于LL的,所以您可能会发现更容易适应您的需求。在</p>