OSDN Git Service

Rebuilt C interpreter.
authorsforman <sforman@hushmail.com>
Mon, 21 Aug 2023 16:53:24 +0000 (09:53 -0700)
committersforman <sforman@hushmail.com>
Mon, 21 Aug 2023 16:53:24 +0000 (09:53 -0700)
implementations/C/KEYWORDS.txt
implementations/C/convert_defs.py
implementations/C/definitions.c
implementations/C/definitions.h
implementations/C/defs.txt
implementations/C/keywords.c

index 08473de..553fbdc 100644 (file)
@@ -55,16 +55,15 @@ lt, def_lt
 neq, def_neq
 le, def_le
 ge, def_ge
---, def_HYPHEN_MINUS_HYPHEN_MINUS
 ?, def_QUESTION_MARK
-and, def_and
-++, def_PLUS_SIGN_PLUS_SIGN
-or, def_or
 !-, def_EXCLAMATION_MARK_HYPHEN_MINUS
+++, def_PLUS_SIGN_PLUS_SIGN
+--, def_HYPHEN_MINUS_HYPHEN_MINUS
 <{}, def_LESS_THAN_SIGN_LEFT_CURLY_BRACKET_RIGHT_CURLY_BRACKET
 <<{}, def_LESS_THAN_SIGN_LESS_THAN_SIGN_LEFT_CURLY_BRACKET_RIGHT_CURLY_BRACKET
 abs, def_abs
 anamorphism, def_anamorphism
+and, def_and
 app1, def_app1
 app2, def_app2
 app3, def_app3
@@ -85,10 +84,10 @@ disenstacken, def_disenstacken
 divmod, def_divmod
 down_to_zero, def_down_to_zero
 drop, def_drop
-dupd, def_dupd
 dupdd, def_dupdd
-dupdip, def_dupdip
+dupd, def_dupd
 dupdipd, def_dupdipd
+dupdip, def_dupdip
 enstacken, def_enstacken
 flatten, def_flatten
 fork, def_fork
@@ -102,32 +101,36 @@ ifte, def_ifte
 ii, def_ii
 infra, def_infra
 infrst, def_infrst
+<<, def_LESS_THAN_SIGN_LESS_THAN_SIGN
 make_generator, def_make_generator
 neg, def_neg
 not, def_not
 nulco, def_nulco
-null, def_null
 nullary, def_nullary
+null, def_null
 of, def_of
+or, def_or
+over, def_over
 pam, def_pam
 pm, def_pm
-popd, def_popd
 popdd, def_popdd
-popop, def_popop
-popopop, def_popopop
-popopd, def_popopd
+popd, def_popd
 popopdd, def_popopdd
+popopd, def_popopd
+popopop, def_popopop
+popop, def_popop
 product, def_product
 quoted, def_quoted
 range, def_range
 range_to_zero, def_range_to_zero
 reco, def_reco
 reverse, def_reverse
-roll>, def_roll_GREATER_THAN_SIGN
+rolldown, def_rolldown
 roll<, def_roll_LESS_THAN_SIGN
+roll>, def_roll_GREATER_THAN_SIGN
 rollup, def_rollup
-rolldown, def_rolldown
 rrest, def_rrest
+>>, def_GREATER_THAN_SIGN_GREATER_THAN_SIGN
 run, def_run
 second, def_second
 shift, def_shift
@@ -143,8 +146,8 @@ step_zero, def_step_zero
 stuncons, def_stuncons
 sum, def_sum
 swapd, def_swapd
-swons, def_swons
 swoncat, def_swoncat
+swons, def_swons
 tailrec, def_tailrec
 take, def_take
 ternary, def_ternary
@@ -177,3 +180,4 @@ _isnt_two_bools, def__isnt_two_bools
 _\/_, def___REVERSE_SOLIDUS_SOLIDUS__
 /\, def_SOLIDUS_REVERSE_SOLIDUS
 \/, def_REVERSE_SOLIDUS_SOLIDUS
+xor, def_xor
index 6bdb935..320d4bd 100644 (file)
@@ -33,6 +33,8 @@ SKIP = '''\
 clear
 cmp
 first
+lshift
+rshift
 mod
 rest'''.splitlines()
 
index e814bd3..91b34a7 100644 (file)
@@ -18,16 +18,15 @@ JoyList def_lt_body;
 JoyList def_neq_body;
 JoyList def_le_body;
 JoyList def_ge_body;
-JoyList def_HYPHEN_MINUS_HYPHEN_MINUS_body;
 JoyList def_QUESTION_MARK_body;
-JoyList def_and_body;
-JoyList def_PLUS_SIGN_PLUS_SIGN_body;
-JoyList def_or_body;
 JoyList def_EXCLAMATION_MARK_HYPHEN_MINUS_body;
+JoyList def_PLUS_SIGN_PLUS_SIGN_body;
+JoyList def_HYPHEN_MINUS_HYPHEN_MINUS_body;
 JoyList def_LESS_THAN_SIGN_LEFT_CURLY_BRACKET_RIGHT_CURLY_BRACKET_body;
 JoyList def_LESS_THAN_SIGN_LESS_THAN_SIGN_LEFT_CURLY_BRACKET_RIGHT_CURLY_BRACKET_body;
 JoyList def_abs_body;
 JoyList def_anamorphism_body;
+JoyList def_and_body;
 JoyList def_app1_body;
 JoyList def_app2_body;
 JoyList def_app3_body;
@@ -48,10 +47,10 @@ JoyList def_disenstacken_body;
 JoyList def_divmod_body;
 JoyList def_down_to_zero_body;
 JoyList def_drop_body;
-JoyList def_dupd_body;
 JoyList def_dupdd_body;
-JoyList def_dupdip_body;
+JoyList def_dupd_body;
 JoyList def_dupdipd_body;
+JoyList def_dupdip_body;
 JoyList def_enstacken_body;
 JoyList def_flatten_body;
 JoyList def_fork_body;
@@ -65,32 +64,36 @@ JoyList def_ifte_body;
 JoyList def_ii_body;
 JoyList def_infra_body;
 JoyList def_infrst_body;
+JoyList def_LESS_THAN_SIGN_LESS_THAN_SIGN_body;
 JoyList def_make_generator_body;
 JoyList def_neg_body;
 JoyList def_not_body;
 JoyList def_nulco_body;
-JoyList def_null_body;
 JoyList def_nullary_body;
+JoyList def_null_body;
 JoyList def_of_body;
+JoyList def_or_body;
+JoyList def_over_body;
 JoyList def_pam_body;
 JoyList def_pm_body;
-JoyList def_popd_body;
 JoyList def_popdd_body;
-JoyList def_popop_body;
-JoyList def_popopop_body;
-JoyList def_popopd_body;
+JoyList def_popd_body;
 JoyList def_popopdd_body;
