From 09e9e340a5afc2cafc5bc9ae83e9ed84d8bf045b Mon Sep 17 00:00:00 2001 From: Simon Forman Date: Sun, 5 Feb 2023 10:00:18 -0800 Subject: [PATCH] stack --- implementations/C/KEYWORDS.txt | 1 + implementations/C/joy.c | 7 ++++++ implementations/C/joy.h | 1 + implementations/C/keywords.c | 45 +++++++++++++++++----------------- 4 files changed, 32 insertions(+), 22 deletions(-) diff --git a/implementations/C/KEYWORDS.txt b/implementations/C/KEYWORDS.txt index 6d60289..954c992 100644 --- a/implementations/C/KEYWORDS.txt +++ b/implementations/C/KEYWORDS.txt @@ -20,6 +20,7 @@ dip, dip dup, dup i, i_joyfunc pop, pop +stack, stack swaack, swaack abs, def_abs anamorphism, def_anamorphism diff --git a/implementations/C/joy.c b/implementations/C/joy.c index 6747b6a..87c7184 100644 --- a/implementations/C/joy.c +++ b/implementations/C/joy.c @@ -606,6 +606,13 @@ swaack(JoyListPtr stack, __attribute__((unused)) JoyListPtr expression) } +void +stack(JoyListPtr stack, __attribute__((unused)) JoyListPtr expression) +{ + push_quote(*stack, stack); +} + + void dip(JoyListPtr stack, JoyListPtr expression) { diff --git a/implementations/C/joy.h b/implementations/C/joy.h index be3a9a3..6a9822a 100644 --- a/implementations/C/joy.h +++ b/implementations/C/joy.h @@ -65,6 +65,7 @@ void dip(JoyListPtr stack, JoyListPtr expression); void dup(JoyListPtr stack, JoyListPtr expression); void i_joyfunc(JoyListPtr stack, JoyListPtr expression); void pop(JoyListPtr stack, JoyListPtr expression); +void stack(JoyListPtr stack, JoyListPtr expression); void swaack(JoyListPtr stack, JoyListPtr expression); void mul(JoyListPtr stack, JoyListPtr expression); void sub(JoyListPtr stack, JoyListPtr expression); diff --git a/implementations/C/keywords.c b/implementations/C/keywords.c index 956a1cb..f2823a7 100644 --- a/implementations/C/keywords.c +++ b/implementations/C/keywords.c @@ -94,7 +94,7 @@ in_word_set (register const char *str, register size_t len) { enum { - TOTAL_KEYWORDS = 34, + TOTAL_KEYWORDS = 35, MIN_WORD_LENGTH = 1, MAX_WORD_LENGTH = 12, MIN_HASH_VALUE = 1, @@ -104,37 +104,38 @@ in_word_set (register const char *str, register size_t len) static const struct dict_entry wordlist[] = { {""}, -#line 32 "KEYWORDS.txt" +#line 33 "KEYWORDS.txt" {"b", def_b}, -#line 30 "KEYWORDS.txt" +#line 31 "KEYWORDS.txt" {"at", def_at}, -#line 24 "KEYWORDS.txt" +#line 25 "KEYWORDS.txt" {"abs", def_abs}, #line 18 "KEYWORDS.txt" {"cons", cons}, -#line 35 "KEYWORDS.txt" +#line 36 "KEYWORDS.txt" {"ccons", def_ccons}, #line 21 "KEYWORDS.txt" {"i", i_joyfunc}, -#line 34 "KEYWORDS.txt" +#line 35 "KEYWORDS.txt" {"ccccons", def_ccccons}, -#line 39 "KEYWORDS.txt" +#line 40 "KEYWORDS.txt" {"codireco", def_codireco}, -#line 38 "KEYWORDS.txt" +#line 39 "KEYWORDS.txt" {"codi", def_codi}, - {""}, -#line 33 "KEYWORDS.txt" +#line 23 "KEYWORDS.txt" + {"stack", stack}, +#line 34 "KEYWORDS.txt" {"binary", def_binary}, -#line 31 "KEYWORDS.txt" +#line 32 "KEYWORDS.txt" {"average", def_average}, #line 22 "KEYWORDS.txt" {"pop", pop}, -#line 40 "KEYWORDS.txt" +#line 41 "KEYWORDS.txt" {"dinfrirst", def_dinfrirst}, {""}, -#line 23 "KEYWORDS.txt" +#line 24 "KEYWORDS.txt" {"swaack", swaack}, -#line 42 "KEYWORDS.txt" +#line 43 "KEYWORDS.txt" {"disenstacken", def_disenstacken}, #line 19 "KEYWORDS.txt" {"dip", dip}, @@ -142,44 +143,44 @@ in_word_set (register const char *str, register size_t len) {"bool", truthy}, #line 16 "KEYWORDS.txt" {"clear", clear}, -#line 25 "KEYWORDS.txt" +#line 26 "KEYWORDS.txt" {"anamorphism", def_anamorphism}, {""}, #line 17 "KEYWORDS.txt" {"cmp", cmp_joyfunc}, -#line 41 "KEYWORDS.txt" +#line 42 "KEYWORDS.txt" {"dipd", def_dipd}, {""}, -#line 36 "KEYWORDS.txt" +#line 37 "KEYWORDS.txt" {"cleave", def_cleave}, {""}, #line 20 "KEYWORDS.txt" {"dup", dup}, -#line 37 "KEYWORDS.txt" +#line 38 "KEYWORDS.txt" {"clop", def_clop}, {""}, #line 15 "KEYWORDS.txt" {"branch", branch}, {""}, {""}, -#line 29 "KEYWORDS.txt" +#line 30 "KEYWORDS.txt" {"appN", def_appN}, {""}, #line 13 "KEYWORDS.txt" {"/", tdiv_q}, {""}, {""}, -#line 28 "KEYWORDS.txt" +#line 29 "KEYWORDS.txt" {"app3", def_app3}, {""}, #line 12 "KEYWORDS.txt" {"-", sub}, {""}, {""}, -#line 27 "KEYWORDS.txt" +#line 28 "KEYWORDS.txt" {"app2", def_app2}, {""}, #line 11 "KEYWORDS.txt" {"+", add}, {""}, {""}, -#line 26 "KEYWORDS.txt" +#line 27 "KEYWORDS.txt" {"app1", def_app1}, {""}, #line 10 "KEYWORDS.txt"