記法作りに関するメモ。
まず、Wiki とかの独自記法は(X)HTML に変換されることが多い。そのことから、独自記法の要素は、
- ブロック要素
- インライン要素
の二つの種類に分けられる。
で、(X)HTML(というか XML)を 記法 としてみると、大雑把に、
- 普通の要素の構文(呼び方しらない)
- 空要素の構文
の二種類に分けられる。
んでさらに、独自記法の場合、記号で囲んだり 先頭につけることによって意味づけする
- 短縮構文
がある。
独自記法で最初のブロック or インライン要素を要素(意味づけ)ごとに独自の構文を持たせると、ネタ切れするし、要素を追加したいときに、既存の構文の隙間を縫うように追加せざるを得ないことになるので、この二つは汎用化しといたほうがいい。
以上をまとめると、独自記法に必要な構文は、
- 汎用ブロック要素構文
- 汎用インライン要素構文
- 汎用空要素構文
- 短縮構文
になる。
上から三つだけだと、Parser 書くのも楽なんだろうけど、それだと、独自記法書くほうが面倒。で、短縮構文を増やすことになるんだろうけど、なるべく同じようなパターンにしたほうがいい。
それとあと、構文を入れ子にしようとする場合、開始文字と終了文字を非対称にする(同じ文字にしない)こと。でないと、構文の切れ目が正しく判別できない場合がある。
ちなみに、この Blog で使っている独自記法の構文では見事に入れ子にできない罠にはまっている。まあ、これは Parser の実装の仕方にもよるのかな?よくわからないんだけど。
メモといいながら長いぞこれ。