メインコンテンツまでスキップ

.muro の全構文

一行が一文である。.muro に書けるのはここに並ぶ行だけで、括弧も終端子も入れ子も無い。各行の詳細はその行の頁が持つ。

キーワード 位置引数… key:value…

非字下げの行

行頭に空白の無い行は、それぞれ独立した宣言である。

何を宣言するか
koyu 1.0このファイルを読む言語の版。入口の層でのみ、一度だけ
name 街角の複合ビル建物の名。残りの行全体が値。一度だけ
unit mm長さの単位。v0 は mm のみ
grid X 0 6400 12800通り芯の座標。軸ごとに一度だけ。X1 X2 … と自動命名される
level L1 0 h:3600 slab:600レベル — 名・z・天井高・床組み厚。L4..L10 の範囲宣言は pitch: を要する
space /L5/A/ldk ldk X1..X2 Y1..Y2空間 — パス・型・領域。一次要素
band X X1..X3 Y1..Y2帯 — 位置ではなく寸法と並びで空間を割る。要素は字下げした space
boundary /L5/A/hall /L5/corridor境界 — 二つの空間を結ぶ関係。壁は物ではなく関係である
stack ev L1..L11 type:shaft垂直積層の一括宣言。連続するレベル対に垂直境界を張る
zone /L3..L10/A use:exclusive数える集約。幾何を持たず、パス接頭辞で配下の空間を束ねる
asset SD1 door w:800 h:2000建具アセット — 開口が参照する既定値の束
polygon /site -2600,-7000 …敷地形状。格子に載らない自由頂点で形を書ける唯一の行
column 800 B2..L1柱。位置を書かない — 通り芯の交点のうち床のある所に立つ
import ./assets.muro層を重ねる。並びが強度の宣言であり、後の層ほど強い
over /L5/A/ldk h:2600上書き。対象が無ければエラー
drop /L5/A/store削除。空間・境界・柱の宣言を消す

字下げの行

行頭に空白があれば、直前の非字下げ行に従属する。一段だけで、入れ子は無い。

何を宣言するか
door w:900 at:X4boundary / stack通行する開口
window w:1800 h:1200 edge:Sboundary / stack採光する開口。通行しない
seg w:1800 at:X5 spec:ガラスboundary / stack境界上の数えない分節
line X3,Y1 X3+600,Y2-900boundary描かれた線 — 境界の実現を設計の行為として与える。一つの境界に一本
area X1..X2 Y1..Y2 floor:タイルspace室内の数えない分節。面積・室数・グラフに影響しない
space /L1/wet wet w:4800band帯の要素。領域の代わりに幅 w: を持つ
+ window w:600 name:W1over集合への追加。name: が要る
- door D2over集合からの削除。名で指す
= door D1 w:1000over集合の置換。書いた属性だけを差し替える

行を横断する規則

どの行にも同じように効く規則が六つある。

何を書いているか
一行の読まれ方トークン・コメント・引用符・字下げ・key:value・値の型
位置と領域の書き方通り参照 X1・オフセット X2+600・範囲 X1..X3・矩形の合併
方位と a 側N=+Y S=−Y E=+X W=−X。edge: がどの辺を選ぶか
属性の三層構造層・解釈層・運搬層と、名前空間の掟。要素ごとの台帳
書かなかったとき何が起きるか既定値の唯一の表
koyu — 版の宣言受理される版と、旧版が受理される条件

宣言の順序

多くの行は前方参照してよいが、三つだけは使う前に宣言しなければならない。

先に書かなければならないもの書かないと
gridUndefined grid line name: X1
level (パスやスパンで参照するとき)レベルが決まらず SUF02、スパンなら The range includes an undeclared level
asset (開口が参照するとき)Undefined opening asset: SD1

一方、境界は空間を前方参照してよい。boundary /L1/a /L1/b を空間の宣言より前に書いても通る — 参照先の存在は合成が終わってから REF01 が確かめる。

overdrop は例外で、その行に達した時点で対象が存在していなければならない。上書きは定義ではないので、存在しないものへ意見だけを足すことはできない。

一度だけの宣言

koyu name grid X grid Y は、入口の層で一度だけ書かれる。同じ値を二度書いてもエラーである — 合成の順序による黙った上書きを禁じるためで、name だけは同じ文字列の再宣言を許す。

空間パス・ゾーンパス・アセット名・敷地形状・レベル名の重複もエラーであり、どちらの出所も示される。

定義と上書きは別の文である

対象が既にあるとき対象が無いとき
定義space boundary zone asset level polygonエラー (重複)定義する
上書きover上書きするエラー

書き方から種別が分かるので、読み手も機械も取り違えない。層をどう重ねるか、どの層の意見が勝つかは 合成 にある。