読者です 読者をやめる 読者になる 読者になる

mmlは見た目が9割

id:keim_at_Si:20080515の続き.方言の多いMMLの中でも特にひどい「繰り返し」と「コメント」について再考.

繰り返し

マビmmlとみゅあっぷ98は特殊なので除外,替わりにFMPとPMDを追加

[n ... | ... ]    ; TSS(コンパイル時展開)
[  ... | ... ]n   ; ppmck(コンパイル時展開)
[n ... : ... ]    ; さくら
[  ... : ... ]n   ; PMD, mml2midi
[  ... / ... ]n   ; FMP
/:n ... / ... :/  ; TSS, FlMML
|:  ... \ ... :|n ; ppmck

混沌としてはいるものの,大筋で"[ : ]" か "[ | ]" がメジャーといって良いっぽい.
"/: / :/" や "|: \ :|" は,いかにも音楽ですって感じで嫌いじゃないけど,複雑なネストになったときの可読性の低下が括弧より著しいという問題がある.あと文字数圧縮の点で不利.
反復脱出記号について,"|"は小文字の L と混同しやすく,":"はセミコロンと混同しやすい.MMLにおいて,小文字 L は極めて重要/頻出なコマンドである事を考えるとコロンの方が若干有利に思えるが,小文字 L コマンドはほぼ確実にその後に数字が来るのに対して,反復脱出記号 "|" の後に数字は来ないので,実際そこまで混同しない.また,コロンとセミコロンは打ちミスも起こし易い点で微妙.他方,FMPの "/" は(バックスラッシュを除けば)混同の可能性の低い優秀な記号であるが,それ故もっと利用価値の高いコマンドに宛がわれるべきとも言える.また,"/"はコメント表記で使用される可能性がある.
繰り返し回数の指定位置については可読性の点では一長一短だと思うが,マクロとの併用を考えた場合,後記方式の方が,マクロの外で繰り返し回数を指定できるというメリットがある.
結果 ppmck(コンパイル時展開)方式が一番妥当な気がする.

コメント表記

マビmmlとさくらは特殊なので除外.同じくFMPとPMDを追加

{ ... }   ; TSS
/* ... */ ; FlMML, ppmck, mml2midi
; ...     ; PMD, ppmck, みゅあっぷ98, mml2midi
/ ...     ; z-music
'" ... "  ; FMP(ちょっと意味違う)
` ... `   ; PMD(行頭)
' ...     ; N88BASIC(笑)

TSSの"{ ... }"は,ネスト可/レンジ把握が容易とかなり良いんだけど,4つしか存在しない貴重な括弧記号をコメントごときに宛てがうのは,仕様設計からすると勿体無いと思ってしまう.
プログラマに馴染むのはやっぱり "/* ... */" だと思う.というか,なじみの深い "//" や "#" が無いのはなんでなんだぜ?あと行頭シングルクォーテーションによるコメントアウトってのもノスタルジックで趣があって良いかも知れない.可読性の点では難があるけど.
というか,コメントアウトは過去のMMLよりもプログラムやスクリプト言語から,"/* ... */" と "//" 辺りを拝借するのが良いんじゃないかなと思う.