INSTRを使うと左から順に調べることしかできないのでF-4さんの言う通り、REPEAT 2 [ REPEAT 3 [ ABC ] ] とかだとうまくいきませんね。
FORで1文字ずつ調べるとしたら、
左かっこと右かっこの個数が同じになったときが終わりなので、こんな感じになりますね
(前略)
S=INSTR(PRG$,"[")
IF S==-1 THEN ?"構文エラー"
E=-1
K=0 'かっこの個数
FOR I=S TO LEN(PRG$)-1
IF PRG$[I]=="[" THEN K=K+1 'かっこが1つ増える
IF PRG$[I]=="]" THEN K=K-1 'かっこが1つ減る
IF PRG$[I]=="]" AND K==0 THEN E=I: BREAK 'ちょうど終わり
NEXT
IF E==-1 THEN ?"構文エラー"
(後略)
360/6とかの計算式か...
「+」「-」「*」「/」の場所を調べて、その前と後にある数字を調べて、計算して、SUBST$でその部分を計算結果に置き換える感じでしょうか
調べる文字が4つあるので、INSTRで無理にやるよりこれもFORで調べた方がシンプルにできそうです。