DEF MML_REP$(OLD$)
VAR MML$=OLD$+"",I,J,K,N$,R$
FOR I=0 TO LEN(MML$)-1 '1文字ずつしらべる
'マクロ以外の部分はそのまま
IF MML$[I]!="{" THEN CONTINUE
K=0 'Kはかっこが何重になっているか表す
FOR J=I+1 TO LEN(MML$)-1 '{から先を調べる
IF MML$[J]=="{" THEN K=K+1
IF MML$[J]=="}" AND K==0 THEN BREAK '}の位置がJに入っている
IF MML$[J]=="}" THEN K=K-1
NEXT
'Kはもう使っていない
'=が{}の中にあったら無視する
K=INSTR(I,MML$,"=")
IF K!=-1 AND K<J THEN I=K:CONTINUE
'↑でI=Kとしたのは{A={B}}などの時に"="以降の"{B}"も置き換えするため
N$=MID$(MML$,I+1,J-I-1) 'マクロの名前を取り出す
R$=EXMML$(MML$,N$) 'そのマクロの中身を取り出す
'(EXMML$はExtendedMMLのライブラリにある)
MML$=SUBST$(MML$,I,J-I+1,R$) 'マクロ全体を中身に置き換える
I=I-1 '1文字戻してもう一回調べる
NEXT
RETURN MML$
END
たぶんこんな感じでいけるはずです。