Remake C version.

This commit is contained in:
sforman 2023-10-23 22:50:44 -07:00
parent a6be85c869
commit 735ee73515
5 changed files with 367 additions and 339 deletions

View File

@ -143,6 +143,7 @@ run, def_run
second, def_second
shift, def_shift
shunt, def_shunt
select, def_select
size, def_size
small, def_small
spiral_next, def_spiral_next

View File

@ -106,6 +106,7 @@ JoyList def_run_body;
JoyList def_second_body;
JoyList def_shift_body;
JoyList def_shunt_body;
JoyList def_select_body;
JoyList def_size_body;
JoyList def_small_body;
JoyList def_spiral_next_body;
@ -267,8 +268,9 @@ init_defs(void)
def_second_body = text_to_expression("rest first");
def_shift_body = text_to_expression("uncons [swons] dip");
def_shunt_body = text_to_expression("[swons] step");
def_select_body = text_to_expression("[first] [second] branch");
def_size_body = text_to_expression("[pop ++] step_zero");
def_small_body = text_to_expression("dup null [rest null] [pop true] branch");
def_small_body = text_to_expression("empty? [rest null] [pop true] branch");
def_spiral_next_body = text_to_expression("[[[abs] ii <=] [[<>] [pop !-] or] and] [[!-] [[++]] [[--]] ifte dip] [[pop !-] [--] [++] ifte] ifte");
def_split_at_body = text_to_expression("[drop] [take] clop");
def_split_list_body = text_to_expression("[take reverse] [drop] clop");
@ -425,6 +427,7 @@ void def_run(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) {
void def_second(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def_second_body, expression); }
void def_shift(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def_shift_body, expression); }
void def_shunt(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def_shunt_body, expression); }
void def_select(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def_select_body, expression); }
void def_size(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def_size_body, expression); }
void def_small(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def_small_body, expression); }
void def_spiral_next(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def_spiral_next_body, expression); }

View File

@ -97,6 +97,7 @@ void def_run(JoyListPtr stack, JoyListPtr expression);
void def_second(JoyListPtr stack, JoyListPtr expression);
void def_shift(JoyListPtr stack, JoyListPtr expression);
void def_shunt(JoyListPtr stack, JoyListPtr expression);
void def_select(JoyListPtr stack, JoyListPtr expression);
void def_size(JoyListPtr stack, JoyListPtr expression);
void def_small(JoyListPtr stack, JoyListPtr expression);
void def_spiral_next(JoyListPtr stack, JoyListPtr expression);

View File

@ -99,8 +99,9 @@ run <{} infra
second rest first
shift uncons [swons] dip
shunt [swons] step
select [first] [second] branch
size [pop ++] step_zero
small dup null [rest null] [pop true] branch
small empty? [rest null] [pop true] branch
spiral_next [[[abs] ii <=] [[<>] [pop !-] or] and] [[!-] [[++]] [[--]] ifte dip] [[pop !-] [--] [++] ifte] ifte
split_at [drop] [take] clop
split_list [take reverse] [drop] clop

View File

