diff options
author | Kartik K. Agaram <vc@akkartik.com> | 2015-03-17 11:23:29 -0700 |
---|---|---|
committer | Kartik K. Agaram <vc@akkartik.com> | 2015-03-17 13:19:20 -0700 |
commit | 3ba6357924e1098a28e43c94a4573a3d2978b5e9 (patch) | |
tree | 9a5a4b181a82a77646b1c9d796bdd8b4159dc337 | |
parent | 5f0e4762468c412d57fb54236a0ee90e23a2cb14 (diff) | |
download | mu-3ba6357924e1098a28e43c94a4573a3d2978b5e9.tar.gz |
949 - paving the way for jumps to labels
Addresses for reagents are now computed after all transforms.
78 files changed, 433 insertions, 409 deletions
diff --git a/cpp/.traces/add b/cpp/.traces/add index 59515bf1..ff1c01b5 100644 --- a/cpp/.traces/add +++ b/cpp/.traces/add @@ -1,13 +1,13 @@ parse/0: instruction: 1 -parse/0: ingredient: {name: "23", value: 23, type: 0, properties: [23: literal]} -parse/0: product: {name: "1", value: 1, type: 1, properties: [1: integer]} +parse/0: ingredient: {name: "23", value: 0, type: 0, properties: [23: literal]} +parse/0: product: {name: "1", value: 0, type: 1, properties: [1: integer]} parse/0: instruction: 1 -parse/0: ingredient: {name: "34", value: 34, type: 0, properties: [34: literal]} -parse/0: product: {name: "2", value: 2, type: 1, properties: [2: integer]} +parse/0: ingredient: {name: "34", value: 0, type: 0, properties: [34: literal]} +parse/0: product: {name: "2", value: 0, type: 1, properties: [2: integer]} parse/0: instruction: 2 -parse/0: ingredient: {name: "1", value: 1, type: 1, properties: [1: integer]} -parse/0: ingredient: {name: "2", value: 2, type: 1, properties: [2: integer]} -parse/0: product: {name: "3", value: 3, type: 1, properties: [3: integer]} +parse/0: ingredient: {name: "1", value: 0, type: 1, properties: [1: integer]} +parse/0: ingredient: {name: "2", value: 0, type: 1, properties: [2: integer]} +parse/0: product: {name: "3", value: 0, type: 1, properties: [3: integer]} after-brace/0: recipe main after-brace/0: copy ... after-brace/0: copy ... diff --git a/cpp/.traces/add_literal b/cpp/.traces/add_literal index dc2755f2..a111878f 100644 --- a/cpp/.traces/add_literal +++ b/cpp/.traces/add_literal @@ -1,7 +1,7 @@ parse/0: instruction: 2 -parse/0: ingredient: {name: "23", value: 23, type: 0, properties: [23: literal]} -parse/0: ingredient: {name: "34", value: 34, type: 0, properties: [34: literal]} -parse/0: product: {name: "1", value: 1, type: 1, properties: [1: integer]} +parse/0: ingredient: {name: "23", value: 0, type: 0, properties: [23: literal]} +parse/0: ingredient: {name: "34", value: 0, type: 0, properties: [34: literal]} +parse/0: product: {name: "1", value: 0, type: 1, properties: [1: integer]} after-brace/0: recipe main after-brace/0: add ... run/0: instruction main/0 diff --git a/cpp/.traces/and b/cpp/.traces/and index 0b259036..73efbe72 100644 --- a/cpp/.traces/and +++ b/cpp/.traces/and @@ -1,13 +1,13 @@ parse/0: instruction: 1 -parse/0: ingredient: {name: "1", value: 1, type: 0, properties: [1: literal]} -parse/0: product: {name: "1", value: 1, type: 1, properties: [1: integer]} +parse/0: ingredient: {name: "1", value: 0, type: 0, properties: [1: literal]} +parse/0: product: {name: "1", value: 0, type: 1, properties: [1: integer]} parse/0: instruction: 1 parse/0: ingredient: {name: "0", value: 0, type: 0, properties: [0: literal]} -parse/0: product: {name: "2", value: 2, type: 1, properties: [2: integer]} +parse/0: product: {name: "2", value: 0, type: 1, properties: [2: integer]} parse/0: instruction: 7 -parse/0: ingredient: {name: "1", value: 1, type: 1, properties: [1: integer]} -parse/0: ingredient: {name: "2", value: 2, type: 1, properties: [2: integer]} -parse/0: product: {name: "3", value: 3, type: 1, properties: [3: integer]} +parse/0: ingredient: {name: "1", value: 0, type: 1, properties: [1: integer]} +parse/0: ingredient: {name: "2", value: 0, type: 1, properties: [2: integer]} +parse/0: product: {name: "3", value: 0, type: 1, properties: [3: integer]} after-brace/0: recipe main after-brace/0: copy ... after-brace/0: copy ... diff --git a/cpp/.traces/brace_conversion b/cpp/.traces/brace_conversion index b00da286..2c082bad 100644 --- a/cpp/.traces/brace_conversion +++ b/cpp/.traces/brace_conversion @@ -2,7 +2,7 @@ parse/0: label: { parse/0: instruction: 25 parse/0: instruction: 1 parse/0: ingredient: {name: "0", value: 0, type: 0, properties: [0: literal]} -parse/0: product: {name: "1", value: 1, type: 1, properties: [1: integer]} +parse/0: product: {name: "1", value: 0, type: 1, properties: [1: integer]} parse/0: label: } brace/0: 24: push (open, 0) brace/0: push (close, 3) diff --git a/cpp/.traces/break_cascading b/cpp/.traces/break_cascading index 09ba7965..56a532a7 100644 --- a/cpp/.traces/break_cascading +++ b/cpp/.traces/break_cascading @@ -1,6 +1,6 @@ parse/0: instruction: 1 parse/0: ingredient: {name: "0", value: 0, type: 0, properties: [0: literal]} -parse/0: product: {name: "1", value: 1, type: 1, properties: [1: integer]} +parse/0: product: {name: "1", value: 0, type: 1, properties: [1: integer]} parse/0: label: { parse/0: instruction: 25 parse/0: label: } diff --git a/cpp/.traces/break_cascading2 b/cpp/.traces/break_cascading2 index 313c607c..7b837b2a 100644 --- a/cpp/.traces/break_cascading2 +++ b/cpp/.traces/break_cascading2 @@ -1,14 +1,14 @@ parse/0: instruction: 1 parse/0: ingredient: {name: "0", value: 0, type: 0, properties: [0: literal]} -parse/0: product: {name: "1", value: 1, type: 1, properties: [1: integer]} +parse/0: product: {name: "1", value: 0, type: 1, properties: [1: integer]} parse/0: instruction: 1 parse/0: ingredient: {name: "0", value: 0, type: 0, properties: [0: literal]} -parse/0: product: {name: "2", value: 2, type: 1, properties: [2: integer]} +parse/0: product: {name: "2", value: 0, type: 1, properties: [2: integer]} parse/0: label: { parse/0: instruction: 25 parse/0: instruction: 1 parse/0: ingredient: {name: "0", value: 0, type: 0, properties: [0: literal]} -parse/0: product: {name: "3", value: 3, type: 1, properties: [3: integer]} +parse/0: product: {name: "3", value: 0, type: 1, properties: [3: integer]} parse/0: label: } parse/0: label: { parse/0: instruction: 25 diff --git a/cpp/.traces/break_empty_block b/cpp/.traces/break_empty_block index 37e4ced7..d66fe136 100644 --- a/cpp/.traces/break_empty_block +++ b/cpp/.traces/break_empty_block @@ -1,6 +1,6 @@ parse/0: instruction: 1 parse/0: ingredient: {name: "0", value: 0, type: 0, properties: [0: literal]} -parse/0: product: {name: "1", value: 1, type: 1, properties: [1: integer]} +parse/0: product: {name: "1", value: 0, type: 1, properties: [1: integer]} parse/0: label: { parse/0: instruction: 25 parse/0: label: } diff --git a/cpp/.traces/break_if b/cpp/.traces/break_if index fdfce24d..34274a91 100644 --- a/cpp/.traces/break_if +++ b/cpp/.traces/break_if @@ -1,15 +1,15 @@ parse/0: instruction: 1 parse/0: ingredient: {name: "0", value: 0, type: 0, properties: [0: literal]} -parse/0: product: {name: "1", value: 1, type: 1, properties: [1: integer]} +parse/0: product: {name: "1", value: 0, type: 1, properties: [1: integer]} parse/0: instruction: 1 parse/0: ingredient: {name: "0", value: 0, type: 0, properties: [0: literal]} -parse/0: product: {name: "2", value: 2, type: 1, properties: [2: integer]} +parse/0: product: {name: "2", value: 0, type: 1, properties: [2: integer]} parse/0: label: { parse/0: instruction: 25 -parse/0: ingredient: {name: "2", value: 2, type: 1, properties: [2: integer]} +parse/0: ingredient: {name: "2", value: 0, type: 1, properties: [2: integer]} parse/0: instruction: 1 parse/0: ingredient: {name: "0", value: 0, type: 0, properties: [0: literal]} -parse/0: product: {name: "3", value: 3, type: 1, properties: [3: integer]} +parse/0: product: {name: "3", value: 0, type: 1, properties: [3: integer]} parse/0: label: } parse/0: label: { parse/0: instruction: 26 diff --git a/cpp/.traces/break_label b/cpp/.traces/break_label index cefe3e2e..23ce2727 100644 --- a/cpp/.traces/break_label +++ b/cpp/.traces/break_label @@ -1,17 +1,17 @@ parse/0: instruction: 1 parse/0: ingredient: {name: "0", value: 0, type: 0, properties: [0: literal]} -parse/0: product: {name: "1", value: 1, type: 1, properties: [1: integer]} +parse/0: product: {name: "1", value: 0, type: 1, properties: [1: integer]} parse/0: label: { parse/0: instruction: 25 -parse/0: ingredient: {name: "3", value: 3, type: 0, properties: [3: offset]} +parse/0: ingredient: {name: "+foo", value: 0, type: 0, properties: [+foo: offset]} parse/0: label: } brace/0: 24: push (open, 1) brace/0: push (close, 3) after-brace/0: recipe main after-brace/0: copy ... -after-brace/0: jump 3:offset +after-brace/0: jump +foo:offset run/0: instruction main/0 run/0: ingredient 0 is 0 mem/0: storing in location 1 run/0: instruction main/2 -run/0: ingredient 0 is 3 +run/0: ingredient 0 is +foo diff --git a/cpp/.traces/break_nested b/cpp/.traces/break_nested index 3212847b..ed3afda6 100644 --- a/cpp/.traces/break_nested +++ b/cpp/.traces/break_nested @@ -1,19 +1,19 @@ parse/0: instruction: 1 parse/0: ingredient: {name: "0", value: 0, type: 0, properties: [0: literal]} -parse/0: product: {name: "1", value: 1, type: 1, properties: [1: integer]} +parse/0: product: {name: "1", value: 0, type: 1, properties: [1: integer]} parse/0: label: { parse/0: instruction: 1 parse/0: ingredient: {name: "0", value: 0, type: 0, properties: [0: literal]} -parse/0: product: {name: "2", value: 2, type: 1, properties: [2: integer]} +parse/0: product: {name: "2", value: 0, type: 1, properties: [2: integer]} parse/0: instruction: 25 parse/0: label: { parse/0: instruction: 1 parse/0: ingredient: {name: "0", value: 0, type: 0, properties: [0: literal]} -parse/0: product: {name: "3", value: 3, type: 1, properties: [3: integer]} +parse/0: product: {name: "3", value: 0, type: 1, properties: [3: integer]} parse/0: label: } parse/0: instruction: 1 parse/0: ingredient: {name: "0", value: 0, type: 0, properties: [0: literal]} -parse/0: product: {name: "4", value: 4, type: 1, properties: [4: integer]} +parse/0: product: {name: "4", value: 0, type: 1, properties: [4: integer]} parse/0: label: } brace/0: 24: push (open, 1) brace/0: 24: push (open, 4) diff --git a/cpp/.traces/break_nested_degenerate b/cpp/.traces/break_nested_degenerate index 90a0d57f..2f09b01d 100644 --- a/cpp/.traces/break_nested_degenerate +++ b/cpp/.traces/break_nested_degenerate @@ -1,16 +1,16 @@ parse/0: instruction: 1 parse/0: ingredient: {name: "0", value: 0, type: 0, properties: [0: literal]} -parse/0: product: {name: "1", value: 1, type: 1, properties: [1: integer]} +parse/0: product: {name: "1", value: 0, type: 1, properties: [1: integer]} parse/0: label: { parse/0: instruction: 1 parse/0: ingredient: {name: "0", value: 0, type: 0, properties: [0: literal]} -parse/0: product: {name: "2", value: 2, type: 1, properties: [2: integer]} +parse/0: product: {name: "2", value: 0, type: 1, properties: [2: integer]} parse/0: instruction: 25 parse/0: label: { parse/0: label: } parse/0: instruction: 1 parse/0: ingredient: {name: "0", value: 0, type: 0, properties: [0: literal]} -parse/0: product: {name: "4", value: 4, type: 1, properties: [4: integer]} +parse/0: product: {name: "4", value: 0, type: 1, properties: [4: integer]} parse/0: label: } brace/0: 24: push (open, 1) brace/0: 24: push (open, 4) diff --git a/cpp/.traces/break_nested_degenerate2 b/cpp/.traces/break_nested_degenerate2 index 6ca10a5c..7dd3ba16 100644 --- a/cpp/.traces/break_nested_degenerate2 +++ b/cpp/.traces/break_nested_degenerate2 @@ -1,10 +1,10 @@ parse/0: instruction: 1 parse/0: ingredient: {name: "0", value: 0, type: 0, properties: [0: literal]} -parse/0: product: {name: "1", value: 1, type: 1, properties: [1: integer]} +parse/0: product: {name: "1", value: 0, type: 1, properties: [1: integer]} parse/0: label: { parse/0: instruction: 1 parse/0: ingredient: {name: "0", value: 0, type: 0, properties: [0: literal]} -parse/0: product: {name: "2", value: 2, type: 1, properties: [2: integer]} +parse/0: product: {name: "2", value: 0, type: 1, properties: [2: integer]} parse/0: instruction: 25 parse/0: label: { parse/0: label: } diff --git a/cpp/.traces/calling_recipe b/cpp/.traces/calling_recipe index 078963f6..d1b79af2 100644 --- a/cpp/.traces/calling_recipe +++ b/cpp/.traces/calling_recipe @@ -1,8 +1,8 @@ parse/0: instruction: 25 parse/0: instruction: 2 -parse/0: ingredient: {name: "2", value: 2, type: 0, properties: [2: literal]} -parse/0: ingredient: {name: "2", value: 2, type: 0, properties: [2: literal]} -parse/0: product: {name: "3", value: 3, type: 1, properties: [3: integer]} +parse/0: ingredient: {name: "2", value: 0, type: 0, properties: [2: literal]} +parse/0: ingredient: {name: "2", value: 0, type: 0, properties: [2: literal]} +parse/0: product: {name: "3", value: 0, type: 1, properties: [3: integer]} after-brace/0: recipe main after-brace/0: f ... after-brace/0: recipe f diff --git a/cpp/.traces/copy b/cpp/.traces/copy index 3c12980d..075945a3 100644 --- a/cpp/.traces/copy +++ b/cpp/.traces/copy @@ -1,9 +1,9 @@ parse/0: instruction: 1 -parse/0: ingredient: {name: "23", value: 23, type: 0, properties: [23: literal]} -parse/0: product: {name: "1", value: 1, type: 1, properties: [1: integer]} +parse/0: ingredient: {name: "23", value: 0, type: 0, properties: [23: literal]} +parse/0: product: {name: "1", value: 0, type: 1, properties: [1: integer]} parse/0: instruction: 1 -parse/0: ingredient: {name: "1", value: 1, type: 1, properties: [1: integer]} -parse/0: product: {name: "2", value: 2, type: 1, properties: [2: integer]} +parse/0: ingredient: {name: "1", value: 0, type: 1, properties: [1: integer]} +parse/0: product: {name: "2", value: 0, type: 1, properties: [2: integer]} after-brace/0: recipe main after-brace/0: copy ... after-brace/0: copy ... diff --git a/cpp/.traces/copy_array b/cpp/.traces/copy_array index 0cd0074a..00cab3ff 100644 --- a/cpp/.traces/copy_array +++ b/cpp/.traces/copy_array @@ -1,18 +1,18 @@ parse/0: instruction: 1 -parse/0: ingredient: {name: "3", value: 3, type: 0, properties: [3: literal]} -parse/0: product: {name: "1", value: 1, type: 1, properties: [1: integer]} +parse/0: ingredient: {name: "3", value: 0, type: 0, properties: [3: literal]} +parse/0: product: {name: "1", value: 0, type: 1, properties: [1: integer]} parse/0: instruction: 1 -parse/0: ingredient: {name: "14", value: 14, type: 0, properties: [14: literal]} -parse/0: product: {name: "2", value: 2, type: 1, properties: [2: integer]} +parse/0: ingredient: {name: "14", value: 0, type: 0, properties: [14: literal]} +parse/0: product: {name: "2", value: 0, type: 1, properties: [2: integer]} parse/0: instruction: 1 -parse/0: ingredient: {name: "15", value: 15, type: 0, properties: [15: literal]} -parse/0: product: {name: "3", value: 3, type: 1, properties: [3: integer]} +parse/0: ingredient: {name: "15", value: 0, type: 0, properties: [15: literal]} +parse/0: product: {name: "3", value: 0, type: 1, properties: [3: integer]} parse/0: instruction: 1 -parse/0: ingredient: {name: "16", value: 16, type: 0, properties: [16: literal]} -parse/0: product: {name: "4", value: 4, type: 1, properties: [4: integer]} +parse/0: ingredient: {name: "16", value: 0, type: 0, properties: [16: literal]} +parse/0: product: {name: "4", value: 0, type: 1, properties: [4: integer]} parse/0: instruction: 1 -parse/0: ingredient: {name: "1", value: 1, type: 6, properties: [1: integer-array]} -parse/0: product: {name: "5", value: 5, type: 6, properties: [5: integer-array]} +parse/0: ingredient: {name: "1", value: 0, type: 6, properties: [1: integer-array]} +parse/0: product: {name: "5", value: 0, type: 6, properties: [5: integer-array]} after-brace/0: recipe main after-brace/0: copy ... after-brace/0: copy ... diff --git a/cpp/.traces/copy_indirect b/cpp/.traces/copy_indirect index aa429126..8f83cd0c 100644 --- a/cpp/.traces/copy_indirect +++ b/cpp/.traces/copy_indirect @@ -1,12 +1,12 @@ parse/0: instruction: 1 -parse/0: ingredient: {name: "2", value: 2, type: 0, properties: [2: literal]} -parse/0: product: {name: "1", value: 1, type: 2-1, properties: [1: address:integer]} +parse/0: ingredient: {name: "2", value: 0, type: 0, properties: [2: literal]} +parse/0: product: {name: "1", value: 0, type: 2-1, properties: [1: address:integer]} parse/0: instruction: 1 -parse/0: ingredient: {name: "34", value: 34, type: 0, properties: [34: literal]} -parse/0: product: {name: "2", value: 2, type: 1, properties: [2: integer]} +parse/0: ingredient: {name: "34", value: 0, type: 0, properties: [34: literal]} +parse/0: product: {name: "2", value: 0, type: 1, properties: [2: integer]} parse/0: instruction: 1 -parse/0: ingredient: {name: "1", value: 1, type: 2-1, properties: [1: address:integer, deref: ]} -parse/0: product: {name: "3", value: 3, type: 1, properties: [3: integer]} +parse/0: ingredient: {name: "1", value: 0, type: 2-1, properties: [1: address:integer, deref: ]} +parse/0: product: {name: "3", value: 0, type: 1, properties: [3: integer]} after-brace/0: recipe main after-brace/0: copy ... after-brace/0: copy ... diff --git a/cpp/.traces/copy_literal b/cpp/.traces/copy_literal index a5a1dd6c..2530b7b7 100644 --- a/cpp/.traces/copy_literal +++ b/cpp/.traces/copy_literal @@ -1,6 +1,6 @@ parse/0: instruction: 1 -parse/0: ingredient: {name: "23", value: 23, type: 0, properties: [23: literal]} -parse/0: product: {name: "1", value: 1, type: 1, properties: [1: integer]} +parse/0: ingredient: {name: "23", value: 0, type: 0, properties: [23: literal]} +parse/0: product: {name: "1", value: 0, type: 1, properties: [1: integer]} after-brace/0: recipe main after-brace/0: copy ... run/0: instruction main/0 diff --git a/cpp/.traces/copy_multiple_locations b/cpp/.traces/copy_multiple_locations index c4b8edb6..18c61d2d 100644 --- a/cpp/.traces/copy_multiple_locations +++ b/cpp/.traces/copy_multiple_locations @@ -1,12 +1,12 @@ parse/0: instruction: 1 -parse/0: ingredient: {name: "34", value: 34, type: 0, properties: [34: literal]} -parse/0: product: {name: "1", value: 1, type: 1, properties: [1: integer]} +parse/0: ingredient: {name: "34", value: 0, type: 0, properties: [34: literal]} +parse/0: product: {name: "1", value: 0, type: 1, properties: [1: integer]} parse/0: instruction: 1 -parse/0: ingredient: {name: "35", value: 35, type: 0, properties: [35: literal]} -parse/0: product: {name: "2", value: 2, type: 1, properties: [2: integer]} +parse/0: ingredient: {name: "35", value: 0, type: 0, properties: [35: literal]} +parse/0: product: {name: "2", value: 0, type: 1, properties: [2: integer]} parse/0: instruction: 1 -parse/0: ingredient: {name: "1", value: 1, type: 4, properties: [1: point]} -parse/0: product: {name: "3", value: 3, type: 4, properties: [3: point]} +parse/0: ingredient: {name: "1", value: 0, type: 4, properties: [1: point]} +parse/0: product: {name: "3", value: 0, type: 4, properties: [3: point]} after-brace/0: recipe main after-brace/0: copy ... after-brace/0: copy ... diff --git a/cpp/.traces/divide b/cpp/.traces/divide index c521ccd8..c361b85d 100644 --- a/cpp/.traces/divide +++ b/cpp/.traces/divide @@ -1,13 +1,13 @@ parse/0: instruction: 1 -parse/0: ingredient: {name: "27", value: 27, type: 0, properties: [27: literal]} -parse/0: product: {name: "1", value: 1, type: 1, properties: [1: integer]} +parse/0: ingredient: {name: "27", value: 0, type: 0, properties: [27: literal]} +parse/0: product: {name: "1", value: 0, type: 1, properties: [1: integer]} parse/0: instruction: 1 -parse/0: ingredient: {name: "3", value: 3, type: 0, properties: [3: literal]} -parse/0: product: {name: "2", value: 2, type: 1, properties: [2: integer]} +parse/0: ingredient: {name: "3", value: 0, type: 0, properties: [3: literal]} +parse/0: product: {name: "2", value: 0, type: 1, properties: [2: integer]} parse/0: instruction: 5 -parse/0: ingredient: {name: "1", value: 1, type: 1, properties: [1: integer]} -parse/0: ingredient: {name: "2", value: 2, type: 1, properties: [2: integer]} -parse/0: product: {name: "3", value: 3, type: 1, properties: [3: integer]} +parse/0: ingredient: {name: "1", value: 0, type: 1, properties: [1: integer]} +parse/0: ingredient: {name: "2", value: 0, type: 1, properties: [2: integer]} +parse/0: product: {name: "3", value: 0, type: 1, properties: [3: integer]} after-brace/0: recipe main after-brace/0: copy ... after-brace/0: copy ... diff --git a/cpp/.traces/divide_literal b/cpp/.traces/divide_literal index 85335d47..882a3e7e 100644 --- a/cpp/.traces/divide_literal +++ b/cpp/.traces/divide_literal @@ -1,7 +1,7 @@ parse/0: instruction: 5 -parse/0: ingredient: {name: "8", value: 8, type: 0, properties: [8: literal]} -parse/0: ingredient: {name: "2", value: 2, type: 0, properties: [2: literal]} -parse/0: product: {name: "1", value: 1, type: 1, properties: [1: integer]} +parse/0: ingredient: {name: "8", value: 0, type: 0, properties: [8: literal]} +parse/0: ingredient: {name: "2", value: 0, type: 0, properties: [2: literal]} +parse/0: product: {name: "1", value: 0, type: 1, properties: [1: integer]} after-brace/0: recipe main after-brace/0: divide ... run/0: instruction main/0 diff --git a/cpp/.traces/divide_with_remainder b/cpp/.traces/divide_with_remainder index 8ae52475..4c417eed 100644 --- a/cpp/.traces/divide_with_remainder +++ b/cpp/.traces/divide_with_remainder @@ -1,14 +1,14 @@ parse/0: instruction: 1 -parse/0: ingredient: {name: "27", value: 27, type: 0, properties: [27: literal]} -parse/0: product: {name: "1", value: 1, type: 1, properties: [1: integer]} +parse/0: ingredient: {name: "27", value: 0, type: 0, properties: [27: literal]} +parse/0: product: {name: "1", value: 0, type: 1, properties: [1: integer]} parse/0: instruction: 1 -parse/0: ingredient: {name: "11", value: 11, type: 0, properties: [11: literal]} -parse/0: product: {name: "2", value: 2, type: 1, properties: [2: integer]} +parse/0: ingredient: {name: "11", value: 0, type: 0, properties: [11: literal]} +parse/0: product: {name: "2", value: 0, type: 1, properties: [2: integer]} parse/0: instruction: 6 -parse/0: ingredient: {name: "1", value: 1, type: 1, properties: [1: integer]} -parse/0: ingredient: {name: "2", value: 2, type: 1, properties: [2: integer]} -parse/0: product: {name: "3", value: 3, type: 1, properties: [3: integer]} -parse/0: product: {name: "4", value: 4, type: 1, properties: [4: integer]} +parse/0: ingredient: {name: "1", value: 0, type: 1, properties: [1: integer]} +parse/0: ingredient: {name: "2", value: 0, type: 1, properties: [2: integer]} +parse/0: product: {name: "3", value: 0, type: 1, properties: [3: integer]} +parse/0: product: {name: "4", value: 0, type: 1, properties: [4: integer]} after-brace/0: recipe main after-brace/0: copy ... after-brace/0: copy ... diff --git a/cpp/.traces/divide_with_remainder_literal b/cpp/.traces/divide_with_remainder_literal index be1f8f85..4447d109 100644 --- a/cpp/.traces/divide_with_remainder_literal +++ b/cpp/.traces/divide_with_remainder_literal @@ -1,8 +1,8 @@ parse/0: instruction: 6 -parse/0: ingredient: {name: "9", value: 9, type: 0, properties: [9: literal]} -parse/0: ingredient: {name: "2", value: 2, type: 0, properties: [2: literal]} -parse/0: product: {name: "1", value: 1, type: 1, properties: [1: integer]} -parse/0: product: {name: "2", value: 2, type: 1, properties: [2: integer]} +parse/0: ingredient: {name: "9", value: 0, type: 0, properties: [9: literal]} +parse/0: ingredient: {name: "2", value: 0, type: 0, properties: [2: literal]} +parse/0: product: {name: "1", value: 0, type: 1, properties: [1: integer]} +parse/0: product: {name: "2", value: 0, type: 1, properties: [2: integer]} after-brace/0: recipe main after-brace/0: divide_with_remainder ... run/0: instruction main/0 diff --git a/cpp/.traces/equal b/cpp/.traces/equal index e852c144..e114b915 100644 --- a/cpp/.traces/equal +++ b/cpp/.traces/equal @@ -1,13 +1,13 @@ parse/0: instruction: 1 -parse/0: ingredient: {name: "34", value: 34, type: 0, properties: [34: literal]} -parse/0: product: {name: "1", value: 1, type: 1, properties: [1: integer]} +parse/0: ingredient: {name: "34", value: 0, type: 0, properties: [34: literal]} +parse/0: product: {name: "1", value: 0, type: 1, properties: [1: integer]} parse/0: instruction: 1 -parse/0: ingredient: {name: "33", value: 33, type: 0, properties: [33: literal]} -parse/0: product: {name: "2", value: 2, type: 1, properties: [2: integer]} +parse/0: ingredient: {name: "33", value: 0, type: 0, properties: [33: literal]} +parse/0: product: {name: "2", value: 0, type: 1, properties: [2: integer]} parse/0: instruction: 13 -parse/0: ingredient: {name: "1", value: 1, type: 1, properties: [1: integer]} -parse/0: ingredient: {name: "2", value: 2, type: 1, properties: [2: integer]} -parse/0: product: {name: "3", value: 3, type: 1, properties: [3: integer]} +parse/0: ingredient: {name: "1", value: 0, type: 1, properties: [1: integer]} +parse/0: ingredient: {name: "2", value: 0, type: 1, properties: [2: integer]} +parse/0: product: {name: "3", value: 0, type: 1, properties: [3: integer]} after-brace/0: recipe main after-brace/0: copy ... after-brace/0: copy ... diff --git a/cpp/.traces/equal2 b/cpp/.traces/equal2 index 3435ba18..1589df01 100644 --- a/cpp/.traces/equal2 +++ b/cpp/.traces/equal2 @@ -1,13 +1,13 @@ parse/0: instruction: 1 -parse/0: ingredient: {name: "34", value: 34, type: 0, properties: [34: literal]} -parse/0: product: {name: "1", value: 1, type: 1, properties: [1: integer]} +parse/0: ingredient: {name: "34", value: 0, type: 0, properties: [34: literal]} +parse/0: product: {name: "1", value: 0, type: 1, properties: [1: integer]} parse/0: instruction: 1 -parse/0: ingredient: {name: "34", value: 34, type: 0, properties: [34: literal]} -parse/0: product: {name: "2", value: 2, type: 1, properties: [2: integer]} +parse/0: ingredient: {name: "34", value: 0, type: 0, properties: [34: literal]} +parse/0: product: {name: "2", value: 0, type: 1, properties: [2: integer]} parse/0: instruction: 13 -parse/0: ingredient: {name: "1", value: 1, type: 1, properties: [1: integer]} -parse/0: ingredient: {name: "2", value: 2, type: 1, properties: [2: integer]} -parse/0: product: {name: "3", value: 3, type: 1, properties: [3: integer]} +parse/0: ingredient: {name: "1", value: 0, type: 1, properties: [1: integer]} +parse/0: ingredient: {name: "2", value: 0, type: 1, properties: [2: integer]} +parse/0: product: {name: "3", value: 0, type: 1, properties: [3: integer]} after-brace/0: recipe main after-brace/0: copy ... after-brace/0: copy ... diff --git a/cpp/.traces/first_recipe b/cpp/.traces/first_recipe index 2d13cf1d..3ca1f8f4 100644 --- a/cpp/.traces/first_recipe +++ b/cpp/.traces/first_recipe @@ -1,3 +1,3 @@ parse/0: instruction: 1 -parse/0: ingredient: {name: "23", value: 23, type: 0, properties: [23: literal]} -parse/0: product: {name: "1", value: 1, type: 1, properties: [1: integer]} +parse/0: ingredient: {name: "23", value: 0, type: 0, properties: [23: literal]} +parse/0: product: {name: "1", value: 0, type: 1, properties: [1: integer]} diff --git a/cpp/.traces/get b/cpp/.traces/get index 7043c0ef..7f1a7336 100644 --- a/cpp/.traces/get +++ b/cpp/.traces/get @@ -1,13 +1,13 @@ parse/0: instruction: 1 -parse/0: ingredient: {name: "34", value: 34, type: 0, properties: [34: literal]} -parse/0: product: {name: "12", value: 12, type: 1, properties: [12: integer]} +parse/0: ingredient: {name: "34", value: 0, type: 0, properties: [34: literal]} +parse/0: product: {name: "12", value: 0, type: 1, properties: [12: integer]} parse/0: instruction: 1 -parse/0: ingredient: {name: "35", value: 35, type: 0, properties: [35: literal]} -parse/0: product: {name: "13", value: 13, type: 1, properties: [13: integer]} +parse/0: ingredient: {name: "35", value: 0, type: 0, properties: [35: literal]} +parse/0: product: {name: "13", value: 0, type: 1, properties: [13: integer]} parse/0: instruction: 18 -parse/0: ingredient: {name: "12", value: 12, type: 4, properties: [12: point]} -parse/0: ingredient: {name: "1", value: 1, type: 0, properties: [1: offset]} -parse/0: product: {name: "15", value: 15, type: 1, properties: [15: integer]} +parse/0: ingredient: {name: "12", value: 0, type: 4, properties: [12: point]} +parse/0: ingredient: {name: "1", value: 0, type: 0, properties: [1: offset]} +parse/0: product: {name: "15", value: 0, type: 1, properties: [15: integer]} after-brace/0: recipe main after-brace/0: copy ... after-brace/0: copy ... @@ -19,6 +19,7 @@ run/0: instruction main/1 run/0: ingredient 0 is 35 mem/0: storing in location 13 run/0: instruction main/2 +run/0: foo: ingredient 0 is 12/12 run/0: ingredient 0 is 12 run/0: ingredient 1 is 1 run/0: address to copy is 13 diff --git a/cpp/.traces/get_address b/cpp/.traces/get_address index 2011a897..7391d986 100644 --- a/cpp/.traces/get_address +++ b/cpp/.traces/get_address @@ -1,13 +1,13 @@ parse/0: instruction: 1 -parse/0: ingredient: {name: "34", value: 34, type: 0, properties: [34: literal]} -parse/0: product: {name: "12", value: 12, type: 1, properties: [12: integer]} +parse/0: ingredient: {name: "34", value: 0, type: 0, properties: [34: literal]} +parse/0: product: {name: "12", value: 0, type: 1, properties: [12: integer]} parse/0: instruction: 1 -parse/0: ingredient: {name: "35", value: 35, type: 0, properties: [35: literal]} -parse/0: product: {name: "13", value: 13, type: 1, properties: [13: integer]} +parse/0: ingredient: {name: "35", value: 0, type: 0, properties: [35: literal]} +parse/0: product: {name: "13", value: 0, type: 1, properties: [13: integer]} parse/0: instruction: 19 -parse/0: ingredient: {name: "12", value: 12, type: 4, properties: [12: point]} -parse/0: ingredient: {name: "1", value: 1, type: 0, properties: [1: offset]} -parse/0: product: {name: "15", value: 15, type: 2-1, properties: [15: address:integer]} +parse/0: ingredient: {name: "12", value: 0, type: 4, properties: [12: point]} +parse/0: ingredient: {name: "1", value: 0, type: 0, properties: [1: offset]} +parse/0: product: {name: "15", value: 0, type: 2-1, properties: [15: address:integer]} after-brace/0: recipe main after-brace/0: copy ... after-brace/0: copy ... diff --git a/cpp/.traces/get_address_indirect b/cpp/.traces/get_address_indirect index 398e28d1..b7e71e53 100644 --- a/cpp/.traces/get_address_indirect +++ b/cpp/.traces/get_address_indirect @@ -1,16 +1,16 @@ parse/0: instruction: 1 -parse/0: ingredient: {name: "2", value: 2, type: 0, properties: [2: literal]} -parse/0: product: {name: "1", value: 1, type: 1, properties: [1: integer]} +parse/0: ingredient: {name: "2", value: 0, type: 0, properties: [2: literal]} +parse/0: product: {name: "1", value: 0, type: 1, properties: [1: integer]} parse/0: instruction: 1 -parse/0: ingredient: {name: "34", value: 34, type: 0, properties: [34: literal]} -parse/0: product: {name: "2", value: 2, type: 1, properties: [2: integer]} +parse/0: ingredient: {name: "34", value: 0, type: 0, properties: [34: literal]} +parse/0: product: {name: "2", value: 0, type: 1, properties: [2: integer]} parse/0: instruction: 1 -parse/0: ingredient: {name: "35", value: 35, type: 0, properties: [35: literal]} -parse/0: product: {name: "3", value: 3, type: 1, properties: [3: integer]} +parse/0: ingredient: {name: "35", value: 0, type: 0, properties: [35: literal]} +parse/0: product: {name: "3", value: 0, type: 1, properties: [3: integer]} parse/0: instruction: 19 -parse/0: ingredient: {name: "1", value: 1, type: 2-4, properties: [1: address:point, deref: ]} +parse/0: ingredient: {name: "1", value: 0, type: 2-4, properties: [1: address:point, deref: ]} parse/0: ingredient: {name: "0", value: 0, type: 0, properties: [0: offset]} -parse/0: product: {name: "4", value: 4, type: 1, properties: [4: integer]} +parse/0: product: {name: "4", value: 0, type: 1, properties: [4: integer]} after-brace/0: recipe main after-brace/0: copy ... after-brace/0: copy ... diff --git a/cpp/.traces/get_handles_record_fields b/cpp/.traces/get_handles_record_fields index a5e4b6eb..428a9d2c 100644 --- a/cpp/.traces/get_handles_record_fields +++ b/cpp/.traces/get_handles_record_fields @@ -1,16 +1,16 @@ parse/0: instruction: 1 -parse/0: ingredient: {name: "34", value: 34, type: 0, properties: [34: literal]} -parse/0: product: {name: "12", value: 12, type: 1, properties: [12: integer]} +parse/0: ingredient: {name: "34", value: 0, type: 0, properties: [34: literal]} +parse/0: product: {name: "12", value: 0, type: 1, properties: [12: integer]} parse/0: instruction: 1 -parse/0: ingredient: {name: "35", value: 35, type: 0, properties: [35: literal]} -parse/0: product: {name: "13", value: 13, type: 1, properties: [13: integer]} +parse/0: ingredient: {name: "35", value: 0, type: 0, properties: [35: literal]} +parse/0: product: {name: "13", value: 0, type: 1, properties: [13: integer]} parse/0: instruction: 1 -parse/0: ingredient: {name: "36", value: 36, type: 0, properties: [36: literal]} -parse/0: product: {name: "14", value: 14, type: 1, properties: [14: integer]} +parse/0: ingredient: {name: "36", value: 0, type: 0, properties: [36: literal]} +parse/0: product: {name: "14", value: 0, type: 1, properties: [14: integer]} parse/0: instruction: 18 -parse/0: ingredient: {name: "12", value: 12, type: 5, properties: [12: point-integer]} -parse/0: ingredient: {name: "1", value: 1, type: 0, properties: [1: offset]} -parse/0: product: {name: "15", value: 15, type: 1, properties: [15: integer]} +parse/0: ingredient: {name: "12", value: 0, type: 5, properties: [12: point-integer]} +parse/0: ingredient: {name: "1", value: 0, type: 0, properties: [1: offset]} +parse/0: product: {name: "15", value: 0, type: 1, properties: [15: integer]} after-brace/0: recipe main after-brace/0: copy ... after-brace/0: copy ... @@ -26,6 +26,7 @@ run/0: instruction main/2 run/0: ingredient 0 is 36 mem/0: storing in location 14 run/0: instruction main/3 +run/0: foo: ingredient 0 is 12/12 run/0: ingredient 0 is 12 run/0: ingredient 1 is 1 run/0: address to copy is 14 diff --git a/cpp/.traces/get_indirect b/cpp/.traces/get_indirect index 8aa7606c..192f79cb 100644 --- a/cpp/.traces/get_indirect +++ b/cpp/.traces/get_indirect @@ -1,16 +1,16 @@ parse/0: instruction: 1 -parse/0: ingredient: {name: "2", value: 2, type: 0, properties: [2: literal]} -parse/0: product: {name: "1", value: 1, type: 1, properties: [1: integer]} +parse/0: ingredient: {name: "2", value: 0, type: 0, properties: [2: literal]} +parse/0: product: {name: "1", value: 0, type: 1, properties: [1: integer]} parse/0: instruction: 1 -parse/0: ingredient: {name: "34", value: 34, type: 0, properties: [34: literal]} -parse/0: product: {name: "2", value: 2, type: 1, properties: [2: integer]} +parse/0: ingredient: {name: "34", value: 0, type: 0, properties: [34: literal]} +parse/0: product: {name: "2", value: 0, type: 1, properties: [2: integer]} parse/0: instruction: 1 -parse/0: ingredient: {name: "35", value: 35, type: 0, properties: [35: literal]} -parse/0: product: {name: "3", value: 3, type: 1, properties: [3: integer]} +parse/0: ingredient: {name: "35", value: 0, type: 0, properties: [35: literal]} +parse/0: product: {name: "3", value: 0, type: 1, properties: [3: integer]} parse/0: instruction: 18 -parse/0: ingredient: {name: "1", value: 1, type: 2-4, properties: [1: address:point, deref: ]} +parse/0: ingredient: {name: "1", value: 0, type: 2-4, properties: [1: address:point, deref: ]} parse/0: ingredient: {name: "0", value: 0, type: 0, properties: [0: offset]} -parse/0: product: {name: "4", value: 4, type: 1, properties: [4: integer]} +parse/0: product: {name: "4", value: 0, type: 1, properties: [4: integer]} after-brace/0: recipe main after-brace/0: copy ... after-brace/0: copy ... @@ -26,6 +26,7 @@ run/0: instruction main/2 run/0: ingredient 0 is 35 mem/0: storing in location 3 run/0: instruction main/3 +run/0: foo: ingredient 0 is 1/1 run/0: ingredient 0 is 1 mem/0: location 1 is 2 run/0: ingredient 1 is 0 diff --git a/cpp/.traces/greater_or_equal b/cpp/.traces/greater_or_equal index d625a3f7..b91ff266 100644 --- a/cpp/.traces/greater_or_equal +++ b/cpp/.traces/greater_or_equal @@ -1,13 +1,13 @@ parse/0: instruction: 1 -parse/0: ingredient: {name: "34", value: 34, type: 0, properties: [34: literal]} -parse/0: product: {name: "1", value: 1, type: 1, properties: [1: integer]} +parse/0: ingredient: {name: "34", value: 0, type: 0, properties: [34: literal]} +parse/0: product: {name: "1", value: 0, type: 1, properties: [1: integer]} parse/0: instruction: 1 -parse/0: ingredient: {name: "33", value: 33, type: 0, properties: [33: literal]} -parse/0: product: {name: "2", value: 2, type: 1, properties: [2: integer]} +parse/0: ingredient: {name: "33", value: 0, type: 0, properties: [33: literal]} +parse/0: product: {name: "2", value: 0, type: 1, properties: [2: integer]} parse/0: instruction: 16 -parse/0: ingredient: {name: "1", value: 1, type: 1, properties: [1: integer]} -parse/0: ingredient: {name: "2", value: 2, type: 1, properties: [2: integer]} -parse/0: product: {name: "3", value: 3, type: 1, properties: [3: integer]} +parse/0: ingredient: {name: "1", value: 0, type: 1, properties: [1: integer]} +parse/0: ingredient: {name: "2", value: 0, type: 1, properties: [2: integer]} +parse/0: product: {name: "3", value: 0, type: 1, properties: [3: integer]} after-brace/0: recipe main after-brace/0: copy ... after-brace/0: copy ... diff --git a/cpp/.traces/greater_or_equal2 b/cpp/.traces/greater_or_equal2 index eb68b27a..dbaac94f 100644 --- a/cpp/.traces/greater_or_equal2 +++ b/cpp/.traces/greater_or_equal2 @@ -1,13 +1,13 @@ parse/0: instruction: 1 -parse/0: ingredient: {name: "34", value: 34, type: 0, properties: [34: literal]} -parse/0: product: {name: "1", value: 1, type: 1, properties: [1: integer]} +parse/0: ingredient: {name: "34", value: 0, type: 0, properties: [34: literal]} +parse/0: product: {name: "1", value: 0, type: 1, properties: [1: integer]} parse/0: instruction: 1 -parse/0: ingredient: {name: "34", value: 34, type: 0, properties: [34: literal]} -parse/0: product: {name: "2", value: 2, type: 1, properties: [2: integer]} +parse/0: ingredient: {name: "34", value: 0, type: 0, properties: [34: literal]} +parse/0: product: {name: "2", value: 0, type: 1, properties: [2: integer]} parse/0: instruction: 16 -parse/0: ingredient: {name: "1", value: 1, type: 1, properties: [1: integer]} -parse/0: ingredient: {name: "2", value: 2, type: 1, properties: [2: integer]} -parse/0: product: {name: "3", value: 3, type: 1, properties: [3: integer]} +parse/0: ingredient: {name: "1", value: 0, type: 1, properties: [1: integer]} +parse/0: ingredient: {name: "2", value: 0, type: 1, properties: [2: integer]} +parse/0: product: {name: "3", value: 0, type: 1, properties: [3: integer]} after-brace/0: recipe main after-brace/0: copy ... after-brace/0: copy ... diff --git a/cpp/.traces/greater_or_equal3 b/cpp/.traces/greater_or_equal3 index e78e6178..24d3969c 100644 --- a/cpp/.traces/greater_or_equal3 +++ b/cpp/.traces/greater_or_equal3 @@ -1,13 +1,13 @@ parse/0: instruction: 1 -parse/0: ingredient: {name: "34", value: 34, type: 0, properties: [34: literal]} -parse/0: product: {name: "1", value: 1, type: 1, properties: [1: integer]} +parse/0: ingredient: {name: "34", value: 0, type: 0, properties: [34: literal]} +parse/0: product: {name: "1", value: 0, type: 1, properties: [1: integer]} parse/0: instruction: 1 -parse/0: ingredient: {name: "35", value: 35, type: 0, properties: [35: literal]} -parse/0: product: {name: "2", value: 2, type: 1, properties: [2: integer]} +parse/0: ingredient: {name: "35", value: 0, type: 0, properties: [35: literal]} +parse/0: product: {name: "2", value: 0, type: 1, properties: [2: integer]} parse/0: instruction: 16 -parse/0: ingredient: {name: "1", value: 1, type: 1, properties: [1: integer]} -parse/0: ingredient: {name: "2", value: 2, type: 1, properties: [2: integer]} -parse/0: product: {name: "3", value: 3, type: 1, properties: [3: integer]} +parse/0: ingredient: {name: "1", value: 0, type: 1, properties: [1: integer]} +parse/0: ingredient: {name: "2", value: 0, type: 1, properties: [2: integer]} +parse/0: product: {name: "3", value: 0, type: 1, properties: [3: integer]} after-brace/0: recipe main after-brace/0: copy ... after-brace/0: copy ... diff --git a/cpp/.traces/greater_than b/cpp/.traces/greater_than index 9c3a2523..9d7645b3 100644 --- a/cpp/.traces/greater_than +++ b/cpp/.traces/greater_than @@ -1,13 +1,13 @@ parse/0: instruction: 1 -parse/0: ingredient: {name: "34", value: 34, type: 0, properties: [34: literal]} -parse/0: product: {name: "1", value: 1, type: 1, properties: [1: integer]} +parse/0: ingredient: {name: "34", value: 0, type: 0, properties: [34: literal]} +parse/0: product: {name: "1", value: 0, type: 1, properties: [1: integer]} parse/0: instruction: 1 -parse/0: ingredient: {name: "33", value: 33, type: 0, properties: [33: literal]} -parse/0: product: {name: "2", value: 2, type: 1, properties: [2: integer]} +parse/0: ingredient: {name: "33", value: 0, type: 0, properties: [33: literal]} +parse/0: product: {name: "2", value: 0, type: 1, properties: [2: integer]} parse/0: instruction: 14 -parse/0: ingredient: {name: "1", value: 1, type: 1, properties: [1: integer]} -parse/0: ingredient: {name: "2", value: 2, type: 1, properties: [2: integer]} -parse/0: product: {name: "3", value: 3, type: 1, properties: [3: integer]} +parse/0: ingredient: {name: "1", value: 0, type: 1, properties: [1: integer]} +parse/0: ingredient: {name: "2", value: 0, type: 1, properties: [2: integer]} +parse/0: product: {name: "3", value: 0, type: 1, properties: [3: integer]} after-brace/0: recipe main after-brace/0: copy ... after-brace/0: copy ... diff --git a/cpp/.traces/greater_than2 b/cpp/.traces/greater_than2 index 31203a57..21ecf7ae 100644 --- a/cpp/.traces/greater_than2 +++ b/cpp/.traces/greater_than2 @@ -1,13 +1,13 @@ parse/0: instruction: 1 -parse/0: ingredient: {name: "34", value: 34, type: 0, properties: [34: literal]} -parse/0: product: {name: "1", value: 1, type: 1, properties: [1: integer]} +parse/0: ingredient: {name: "34", value: 0, type: 0, properties: [34: literal]} +parse/0: product: {name: "1", value: 0, type: 1, properties: [1: integer]} parse/0: instruction: 1 -parse/0: ingredient: {name: "34", value: 34, type: 0, properties: [34: literal]} -parse/0: product: {name: "2", value: 2, type: 1, properties: [2: integer]} +parse/0: ingredient: {name: "34", value: 0, type: 0, properties: [34: literal]} +parse/0: product: {name: "2", value: 0, type: 1, properties: [2: integer]} parse/0: instruction: 14 -parse/0: ingredient: {name: "1", value: 1, type: 1, properties: [1: integer]} -parse/0: ingredient: {name: "2", value: 2, type: 1, properties: [2: integer]} -parse/0: product: {name: "3", value: 3, type: 1, properties: [3: integer]} +parse/0: ingredient: {name: "1", value: 0, type: 1, properties: [1: integer]} +parse/0: ingredient: {name: "2", value: 0, type: 1, properties: [2: integer]} +parse/0: product: {name: "3", value: 0, type: 1, properties: [3: integer]} after-brace/0: recipe main after-brace/0: copy ... after-brace/0: copy ... diff --git a/cpp/.traces/index b/cpp/.traces/index index 20460ed5..e56fcb07 100644 --- a/cpp/.traces/index +++ b/cpp/.traces/index @@ -1,19 +1,19 @@ parse/0: instruction: 1 -parse/0: ingredient: {name: "3", value: 3, type: 0, properties: [3: literal]} -parse/0: product: {name: "1", value: 1, type: 1, properties: [1: integer]} +parse/0: ingredient: {name: "3", value: 0, type: 0, properties: [3: literal]} +parse/0: product: {name: "1", value: 0, type: 1, properties: [1: integer]} parse/0: instruction: 1 -parse/0: ingredient: {name: "14", value: 14, type: 0, properties: [14: literal]} -parse/0: product: {name: "2", value: 2, type: 1, properties: [2: integer]} +parse/0: ingredient: {name: "14", value: 0, type: 0, properties: [14: literal]} +parse/0: product: {name: "2", value: 0, type: 1, properties: [2: integer]} parse/0: instruction: 1 -parse/0: ingredient: {name: "15", value: 15, type: 0, properties: [15: literal]} -parse/0: product: {name: "3", value: 3, type: 1, properties: [3: integer]} +parse/0: ingredient: {name: "15", value: 0, type: 0, properties: [15: literal]} +parse/0: product: {name: "3", value: 0, type: 1, properties: [3: integer]} parse/0: instruction: 1 -parse/0: ingredient: {name: "16", value: 16, type: 0, properties: [16: literal]} -parse/0: product: {name: "4", value: 4, type: 1, properties: [4: integer]} +parse/0: ingredient: {name: "16", value: 0, type: 0, properties: [16: literal]} +parse/0: product: {name: "4", value: 0, type: 1, properties: [4: integer]} parse/0: instruction: 20 -parse/0: ingredient: {name: "1", value: 1, type: 6, properties: [1: integer-array]} +parse/0: ingredient: {name: "1", value: 0, type: 6, properties: [1: integer-array]} parse/0: ingredient: {name: "0", value: 0, type: 0, properties: [0: literal]} -parse/0: product: {name: "5", value: 5, type: 1, properties: [5: integer]} +parse/0: product: {name: "5", value: 0, type: 1, properties: [5: integer]} after-brace/0: recipe main after-brace/0: copy ... after-brace/0: copy ... diff --git a/cpp/.traces/index_address b/cpp/.traces/index_address index d00a6a7c..87d6fdfc 100644 --- a/cpp/.traces/index_address +++ b/cpp/.traces/index_address @@ -1,19 +1,19 @@ parse/0: instruction: 1 -parse/0: ingredient: {name: "3", value: 3, type: 0, properties: [3: literal]} -parse/0: product: {name: "1", value: 1, type: 1, properties: [1: integer]} +parse/0: ingredient: {name: "3", value: 0, type: 0, properties: [3: literal]} +parse/0: product: {name: "1", value: 0, type: 1, properties: [1: integer]} parse/0: instruction: 1 -parse/0: ingredient: {name: "14", value: 14, type: 0, properties: [14: literal]} -parse/0: product: {name: "2", value: 2, type: 1, properties: [2: integer]} +parse/0: ingredient: {name: "14", value: 0, type: 0, properties: [14: literal]} +parse/0: product: {name: "2", value: 0, type: 1, properties: [2: integer]} parse/0: instruction: 1 -parse/0: ingredient: {name: "15", value: 15, type: 0, properties: [15: literal]} -parse/0: product: {name: "3", value: 3, type: 1, properties: [3: integer]} +parse/0: ingredient: {name: "15", value: 0, type: 0, properties: [15: literal]} +parse/0: product: {name: "3", value: 0, type: 1, properties: [3: integer]} parse/0: instruction: 1 -parse/0: ingredient: {name: "16", value: 16, type: 0, properties: [16: literal]} -parse/0: product: {name: "4", value: 4, type: 1, properties: [4: integer]} +parse/0: ingredient: {name: "16", value: 0, type: 0, properties: [16: literal]} +parse/0: product: {name: "4", value: 0, type: 1, properties: [4: integer]} parse/0: instruction: 21 -parse/0: ingredient: {name: "1", value: 1, type: 6, properties: [1: integer-array]} +parse/0: ingredient: {name: "1", value: 0, type: 6, properties: [1: integer-array]} parse/0: ingredient: {name: "0", value: 0, type: 0, properties: [0: literal]} -parse/0: product: {name: "5", value: 5, type: 1, properties: [5: integer]} +parse/0: product: {name: "5", value: 0, type: 1, properties: [5: integer]} after-brace/0: recipe main after-brace/0: copy ... after-brace/0: copy ... diff --git a/cpp/.traces/jump_backward b/cpp/.traces/jump_backward index 2fc0f399..b9cf549c 100644 --- a/cpp/.traces/jump_backward +++ b/cpp/.traces/jump_backward @@ -1,9 +1,9 @@ parse/0: instruction: 10 -parse/0: ingredient: {name: "1", value: 1, type: 0, properties: [1: offset]} +parse/0: ingredient: {name: "1", value: 0, type: 0, properties: [1: offset]} parse/0: instruction: 10 -parse/0: ingredient: {name: "1", value: 1, type: 0, properties: [1: offset]} +parse/0: ingredient: {name: "1", value: 0, type: 0, properties: [1: offset]} parse/0: instruction: 10 -parse/0: ingredient: {name: "-2", value: -2, type: 0, properties: [-2: offset]} +parse/0: ingredient: {name: "-2", value: 0, type: 0, properties: [-2: offset]} after-brace/0: recipe main after-brace/0: jump ... after-brace/0: jump ... diff --git a/cpp/.traces/jump_can_skip_instructions b/cpp/.traces/jump_can_skip_instructions index 8dbf5748..3e0f1bfd 100644 --- a/cpp/.traces/jump_can_skip_instructions +++ b/cpp/.traces/jump_can_skip_instructions @@ -1,8 +1,8 @@ parse/0: instruction: 10 -parse/0: ingredient: {name: "1", value: 1, type: 0, properties: [1: offset]} +parse/0: ingredient: {name: "1", value: 0, type: 0, properties: [1: offset]} parse/0: instruction: 1 -parse/0: ingredient: {name: "1", value: 1, type: 0, properties: [1: literal]} -parse/0: product: {name: "1", value: 1, type: 1, properties: [1: integer]} +parse/0: ingredient: {name: "1", value: 0, type: 0, properties: [1: literal]} +parse/0: product: {name: "1", value: 0, type: 1, properties: [1: integer]} after-brace/0: recipe main after-brace/0: jump ... after-brace/0: copy ... diff --git a/cpp/.traces/jump_if b/cpp/.traces/jump_if index c56b028b..1d0d7739 100644 --- a/cpp/.traces/jump_if +++ b/cpp/.traces/jump_if @@ -1,9 +1,9 @@ parse/0: instruction: 11 -parse/0: ingredient: {name: "999", value: 999, type: 0, properties: [999: literal]} -parse/0: ingredient: {name: "1", value: 1, type: 0, properties: [1: offset]} +parse/0: ingredient: {name: "999", value: 0, type: 0, properties: [999: literal]} +parse/0: ingredient: {name: "1", value: 0, type: 0, properties: [1: offset]} parse/0: instruction: 1 -parse/0: ingredient: {name: "1", value: 1, type: 0, properties: [1: literal]} -parse/0: product: {name: "1", value: 1, type: 1, properties: [1: integer]} +parse/0: ingredient: {name: "1", value: 0, type: 0, properties: [1: literal]} +parse/0: product: {name: "1", value: 0, type: 1, properties: [1: integer]} after-brace/0: recipe main after-brace/0: jump-if ... after-brace/0: copy ... diff --git a/cpp/.traces/jump_if_fallthrough b/cpp/.traces/jump_if_fallthrough index 601bbc3d..74e1a479 100644 --- a/cpp/.traces/jump_if_fallthrough +++ b/cpp/.traces/jump_if_fallthrough @@ -1,9 +1,9 @@ parse/0: instruction: 11 parse/0: ingredient: {name: "0", value: 0, type: 0, properties: [0: literal]} -parse/0: ingredient: {name: "1", value: 1, type: 0, properties: [1: offset]} +parse/0: ingredient: {name: "1", value: 0, type: 0, properties: [1: offset]} parse/0: instruction: 1 -parse/0: ingredient: {name: "1", value: 1, type: 0, properties: [1: literal]} -parse/0: product: {name: "123", value: 123, type: 1, properties: [123: integer]} +parse/0: ingredient: {name: "1", value: 0, type: 0, properties: [1: literal]} +parse/0: product: {name: "123", value: 0, type: 1, properties: [123: integer]} after-brace/0: recipe main after-brace/0: jump-if ... after-brace/0: copy ... diff --git a/cpp/.traces/jump_unless b/cpp/.traces/jump_unless index 15587ff0..62fc389a 100644 --- a/cpp/.traces/jump_unless +++ b/cpp/.traces/jump_unless @@ -1,9 +1,9 @@ parse/0: instruction: 12 parse/0: ingredient: {name: "0", value: 0, type: 0, properties: [0: literal]} -parse/0: ingredient: {name: "1", value: 1, type: 0, properties: [1: offset]} +parse/0: ingredient: {name: "1", value: 0, type: 0, properties: [1: offset]} parse/0: instruction: 1 -parse/0: ingredient: {name: "1", value: 1, type: 0, properties: [1: literal]} -parse/0: product: {name: "1", value: 1, type: 1, properties: [1: integer]} +parse/0: ingredient: {name: "1", value: 0, type: 0, properties: [1: literal]} +parse/0: product: {name: "1", value: 0, type: 1, properties: [1: integer]} after-brace/0: recipe main after-brace/0: jump-unless ... after-brace/0: copy ... diff --git a/cpp/.traces/jump_unless_fallthrough b/cpp/.traces/jump_unless_fallthrough index e87ac12e..b640b6be 100644 --- a/cpp/.traces/jump_unless_fallthrough +++ b/cpp/.traces/jump_unless_fallthrough @@ -1,9 +1,9 @@ parse/0: instruction: 12 -parse/0: ingredient: {name: "999", value: 999, type: 0, properties: [999: literal]} -parse/0: ingredient: {name: "1", value: 1, type: 0, properties: [1: offset]} +parse/0: ingredient: {name: "999", value: 0, type: 0, properties: [999: literal]} +parse/0: ingredient: {name: "1", value: 0, type: 0, properties: [1: offset]} parse/0: instruction: 1 -parse/0: ingredient: {name: "1", value: 1, type: 0, properties: [1: literal]} -parse/0: product: {name: "123", value: 123, type: 1, properties: [123: integer]} +parse/0: ingredient: {name: "1", value: 0, type: 0, properties: [1: literal]} +parse/0: product: {name: "123", value: 0, type: 1, properties: [123: integer]} after-brace/0: recipe main after-brace/0: jump-unless ... after-brace/0: copy ... diff --git a/cpp/.traces/lesser_or_equal b/cpp/.traces/lesser_or_equal index 6898935d..f0f012e2 100644 --- a/cpp/.traces/lesser_or_equal +++ b/cpp/.traces/lesser_or_equal @@ -1,13 +1,13 @@ parse/0: instruction: 1 -parse/0: ingredient: {name: "32", value: 32, type: 0, properties: [32: literal]} -parse/0: product: {name: "1", value: 1, type: 1, properties: [1: integer]} +parse/0: ingredient: {name: "32", value: 0, type: 0, properties: [32: literal]} +parse/0: product: {name: "1", value: 0, type: 1, properties: [1: integer]} parse/0: instruction: 1 -parse/0: ingredient: {name: "33", value: 33, type: 0, properties: [33: literal]} -parse/0: product: {name: "2", value: 2, type: 1, properties: [2: integer]} +parse/0: ingredient: {name: "33", value: 0, type: 0, properties: [33: literal]} +parse/0: product: {name: "2", value: 0, type: 1, properties: [2: integer]} parse/0: instruction: 17 -parse/0: ingredient: {name: "1", value: 1, type: 1, properties: [1: integer]} -parse/0: ingredient: {name: "2", value: 2, type: 1, properties: [2: integer]} -parse/0: product: {name: "3", value: 3, type: 1, properties: [3: integer]} +parse/0: ingredient: {name: "1", value: 0, type: 1, properties: [1: integer]} +parse/0: ingredient: {name: "2", value: 0, type: 1, properties: [2: integer]} +parse/0: product: {name: "3", value: 0, type: 1, properties: [3: integer]} after-brace/0: recipe main after-brace/0: copy ... after-brace/0: copy ... diff --git a/cpp/.traces/lesser_or_equal2 b/cpp/.traces/lesser_or_equal2 index 2434a4de..57a72378 100644 --- a/cpp/.traces/lesser_or_equal2 +++ b/cpp/.traces/lesser_or_equal2 @@ -1,13 +1,13 @@ parse/0: instruction: 1 -parse/0: ingredient: {name: "33", value: 33, type: 0, properties: [33: literal]} -parse/0: product: {name: "1", value: 1, type: 1, properties: [1: integer]} +parse/0: ingredient: {name: "33", value: 0, type: 0, properties: [33: literal]} +parse/0: product: {name: "1", value: 0, type: 1, properties: [1: integer]} parse/0: instruction: 1 -parse/0: ingredient: {name: "33", value: 33, type: 0, properties: [33: literal]} -parse/0: product: {name: "2", value: 2, type: 1, properties: [2: integer]} +parse/0: ingredient: {name: "33", value: 0, type: 0, properties: [33: literal]} +parse/0: product: {name: "2", value: 0, type: 1, properties: [2: integer]} parse/0: instruction: 17 -parse/0: ingredient: {name: "1", value: 1, type: 1, properties: [1: integer]} -parse/0: ingredient: {name: "2", value: 2, type: 1, properties: [2: integer]} -parse/0: product: {name: "3", value: 3, type: 1, properties: [3: integer]} +parse/0: ingredient: {name: "1", value: 0, type: 1, properties: [1: integer]} +parse/0: ingredient: {name: "2", value: 0, type: 1, properties: [2: integer]} +parse/0: product: {name: "3", value: 0, type: 1, properties: [3: integer]} after-brace/0: recipe main after-brace/0: copy ... after-brace/0: copy ... diff --git a/cpp/.traces/lesser_or_equal3 b/cpp/.traces/lesser_or_equal3 index 74e5f592..d81e0530 100644 --- a/cpp/.traces/lesser_or_equal3 +++ b/cpp/.traces/lesser_or_equal3 @@ -1,13 +1,13 @@ parse/0: instruction: 1 -parse/0: ingredient: {name: "34", value: 34, type: 0, properties: [34: literal]} -parse/0: product: {name: "1", value: 1, type: 1, properties: [1: integer]} +parse/0: ingredient: {name: "34", value: 0, type: 0, properties: [34: literal]} +parse/0: product: {name: "1", value: 0, type: 1, properties: [1: integer]} parse/0: instruction: 1 -parse/0: ingredient: {name: "33", value: 33, type: 0, properties: [33: literal]} -parse/0: product: {name: "2", value: 2, type: 1, properties: [2: integer]} +parse/0: ingredient: {name: "33", value: 0, type: 0, properties: [33: literal]} +parse/0: product: {name: "2", value: 0, type: 1, properties: [2: integer]} parse/0: instruction: 17 -parse/0: ingredient: {name: "1", value: 1, type: 1, properties: [1: integer]} -parse/0: ingredient: {name: "2", value: 2, type: 1, properties: [2: integer]} -parse/0: product: {name: "3", value: 3, type: 1, properties: [3: integer]} +parse/0: ingredient: {name: "1", value: 0, type: 1, properties: [1: integer]} +parse/0: ingredient: {name: "2", value: 0, type: 1, properties: [2: integer]} +parse/0: product: {name: "3", value: 0, type: 1, properties: [3: integer]} after-brace/0: recipe main after-brace/0: copy ... after-brace/0: copy ... diff --git a/cpp/.traces/lesser_than b/cpp/.traces/lesser_than index d7b086e7..ccf85cfc 100644 --- a/cpp/.traces/lesser_than +++ b/cpp/.traces/lesser_than @@ -1,13 +1,13 @@ parse/0: instruction: 1 -parse/0: ingredient: {name: "32", value: 32, type: 0, properties: [32: literal]} -parse/0: product: {name: "1", value: 1, type: 1, properties: [1: integer]} +parse/0: ingredient: {name: "32", value: 0, type: 0, properties: [32: literal]} +parse/0: product: {name: "1", value: 0, type: 1, properties: [1: integer]} parse/0: instruction: 1 -parse/0: ingredient: {name: "33", value: 33, type: 0, properties: [33: literal]} -parse/0: product: {name: "2", value: 2, type: 1, properties: [2: integer]} +parse/0: ingredient: {name: "33", value: 0, type: 0, properties: [33: literal]} +parse/0: product: {name: "2", value: 0, type: 1, properties: [2: integer]} parse/0: instruction: 15 -parse/0: ingredient: {name: "1", value: 1, type: 1, properties: [1: integer]} -parse/0: ingredient: {name: "2", value: 2, type: 1, properties: [2: integer]} -parse/0: product: {name: "3", value: 3, type: 1, properties: [3: integer]} +parse/0: ingredient: {name: "1", value: 0, type: 1, properties: [1: integer]} +parse/0: ingredient: {name: "2", value: 0, type: 1, properties: [2: integer]} +parse/0: product: {name: "3", value: 0, type: 1, properties: [3: integer]} after-brace/0: recipe main after-brace/0: copy ... after-brace/0: copy ... diff --git a/cpp/.traces/lesser_than2 b/cpp/.traces/lesser_than2 index 48967738..f2a6d7dc 100644 --- a/cpp/.traces/lesser_than2 +++ b/cpp/.traces/lesser_than2 @@ -1,13 +1,13 @@ parse/0: instruction: 1 -parse/0: ingredient: {name: "34", value: 34, type: 0, properties: [34: literal]} -parse/0: product: {name: "1", value: 1, type: 1, properties: [1: integer]} +parse/0: ingredient: {name: "34", value: 0, type: 0, properties: [34: literal]} +parse/0: product: {name: "1", value: 0, type: 1, properties: [1: integer]} parse/0: instruction: 1 -parse/0: ingredient: {name: "33", value: 33, type: 0, properties: [33: literal]} -parse/0: product: {name: "2", value: 2, type: 1, properties: [2: integer]} +parse/0: ingredient: {name: "33", value: 0, type: 0, properties: [33: literal]} +parse/0: product: {name: "2", value: 0, type: 1, properties: [2: integer]} parse/0: instruction: 15 -parse/0: ingredient: {name: "1", value: 1, type: 1, properties: [1: integer]} -parse/0: ingredient: {name: "2", value: 2, type: 1, properties: [2: integer]} -parse/0: product: {name: "3", value: 3, type: 1, properties: [3: integer]} +parse/0: ingredient: {name: "1", value: 0, type: 1, properties: [1: integer]} +parse/0: ingredient: {name: "2", value: 0, type: 1, properties: [2: integer]} +parse/0: product: {name: "3", value: 0, type: 1, properties: [3: integer]} after-brace/0: recipe main after-brace/0: copy ... after-brace/0: copy ... diff --git a/cpp/.traces/loop b/cpp/.traces/loop index 48f94a4e..2c05c2fb 100644 --- a/cpp/.traces/loop +++ b/cpp/.traces/loop @@ -1,13 +1,13 @@ parse/0: instruction: 1 parse/0: ingredient: {name: "0", value: 0, type: 0, properties: [0: literal]} -parse/0: product: {name: "1", value: 1, type: 1, properties: [1: integer]} +parse/0: product: {name: "1", value: 0, type: 1, properties: [1: integer]} parse/0: instruction: 1 parse/0: ingredient: {name: "0", value: 0, type: 0, properties: [0: literal]} -parse/0: product: {name: "2", value: 2, type: 1, properties: [2: integer]} +parse/0: product: {name: "2", value: 0, type: 1, properties: [2: integer]} parse/0: label: { parse/0: instruction: 1 parse/0: ingredient: {name: "0", value: 0, type: 0, properties: [0: literal]} -parse/0: product: {name: "3", value: 3, type: 1, properties: [3: integer]} +parse/0: product: {name: "3", value: 0, type: 1, properties: [3: integer]} parse/0: instruction: 25 parse/0: label: } brace/0: 24: push (open, 2) diff --git a/cpp/.traces/multiply b/cpp/.traces/multiply index ce15063f..e5c78165 100644 --- a/cpp/.traces/multiply +++ b/cpp/.traces/multiply @@ -1,13 +1,13 @@ parse/0: instruction: 1 -parse/0: ingredient: {name: "4", value: 4, type: 0, properties: [4: literal]} -parse/0: product: {name: "1", value: 1, type: 1, properties: [1: integer]} +parse/0: ingredient: {name: "4", value: 0, type: 0, properties: [4: literal]} +parse/0: product: {name: "1", value: 0, type: 1, properties: [1: integer]} parse/0: instruction: 1 -parse/0: ingredient: {name: "6", value: 6, type: 0, properties: [6: literal]} -parse/0: product: {name: "2", value: 2, type: 1, properties: [2: integer]} +parse/0: ingredient: {name: "6", value: 0, type: 0, properties: [6: literal]} +parse/0: product: {name: "2", value: 0, type: 1, properties: [2: integer]} parse/0: instruction: 4 -parse/0: ingredient: {name: "1", value: 1, type: 1, properties: [1: integer]} -parse/0: ingredient: {name: "2", value: 2, type: 1, properties: [2: integer]} -parse/0: product: {name: "3", value: 3, type: 1, properties: [3: integer]} +parse/0: ingredient: {name: "1", value: 0, type: 1, properties: [1: integer]} +parse/0: ingredient: {name: "2", value: 0, type: 1, properties: [2: integer]} +parse/0: product: {name: "3", value: 0, type: 1, properties: [3: integer]} after-brace/0: recipe main after-brace/0: copy ... after-brace/0: copy ... diff --git a/cpp/.traces/multiply_literal b/cpp/.traces/multiply_literal index 9c18759b..6822d54c 100644 --- a/cpp/.traces/multiply_literal +++ b/cpp/.traces/multiply_literal @@ -1,7 +1,7 @@ parse/0: instruction: 4 -parse/0: ingredient: {name: "2", value: 2, type: 0, properties: [2: literal]} -parse/0: ingredient: {name: "3", value: 3, type: 0, properties: [3: literal]} -parse/0: product: {name: "1", value: 1, type: 1, properties: [1: integer]} +parse/0: ingredient: {name: "2", value: 0, type: 0, properties: [2: literal]} +parse/0: ingredient: {name: "3", value: 0, type: 0, properties: [3: literal]} +parse/0: product: {name: "1", value: 0, type: 1, properties: [1: integer]} after-brace/0: recipe main after-brace/0: multiply ... run/0: instruction main/0 diff --git a/cpp/.traces/next_ingredient b/cpp/.traces/next_ingredient index 9c779fcd..5c77e068 100644 --- a/cpp/.traces/next_ingredient +++ b/cpp/.traces/next_ingredient @@ -1,11 +1,11 @@ parse/0: instruction: 25 -parse/0: ingredient: {name: "2", value: 2, type: 0, properties: [2: literal]} +parse/0: ingredient: {name: "2", value: 0, type: 0, properties: [2: literal]} parse/0: instruction: 22 -parse/0: product: {name: "12", value: 12, type: 1, properties: [12: integer]} +parse/0: product: {name: "12", value: 0, type: 1, properties: [12: integer]} parse/0: instruction: 2 -parse/0: ingredient: {name: "1", value: 1, type: 0, properties: [1: literal]} -parse/0: ingredient: {name: "12", value: 12, type: 1, properties: [12: integer]} -parse/0: product: {name: "13", value: 13, type: 1, properties: [13: integer]} +parse/0: ingredient: {name: "1", value: 0, type: 0, properties: [1: literal]} +parse/0: ingredient: {name: "12", value: 0, type: 1, properties: [12: integer]} +parse/0: product: {name: "13", value: 0, type: 1, properties: [13: integer]} after-brace/0: recipe main after-brace/0: f ... after-brace/0: recipe f diff --git a/cpp/.traces/not b/cpp/.traces/not index d0f35946..ab7d4348 100644 --- a/cpp/.traces/not +++ b/cpp/.traces/not @@ -1,9 +1,9 @@ parse/0: instruction: 1 -parse/0: ingredient: {name: "1", value: 1, type: 0, properties: [1: literal]} -parse/0: product: {name: "1", value: 1, type: 1, properties: [1: integer]} +parse/0: ingredient: {name: "1", value: 0, type: 0, properties: [1: literal]} +parse/0: product: {name: "1", value: 0, type: 1, properties: [1: integer]} parse/0: instruction: 9 -parse/0: ingredient: {name: "1", value: 1, type: 1, properties: [1: integer]} -parse/0: product: {name: "2", value: 2, type: 1, properties: [2: integer]} +parse/0: ingredient: {name: "1", value: 0, type: 1, properties: [1: integer]} +parse/0: product: {name: "2", value: 0, type: 1, properties: [2: integer]} after-brace/0: recipe main after-brace/0: copy ... after-brace/0: not ... diff --git a/cpp/.traces/or b/cpp/.traces/or index bf8bf538..17582d99 100644 --- a/cpp/.traces/or +++ b/cpp/.traces/or @@ -1,13 +1,13 @@ parse/0: instruction: 1 -parse/0: ingredient: {name: "1", value: 1, type: 0, properties: [1: literal]} -parse/0: product: {name: "1", value: 1, type: 1, properties: [1: integer]} +parse/0: ingredient: {name: "1", value: 0, type: 0, properties: [1: literal]} +parse/0: product: {name: "1", value: 0, type: 1, properties: [1: integer]} parse/0: instruction: 1 parse/0: ingredient: {name: "0", value: 0, type: 0, properties: [0: literal]} -parse/0: product: {name: "2", value: 2, type: 1, properties: [2: integer]} +parse/0: product: {name: "2", value: 0, type: 1, properties: [2: integer]} parse/0: instruction: 8 -parse/0: ingredient: {name: "1", value: 1, type: 1, properties: [1: integer]} -parse/0: ingredient: {name: "2", value: 2, type: 1, properties: [2: integer]} -parse/0: product: {name: "3", value: 3, type: 1, properties: [3: integer]} +parse/0: ingredient: {name: "1", value: 0, type: 1, properties: [1: integer]} +parse/0: ingredient: {name: "2", value: 0, type: 1, properties: [2: integer]} +parse/0: product: {name: "3", value: 0, type: 1, properties: [3: integer]} after-brace/0: recipe main after-brace/0: copy ... after-brace/0: copy ... diff --git a/cpp/.traces/parse_comment_after_instruction b/cpp/.traces/parse_comment_after_instruction index 2d13cf1d..3ca1f8f4 100644 --- a/cpp/.traces/parse_comment_after_instruction +++ b/cpp/.traces/parse_comment_after_instruction @@ -1,3 +1,3 @@ parse/0: instruction: 1 -parse/0: ingredient: {name: "23", value: 23, type: 0, properties: [23: literal]} -parse/0: product: {name: "1", value: 1, type: 1, properties: [1: integer]} +parse/0: ingredient: {name: "23", value: 0, type: 0, properties: [23: literal]} +parse/0: product: {name: "1", value: 0, type: 1, properties: [1: integer]} diff --git a/cpp/.traces/parse_comment_amongst_instruction b/cpp/.traces/parse_comment_amongst_instruction index 2d13cf1d..3ca1f8f4 100644 --- a/cpp/.traces/parse_comment_amongst_instruction +++ b/cpp/.traces/parse_comment_amongst_instruction @@ -1,3 +1,3 @@ parse/0: instruction: 1 -parse/0: ingredient: {name: "23", value: 23, type: 0, properties: [23: literal]} -parse/0: product: {name: "1", value: 1, type: 1, properties: [1: integer]} +parse/0: ingredient: {name: "23", value: 0, type: 0, properties: [23: literal]} +parse/0: product: {name: "1", value: 0, type: 1, properties: [1: integer]} diff --git a/cpp/.traces/parse_comment_amongst_instruction2 b/cpp/.traces/parse_comment_amongst_instruction2 index 2d13cf1d..3ca1f8f4 100644 --- a/cpp/.traces/parse_comment_amongst_instruction2 +++ b/cpp/.traces/parse_comment_amongst_instruction2 @@ -1,3 +1,3 @@ parse/0: instruction: 1 -parse/0: ingredient: {name: "23", value: 23, type: 0, properties: [23: literal]} -parse/0: product: {name: "1", value: 1, type: 1, properties: [1: integer]} +parse/0: ingredient: {name: "23", value: 0, type: 0, properties: [23: literal]} +parse/0: product: {name: "1", value: 0, type: 1, properties: [1: integer]} diff --git a/cpp/.traces/parse_comment_amongst_instruction3 b/cpp/.traces/parse_comment_amongst_instruction3 index 6f7f2dce..6df04dee 100644 --- a/cpp/.traces/parse_comment_amongst_instruction3 +++ b/cpp/.traces/parse_comment_amongst_instruction3 @@ -1,6 +1,6 @@ parse/0: instruction: 1 -parse/0: ingredient: {name: "23", value: 23, type: 0, properties: [23: literal]} -parse/0: product: {name: "1", value: 1, type: 1, properties: [1: integer]} +parse/0: ingredient: {name: "23", value: 0, type: 0, properties: [23: literal]} +parse/0: product: {name: "1", value: 0, type: 1, properties: [1: integer]} parse/0: instruction: 1 -parse/0: ingredient: {name: "23", value: 23, type: 0, properties: [23: literal]} -parse/0: product: {name: "2", value: 2, type: 1, properties: [2: integer]} +parse/0: ingredient: {name: "23", value: 0, type: 0, properties: [23: literal]} +parse/0: product: {name: "2", value: 0, type: 1, properties: [2: integer]} diff --git a/cpp/.traces/parse_comment_outside_recipe b/cpp/.traces/parse_comment_outside_recipe index 2d13cf1d..3ca1f8f4 100644 --- a/cpp/.traces/parse_comment_outside_recipe +++ b/cpp/.traces/parse_comment_outside_recipe @@ -1,3 +1,3 @@ parse/0: instruction: 1 -parse/0: ingredient: {name: "23", value: 23, type: 0, properties: [23: literal]} -parse/0: product: {name: "1", value: 1, type: 1, properties: [1: integer]} +parse/0: ingredient: {name: "23", value: 0, type: 0, properties: [23: literal]} +parse/0: product: {name: "1", value: 0, type: 1, properties: [1: integer]} diff --git a/cpp/.traces/parse_multiple_ingredients b/cpp/.traces/parse_multiple_ingredients index e40fb659..8b18e719 100644 --- a/cpp/.traces/parse_multiple_ingredients +++ b/cpp/.traces/parse_multiple_ingredients @@ -1,5 +1,5 @@ parse/0: instruction: 1 -parse/0: ingredient: {name: "23", value: 23, type: 0, properties: [23: literal]} -parse/0: ingredient: {name: "4", value: 4, type: 1, properties: [4: integer]} -parse/0: product: {name: "1", value: 1, type: 1, properties: [1: integer]} -parse/0: product: {name: "2", value: 2, type: 1, properties: [2: integer]} +parse/0: ingredient: {name: "23", value: 0, type: 0, properties: [23: literal]} +parse/0: ingredient: {name: "4", value: 0, type: 1, properties: [4: integer]} +parse/0: product: {name: "1", value: 0, type: 1, properties: [1: integer]} +parse/0: product: {name: "2", value: 0, type: 1, properties: [2: integer]} diff --git a/cpp/.traces/parse_multiple_products b/cpp/.traces/parse_multiple_products index 47be43c4..83970be9 100644 --- a/cpp/.traces/parse_multiple_products +++ b/cpp/.traces/parse_multiple_products @@ -1,4 +1,4 @@ parse/0: instruction: 1 -parse/0: ingredient: {name: "23", value: 23, type: 0, properties: [23: literal]} -parse/0: product: {name: "1", value: 1, type: 1, properties: [1: integer]} -parse/0: product: {name: "2", value: 2, type: 1, properties: [2: integer]} +parse/0: ingredient: {name: "23", value: 0, type: 0, properties: [23: literal]} +parse/0: product: {name: "1", value: 0, type: 1, properties: [1: integer]} +parse/0: product: {name: "2", value: 0, type: 1, properties: [2: integer]} diff --git a/cpp/.traces/parse_multiple_properties b/cpp/.traces/parse_multiple_properties index c3c79ae2..c18265b2 100644 --- a/cpp/.traces/parse_multiple_properties +++ b/cpp/.traces/parse_multiple_properties @@ -1,3 +1,3 @@ parse/0: instruction: 1 -parse/0: ingredient: {name: "23", value: 23, type: 0, properties: [23: literal, foo: bar:baz]} -parse/0: product: {name: "1", value: 1, type: 1, properties: [1: integer]} +parse/0: ingredient: {name: "23", value: 0, type: 0, properties: [23: literal, foo: bar:baz]} +parse/0: product: {name: "1", value: 0, type: 1, properties: [1: integer]} diff --git a/cpp/.traces/parse_multiple_types b/cpp/.traces/parse_multiple_types index 1b6903cd..8230f9ac 100644 --- a/cpp/.traces/parse_multiple_types +++ b/cpp/.traces/parse_multiple_types @@ -1,5 +1,5 @@ parse/0: instruction: 1 -parse/0: ingredient: {name: "23", value: 23, type: 0, properties: [23: literal]} -parse/0: ingredient: {name: "4", value: 4, type: 1, properties: [4: integer]} -parse/0: product: {name: "1", value: 1, type: 1, properties: [1: integer]} -parse/0: product: {name: "2", value: 2, type: 2-1, properties: [2: address:integer]} +parse/0: ingredient: {name: "23", value: 0, type: 0, properties: [23: literal]} +parse/0: ingredient: {name: "4", value: 0, type: 1, properties: [4: integer]} +parse/0: product: {name: "1", value: 0, type: 1, properties: [1: integer]} +parse/0: product: {name: "2", value: 0, type: 2-1, properties: [2: address:integer]} diff --git a/cpp/.traces/parse_properties b/cpp/.traces/parse_properties index 01bfb40a..c72f91b4 100644 --- a/cpp/.traces/parse_properties +++ b/cpp/.traces/parse_properties @@ -1,3 +1,3 @@ parse/0: instruction: 1 -parse/0: ingredient: {name: "23", value: 23, type: 0, properties: [23: literal]} -parse/0: product: {name: "1", value: 1, type: 1-2, properties: [1: integer:address, deref: ]} +parse/0: ingredient: {name: "23", value: 0, type: 0, properties: [23: literal]} +parse/0: product: {name: "1", value: 0, type: 1-2, properties: [1: integer:address, deref: ]} diff --git a/cpp/.traces/reply b/cpp/.traces/reply index e94e9610..65f49f5b 100644 --- a/cpp/.traces/reply +++ b/cpp/.traces/reply @@ -1,16 +1,16 @@ parse/0: instruction: 25 -parse/0: ingredient: {name: "2", value: 2, type: 0, properties: [2: literal]} -parse/0: product: {name: "3", value: 3, type: 1, properties: [3: integer]} -parse/0: product: {name: "4", value: 4, type: 1, properties: [4: integer]} +parse/0: ingredient: {name: "2", value: 0, type: 0, properties: [2: literal]} +parse/0: product: {name: "3", value: 0, type: 1, properties: [3: integer]} +parse/0: product: {name: "4", value: 0, type: 1, properties: [4: integer]} parse/0: instruction: 22 -parse/0: product: {name: "12", value: 12, type: 1, properties: [12: integer]} +parse/0: product: {name: "12", value: 0, type: 1, properties: [12: integer]} parse/0: instruction: 2 -parse/0: ingredient: {name: "1", value: 1, type: 0, properties: [1: literal]} -parse/0: ingredient: {name: "12", value: 12, type: 1, properties: [12: integer]} -parse/0: product: {name: "13", value: 13, type: 1, properties: [13: integer]} +parse/0: ingredient: {name: "1", value: 0, type: 0, properties: [1: literal]} +parse/0: ingredient: {name: "12", value: 0, type: 1, properties: [12: integer]} +parse/0: product: {name: "13", value: 0, type: 1, properties: [13: integer]} parse/0: instruction: 23 -parse/0: ingredient: {name: "12", value: 12, type: 1, properties: [12: integer]} -parse/0: ingredient: {name: "13", value: 13, type: 1, properties: [13: integer]} +parse/0: ingredient: {name: "12", value: 0, type: 1, properties: [12: integer]} +parse/0: ingredient: {name: "13", value: 0, type: 1, properties: [13: integer]} after-brace/0: recipe main after-brace/0: f ... after-brace/0: recipe f diff --git a/cpp/.traces/run_label b/cpp/.traces/run_label index 6d1065b9..59dded7d 100644 --- a/cpp/.traces/run_label +++ b/cpp/.traces/run_label @@ -1,10 +1,10 @@ parse/0: label: +foo parse/0: instruction: 1 -parse/0: ingredient: {name: "23", value: 23, type: 0, properties: [23: literal]} -parse/0: product: {name: "1", value: 1, type: 1, properties: [1: integer]} +parse/0: ingredient: {name: "23", value: 0, type: 0, properties: [23: literal]} +parse/0: product: {name: "1", value: 0, type: 1, properties: [1: integer]} parse/0: instruction: 1 -parse/0: ingredient: {name: "1", value: 1, type: 1, properties: [1: integer]} -parse/0: product: {name: "2", value: 2, type: 1, properties: [2: integer]} +parse/0: ingredient: {name: "1", value: 0, type: 1, properties: [1: integer]} +parse/0: product: {name: "2", value: 0, type: 1, properties: [2: integer]} after-brace/0: recipe main after-brace/0: copy ... after-brace/0: copy ... diff --git a/cpp/.traces/store_indirect b/cpp/.traces/store_indirect index 44c5f10c..2ac8aa81 100644 --- a/cpp/.traces/store_indirect +++ b/cpp/.traces/store_indirect @@ -1,9 +1,9 @@ parse/0: instruction: 1 -parse/0: ingredient: {name: "2", value: 2, type: 0, properties: [2: literal]} -parse/0: product: {name: "1", value: 1, type: 2-1, properties: [1: address:integer]} +parse/0: ingredient: {name: "2", value: 0, type: 0, properties: [2: literal]} +parse/0: product: {name: "1", value: 0, type: 2-1, properties: [1: address:integer]} parse/0: instruction: 1 -parse/0: ingredient: {name: "34", value: 34, type: 0, properties: [34: literal]} -parse/0: product: {name: "1", value: 1, type: 2-1, properties: [1: address:integer, deref: ]} +parse/0: ingredient: {name: "34", value: 0, type: 0, properties: [34: literal]} +parse/0: product: {name: "1", value: 0, type: 2-1, properties: [1: address:integer, deref: ]} after-brace/0: recipe main after-brace/0: copy ... after-brace/0: copy ... diff --git a/cpp/.traces/subtract b/cpp/.traces/subtract index 4275117e..f7bc4113 100644 --- a/cpp/.traces/subtract +++ b/cpp/.traces/subtract @@ -1,13 +1,13 @@ parse/0: instruction: 1 -parse/0: ingredient: {name: "23", value: 23, type: 0, properties: [23: literal]} -parse/0: product: {name: "1", value: 1, type: 1, properties: [1: integer]} +parse/0: ingredient: {name: "23", value: 0, type: 0, properties: [23: literal]} +parse/0: product: {name: "1", value: 0, type: 1, properties: [1: integer]} parse/0: instruction: 1 -parse/0: ingredient: {name: "34", value: 34, type: 0, properties: [34: literal]} -parse/0: product: {name: "2", value: 2, type: 1, properties: [2: integer]} +parse/0: ingredient: {name: "34", value: 0, type: 0, properties: [34: literal]} +parse/0: product: {name: "2", value: 0, type: 1, properties: [2: integer]} parse/0: instruction: 3 -parse/0: ingredient: {name: "1", value: 1, type: 1, properties: [1: integer]} -parse/0: ingredient: {name: "2", value: 2, type: 1, properties: [2: integer]} -parse/0: product: {name: "3", value: 3, type: 1, properties: [3: integer]} +parse/0: ingredient: {name: "1", value: 0, type: 1, properties: [1: integer]} +parse/0: ingredient: {name: "2", value: 0, type: 1, properties: [2: integer]} +parse/0: product: {name: "3", value: 0, type: 1, properties: [3: integer]} after-brace/0: recipe main after-brace/0: copy ... after-brace/0: copy ... diff --git a/cpp/.traces/subtract_literal b/cpp/.traces/subtract_literal index 5bd95f68..8e601f9b 100644 --- a/cpp/.traces/subtract_literal +++ b/cpp/.traces/subtract_literal @@ -1,7 +1,7 @@ parse/0: instruction: 3 -parse/0: ingredient: {name: "5", value: 5, type: 0, properties: [5: literal]} -parse/0: ingredient: {name: "2", value: 2, type: 0, properties: [2: literal]} -parse/0: product: {name: "1", value: 1, type: 1, properties: [1: integer]} +parse/0: ingredient: {name: "5", value: 0, type: 0, properties: [5: literal]} +parse/0: ingredient: {name: "2", value: 0, type: 0, properties: [2: literal]} +parse/0: product: {name: "1", value: 0, type: 1, properties: [1: integer]} after-brace/0: recipe main after-brace/0: subtract ... run/0: instruction main/0 diff --git a/cpp/010vm b/cpp/010vm index 049630d3..8bb1604b 100644 --- a/cpp/010vm +++ b/cpp/010vm @@ -139,7 +139,7 @@ void setup_recipes() { void instruction::clear() { is_label=false; label.clear(); operation=IDLE; ingredients.clear(); products.clear(); } // Reagents have the form <name>:<type>:<type>:.../<property>/<property>/... - reagent::reagent(string s) { + reagent::reagent(string s) :value(0) { istringstream in(s); // properties while (!in.eof()) { @@ -152,12 +152,11 @@ void setup_recipes() { } // structures for the first row of properties name = properties[0].first; - value = to_int(name); for (size_t i = 0; i < properties[0].second.size(); ++i) { types.push_back(Type_number[properties[0].second[i]]); } } - reagent::reagent(type_number t) { + reagent::reagent(type_number t) :value(0) { types.push_back(t); } string reagent::to_string() { diff --git a/cpp/011load b/cpp/011load index 97483e93..d9da1fe3 100644 --- a/cpp/011load +++ b/cpp/011load @@ -5,8 +5,8 @@ recipe main [ 1:integer <- copy 23:literal ] +parse: instruction: 1 -+parse: ingredient: {name: "23", value: 23, type: 0, properties: [23: literal]} -+parse: product: {name: "1", value: 1, type: 1, properties: [1: integer]} ++parse: ingredient: {name: "23", value: 0, type: 0, properties: [23: literal]} ++parse: product: {name: "1", value: 0, type: 1, properties: [1: integer]} :(code) vector<recipe_number> add_recipes(string form) { @@ -166,8 +166,8 @@ recipe main [ 1:integer <- copy 23:literal ] +parse: instruction: 1 -+parse: ingredient: {name: "23", value: 23, type: 0, properties: [23: literal]} -+parse: product: {name: "1", value: 1, type: 1, properties: [1: integer]} ++parse: ingredient: {name: "23", value: 0, type: 0, properties: [23: literal]} ++parse: product: {name: "1", value: 0, type: 1, properties: [1: integer]} :(scenario parse_comment_amongst_instruction) recipe main [ @@ -175,8 +175,8 @@ recipe main [ 1:integer <- copy 23:literal ] +parse: instruction: 1 -+parse: ingredient: {name: "23", value: 23, type: 0, properties: [23: literal]} -+parse: product: {name: "1", value: 1, type: 1, properties: [1: integer]} ++parse: ingredient: {name: "23", value: 0, type: 0, properties: [23: literal]} ++parse: product: {name: "1", value: 0, type: 1, properties: [1: integer]} :(scenario parse_comment_amongst_instruction2) recipe main [ @@ -185,8 +185,8 @@ recipe main [ # comment ] +parse: instruction: 1 -+parse: ingredient: {name: "23", value: 23, type: 0, properties: [23: literal]} -+parse: product: {name: "1", value: 1, type: 1, properties: [1: integer]} ++parse: ingredient: {name: "23", value: 0, type: 0, properties: [23: literal]} ++parse: product: {name: "1", value: 0, type: 1, properties: [1: integer]} :(scenario parse_comment_amongst_instruction3) recipe main [ @@ -195,19 +195,19 @@ recipe main [ 2:integer <- copy 23:literal ] +parse: instruction: 1 -+parse: ingredient: {name: "23", value: 23, type: 0, properties: [23: literal]} -+parse: product: {name: "1", value: 1, type: 1, properties: [1: integer]} ++parse: ingredient: {name: "23", value: 0, type: 0, properties: [23: literal]} ++parse: product: {name: "1", value: 0, type: 1, properties: [1: integer]} +parse: instruction: 1 -+parse: ingredient: {name: "23", value: 23, type: 0, properties: [23: literal]} -+parse: product: {name: "2", value: 2, type: 1, properties: [2: integer]} ++parse: ingredient: {name: "23", value: 0, type: 0, properties: [23: literal]} ++parse: product: {name: "2", value: 0, type: 1, properties: [2: integer]} :(scenario parse_comment_after_instruction) recipe main [ 1:integer <- copy 23:literal # comment ] +parse: instruction: 1 -+parse: ingredient: {name: "23", value: 23, type: 0, properties: [23: literal]} -+parse: product: {name: "1", value: 1, type: 1, properties: [1: integer]} ++parse: ingredient: {name: "23", value: 0, type: 0, properties: [23: literal]} ++parse: product: {name: "1", value: 0, type: 1, properties: [1: integer]} :(scenario parse_label) recipe main [ @@ -221,40 +221,40 @@ recipe main [ 1:integer <- copy 23:literal/foo:bar:baz ] +parse: instruction: 1 -+parse: ingredient: {name: "23", value: 23, type: 0, properties: [23: literal, foo: bar:baz]} -+parse: product: {name: "1", value: 1, type: 1, properties: [1: integer]} ++parse: ingredient: {name: "23", value: 0, type: 0, properties: [23: literal, foo: bar:baz]} ++parse: product: {name: "1", value: 0, type: 1, properties: [1: integer]} :(scenario parse_multiple_products) recipe main [ 1:integer, 2:integer <- copy 23:literal ] +parse: instruction: 1 -+parse: ingredient: {name: "23", value: 23, type: 0, properties: [23: literal]} -+parse: product: {name: "1", value: 1, type: 1, properties: [1: integer]} -+parse: product: {name: "2", value: 2, type: 1, properties: [2: integer]} ++parse: ingredient: {name: "23", value: 0, type: 0, properties: [23: literal]} ++parse: product: {name: "1", value: 0, type: 1, properties: [1: integer]} ++parse: product: {name: "2", value: 0, type: 1, properties: [2: integer]} :(scenario parse_multiple_ingredients) recipe main [ 1:integer, 2:integer <- copy 23:literal, 4:integer ] +parse: instruction: 1 -+parse: ingredient: {name: "23", value: 23, type: 0, properties: [23: literal]} -+parse: ingredient: {name: "4", value: 4, type: 1, properties: [4: integer]} -+parse: product: {name: "1", value: 1, type: 1, properties: [1: integer]} -+parse: product: {name: "2", value: 2, type: 1, properties: [2: integer]} ++parse: ingredient: {name: "23", value: 0, type: 0, properties: [23: literal]} ++parse: ingredient: {name: "4", value: 0, type: 1, properties: [4: integer]} ++parse: product: {name: "1", value: 0, type: 1, properties: [1: integer]} ++parse: product: {name: "2", value: 0, type: 1, properties: [2: integer]} :(scenario parse_multiple_types) recipe main [ 1:integer, 2:address:integer <- copy 23:literal, 4:integer ] +parse: instruction: 1 -+parse: ingredient: {name: "23", value: 23, type: 0, properties: [23: literal]} -+parse: ingredient: {name: "4", value: 4, type: 1, properties: [4: integer]} -+parse: product: {name: "1", value: 1, type: 1, properties: [1: integer]} -+parse: product: {name: "2", value: 2, type: 2-1, properties: [2: address:integer]} ++parse: ingredient: {name: "23", value: 0, type: 0, properties: [23: literal]} ++parse: ingredient: {name: "4", value: 0, type: 1, properties: [4: integer]} ++parse: product: {name: "1", value: 0, type: 1, properties: [1: integer]} ++parse: product: {name: "2", value: 0, type: 2-1, properties: [2: address:integer]} :(scenario parse_properties) recipe main [ 1:integer:address/deref <- copy 23:literal ] -+parse: product: {name: "1", value: 1, type: 1-2, properties: [1: integer:address, deref: ]} ++parse: product: {name: "1", value: 0, type: 1-2, properties: [1: integer:address, deref: ]} diff --git a/cpp/012transform b/cpp/012transform index bb130187..8cd29c94 100644 --- a/cpp/012transform +++ b/cpp/012transform @@ -25,4 +25,30 @@ void transform_all() { r.transformed_until = t; } } + parse_int_reagents(); // do this after all other transforms have run +} + +void parse_int_reagents() { +//? cout << "parse_int_reagents\n"; //? 1 + for (unordered_map<recipe_number, recipe>::iterator p = Recipe.begin(); p != Recipe.end(); ++p) { + recipe& r = p->second; + if (r.steps.empty()) continue; + for (size_t index = 0; index < r.steps.size(); ++index) { + instruction& inst = r.steps[index]; + for (size_t i = 0; i < inst.ingredients.size(); ++i) { + populate_value(inst.ingredients[i]); + } + for (size_t i = 0; i < inst.products.size(); ++i) { + populate_value(inst.products[i]); + } + } + } +} + +void populate_value(reagent& r) { + char* end = NULL; + int result = strtol(r.name.c_str(), &end, /*any base*/0); + if (*end != '\0') return; +//? cout << "setting value\n"; //? 1 + r.value = result; } diff --git a/cpp/013run b/cpp/013run index 1fc6ded8..102a7dfb 100644 --- a/cpp/013run +++ b/cpp/013run @@ -38,6 +38,7 @@ void run(routine rr) { // Running one instruction. if (instructions[pc].is_label) { ++pc; continue; } trace("run") << "instruction " << recipe_name(rr) << '/' << pc; +//? cout << instructions[pc].operation << '\n'; //? 1 switch (instructions[pc].operation) { // Primitive Recipe Implementations. case COPY: { @@ -127,7 +128,7 @@ vector<int> read_memory(reagent x) { } void write_memory(reagent x, vector<int> data) { - int base = to_int(x.name); + int base = x.value; size_t size = size_of(x); if (size != data.size()) raise << "size mismatch in storing to " << x.to_string(); for (size_t offset = 0; offset < size; ++offset) { @@ -139,6 +140,7 @@ void write_memory(reagent x, vector<int> data) { :(code) size_t size_of(reagent r) { type_info t = Type[r.types[0]]; + if (!t.is_record && !t.is_array) return t.size; // End size_of Cases. return t.size; } diff --git a/cpp/016jump b/cpp/016jump index 2ce18859..827e70f4 100644 --- a/cpp/016jump +++ b/cpp/016jump @@ -8,7 +8,7 @@ Next_recipe_number++; :(before "End Primitive Recipe Implementations") case JUMP: { trace("run") << "ingredient 0 is " << instructions[pc].ingredients[0].name; - pc += to_int(instructions[pc].ingredients[0].name); + pc += instructions[pc].ingredients[0].value; break; } @@ -49,7 +49,7 @@ case JUMP_IF: { break; } trace("run") << "ingredient 1 is " << instructions[pc].ingredients[1].name; - pc += to_int(instructions[pc].ingredients[1].name); + pc += instructions[pc].ingredients[1].value; trace("run") << "jumping to instruction " << pc+1; break; } @@ -91,7 +91,7 @@ case JUMP_UNLESS: { break; } trace("run") << "ingredient 1 is " << instructions[pc].ingredients[1].name; - pc += to_int(instructions[pc].ingredients[1].name); + pc += instructions[pc].ingredients[1].value; trace("run") << "jumping to instruction " << pc+1; break; } diff --git a/cpp/018record b/cpp/018record index f42531be..b6ca40dc 100644 --- a/cpp/018record +++ b/cpp/018record @@ -31,15 +31,16 @@ Recipe_number["get"] = GET; assert(Next_recipe_number == GET); Next_recipe_number++; :(before "End Primitive Recipe Implementations") +//: beware: overridden in later layers case GET: { trace("run") << "ingredient 0 is " << instructions[pc].ingredients[0].name; - int base_address = to_int(instructions[pc].ingredients[0].name); + int base_address = instructions[pc].ingredients[0].value; int base_type = instructions[pc].ingredients[0].types[0]; assert(Type[base_type].is_record); trace("run") << "ingredient 1 is " << instructions[pc].ingredients[1].name; assert(instructions[pc].ingredients[1].types.size() == 1); assert(instructions[pc].ingredients[1].types[0] == 0); // must be literal - size_t offset = to_int(instructions[pc].ingredients[1].name); + size_t offset = instructions[pc].ingredients[1].value; int src = base_address; for (size_t i = 0; i < offset; ++i) { src += size_of(reagent(Type[base_type].elements[i][0])); @@ -110,13 +111,13 @@ Next_recipe_number++; :(before "End Primitive Recipe Implementations") case GET_ADDRESS: { trace("run") << "ingredient 0 is " << instructions[pc].ingredients[0].name; - int base_address = to_int(instructions[pc].ingredients[0].name); + int base_address = instructions[pc].ingredients[0].value; int base_type = instructions[pc].ingredients[0].types[0]; assert(Type[base_type].is_record); trace("run") << "ingredient 1 is " << instructions[pc].ingredients[1].name; assert(instructions[pc].ingredients[1].types.size() == 1); assert(instructions[pc].ingredients[1].types[0] == 0); // must be literal - size_t offset = to_int(instructions[pc].ingredients[1].name); + size_t offset = instructions[pc].ingredients[1].value; int src = base_address; for (size_t i = 0; i < offset; ++i) { src += size_of(reagent(Type[base_type].elements[i][0])); diff --git a/cpp/019address b/cpp/019address index cd4f180e..c8685f3d 100644 --- a/cpp/019address +++ b/cpp/019address @@ -16,11 +16,11 @@ recipe main [ vector<int> read_memory(reagent x) { vector<int> result; if (x.types[0] == 0) { // literal - result.push_back(to_int(x.name)); + result.push_back(x.value); return result; } x = canonize(x); - int base = to_int(x.name); + int base = x.value; size_t size = size_of(x); for (size_t offset = 0; offset < size; ++offset) { int val = Memory[base+offset]; @@ -44,7 +44,7 @@ recipe main [ :(replace{} "void write_memory(reagent x, vector<int> data)") void write_memory(reagent x, vector<int> data) { x = canonize(x); - int base = to_int(x.name); + int base = x.value; if (!Type[x.types[0]].is_array && size_of(x) != data.size()) raise << "size mismatch in storing to " << x.to_string(); for (size_t offset = 0; offset < data.size(); ++offset) { @@ -72,11 +72,9 @@ reagent deref(reagent x) { reagent result(""); assert(x.types[0] == 2); // address - // compute name - ostringstream out; - out << Memory[to_int(x.name)]; - result.name = out.str(); - trace("mem") << "location " << x.name << " is " << result.name; + // compute value + result.value = Memory[x.value]; + trace("mem") << "location " << x.value << " is " << result.value; // populate types copy(++x.types.begin(), x.types.end(), inserter(result.types, result.types.begin())); @@ -112,15 +110,16 @@ recipe main [ :(replace{} "case GET:") case GET: { + trace("run") << "foo: ingredient 0 is " << instructions[pc].ingredients[0].name << "/" << instructions[pc].ingredients[0].value; trace("run") << "ingredient 0 is " << instructions[pc].ingredients[0].name; reagent base = canonize(instructions[pc].ingredients[0]); - int base_address = to_int(base.name); + int base_address = base.value; int base_type = base.types[0]; assert(Type[base_type].is_record); trace("run") << "ingredient 1 is " << instructions[pc].ingredients[1].name; assert(instructions[pc].ingredients[1].types.size() == 1); assert(instructions[pc].ingredients[1].types[0] == 0); // must be literal - size_t offset = to_int(instructions[pc].ingredients[1].name); + size_t offset = instructions[pc].ingredients[1].value; int src = base_address; for (size_t i = 0; i < offset; ++i) { src += size_of(reagent(Type[base_type].elements[i][0])); @@ -130,9 +129,8 @@ case GET: { assert(Type[base_type].elements.size() > offset); int src_type = Type[base_type].elements[offset][0]; trace("run") << "its type is " << src_type; - ostringstream s; - s << src; - reagent tmp(s.str()); + reagent tmp(src_type); + tmp.value = src; tmp.types.push_back(src_type); vector<int> result(read_memory(tmp)); trace("run") << "product 0 is " << result[0]; @@ -156,13 +154,13 @@ recipe main [ case GET_ADDRESS: { trace("run") << "ingredient 0 is " << instructions[pc].ingredients[0].name; reagent base = canonize(instructions[pc].ingredients[0]); - int base_address = to_int(base.name); + int base_address = base.value; int base_type = base.types[0]; assert(Type[base_type].is_record); trace("run") << "ingredient 1 is " << instructions[pc].ingredients[1].name; assert(instructions[pc].ingredients[1].types.size() == 1); assert(instructions[pc].ingredients[1].types[0] == 0); // must be literal - size_t offset = to_int(instructions[pc].ingredients[1].name); + size_t offset = instructions[pc].ingredients[1].value; int src = base_address; for (size_t i = 0; i < offset; ++i) { src += size_of(reagent(Type[base_type].elements[i][0])); diff --git a/cpp/020array b/cpp/020array index f76342c9..709fd65a 100644 --- a/cpp/020array +++ b/cpp/020array @@ -29,13 +29,10 @@ recipe main [ :(before "End size_of Cases") if (t.is_array) { - assert(!r.name.empty()); - int base = to_int(r.name); + int base = r.value; if (Memory[base] == 0) return 0; - ostringstream out; - out << base+1; - reagent x(out.str()); - x.types.push_back(t.element[0]); + reagent x(t.element[0]); + x.value = base+1; return 1 + Memory[base]*size_of(x); } @@ -50,19 +47,17 @@ Next_recipe_number++; case INDEX: { trace("run") << "ingredient 0 is " << instructions[pc].ingredients[0].name; reagent base = canonize(instructions[pc].ingredients[0]); - int base_address = to_int(base.name); + int base_address = base.value; int base_type = base.types[0]; assert(Type[base_type].is_array); trace("run") << "ingredient 1 is " << instructions[pc].ingredients[1].name; - size_t offset = to_int(instructions[pc].ingredients[1].name); + size_t offset = instructions[pc].ingredients[1].value; int src = base_address + 1 + offset*size_of(reagent(Type[base_type].element[0])); trace("run") << "address to copy is " << src; int src_type = Type[base_type].element[0]; trace("run") << "its type is " << src_type; - ostringstream s; - s << src; - reagent tmp(s.str()); - tmp.types.push_back(src_type); + reagent tmp(src_type); + tmp.value = src; vector<int> result(read_memory(tmp)); trace("run") << "product 0 is " << result[0]; write_memory(instructions[pc].products[0], result); @@ -97,11 +92,11 @@ Next_recipe_number++; case INDEX_ADDRESS: { trace("run") << "ingredient 0 is " << instructions[pc].ingredients[0].name; reagent base = canonize(instructions[pc].ingredients[0]); - int base_address = to_int(base.name); + int base_address = base.value; int base_type = base.types[0]; assert(Type[base_type].is_array); trace("run") << "ingredient 1 is " << instructions[pc].ingredients[1].name; - size_t offset = to_int(instructions[pc].ingredients[1].name); + size_t offset = instructions[pc].ingredients[1].value; int src = base_address + 1 + offset*size_of(reagent(Type[base_type].element[0])); trace("run") << "address to copy is " << src; vector<int> result; diff --git a/cpp/024brace b/cpp/024brace index 0385b3b1..0a13ddda 100644 --- a/cpp/024brace +++ b/cpp/024brace @@ -248,7 +248,7 @@ recipe main [ recipe main [ 1:integer <- copy 0:literal { - break 3:offset + break +foo:offset } ] -+after-brace: jump 3:offset ++after-brace: jump +foo:offset |