+JoyList def_popopd_body;
+JoyList def_popopop_body;
+JoyList def_popop_body;
 JoyList def_product_body;
 JoyList def_quoted_body;
 JoyList def_range_body;
 JoyList def_range_to_zero_body;
 JoyList def_reco_body;
 JoyList def_reverse_body;
-JoyList def_roll_GREATER_THAN_SIGN_body;
+JoyList def_rolldown_body;
 JoyList def_roll_LESS_THAN_SIGN_body;
+JoyList def_roll_GREATER_THAN_SIGN_body;
 JoyList def_rollup_body;
-JoyList def_rolldown_body;
 JoyList def_rrest_body;
+JoyList def_GREATER_THAN_SIGN_GREATER_THAN_SIGN_body;
 JoyList def_run_body;
 JoyList def_second_body;
 JoyList def_shift_body;
@@ -106,8 +109,8 @@ JoyList def_step_zero_body;
 JoyList def_stuncons_body;
 JoyList def_sum_body;
 JoyList def_swapd_body;
-JoyList def_swons_body;
 JoyList def_swoncat_body;
+JoyList def_swons_body;
 JoyList def_tailrec_body;
 JoyList def_take_body;
 JoyList def_ternary_body;
@@ -140,6 +143,7 @@ JoyList def__isnt_two_bools_body;
 JoyList def___REVERSE_SOLIDUS_SOLIDUS___body;
 JoyList def_SOLIDUS_REVERSE_SOLIDUS_body;
 JoyList def_REVERSE_SOLIDUS_SOLIDUS_body;
