fix: qdup/tuck/2swap bugs, getline, and cached word pointers
Co-authored-by: aider (openrouter/moonshotai/kimi-k2.6) <aider@aider.chat>
This commit is contained in:
@@ -11,12 +11,12 @@ int main(void) {
|
||||
here = user_mem;
|
||||
|
||||
// Hidden words first
|
||||
add_primitive("exit", do_exit, 0);
|
||||
add_primitive("docolon", do_docolon, 1 << 6);
|
||||
add_primitive("lit", do_lit, 1 << 6);
|
||||
add_primitive("do_dot_quote_inner", do_dot_quote_inner, 1 << 6);
|
||||
add_primitive("0branch", do_zero_branch, 1 << 6);
|
||||
add_primitive("branch", do_branch, 1 << 6);
|
||||
w_exit = add_primitive("exit", do_exit, 0);
|
||||
w_docolon = add_primitive("docolon", do_docolon, F_HIDDEN);
|
||||
w_lit = add_primitive("lit", do_lit, F_HIDDEN);
|
||||
w_dot_quote_inner = add_primitive("do_dot_quote_inner", do_dot_quote_inner, F_HIDDEN);
|
||||
w_zbranch = add_primitive("0branch", do_zero_branch, F_HIDDEN);
|
||||
w_branch = add_primitive("branch", do_branch, F_HIDDEN);
|
||||
|
||||
// Public primitives
|
||||
// Stack ops
|
||||
@@ -69,7 +69,7 @@ int main(void) {
|
||||
add_primitive("cr", do_cr, 0);
|
||||
add_primitive("emit", do_emit, 0);
|
||||
add_primitive("key", do_key, 0);
|
||||
add_primitive(".\"", do_dot_quote, 1 << 7); // immediate
|
||||
add_primitive(".\"", do_dot_quote, F_IMMEDIATE); // immediate
|
||||
add_primitive("words", do_words, 0);
|
||||
|
||||
// Memory
|
||||
@@ -90,14 +90,14 @@ int main(void) {
|
||||
|
||||
// Compilation / control flow
|
||||
add_primitive(":", do_colon, 0);
|
||||
add_primitive(";", do_semicolon, 1 << 7);
|
||||
add_primitive("if", do_if, 1 << 7);
|
||||
add_primitive("else", do_else, 1 << 7);
|
||||
add_primitive("then", do_then, 1 << 7);
|
||||
add_primitive("begin", do_begin, 1 << 7);
|
||||
add_primitive("until", do_until, 1 << 7);
|
||||
add_primitive("while", do_while, 1 << 7);
|
||||
add_primitive("repeat", do_repeat, 1 << 7);
|
||||
add_primitive(";", do_semicolon, F_IMMEDIATE);
|
||||
add_primitive("if", do_if, F_IMMEDIATE);
|
||||
add_primitive("else", do_else, F_IMMEDIATE);
|
||||
add_primitive("then", do_then, F_IMMEDIATE);
|
||||
add_primitive("begin", do_begin, F_IMMEDIATE);
|
||||
add_primitive("until", do_until, F_IMMEDIATE);
|
||||
add_primitive("while", do_while, F_IMMEDIATE);
|
||||
add_primitive("repeat", do_repeat, F_IMMEDIATE);
|
||||
|
||||
/* Additional words */
|
||||
add_primitive("depth", do_depth, 0);
|
||||
|
||||
Reference in New Issue
Block a user