松柏 OGDL API var 0.92

簡易な記述から、複雑なオブジェクトグラフを生成する、記述言語を提供します。

参照:
          説明

パッケージ
shohaku.ogdl OGDLの全ての機能を提供します。

 

簡易な記述から、複雑なオブジェクトグラフを生成する、記述言語を提供します。JDK1.4以降に対応しています。
OGDL は (Object Graph Description Language) の略です。

詳細な情報は OGDL リファレンス を参照してください。

この言語は単純です。
この言語は完全なインタプリタであり、他のインタプリタ言語にさらに組み込む事を強く意識して設計されています。
簡易性と同時に複雑なオブジェクトグラフを生成可能とするために、最小限の機能に絞り実装しています。

基本型やコレクション生成、汎用オブジェクト生成、メソッドの呼出やオブジェクトの内部参照式等が定義されています。
また数値演算や比較演算は、LISP風の関数として定義されており、Javaの大半の演算が提供されています。

実行は簡単です。
以下は単一の式の解析例です、文字列全体を単一の式として解析して返却します。

    Ogdl ogdl = new Ogdl();//処理の入口は全てこのクラスです。
    
    //数値
    Byte b = (Byte) ogdl.evaluate("123u");
    Short hix = (Short) ogdl.evaluate("0x1FFs");
    Integer oct = (Integer) ogdl.evaluate("0456");
    Integer i = (Integer) ogdl.evaluate("-1234");
    Double b = (Double) ogdl.evaluate("123.4567d");
    Double b = (Double) ogdl.evaluate("3e-4D");
    
    //文字列と文字
    String str = (String) ogdl.evaluate("'文字列'");
    Character c = (Character) ogdl.evaluate("`a`");
    
    //コレクション
    List list = (List) ogdl.evaluate("['春','夏','秋','冬']");
    Map map = (Map) ogdl.evaluate("{ 1='春', 2='夏', 3='秋', 4='冬' }");
    Set set = (Set) ogdl.evaluate("( '春','夏','秋','冬' )");
    
    List linkList = (List) ogdl.evaluate("list:java.util.LinkedList { '春','夏','秋','冬' }"); //実装クラスを指定する
    Set synSet = (Set) ogdl.evaluate("set:syn:java.util.HashSet { '春','夏','秋','冬' }"); //HashSet を Collections.synchronizedSet で装飾
    
    //オブジェクト生成
    Foo foo1 = (Foo) ogdl.evaluate("new: shohaku.ogdl.Foo()");                       //デフォルトコンストラクタ呼び出し
    Foo foo2 = (Foo) ogdl.evaluate("new: shohaku.ogdl.Foo(0.0, 30.9)");              //引数を指定してのコンストラクタ呼び出し
    Foo foo3 = (Foo) ogdl.evaluate("new: shohaku.ogdl.Foo(){ max=0.0, min=30.9 }"); //プロパティを設定
    int[] array = (int[]) ogdl.evaluate("new: int[]{ 1, 2, 3, 4 }");                //配列の生成と初期化
    
    Foo foo4 = (Foo) ogdl.evaluate("new: shohaku.ogdl.Foo#getInstance()");           //ファクトリメソッドの呼び出し
    

依存パッケージ:
・JDK1.4以降に対応しています。