DSLパターンのリスト
私のドメイン特化言語に関する書籍では、DSLを記述するために使用する概念を整理するためにパターン構造を使用しています。本書に掲載されているパターンのリストを以下に示します。それぞれのパターンは、各パターンのページにリンクされています。これらのページには、本書の該当する章を示す以上の詳細な情報はあまり含まれていません。これらの主な目的は、各パターンへの参照URIを提供することです。
適応型モデル
代替計算モデルを実装するために、コードブロックをデータ構造に配置します。
代替トークン化
パーサー内から字句解析の動作を変更します。
アノテーション
クラスやメソッドなどのプログラム要素に関するデータ。コンパイル時または実行時に処理できます。
BNF
プログラミング言語の構文を正式に定義します。
クラスシンボルテーブル
静的に型付けされた言語で型認識型の自動補完をサポートするために、クラスとそのフィールドを使用してシンボルテーブルを実装します。
クロージャ
オブジェクト(または第一級データ構造)として表現でき、レキシカルスコープを参照できるようにすることでコードの流れにシームレスに配置できるコードブロック。
コンストラクションビルダー
コンストラクタ引数をフィールドに格納するビルダーを使用して、不変オブジェクトを段階的に作成します。
コンテキスト変数
解析中に必要なコンテキストを保持するために変数を使用します。
デシジョンテーブル
条件文の組み合わせを表形式で表します。
デリミタ指向変換
ソーステキストをチャンク(通常は行)に分割し、各チャンクを解析することで変換します。
依存関係ネットワーク
依存関係によってリンクされたタスクのリスト。タスクを実行するには、その依存関係を呼び出し、それらのタスクを前提条件として実行します。
動的受信
受信クラスでメッセージを定義せずに処理します。
埋め込み解釈
インタープリタのアクションを文法に埋め込むことで、パーサーを実行するとテキストが直接解釈されて応答が生成されます。
埋め込み変換
出力生成コードをパーサーに埋め込むことで、解析の実行に合わせて出力が徐々に生成されます。
埋め込みヘルパー
テンプレートメカニズムに必要なすべての関数を提供することにより、テンプレートシステムのコードを最小限に抑えるオブジェクト。
式ビルダー
通常のcommand-query APIの上にfluentインターフェースを提供するオブジェクト、またはオブジェクトファミリ。
外部コード
DSLで指定できるよりも複雑な動作を提供するために、外部DSLに外部コードを埋め込みます。
関数シーケンス
一連のステートメントとしての関数呼び出しの組み合わせ。
生成ギャップ
継承によって生成されたコードと生成されていないコードを分離します。
リテラル拡張
プログラムリテラルにメソッドを追加します。
リテラルリスト
言語式をリテラルリストで表します。
リテラルマップ
式をリテラルマップとして表します。
マクロ
テンプレート生成を使用して、言語処理の前に入力テキストを別のテキストに変換します。
メソッドチェーン
修飾子メソッドがホストオブジェクトを返すようにすることで、単一の式で複数の修飾子を呼び出すことができます。
モデル非依存生成
セマンティックモデルの明示的な表現がないように、すべてのロジックを生成されたコードにハードコードします。
モデル認識生成
DSLのセマンティックモデルの明示的なシミュラクラムを使用してコードを生成することで、生成されたコードに汎用と特定の分離を持たせます。
ネストされたクロージャ
関数呼び出しのステートメントサブ要素を、引数のクロージャに入れることで表現します。
ネストされた関数
関数呼び出しを他の呼び出しの引数としてネストすることで関数を構成します。
ネストされた演算子式
同じ形式の式を再帰的に含むことができる演算子式(たとえば、算術式やブール式)。
改行区切り文字
改行をステートメント区切り文字として使用します。
通知
エラーやその他のメッセージを収集して呼び出し元に報告します。
オブジェクトスコープ
ベア参照が単一のオブジェクトに解決されるようにDSLスクリプトを配置します。
解析ツリー操作
コードフラグメントの解析ツリーをキャプチャして、DSL処理コードで操作します。
パーサーコンビネーター
パーサーオブジェクトの合成によってトップダウンパーサーを作成します。
パーサージェネレーター
文法ファイルによって駆動されるパーサーをDSLとして構築します。
プロダクションルールシステム
それぞれに条件とアクションを持つ一連のプロダクションルールを通じてロジックを整理します。
再帰下降パーサー
文法演算子には制御フローを、非終端記号認識器には再帰関数を使用してトップダウンパーサーを作成します。
正規表現テーブルレクサー
正規表現のリストを使用して字句解析器を実装します。
セマンティックモデル
DSLによって設定されるモデル。
状態機械
システムを、状態間の遷移を持つ明示的な状態のセットとしてモデル化します。
シンボルテーブル
解析中にすべての識別可能オブジェクトを格納して参照を解決する場所。
構文指向変換
文法を定義し、その文法を使用して変換を構造化することにより、ソーステキストを変換します。
テンプレート生成
出力ファイルを手書きし、テンプレート呼び出しを配置して可変部分を生成することにより、出力を生成します。
テキストの洗練
より本格的な処理の前に、簡単なテキスト置換を実行します。
トランスフォーマー生成
入力モデルをナビゲートして出力を生成するトランスフォーマーを記述することにより、コードを生成します。
ツリー構築
パーサーは、ソーステキストの構文ツリー表現を作成して返します。これは、後でツリーウォーキングコードによって操作されます。