OSDN Git Service

Remake C version.
authorsforman <sforman@hushmail.com>
Tue, 24 Oct 2023 05:50:44 +0000 (22:50 -0700)
committersforman <sforman@hushmail.com>
Tue, 24 Oct 2023 05:50:44 +0000 (22:50 -0700)
implementations/C/KEYWORDS.txt
implementations/C/definitions.c
implementations/C/definitions.h
implementations/C/defs.txt
implementations/C/keywords.c

index 9617ba7..78b8585 100644 (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
index 01739aa..c37c560 100644 (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); }
index cbe972f..e405d9b 100644 (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);
index a2ada1e..934989a 100644 (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
index bf2c7e4..4a7ccc3 100644 (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"
+      {""}, {""}, {""},
+#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 88 "KEYWORDS.txt"
-      {"down_to_zero", def_down_to_zero},
-#line 154 "KEYWORDS.txt"
+      {""},
+#line 155 "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 45 "KEYWORDS.txt"
       {"loop", loop},
-#line 163 "KEYWORDS.txt"
-      {"third", def_third},
+      {""},
+#line 98 "KEYWORDS.txt"
+      {"fourth", def_fourth},
+      {""},
+#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 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 173 "KEYWORDS.txt"
+#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 98 "KEYWORDS.txt"
-      {"fourth", def_fourth},
-      {""}, {""},
-#line 153 "KEYWORDS.txt"
+#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 145 "KEYWORDS.txt"
-      {"shunt", def_shunt},
-#line 107 "KEYWORDS.txt"
-      {"infrst", def_infrst},
-      {""},
-#line 112 "KEYWORDS.txt"
-      {"not", def_not},
-#line 79 "KEYWORDS.txt"
-      {"clop", def_clop},
-#line 113 "KEYWORDS.txt"
-      {"nulco", def_nulco},
+#line 151 "KEYWORDS.txt"
+      {"split_list", def_split_list},
+#line 24 "KEYWORDS.txt"
+      {"*", mul},
       {""}, {""},
-#line 201 "KEYWORDS.txt"
+#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 99 "KEYWORDS.txt"
+      {"gcd", def_gcd},
+#line 134 "KEYWORDS.txt"
+      {"reco", def_reco},
+      {""},
+#line 176 "KEYWORDS.txt"
+      {"_step1", def__step1},
+#line 180 "KEYWORDS.txt"
+      {"_times1", def__times1},
+      {""},
+#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 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 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"
+      {"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 60 "KEYWORDS.txt"
-      {"++", def_PLUS_SIGN_PLUS_SIGN},
-#line 168 "KEYWORDS.txt"
+#line 114 "KEYWORDS.txt"
+      {"nullary", def_nullary},
+#line 169 "KEYWORDS.txt"
       {"unquoted", def_unquoted},
-#line 34 "KEYWORDS.txt"
-      {"bool", truthy},
-#line 138 "KEYWORDS.txt"
-      {"roll>", def_roll_GREATER_THAN_SIGN},
+#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 202 "KEYWORDS.txt"
+#line 203 "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 74 "KEYWORDS.txt"
+      {"binary", def_binary},
+#line 96 "KEYWORDS.txt"
+      {"flatten", def_flatten},
+      {""}, {""},
+#line 166 "KEYWORDS.txt"
+      {"unary", def_unary},
 #line 78 "KEYWORDS.txt"
       {"cleave", def_cleave},
-#line 54 "KEYWORDS.txt"
-      {"lt", def_lt},
-      {""},
-#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 18 "KEYWORDS.txt"
+      {"!=", def_neq},
+#line 182 "KEYWORDS.txt"
+      {"map", def_map},
 #line 50 "KEYWORDS.txt"
       {"swap", swap},
       {""},
-#line 152 "KEYWORDS.txt"
-      {"stackd", def_stackd},
-      {""},
+#line 100 "KEYWORDS.txt"
+      {"genrec", def_genrec},
+#line 53 "KEYWORDS.txt"
+      {"gt", def_gt},
 #line 29 "KEYWORDS.txt"
       {"sub", sub},
-#line 69 "KEYWORDS.txt"
-      {"app3", def_app3},
-#line 157 "KEYWORDS.txt"
+      {""},
+#line 158 "KEYWORDS.txt"
       {"swapd", def_swapd},
-#line 176 "KEYWORDS.txt"
-      {"_stept", def__stept},
-#line 180 "KEYWORDS.txt"
-      {"_timest", def__timest},
-      {""}, {""}, {""},
-#line 100 "KEYWORDS.txt"
-      {"genrec", def_genrec},
-#line 160 "KEYWORDS.txt"
-      {"tailrec", def_tailrec},
       {""},
-#line 164 "KEYWORDS.txt"
-      {"tuck", def_tuck},
+#line 19 "KEYWORDS.txt"
+      {"<>", def_neq},
+      {""}, {""},
 #line 36 "KEYWORDS.txt"
       {"clear", clear},
-#line 28 "KEYWORDS.txt"
-      {"-", sub},
-#line 121 "KEYWORDS.txt"
-      {"pm", def_pm},
-#line 133 "KEYWORDS.txt"
-      {"range_to_zero", def_range_to_zero},
+      {""},
+#line 21 "KEYWORDS.txt"
+      {">=", def_ge},
       {""}, {""},
-#line 197 "KEYWORDS.txt"
-      {"empty?", def_empty_QUESTION_MARK},
-#line 57 "KEYWORDS.txt"
-      {"ge", def_ge},
-#line 64 "KEYWORDS.txt"
-      {"abs", def_abs},
+#line 199 "KEYWORDS.txt"
+      {"max-of-two", def_max_HYPHEN_MINUS_of_HYPHEN_MINUS_two},
       {""}, {""},
-#line 74 "KEYWORDS.txt"
-      {"binary", def_binary},
+#line 200 "KEYWORDS.txt"
+      {"max", def_max},
 #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},
+      {"_\\/_", def___REVERSE_SOLIDUS_SOLIDUS__},
 #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 135 "KEYWORDS.txt"
+      {"reverse", def_reverse},
       {""}, {""}, {""},
-#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},
+      {"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 96 "KEYWORDS.txt"
-      {"flatten", def_flatten},
-#line 199 "KEYWORDS.txt"
-      {"max", def_max},
+#line 97 "KEYWORDS.txt"
+      {"fork", def_fork},
       {""}, {""},
-#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 60 "KEYWORDS.txt"
+      {"++", def_PLUS_SIGN_PLUS_SIGN},
       {""}, {""},
-#line 165 "KEYWORDS.txt"
-      {"unary", def_unary},
-#line 15 "KEYWORDS.txt"
-      {"=", def_eq},
+#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 162 "KEYWORDS.txt"
+#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 48 "KEYWORDS.txt"
-      {"stack", stack},
+#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 21 "KEYWORDS.txt"
-      {">=", def_ge},
+#line 59 "KEYWORDS.txt"
+      {"!-", def_EXCLAMATION_MARK_HYPHEN_MINUS},
       {""}, {""}, {""},
-#line 49 "KEYWORDS.txt"
-      {"swaack", swaack},
-#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 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 161 "KEYWORDS.txt"
-      {"take", def_take},
+#line 186 "KEYWORDS.txt"
+      {"_map1", def__map1},
       {""}, {""},
-#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"
-      {"_mape", def__mape},
-      {""}, {""}, {""}, {""},
-#line 186 "KEYWORDS.txt"
-      {"_map2", def__map2},
-#line 65 "KEYWORDS.txt"
-      {"anamorphism", def_anamorphism},
+      {""}, {""},
+#line 49 "KEYWORDS.txt"
+      {"swaack", swaack},
 #line 20 "KEYWORDS.txt"
       {"<=", def_le},
+      {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#line 185 "KEYWORDS.txt"
+      {"_map0", def__map0},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 182 "KEYWORDS.txt"
+      {""}, {""}, {""}, {""}, {""}, {""}, {""},
+#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 184 "KEYWORDS.txt"
+      {"_mape", def__mape},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-      {""}, {""}, {""}, {""}, {""},
 #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)