pyparsingの人々があなたの問題を予期していたようです。https://github.com/pyparsing/pyparsing/blob/master/HowToUsePyparsing.rstから:
pyparsing
複雑な文法や大きな入力文字列の場合、のパフォーマンスが遅くなる可能性があります。このpsyco
パッケージを使用すると、pyparsing
文法やプログラムロジックを変更することなく、モジュールの速度を向上させることができます。観察された改善は20〜50%の範囲です。
ただし、以下のコメントでVangelが指摘しているように、psyco
2012年3月の時点で廃止されたプロジェクトです。その後継はPyPyプロジェクトであり、パフォーマンスに対する同じ基本的なアプローチから始まります。バイトコードインタープリターの代わりにJITネイティブコードコンパイラを使用します。Python実装の切り替えがうまくいく場合は、PyPyで同等以上の利益を達成できるはずです。
あなたが本当にスピードデーモンであるが、読みやすさと宣言型構文の一部を維持したい場合は、ANTLRを見てみることをお勧めします。おそらくPythonを生成するバックエンドではありません。それが成熟しているのか、それともあなたのニーズに十分に対応できる高性能なのか、私は懐疑的です。私は商品について話している:それをすべて始めたCバックエンド。
パーサーへのエントリポイントの周りにPythonC拡張モジュールをラップし、緩めます。
そうは言っても、この移行では多くのことを諦めることになります。基本的に、パーサーで実行するPythonはすべて、C APIを介して実行する必要があります(完全にきれいではありません)。また、あなたは物事を行うための非常に異なる方法に慣れる必要があります。ANTLRには魅力がありますが、コンビネータに基づいていないため、文法と言語の間に、pyparsingにあるような簡単で流動的な関係はありません。さらに、これはlex / yaccによく似た独自のDSLであり、学習曲線を示すことができますが、LLベースであるため、ニーズに簡単に適応できる可能性があります。