feat: implement missing Forth features and fix compiler warnings
Co-authored-by: aider (openrouter/moonshotai/kimi-k2.6) <aider@aider.chat>
This commit is contained in:
@@ -7,8 +7,8 @@ int main(void) {
|
||||
add_primitive("docolon", do_docolon, 1 << 6); // Hidden
|
||||
add_primitive("lit", do_lit, 1 << 6); // Hidden
|
||||
add_primitive("do_dot_quote_inner", do_dot_quote_inner, 1 << 6); // Hidden
|
||||
add_primitive("0branch", do_zero_branch, 1 << 6); // Hidden (for IF)
|
||||
add_primitive("branch", do_branch, 1 << 6); // Hidden (for ELSE, BEGIN)
|
||||
add_primitive("0branch", do_zero_branch, 1 << 6); // Hidden (for IF, UNTIL, WHILE)
|
||||
add_primitive("branch", do_branch, 1 << 6); // Hidden (for ELSE, REPEAT)
|
||||
|
||||
// Public primitives
|
||||
// Stack ops
|
||||
@@ -64,9 +64,32 @@ int main(void) {
|
||||
add_primitive(".\"", do_dot_quote, 1 << 7); // Immediate
|
||||
add_primitive("words", do_words, 0);
|
||||
|
||||
// Compilation words
|
||||
// Memory
|
||||
add_primitive("@", do_fetch, 0);
|
||||
add_primitive("!", do_store, 0);
|
||||
add_primitive("+!", do_plus_store, 0);
|
||||
add_primitive("c@", do_cfetch, 0);
|
||||
add_primitive("c!", do_cstore, 0);
|
||||
add_primitive("variable", do_variable, 0);
|
||||
add_primitive("constant", do_constant, 0);
|
||||
add_primitive("here", do_here, 0);
|
||||
add_primitive("allot", do_allot, 0);
|
||||
|
||||
// Return stack
|
||||
add_primitive(">r", do_to_r, 0);
|
||||
add_primitive("r>", do_r_from, 0);
|
||||
add_primitive("r@", do_r_fetch, 0);
|
||||
|
||||
// Compilation / control flow
|
||||
add_primitive(":", do_colon, 0);
|
||||
add_primitive(";", do_semicolon, 1 << 7); // Immediate
|
||||
add_primitive("if", do_if, 1 << 7); // Immediate
|
||||
add_primitive("else", do_else, 1 << 7); // Immediate
|
||||
add_primitive("then", do_then, 1 << 7); // Immediate
|
||||
add_primitive("begin", do_begin, 1 << 7); // Immediate
|
||||
add_primitive("until", do_until, 1 << 7); // Immediate
|
||||
add_primitive("while", do_while, 1 << 7); // Immediate
|
||||
add_primitive("repeat", do_repeat, 1 << 7); // Immediate
|
||||
|
||||
// Start outer interpreter
|
||||
outer_interpreter();
|
||||
|
||||
Reference in New Issue
Block a user