スケルトン

なんか名前を付けないと呼べないから、コースや本の設計書的なヤツをスケルトンと呼ぶことにする。設計書の記述構文とファイルの両方ともスケルトンと呼ぶ。

スケルトンは、(間接的に)実行可能なDSLプログラム。したがって、プログラミング言語のお作法で作り/解釈する。

プログラミング言語として:

  • コンパイラ言語
  • コンパイラのターゲット言語はJavaScript〈ECMAScript〉
  • 実行エンジンはnode.js。ブラウザではない。
  • 実行時に必要なランタイムライブラリは node_modules/ に配置される。
  • unifiedエコシステムが主要なランタイムライブラリ。
  • Tenjinのワーキングフォルダ内で実行される。
  • 実行結果である生成物〈generated contents〉は成果物〈deliverables | Deliv | デリバラブル〉と呼ぶ。
  • ワーキングフォルダの内容が同じなら、特定のスケルトンの生成物は同じになる。
  • 生成物自体は何度でも作れるので、管理保存が必要なのは、素材とスケルトン。
  • コース設計の場合は、素材が記事群で、成果物がコーステキスト

再現性/追跡性を担保するにはバージョン管理の使用が必要になる。


おおよそのスケルトン構文を述べる。

字句トークン:

  1. 文字列(引用符は「"」)
  2. 名前
  3. 括弧記号: '('、 ')'、 '{'、 '}'
  4. 区切り記号: ','、 '|'、 '&'
  5. 後置演算子記号: '?'
  6. 割り当て記号: ':='

BNF風に書く。

// 項は後で定義する
順次グループ ::= '(' 項 (',' 項)+ ')'
選択グループ ::= '(' 項 ('|' 項)+ ')'
全称グループ ::= '(' 項 ('&' 項)+ ')'
オプション項 ::= 項 '?'
ツリー ::= '{' ヘッド ',' ボディ'}'
ヘッド ::= 項
ボディ ::= 項

複合項 ::= 順次グループ | 選択グループ | 全称グループ |  オプション項 | ツリー

項 ::= 文字列 | 名前 | 複合項