diff --git a/implementations/C/KEYWORDS.txt b/implementations/C/KEYWORDS.txt index 3c581a8..07a8540 100644 --- a/implementations/C/KEYWORDS.txt +++ b/implementations/C/KEYWORDS.txt @@ -14,4 +14,5 @@ struct dict_entry; bool, truthy branch, branch clear, clear -cmp, cmp_joyfunc \ No newline at end of file +cmp, cmp_joyfunc +i, i_joyfunc diff --git a/implementations/C/joy.c b/implementations/C/joy.c index 802931b..3f0bd89 100644 --- a/implementations/C/joy.c +++ b/implementations/C/joy.c @@ -546,6 +546,13 @@ cmp_joyfunc(JoyListPtr stack, JoyListPtr expression) } +void +i_joyfunc(JoyListPtr stack, JoyListPtr expression) +{ + push_quote(pop_list_node(stack), expression); +} + + void branch(JoyListPtr stack, JoyListPtr expression) {stack = expression;} void clear(JoyListPtr stack, JoyListPtr expression) {stack = expression;} void div_joyfunc(JoyListPtr stack, JoyListPtr expression) {stack = expression;} diff --git a/implementations/C/joy.h b/implementations/C/joy.h index 42d226b..e989d91 100644 --- a/implementations/C/joy.h +++ b/implementations/C/joy.h @@ -61,6 +61,7 @@ void branch(JoyListPtr stack, JoyListPtr expression); void clear(JoyListPtr stack, JoyListPtr expression); void cmp_joyfunc(JoyListPtr stack, JoyListPtr expression); void div_joyfunc(JoyListPtr stack, JoyListPtr expression); +void i_joyfunc(JoyListPtr stack, JoyListPtr expression); void mod(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 6a5626e..2d08955 100644 --- a/implementations/C/keywords.c +++ b/implementations/C/keywords.c @@ -52,14 +52,14 @@ keyword_hash (register const char *str, register size_t len) 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, - 17, 17, 17, 17, 17, 17, 17, 14, 17, 17, - 17, 17, 9, 15, 17, 10, 17, 0, 17, 17, + 17, 17, 17, 17, 17, 17, 17, 8, 17, 17, + 17, 17, 14, 9, 17, 15, 17, 10, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 0, 0, - 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, + 17, 17, 17, 17, 17, 0, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, @@ -84,7 +84,7 @@ in_word_set (register const char *str, register size_t len) { enum { - TOTAL_KEYWORDS = 9, + TOTAL_KEYWORDS = 10, MIN_WORD_LENGTH = 1, MAX_WORD_LENGTH = 6, MIN_HASH_VALUE = 1, @@ -94,8 +94,8 @@ in_word_set (register const char *str, register size_t len) static const struct dict_entry wordlist[] = { {""}, -#line 13 "KEYWORDS.txt" - {"/", div_joyfunc}, +#line 18 "KEYWORDS.txt" + {"i", i_joyfunc}, {""}, #line 17 "KEYWORDS.txt" {"cmp", cmp_joyfunc}, @@ -105,16 +105,18 @@ in_word_set (register const char *str, register size_t len) {"clear", clear}, #line 15 "KEYWORDS.txt" {"branch", branch}, + {""}, {""}, +#line 9 "KEYWORDS.txt" + {"%", mod}, +#line 11 "KEYWORDS.txt" + {"+", add}, +#line 13 "KEYWORDS.txt" + {"/", div_joyfunc}, {""}, {""}, {""}, #line 10 "KEYWORDS.txt" {"*", mul}, #line 12 "KEYWORDS.txt" - {"-", sub}, - {""}, {""}, {""}, -#line 9 "KEYWORDS.txt" - {"%", mod}, -#line 11 "KEYWORDS.txt" - {"+", add} + {"-", sub} }; if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH)