regularize defs.txt; new andies.

I made a crude facility in the C impl for excluding definitions that
would replace built-in commands.  This should be improved, eh?

I also started on renameing the logical Boolean ops
https://todo.sr.ht/~sforman/thun-der/29
This commit is contained in:
Simon Forman 2023-02-14 08:27:17 -08:00
parent f37ef42cb4
commit f0c94aeed8
6 changed files with 388 additions and 385 deletions

View File

@ -14,8 +14,6 @@ struct dict_entry;
"<>", def_neq
"<=", def_le
">=", def_ge
"&", def_and
"|", def_or
"%", fdiv_r
mod, fdiv_r
*, mul

View File

@ -19,8 +19,6 @@ struct dict_entry;
"<>", def_neq
"<=", def_le
">=", def_ge
"&", def_and
"|", def_or
"%", fdiv_r
mod, fdiv_r
*, mul
@ -171,6 +169,6 @@ _mape, def__mape
_map0, def__map0
_map1, def__map1
_map2, def__map2
xor, def_xor
and, def_and
or, def_or
_\/_, def___REVERSE_SOLIDUS_SOLIDUS__
/\, def_SOLIDUS_REVERSE_SOLIDUS
\/, def_REVERSE_SOLIDUS_SOLIDUS

View File

@ -26,6 +26,17 @@ shouldn't matter.
import sys, unicodedata
#"&", def_and
#"|", def_or
SKIP = '''\
clear
cmp
first
mod
rest'''.splitlines()
def filt(name):
'''
Pass alphanumeric chars and underscores, convert other chars
@ -81,6 +92,8 @@ Do not edit.
if sys.argv[-1] == '--header':
for line in defs:
name, body = line.split(None, 1)
if name in SKIP:
continue
name = convert_name(name)
print(f'void def_{name}(JoyListPtr stack, JoyListPtr expression);')
@ -88,6 +101,8 @@ elif sys.argv[-1] == '--keywords':
sys.stdout.write(open('KEYWORDS.in').read())
for line in defs:
name, body = line.split(None, 1)
if name in SKIP:
continue
print(f'{name}, def_{convert_name(name)}')
else:
@ -103,6 +118,8 @@ of the definitions.
''')
for line in defs:
name, body = line.split(None, 1)
if name in SKIP:
continue
name = convert_name(name)
print(f'JoyList def_{name}_body;')
@ -120,6 +137,8 @@ init_defs(void)
''')
for line in defs:
name, body = line.split(None, 1)
if name in SKIP:
continue
name = convert_name(name)
print(f'\tdef_{name}_body = text_to_expression("{body}");')
print('}')
@ -134,5 +153,7 @@ Last, a set of functions to go in the wordlist, one for each definition.
''')
for line in defs:
name, body = line.split(None, 1)
if name in SKIP:
continue
name = convert_name(name)
print(f'void def_{name}(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) {{ push_quote_onto_expression(def_{name}_body, expression); }}')

View File

