質問

私のBNF、EBNFのための文法を学びます。のBNFはデフォルト値が設定されます.私はかなり良いアイデアなどを使用BNFを再帰降のパーサ;多くの資源です。私を見つけ出すのに苦労資源に変換するのにEBNFを再帰的-系パーサです。これでは難しいですか?今回からのCSの理論の授業をもってEBNFsがまった以上に変換して再帰的-系パーサです。ま かった への変換BNFへの再帰的-系パーサです。

理由はいかがでのEBNFはコンパクト化に寄与しています。

からのEBNFの一般に載る面に挟まれた {} 変換することができる while ループを実行します。その他のガイドラインやルール?

役に立ちましたか?

解決

他よりも硬いではありませんどちらも。それは本当に繰り返し何かを実装し、再帰的に何かを実装の違いです。 BNFでは、すべてが再帰的です。 EBNFでは、再帰の一部を反復表されます。私は英語を使用しますので...あなたが発見したとして、「ゼロ以上は」ループしながら、シンプルでEBNF構文でさまざまなバリエーションがあります。 「一つ以上」は、「ゼロ以上」に続くものと同じです。 「ゼロまたは1回は」if文簡単です。それはほとんどの場合をカバーする必要があります。

他のヒント

あなたは、本質的に再帰下降構文解析にEBNFをコンパイルした、 metacompilers のいわゆる調査する必要があります。どのように彼らはそれを行うことは、あなたの質問に正確な答えです。 (そのかなりstraightfowardが、詳細を理解する良い)。

本当に素晴らしい紙はヴァルSchorreによる「MetaII」紙です。これは正直ツー神1964年10ページでからmetacompiler技術であり、彼はmetacompilerを構築する方法を示します、そしてことが、の他のあまりにコンパイラとの両方の出力だけではなく、提供して!あなたはメタコンパイラは独自の文法を使用して自分自身をコンパイルする方法を実現し、これらのビルド1を、行けばあなたも来ることを驚くべき瞬間があります。この瞬間は私を得ました 私が最初にこの論文につまずいについて1970年に、コンパイラのバックに夢中。これは、ソフトウェア事業の中の誰もがの読むべきこと。

これらのコンピュータサイエンスの論文の一つであります

ジェームズ・ネイバー(ソフトウェア工学における用語「ドメイン」の発明者、および[これらmetacompilersに基づい]最初のプログラム変換システムのビルダーは、偉大なオンライン<のhref = "http://www.bayfronttechnologies.comを持っています/mc_tutorial.html」のrel = 『noreferrer』> MetaIIチュートリアルを、したくないというあなたのものは経験-itからスクラッチを行うため。(私はその隣人と私を除いて、これとは何の関係もありません学部生)が一緒にいた。

どちらの方法は、EBNFからmetacompilersと生成パーサについて学ぶために細かいの方法です。

キーアイデアは、ルールの左手側は構文解析非終端記号戻る真に一致する場合、その関数を作成し、入力ストリームを進めることです。一致すると、入力ストリームが進まないしていない場合はfalse。 機能の内容は、右手側で決定されます。リテラルトークンは直接一致しています。 非終端は、他のルールのために生成された他の関数への呼び出しを引き起こします。 ループ、交替が条件分岐にマッピングしながら、クリーネは*にマッピングされます。 EBNFは対応していない何を、 そして、metacompilersは、どのように「一致」かと言っ以外のanytingんを解析んされていますか? 秘密はEBNFに出力操作を織っています。 MetaII紙はすべて、この結晶が明確になります。

早めのメタコンパイラタII TREEMETAとそのkinは再帰的アパーサです。いたため記載してお到ます。それだけあって自分自身を直視するためです。

いませ------------C再帰的言語です。C/C++の機能を再帰的に同じように早めのメタコンパイラは列に変換します。

再帰を使用できます。れたプログラミング言語まで再帰一般的に用いられている場合のみの分析nexted言語を構築します.例えば、先頭に表現nextedブロックとなります。

りLR再帰的な労組み合わせです。CWIC最終文書化されて広範な消ります。のないオペレーターに合わせた言語の構築を行う。や反転でした。期に失敗した場合の期間は一致します。の入力がない。の'?'を見据えて、試合の言語の構築?expr例えばろうとして構文解析するexpr.の先見の'?'マッチの構築が残っていない又は入力します。

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