]> gitweb.factorcode.org Git - factor.git/commitdiff
fjsc: added over, if, =, empty?
authorchris.double <chris.double@double.co.nz>
Mon, 11 Dec 2006 15:31:35 +0000 (15:31 +0000)
committerchris.double <chris.double@double.co.nz>
Mon, 11 Dec 2006 15:31:35 +0000 (15:31 +0000)
apps/furnace-fjsc/resources/bootstrap.js

index 942d399789a1e49670468aa7b8f88bfbb1b13649..be64a234358968c0188b4fd0df991d312cb9f39c 100644 (file)
@@ -5,6 +5,7 @@ function Factor() {
     dup: function() { self.fjsc_dup(); },
     drop: function() { self.fjsc_drop(); },
     nip: function() { self.fjsc_nip(); },
+    over: function() { self.fjsc_over(); },
     "+": function() { self.fjsc_plus(); },
     "-": function() { self.fjsc_minus(); },
     "*": function() { self.fjsc_times(); },
@@ -14,6 +15,11 @@ function Factor() {
     "map": function() { self.fjsc_map(); },
     "reduce": function() { self.fjsc_reduce(); },
     "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(); }
   };  
 }
@@ -75,7 +81,7 @@ Factor.prototype.fjsc_minus = function() {
   var stack = this.data_stack;
   var v1 = stack.pop();
   var v2 = stack.pop();
-  stack.push(v1-v2);
+  stack.push(v2-v1);
 }
 
 Factor.prototype.fjsc_times = function() {
@@ -125,6 +131,23 @@ Factor.prototype.fjsc_reduce = function() {
   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() {
   alert(this.data_stack.pop());
 }
@@ -133,5 +156,21 @@ Factor.prototype.fjsc_clear = function() {
   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();
\ No newline at end of file