ホビープログラミングで一番最初に始めようと思ったのが、SMFを生成するためのMMLコンパイラだった。そしてその計画は今でも実装が先に進まないままでいる。
文法をネチネチと考えているのが、そのひとつの理由である。通常のプログラミング言語であれば、BMFを利用して正規の構文を構築するものだけど、MML文法というものは、その多くがでたらめな歴史をもっていて、しかも構文上ややこしい要因がいくつも存在する。たとえば、
- 四則演算ができない。c+はドのシャープ、c-はドのフラットを表す。
- 代入ができない。c=はドのナチュラルを表す。
- 比較演算ができない。<と>はオクターブの上下に用いられる。
- . (ドット) は音長を1.5倍にする。.. (2つのドット)は音長を1.75倍にする。
- 命令呼び出しにいちいち ( ) などをつけていられない。そもそも ( や ) は音量調整に使う。[ と ] はループに使う。
そんな各種の特徴もあって、一般的な後置演算子(の構文要素)をサポートしない方がいいようにも思える。しかし一方では & (スラー)のような命令が存在するため、完全に無視するのは難しい。
もっといろいろ練らないといけない。ますます終わらない作業になる。
Leave a comment