More ... | 編集履歴:差分記録開始以来のブロック構文っぽいものの変更箇所
+ [[匿名ラベル]]に引き続き、ブロック構文っぽい構文を提供するマクロ。~% + あくまで「っぽい」であり、レキシカルスコープなどはない。 + + [https://github.com/vain0/abdata abdata]のIterateマクロを参考にしました。 + + ** notesel, noteunsel + ※noteunselの仕様上、入れ子は1つまでです。~% + ※[http://hsp.tv/play/pforum.php?mode=all&num=72046 メモリノートパッドでちょっとこまったこと]にある「メモリーノートパッド命令の複数ネストに対応するモジュール」を#define文の前に配置することで沢山ネストすることができるようになります。 + {{{ + #define global ctype note(%1) %tnotesel_unsel notesel %1: gosub *%i: noteunsel: if 0 : *%o + + sdim buf1, 256 + sdim buf2, 256 + + note( buf1 ) { + noteadd "This is buf1" + + note( buf2 ) { + noteadd "This is buf2" + + noteadd "----buf2----" + + return + } + + noteadd "----buf1----" + + return + } + + mes buf1 + mes buf2 + }}} + + ** newmod, delmod + ※newmodの引数は指定できないです…なにかいい方法はないものか + {{{ + #define global ctype mod(%1,%2) %tmod newmod %1,%2 : gosub *%i : delmod %1 : if 0 : *%o + + #module a var1 + #modinit + mes "ModInit" + var1 = "ModFunc" + return + + #modterm + mes "ModTerm" + return + + #modfunc func + mes var1 + return + #global + + + mod ( test, a ) { + func test + + return + } + }}} |