strmid関数のように-1で右から検索できないかな〜と考えてみたのですが実際にやって
みると出来ませんでした。(^^ゞ
これは標準実装されていた方がいいかもしれませんね。
(kz3さんの云うように構文解析時の括弧の整合性チェックはそのままではできませんが)
Cランタイムライブラリを見るとstrtokというトークン分解関数があるようです。
http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/vclib/html/_crt_strtok.2c_.wcstok.2c_._mbstok.asp
#module
#uselib "msvcrt.dll"
#cfunc _mbstok "_mbstok" sptr, sptr
; トークンを配列分解
#deffunc GetToken array v1, str s1, str s2, local v2, local token
sdim v1
v2 = 0
token = _mbstok(s1, s2)
while token
v1(v2) = strf("%s", token)
token = _mbstok(0, s2)
v2++
wend
return
; トークンを無視して結合
#defcfunc GetTokenCpy str s1, str s2, local v1, local v2, local token
GetToken token, s1, s2
sdim v1
foreach token
v1 += token(cnt)
loop
return v1
#global
string = GetTokenCpy("5 * (4 / (3 + 2) - 1)", " ")
GetToken token, string, "()"
foreach token
mes token(cnt)
loop
stop
トークン分解は出来ますが、利用するのは少し面倒かも知れません。
(上記は計算するところまでなんとか作ろうとしたけど面倒で挫折した (^_^; )