diff options
author | Kartik K. Agaram <vc@akkartik.com> | 2015-09-28 23:36:39 -0700 |
---|---|---|
committer | Kartik K. Agaram <vc@akkartik.com> | 2015-09-28 23:36:39 -0700 |
commit | bb58e1797e8a813891d2ba8ceabcfb518c6f8050 (patch) | |
tree | 38ac76c87f12339766189621db31ec01017d9539 /022boolean.cc | |
parent | 86a6c9cd8952b4600f648519a64a86156d1a3e10 (diff) | |
download | mu-bb58e1797e8a813891d2ba8ceabcfb518c6f8050.tar.gz |
2214
Diffstat (limited to '022boolean.cc')
-rw-r--r-- | 022boolean.cc | 123 |
1 files changed, 0 insertions, 123 deletions
diff --git a/022boolean.cc b/022boolean.cc deleted file mode 100644 index ead678cf..00000000 --- a/022boolean.cc +++ /dev/null @@ -1,123 +0,0 @@ -//: Boolean primitives - -:(before "End Primitive Recipe Declarations") -AND, -:(before "End Primitive Recipe Numbers") -Recipe_ordinal["and"] = AND; -:(before "End Primitive Recipe Implementations") -case AND: { - bool result = true; - for (long long int i = 0; i < SIZE(ingredients); ++i) { - if (!scalar(ingredients.at(i))) { - raise << current_recipe_name() << ": 'and' requires boolean ingredients, but got " << current_instruction().ingredients.at(i).original_string << '\n' << end(); - goto finish_instruction; - } - result = result && ingredients.at(i).at(0); - } - products.resize(1); - products.at(0).push_back(result); - break; -} - -:(scenario and) -recipe main [ - 1:boolean <- copy 1 - 2:boolean <- copy 0 - 3:boolean <- and 1:boolean, 2:boolean -] -+mem: storing 0 in location 3 - -:(scenario and_2) -recipe main [ - 1:boolean <- and 1, 1 -] -+mem: storing 1 in location 1 - -:(scenario and_multiple) -recipe main [ - 1:boolean <- and 1, 1, 0 -] -+mem: storing 0 in location 1 - -:(scenario and_multiple_2) -recipe main [ - 1:boolean <- and 1, 1, 1 -] -+mem: storing 1 in location 1 - -:(before "End Primitive Recipe Declarations") -OR, -:(before "End Primitive Recipe Numbers") -Recipe_ordinal["or"] = OR; -:(before "End Primitive Recipe Implementations") -case OR: { - bool result = false; - for (long long int i = 0; i < SIZE(ingredients); ++i) { - if (!scalar(ingredients.at(i))) { - raise << current_recipe_name() << ": 'or' requires boolean ingredients, but got " << current_instruction().ingredients.at(i).original_string << '\n' << end(); - goto finish_instruction; - } - result = result || ingredients.at(i).at(0); - } - products.resize(1); - products.at(0).push_back(result); - break; -} - -:(scenario or) -recipe main [ - 1:boolean <- copy 1 - 2:boolean <- copy 0 - 3:boolean <- or 1:boolean, 2:boolean -] -+mem: storing 1 in location 3 - -:(scenario or_2) -recipe main [ - 1:boolean <- or 0, 0 -] -+mem: storing 0 in location 1 - -:(scenario or_multiple) -recipe main [ - 1:boolean <- and 0, 0, 0 -] -+mem: storing 0 in location 1 - -:(scenario or_multiple_2) -recipe main [ - 1:boolean <- or 0, 0, 1 -] -+mem: storing 1 in location 1 - -:(before "End Primitive Recipe Declarations") -NOT, -:(before "End Primitive Recipe Numbers") -Recipe_ordinal["not"] = NOT; -:(before "End Primitive Recipe Implementations") -case NOT: { - products.resize(SIZE(ingredients)); - for (long long int i = 0; i < SIZE(ingredients); ++i) { - if (!scalar(ingredients.at(i))) { - raise << current_recipe_name() << ": 'not' requires boolean ingredients, but got " << current_instruction().ingredients.at(i).original_string << '\n' << end(); - goto finish_instruction; - } - products.at(i).push_back(!ingredients.at(i).at(0)); - } - break; -} - -:(scenario not) -recipe main [ - 1:boolean <- copy 1 - 2:boolean <- not 1:boolean -] -+mem: storing 0 in location 2 - -:(scenario not_multiple) -recipe main [ - 1:boolean, 2:boolean, 3:boolean <- not 1, 0, 1 -] -+mem: storing 0 in location 1 -+mem: storing 1 in location 2 -+mem: storing 0 in location 3 |