Перевод из инфиксной в постфиксную запись на Javascript по книге Лафоре
Пытаюсь реализовать алгоритм по книге Лафоре. Пока только для однозначных чисел. Для выражения 5+4+1+2*3 получается требуемое 54+1+23*+, а вот 5+4+1+2*3-9 выдает 54+1+23*9-+ вместо 54+1+23*+9-. Что не так?
ops = {'+':1, '-':1, '/':2, '*':2};
s = '1+2-3+4-5*6-7'.split('');
stack = [];
out = '';
for (var i = 0; i < s.length; i++) {
if(!isNaN(s[i])){
out += s[i];
}
if(isNaN(s[i])){
a = stack[stack.length - 1];
if(stack.length == 0) {stack.push(s[i])}
else {
if(ops[a] >= ops[s[i]]) {
out += a;
stack.pop();
stack.push(s[i]);
}
if(ops[a] < ops[s[i]]) {
console.log('элемент ' +s[i] + ' > ' + ' кон. стека ' + a);
stack.push(s[i]);
}
}
}
if (i == s.length - 1) {
out += stack.pop();
console.log('конец строки',stack)
out += stack.pop();
console.log('конец строки',stack)
}
console.log(s[i],'out',out, 'stack', stack);
}
console.log('out is',out);