From a107e1df6cf2c12f216ff05a5e36cea9681b7a1d Mon Sep 17 00:00:00 2001 From: sforman Date: Mon, 21 Aug 2023 09:53:24 -0700 Subject: [PATCH] Rebuilt C interpreter. --- implementations/C/KEYWORDS.txt | 34 ++-- implementations/C/convert_defs.py | 2 + implementations/C/definitions.c | 102 ++++++----- implementations/C/definitions.h | 34 ++-- implementations/C/defs.txt | 36 ++-- implementations/C/keywords.c | 287 +++++++++++++++--------------- 6 files changed, 266 insertions(+), 229 deletions(-) diff --git a/implementations/C/KEYWORDS.txt b/implementations/C/KEYWORDS.txt index 08473de..553fbdc 100644 --- a/implementations/C/KEYWORDS.txt +++ b/implementations/C/KEYWORDS.txt @@ -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 -roll<, def_roll_LESS_THAN_SIGN -rollup, def_rollup rolldown, def_rolldown +roll<, def_roll_LESS_THAN_SIGN +roll>, def_roll_GREATER_THAN_SIGN +rollup, def_rollup 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 diff --git a/implementations/C/convert_defs.py b/implementations/C/convert_defs.py index 6bdb935..320d4bd 100644 --- a/implementations/C/convert_defs.py +++ b/implementations/C/convert_defs.py @@ -33,6 +33,8 @@ SKIP = '''\ clear cmp first +lshift +rshift mod rest'''.splitlines() diff --git a/implementations/C/definitions.c b/implementations/C/definitions.c index e814bd3..91b34a7 100644 --- a/implementations/C/definitions.c +++ b/implementations/C/definitions.c @@ -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_roll_LESS_THAN_SIGN_body; -JoyList def_rollup_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_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_roll_LESS_THAN_SIGN_body = text_to_expression("swapd swap"); - def_rollup_body = text_to_expression("roll>"); 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_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_roll_LESS_THAN_SIGN(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def_roll_LESS_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_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_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); } diff --git a/implementations/C/definitions.h b/implementations/C/definitions.h index 5581a4d..5a5a7f8 100644 --- a/implementations/C/definitions.h +++ b/implementations/C/definitions.h @@ -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_roll_LESS_THAN_SIGN(JoyListPtr stack, JoyListPtr expression); -void def_rollup(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_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); diff --git a/implementations/C/defs.txt b/implementations/C/defs.txt index f4682da..4dc279d 100644 --- a/implementations/C/defs.txt +++ b/implementations/C/defs.txt @@ -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 -roll< swapd swap -rollup roll> rolldown roll< +roll< swapd swap +roll> swap swapd +rollup 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 diff --git a/implementations/C/keywords.c b/implementations/C/keywords.c index eded4c8..03a3cf7 100644 --- a/implementations/C/keywords.c +++ b/implementations/C/keywords.c @@ -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} };