[トップ][編集][ノート][編集履歴][一覧][最近の更新][->English]

ブロック構文っぽいもの

匿名ラベルに引き続き、ブロック構文っぽい構文を提供するマクロ。
あくまで「っぽい」であり、レキシカルスコープなどはない。

abdataのIterateマクロを参考にしました。

notesel, noteunsel

※noteunselの仕様上、入れ子は1つまでです。
メモリノートパッドでちょっとこまったことにある「メモリーノートパッド命令の複数ネストに対応するモジュール」を#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
}