JavaScript的表达式解析器-5. 操作符的实现
来源:互联网 发布:centos7 nginx nodejs 编辑:程序博客网 时间:2024/06/05 20:51
整个结构建立好之后,操作符的实现就相当的简单了。
以左移操作为例:
var igame;importNamespace( 'igame.Expression' );igame.Expression.Operator.ShiftLeft = function (){igame.Expression.Operator.BinaryOperator.call( this );this.setToken( '<<' );}with ( igame.Expression ){ClassDerive( Operator.ShiftLeft, 'ShiftLeft', Operator.BinaryOperator );Operator.ShiftLeft.prototype.evaluate = function ( operands ){Operator.BinaryOperator.prototype.evaluate.call( this, operands );var op2 = operands.pop();var op1 = operands.pop();if ( !( op2 instanceof Operand.Number ) )op2 = new Operand.Number( op2.getValue() );if ( !( op1 instanceof Operand.Number ) )op1 = new Operand.Number( op1.getValue() );if ( op1.getValue() < 0 )throw new Error( 'Shift count less than 0' );return new Operand.Number( op1.getValue() << op2.getValue() );}} // with igame
当然还要适当的修改操作符的优先级。优先级定义在Operator.js中。
/*! Define operators' priority* Use classname, not token(or operator)*/igame.Expression.Operator.OPERATOR_PRIORITY = {// Logic'Or': 0,'And': 0,// Compare'Greater': 1,'GreaterEqual': 1,'Equal': 1,'NotEquual': 1,'Less': 1,'LessEqual': 1,// Bitwise'BitwiseOr': 2,'BitwiseAnd': 2,'BitwiseXor': 2,// Mathematic'Add': 3,'Sub': 3,'Mul': 4,'Div': 4,'Mod': 4,'ShiftLeft': 4,'ShiftRight': 4,// Function'Function': 5,// Unary'Minus': 6,'Plus': 6,'Not': 6};
- JavaScript的表达式解析器-5. 操作符的实现
- JavaScript的表达式解析器-6. 函数的实现
- JavaScript的表达式解析器-1.引言
- JavaScript的表达式解析器-2. 模拟继承
- JavaScript的表达式解析器-3. 成员属性系统
- JavaScript的表达式解析器-4. 使用JSFormula
- 栈操作表达式的解析和运算
- 解析JavaScript中delete操作符不能删除的对象
- java实现递归下降的表达式解析器
- 自己实现的一个公式表达式解析
- + - * / ( ) 四则运算表达式解析的初步实现
- 正则表达式实现文件的解析
- JavaScript的正则表达式实现邮箱校验
- javascript 正则表达式 一个 匹配和解析url的
- javascript中解析四则运算表达式的算法和示例
- JavaScript的操作符
- JavaScript 预解析的原理及实现
- html5--javascript的一系列操作(事件、正则表达式的验证)
- 筛选DataTable数据的方法
- 网站分析实战--如何以数据驱动决策,提升网站价值(大数据时代的分析利器)
- ADO 数据库记录查询
- Eclipse是如何连接Oracle数据库的
- 关于android手机充电时间的计算公式
- JavaScript的表达式解析器-5. 操作符的实现
- ASP.NET MVC 入门8、ModelState与数据验证
- 笔记:OpenCV 读取摄像头并显示图像的R、G、B三个通道的直方图
- 可外链相册大合集!
- StringUtils类
- gdb调试stl相关
- OGRE实现鼠标选取物体
- alerter popup dropdown
- 二极管