@ -36,7 +36,7 @@
#line 13 "KEYWORDS.txt"
struct dict_entry;
#include <string.h>
/* maximum key range = 365, duplicates = 0 */
/* maximum key range = 422, duplicates = 0 */
#ifdef __GNUC__
__inline
@ -50,32 +50,32 @@ keyword_hash (register const char *str, register size_t len)
{
static const unsigned short asso_values[] =
{
366, 366, 366, 366, 366, 366, 366, 366, 366, 366,
366, 366, 366, 366, 366, 366, 366, 366, 366, 366,
366, 366, 366, 366, 366, 366, 366, 366, 366, 366,
366, 366, 366, 50, 366, 366, 366, 95, 366, 366,
366, 366, 50, 45, 366, 85, 366, 20, 95, 85,
35, 50, 366, 366, 366, 366, 366, 366, 366, 366,
75, 115, 15, 55, 366, 366, 366, 366, 366, 366,
366, 366, 366, 366, 366, 366, 366, 366, 15, 366,
366, 366, 366, 366, 366, 366, 366, 366, 366, 366,
366, 366, 80, 366, 366, 75, 366, 105, 70, 15,
5, 30, 35, 115, 20, 0, 366, 95, 65, 85,
0, 0, 0, 110, 55, 0, 40, 15, 30, 45,
10, 105, 10, 30, 366, 0, 366, 366, 366, 366,
366, 366, 366, 366, 366, 366, 366, 366, 366, 366,
366, 366, 366, 366, 366, 366, 366, 366, 366, 366,
366, 366, 366, 366, 366, 366, 366, 366, 366, 366,
366, 366, 366, 366, 366, 366, 366, 366, 366, 366,
366, 366, 366, 366, 366, 366, 366, 366, 366, 366,
366, 366, 366, 366, 366, 366, 366, 366, 366, 366,
366, 366, 366, 366, 366, 366, 366, 366, 366, 366,
366, 366, 366, 366, 366, 366, 366, 366, 366, 366,
366, 366, 366, 366, 366, 366, 366, 366, 366, 366,
366, 366, 366, 366, 366, 366, 366, 366, 366, 366,
366, 366, 366, 366, 366, 366, 366, 366, 366, 366,
366, 366, 366, 366, 366, 366, 366, 366, 366, 366,
366, 366, 366, 366, 366, 366
423, 423, 423, 423, 423, 423, 423, 423, 423, 423,
423, 423, 423, 423, 423, 423, 423, 423, 423, 423,
423, 423, 423, 423, 423, 423, 423, 423, 423, 423,
423, 423, 423, 20, 423, 423, 423, 65, 423, 423,
423, 423, 55, 80, 423, 135, 423, 15, 25, 10,
5, 25, 423, 423, 423, 423, 423, 423, 423, 423,
140, 90, 35, 50, 423, 423, 423, 423, 423, 423,
423, 423, 423, 423, 423, 423, 423, 423, 0, 423,
423, 423, 423, 423, 423, 423, 423, 423, 423, 423,
423, 423, 5, 423, 423, 100, 423, 85, 95, 15,
5, 60, 45, 125, 0, 0, 423, 115, 60, 115,
0, 0, 0, 150, 75, 0, 40, 15, 25, 115,
10, 95, 10, 5, 423, 0, 423, 423, 423, 423,
423, 423, 423, 423, 423, 423, 423, 423, 423, 423,
423, 423, 423, 423, 423, 423, 423, 423, 423, 423,
423, 423, 423, 423, 423, 423, 423, 423, 423, 423,
423, 423, 423, 423, 423, 423, 423, 423, 423, 423,
423, 423, 423, 423, 423, 423, 423, 423, 423, 423,
423, 423, 423, 423, 423, 423, 423, 423, 423, 423,
423, 423, 423, 423, 423, 423, 423, 423, 423, 423,
423, 423, 423, 423, 423, 423, 423, 423, 423, 423,
423, 423, 423, 423, 423, 423, 423, 423, 423, 423,
423, 423, 423, 423, 423, 423, 423, 423, 423, 423,
423, 423, 423, 423, 423, 423, 423, 423, 423, 423,
423, 423, 423, 423, 423, 423, 423, 423, 423, 423,
423, 423, 423, 423, 423, 423
};
register unsigned int hval = len;
@ -99,11 +99,11 @@ in_word_set (register const char *str, register size_t len)
{
enum
{
TOTAL_KEYWORDS = 188,
TOTAL_KEYWORDS = 189,
MIN_WORD_LENGTH = 1,
MAX_WORD_LENGTH = 17,
MIN_HASH_VALUE = 1,
MAX_HASH_VALUE = 365
MAX_HASH_VALUE = 422
};
static const struct dict_entry wordlist[] =
@ -131,7 +131,7 @@ in_word_set (register const char *str, register size_t len)
{"popopd", def_popopd},
#line 124 "KEYWORDS.txt"
{"popopdd", def_popopdd},
#line 193 "KEYWORDS.txt"
#line 194 "KEYWORDS.txt"
{"zip", def_zip},
#line 83 "KEYWORDS.txt"
{"dipd", def_dipd},
@ -145,9 +145,9 @@ in_word_set (register const char *str, register size_t len)
#line 38 "KEYWORDS.txt"
{"cons", cons},
{""},
#line 172 "KEYWORDS.txt"
#line 173 "KEYWORDS.txt"
{"x", def_x},
#line 170 "KEYWORDS.txt"
#line 171 "KEYWORDS.txt"
{"unswons", def_unswons},
#line 41 "KEYWORDS.txt"
{"dup", dup},
@ -156,404 +156,426 @@ in_word_set (register const char *str, register size_t len)
{""},
#line 93 "KEYWORDS.txt"
{"dupdip", def_dupdip},
{""},
#line 191 "KEYWORDS.txt"
{"/\\", def_SOLIDUS_REVERSE_SOLIDUS},
#line 81 "KEYWORDS.txt"
{"codireco", def_codireco},
#line 91 "KEYWORDS.txt"
{"dupd", def_dupd},
#line 90 "KEYWORDS.txt"
{"dupdd", def_dupdd},
#line 16 "KEYWORDS.txt"
{">", def_gt},
#line 30 "KEYWORDS.txt"
{"/", fdiv_q},
#line 92 "KEYWORDS.txt"
{"dupdipd", def_dupdipd},
{""}, {""},
#line 76 "KEYWORDS.txt"
{"ccons", def_ccons},
#line 166 "KEYWORDS.txt"
#line 167 "KEYWORDS.txt"
{"uncons", def_uncons},
#line 51 "KEYWORDS.txt"
{"fn", fn},
#line 44 "KEYWORDS.txt"
{"inscribe", inscribe},
#line 94 "KEYWORDS.txt"
{"enstacken", def_enstacken},
#line 195 "KEYWORDS.txt"
{"uncons-two", def_uncons_HYPHEN_MINUS_two},
#line 30 "KEYWORDS.txt"
{"/", fdiv_q},
#line 192 "KEYWORDS.txt"
{"\\/", def_REVERSE_SOLIDUS_SOLIDUS},
{""}, {""},
#line 146 "KEYWORDS.txt"
{"size", def_size},
{""},
#line 196 "KEYWORDS.txt"
{"uncons-two", def_uncons_HYPHEN_MINUS_two},
#line 87 "KEYWORDS.txt"
{"divmod", def_divmod},
#line 141 "KEYWORDS.txt"
{">>", def_GREATER_THAN_SIGN_GREATER_THAN_SIGN},
{""}, {""}, {""},
#line 144 "KEYWORDS.txt"
{"shift", def_shift},
{""},
#line 155 "KEYWORDS.txt"
#line 51 "KEYWORDS.txt"
{"fn", fn},
{""},
#line 156 "KEYWORDS.txt"
{"succ", def_succ},
#line 159 "KEYWORDS.txt"
{"swons", def_swons},
#line 148 "KEYWORDS.txt"
#line 164 "KEYWORDS.txt"
{"third", def_third},
#line 149 "KEYWORDS.txt"
{"spiral_next", def_spiral_next},
#line 75 "KEYWORDS.txt"
{"ccccons", def_ccccons},
{""},
#line 82 "KEYWORDS.txt"
{"dinfrirst", def_dinfrirst},
{""},
#line 143 "KEYWORDS.txt"
{"second", def_second},
{""}, {""},
#line 167 "KEYWORDS.txt"
{"unit", def_unit},
{""},
#line 39 "KEYWORDS.txt"
{"concat", concat},
#line 88 "KEYWORDS.txt"
{"down_to_zero", def_down_to_zero},
#line 154 "KEYWORDS.txt"
{"stuncons", def_stuncons},
#line 89 "KEYWORDS.txt"
{"drop", def_drop},
#line 144 "KEYWORDS.txt"
{"shift", def_shift},
{""}, {""},
{""}, {""}, {""},
#line 31 "KEYWORDS.txt"
{"div", fdiv_q},
#line 168 "KEYWORDS.txt"
{"unit", def_unit},
#line 145 "KEYWORDS.txt"
{"shunt", def_shunt},
#line 39 "KEYWORDS.txt"
{"concat", concat},
{""},
#line 155 "KEYWORDS.txt"
{"stuncons", def_stuncons},
#line 45 "KEYWORDS.txt"
{"loop", loop},
#line 163 "KEYWORDS.txt"
{"third", def_third},
#line 77 "KEYWORDS.txt"
{"choice", def_choice},
#line 116 "KEYWORDS.txt"
{"of", def_of},
#line 142 "KEYWORDS.txt"
{"run", def_run},
#line 173 "KEYWORDS.txt"
{"step", def_step},
{""},
#line 98 "KEYWORDS.txt"
{"fourth", def_fourth},
{""}, {""},
#line 153 "KEYWORDS.txt"
{"step_zero", def_step_zero},
#line 145 "KEYWORDS.txt"
{"shunt", def_shunt},
#line 107 "KEYWORDS.txt"
{"infrst", def_infrst},
{""},
#line 112 "KEYWORDS.txt"
{"not", def_not},
#line 44 "KEYWORDS.txt"
{"inscribe", inscribe},
#line 94 "KEYWORDS.txt"
{"enstacken", def_enstacken},
{""},
#line 16 "KEYWORDS.txt"
{">", def_gt},
{""}, {""},
#line 147 "KEYWORDS.txt"
{"size", def_size},
{""}, {""}, {""}, {""},
#line 79 "KEYWORDS.txt"
{"clop", def_clop},
#line 113 "KEYWORDS.txt"
{"nulco", def_nulco},
#line 77 "KEYWORDS.txt"
{"choice", def_choice},
{""},
#line 112 "KEYWORDS.txt"
{"not", def_not},
#line 89 "KEYWORDS.txt"
{"drop", def_drop},
{""},
#line 143 "KEYWORDS.txt"
{"second", def_second},
{""}, {""},
#line 201 "KEYWORDS.txt"
#line 70 "KEYWORDS.txt"
{"appN", def_appN},
{""},
#line 107 "KEYWORDS.txt"
{"infrst", def_infrst},
#line 116 "KEYWORDS.txt"
{"of", def_of},
#line 142 "KEYWORDS.txt"
{"run", def_run},
#line 68 "KEYWORDS.txt"
{"app2", def_app2},
{""}, {""}, {""},
#line 66 "KEYWORDS.txt"
{"and", def_and},
#line 67 "KEYWORDS.txt"
{"app1", def_app1},
{""},
#line 58 "KEYWORDS.txt"
{"?", def_QUESTION_MARK},
{""},
#line 27 "KEYWORDS.txt"
{"add", add},
#line 174 "KEYWORDS.txt"
{"step", def_step},
{""},
#line 32 "KEYWORDS.txt"
{"lshift", lshift},
#line 141 "KEYWORDS.txt"
{">>", def_GREATER_THAN_SIGN_GREATER_THAN_SIGN},
#line 150 "KEYWORDS.txt"
{"split_at", def_split_at},
#line 154 "KEYWORDS.txt"
{"step_zero", def_step_zero},
#line 151 "KEYWORDS.txt"
{"split_list", def_split_list},
#line 24 "KEYWORDS.txt"
{"*", mul},
{""}, {""},
#line 69 "KEYWORDS.txt"
{"app3", def_app3},
#line 189 "KEYWORDS.txt"
{"_isnt_two_bools", def__isnt_two_bools},
#line 195 "KEYWORDS.txt"
{"uncons-pair", def_uncons_HYPHEN_MINUS_pair},
{""},
#line 202 "KEYWORDS.txt"
{"min", def_min},
{""},
#line 188 "KEYWORDS.txt"
{"_isnt_two_bools", def__isnt_two_bools},
#line 26 "KEYWORDS.txt"
{"+", add},
#line 158 "KEYWORDS.txt"
{"swoncat", def_swoncat},
#line 128 "KEYWORDS.txt"
{"pow", def_pow},
#line 129 "KEYWORDS.txt"
{"pred", def_pred},
#line 200 "KEYWORDS.txt"
#line 160 "KEYWORDS.txt"
{"swons", def_swons},
#line 33 "KEYWORDS.txt"
{"rshift", rshift},
#line 130 "KEYWORDS.txt"
{"product", def_product},
{""}, {""},
#line 201 "KEYWORDS.txt"
{"min-of-two", def_min_HYPHEN_MINUS_of_HYPHEN_MINUS_two},
#line 194 "KEYWORDS.txt"
{"uncons-pair", def_uncons_HYPHEN_MINUS_pair},
{""},
#line 110 "KEYWORDS.txt"
{"modulus", def_modulus},
#line 23 "KEYWORDS.txt"
{"mod", fdiv_r},
#line 95 "KEYWORDS.txt"
{"first_two", def_first_two},
#line 171 "KEYWORDS.txt"
{"while", def_while},
#line 24 "KEYWORDS.txt"
{"*", mul},
#line 130 "KEYWORDS.txt"
{"product", def_product},
{""},
#line 22 "KEYWORDS.txt"
{"%", fdiv_r},
#line 88 "KEYWORDS.txt"
{"down_to_zero", def_down_to_zero},
#line 37 "KEYWORDS.txt"
{"cmp", cmp_joyfunc},
#line 134 "KEYWORDS.txt"
{"reco", def_reco},
#line 120 "KEYWORDS.txt"
{"pick", def_pick},
#line 106 "KEYWORDS.txt"
{"infra", def_infra},
#line 153 "KEYWORDS.txt"
{"stackd", def_stackd},
#line 170 "KEYWORDS.txt"
{"unstack", def_unstack},
{""},
#line 115 "KEYWORDS.txt"
{"null", def_null},
{""},
#line 139 "KEYWORDS.txt"
{"rollup", def_rollup},
#line 54 "KEYWORDS.txt"
{"lt", def_lt},
#line 136 "KEYWORDS.txt"
{"rolldown", def_rolldown},
#line 129 "KEYWORDS.txt"
{"pred", def_pred},
{""}, {""},
#line 19 "KEYWORDS.txt"
{"<>", def_neq},
#line 161 "KEYWORDS.txt"
{"tailrec", def_tailrec},
#line 62 "KEYWORDS.txt"
{"<{}", def_LESS_THAN_SIGN_LEFT_CURLY_BRACKET_RIGHT_CURLY_BRACKET},
#line 104 "KEYWORDS.txt"
{"ifte", def_ifte},
#line 193 "KEYWORDS.txt"
{"_isnt_list", def__isnt_list},
{""},
#line 58 "KEYWORDS.txt"
{"?", def_QUESTION_MARK},
#line 117 "KEYWORDS.txt"
{"or", def_or},
#line 149 "KEYWORDS.txt"
{"split_at", def_split_at},
#line 120 "KEYWORDS.txt"
{"pick", def_pick},
#line 150 "KEYWORDS.txt"
{"split_list", def_split_list},
{""},
#line 169 "KEYWORDS.txt"
{"unstack", def_unstack},
#line 66 "KEYWORDS.txt"
{"and", def_and},
#line 118 "KEYWORDS.txt"
{"over", def_over},
{""},
#line 33 "KEYWORDS.txt"
{"rshift", rshift},
#line 191 "KEYWORDS.txt"
{"\\/", def_REVERSE_SOLIDUS_SOLIDUS},
#line 27 "KEYWORDS.txt"
{"add", add},
#line 70 "KEYWORDS.txt"
{"appN", def_appN},
#line 192 "KEYWORDS.txt"
{"_isnt_list", def__isnt_list},
#line 139 "KEYWORDS.txt"
{"rollup", def_rollup},
#line 56 "KEYWORDS.txt"
{"le", def_le},
#line 136 "KEYWORDS.txt"
{"rolldown", def_rolldown},
#line 47 "KEYWORDS.txt"
{"rest", rest},
#line 177 "KEYWORDS.txt"
{"times", def_times},
#line 32 "KEYWORDS.txt"
{"lshift", lshift},
{""}, {""},
#line 196 "KEYWORDS.txt"
{"quote-two", def_quote_HYPHEN_MINUS_two},
#line 42 "KEYWORDS.txt"
{"first", first},
#line 131 "KEYWORDS.txt"
{"quoted", def_quoted},
#line 60 "KEYWORDS.txt"
{"++", def_PLUS_SIGN_PLUS_SIGN},
#line 168 "KEYWORDS.txt"
{"unquoted", def_unquoted},
#line 34 "KEYWORDS.txt"
{"bool", truthy},
#line 138 "KEYWORDS.txt"
{"roll>", def_roll_GREATER_THAN_SIGN},
#line 73 "KEYWORDS.txt"
{"b", def_b},
#line 202 "KEYWORDS.txt"
{"on-non-empty-list", def_on_HYPHEN_MINUS_non_HYPHEN_MINUS_empty_HYPHEN_MINUS_list},
#line 99 "KEYWORDS.txt"
{"gcd", def_gcd},
#line 68 "KEYWORDS.txt"
{"app2", def_app2},
#line 106 "KEYWORDS.txt"
{"infra", def_infra},
#line 78 "KEYWORDS.txt"
{"cleave", def_cleave},
#line 54 "KEYWORDS.txt"
{"lt", def_lt},
#line 134 "KEYWORDS.txt"
{"reco", def_reco},
{""},
#line 115 "KEYWORDS.txt"
{"null", def_null},
#line 187 "KEYWORDS.txt"
{"_isnt_bool", def__isnt_bool},
#line 17 "KEYWORDS.txt"
{"<", def_lt},
#line 135 "KEYWORDS.txt"
{"reverse", def_reverse},
{""},
#line 50 "KEYWORDS.txt"
{"swap", swap},
{""},
#line 152 "KEYWORDS.txt"
{"stackd", def_stackd},
{""},
#line 29 "KEYWORDS.txt"
{"sub", sub},
#line 69 "KEYWORDS.txt"
{"app3", def_app3},
#line 157 "KEYWORDS.txt"
{"swapd", def_swapd},
#line 176 "KEYWORDS.txt"
{"_stept", def__stept},
{"_step1", def__step1},
#line 180 "KEYWORDS.txt"
{"_timest", def__timest},
{""}, {""}, {""},
#line 100 "KEYWORDS.txt"
{"genrec", def_genrec},
#line 160 "KEYWORDS.txt"
{"tailrec", def_tailrec},
{"_times1", def__times1},
{""},
#line 164 "KEYWORDS.txt"
{"tuck", def_tuck},
#line 36 "KEYWORDS.txt"
{"clear", clear},
#line 28 "KEYWORDS.txt"
{"-", sub},
#line 121 "KEYWORDS.txt"
{"pm", def_pm},
#line 34 "KEYWORDS.txt"
{"bool", truthy},
#line 178 "KEYWORDS.txt"
{"times", def_times},
#line 26 "KEYWORDS.txt"
{"+", add},
#line 159 "KEYWORDS.txt"
{"swoncat", def_swoncat},
{""},
#line 118 "KEYWORDS.txt"
{"over", def_over},
#line 42 "KEYWORDS.txt"
{"first", first},
#line 146 "KEYWORDS.txt"
{"select", def_select},
#line 71 "KEYWORDS.txt"
{"at", def_at},
{""}, {""},
#line 188 "KEYWORDS.txt"
{"_isnt_bool", def__isnt_bool},
#line 175 "KEYWORDS.txt"
{"_step0", def__step0},
#line 179 "KEYWORDS.txt"
{"_times0", def__times0},
#line 133 "KEYWORDS.txt"
{"range_to_zero", def_range_to_zero},
{""}, {""},
#line 197 "KEYWORDS.txt"
{"empty?", def_empty_QUESTION_MARK},
#line 57 "KEYWORDS.txt"
{"ge", def_ge},
{"quote-two", def_quote_HYPHEN_MINUS_two},
#line 138 "KEYWORDS.txt"
{"roll>", def_roll_GREATER_THAN_SIGN},
#line 131 "KEYWORDS.txt"
{"quoted", def_quoted},
#line 114 "KEYWORDS.txt"
{"nullary", def_nullary},
#line 169 "KEYWORDS.txt"
{"unquoted", def_unquoted},
#line 47 "KEYWORDS.txt"
{"rest", rest},
#line 172 "KEYWORDS.txt"
{"while", def_while},
#line 15 "KEYWORDS.txt"
{"=", def_eq},
#line 56 "KEYWORDS.txt"
{"le", def_le},
#line 64 "KEYWORDS.txt"
{"abs", def_abs},
{""}, {""},
#line 177 "KEYWORDS.txt"
{"_stept", def__stept},
#line 181 "KEYWORDS.txt"
{"_timest", def__timest},
{""},
#line 165 "KEYWORDS.txt"
{"tuck", def_tuck},
{""},
#line 73 "KEYWORDS.txt"
{"b", def_b},
#line 203 "KEYWORDS.txt"
{"on-non-empty-list", def_on_HYPHEN_MINUS_non_HYPHEN_MINUS_empty_HYPHEN_MINUS_list},
{""}, {""}, {""},
#line 74 "KEYWORDS.txt"
{"binary", def_binary},
#line 190 "KEYWORDS.txt"
{"/\\", def_SOLIDUS_REVERSE_SOLIDUS},
{""},
#line 63 "KEYWORDS.txt"
{"<<{}", def_LESS_THAN_SIGN_LESS_THAN_SIGN_LEFT_CURLY_BRACKET_RIGHT_CURLY_BRACKET},
#line 140 "KEYWORDS.txt"
{"rrest", def_rrest},
{""},
#line 71 "KEYWORDS.txt"
{"at", def_at},
#line 156 "KEYWORDS.txt"
{"sum", def_sum},
#line 97 "KEYWORDS.txt"
{"fork", def_fork},
{""},
#line 22 "KEYWORDS.txt"
{"%", fdiv_r},
#line 114 "KEYWORDS.txt"
{"nullary", def_nullary},
#line 181 "KEYWORDS.txt"
{"map", def_map},
#line 67 "KEYWORDS.txt"
{"app1", def_app1},
#line 132 "KEYWORDS.txt"
{"range", def_range},
{""},
#line 53 "KEYWORDS.txt"
{"gt", def_gt},
{""}, {""},
#line 137 "KEYWORDS.txt"
{"roll<", def_roll_LESS_THAN_SIGN},
{""},
#line 72 "KEYWORDS.txt"
{"average", def_average},
{""}, {""}, {""},
#line 175 "KEYWORDS.txt"
{"_step1", def__step1},
#line 179 "KEYWORDS.txt"
{"_times1", def__times1},
{""}, {""},
#line 198 "KEYWORDS.txt"
{"max-of-two", def_max_HYPHEN_MINUS_of_HYPHEN_MINUS_two},
{""},
#line 96 "KEYWORDS.txt"
{"flatten", def_flatten},
#line 199 "KEYWORDS.txt"
{"max", def_max},
{""}, {""},
#line 174 "KEYWORDS.txt"
{"_step0", def__step0},
#line 178 "KEYWORDS.txt"
{"_times0", def__times0},
{""}, {""}, {""}, {""},
#line 59 "KEYWORDS.txt"
{"!-", def_EXCLAMATION_MARK_HYPHEN_MINUS},
#line 151 "KEYWORDS.txt"
{"sqr", def_sqr},
{""}, {""}, {""},
#line 108 "KEYWORDS.txt"
{"<<", def_LESS_THAN_SIGN_LESS_THAN_SIGN},
{""}, {""},
#line 165 "KEYWORDS.txt"
#line 166 "KEYWORDS.txt"
{"unary", def_unary},
#line 15 "KEYWORDS.txt"
{"=", def_eq},
#line 78 "KEYWORDS.txt"
{"cleave", def_cleave},
#line 18 "KEYWORDS.txt"
{"!=", def_neq},
#line 182 "KEYWORDS.txt"
{"map", def_map},
#line 50 "KEYWORDS.txt"
{"swap", swap},
{""},
#line 25 "KEYWORDS.txt"
{"mul", mul},
{""}, {""}, {""},
#line 162 "KEYWORDS.txt"
{"ternary", def_ternary},
{""}, {""}, {""}, {""}, {""}, {""}, {""},
#line 48 "KEYWORDS.txt"
{"stack", stack},
#line 100 "KEYWORDS.txt"
{"genrec", def_genrec},
#line 53 "KEYWORDS.txt"
{"gt", def_gt},
#line 29 "KEYWORDS.txt"
{"sub", sub},
{""},
#line 158 "KEYWORDS.txt"
{"swapd", def_swapd},
{""},
#line 19 "KEYWORDS.txt"
{"<>", def_neq},
{""}, {""},
#line 36 "KEYWORDS.txt"
{"clear", clear},
{""},
#line 21 "KEYWORDS.txt"
{">=", def_ge},
{""}, {""},
#line 199 "KEYWORDS.txt"
{"max-of-two", def_max_HYPHEN_MINUS_of_HYPHEN_MINUS_two},
{""}, {""},
#line 200 "KEYWORDS.txt"
{"max", def_max},
#line 190 "KEYWORDS.txt"
{"_\\/_", def___REVERSE_SOLIDUS_SOLIDUS__},
#line 132 "KEYWORDS.txt"
{"range", def_range},
{""},
#line 135 "KEYWORDS.txt"
{"reverse", def_reverse},
{""}, {""}, {""},
#line 198 "KEYWORDS.txt"
{"empty?", def_empty_QUESTION_MARK},
#line 121 "KEYWORDS.txt"
{"pm", def_pm},
#line 128 "KEYWORDS.txt"
{"pow", def_pow},
{""}, {""}, {""},
#line 72 "KEYWORDS.txt"
{"average", def_average},
{""},
#line 97 "KEYWORDS.txt"
{"fork", def_fork},
{""}, {""},
#line 60 "KEYWORDS.txt"
{"++", def_PLUS_SIGN_PLUS_SIGN},
{""}, {""},
#line 48 "KEYWORDS.txt"
{"stack", stack},
{""},
#line 57 "KEYWORDS.txt"
{"ge", def_ge},
#line 157 "KEYWORDS.txt"
{"sum", def_sum},
{""}, {""}, {""}, {""},
#line 25 "KEYWORDS.txt"
{"mul", mul},
{""},
#line 140 "KEYWORDS.txt"
{"rrest", def_rrest},
{""}, {""}, {""}, {""}, {""},
#line 35 "KEYWORDS.txt"
{"branch", branch},
{""}, {""}, {""},
#line 148 "KEYWORDS.txt"
{"small", def_small},
{""}, {""}, {""}, {""}, {""},
#line 28 "KEYWORDS.txt"
{"-", sub},
{""}, {""}, {""}, {""}, {""},
#line 163 "KEYWORDS.txt"
{"ternary", def_ternary},
{""}, {""},
#line 137 "KEYWORDS.txt"
{"roll<", def_roll_LESS_THAN_SIGN},
#line 17 "KEYWORDS.txt"
{"<", def_lt},
{""}, {""}, {""}, {""}, {""}, {""}, {""},
#line 63 "KEYWORDS.txt"
{"<<{}", def_LESS_THAN_SIGN_LESS_THAN_SIGN_LEFT_CURLY_BRACKET_RIGHT_CURLY_BRACKET},
#line 102 "KEYWORDS.txt"
{"grabN", def_grabN},
{""},
#line 59 "KEYWORDS.txt"
{"!-", def_EXCLAMATION_MARK_HYPHEN_MINUS},
{""}, {""}, {""},
#line 65 "KEYWORDS.txt"
{"anamorphism", def_anamorphism},
{""}, {""}, {""}, {""}, {""}, {""},
#line 152 "KEYWORDS.txt"
{"sqr", def_sqr},
#line 162 "KEYWORDS.txt"
{"take", def_take},
{""}, {""}, {""}, {""}, {""},
#line 187 "KEYWORDS.txt"
{"_map2", def__map2},
{""}, {""},
#line 111 "KEYWORDS.txt"
{"neg", def_neg},
{""},
#line 186 "KEYWORDS.txt"
{"_map1", def__map1},
{""}, {""},
#line 119 "KEYWORDS.txt"
{"pam", def_pam},
{""}, {""},
#line 49 "KEYWORDS.txt"
{"swaack", swaack},
#line 20 "KEYWORDS.txt"
{"<=", def_le},
{""}, {""}, {""}, {""}, {""}, {""}, {""},
#line 185 "KEYWORDS.txt"
{"_map0", def__map0},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
{""}, {""}, {""}, {""}, {""}, {""}, {""},
#line 101 "KEYWORDS.txt"
{"getitem", def_getitem},
{""}, {""}, {""}, {""}, {""}, {""}, {""},
#line 183 "KEYWORDS.txt"
{"_map?", def__map_QUESTION_MARK},
{""}, {""}, {""}, {""}, {""}, {""},
#line 52 "KEYWORDS.txt"
{"eq", def_eq},
#line 55 "KEYWORDS.txt"
{"neq", def_neq},
#line 189 "KEYWORDS.txt"
{"_\\/_", def___REVERSE_SOLIDUS_SOLIDUS__},
{""},
#line 35 "KEYWORDS.txt"
{"branch", branch},
#line 61 "KEYWORDS.txt"
{"--", def_HYPHEN_MINUS_HYPHEN_MINUS},
{""}, {""},
#line 147 "KEYWORDS.txt"
{"small", def_small},
{""}, {""},
#line 111 "KEYWORDS.txt"
{"neg", def_neg},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
{""},
#line 161 "KEYWORDS.txt"
{"take", def_take},
{""}, {""},
#line 101 "KEYWORDS.txt"
{"getitem", def_getitem},
#line 119 "KEYWORDS.txt"
{"pam", def_pam},
{""}, {""}, {""},
#line 18 "KEYWORDS.txt"
{"!=", def_neq},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
{""}, {""}, {""},
#line 102 "KEYWORDS.txt"
{"grabN", def_grabN},
{""}, {""}, {""}, {""},
#line 183 "KEYWORDS.txt"
#line 184 "KEYWORDS.txt"
{"_mape", def__mape},
{""}, {""}, {""}, {""},
#line 186 "KEYWORDS.txt"
{"_map2", def__map2},
#line 65 "KEYWORDS.txt"
{"anamorphism", def_anamorphism},
#line 20 "KEYWORDS.txt"
{"<=", def_le},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
#line 182 "KEYWORDS.txt"
{"_map?", def__map_QUESTION_MARK},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
{""}, {""}, {""}, {""}, {""},
#line 103 "KEYWORDS.txt"
{"grba", def_grba},
{""}, {""}, {""}, {""},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
{""},
#line 109 "KEYWORDS.txt"
{"make_generator", def_make_generator},
#line 185 "KEYWORDS.txt"
{"_map1", def__map1},
{""}, {""},
#line 61 "KEYWORDS.txt"
{"--", def_HYPHEN_MINUS_HYPHEN_MINUS},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
#line 184 "KEYWORDS.txt"
{"_map0", def__map0}
{""}, {""}, {""}, {""}, {""},
#line 108 "KEYWORDS.txt"
{"<<", def_LESS_THAN_SIGN_LESS_THAN_SIGN}
};
if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH)