質問

私はYARDをたくさん使用して楽しんでいた。

http://www.ootl.org/yard/する

http://code.google.com/p/yardparser/する

http://www.codeproject.com/KB/recipes/yard- tokenizer.aspxする

私は完全に機能電卓を構築することができました。私は、PHPパーサを行うためにYARDを評価しています。親切PEG文法&パーザジェネレータの制限について助言してください。ありがとうございました!

役に立ちましたか?

解決

私は、PEGを持つ大きな「問題」が、彼らは根本的に異なる方法で作動するよう、彼らは文法の通常の分類に適合しないということだと思います。通常の文法は、彼らが発生することができるすべての可能な文(プログラム)を表すという意味で「後方」です。彼らはもう一方の端から問題に来る。

- PEGは、解析する方法について説明します。

私の見解では、これは問題を考えると、確かに私は何もしないだろう任意の手書き(再帰下降)パーサーのために、より自然な方法である。

他のヒント

PEG文法の主な制限は、彼らがすべてで曖昧さに対処していないということです。

あいまいさに対処するCFG(文脈自由文法)ツールを使用しての最もイライラ部品の一つであるため、

確かに、これはまた、彼らの強さです。

ペグあなたがあいまい一致するだろうが、あなたはしたくないいる別のルールの前に一致するルールを注文して明示的にあいまいさを扱うます。

問題は、あなたがいつもにも、私が試したものは、に曖昧さのための文法を解析していない少なくとも、言語や文法、PEG発電機、内の一部またはさえ曖昧のいずれかを知らないということですあなたが設計し、それらを正しい方法で対処するために、あなたのルールを注文し、それらを見つけ、助けます。

はyaccやbisonのようなCFGのパーサジェネレータは、あなたの文法を分析し、すべての曖昧さを報告します。残念ながら、彼らはしばしばの意味を理解することは難しいことができ、かなり不可解な方法でそれらを報告しています。そしてもちろん、それはそれらに対処するための文法を修正することはしばしば困難です。しかし、少なくとも、あなたは彼らが存在することを認識されます。

あなたはそれPEGを作るたら、それはそれだけのルールに一致すると、おそらく場合にもマッチします静かに到達不能規則た、任意のより多くのあいまいさを持っていないため、

PEG文法を使用すると、あなたの概念文法におけるあいまいさの穏やか無知することができ彼らは高い優先順位を持っていました。これらは、あなたのテストに表示されないかもしれないが、リリース後に表示される場合があります。

CFGでは、あなたが開発中のあいまいさに対処することを余儀なくされている文法が、それは容易ではないだろう。

<時間> の<のhref =」

イベントでは、私はそれを明確に、ここではのラムダのジョシュア・ハーバーマンによる6歳の議論オーバーだ究極ののプログラミング言語のブログ作っていませんよhttp://lambda-the-ultimate.org/node/3039#comment-44356" のrel = "nofollowを">のPEGとPackratパース答えののではありません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top