javascript之使用逆波兰表达式(后缀表达式)实现算数表达式计算
使用jexl库
const jexl = require('jexl');
// addBinaryOp 添加二元运算或者修改
// 可以根据jexl的lib/grammar.js里面的优先级来决定执行顺序
jexl.addBinaryOp('|', 40, (left, right) => {
return left * right;
});
console.log(jexl.evalSync('2|3+4'))
知识点
- 栈
- 逆波兰表达式(后缀表达式)
注:具体逆波兰表达式相关介绍可参考
使用JavaScript实现
1.定义栈
class Stack {
constructor() {
this._items = []; // 储存数据
}
// 向栈内压入一个元素
push(item) {
this._items.push(item);
}
// 把栈顶元素弹出
pop() {
return this._items.pop();
}
// 返回栈顶元素
peek() {
return this._items[this._items.length