ラット!ラット! C型言語用の簡単に拡張可能なパーサージェネレータです。 | |
今すぐダウンロード |
ラット! ランキングとまとめ
広告
- ライセンス:
- LGPL
- 価格:
- FREE
- 出版社名:
- Robert Grimm
- 出版社のWebサイト:
- http://www.cs.nyu.edu/rgrimm/xtc/rats.html
ラット! タグ
ラット! 説明
ラット! C型言語用の簡単に拡張可能なパーサージェネレータです。 ラット! C型言語用の簡単に拡張可能なパーサージェネレータです。現在はJavaでパーサーを生成します。ラット!プロジェクトは文法が簡潔で修正可能なように明示的に設計されています。この目的のために、ラット!文法をモジュールに編成します。文脈フリーの文法の代わりに発現文法の解析に構築され、解析されている、すなわち、すなわち、すなわちスキャナーがない、?抽象構文ツリーの自動生成をサポートします。また、パーサーを拡張するための明確に定義されたインターフェースを提供し、ラットによって生成されたコンテキストに敏感な言語とフォーマットを認識します。中間結果を思い出させるため、無制限のルックアヘッドとバックトラッキングの存在下では線形の時間性能が保証されます。その結果、それらは本質的に機能的です(それらが命令的な言語で実装されていても)また「Packratパーサー」とも呼ばれます。これが「ラット!」のいくつかの重要な機能です。 ・ラット!文法とその拡張子を構造化するためのモジュールシステムに依存しています。特に、それは関連する生産を別々のユニットにグループ化するためにモジュールに依存しています。次に、モジュール変更は、他のモジュールへの拡張を簡潔に表現し、製品内の個々の代替案を追加、変更、または削除することができます。最後に、モジュールパラメータは、モジュールとその拡張機能を互いに作成するために使用されます。 ・ラット!表現文法(PEG)の解析に基づく文法。 PEGSがおなじみのEBNF表記で多くの構成を共有している間、鍵の違いは、コンテキストフリーの文法(CFGS)およびYaccやAntLRなどの他のパーサジェネレータによって使用される順序付けられていない選択肢の代わりに順序付けられた選択を利用することです。結果として、ラット!文法はあいまいさを避け、局所的な変更をサポートします。表現を一致させているが、入力を消費しない構文述語を通して追加の柔軟性が提供されているため、無制限のルックアヘッドを提供し、解析による絞りの統合を通じて、文法への新しいトークンの追加を大幅に簡素化します。 PEGは、(YaccおよびAntLRによって使用されるLRまたはLL文法とは異なり)組成物の下で閉じているだけでなく、(一般的なCFGとは異なり)組成物の下で閉じているというさらなる利点を有する。 ・明示的な意味的行動の必要性を排除する、ラット!抽象構文ツリーを自動的に生成できます。特に、意味値(スペースやコメントを認識するものなど)、文字列値(リテラルや識別子を認識するなど)、一般的なツリーノード(潜在的に他のすべてのプロダクションなど)を返すプロダクションをサポートします。 ・コンピュータ読み取り可能なフォーマットは本質的に状況敏感で、PEG(またはCFGS)として表現できないため、ラット!パーサーのコンテキストや状態を管理するための2つの技術をサポートしているため、パーサーを拡張するための明確に定義されたインタフェースがあります。まずラット!同じプロダクション内で直前の表現に依存するローカルコンテキスト、すなわち表現に依存する式に依存する式を認識するためのパーサーアクションを提供します。そのようなローカルコンテキストの例は、いくつかの式のインスタンスの前にある明示的な長さです。第二、ラット!グローバル状態オブジェクトをサポートして、おそらくグローバルコンテキストに依存する式を認識します。州の変更は、ラットの基本的に機能的な性質を保つ軽量取引内で行われます。生成パーサー。グローバルコンテキストの例は、Cを解析するときに変数とTypedefの名前を曖昧させるために使用されるシンボルテーブルです。 このリリースの新機能: ・このリリースでは、生成されたパーサーによるエラー報告が改善され、コード生成のバグが修正されます。
ラット! 関連ソフトウェア