60 lines
2.0 KiB
JavaScript
60 lines
2.0 KiB
JavaScript
Operator = {
|
|
ADD : function (leftVal, rightVal) { return leftVal + rightVal; },
|
|
SUBTRACT : function (leftVal, rightVal) { return leftVal - rightVal; },
|
|
MULTIPLY : function (leftVal, rightVal) { return leftVal * rightVal; },
|
|
DIVIDE : function (leftVal, rightVal) { return leftVal / rightVal; },
|
|
|
|
EQUALS : function (leftVal, rightVal) { return (leftVal == rightVal) ? 1 : 0; },
|
|
NOTEQUALS : function (leftVal, rightVal) { return (leftVal != rightVal) ? 1 : 0; },
|
|
|
|
GT : function (leftVal, rightVal) { return (leftVal > rightVal) ? 1 : 0; },
|
|
LT : function (leftVal, rightVal) { return (leftVal < rightVal) ? 1 : 0; },
|
|
GTEQ : function (leftVal, rightVal) { return (leftVal >= rightVal) ? 1 : 0; },
|
|
LTEQ : function (leftVal, rightVal) { return (leftVal <= rightVal) ? 1 : 0; },
|
|
|
|
BOOLEAN_OR : function (leftVal, rightVal) { ((leftVal != 0) || (rightVal != 0)) ? 1 : 0; },
|
|
BOOLEAN_AND : function (leftVal, rightVal) { ((leftVal != 0) && (rightVal != 0)) ? 1 : 0; }
|
|
};
|
|
|
|
function VariablesHolder() {
|
|
this.variables = {};
|
|
}
|
|
VariablesHolder.prototype.init = function () {
|
|
this.variables = {
|
|
"True": 1,
|
|
"False": 0
|
|
};
|
|
};
|
|
VariablesHolder.prototype.getVariable = function (name) {
|
|
if (name in this.variables) {
|
|
return this.variables[name];
|
|
}
|
|
return 0;
|
|
};
|
|
VariablesHolder.prototype.setVariable = function (name, value) {
|
|
this.variables[name] = value;
|
|
};
|
|
Variables = new VariablesHolder();
|
|
|
|
function BinaryExpression(op, left, right) {
|
|
this.op = op;
|
|
this.left = left;
|
|
this.right = right;
|
|
}
|
|
BinaryExpression.prototype.eval = function () {
|
|
return this.op(this.left.eval(), this.right.eval());
|
|
};
|
|
|
|
function ValueExpression(value) {
|
|
this.value = value;
|
|
}
|
|
ValueExpression.prototype.eval = function () {
|
|
return this.value;
|
|
};
|
|
|
|
function VariableExpression(variable) {
|
|
this.variable = variable;
|
|
}
|
|
VariableExpression.prototype.eval = function () {
|
|
return Variables.getVariable(this.variable);
|
|
}; |