Pan(プログラミング言語)

パン
パラダイム宣言型言語
安定版リリース
10.3 2016年10月5日 ( 2016年10月5日)
タイピングの規律力強くダイナミック
OSクロスプラットフォーム
ライセンスApacheライセンス2.0
ファイル名拡張子.pan、.tpl(非推奨)
Webサイトquattor.org
主要な実装
パンク

PAN構成言語は、人間が理解しやすいシンプルな構文を用いて、マシン構成情報と関連スキーマを定義することを可能にします。PAN言語コンパイラは PANテンプレートセットに含まれる構成情報を、マシンが理解しやすいXMLまたはJSON形式に変換します。

PAN言語は、Quattorツールキット内で、1台以上のマシンに対して必要な設定を定義するために使用されます。この言語は主に宣言型言語であり、階層ツリー内の要素に特定の値を設定します。PAN構文は人間に優しく、非常にシンプルでありながら、システム管理者は設定値の設定、全体的な設定スキーマの定義、そして最終的な設定をスキーマに基づいて検証することを同時に行うことができます。

実装

コンパイラ panc は言語の事実上のリファレンス実装として機能し、Javaで実装されていますが、現時点ではOpenJDKでコンパイラを実行することはできません。

設定は、PAN言語で記述されたテンプレートと呼ばれる一連のファイルによって定義されます。これらのテンプレートは、設定パラメータ、設定スキーマ、および検証関数を同時に定義します。各テンプレートには名前が付けられ、同じ名前のファイルに含まれています。テンプレートファイルの構文はシンプルです。

[オブジェクト|宣言|一意|構造]テンプレートテンプレート; [ステートメント… ]

これらのファイルには、ハッシュ記号 ('#') で始まり、次の改行またはファイル末尾で終了するコメントが含まれている場合があります。

種類

PAN 言語には 5 つのプリミティブなアトミック型があります。

  • ブール値
  • 長さ
  • ダブル
  • リンク

プリミティブコレクションタイプは 2 つあります。

  • リスト(要素の順序付きリスト/配列)
  • nlist (名前付きリストはハッシュ、辞書、連想配列と同様に文字列キーと値を関連付けます)

ユーザーは、オプションの検証関数を使用してプリミティブ タイプから構築された新しいタイプを作成し、特定のフィールドに特定の制約を適用できます。

テンプレートの種類

テンプレート修飾子によって識別される 5 つの異なるタイプのテンプレートがあります。

通常のテンプレート

通常のテンプレートでは、宣言にテンプレート修飾子を使用しません。これらのテンプレートには任意の pan ステートメントを含めることができますが、ステートメントは絶対パスに対してのみ実行する必要があります。

オブジェクトテンプレート

オブジェクトテンプレートは、生成される各XML設定プロファイルのルートと考えることができます。PANコンパイラは、処理されたオブジェクトテンプレートごとにXMLプロファイルを生成します。その他の点では、通常のテンプレートと同じです。

宣言テンプレート

これらのテンプレートには、マシンプロファイルを変更しないPANステートメントのみを含めることができます。宣言テンプレートは、処理対象オブジェクトテンプレートごとに、たとえそれが何度含まれていても、一度だけ実行されます。

ユニークなテンプレート

unique 修飾子を使用して定義されたテンプレートは、処理されるオブジェクト テンプレートごとに 1 回だけ含められる点を除いて、通常のテンプレートと同様に動作します。

構造テンプレート

構造テンプレートは、nlistを作成するための便利な代替手段であり、create関数を介して使用されます。構造修飾子を使用して宣言されたテンプレートには、include文と相対パスを操作する代入文のみを含めることができます。include文は、他の構造テンプレートへの参照のみ可能です。