スクリプト解析
2007年07月31日
独自のスクリプト解析が必要なので独自に実装を試みています。
優先順に符号でスプリットして再帰的に評価する方法を考えました。
何となく動いているようですが最後はevalに渡していて、かつ都合上、数値型もブーリン型も文字列型に変換しているので、Rubyが自動型という事もあって評価結果の戻しにちょっと手をこまねき気味です。
#
# 符号の優先順位に従って、分解する。再起ルーチンの入り口にもなっている。
#
def calc(arg)
allmark = ['&&','||','==','!=','<','>','<=','>=','!=','+','-','*','/']
# 式を含んでいれば再帰的に評価する
for mk in allmark
return operation(arg, mk) if arg.index(mk) != nil
end
return fugou(get_var(arg)) if arg.index('@n') == 0
return fugou(get_value_moji(arg).to_s) if arg.index('"') == 0
return fugou(arg)
end
優先順に符号でスプリットして再帰的に評価する方法を考えました。
何となく動いているようですが最後はevalに渡していて、かつ都合上、数値型もブーリン型も文字列型に変換しているので、Rubyが自動型という事もあって評価結果の戻しにちょっと手をこまねき気味です。
#
# 符号の優先順位に従って、分解する。再起ルーチンの入り口にもなっている。
#
def calc(arg)
allmark = ['&&','||','==','!=','<','>','<=','>=','!=','+','-','*','/']
# 式を含んでいれば再帰的に評価する
for mk in allmark
return operation(arg, mk) if arg.index(mk) != nil
end
return fugou(get_var(arg)) if arg.index('@n') == 0
return fugou(get_value_moji(arg).to_s) if arg.index('"') == 0
return fugou(arg)
end







