fjsc: added over, if, =, empty?

darcs
chris.double 2006-12-11 15:31:35 +00:00
parent 3f2eb45dde
commit 6a46eb2b2d
1 changed files with 40 additions and 1 deletions

View File

@ -5,6 +5,7 @@ function Factor() {
dup: function() { self.fjsc_dup(); }, dup: function() { self.fjsc_dup(); },
drop: function() { self.fjsc_drop(); }, drop: function() { self.fjsc_drop(); },
nip: function() { self.fjsc_nip(); }, nip: function() { self.fjsc_nip(); },
over: function() { self.fjsc_over(); },
"+": function() { self.fjsc_plus(); }, "+": function() { self.fjsc_plus(); },
"-": function() { self.fjsc_minus(); }, "-": function() { self.fjsc_minus(); },
"*": function() { self.fjsc_times(); }, "*": function() { self.fjsc_times(); },
@ -14,6 +15,11 @@ function Factor() {
"map": function() { self.fjsc_map(); }, "map": function() { self.fjsc_map(); },
"reduce": function() { self.fjsc_reduce(); }, "reduce": function() { self.fjsc_reduce(); },
"clear": function() { self.fjsc_clear(); }, "clear": function() { self.fjsc_clear(); },
"if": function() { self.fjsc_if(); },
"=": function() { self.fjsc_equals(); },
"f": function() { self.fjsc_false(); },
"t": function() { self.fjsc_true(); },
"empty?": function() { self.fjsc_is_empty(); },
alert: function() { self.fjsc_alert(); } alert: function() { self.fjsc_alert(); }
}; };
} }
@ -75,7 +81,7 @@ Factor.prototype.fjsc_minus = function() {
var stack = this.data_stack; var stack = this.data_stack;
var v1 = stack.pop(); var v1 = stack.pop();
var v2 = stack.pop(); var v2 = stack.pop();
stack.push(v1-v2); stack.push(v2-v1);
} }
Factor.prototype.fjsc_times = function() { Factor.prototype.fjsc_times = function() {
@ -125,6 +131,23 @@ Factor.prototype.fjsc_reduce = function() {
this.data_stack.push(prev); this.data_stack.push(prev);
} }
Factor.prototype.fjsc_if = function() {
var else_quot = this.data_stack.pop();
var then_quot = this.data_stack.pop();
var condition = this.data_stack.pop();
if(condition) {
(then_quot)();
} else {
(else_quot)();
}
}
Factor.prototype.fjsc_equals = function() {
var v1 = this.data_stack.pop();
var v2 = this.data_stack.pop();
this.data_stack.push(v1==v2);
}
Factor.prototype.fjsc_alert = function() { Factor.prototype.fjsc_alert = function() {
alert(this.data_stack.pop()); alert(this.data_stack.pop());
} }
@ -133,5 +156,21 @@ Factor.prototype.fjsc_clear = function() {
factor.data_stack = [ ] factor.data_stack = [ ]
} }
Factor.prototype.fjsc_false = function() {
factor.data_stack.push(false);
}
Factor.prototype.fjsc_true = function() {
factor.data_stack.push(true);
}
Factor.prototype.fjsc_is_empty = function() {
factor.data_stack.push(factor.data_stack.pop().length==0);
}
Factor.prototype.fjsc_over = function() {
var stack = this.data_stack;
stack.push(stack[stack.length-2]);
}
var factor = new Factor(); var factor = new Factor();