2012-03-06 6 views
-1

テーブルドリブンの予測的なトップダウンパーサーまたはバックトラックのトップダウンのパーサーをpyparsingしていますか? Googleが私に結果を提示していない。pyparsingはテーブル駆動ですか?そうでない場合は、パーサをお勧めできますか?

テーブルドリブンの予測型トップダウンパーサーではないなら、誰でもPythonでテーブル駆動の予測的なトップダウンパーサーであることを教えてください。

答えて

3

pyparsingは(曖昧に)バックトラッキングを伴う再帰的な降下です。正確にどのように記述するかについての議論があります。あなたは私の知る限り(paperを)伝えることができ、大きな問題に大幅に高速でなければなりません(ただし、逆に、それはラッパーだ特にので、あまり柔軟になります)として、予測トップダウンでthe python wrapper to antlrような何かをしたいよう

が鳴ります。

-2

パイピングは、決してトップダウンまたは予測的ではありません。構文解析の選択肢を定義するためにパーサによって構築されたテーブルはありません。また、必要な先読みを明示的に実装する必要があります。

Googleでかなりの時間を無駄にしてしまったのは残念ですが、約2分のパイプ設定と20分の簡単な実験でほぼ同じことが分かりました。

+1

「漠然と再帰的な降下」は「トップダウン」とは言いませんか? – EJP

+0

私は、それぞれの低レベルのプリミティブが順番にテストされてから次のテストに進むので、実際にはボトムアップと考えていました。何か「トップダウン」の場合は、バックトラックやマッチの開始と終了、そして中央に向かっての作業がうまくいくと思います。 pyparsingは、より小さな部分の無理やりの力の蓄積を除いて、これまでにない大きな画像*を見ることはできません。これは必ずしも最良のアプローチではありません。例えば、 "" start "+ OneOrMore(Word(alphas))+" end "'を使ってpyparsingが "start blah bleh end"を解析することはできませんが、 "top-down" – PaulMcG

+1

あなたは間違っているでしょう。コンパイラの教科書を参照してください。 – EJP

関連する問題