var e = '3 4 2 * 1 5 - 2 3 ^ ^ / +'
eval: {
document.write(e, '
')
var s=[], e=e.split(' ')
for (var i in e) {
var t=e[i], n=+t
if (!t) continue
if (n == t)
s.push(n)
else {
if ('+-*/^'.indexOf(t) == -1) {
document.write(t, ': ', s, '
', 'Unknown operator!
')
break eval
}
if (s.length<2) {
document.write(t, ': ', s, '
', 'Insufficient operands!
')
break eval
}
var o2=s.pop(), o1=s.pop()
switch (t) {
case '+': s.push(o1+o2); break
case '-': s.push(o1-o2); break
case '*': s.push(o1*o2); break
case '/': s.push(o1/o2); break
case '^': s.push(Math.pow(o1,o2))
}
}
document.write(t, ': ', s, '
')
}
if (s.length>1) {
document.write('Insufficient operators!
')
}
}