i combinator.

This commit is contained in:
Simon Forman 2023-02-04 19:05:26 -08:00
parent bd525cc7ac
commit 21f99aac96
4 changed files with 24 additions and 13 deletions

View File

@ -14,4 +14,5 @@ struct dict_entry;
bool, truthy
branch, branch
clear, clear
cmp, cmp_joyfunc
cmp, cmp_joyfunc
i, i_joyfunc

View File

@ -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;}

View File

@ -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);

View File

@ -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)