diff --git a/implementations/C/KEYWORDS.txt b/implementations/C/KEYWORDS.txt index 553fbdc..e079181 100644 --- a/implementations/C/KEYWORDS.txt +++ b/implementations/C/KEYWORDS.txt @@ -119,6 +119,7 @@ popopdd, def_popopdd popopd, def_popopd popopop, def_popopop popop, def_popop +pow, def_pow product, def_product quoted, def_quoted range, def_range diff --git a/implementations/C/definitions.c b/implementations/C/definitions.c index 91b34a7..525a4e4 100644 --- a/implementations/C/definitions.c +++ b/implementations/C/definitions.c @@ -82,6 +82,7 @@ JoyList def_popopdd_body; JoyList def_popopd_body; JoyList def_popopop_body; JoyList def_popop_body; +JoyList def_pow_body; JoyList def_product_body; JoyList def_quoted_body; JoyList def_range_body; @@ -224,6 +225,7 @@ init_defs(void) def_popopd_body = text_to_expression("[popop] dip"); def_popopop_body = text_to_expression("pop popop"); def_popop_body = text_to_expression("pop pop"); + def_pow_body = text_to_expression("1 roll> swap [*] cons times"); def_product_body = text_to_expression("1 swap [*] step"); def_quoted_body = text_to_expression("[unit] dip"); def_range_body = text_to_expression("[0 <=] [-- dup] anamorphism"); @@ -363,6 +365,7 @@ void def_popopdd(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression void def_popopd(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def_popopd_body, expression); } void def_popopop(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def_popopop_body, expression); } void def_popop(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def_popop_body, expression); } +void def_pow(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def_pow_body, expression); } void def_product(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def_product_body, expression); } void def_quoted(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def_quoted_body, expression); } void def_range(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def_range_body, expression); } diff --git a/implementations/C/definitions.h b/implementations/C/definitions.h index 5a5a7f8..00448ce 100644 --- a/implementations/C/definitions.h +++ b/implementations/C/definitions.h @@ -73,6 +73,7 @@ void def_popopdd(JoyListPtr stack, JoyListPtr expression); void def_popopd(JoyListPtr stack, JoyListPtr expression); void def_popopop(JoyListPtr stack, JoyListPtr expression); void def_popop(JoyListPtr stack, JoyListPtr expression); +void def_pow(JoyListPtr stack, JoyListPtr expression); void def_product(JoyListPtr stack, JoyListPtr expression); void def_quoted(JoyListPtr stack, JoyListPtr expression); void def_range(JoyListPtr stack, JoyListPtr expression); diff --git a/implementations/C/defs.txt b/implementations/C/defs.txt index 4dc279d..07ff6bb 100644 --- a/implementations/C/defs.txt +++ b/implementations/C/defs.txt @@ -73,6 +73,7 @@ popopdd [popop] dipd popopd [popop] dip popopop pop popop popop pop pop +pow 1 roll> swap [*] cons times product 1 swap [*] step quoted [unit] dip range [0 <=] [-- dup] anamorphism diff --git a/implementations/C/keywords.c b/implementations/C/keywords.c index 03a3cf7..2377679 100644 --- a/implementations/C/keywords.c +++ b/implementations/C/keywords.c @@ -99,7 +99,7 @@ in_word_set (register const char *str, register size_t len) { enum { - TOTAL_KEYWORDS = 169, + TOTAL_KEYWORDS = 170, MIN_WORD_LENGTH = 1, MAX_WORD_LENGTH = 15, MIN_HASH_VALUE = 1, @@ -111,7 +111,7 @@ in_word_set (register const char *str, register size_t len) {""}, #line 16 "KEYWORDS.txt" {">", def_gt}, -#line 133 "KEYWORDS.txt" +#line 134 "KEYWORDS.txt" {">>", def_GREATER_THAN_SIGN_GREATER_THAN_SIGN}, {""}, {""}, {""}, {""}, {""}, #line 41 "KEYWORDS.txt" @@ -157,7 +157,7 @@ in_word_set (register const char *str, register size_t len) #line 104 "KEYWORDS.txt" {"<<", def_LESS_THAN_SIGN_LESS_THAN_SIGN}, {""}, {""}, {""}, -#line 157 "KEYWORDS.txt" +#line 158 "KEYWORDS.txt" {"uncons", def_uncons}, #line 75 "KEYWORDS.txt" {"ccccons", def_ccccons}, @@ -171,7 +171,7 @@ in_word_set (register const char *str, register size_t len) {"fn", fn}, #line 80 "KEYWORDS.txt" {"codireco", def_codireco}, -#line 158 "KEYWORDS.txt" +#line 159 "KEYWORDS.txt" {"unit", def_unit}, {""}, #line 39 "KEYWORDS.txt" @@ -183,7 +183,7 @@ in_word_set (register const char *str, register size_t len) {"cons", cons}, #line 76 "KEYWORDS.txt" {"ccons", def_ccons}, -#line 163 "KEYWORDS.txt" +#line 164 "KEYWORDS.txt" {"x", def_x}, {""}, #line 62 "KEYWORDS.txt" @@ -208,37 +208,38 @@ in_word_set (register const char *str, register size_t len) {"cmp", cmp_joyfunc}, #line 63 "KEYWORDS.txt" {"<<{}", def_LESS_THAN_SIGN_LESS_THAN_SIGN_LEFT_CURLY_BRACKET_RIGHT_CURLY_BRACKET}, -#line 154 "KEYWORDS.txt" +#line 155 "KEYWORDS.txt" {"third", def_third}, {""}, -#line 161 "KEYWORDS.txt" +#line 162 "KEYWORDS.txt" {"unswons", def_unswons}, #line 107 "KEYWORDS.txt" {"not", def_not}, #line 91 "KEYWORDS.txt" {"enstacken", def_enstacken}, {""}, -#line 135 "KEYWORDS.txt" +#line 136 "KEYWORDS.txt" {"second", def_second}, -#line 182 "KEYWORDS.txt" +#line 183 "KEYWORDS.txt" {"\\/", def_REVERSE_SOLIDUS_SOLIDUS}, -#line 134 "KEYWORDS.txt" +#line 135 "KEYWORDS.txt" {"run", def_run}, #line 45 "KEYWORDS.txt" {"loop", loop}, -#line 137 "KEYWORDS.txt" +#line 138 "KEYWORDS.txt" {"shunt", def_shunt}, #line 94 "KEYWORDS.txt" {"fourth", def_fourth}, #line 85 "KEYWORDS.txt" {"down_to_zero", def_down_to_zero}, - {""}, -#line 155 "KEYWORDS.txt" +#line 122 "KEYWORDS.txt" + {"pow", def_pow}, +#line 156 "KEYWORDS.txt" {"tuck", def_tuck}, {""}, -#line 140 "KEYWORDS.txt" +#line 141 "KEYWORDS.txt" {"spiral_next", def_spiral_next}, -#line 181 "KEYWORDS.txt" +#line 182 "KEYWORDS.txt" {"/\\", def_SOLIDUS_REVERSE_SOLIDUS}, #line 44 "KEYWORDS.txt" {"inscribe", inscribe}, @@ -247,67 +248,67 @@ in_word_set (register const char *str, register size_t len) {""}, #line 103 "KEYWORDS.txt" {"infrst", def_infrst}, -#line 160 "KEYWORDS.txt" +#line 161 "KEYWORDS.txt" {"unstack", def_unstack}, #line 23 "KEYWORDS.txt" {"mod", fdiv_r}, -#line 164 "KEYWORDS.txt" +#line 165 "KEYWORDS.txt" {"step", def_step}, -#line 136 "KEYWORDS.txt" +#line 137 "KEYWORDS.txt" {"shift", def_shift}, #line 28 "KEYWORDS.txt" {"-", sub}, #line 54 "KEYWORDS.txt" {"lt", def_lt}, -#line 146 "KEYWORDS.txt" +#line 147 "KEYWORDS.txt" {"stuncons", def_stuncons}, #line 86 "KEYWORDS.txt" {"drop", def_drop}, -#line 162 "KEYWORDS.txt" +#line 163 "KEYWORDS.txt" {"while", def_while}, {""}, #line 111 "KEYWORDS.txt" {"of", def_of}, -#line 159 "KEYWORDS.txt" +#line 160 "KEYWORDS.txt" {"unquoted", def_unquoted}, -#line 138 "KEYWORDS.txt" +#line 139 "KEYWORDS.txt" {"size", def_size}, {""}, #line 74 "KEYWORDS.txt" {"binary", def_binary}, #line 56 "KEYWORDS.txt" {"le", def_le}, -#line 141 "KEYWORDS.txt" +#line 142 "KEYWORDS.txt" {"split_at", def_split_at}, #line 68 "KEYWORDS.txt" {"app2", def_app2}, -#line 142 "KEYWORDS.txt" +#line 143 "KEYWORDS.txt" {"split_list", def_split_list}, #line 77 "KEYWORDS.txt" {"cleave", def_cleave}, -#line 149 "KEYWORDS.txt" +#line 150 "KEYWORDS.txt" {"swoncat", def_swoncat}, {""}, -#line 145 "KEYWORDS.txt" +#line 146 "KEYWORDS.txt" {"step_zero", def_step_zero}, -#line 150 "KEYWORDS.txt" +#line 151 "KEYWORDS.txt" {"swons", def_swons}, -#line 123 "KEYWORDS.txt" +#line 124 "KEYWORDS.txt" {"quoted", def_quoted}, {""}, #line 66 "KEYWORDS.txt" {"and", def_and}, #line 100 "KEYWORDS.txt" {"ifte", def_ifte}, -#line 156 "KEYWORDS.txt" +#line 157 "KEYWORDS.txt" {"unary", def_unary}, #line 32 "KEYWORDS.txt" {"lshift", lshift}, -#line 122 "KEYWORDS.txt" +#line 123 "KEYWORDS.txt" {"product", def_product}, #line 27 "KEYWORDS.txt" {"add", add}, -#line 126 "KEYWORDS.txt" +#line 127 "KEYWORDS.txt" {"reco", def_reco}, {""}, #line 22 "KEYWORDS.txt" @@ -326,15 +327,15 @@ in_word_set (register const char *str, register size_t len) {"gcd", def_gcd}, #line 69 "KEYWORDS.txt" {"app3", def_app3}, -#line 130 "KEYWORDS.txt" - {"roll>", def_roll_GREATER_THAN_SIGN}, #line 131 "KEYWORDS.txt" + {"roll>", def_roll_GREATER_THAN_SIGN}, +#line 132 "KEYWORDS.txt" {"rollup", def_rollup}, {""}, -#line 128 "KEYWORDS.txt" +#line 129 "KEYWORDS.txt" {"rolldown", def_rolldown}, {""}, -#line 168 "KEYWORDS.txt" +#line 169 "KEYWORDS.txt" {"times", def_times}, {""}, #line 61 "KEYWORDS.txt" @@ -342,11 +343,11 @@ in_word_set (register const char *str, register size_t len) {""}, #line 67 "KEYWORDS.txt" {"app1", def_app1}, -#line 129 "KEYWORDS.txt" +#line 130 "KEYWORDS.txt" {"roll<", def_roll_LESS_THAN_SIGN}, #line 73 "KEYWORDS.txt" {"b", def_b}, -#line 153 "KEYWORDS.txt" +#line 154 "KEYWORDS.txt" {"ternary", def_ternary}, #line 25 "KEYWORDS.txt" {"mul", mul}, @@ -356,14 +357,14 @@ in_word_set (register const char *str, register size_t len) {"clear", clear}, #line 33 "KEYWORDS.txt" {"rshift", rshift}, -#line 151 "KEYWORDS.txt" +#line 152 "KEYWORDS.txt" {"tailrec", def_tailrec}, {""}, {""}, {""}, #line 96 "KEYWORDS.txt" {"genrec", def_genrec}, #line 71 "KEYWORDS.txt" {"at", def_at}, -#line 147 "KEYWORDS.txt" +#line 148 "KEYWORDS.txt" {"sum", def_sum}, {""}, #line 42 "KEYWORDS.txt" @@ -378,46 +379,46 @@ in_word_set (register const char *str, register size_t len) {"infra", def_infra}, #line 58 "KEYWORDS.txt" {"?", def_QUESTION_MARK}, -#line 171 "KEYWORDS.txt" - {"_timest", def__timest}, #line 172 "KEYWORDS.txt" + {"_timest", def__timest}, +#line 173 "KEYWORDS.txt" {"map", def_map}, #line 50 "KEYWORDS.txt" {"swap", swap}, {""}, -#line 144 "KEYWORDS.txt" +#line 145 "KEYWORDS.txt" {"stackd", def_stackd}, #line 53 "KEYWORDS.txt" {"gt", def_gt}, {""}, {""}, -#line 148 "KEYWORDS.txt" +#line 149 "KEYWORDS.txt" {"swapd", def_swapd}, #line 26 "KEYWORDS.txt" {"+", add}, -#line 170 "KEYWORDS.txt" +#line 171 "KEYWORDS.txt" {"_times1", def__times1}, #line 29 "KEYWORDS.txt" {"sub", sub}, {""}, {""}, -#line 167 "KEYWORDS.txt" +#line 168 "KEYWORDS.txt" {"_stept", def__stept}, #line 57 "KEYWORDS.txt" {"ge", def_ge}, {""}, #line 93 "KEYWORDS.txt" {"fork", def_fork}, -#line 179 "KEYWORDS.txt" +#line 180 "KEYWORDS.txt" {"_isnt_two_bools", def__isnt_two_bools}, #line 15 "KEYWORDS.txt" {"=", def_eq}, #line 21 "KEYWORDS.txt" {">=", def_ge}, -#line 183 "KEYWORDS.txt" +#line 184 "KEYWORDS.txt" {"xor", def_xor}, {""}, -#line 178 "KEYWORDS.txt" +#line 179 "KEYWORDS.txt" {"_isnt_bool", def__isnt_bool}, -#line 166 "KEYWORDS.txt" +#line 167 "KEYWORDS.txt" {"_step1", def__step1}, #line 92 "KEYWORDS.txt" {"flatten", def_flatten}, @@ -425,12 +426,12 @@ in_word_set (register const char *str, register size_t len) #line 20 "KEYWORDS.txt" {"<=", def_le}, {""}, {""}, {""}, {""}, -#line 169 "KEYWORDS.txt" +#line 170 "KEYWORDS.txt" {"_times0", def__times0}, -#line 125 "KEYWORDS.txt" +#line 126 "KEYWORDS.txt" {"range_to_zero", def_range_to_zero}, {""}, -#line 132 "KEYWORDS.txt" +#line 133 "KEYWORDS.txt" {"rrest", def_rrest}, {""}, #line 52 "KEYWORDS.txt" @@ -438,14 +439,14 @@ in_word_set (register const char *str, register size_t len) #line 55 "KEYWORDS.txt" {"neq", def_neq}, {""}, -#line 124 "KEYWORDS.txt" +#line 125 "KEYWORDS.txt" {"range", def_range}, {""}, {""}, {""}, -#line 152 "KEYWORDS.txt" +#line 153 "KEYWORDS.txt" {"take", def_take}, #line 48 "KEYWORDS.txt" {"stack", stack}, -#line 165 "KEYWORDS.txt" +#line 166 "KEYWORDS.txt" {"_step0", def__step0}, {""}, #line 31 "KEYWORDS.txt" @@ -461,23 +462,23 @@ in_word_set (register const char *str, register size_t len) #line 114 "KEYWORDS.txt" {"pam", def_pam}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 127 "KEYWORDS.txt" +#line 128 "KEYWORDS.txt" {"reverse", def_reverse}, #line 64 "KEYWORDS.txt" {"abs", def_abs}, -#line 180 "KEYWORDS.txt" +#line 181 "KEYWORDS.txt" {"_\\/_", def___REVERSE_SOLIDUS_SOLIDUS__}, -#line 139 "KEYWORDS.txt" +#line 140 "KEYWORDS.txt" {"small", def_small}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 177 "KEYWORDS.txt" +#line 178 "KEYWORDS.txt" {"_map2", def__map2}, {""}, #line 60 "KEYWORDS.txt" {"++", def_PLUS_SIGN_PLUS_SIGN}, -#line 143 "KEYWORDS.txt" +#line 144 "KEYWORDS.txt" {"sqr", def_sqr}, {""}, {""}, #line 35 "KEYWORDS.txt" @@ -491,10 +492,10 @@ in_word_set (register const char *str, register size_t len) {"anamorphism", def_anamorphism}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 174 "KEYWORDS.txt" +#line 175 "KEYWORDS.txt" {"_mape", def__mape}, {""}, {""}, {""}, {""}, -#line 176 "KEYWORDS.txt" +#line 177 "KEYWORDS.txt" {"_map1", def__map1}, {""}, {""}, {""}, #line 105 "KEYWORDS.txt" @@ -504,12 +505,12 @@ in_word_set (register const char *str, register size_t len) #line 97 "KEYWORDS.txt" {"grabN", def_grabN}, {""}, {""}, {""}, {""}, -#line 175 "KEYWORDS.txt" +#line 176 "KEYWORDS.txt" {"_map0", def__map0}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, -#line 173 "KEYWORDS.txt" +#line 174 "KEYWORDS.txt" {"_map?", def__map_QUESTION_MARK}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},