ポーランド記法計算機
30分で何かをつくってみようシリーズ、その3。良いネタが思いつかなかったので、id:mzp:20070416:rpnの焼き直し。
手に馴染んだ言語なので、とても奇麗に書けた。
lhs.send op,rhs
あたりがすばらしいと思う。
def parse(tokens) op = tokens.shift if op =~ /\A\d+\Z/ op.to_i elsif %w(+ - * / %).include?(op) then lhs = parse(tokens) rhs = parse(tokens) lhs.send op,rhs else raise end end puts parse(ARGV[0].split(' '))