@ -135,9 +135,9 @@ JoyList def__mape_body;
JoyList def__map0_body;
JoyList def__map1_body;
JoyList def__map2_body;
JoyList def_xor_body;
JoyList def_and_body;
JoyList def_or_body;
JoyList def___REVERSE_SOLIDUS_SOLIDUS___body;
JoyList def_SOLIDUS_REVERSE_SOLIDUS_body;
JoyList def_REVERSE_SOLIDUS_SOLIDUS_body;
/*
@ -271,9 +271,9 @@ init_defs(void)
def__map0_body = text_to_expression("[_map1] dipd _map2");
def__map1_body = text_to_expression("stackd shift");
def__map2_body = text_to_expression("[infrst] cons dipd roll< swons");
def_xor_body = text_to_expression("[not not] [not] branch");
def_and_body = text_to_expression("[pop false] [not not] branch");
def_or_body = text_to_expression("[not not] [pop true] branch");
def___REVERSE_SOLIDUS_SOLIDUS___body = text_to_expression("[not not] [not] branch");
def_SOLIDUS_REVERSE_SOLIDUS_body = text_to_expression("[pop false] [not not] branch");
def_REVERSE_SOLIDUS_SOLIDUS_body = text_to_expression("[not not] [pop true] branch");
}
@ -404,6 +404,6 @@ void def__mape(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression)
void def__map0(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def__map0_body, expression); }
void def__map1(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def__map1_body, expression); }
void def__map2(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def__map2_body, expression); }
void def_xor(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def_xor_body, expression); }
void def_and(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def_and_body, expression); }
void def_or(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def_or_body, expression); }
void def___REVERSE_SOLIDUS_SOLIDUS__(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def___REVERSE_SOLIDUS_SOLIDUS___body, expression); }
void def_SOLIDUS_REVERSE_SOLIDUS(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def_SOLIDUS_REVERSE_SOLIDUS_body, expression); }
void def_REVERSE_SOLIDUS_SOLIDUS(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def_REVERSE_SOLIDUS_SOLIDUS_body, expression); }

View File

@ -126,6 +126,6 @@ void def__mape(JoyListPtr stack, JoyListPtr expression);
void def__map0(JoyListPtr stack, JoyListPtr expression);
void def__map1(JoyListPtr stack, JoyListPtr expression);
void def__map2(JoyListPtr stack, JoyListPtr expression);
void def_xor(JoyListPtr stack, JoyListPtr expression);
void def_and(JoyListPtr stack, JoyListPtr expression);
void def_or(JoyListPtr stack, JoyListPtr expression);
void def___REVERSE_SOLIDUS_SOLIDUS__(JoyListPtr stack, JoyListPtr expression);
void def_SOLIDUS_REVERSE_SOLIDUS(JoyListPtr stack, JoyListPtr expression);
void def_REVERSE_SOLIDUS_SOLIDUS(JoyListPtr stack, JoyListPtr expression);

View File

@ -36,7 +36,7 @@
#line 13 "KEYWORDS.txt"
struct dict_entry;
#include <string.h>
/* maximum key range = 354, duplicates = 0 */
/* maximum key range = 304, 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[] =
{
355, 355, 355, 355, 355, 355, 355, 355, 355, 355,
355, 355, 355, 355, 355, 355, 355, 355, 355, 355,
355, 355, 355, 355, 355, 355, 355, 355, 355, 355,
355, 355, 355, 15, 355, 355, 355, 105, 100, 355,
355, 355, 30, 95, 355, 75, 355, 25, 15, 45,
35, 20, 355, 355, 355, 355, 355, 355, 355, 355,
10, 90, 0, 85, 355, 355, 355, 355, 355, 355,
355, 355, 355, 355, 355, 355, 355, 355, 0, 355,
355, 355, 355, 355, 355, 355, 355, 355, 355, 355,
355, 355, 355, 355, 355, 15, 355, 100, 70, 0,
5, 30, 40, 110, 5, 15, 355, 5, 40, 60,
0, 15, 0, 85, 70, 30, 25, 0, 85, 35,
20, 5, 0, 40, 80, 0, 355, 355, 355, 355,
355, 355, 355, 355, 355, 355, 355, 355, 355, 355,
355, 355, 355, 355, 355, 355, 355, 355, 355, 355,
355, 355, 355, 355, 355, 355, 355, 355, 355, 355,
355, 355, 355, 355, 355, 355, 355, 355, 355, 355,
355, 355, 355, 355, 355, 355, 355, 355, 355, 355,
355, 355, 355, 355, 355, 355, 355, 355, 355, 355,
355, 355, 355, 355, 355, 355, 355, 355, 355, 355,
355, 355, 355, 355, 355, 355, 355, 355, 355, 355,
355, 355, 355, 355, 355, 355, 355, 355, 355, 355,
355, 355, 355, 355, 355, 355, 355, 355, 355, 355,
355, 355, 355, 355, 355, 355, 355, 355, 355, 355,
355, 355, 355, 355, 355, 355, 355, 355, 355, 355,
355, 355, 355, 355, 355, 355
305, 305, 305, 305, 305, 305, 305, 305, 305, 305,
305, 305, 305, 305, 305, 305, 305, 305, 305, 305,
305, 305, 305, 305, 305, 305, 305, 305, 305, 305,
305, 305, 305, 5, 305, 305, 305, 80, 10, 305,
305, 305, 60, 75, 305, 25, 305, 20, 55, 65,
15, 75, 305, 305, 305, 305, 305, 305, 305, 305,
10, 105, 0, 45, 305, 305, 305, 305, 305, 305,
305, 305, 305, 305, 305, 305, 305, 305, 35, 305,
305, 305, 305, 305, 305, 305, 305, 305, 305, 305,
305, 305, 30, 305, 305, 70, 305, 60, 70, 0,
5, 30, 40, 100, 40, 15, 305, 5, 40, 60,
0, 15, 0, 85, 70, 30, 25, 0, 115, 80,
30, 5, 25, 40, 0, 0, 305, 305, 305, 305,
305, 305, 305, 305, 305, 305, 305, 305, 305, 305,
305, 305, 305, 305, 305, 305, 305, 305, 305, 305,
305, 305, 305, 305, 305, 305, 305, 305, 305, 305,
305, 305, 305, 305, 305, 305, 305, 305, 305, 305,
305, 305, 305, 305, 305, 305, 305, 305, 305, 305,
305, 305, 305, 305, 305, 305, 305, 305, 305, 305,
305, 305, 305, 305, 305, 305, 305, 305, 305, 305,
305, 305, 305, 305, 305, 305, 305, 305, 305, 305,
305, 305, 305, 305, 305, 305, 305, 305, 305, 305,
305, 305, 305, 305, 305, 305, 305, 305, 305, 305,
305, 305, 305, 305, 305, 305, 305, 305, 305, 305,
305, 305, 305, 305, 305, 305, 305, 305, 305, 305,
305, 305, 305, 305, 305, 305
};
register unsigned int hval = len;
@ -99,11 +99,11 @@ in_word_set (register const char *str, register size_t len)
{
enum
{
TOTAL_KEYWORDS = 162,
TOTAL_KEYWORDS = 160,
MIN_WORD_LENGTH = 1,
MAX_WORD_LENGTH = 14,
MIN_HASH_VALUE = 1,
MAX_HASH_VALUE = 354
MAX_HASH_VALUE = 304
};
static const struct dict_entry wordlist[] =
@ -111,394 +111,380 @@ in_word_set (register const char *str, register size_t len)
{""},
#line 16 "KEYWORDS.txt"
{">", def_gt},
{""}, {""}, {""}, {""}, {""}, {""},
#line 41 "KEYWORDS.txt"
#line 59 "KEYWORDS.txt"
{"||", def_VERTICAL_LINE_VERTICAL_LINE},
{""}, {""}, {""}, {""}, {""},
#line 39 "KEYWORDS.txt"
{"dup", dup},
{""}, {""},
#line 89 "KEYWORDS.txt"
#line 87 "KEYWORDS.txt"
{"dupdip", def_dupdip},
#line 19 "KEYWORDS.txt"
{"<>", def_neq},
{""},
#line 87 "KEYWORDS.txt"
#line 85 "KEYWORDS.txt"
{"dupd", def_dupd},
#line 88 "KEYWORDS.txt"
#line 86 "KEYWORDS.txt"
{"dupdd", def_dupdd},
{""},
#line 90 "KEYWORDS.txt"
#line 88 "KEYWORDS.txt"
{"dupdipd", def_dupdipd},
#line 46 "KEYWORDS.txt"
#line 44 "KEYWORDS.txt"
{"pop", pop},
{""},
#line 115 "KEYWORDS.txt"
#line 113 "KEYWORDS.txt"
{"popop", def_popop},
#line 17 "KEYWORDS.txt"
{"<", def_lt},
#line 116 "KEYWORDS.txt"
{"popopop", def_popopop},
#line 40 "KEYWORDS.txt"
{"dip", dip},
#line 113 "KEYWORDS.txt"
{"popd", def_popd},
#line 114 "KEYWORDS.txt"
{"popopop", def_popopop},
#line 38 "KEYWORDS.txt"
{"dip", dip},
#line 111 "KEYWORDS.txt"
{"popd", def_popd},
#line 112 "KEYWORDS.txt"
{"popdd", def_popdd},
#line 117 "KEYWORDS.txt"
#line 115 "KEYWORDS.txt"
{"popopd", def_popopd},
#line 118 "KEYWORDS.txt"
#line 116 "KEYWORDS.txt"
{"popopdd", def_popopdd},
{""},
#line 82 "KEYWORDS.txt"
#line 80 "KEYWORDS.txt"
{"dipd", def_dipd},
{""},
#line 43 "KEYWORDS.txt"
#line 41 "KEYWORDS.txt"
{"i", i_joyfunc},
{""}, {""},
#line 151 "KEYWORDS.txt"
{"tuck", def_tuck},
{""},
#line 153 "KEYWORDS.txt"
{"uncons", def_uncons},
#line 75 "KEYWORDS.txt"
{"ccccons", def_ccccons},
{""},
#line 79 "KEYWORDS.txt"
{"codi", def_codi},
#line 99 "KEYWORDS.txt"
{"hypot", def_hypot},
#line 159 "KEYWORDS.txt"
{"x", def_x},
#line 156 "KEYWORDS.txt"
{"unstack", def_unstack},
#line 80 "KEYWORDS.txt"
{"codireco", def_codireco},
#line 154 "KEYWORDS.txt"
{"unit", def_unit},
{""},
#line 39 "KEYWORDS.txt"
{"concat", concat},
#line 101 "KEYWORDS.txt"
{"ii", def_ii},
{""},
#line 38 "KEYWORDS.txt"
{"cons", cons},
#line 76 "KEYWORDS.txt"
{"ccons", def_ccons},
#line 32 "KEYWORDS.txt"
{"/", fdiv_q},
#line 109 "KEYWORDS.txt"
{"nullary", def_nullary},
#line 63 "KEYWORDS.txt"
{"<{}", def_LESS_THAN_SIGN_LEFT_CURLY_BRACKET_RIGHT_CURLY_BRACKET},
#line 81 "KEYWORDS.txt"
{"dinfrirst", def_dinfrirst},
#line 150 "KEYWORDS.txt"
{"third", def_third},
{""}, {""}, {""},
#line 78 "KEYWORDS.txt"
{"clop", def_clop},
#line 107 "KEYWORDS.txt"
{"nulco", def_nulco},
#line 26 "KEYWORDS.txt"
{"*", mul},
#line 83 "KEYWORDS.txt"
{"disenstacken", def_disenstacken},
#line 37 "KEYWORDS.txt"
{"cmp", cmp_joyfunc},
#line 64 "KEYWORDS.txt"
{"<<{}", def_LESS_THAN_SIGN_LESS_THAN_SIGN_LEFT_CURLY_BRACKET_RIGHT_CURLY_BRACKET},
#line 133 "KEYWORDS.txt"
{"shunt", def_shunt},
#line 94 "KEYWORDS.txt"
{"fourth", def_fourth},
#line 157 "KEYWORDS.txt"
{"unswons", def_unswons},
#line 106 "KEYWORDS.txt"
{"not", def_not},
#line 91 "KEYWORDS.txt"
{"enstacken", def_enstacken},
{""},
#line 131 "KEYWORDS.txt"
{"second", def_second},
{""},
#line 130 "KEYWORDS.txt"
{"run", def_run},
#line 45 "KEYWORDS.txt"
{"loop", loop},
{""}, {""},
#line 165 "KEYWORDS.txt"
{"_times0", def__times0},
{""},
#line 134 "KEYWORDS.txt"
{"size", def_size},
#line 132 "KEYWORDS.txt"
{"shift", def_shift},
#line 136 "KEYWORDS.txt"
{"spiral_next", def_spiral_next},
#line 85 "KEYWORDS.txt"
{"down_to_zero", def_down_to_zero},
#line 44 "KEYWORDS.txt"
{"inscribe", inscribe},
#line 108 "KEYWORDS.txt"
{"null", def_null},
{""},
#line 103 "KEYWORDS.txt"
{"infrst", def_infrst},
#line 167 "KEYWORDS.txt"
{"_timest", def__timest},
#line 25 "KEYWORDS.txt"
{"mod", fdiv_r},
#line 160 "KEYWORDS.txt"
{"step", def_step},
#line 158 "KEYWORDS.txt"
{"while", def_while},
#line 161 "KEYWORDS.txt"
{"_step0", def__step0},
#line 53 "KEYWORDS.txt"
{"lt", def_lt},
#line 142 "KEYWORDS.txt"
{"stuncons", def_stuncons},
#line 86 "KEYWORDS.txt"
{"drop", def_drop},
{""},
#line 74 "KEYWORDS.txt"
{"binary", def_binary},
#line 110 "KEYWORDS.txt"
{"of", def_of},
#line 155 "KEYWORDS.txt"
{"unquoted", def_unquoted},
{""}, {""},
#line 163 "KEYWORDS.txt"
{"_stept", def__stept},
#line 55 "KEYWORDS.txt"
{"le", def_le},
#line 137 "KEYWORDS.txt"
{"split_at", def_split_at},
#line 70 "KEYWORDS.txt"
{"appN", def_appN},
#line 138 "KEYWORDS.txt"
{"split_list", def_split_list},
#line 77 "KEYWORDS.txt"
{"cleave", def_cleave},
#line 166 "KEYWORDS.txt"
{"_times1", def__times1},
{""},
#line 141 "KEYWORDS.txt"
{"step_zero", def_step_zero},
#line 152 "KEYWORDS.txt"
{"unary", def_unary},
#line 120 "KEYWORDS.txt"
{"quoted", def_quoted},
#line 146 "KEYWORDS.txt"
{"swoncat", def_swoncat},
#line 175 "KEYWORDS.txt"
{"and", def_and},
#line 100 "KEYWORDS.txt"
{"ifte", def_ifte},
#line 145 "KEYWORDS.txt"
{"swons", def_swons},
#line 84 "KEYWORDS.txt"
{"divmod", def_divmod},
#line 119 "KEYWORDS.txt"
{"product", def_product},
#line 29 "KEYWORDS.txt"
{"add", add},
#line 123 "KEYWORDS.txt"
{"reco", def_reco},
{""},
#line 162 "KEYWORDS.txt"
{"_step1", def__step1},
#line 112 "KEYWORDS.txt"
{"pm", def_pm},
#line 95 "KEYWORDS.txt"
{"gcd", def_gcd},
#line 69 "KEYWORDS.txt"
{"app3", def_app3},
{""}, {""}, {""}, {""}, {""},
#line 125 "KEYWORDS.txt"
{"roll>", def_roll_GREATER_THAN_SIGN},
#line 127 "KEYWORDS.txt"
{"rollup", def_rollup},
{""},
#line 128 "KEYWORDS.txt"
{"rolldown", def_rolldown},
#line 93 "KEYWORDS.txt"
{"fork", def_fork},
#line 164 "KEYWORDS.txt"
{"times", def_times},
#line 57 "KEYWORDS.txt"
{"&&", def_AMPERSAND_AMPERSAND},
{""},
#line 149 "KEYWORDS.txt"
{"ternary", def_ternary},
{"tuck", def_tuck},
{""},
#line 68 "KEYWORDS.txt"
{"app2", def_app2},
#line 126 "KEYWORDS.txt"
{"roll<", def_roll_LESS_THAN_SIGN},
#line 151 "KEYWORDS.txt"
{"uncons", def_uncons},
#line 73 "KEYWORDS.txt"
{"b", def_b},
{"ccccons", def_ccccons},
{""},
#line 27 "KEYWORDS.txt"
{"mul", mul},
#line 34 "KEYWORDS.txt"
{"bool", truthy},
#line 36 "KEYWORDS.txt"
{"clear", clear},
#line 96 "KEYWORDS.txt"
{"genrec", def_genrec},
#line 147 "KEYWORDS.txt"
{"tailrec", def_tailrec},
{""},
#line 67 "KEYWORDS.txt"
{"app1", def_app1},
#line 77 "KEYWORDS.txt"
{"codi", def_codi},
{""},
#line 30 "KEYWORDS.txt"
{"/", fdiv_q},
#line 154 "KEYWORDS.txt"
{"unstack", def_unstack},
#line 78 "KEYWORDS.txt"
{"codireco", def_codireco},
#line 152 "KEYWORDS.txt"
{"unit", def_unit},
{""},
#line 37 "KEYWORDS.txt"
{"concat", concat},
#line 99 "KEYWORDS.txt"
{"ii", def_ii},
{""},
#line 36 "KEYWORDS.txt"
{"cons", cons},
#line 74 "KEYWORDS.txt"
{"ccons", def_ccons},
#line 28 "KEYWORDS.txt"
{"-", sub},
#line 71 "KEYWORDS.txt"
{"at", def_at},
#line 143 "KEYWORDS.txt"
{"sum", def_sum},
{""},
#line 42 "KEYWORDS.txt"
{"first", first},
{""},
#line 176 "KEYWORDS.txt"
{"or", def_or},
{""},
#line 47 "KEYWORDS.txt"
{"rest", rest},
#line 102 "KEYWORDS.txt"
{"infra", def_infra},
#line 23 "KEYWORDS.txt"
{"|", def_or},
#line 52 "KEYWORDS.txt"
{"gt", def_gt},
#line 168 "KEYWORDS.txt"
{"map", def_map},
#line 148 "KEYWORDS.txt"
{"take", def_take},
#line 48 "KEYWORDS.txt"
{"stack", stack},
#line 140 "KEYWORDS.txt"
{"stackd", def_stackd},
#line 62 "KEYWORDS.txt"
#line 107 "KEYWORDS.txt"
{"nullary", def_nullary},
#line 61 "KEYWORDS.txt"
{"<{}", def_LESS_THAN_SIGN_LEFT_CURLY_BRACKET_RIGHT_CURLY_BRACKET},
#line 79 "KEYWORDS.txt"
{"dinfrirst", def_dinfrirst},
{""}, {""},
#line 60 "KEYWORDS.txt"
{"!-", def_EXCLAMATION_MARK_HYPHEN_MINUS},
{""},
#line 50 "KEYWORDS.txt"
{"swap", swap},
{""},
#line 58 "KEYWORDS.txt"
{"?", def_QUESTION_MARK},
#line 56 "KEYWORDS.txt"
{"ge", def_ge},
#line 31 "KEYWORDS.txt"
{"sub", sub},
{""},
#line 144 "KEYWORDS.txt"
{"swapd", def_swapd},
#line 49 "KEYWORDS.txt"
{"swaack", swaack},
{""},
#line 174 "KEYWORDS.txt"
{"xor", def_xor},
#line 76 "KEYWORDS.txt"
{"clop", def_clop},
#line 105 "KEYWORDS.txt"
{"nulco", def_nulco},
#line 157 "KEYWORDS.txt"
{"x", def_x},
#line 81 "KEYWORDS.txt"
{"disenstacken", def_disenstacken},
#line 35 "KEYWORDS.txt"
{"cmp", cmp_joyfunc},
#line 62 "KEYWORDS.txt"
{"<<{}", def_LESS_THAN_SIGN_LESS_THAN_SIGN_LEFT_CURLY_BRACKET_RIGHT_CURLY_BRACKET},
{""}, {""},
#line 155 "KEYWORDS.txt"
{"unswons", def_unswons},
#line 104 "KEYWORDS.txt"
{"not", def_not},
#line 89 "KEYWORDS.txt"
{"enstacken", def_enstacken},
#line 150 "KEYWORDS.txt"
{"unary", def_unary},
#line 129 "KEYWORDS.txt"
{"second", def_second},
#line 174 "KEYWORDS.txt"
{"\\/", def_REVERSE_SOLIDUS_SOLIDUS},
#line 128 "KEYWORDS.txt"
{"run", def_run},
#line 43 "KEYWORDS.txt"
{"loop", loop},
#line 97 "KEYWORDS.txt"
{"hypot", def_hypot},
{""},
#line 55 "KEYWORDS.txt"
{"--", def_HYPHEN_MINUS_HYPHEN_MINUS},
#line 27 "KEYWORDS.txt"
{"add", add},
#line 66 "KEYWORDS.txt"
{"app2", def_app2},
{""},
#line 134 "KEYWORDS.txt"
{"spiral_next", def_spiral_next},
#line 173 "KEYWORDS.txt"
{"/\\", def_SOLIDUS_REVERSE_SOLIDUS},
#line 42 "KEYWORDS.txt"
{"inscribe", inscribe},
#line 106 "KEYWORDS.txt"
{"null", def_null},
{""},
#line 101 "KEYWORDS.txt"
{"infrst", def_infrst},
{""},
#line 23 "KEYWORDS.txt"
{"mod", fdiv_r},
#line 158 "KEYWORDS.txt"
{"step", def_step},
#line 148 "KEYWORDS.txt"
{"third", def_third},
#line 56 "KEYWORDS.txt"
{"?", def_QUESTION_MARK},
#line 51 "KEYWORDS.txt"
{"lt", def_lt},
#line 140 "KEYWORDS.txt"
{"stuncons", def_stuncons},
#line 84 "KEYWORDS.txt"
{"drop", def_drop},
{""},
#line 72 "KEYWORDS.txt"
{"binary", def_binary},
#line 108 "KEYWORDS.txt"
{"of", def_of},
#line 153 "KEYWORDS.txt"
{"unquoted", def_unquoted},
#line 68 "KEYWORDS.txt"
{"appN", def_appN},
#line 131 "KEYWORDS.txt"
{"shunt", def_shunt},
#line 92 "KEYWORDS.txt"
{"fourth", def_fourth},
#line 53 "KEYWORDS.txt"
{"le", def_le},
#line 135 "KEYWORDS.txt"
{"split_at", def_split_at},
#line 132 "KEYWORDS.txt"
{"size", def_size},
#line 136 "KEYWORDS.txt"
{"split_list", def_split_list},
#line 75 "KEYWORDS.txt"
{"cleave", def_cleave},
#line 145 "KEYWORDS.txt"
{"tailrec", def_tailrec},
{""},
#line 139 "KEYWORDS.txt"
{"step_zero", def_step_zero},
{""},
#line 118 "KEYWORDS.txt"
{"quoted", def_quoted},
#line 69 "KEYWORDS.txt"
{"at", def_at},
#line 93 "KEYWORDS.txt"
{"gcd", def_gcd},
#line 98 "KEYWORDS.txt"
{"ifte", def_ifte},
#line 130 "KEYWORDS.txt"
{"shift", def_shift},
{""},
#line 117 "KEYWORDS.txt"
{"product", def_product},
{""},
#line 121 "KEYWORDS.txt"
{"reco", def_reco},
#line 100 "KEYWORDS.txt"
{"infra", def_infra},
#line 24 "KEYWORDS.txt"
{"*", mul},
#line 110 "KEYWORDS.txt"
{"pm", def_pm},
#line 166 "KEYWORDS.txt"
{"map", def_map},
#line 146 "KEYWORDS.txt"
{"take", def_take},
#line 46 "KEYWORDS.txt"
{"stack", stack},
#line 138 "KEYWORDS.txt"
{"stackd", def_stackd},
#line 83 "KEYWORDS.txt"
{"down_to_zero", def_down_to_zero},
{""},
#line 65 "KEYWORDS.txt"
{"app1", def_app1},
#line 123 "KEYWORDS.txt"
{"roll>", def_roll_GREATER_THAN_SIGN},
#line 125 "KEYWORDS.txt"
{"rollup", def_rollup},
{""},
#line 126 "KEYWORDS.txt"
{"rolldown", def_rolldown},
#line 91 "KEYWORDS.txt"
{"fork", def_fork},
#line 162 "KEYWORDS.txt"
{"times", def_times},
#line 94 "KEYWORDS.txt"
{"genrec", def_genrec},
#line 147 "KEYWORDS.txt"
{"ternary", def_ternary},
{""},
#line 67 "KEYWORDS.txt"
{"app3", def_app3},
#line 124 "KEYWORDS.txt"
{"roll<", def_roll_LESS_THAN_SIGN},
#line 71 "KEYWORDS.txt"
{"b", def_b},
#line 165 "KEYWORDS.txt"
{"_timest", def__timest},
#line 25 "KEYWORDS.txt"
{"mul", mul},
#line 32 "KEYWORDS.txt"
{"bool", truthy},
#line 34 "KEYWORDS.txt"
{"clear", clear},
#line 82 "KEYWORDS.txt"
{"divmod", def_divmod},
#line 90 "KEYWORDS.txt"
{"flatten", def_flatten},
{""}, {""}, {""},
#line 26 "KEYWORDS.txt"
{"+", add},
#line 50 "KEYWORDS.txt"
{"gt", def_gt},
#line 141 "KEYWORDS.txt"
{"sum", def_sum},
{""},
#line 40 "KEYWORDS.txt"
{"first", first},
#line 161 "KEYWORDS.txt"
{"_stept", def__stept},
#line 144 "KEYWORDS.txt"
{"swoncat", def_swoncat},
#line 120 "KEYWORDS.txt"
{"range_to_zero", def_range_to_zero},
#line 45 "KEYWORDS.txt"
{"rest", rest},
#line 143 "KEYWORDS.txt"
{"swons", def_swons},
#line 22 "KEYWORDS.txt"
{"%", fdiv_r},
#line 54 "KEYWORDS.txt"
{"ge", def_ge},
{""}, {""},
#line 119 "KEYWORDS.txt"
{"range", def_range},
{""}, {""}, {""}, {""},
#line 156 "KEYWORDS.txt"
{"while", def_while},
{""},
#line 163 "KEYWORDS.txt"
{"_times0", def__times0},
#line 29 "KEYWORDS.txt"
{"sub", sub},
#line 48 "KEYWORDS.txt"
{"swap", swap},
{""}, {""}, {""}, {""}, {""},
#line 142 "KEYWORDS.txt"
{"swapd", def_swapd},
#line 47 "KEYWORDS.txt"
{"swaack", swaack},
#line 164 "KEYWORDS.txt"
{"_times1", def__times1},
#line 109 "KEYWORDS.txt"
{"pam", def_pam},
{""}, {""},
#line 159 "KEYWORDS.txt"
{"_step0", def__step0},
{""}, {""}, {""}, {""},
#line 64 "KEYWORDS.txt"
{"anamorphism", def_anamorphism},
{""},
#line 63 "KEYWORDS.txt"
{"abs", def_abs},
#line 172 "KEYWORDS.txt"
{"_\\/_", def___REVERSE_SOLIDUS_SOLIDUS__},
#line 133 "KEYWORDS.txt"
{"small", def_small},
#line 160 "KEYWORDS.txt"
{"_step1", def__step1},
{""}, {""}, {""},
#line 127 "KEYWORDS.txt"
{"rrest", def_rrest},
{""},
#line 49 "KEYWORDS.txt"
{"eq", def_eq},
#line 52 "KEYWORDS.txt"
{"neq", def_neq},
{""}, {""}, {""}, {""}, {""},
#line 102 "KEYWORDS.txt"
{"make_generator", def_make_generator},
#line 171 "KEYWORDS.txt"
{"_map2", def__map2},
#line 15 "KEYWORDS.txt"
{"=", def_eq},
#line 21 "KEYWORDS.txt"
{">=", def_ge},
{""}, {""}, {""}, {""},
#line 92 "KEYWORDS.txt"
{"flatten", def_flatten},
{""}, {""}, {""},
#line 28 "KEYWORDS.txt"
{"+", add},
#line 20 "KEYWORDS.txt"
{"<=", def_le},
#line 33 "KEYWORDS.txt"
{"div", fdiv_q},
{""},
#line 171 "KEYWORDS.txt"
{"_map0", def__map0},
{""},
#line 18 "KEYWORDS.txt"
{"!=", def_neq},
#line 122 "KEYWORDS.txt"
{"range_to_zero", def_range_to_zero},
{""},
#line 129 "KEYWORDS.txt"
{"rrest", def_rrest},
#line 22 "KEYWORDS.txt"
{"&", def_and},
#line 51 "KEYWORDS.txt"
{"eq", def_eq},
#line 54 "KEYWORDS.txt"
{"neq", def_neq},
{""},
#line 121 "KEYWORDS.txt"
{"range", def_range},
{""}, {""}, {""}, {""},
#line 170 "KEYWORDS.txt"
#line 20 "KEYWORDS.txt"
{"<=", def_le},
{""}, {""},
#line 168 "KEYWORDS.txt"
{"_mape", def__mape},
#line 24 "KEYWORDS.txt"
{"%", fdiv_r},
{""}, {""}, {""},
#line 173 "KEYWORDS.txt"
{"_map2", def__map2},
{""}, {""}, {""}, {""}, {""}, {""},
#line 124 "KEYWORDS.txt"
{"reverse", def_reverse},
#line 111 "KEYWORDS.txt"
{"pam", def_pam},
{""},
#line 172 "KEYWORDS.txt"
{"_map1", def__map1},
{""},
#line 57 "KEYWORDS.txt"
{"--", def_HYPHEN_MINUS_HYPHEN_MINUS},
{""}, {""}, {""}, {""}, {""},
#line 65 "KEYWORDS.txt"
{"abs", def_abs},
{""},
#line 135 "KEYWORDS.txt"
{"small", def_small},
{""}, {""}, {""}, {""}, {""}, {""},
#line 61 "KEYWORDS.txt"
{"||", def_VERTICAL_LINE_VERTICAL_LINE},
{""}, {""}, {""}, {""}, {""}, {""},
#line 104 "KEYWORDS.txt"
{"make_generator", def_make_generator},
{""},
#line 35 "KEYWORDS.txt"
{"branch", branch},
#line 72 "KEYWORDS.txt"
{"average", def_average},
#line 105 "KEYWORDS.txt"
{"neg", def_neg},
{""}, {""}, {""}, {""},
#line 139 "KEYWORDS.txt"
{"sqr", def_sqr},
{""}, {""}, {""}, {""}, {""}, {""},
#line 169 "KEYWORDS.txt"
{"_map?", def__map_QUESTION_MARK},
{""}, {""}, {""}, {""}, {""},
#line 66 "KEYWORDS.txt"
{"anamorphism", def_anamorphism},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
{""}, {""}, {""}, {""},
#line 97 "KEYWORDS.txt"
{"grabN", def_grabN},
{""},
#line 60 "KEYWORDS.txt"
#line 58 "KEYWORDS.txt"
{"++", def_PLUS_SIGN_PLUS_SIGN},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
{""}, {""}, {""}, {""}, {""},
#line 59 "KEYWORDS.txt"
{"&&", def_AMPERSAND_AMPERSAND},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
#line 103 "KEYWORDS.txt"
{"neg", def_neg},
{""}, {""}, {""}, {""}, {""}, {""},
#line 167 "KEYWORDS.txt"
{"_map?", def__map_QUESTION_MARK},
{""},
#line 70 "KEYWORDS.txt"
{"average", def_average},
{""}, {""}, {""},
#line 33 "KEYWORDS.txt"
{"branch", branch},
{""}, {""}, {""},
#line 169 "KEYWORDS.txt"
{"_map0", def__map0},
{""},
#line 122 "KEYWORDS.txt"
{"reverse", def_reverse},
#line 31 "KEYWORDS.txt"
{"div", fdiv_q},
{""}, {""}, {""}, {""},
#line 137 "KEYWORDS.txt"
{"sqr", def_sqr},
{""},
#line 170 "KEYWORDS.txt"
{"_map1", def__map1},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
#line 95 "KEYWORDS.txt"
{"grabN", def_grabN},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
{""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
{""}, {""}, {""}, {""}, {""}, {""},
#line 98 "KEYWORDS.txt"
#line 96 "KEYWORDS.txt"
{"grba", def_grba}
};