拡張子 .spr のファイルは、Springhead独自のファイル形式です。 人が読み書きしやすく、Springheadの仕様が変化しても余り影響を受けないような形式になっています。ファイルを手書きする場合はこの形式を使ってください。
sprファイルはノード定義の繰り返しです。sprファイルの例を示します。
PHSdk{ #PHSdkノード
CDSphere sphere{ #↑の子ノードにCDSphereノードを追加
material = { # CDSphere の material(PHMaterial型)の
mu = 0.2 # 摩擦係数 mu に0.2を代入
}
radius = 0.5 # radiusに0.5を代入
}
CDBox bigBox{
boxsize = 2.0 1.1 0.9
}
}
Sprファイルのノードはディスクリプタ(section_if_desc)を参照)に1対1で対応します。ディスクリプタさえ用意すれば自動的に使えるノードの型が増えます。 ファイルで値を代入しないと、ディスクリプタの初期値になります。 上の例では、PHSdkに追加されるsphere(CDSphere型)は、
CDSphereDesc desc; desc.material.mu = 0.2; desc.radius = 0.5;
としたディスクリプタ desc で作るのと同じことになります。
Sprファイルの文法をBNF+正規表現で書くと
spr = node*
node = node type, (node id)?, block
block = '{' (node|refer|data)* '}'
refer = '*' node id
data = field id, '=', (block | right)
right = '[' value*, ']' | value
value = bool | int | real | str | right
となります。right以降の解釈はfieldの型に依存します。