+JoyList def_xor_body;
 
 
 /*
@@ -156,16 +160,15 @@ init_defs(void)
        def_neq_body = text_to_expression("[true] [false] [true] cmp");
        def_le_body = text_to_expression("[false] [true] [true] cmp");
        def_ge_body = text_to_expression("[true] [true] [false] cmp");
-       def_HYPHEN_MINUS_HYPHEN_MINUS_body = text_to_expression("1 -");
        def_QUESTION_MARK_body = text_to_expression("dup bool");
-       def_and_body = text_to_expression("nulco [nullary [false]] dip branch");
-       def_PLUS_SIGN_PLUS_SIGN_body = text_to_expression("1 +");
-       def_or_body = text_to_expression("nulco [nullary] dip [true] branch");
        def_EXCLAMATION_MARK_HYPHEN_MINUS_body = text_to_expression("0 >=");
+       def_PLUS_SIGN_PLUS_SIGN_body = text_to_expression("1 +");
+       def_HYPHEN_MINUS_HYPHEN_MINUS_body = text_to_expression("1 -");
        def_LESS_THAN_SIGN_LEFT_CURLY_BRACKET_RIGHT_CURLY_BRACKET_body = text_to_expression("[] swap");
        def_LESS_THAN_SIGN_LESS_THAN_SIGN_LEFT_CURLY_BRACKET_RIGHT_CURLY_BRACKET_body = text_to_expression("[] rollup");
        def_abs_body = text_to_expression("dup 0 < [] [neg] branch");
        def_anamorphism_body = text_to_expression("[pop []] swap [dip swons] genrec");
+       def_and_body = text_to_expression("nulco [nullary [false]] dip branch");
        def_app1_body = text_to_expression("grba infrst");
        def_app2_body = text_to_expression("[grba swap grba swap] dip [infrst] cons ii");
        def_app3_body = text_to_expression("3 appN");
@@ -186,10 +189,10 @@ init_defs(void)
        def_divmod_body = text_to_expression("[/] [%] clop");
        def_down_to_zero_body = text_to_expression("[0 >] [dup --] while");
        def_drop_body = text_to_expression("[rest] times");
-       def_dupd_body = text_to_expression("[dup] dip");
        def_dupdd_body = text_to_expression("[dup] dipd");
-       def_dupdip_body = text_to_expression("dupd dip");
+       def_dupd_body = text_to_expression("[dup] dip");
        def_dupdipd_body = text_to_expression("dup dipd");
+       def_dupdip_body = text_to_expression("dupd dip");
        def_enstacken_body = text_to_expression("stack [clear] dip");
        def_flatten_body = text_to_expression("<{} [concat] step");
        def_fork_body = text_to_expression("[i] app2");
@@ -203,32 +206,36 @@ init_defs(void)
        def_ii_body = text_to_expression("[dip] dupdip i");
        def_infra_body = text_to_expression("swons swaack [i] dip swaack");
        def_infrst_body = text_to_expression("infra first");
+       def_LESS_THAN_SIGN_LESS_THAN_SIGN_body = text_to_expression("lshift");
        def_make_generator_body = text_to_expression("[codireco] ccons");
        def_neg_body = text_to_expression("0 swap -");
        def_not_body = text_to_expression("[true] [false] branch");
        def_nulco_body = text_to_expression("[nullary] cons");
-       def_null_body = text_to_expression("[] concat bool not");
        def_nullary_body = text_to_expression("[stack] dinfrirst");
+       def_null_body = text_to_expression("[] swap concat bool not");
        def_of_body = text_to_expression("swap at");
+       def_or_body = text_to_expression("nulco [nullary] dip [true] branch");
+       def_over_body = text_to_expression("[dup] dip swap");
        def_pam_body = text_to_expression("[i] map");
        def_pm_body = text_to_expression("[+] [-] clop");
-       def_popd_body = text_to_expression("[pop] dip");
        def_popdd_body = text_to_expression("[pop] dipd");
-       def_popop_body = text_to_expression("pop pop");
-       def_popopop_body = text_to_expression("pop popop");
-       def_popopd_body = text_to_expression("[popop] dip");
+       def_popd_body = text_to_expression("[pop] dip");
        def_popopdd_body = text_to_expression("[popop] dipd");
+       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_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");
        def_range_to_zero_body = text_to_expression("unit [down_to_zero] infra");
        def_reco_body = text_to_expression("rest cons");
        def_reverse_body = text_to_expression("<{} shunt");
-       def_roll_GREATER_THAN_SIGN_body = text_to_expression("swap swapd");
+       def_rolldown_body = text_to_expression("roll<");
        def_roll_LESS_THAN_SIGN_body = text_to_expression("swapd swap");
+       def_roll_GREATER_THAN_SIGN_body = text_to_expression("swap swapd");
        def_rollup_body = text_to_expression("roll>");
-       def_rolldown_body = text_to_expression("roll<");
        def_rrest_body = text_to_expression("rest rest");
+       def_GREATER_THAN_SIGN_GREATER_THAN_SIGN_body = text_to_expression("rshift");
        def_run_body = text_to_expression("<{} infra");
        def_second_body = text_to_expression("rest first");
        def_shift_body = text_to_expression("uncons [swons] dip");
@@ -244,8 +251,8 @@ init_defs(void)
        def_stuncons_body = text_to_expression("stack uncons");
        def_sum_body = text_to_expression("[+] step_zero");
        def_swapd_body = text_to_expression("[swap] dip");
-       def_swons_body = text_to_expression("swap cons");
        def_swoncat_body = text_to_expression("swap concat");
+       def_swons_body = text_to_expression("swap cons");
        def_tailrec_body = text_to_expression("[i] genrec");
        def_take_body = text_to_expression("<<{} [shift] times pop");
        def_ternary_body = text_to_expression("binary popd");
@@ -278,6 +285,7 @@ init_defs(void)
        def___REVERSE_SOLIDUS_SOLIDUS___body = text_to_expression("[_isnt_bool] [not] branch");
        def_SOLIDUS_REVERSE_SOLIDUS_body = text_to_expression("_isnt_two_bools [pop false] [] branch");
        def_REVERSE_SOLIDUS_SOLIDUS_body = text_to_expression("_isnt_two_bools [] [pop true] branch");
+       def_xor_body = text_to_expression("[] [not] branch");
 }
 
 
@@ -291,16 +299,15 @@ void def_lt(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { p
 void def_neq(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def_neq_body, expression); }
 void def_le(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def_le_body, expression); }
 void def_ge(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def_ge_body, expression); }
-void def_HYPHEN_MINUS_HYPHEN_MINUS(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def_HYPHEN_MINUS_HYPHEN_MINUS_body, expression); }
 void def_QUESTION_MARK(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def_QUESTION_MARK_body, expression); }
-void def_and(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def_and_body, expression); }
-void def_PLUS_SIGN_PLUS_SIGN(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def_PLUS_SIGN_PLUS_SIGN_body, expression); }
-void def_or(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def_or_body, expression); }
 void def_EXCLAMATION_MARK_HYPHEN_MINUS(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def_EXCLAMATION_MARK_HYPHEN_MINUS_body, expression); }
+void def_PLUS_SIGN_PLUS_SIGN(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def_PLUS_SIGN_PLUS_SIGN_body, expression); }
+void def_HYPHEN_MINUS_HYPHEN_MINUS(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def_HYPHEN_MINUS_HYPHEN_MINUS_body, expression); }
 void def_LESS_THAN_SIGN_LEFT_CURLY_BRACKET_RIGHT_CURLY_BRACKET(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def_LESS_THAN_SIGN_LEFT_CURLY_BRACKET_RIGHT_CURLY_BRACKET_body, expression); }
 void def_LESS_THAN_SIGN_LESS_THAN_SIGN_LEFT_CURLY_BRACKET_RIGHT_CURLY_BRACKET(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def_LESS_THAN_SIGN_LESS_THAN_SIGN_LEFT_CURLY_BRACKET_RIGHT_CURLY_BRACKET_body, expression); }
 void def_abs(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def_abs_body, expression); }
 void def_anamorphism(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def_anamorphism_body, expression); }
+void def_and(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def_and_body, expression); }
 void def_app1(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def_app1_body, expression); }
 void def_app2(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def_app2_body, expression); }
 void def_app3(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def_app3_body, expression); }
@@ -321,10 +328,10 @@ void def_disenstacken(__attribute__((unused)) JoyListPtr stack, JoyListPtr expre
 void def_divmod(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def_divmod_body, expression); }
 void def_down_to_zero(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def_down_to_zero_body, expression); }
 void def_drop(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def_drop_body, expression); }
-void def_dupd(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def_dupd_body, expression); }
 void def_dupdd(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def_dupdd_body, expression); }
-void def_dupdip(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def_dupdip_body, expression); }
+void def_dupd(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def_dupd_body, expression); }
 void def_dupdipd(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def_dupdipd_body, expression); }
+void def_dupdip(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def_dupdip_body, expression); }
 void def_enstacken(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def_enstacken_body, expression); }
 void def_flatten(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def_flatten_body, expression); }
 void def_fork(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def_fork_body, expression); }
@@ -338,32 +345,36 @@ void def_ifte(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) {
 void def_ii(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def_ii_body, expression); }
 void def_infra(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def_infra_body, expression); }
 void def_infrst(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def_infrst_body, expression); }
+void def_LESS_THAN_SIGN_LESS_THAN_SIGN(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def_LESS_THAN_SIGN_LESS_THAN_SIGN_body, expression); }
 void def_make_generator(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def_make_generator_body, expression); }
 void def_neg(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def_neg_body, expression); }
 void def_not(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def_not_body, expression); }
 void def_nulco(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def_nulco_body, expression); }
-void def_null(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def_null_body, expression); }
 void def_nullary(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def_nullary_body, expression); }
+void def_null(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def_null_body, expression); }
 void def_of(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def_of_body, expression); }
+void def_or(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def_or_body, expression); }
+void def_over(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def_over_body, expression); }
 void def_pam(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def_pam_body, expression); }
 void def_pm(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def_pm_body, expression); }
-void def_popd(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def_popd_body, expression); }
 void def_popdd(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def_popdd_body, expression); }
-void def_popop(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def_popop_body, expression); }
-void def_popopop(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def_popopop_body, expression); }
-void def_popopd(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def_popopd_body, expression); }
+void def_popd(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def_popd_body, expression); }
 void def_popopdd(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def_popopdd_body, 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_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); }
 void def_range_to_zero(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def_range_to_zero_body, expression); }
 void def_reco(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def_reco_body, expression); }
 void def_reverse(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def_reverse_body, expression); }
-void def_roll_GREATER_THAN_SIGN(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def_roll_GREATER_THAN_SIGN_body, expression); }
+void def_rolldown(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def_rolldown_body, expression); }
 void def_roll_LESS_THAN_SIGN(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def_roll_LESS_THAN_SIGN_body, expression); }
+void def_roll_GREATER_THAN_SIGN(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def_roll_GREATER_THAN_SIGN_body, expression); }
 void def_rollup(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def_rollup_body, expression); }
-void def_rolldown(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def_rolldown_body, expression); }
 void def_rrest(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def_rrest_body, expression); }
+void def_GREATER_THAN_SIGN_GREATER_THAN_SIGN(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def_GREATER_THAN_SIGN_GREATER_THAN_SIGN_body, expression); }
 void def_run(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def_run_body, 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); }
@@ -379,8 +390,8 @@ void def_step_zero(__attribute__((unused)) JoyListPtr stack, JoyListPtr expressi
 void def_stuncons(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def_stuncons_body, expression); }
 void def_sum(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def_sum_body, expression); }
 void def_swapd(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def_swapd_body, expression); }
-void def_swons(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def_swons_body, expression); }
 void def_swoncat(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def_swoncat_body, expression); }
+void def_swons(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def_swons_body, expression); }
 void def_tailrec(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def_tailrec_body, expression); }
 void def_take(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def_take_body, expression); }
 void def_ternary(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def_ternary_body, expression); }
@@ -413,3 +424,4 @@ void def__isnt_two_bools(__attribute__((unused)) JoyListPtr stack, JoyListPtr ex
 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); }
+void def_xor(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def_xor_body, expression); }
index 5581a4d..5a5a7f8 100644 (file)
@@ -9,16 +9,15 @@ void def_lt(JoyListPtr stack, JoyListPtr expression);
 void def_neq(JoyListPtr stack, JoyListPtr expression);
 void def_le(JoyListPtr stack, JoyListPtr expression);
 void def_ge(JoyListPtr stack, JoyListPtr expression);
-void def_HYPHEN_MINUS_HYPHEN_MINUS(JoyListPtr stack, JoyListPtr expression);
 void def_QUESTION_MARK(JoyListPtr stack, JoyListPtr expression);
-void def_and(JoyListPtr stack, JoyListPtr expression);
-void def_PLUS_SIGN_PLUS_SIGN(JoyListPtr stack, JoyListPtr expression);
-void def_or(JoyListPtr stack, JoyListPtr expression);
 void def_EXCLAMATION_MARK_HYPHEN_MINUS(JoyListPtr stack, JoyListPtr expression);
+void def_PLUS_SIGN_PLUS_SIGN(JoyListPtr stack, JoyListPtr expression);
+void def_HYPHEN_MINUS_HYPHEN_MINUS(JoyListPtr stack, JoyListPtr expression);
 void def_LESS_THAN_SIGN_LEFT_CURLY_BRACKET_RIGHT_CURLY_BRACKET(JoyListPtr stack, JoyListPtr expression);
 void def_LESS_THAN_SIGN_LESS_THAN_SIGN_LEFT_CURLY_BRACKET_RIGHT_CURLY_BRACKET(JoyListPtr stack, JoyListPtr expression);
 void def_abs(JoyListPtr stack, JoyListPtr expression);
 void def_anamorphism(JoyListPtr stack, JoyListPtr expression);
+void def_and(JoyListPtr stack, JoyListPtr expression);
 void def_app1(JoyListPtr stack, JoyListPtr expression);
 void def_app2(JoyListPtr stack, JoyListPtr expression);
 void def_app3(JoyListPtr stack, JoyListPtr expression);
@@ -39,10 +38,10 @@ void def_disenstacken(JoyListPtr stack, JoyListPtr expression);
 void def_divmod(JoyListPtr stack, JoyListPtr expression);
 void def_down_to_zero(JoyListPtr stack, JoyListPtr expression);
 void def_drop(JoyListPtr stack, JoyListPtr expression);
-void def_dupd(JoyListPtr stack, JoyListPtr expression);
 void def_dupdd(JoyListPtr stack, JoyListPtr expression);
-void def_dupdip(JoyListPtr stack, JoyListPtr expression);
+void def_dupd(JoyListPtr stack, JoyListPtr expression);
 void def_dupdipd(JoyListPtr stack, JoyListPtr expression);
+void def_dupdip(JoyListPtr stack, JoyListPtr expression);
 void def_enstacken(JoyListPtr stack, JoyListPtr expression);
 void def_flatten(JoyListPtr stack, JoyListPtr expression);
 void def_fork(JoyListPtr stack, JoyListPtr expression);
@@ -56,32 +55,36 @@ void def_ifte(JoyListPtr stack, JoyListPtr expression);
 void def_ii(JoyListPtr stack, JoyListPtr expression);
 void def_infra(JoyListPtr stack, JoyListPtr expression);
 void def_infrst(JoyListPtr stack, JoyListPtr expression);
+void def_LESS_THAN_SIGN_LESS_THAN_SIGN(JoyListPtr stack, JoyListPtr expression);
 void def_make_generator(JoyListPtr stack, JoyListPtr expression);
 void def_neg(JoyListPtr stack, JoyListPtr expression);
 void def_not(JoyListPtr stack, JoyListPtr expression);
 void def_nulco(JoyListPtr stack, JoyListPtr expression);
-void def_null(JoyListPtr stack, JoyListPtr expression);
 void def_nullary(JoyListPtr stack, JoyListPtr expression);
+void def_null(JoyListPtr stack, JoyListPtr expression);
 void def_of(JoyListPtr stack, JoyListPtr expression);
+void def_or(JoyListPtr stack, JoyListPtr expression);
+void def_over(JoyListPtr stack, JoyListPtr expression);
 void def_pam(JoyListPtr stack, JoyListPtr expression);
 void def_pm(JoyListPtr stack, JoyListPtr expression);
-void def_popd(JoyListPtr stack, JoyListPtr expression);
 void def_popdd(JoyListPtr stack, JoyListPtr expression);
-void def_popop(JoyListPtr stack, JoyListPtr expression);
-void def_popopop(JoyListPtr stack, JoyListPtr expression);
-void def_popopd(JoyListPtr stack, JoyListPtr expression);
+void def_popd(JoyListPtr stack, JoyListPtr expression);
 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_product(JoyListPtr stack, JoyListPtr expression);
 void def_quoted(JoyListPtr stack, JoyListPtr expression);
 void def_range(JoyListPtr stack, JoyListPtr expression);
 void def_range_to_zero(JoyListPtr stack, JoyListPtr expression);
 void def_reco(JoyListPtr stack, JoyListPtr expression);
 void def_reverse(JoyListPtr stack, JoyListPtr expression);
-void def_roll_GREATER_THAN_SIGN(JoyListPtr stack, JoyListPtr expression);
+void def_rolldown(JoyListPtr stack, JoyListPtr expression);
 void def_roll_LESS_THAN_SIGN(JoyListPtr stack, JoyListPtr expression);
+void def_roll_GREATER_THAN_SIGN(JoyListPtr stack, JoyListPtr expression);
 void def_rollup(JoyListPtr stack, JoyListPtr expression);
-void def_rolldown(JoyListPtr stack, JoyListPtr expression);
 void def_rrest(JoyListPtr stack, JoyListPtr expression);
+void def_GREATER_THAN_SIGN_GREATER_THAN_SIGN(JoyListPtr stack, JoyListPtr expression);
 void def_run(JoyListPtr stack, JoyListPtr expression);
 void def_second(JoyListPtr stack, JoyListPtr expression);
 void def_shift(JoyListPtr stack, JoyListPtr expression);
@@ -97,8 +100,8 @@ void def_step_zero(JoyListPtr stack, JoyListPtr expression);
 void def_stuncons(JoyListPtr stack, JoyListPtr expression);
 void def_sum(JoyListPtr stack, JoyListPtr expression);
 void def_swapd(JoyListPtr stack, JoyListPtr expression);
-void def_swons(JoyListPtr stack, JoyListPtr expression);
 void def_swoncat(JoyListPtr stack, JoyListPtr expression);
+void def_swons(JoyListPtr stack, JoyListPtr expression);
 void def_tailrec(JoyListPtr stack, JoyListPtr expression);
 void def_take(JoyListPtr stack, JoyListPtr expression);
 void def_ternary(JoyListPtr stack, JoyListPtr expression);
@@ -131,3 +134,4 @@ void def__isnt_two_bools(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);
+void def_xor(JoyListPtr stack, JoyListPtr expression);
index f4682da..4dc279d 100644 (file)
@@ -4,16 +4,15 @@ lt [false] [false] [true] cmp
 neq [true] [false] [true] cmp
 le [false] [true] [true] cmp
 ge [true] [true] [false] cmp
--- 1 -
 ? dup bool
-and nulco [nullary [false]] dip branch
-++ 1 +
-or nulco [nullary] dip [true] branch
 !- 0 >=
+++ 1 +
+-- 1 -
 <{} [] swap
 <<{} [] rollup
 abs dup 0 < [] [neg] branch
 anamorphism [pop []] swap [dip swons] genrec
+and nulco [nullary [false]] dip branch
 app1 grba infrst
 app2 [grba swap grba swap] dip [infrst] cons ii
 app3 3 appN
@@ -36,10 +35,10 @@ disenstacken swaack pop
 divmod [/] [%] clop
 down_to_zero [0 >] [dup --] while
 drop [rest] times
-dupd [dup] dip
 dupdd [dup] dipd
-dupdip dupd dip
+dupd [dup] dip
 dupdipd dup dipd
+dupdip dupd dip
 enstacken stack [clear] dip
 first uncons pop
 flatten <{} [concat] step
@@ -54,22 +53,26 @@ ifte [nullary] dipd swap branch
 ii [dip] dupdip i
 infra swons swaack [i] dip swaack
 infrst infra first
+<< lshift
+lshift [2 *] times
 make_generator [codireco] ccons
 mod %
 neg 0 swap -
 not [true] [false] branch
 nulco [nullary] cons
-null [] concat bool not
 nullary [stack] dinfrirst
+null [] swap concat bool not
 of swap at
+or nulco [nullary] dip [true] branch
+over [dup] dip swap
 pam [i] map
 pm [+] [-] clop
-popd [pop] dip
 popdd [pop] dipd
-popop pop pop
-popopop pop popop
-popopd [popop] dip
+popd [pop] dip
 popopdd [popop] dipd
+popopd [popop] dip
+popopop pop popop
+popop pop pop
 product 1 swap [*] step
 quoted [unit] dip
 range [0 <=] [-- dup] anamorphism
@@ -77,11 +80,13 @@ range_to_zero unit [down_to_zero] infra
 reco rest cons
 rest uncons popd
 reverse <{} shunt
-roll> swap swapd
+rolldown roll<
 roll< swapd swap
+roll> swap swapd
 rollup roll>
-rolldown roll<
 rrest rest rest
+>> rshift
+rshift [2 /] times
 run <{} infra
 second rest first
 shift uncons [swons] dip
@@ -97,8 +102,8 @@ step_zero 0 roll> step
 stuncons stack uncons
 sum [+] step_zero
 swapd [swap] dip
-swons swap cons
 swoncat swap concat
+swons swap cons
 tailrec [i] genrec
 take <<{} [shift] times pop
 ternary binary popd
@@ -131,3 +136,4 @@ _isnt_two_bools [_isnt_bool] ii
 _\/_ [_isnt_bool] [not] branch
 /\ _isnt_two_bools [pop false] [] branch
 \/ _isnt_two_bools [] [pop true] branch
+xor [] [not] branch
index eded4c8..03a3cf7 100644 (file)
@@ -53,16 +53,16 @@ keyword_hash (register const char *str, register size_t len)
       360, 360, 360, 360, 360, 360, 360, 360, 360, 360,
       360, 360, 360, 360, 360, 360, 360, 360, 360, 360,
       360, 360, 360, 360, 360, 360, 360, 360, 360, 360,
-      360, 360, 360,  35, 360, 360, 360,  85, 360, 360,
-      360, 360,  60,  80, 360,  45, 360,  20,  60,  35,
+      360, 360, 360,  35, 360, 360, 360,  60, 360, 360,
+      360, 360,  30,  85, 360,  45, 360,  20,  60,  35,
         0,  25, 360, 360, 360, 360, 360, 360, 360, 360,
-       10,  90,   0,  25, 360, 360, 360, 360, 360, 360,
+       10,  90,   0,  80, 360, 360, 360, 360, 360, 360,
       360, 360, 360, 360, 360, 360, 360, 360,  20, 360,
       360, 360, 360, 360, 360, 360, 360, 360, 360, 360,
       360, 360,  30, 360, 360,  90, 360, 100,  70,   0,
         5,  30,  40, 115,  15,  15, 360,  50,  40,  60,
         0,  15,   0,  85,  70,  30,  25,   0,  95,  30,
-       30,  10,  20,  40, 360,   0, 360, 360, 360, 360,
+       25,  10,  20,  40, 360,   0, 360, 360, 360, 360,
       360, 360, 360, 360, 360, 360, 360, 360, 360, 360,
       360, 360, 360, 360, 360, 360, 360, 360, 360, 360,
       360, 360, 360, 360, 360, 360, 360, 360, 360, 360,
@@ -99,7 +99,7 @@ in_word_set (register const char *str, register size_t len)
 {
   enum
     {
-      TOTAL_KEYWORDS = 165,
+      TOTAL_KEYWORDS = 169,
       MIN_WORD_LENGTH = 1,
       MAX_WORD_LENGTH = 15,
       MIN_HASH_VALUE = 1,
@@ -111,7 +111,9 @@ in_word_set (register const char *str, register size_t len)
       {""},
 #line 16 "KEYWORDS.txt"
       {">", def_gt},
-      {""}, {""}, {""}, {""}, {""}, {""},
+#line 133 "KEYWORDS.txt"
+      {">>", def_GREATER_THAN_SIGN_GREATER_THAN_SIGN},
+      {""}, {""}, {""}, {""}, {""},
 #line 41 "KEYWORDS.txt"
       {"dup", dup},
       {""}, {""},
@@ -122,227 +124,229 @@ in_word_set (register const char *str, register size_t len)
       {""},
 #line 88 "KEYWORDS.txt"
       {"dupd", def_dupd},
-#line 89 "KEYWORDS.txt"
+#line 87 "KEYWORDS.txt"
       {"dupdd", def_dupdd},
       {""},
-#line 91 "KEYWORDS.txt"
+#line 89 "KEYWORDS.txt"
       {"dupdipd", def_dupdipd},
 #line 46 "KEYWORDS.txt"
       {"pop", pop},
       {""},
-#line 116 "KEYWORDS.txt"
+#line 121 "KEYWORDS.txt"
       {"popop", def_popop},
 #line 17 "KEYWORDS.txt"
       {"<", def_lt},
-#line 117 "KEYWORDS.txt"
+#line 120 "KEYWORDS.txt"
       {"popopop", def_popopop},
 #line 40 "KEYWORDS.txt"
       {"dip", dip},
-#line 114 "KEYWORDS.txt"
+#line 117 "KEYWORDS.txt"
       {"popd", def_popd},
-#line 115 "KEYWORDS.txt"
+#line 116 "KEYWORDS.txt"
       {"popdd", def_popdd},
-#line 118 "KEYWORDS.txt"
-      {"popopd", def_popopd},
 #line 119 "KEYWORDS.txt"
+      {"popopd", def_popopd},
+#line 118 "KEYWORDS.txt"
       {"popopdd", def_popopdd},
       {""},
-#line 83 "KEYWORDS.txt"
+#line 82 "KEYWORDS.txt"
       {"dipd", def_dipd},
       {""},
 #line 43 "KEYWORDS.txt"
       {"i", i_joyfunc},
-      {""}, {""}, {""}, {""},
-#line 154 "KEYWORDS.txt"
+#line 104 "KEYWORDS.txt"
+      {"<<", def_LESS_THAN_SIGN_LESS_THAN_SIGN},
+      {""}, {""}, {""},
+#line 157 "KEYWORDS.txt"
       {"uncons", def_uncons},
-#line 76 "KEYWORDS.txt"
+#line 75 "KEYWORDS.txt"
       {"ccccons", def_ccccons},
       {""},
-#line 80 "KEYWORDS.txt"
+#line 79 "KEYWORDS.txt"
       {"codi", def_codi},
       {""},
 #line 30 "KEYWORDS.txt"
       {"/", fdiv_q},
 #line 51 "KEYWORDS.txt"
       {"fn", fn},
-#line 81 "KEYWORDS.txt"
+#line 80 "KEYWORDS.txt"
       {"codireco", def_codireco},
-#line 155 "KEYWORDS.txt"
+#line 158 "KEYWORDS.txt"
       {"unit", def_unit},
       {""},
 #line 39 "KEYWORDS.txt"
       {"concat", concat},
-#line 102 "KEYWORDS.txt"
+#line 101 "KEYWORDS.txt"
       {"ii", def_ii},
       {""},
 #line 38 "KEYWORDS.txt"
       {"cons", cons},
-#line 77 "KEYWORDS.txt"
+#line 76 "KEYWORDS.txt"
       {"ccons", def_ccons},
-#line 59 "KEYWORDS.txt"
-      {"?", def_QUESTION_MARK},
+#line 163 "KEYWORDS.txt"
+      {"x", def_x},
       {""},
-#line 64 "KEYWORDS.txt"
+#line 62 "KEYWORDS.txt"
       {"<{}", def_LESS_THAN_SIGN_LEFT_CURLY_BRACKET_RIGHT_CURLY_BRACKET},
-#line 82 "KEYWORDS.txt"
+#line 81 "KEYWORDS.txt"
       {"dinfrirst", def_dinfrirst},
-#line 100 "KEYWORDS.txt"
+#line 99 "KEYWORDS.txt"
       {"hypot", def_hypot},
       {""},
-#line 110 "KEYWORDS.txt"
+#line 109 "KEYWORDS.txt"
       {"nullary", def_nullary},
       {""},
-#line 79 "KEYWORDS.txt"
+#line 78 "KEYWORDS.txt"
       {"clop", def_clop},
 #line 108 "KEYWORDS.txt"
       {"nulco", def_nulco},
-#line 160 "KEYWORDS.txt"
-      {"x", def_x},
-#line 84 "KEYWORDS.txt"
+#line 24 "KEYWORDS.txt"
+      {"*", mul},
+#line 83 "KEYWORDS.txt"
       {"disenstacken", def_disenstacken},
 #line 37 "KEYWORDS.txt"
       {"cmp", cmp_joyfunc},
-#line 65 "KEYWORDS.txt"
+#line 63 "KEYWORDS.txt"
       {"<<{}", def_LESS_THAN_SIGN_LESS_THAN_SIGN_LEFT_CURLY_BRACKET_RIGHT_CURLY_BRACKET},
-#line 151 "KEYWORDS.txt"
+#line 154 "KEYWORDS.txt"
       {"third", def_third},
       {""},
-#line 158 "KEYWORDS.txt"
+#line 161 "KEYWORDS.txt"
       {"unswons", def_unswons},
 #line 107 "KEYWORDS.txt"
       {"not", def_not},
-#line 92 "KEYWORDS.txt"
+#line 91 "KEYWORDS.txt"
       {"enstacken", def_enstacken},
       {""},
-#line 132 "KEYWORDS.txt"
+#line 135 "KEYWORDS.txt"
       {"second", def_second},
-#line 179 "KEYWORDS.txt"
+#line 182 "KEYWORDS.txt"
       {"\\/", def_REVERSE_SOLIDUS_SOLIDUS},
-#line 131 "KEYWORDS.txt"
+#line 134 "KEYWORDS.txt"
       {"run", def_run},
 #line 45 "KEYWORDS.txt"
       {"loop", loop},
-#line 134 "KEYWORDS.txt"
+#line 137 "KEYWORDS.txt"
       {"shunt", def_shunt},
-#line 95 "KEYWORDS.txt"
+#line 94 "KEYWORDS.txt"
       {"fourth", def_fourth},
-#line 86 "KEYWORDS.txt"
+#line 85 "KEYWORDS.txt"
       {"down_to_zero", def_down_to_zero},
       {""},
-#line 152 "KEYWORDS.txt"
+#line 155 "KEYWORDS.txt"
       {"tuck", def_tuck},
       {""},
-#line 137 "KEYWORDS.txt"
+#line 140 "KEYWORDS.txt"
       {"spiral_next", def_spiral_next},
-#line 178 "KEYWORDS.txt"
+#line 181 "KEYWORDS.txt"
       {"/\\", def_SOLIDUS_REVERSE_SOLIDUS},
 #line 44 "KEYWORDS.txt"
       {"inscribe", inscribe},
-#line 109 "KEYWORDS.txt"
+#line 110 "KEYWORDS.txt"
       {"null", def_null},
       {""},
-#line 104 "KEYWORDS.txt"
+#line 103 "KEYWORDS.txt"
       {"infrst", def_infrst},
-#line 157 "KEYWORDS.txt"
+#line 160 "KEYWORDS.txt"
       {"unstack", def_unstack},
 #line 23 "KEYWORDS.txt"
       {"mod", fdiv_r},
-#line 161 "KEYWORDS.txt"
+#line 164 "KEYWORDS.txt"
       {"step", def_step},
-#line 133 "KEYWORDS.txt"
+#line 136 "KEYWORDS.txt"
       {"shift", def_shift},
 #line 28 "KEYWORDS.txt"
       {"-", sub},
 #line 54 "KEYWORDS.txt"
       {"lt", def_lt},
-#line 143 "KEYWORDS.txt"
+#line 146 "KEYWORDS.txt"
       {"stuncons", def_stuncons},
-#line 87 "KEYWORDS.txt"
+#line 86 "KEYWORDS.txt"
       {"drop", def_drop},
-#line 159 "KEYWORDS.txt"
+#line 162 "KEYWORDS.txt"
       {"while", def_while},
       {""},
 #line 111 "KEYWORDS.txt"
       {"of", def_of},
-#line 156 "KEYWORDS.txt"
+#line 159 "KEYWORDS.txt"
       {"unquoted", def_unquoted},
-#line 135 "KEYWORDS.txt"
+#line 138 "KEYWORDS.txt"
       {"size", def_size},
       {""},
-#line 75 "KEYWORDS.txt"
+#line 74 "KEYWORDS.txt"
       {"binary", def_binary},
 #line 56 "KEYWORDS.txt"
       {"le", def_le},
-#line 138 "KEYWORDS.txt"
+#line 141 "KEYWORDS.txt"
       {"split_at", def_split_at},
-#line 69 "KEYWORDS.txt"
+#line 68 "KEYWORDS.txt"
       {"app2", def_app2},
-#line 139 "KEYWORDS.txt"
+#line 142 "KEYWORDS.txt"
       {"split_list", def_split_list},
-#line 78 "KEYWORDS.txt"
+#line 77 "KEYWORDS.txt"
       {"cleave", def_cleave},
-#line 147 "KEYWORDS.txt"
+#line 149 "KEYWORDS.txt"
       {"swoncat", def_swoncat},
       {""},
-#line 142 "KEYWORDS.txt"
+#line 145 "KEYWORDS.txt"
       {"step_zero", def_step_zero},
-#line 146 "KEYWORDS.txt"
+#line 150 "KEYWORDS.txt"
       {"swons", def_swons},
-#line 121 "KEYWORDS.txt"
+#line 123 "KEYWORDS.txt"
       {"quoted", def_quoted},
       {""},
-#line 60 "KEYWORDS.txt"
+#line 66 "KEYWORDS.txt"
       {"and", def_and},
-#line 101 "KEYWORDS.txt"
+#line 100 "KEYWORDS.txt"
       {"ifte", def_ifte},
-#line 153 "KEYWORDS.txt"
+#line 156 "KEYWORDS.txt"
       {"unary", def_unary},
 #line 32 "KEYWORDS.txt"
       {"lshift", lshift},
-#line 120 "KEYWORDS.txt"
+#line 122 "KEYWORDS.txt"
       {"product", def_product},
 #line 27 "KEYWORDS.txt"
       {"add", add},
-#line 124 "KEYWORDS.txt"
+#line 126 "KEYWORDS.txt"
       {"reco", def_reco},
       {""},
-#line 24 "KEYWORDS.txt"
-      {"*", mul},
-#line 113 "KEYWORDS.txt"
+#line 22 "KEYWORDS.txt"
+      {"%", fdiv_r},
+#line 115 "KEYWORDS.txt"
       {"pm", def_pm},
       {""},
-#line 71 "KEYWORDS.txt"
+#line 70 "KEYWORDS.txt"
       {"appN", def_appN},
       {""},
-#line 85 "KEYWORDS.txt"
+#line 84 "KEYWORDS.txt"
       {"divmod", def_divmod},
-#line 63 "KEYWORDS.txt"
+#line 59 "KEYWORDS.txt"
       {"!-", def_EXCLAMATION_MARK_HYPHEN_MINUS},
-#line 96 "KEYWORDS.txt"
+#line 95 "KEYWORDS.txt"
       {"gcd", def_gcd},
-#line 70 "KEYWORDS.txt"
+#line 69 "KEYWORDS.txt"
       {"app3", def_app3},
-#line 126 "KEYWORDS.txt"
+#line 130 "KEYWORDS.txt"
       {"roll>", def_roll_GREATER_THAN_SIGN},
-#line 128 "KEYWORDS.txt"
+#line 131 "KEYWORDS.txt"
       {"rollup", def_rollup},
       {""},
-#line 129 "KEYWORDS.txt"
+#line 128 "KEYWORDS.txt"
       {"rolldown", def_rolldown},
       {""},
-#line 165 "KEYWORDS.txt"
+#line 168 "KEYWORDS.txt"
       {"times", def_times},
       {""},
-#line 58 "KEYWORDS.txt"
+#line 61 "KEYWORDS.txt"
       {"--", def_HYPHEN_MINUS_HYPHEN_MINUS},
       {""},
-#line 68 "KEYWORDS.txt"
+#line 67 "KEYWORDS.txt"
       {"app1", def_app1},
-#line 127 "KEYWORDS.txt"
+#line 129 "KEYWORDS.txt"
       {"roll<", def_roll_LESS_THAN_SIGN},
-#line 74 "KEYWORDS.txt"
+#line 73 "KEYWORDS.txt"
       {"b", def_b},
-#line 150 "KEYWORDS.txt"
+#line 153 "KEYWORDS.txt"
       {"ternary", def_ternary},
 #line 25 "KEYWORDS.txt"
       {"mul", mul},
@@ -352,79 +356,81 @@ in_word_set (register const char *str, register size_t len)
       {"clear", clear},
 #line 33 "KEYWORDS.txt"
       {"rshift", rshift},
-#line 148 "KEYWORDS.txt"
+#line 151 "KEYWORDS.txt"
       {"tailrec", def_tailrec},
       {""}, {""}, {""},
-#line 97 "KEYWORDS.txt"
+#line 96 "KEYWORDS.txt"
       {"genrec", def_genrec},
-#line 72 "KEYWORDS.txt"
+#line 71 "KEYWORDS.txt"
       {"at", def_at},
-#line 144 "KEYWORDS.txt"
+#line 147 "KEYWORDS.txt"
       {"sum", def_sum},
       {""},
 #line 42 "KEYWORDS.txt"
       {"first", first},
       {""},
-#line 62 "KEYWORDS.txt"
+#line 112 "KEYWORDS.txt"
       {"or", def_or},
       {""},
 #line 47 "KEYWORDS.txt"
       {"rest", rest},
-#line 103 "KEYWORDS.txt"
+#line 102 "KEYWORDS.txt"
       {"infra", def_infra},
-#line 26 "KEYWORDS.txt"
-      {"+", add},
-#line 168 "KEYWORDS.txt"
+#line 58 "KEYWORDS.txt"
+      {"?", def_QUESTION_MARK},
+#line 171 "KEYWORDS.txt"
       {"_timest", def__timest},
-#line 169 "KEYWORDS.txt"
+#line 172 "KEYWORDS.txt"
       {"map", def_map},
 #line 50 "KEYWORDS.txt"
       {"swap", swap},
       {""},
-#line 141 "KEYWORDS.txt"
+#line 144 "KEYWORDS.txt"
       {"stackd", def_stackd},
 #line 53 "KEYWORDS.txt"
       {"gt", def_gt},
       {""}, {""},
-#line 145 "KEYWORDS.txt"
+#line 148 "KEYWORDS.txt"
       {"swapd", def_swapd},
-#line 22 "KEYWORDS.txt"
-      {"%", fdiv_r},
-#line 167 "KEYWORDS.txt"
+#line 26 "KEYWORDS.txt"
+      {"+", add},
+#line 170 "KEYWORDS.txt"
       {"_times1", def__times1},
 #line 29 "KEYWORDS.txt"
       {"sub", sub},
       {""}, {""},
-#line 164 "KEYWORDS.txt"
+#line 167 "KEYWORDS.txt"
       {"_stept", def__stept},
 #line 57 "KEYWORDS.txt"
       {"ge", def_ge},
       {""},
-#line 94 "KEYWORDS.txt"
+#line 93 "KEYWORDS.txt"
       {"fork", def_fork},
-#line 176 "KEYWORDS.txt"
+#line 179 "KEYWORDS.txt"
       {"_isnt_two_bools", def__isnt_two_bools},
 #line 15 "KEYWORDS.txt"
       {"=", def_eq},
 #line 21 "KEYWORDS.txt"
       {">=", def_ge},
-      {""}, {""},
-#line 175 "KEYWORDS.txt"
+#line 183 "KEYWORDS.txt"
+      {"xor", def_xor},
+      {""},
+#line 178 "KEYWORDS.txt"
       {"_isnt_bool", def__isnt_bool},
-#line 163 "KEYWORDS.txt"
+#line 166 "KEYWORDS.txt"
       {"_step1", def__step1},
-#line 93 "KEYWORDS.txt"
+#line 92 "KEYWORDS.txt"
       {"flatten", def_flatten},
       {""}, {""}, {""}, {""},
 #line 20 "KEYWORDS.txt"
       {"<=", def_le},
       {""}, {""}, {""}, {""},
-#line 166 "KEYWORDS.txt"
+#line 169 "KEYWORDS.txt"
       {"_times0", def__times0},
-#line 123 "KEYWORDS.txt"
+#line 125 "KEYWORDS.txt"
       {"range_to_zero", def_range_to_zero},
       {""},
-#line 130 "KEYWORDS.txt"
+#line 132 "KEYWORDS.txt"
       {"rrest", def_rrest},
       {""},
 #line 52 "KEYWORDS.txt"
@@ -432,80 +438,83 @@ in_word_set (register const char *str, register size_t len)
 #line 55 "KEYWORDS.txt"
       {"neq", def_neq},
       {""},
-#line 122 "KEYWORDS.txt"
+#line 124 "KEYWORDS.txt"
       {"range", def_range},
       {""}, {""}, {""},
-#line 149 "KEYWORDS.txt"
+#line 152 "KEYWORDS.txt"
       {"take", def_take},
 #line 48 "KEYWORDS.txt"
       {"stack", stack},
-#line 162 "KEYWORDS.txt"
+#line 165 "KEYWORDS.txt"
       {"_step0", def__step0},
       {""},
 #line 31 "KEYWORDS.txt"
       {"div", fdiv_q},
-      {""}, {""},
+#line 113 "KEYWORDS.txt"
+      {"over", def_over},
+      {""},
 #line 49 "KEYWORDS.txt"
       {"swaack", swaack},
 #line 18 "KEYWORDS.txt"
       {"!=", def_neq},
       {""}, {""}, {""}, {""}, {""},
-#line 112 "KEYWORDS.txt"
+#line 114 "KEYWORDS.txt"
       {"pam", def_pam},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 125 "KEYWORDS.txt"
+#line 127 "KEYWORDS.txt"
       {"reverse", def_reverse},
-#line 66 "KEYWORDS.txt"
+#line 64 "KEYWORDS.txt"
       {"abs", def_abs},
-#line 177 "KEYWORDS.txt"
+#line 180 "KEYWORDS.txt"
       {"_\\/_", def___REVERSE_SOLIDUS_SOLIDUS__},
-#line 136 "KEYWORDS.txt"
+#line 139 "KEYWORDS.txt"
       {"small", def_small},
-      {""}, {""}, {""}, {""}, {""}, {""},
-#line 61 "KEYWORDS.txt"
-      {"++", def_PLUS_SIGN_PLUS_SIGN},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-      {""}, {""}, {""},
-#line 174 "KEYWORDS.txt"
+      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+      {""},
+#line 177 "KEYWORDS.txt"
       {"_map2", def__map2},
-      {""}, {""},
-#line 140 "KEYWORDS.txt"
+      {""},
+#line 60 "KEYWORDS.txt"
+      {"++", def_PLUS_SIGN_PLUS_SIGN},
+#line 143 "KEYWORDS.txt"
       {"sqr", def_sqr},
       {""}, {""},
 #line 35 "KEYWORDS.txt"
       {"branch", branch},
-#line 73 "KEYWORDS.txt"
+#line 72 "KEYWORDS.txt"
       {"average", def_average},
 #line 106 "KEYWORDS.txt"
       {"neg", def_neg},
       {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 67 "KEYWORDS.txt"
+#line 65 "KEYWORDS.txt"
       {"anamorphism", def_anamorphism},
-      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 170 "KEYWORDS.txt"
-      {"_map?", def__map_QUESTION_MARK},
+      {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {""}, {""}, {""}, {""},
-#line 171 "KEYWORDS.txt"
+#line 174 "KEYWORDS.txt"
       {"_mape", def__mape},
       {""}, {""}, {""}, {""},
-#line 173 "KEYWORDS.txt"
+#line 176 "KEYWORDS.txt"
       {"_map1", def__map1},
       {""}, {""}, {""},
 #line 105 "KEYWORDS.txt"
       {"make_generator", def_make_generator},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {""}, {""}, {""}, {""}, {""}, {""},
-#line 98 "KEYWORDS.txt"
+#line 97 "KEYWORDS.txt"
       {"grabN", def_grabN},
       {""}, {""}, {""}, {""},
-#line 172 "KEYWORDS.txt"
+#line 175 "KEYWORDS.txt"
       {"_map0", def__map0},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
+      {""},
+#line 173 "KEYWORDS.txt"
+      {"_map?", def__map_QUESTION_MARK},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
       {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""}, {""},
-      {""}, {""}, {""}, {""}, {""}, {""}, {""},
-#line 99 "KEYWORDS.txt"
+      {""}, {""}, {""}, {""}, {""},
+#line 98 "KEYWORDS.txt"
       {"grba", def_grba}
     };