Pnuts Java 条件
target :: x ( ... )
targetパッケージの関数x の呼び出し

"target" はパッケージ名
x はそのパッケージで定義された関数

static メソッド呼び出し
target.x(...);

target は java.lang.Class オブジェクト

target :: x
targetパッケージの変数x の参照

"target" はパッケージ名
x はそのパッケージで定義された変数または関数

static 変数参照
target.x;

target は java.lang.Class オブジェクト

target . x ( ... )
target オブジェクトのインスタンスメソッド x を呼び出す。

targetjava.lang.Class オブジェクトでない

Class オブジェクトのインスタンスメソッドを呼び出す。
target.class.x(...);

targetjava.lang.Class オブジェクト

targetクラスのstaticメソッドを呼び出す。
target.x(...);

targetjava.lang.Class オブジェクト
java.lang.Classクラスにxというインスタンスメソッドがない
targetクラスにxというstaticメソッドがある

target.invoke("x", new Object[]{...})

target はpnuts.lang.AbstractData オブジェクト

target . xxx
target . xxx = value
target.get("xxx".intern())
target.set("xxx".intern(), value)

target はpnuts.lang.Contextオブジェクト

target.get("xxx")
target.put("xxx", value)

target はjava.util.Mapオブジェクト

target.getXxx()
target.setXxx(value)

target は xxxというプロパティを持つJavaBeans

target.get("x")
target.set("x", value)

target は pnuts.lang.Property または pnuts.lang.AbstractData オブジェクト

static変数にアクセスする
targetClass.xxx
targetClass.xxx = value

上記の条件を1つも充たさない
target はtargetClassクラスを表すjava.lang.Classオブジェクト
targetClassにxxxというstatic変数がある

target [x]
target [x] = value
配列の要素を参照または代入
target[x];
target[x] = value;

targetが配列

indexed.get(x)
indexed.set(x, value)

targetは pnuts.lang.Indexed オブジェクト、または、java.util.Listオブジェクト

map.get(key)
map.put(key, value)

targetは java.util.Map オブジェクト

target ( ... )
関数targetの呼び出し

target は pnuts.lang.PnutsFunction オブジェクト

インスタンス生成
new target(...);

target は java.lang.Class オブジェクト

for (i : x) 式
foreach i (x) 式
while (x.hasNext()){
    Object i = x.next();
    ...
}

x は java.util.Iterator

while (x.hasMoreElements()){
    Object i = x.nextElement();
    ...
}

x は java.util.Enumerator

for (Iterator it = x.iterator();
     it.hasNext(); )
{
    Object i = x.next();
    ...
}

x は java.util.Collection

target < object
target == object
target.compareTo(object) < 0
target.compareTo(object) == 0

target は java.lang.String または java.lang.Comparable

[1,2]
new Object[]{
  new Integer(1),
  new Integer(2)
}

(int[])[1,2]
new int[]{1, 2}

n1 + n2
n1 - n2
n1 * n2
n1 / n2
n1.add(n2)
n1.subtract(n2)
n1.multiply(n2)
n1.divide(n2)

n1 または n2 は pnuts.lang.Numeric オブジェクト

<10進数><単位>
例: 1.2cm
factory.make(<10進数>, <単位>)

<単位>に対するfactoryオブジェクトが登録されていること

Context.registerQuantityFactory(
    <単位>, 
    QuantityFactory)
表1:Pnutsの記法