diff --git a/implementations/C/KEYWORDS.txt b/implementations/C/KEYWORDS.txt index fb222a6..08473de 100644 --- a/implementations/C/KEYWORDS.txt +++ b/implementations/C/KEYWORDS.txt @@ -172,6 +172,8 @@ _mape, def__mape _map0, def__map0 _map1, def__map1 _map2, def__map2 +_isnt_bool, def__isnt_bool +_isnt_two_bools, def__isnt_two_bools _\/_, def___REVERSE_SOLIDUS_SOLIDUS__ /\, def_SOLIDUS_REVERSE_SOLIDUS \/, def_REVERSE_SOLIDUS_SOLIDUS diff --git a/implementations/C/definitions.c b/implementations/C/definitions.c index 6df818a..e814bd3 100644 --- a/implementations/C/definitions.c +++ b/implementations/C/definitions.c @@ -135,6 +135,8 @@ JoyList def__mape_body; JoyList def__map0_body; JoyList def__map1_body; JoyList def__map2_body; +JoyList def__isnt_bool_body; +JoyList def__isnt_two_bools_body; JoyList def___REVERSE_SOLIDUS_SOLIDUS___body; JoyList def_SOLIDUS_REVERSE_SOLIDUS_body; JoyList def_REVERSE_SOLIDUS_SOLIDUS_body; @@ -271,9 +273,11 @@ init_defs(void) def__map0_body = text_to_expression("[_map1] dipd _map2"); def__map1_body = text_to_expression("stackd shift"); def__map2_body = text_to_expression("[infrst] cons dipd roll< swons"); - def___REVERSE_SOLIDUS_SOLIDUS___body = text_to_expression("[not not] [not] branch"); - def_SOLIDUS_REVERSE_SOLIDUS_body = text_to_expression("[not not] ii [pop false] [] branch"); - def_REVERSE_SOLIDUS_SOLIDUS_body = text_to_expression("[not not] ii [] [pop true] branch"); + def__isnt_bool_body = text_to_expression("not not"); + def__isnt_two_bools_body = text_to_expression("[_isnt_bool] ii"); + 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"); } @@ -404,6 +408,8 @@ void def__mape(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) void def__map0(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def__map0_body, expression); } void def__map1(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def__map1_body, expression); } void def__map2(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def__map2_body, expression); } +void def__isnt_bool(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def__isnt_bool_body, expression); } +void def__isnt_two_bools(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def__isnt_two_bools_body, expression); } void def___REVERSE_SOLIDUS_SOLIDUS__(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def___REVERSE_SOLIDUS_SOLIDUS___body, expression); } void def_SOLIDUS_REVERSE_SOLIDUS(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def_SOLIDUS_REVERSE_SOLIDUS_body, expression); } void def_REVERSE_SOLIDUS_SOLIDUS(__attribute__((unused)) JoyListPtr stack, JoyListPtr expression) { push_quote_onto_expression(def_REVERSE_SOLIDUS_SOLIDUS_body, expression); } diff --git a/implementations/C/definitions.h b/implementations/C/definitions.h index 012e2f7..5581a4d 100644 --- a/implementations/C/definitions.h +++ b/implementations/C/definitions.h @@ -126,6 +126,8 @@ void def__mape(JoyListPtr stack, JoyListPtr expression); void def__map0(JoyListPtr stack, JoyListPtr expression); void def__map1(JoyListPtr stack, JoyListPtr expression); void def__map2(JoyListPtr stack, JoyListPtr expression); +void def__isnt_bool(JoyListPtr stack, JoyListPtr expression); +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); diff --git a/implementations/C/defs.txt b/implementations/C/defs.txt index c211788..f4682da 100644 --- a/implementations/C/defs.txt +++ b/implementations/C/defs.txt @@ -126,6 +126,8 @@ _mape popd reverse _map0 [_map1] dipd _map2 _map1 stackd shift _map2 [infrst] cons dipd roll< swons -_\/_ [not not] [not] branch -/\ [not not] ii [pop false] [] branch -\/ [not not] ii [] [pop true] branch \ No newline at end of file +_isnt_bool not not +_isnt_two_bools [_isnt_bool] ii +_\/_ [_isnt_bool] [not] branch +/\ _isnt_two_bools [pop false] [] branch +\/ _isnt_two_bools [] [pop true] branch diff --git a/implementations/C/keywords.c b/implementations/C/keywords.c index d4625e5..eded4c8 100644 --- a/implementations/C/keywords.c +++ b/implementations/C/keywords.c @@ -99,9 +99,9 @@ in_word_set (register const char *str, register size_t len) { enum { - TOTAL_KEYWORDS = 163, + TOTAL_KEYWORDS = 165, MIN_WORD_LENGTH = 1, - MAX_WORD_LENGTH = 14, + MAX_WORD_LENGTH = 15, MIN_HASH_VALUE = 1, MAX_HASH_VALUE = 359 }; @@ -216,7 +216,7 @@ in_word_set (register const char *str, register size_t len) {""}, #line 132 "KEYWORDS.txt" {"second", def_second}, -#line 177 "KEYWORDS.txt" +#line 179 "KEYWORDS.txt" {"\\/", def_REVERSE_SOLIDUS_SOLIDUS}, #line 131 "KEYWORDS.txt" {"run", def_run}, @@ -234,7 +234,7 @@ in_word_set (register const char *str, register size_t len) {""}, #line 137 "KEYWORDS.txt" {"spiral_next", def_spiral_next}, -#line 176 "KEYWORDS.txt" +#line 178 "KEYWORDS.txt" {"/\\", def_SOLIDUS_REVERSE_SOLIDUS}, #line 44 "KEYWORDS.txt" {"inscribe", inscribe}, @@ -402,12 +402,15 @@ in_word_set (register const char *str, register size_t len) {""}, #line 94 "KEYWORDS.txt" {"fork", def_fork}, - {""}, +#line 176 "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" + {"_isnt_bool", def__isnt_bool}, #line 163 "KEYWORDS.txt" {"_step1", def__step1}, #line 93 "KEYWORDS.txt" @@ -454,7 +457,7 @@ in_word_set (register const char *str, register size_t len) {"reverse", def_reverse}, #line 66 "KEYWORDS.txt" {"abs", def_abs}, -#line 175 "KEYWORDS.txt" +#line 177 "KEYWORDS.txt" {"_\\/_", def___REVERSE_SOLIDUS_SOLIDUS__}, #line 136 "KEYWORDS.txt" {"small", def_small},