逆ポーランド記法計算機を作ってみた

以下にコードを示す

#!/usr/bin/ruby
# 1行の逆ポーランド記法を突っ込むと
# 計算して結果を出力するプログラム
# 計算は、四則演算


print "input: "

queue = []
stack = []

queue = gets.split(" ").map do |i|
	if i.to_i.to_s == i
		i.to_i
	else
		i
	end
end

while queue.length > 0
	token = queue.shift
	if token.class.name == "Fixnum"
                # トークンがオペランドのとき
		stack.push token
	else
                # トークンがオペレータのとき
		if stack.length < 2
			print "syntax error\n"
			exit -1
		end

		op=stack.pop
		if token == "+"
			stack.push stack.pop + op
		elsif token == "-"
			stack.push stack.pop - op
		elsif token == "*"
			stack.push stack.pop * op
		elsif token == "/"
			stack.push stack.pop / op
		end
	end
end

# 入力トークン列の長さが0かつスタックの長さが1なら終了
if  stack.length == 1
	print stack[0]
else
	print "error"
end

print "\n"

トークンがオペレータのときの操作が泥臭い。もっとすっきり書けないかな?
あと、オペランドかオペレータかの判定も気持ち悪い。
言い出すとキリがないが、入力文字列の解析部分も気持ち悪い。