コンテンツにスキップ

5. 構文

  • 1 行 = 1 コマンド。# は行コメントを開始します。
  • 行はコマンドキーワード (位置) で始まります。残りの引数はすべて key=value でなければなりません。 位置引数は引数順を覚える必要があり、順序の幻覚や省略に脆弱です。mat= / side= のようなキーは LLM の attention アンカーとして働き、生成を安定させます。決定論的な生成を、わずかなトークン削減 より優先します。
window side=front mat_slot=glass offset=2 y=2 size=2x2 sym=true # OK
window front G 2 2 2x2 # 禁止 (位置引数)

ネストは浅く保ちます (struct / def / level / room / theme / site)。深いネストは LLM の生成 ミスを増やします。

メタデータは意味本体ではなくヘッダに置いてかまいません:

@cairn 2026.06 # オプション。書かれた時点の Cairn 言語バージョン (CalVer)
@requires version>=1.20 # capability の下限 (オプション)。推定値との衝突 → E_REQUIRES_CONFLICT
@intended_targets ["1.20.4","1.21.4"] # 希望/ヒント。検証記録ではない (検証はロックに記録)
  • @cairnCairn 言語自身のバージョン です (README のバージョニング節を参照)。 @requires / @intended_targets (Minecraft バージョン) とは 別軸 です。オプションで、将来の コンパイラが正しくパース/警告できるようにする provenance として存在します。
  • @requires については バージョンとエディション を参照してください。
  • @intended_targets は「どの Minecraft バージョン向けに設計したか」のヒントであり、検証済みである という主張ではありません。検証済みターゲットはロックにのみ記録されます。
  • 壁セレクタ: front (+z) / back / left / rightoffset は壁に沿って走り、y は床から (= 0) 測ります。
  • 内側参照: 接頭辞付き、例えば inside.front
  • ブロック、ブロックエンティティ、エンティティはすべて同じセレクタ文法を使います。
  • 重要なメンバは id= を宣言してかまいません。class= はメンバをグループ化します。
  • 未指定のメンバには、コンパイラが意味ベースの安定アドレスを自動付与します (編集モデルは コンポーネント・編集・複数建築)。