| ")
html.push(this.cont.data_stack[i])
html.push(" |
")
}
html.push("")
document.getElementById('stack').innerHTML=html.join("");
}
/* Kernel Vocabulary */
factor.add_word("kernel","dup", "primitive", function(next) {
var stack = factor.cont.data_stack;
stack[stack.length] = stack[stack.length-1];
factor.call_next(next);
});
factor.add_word("kernel", "drop", "primitive", function(next) {
factor.cont.data_stack.pop();
factor.call_next(next);
});
factor.add_word("kernel", "nip", "primitive", function(next) {
var stack = factor.cont.data_stack;
stack[stack.length-2] = stack[stack.length-1];
stack.pop();
factor.call_next(next);
});
factor.add_word("kernel", "over", "primitive", function(next) {
var stack = factor.cont.data_stack;
stack[stack.length] = stack[stack.length-2];
factor.call_next(next);
});
factor.add_word("kernel", "swap", "primitive", function(next) {
var stack = factor.cont.data_stack;
var temp = stack[stack.length-2];
stack[stack.length-2] = stack[stack.length-1];
stack[stack.length-1] = temp;
factor.call_next(next);
});
factor.add_word("kernel", ">r", "primitive", function(next) {
var data_stack = factor.cont.data_stack;
var retain_stack = factor.cont.retain_stack;
retain_stack.push(data_stack.pop());
factor.call_next(next);
});
factor.add_word("kernel", "r>", "primitive", function(next) {
var data_stack = factor.cont.data_stack;
var retain_stack = factor.cont.retain_stack;
data_stack.push(retain_stack.pop());
factor.call_next(next);
});
factor.add_word("kernel", "call", "primitive", function(next) {
var quot = factor.cont.data_stack.pop();
quot.execute(next);
});
factor.add_word("kernel", "execute", "primitive", function(next) {
var quot = factor.cont.data_stack.pop();
quot.execute(next);
});
factor.add_word("kernel", "clear", "primitive", function(next) {
factor.cont.data_stack = [];
factor.cont.retain_stack = [];
factor.call_next(next);
});
factor.add_word("kernel", "if", "primitive", function(next) {
var stack = factor.cont.data_stack;
var else_quot = stack.pop();
var then_quot = stack.pop();
var condition = stack.pop();
if(condition) {
then_quot.execute(next);
} else {
else_quot.execute(next);
}
});
factor.add_word("kernel", "f", "primitive", function(next) {
factor.cont.data_stack.push(false);
factor.call_next(next);
});
factor.add_word("kernel", "t", "primitive", function(next) {
factor.cont.data_stack.push(true);
factor.call_next(next);
});
factor.add_word("kernel", "=", "primitive", function(next) {
var stack = factor.cont.data_stack;
stack.push(stack.pop()==stack.pop());
factor.call_next(next);
});
factor.add_word("kernel", "bootstrap", "primitive", function(next) {
factor.cont.data_stack.push("/responder/fjsc-resources/bootstrap.factor");
factor.get_word("parser", "run-file").execute(next);
});
factor.add_word("kernel", "callcc0", "primitive", function(next) {
var data_stack = factor.cont.data_stack;
var quot = data_stack.pop();
var new_cont = factor.cont.clone();
var old_next = factor.cont.next;
factor.cont.next = function() {
factor.cont.next = old_next;
factor.call_next(next);
}
new_cont.data_stack.push(factor.cont);
factor.cont = new_cont;
quot.execute(next);
});
factor.add_word("kernel", "callcc1", "primitive", function(next) {
factor.get_word("kernel", "callcc0").execute(next);
});
factor.add_word("kernel", "continue", "primitive", function(next) {
var data_stack = factor.cont.data_stack;
var cont = data_stack.pop();
factor.cont = cont.clone();
factor.call_next(cont.next);
});
factor.add_word("kernel", "continue-with", "primitive", function(next) {
var data_stack = factor.cont.data_stack;
var cont = data_stack.pop();
var data = data_stack.pop();
factor.cont = cont.clone();
factor.cont.data_stack.push(data);
factor.call_next(cont.next);
});
factor.add_word("kernel", "in", "primitive", function(next) {
var stack = factor.cont.data_stack;
var vocab = stack.pop();
var v = factor.vocabs[vocab];
if(!v) {
v = { };
factor.vocabs[vocab] = v;
}
factor.in_vocab = vocab;
factor.call_next(next);
});
factor.add_word("kernel", "current-vocab", "primitive", function(next) {
var stack = factor.cont.data_stack;
stack.push(factor.in_vocab);
factor.call_next(next);
});
factor.add_word("kernel", "use", "primitive", function(next) {
var stack = factor.cont.data_stack;
var vocab = stack.pop();
var v = factor.vocabs[vocab];
if(!v) {
v = { };
factor.vocabs[vocab] = v;
}
factor.using_vocabs.push(vocab);
factor.call_next(next);
});
factor.add_word("kernel", "using", "primitive", function(next) {
var stack = factor.cont.data_stack;
var vocabs = stack.pop();
factor.using_vocabs = [];
for(var i=0;i