なんか名前を付けないと呼べないから、コースや本の設計書的なヤツをスケルトンと呼ぶことにする。設計書の記述構文とファイルの両方ともスケルトンと呼ぶ。
スケルトンは、(間接的に)実行可能なDSLプログラム。したがって、プログラミング言語のお作法で作り/解釈する。
プログラミング言語として:
- コンパイラ言語
- コンパイラのターゲット言語はJavaScript〈ECMAScript〉
- 実行エンジンはnode.js。ブラウザではない。
- 実行時に必要なランタイムライブラリは node_modules/ に配置される。
- unifiedエコシステムが主要なランタイムライブラリ。
- Tenjinのワーキングフォルダ内で実行される。
- 実行結果である生成物〈generated contents〉は成果物〈deliverables | Deliv | デリバラブル〉と呼ぶ。
- ワーキングフォルダの内容が同じなら、特定のスケルトンの生成物は同じになる。
- 生成物自体は何度でも作れるので、管理保存が必要なのは、素材とスケルトン。
- コース設計の場合は、素材が記事群で、成果物がコーステキスト
再現性/追跡性を担保するにはバージョン管理の使用が必要になる。
おおよそのスケルトン構文を述べる。
字句トークン:
- 文字列(引用符は「"」)
- 名前
- 括弧記号: '('、 ')'、 '{'、 '}'
- 区切り記号: ','、 '|'、 '&'
- 後置演算子記号: '?'
- 割り当て記号: ':='
BNF風に書く。
// 項は後で定義する 順次グループ ::= '(' 項 (',' 項)+ ')' 選択グループ ::= '(' 項 ('|' 項)+ ')' 全称グループ ::= '(' 項 ('&' 項)+ ')' オプション項 ::= 項 '?' ツリー ::= '{' ヘッド ',' ボディ'}' ヘッド ::= 項 ボディ ::= 項 複合項 ::= 順次グループ | 選択グループ | 全称グループ | オプション項 | ツリー 項 ::= 文字列 | 名前 | 複合項