diff options
author | Kartik K. Agaram <vc@akkartik.com> | 2015-05-05 21:17:24 -0700 |
---|---|---|
committer | Kartik K. Agaram <vc@akkartik.com> | 2015-05-05 21:17:24 -0700 |
commit | b96af395b9af2ff9df94b3e82213171f30827c8d (patch) | |
tree | 17c8c12648ccc25625e2534ec8d74fbe8f1542cc /cpp/.traces | |
parent | 2e3b597fe85b654e82b891c22d50754fa5a26156 (diff) | |
download | mu-b96af395b9af2ff9df94b3e82213171f30827c8d.tar.gz |
1276 - make C++ version the default
I've tried to update the Readme, but there are at least a couple of issues.
Diffstat (limited to 'cpp/.traces')
183 files changed, 0 insertions, 23020 deletions
diff --git a/cpp/.traces/add b/cpp/.traces/add deleted file mode 100644 index 51c64f81..00000000 --- a/cpp/.traces/add +++ /dev/null @@ -1,32 +0,0 @@ -parse/0: instruction: copy -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: copy -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: add -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 ... -after-brace/0: add ... -new/0: routine allocated memory from 1000 to 101000 -schedule/0: main -run/0: instruction main/0 -run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- copy/1 {name: "23", value: 23, type: 0, properties: ["23": "literal"]} -run/0: ingredient 0 is 23 -mem/0: storing 23 in location 1 -run/0: instruction main/1 -run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- copy/1 {name: "34", value: 34, type: 0, properties: ["34": "literal"]} -run/0: ingredient 0 is 34 -mem/0: storing 34 in location 2 -run/0: instruction main/2 -run/0: {name: "3", value: 3, type: 1, properties: ["3": "integer"]} <- add/2 {name: "1", value: 1, type: 1, properties: ["1": "integer"]}, {name: "2", value: 2, type: 1, properties: ["2": "integer"]} -run/0: ingredient 0 is 1 -mem/0: location 1 is 23 -run/0: ingredient 1 is 2 -mem/0: location 2 is 34 -run/0: product 0 is 57 -mem/0: storing 57 in location 3 diff --git a/cpp/.traces/add_literal b/cpp/.traces/add_literal deleted file mode 100644 index c6dc982e..00000000 --- a/cpp/.traces/add_literal +++ /dev/null @@ -1,14 +0,0 @@ -parse/0: instruction: add -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 ... -new/0: routine allocated memory from 1000 to 101000 -schedule/0: main -run/0: instruction main/0 -run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- add/2 {name: "23", value: 23, type: 0, properties: ["23": "literal"]}, {name: "34", value: 34, type: 0, properties: ["34": "literal"]} -run/0: ingredient 0 is 23 -run/0: ingredient 1 is 34 -run/0: product 0 is 57 -mem/0: storing 57 in location 1 diff --git a/cpp/.traces/and b/cpp/.traces/and deleted file mode 100644 index d354b1a9..00000000 --- a/cpp/.traces/and +++ /dev/null @@ -1,32 +0,0 @@ -parse/0: instruction: copy -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: copy -parse/0: ingredient: {name: "0", value: 0, type: 0, properties: ["0": "literal"]} -parse/0: product: {name: "2", value: 0, type: 1, properties: ["2": "integer"]} -parse/0: instruction: and -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 ... -after-brace/0: and ... -new/0: routine allocated memory from 1000 to 101000 -schedule/0: main -run/0: instruction main/0 -run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- copy/1 {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is 1 -mem/0: storing 1 in location 1 -run/0: instruction main/1 -run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- copy/1 {name: "0", value: 0, type: 0, properties: ["0": "literal"]} -run/0: ingredient 0 is 0 -mem/0: storing 0 in location 2 -run/0: instruction main/2 -run/0: {name: "3", value: 3, type: 1, properties: ["3": "integer"]} <- and/7 {name: "1", value: 1, type: 1, properties: ["1": "integer"]}, {name: "2", value: 2, type: 1, properties: ["2": "integer"]} -run/0: ingredient 0 is 1 -mem/0: location 1 is 1 -run/0: ingredient 1 is 2 -mem/0: location 2 is 0 -run/0: product 0 is 0 -mem/0: storing 0 in location 3 diff --git a/cpp/.traces/array-from-args b/cpp/.traces/array-from-args deleted file mode 100644 index 695f32cb..00000000 --- a/cpp/.traces/array-from-args +++ /dev/null @@ -1,329 +0,0 @@ -parse/0: instruction: run -parse/0: ingredient: {name: " - 1:address:array:location <- init-array 0:literal, 1:literal, 2:literal - 2:array:location <- copy 1:address:array:location/deref - ", value: 0, type: 0, properties: [" - 1:address:array:location <- init-array 0:literal, 1:literal, 2:literal - 2:array:location <- copy 1:address:array:location/deref - ": "literal-string"]} -parse/0: instruction: memory-should-contain -parse/0: ingredient: {name: " - 2 <- 3 # array length - 3 <- 0 - 4 <- 1 - 5 <- 2 - ", value: 0, type: 0, properties: [" - 2 <- 3 # array length - 3 <- 0 - 4 <- 1 - 5 <- 2 - ": "literal-string"]} -after-brace/0: recipe array-from-args -after-brace/0: run ... -after-brace/0: memory-should-contain ... -new/0: routine allocated memory from 1000 to 101000 -schedule/0: array-from-args -run/0: instruction array-from-args/0 -run/0: run/45 {name: " - 1:address:array:location <- init-array 0:literal, 1:literal, 2:literal - 2:array:location <- copy 1:address:array:location/deref - ", value: 0, type: 0, properties: [" - 1:address:array:location <- init-array 0:literal, 1:literal, 2:literal - 2:array:location <- copy 1:address:array:location/deref - ": "literal-string"]} -parse/0: instruction: init-array -parse/0: ingredient: {name: "0", value: 0, type: 0, properties: ["0": "literal"]} -parse/0: ingredient: {name: "1", value: 0, type: 0, properties: ["1": "literal"]} -parse/0: ingredient: {name: "2", value: 0, type: 0, properties: ["2": "literal"]} -parse/0: product: {name: "1", value: 0, type: 2-5-1, properties: ["1": "address":"array":"location"]} -parse/0: instruction: copy -parse/0: ingredient: {name: "1", value: 0, type: 2-5-1, properties: ["1": "address":"array":"location", "deref": ]} -parse/0: product: {name: "2", value: 0, type: 5-1, properties: ["2": "array":"location"]} -after-brace/0: recipe run1001 -after-brace/0: init-array ... -after-brace/0: copy ... -run/0: instruction run1001/0 -run/0: {name: "1", value: 1, type: 2-5-1, properties: ["1": "address":"array":"location"]} <- init-array/114 {name: "0", value: 0, type: 0, properties: ["0": "literal"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]}, {name: "2", value: 2, type: 0, properties: ["2": "literal"]} -run/0: instruction init-array/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/44 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} -mem/0: array size is 30 -mem/0: new alloc: 1000 -run/0: instruction init-array/1 -run/0: {name: "capacity", value: 1, type: 1, properties: ["capacity": "integer"]} <- copy/1 {name: "0", value: 0, type: 0, properties: ["0": "literal"]} -run/0: ingredient 0 is 0 -mem/0: storing 0 in location 1002 -run/0: instruction init-array/3 -run/0: {name: "curr-value", value: 2, type: 1, properties: ["curr-value": "location"]}, {name: "exists?", value: 3, type: 3, properties: ["exists?": "boolean"]} <- next-ingredient/30 -run/0: product 0 is 0 -mem/0: storing 0 in location 1003 -mem/0: storing 1 in location 1004 -run/0: instruction init-array/4 -run/0: break-unless/12 {name: "exists?", value: 3, type: 3, properties: ["exists?": "boolean"]}, {name: "", value: 2, type: , properties: ["": ]} -mem/0: location 1004 is 1 -run/0: ingredient 0 is 1 -run/0: jump-unless fell through -run/0: instruction init-array/5 -run/0: {name: "capacity", value: 1, type: 1, properties: ["capacity": "integer"]} <- add/2 {name: "capacity", value: 1, type: 1, properties: ["capacity": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is capacity -mem/0: location 1002 is 0 -run/0: ingredient 1 is 1 -run/0: product 0 is 1 -mem/0: storing 1 in location 1002 -run/0: instruction init-array/6 -run/0: loop/10 {name: "", value: -4, type: , properties: ["": ]} -run/0: ingredient 0 is -4 -run/0: jumping to instruction 3 -run/0: instruction init-array/3 -run/0: {name: "curr-value", value: 2, type: 1, properties: ["curr-value": "location"]}, {name: "exists?", value: 3, type: 3, properties: ["exists?": "boolean"]} <- next-ingredient/30 -run/0: product 0 is 1 -mem/0: storing 1 in location 1003 -mem/0: storing 1 in location 1004 -run/0: instruction init-array/4 -run/0: break-unless/12 {name: "exists?", value: 3, type: 3, properties: ["exists?": "boolean"]}, {name: "", value: 2, type: , properties: ["": ]} -mem/0: location 1004 is 1 -run/0: ingredient 0 is 1 -run/0: jump-unless fell through -run/0: instruction init-array/5 -run/0: {name: "capacity", value: 1, type: 1, properties: ["capacity": "integer"]} <- add/2 {name: "capacity", value: 1, type: 1, properties: ["capacity": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is capacity -mem/0: location 1002 is 1 -run/0: ingredient 1 is 1 -run/0: product 0 is 2 -mem/0: storing 2 in location 1002 -run/0: instruction init-array/6 -run/0: loop/10 {name: "", value: -4, type: , properties: ["": ]} -run/0: ingredient 0 is -4 -run/0: jumping to instruction 3 -run/0: instruction init-array/3 -run/0: {name: "curr-value", value: 2, type: 1, properties: ["curr-value": "location"]}, {name: "exists?", value: 3, type: 3, properties: ["exists?": "boolean"]} <- next-ingredient/30 -run/0: product 0 is 2 -mem/0: storing 2 in location 1003 -mem/0: storing 1 in location 1004 -run/0: instruction init-array/4 -run/0: break-unless/12 {name: "exists?", value: 3, type: 3, properties: ["exists?": "boolean"]}, {name: "", value: 2, type: , properties: ["": ]} -mem/0: location 1004 is 1 -run/0: ingredient 0 is 1 -run/0: jump-unless fell through -run/0: instruction init-array/5 -run/0: {name: "capacity", value: 1, type: 1, properties: ["capacity": "integer"]} <- add/2 {name: "capacity", value: 1, type: 1, properties: ["capacity": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is capacity -mem/0: location 1002 is 2 -run/0: ingredient 1 is 1 -run/0: product 0 is 3 -mem/0: storing 3 in location 1002 -run/0: instruction init-array/6 -run/0: loop/10 {name: "", value: -4, type: , properties: ["": ]} -run/0: ingredient 0 is -4 -run/0: jumping to instruction 3 -run/0: instruction init-array/3 -run/0: {name: "curr-value", value: 2, type: 1, properties: ["curr-value": "location"]}, {name: "exists?", value: 3, type: 3, properties: ["exists?": "boolean"]} <- next-ingredient/30 -mem/0: storing 0 in location 1004 -run/0: instruction init-array/4 -run/0: break-unless/12 {name: "exists?", value: 3, type: 3, properties: ["exists?": "boolean"]}, {name: "", value: 2, type: , properties: ["": ]} -mem/0: location 1004 is 0 -run/0: ingredient 0 is 0 -run/0: ingredient 1 is -run/0: jumping to instruction 7 -run/0: instruction init-array/8 -run/0: {name: "result", value: 4, type: 2-5-1, properties: ["result": "address":"array":"location"]} <- new/44 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "capacity", value: 1, type: 1, properties: ["capacity": "integer"]} -mem/0: location 1002 is 3 -mem/0: array size is 3 -mem/0: new alloc: 1031 -mem/0: storing 1031 in location 1005 -run/0: instruction init-array/9 -run/0: rewind-ingredients/31 -run/0: instruction init-array/10 -run/0: {name: "i", value: 5, type: 1, properties: ["i": "integer"]} <- copy/1 {name: "0", value: 0, type: 0, properties: ["0": "literal"]} -run/0: ingredient 0 is 0 -mem/0: storing 0 in location 1006 -run/0: instruction init-array/12 -run/0: {name: "done?", value: 6, type: 3, properties: ["done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 5, type: 1, properties: ["i": "integer"]}, {name: "capacity", value: 1, type: 1, properties: ["capacity": "integer"]} -run/0: ingredient 0 is i -mem/0: location 1006 is 0 -run/0: ingredient 1 is capacity -mem/0: location 1002 is 3 -run/0: product 0 is 0 -mem/0: storing 0 in location 1007 -run/0: instruction init-array/13 -run/0: break-if/11 {name: "done?", value: 6, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 6, type: , properties: ["": ]} -mem/0: location 1007 is 0 -run/0: ingredient 0 is 0 -run/0: jump-if fell through -run/0: instruction init-array/14 -run/0: {name: "curr-value", value: 2, type: 1, properties: ["curr-value": "location"]}, {name: "exists?", value: 3, type: 3, properties: ["exists?": "boolean"]} <- next-ingredient/30 -run/0: product 0 is 0 -mem/0: storing 0 in location 1003 -mem/0: storing 1 in location 1004 -run/0: instruction init-array/15 -run/0: assert/19 {name: "exists?", value: 3, type: 3, properties: ["exists?": "boolean"]}, {name: "error in rewinding ingredients to init-array", value: 0, type: 0, properties: ["error in rewinding ingredients to init-array": "literal-string"]} -run/0: ingredient 0 is exists? -mem/0: location 1004 is 1 -run/0: instruction init-array/16 -run/0: {name: "tmp", value: 7, type: 2-1, properties: ["tmp": "address":"location"]} <- index-address/27 {name: "result", value: 4, type: 2-5-1, properties: ["result": "address":"array":"location", "deref": ]}, {name: "i", value: 5, type: 1, properties: ["i": "integer"]} -run/0: ingredient 0 is result -mem/0: location 1005 is 1031 -run/0: ingredient 1 is {name: "i", value: 5, type: 1, properties: ["i": "integer"]} -mem/0: location 1006 is 0 -run/0: address to copy is 1032 -run/0: product 0 is 1032 -mem/0: storing 1032 in location 1008 -run/0: instruction init-array/17 -run/0: {name: "tmp", value: 7, type: 2-1, properties: ["tmp": "address":"location", "deref": ]} <- copy/1 {name: "curr-value", value: 2, type: 1, properties: ["curr-value": "location"]} -run/0: ingredient 0 is curr-value -mem/0: location 1003 is 0 -mem/0: location 1008 is 1032 -mem/0: storing 0 in location 1032 -run/0: instruction init-array/18 -run/0: {name: "i", value: 5, type: 1, properties: ["i": "integer"]} <- add/2 {name: "i", value: 5, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is i -mem/0: location 1006 is 0 -run/0: ingredient 1 is 1 -run/0: product 0 is 1 -mem/0: storing 1 in location 1006 -run/0: instruction init-array/19 -run/0: loop/10 {name: "", value: -8, type: , properties: ["": ]} -run/0: ingredient 0 is -8 -run/0: jumping to instruction 12 -run/0: instruction init-array/12 -run/0: {name: "done?", value: 6, type: 3, properties: ["done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 5, type: 1, properties: ["i": "integer"]}, {name: "capacity", value: 1, type: 1, properties: ["capacity": "integer"]} -run/0: ingredient 0 is i -mem/0: location 1006 is 1 -run/0: ingredient 1 is capacity -mem/0: location 1002 is 3 -run/0: product 0 is 0 -mem/0: storing 0 in location 1007 -run/0: instruction init-array/13 -run/0: break-if/11 {name: "done?", value: 6, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 6, type: , properties: ["": ]} -mem/0: location 1007 is 0 -run/0: ingredient 0 is 0 -run/0: jump-if fell through -run/0: instruction init-array/14 -run/0: {name: "curr-value", value: 2, type: 1, properties: ["curr-value": "location"]}, {name: "exists?", value: 3, type: 3, properties: ["exists?": "boolean"]} <- next-ingredient/30 -run/0: product 0 is 1 -mem/0: storing 1 in location 1003 -mem/0: storing 1 in location 1004 -run/0: instruction init-array/15 -run/0: assert/19 {name: "exists?", value: 3, type: 3, properties: ["exists?": "boolean"]}, {name: "error in rewinding ingredients to init-array", value: 0, type: 0, properties: ["error in rewinding ingredients to init-array": "literal-string"]} -run/0: ingredient 0 is exists? -mem/0: location 1004 is 1 -run/0: instruction init-array/16 -run/0: {name: "tmp", value: 7, type: 2-1, properties: ["tmp": "address":"location"]} <- index-address/27 {name: "result", value: 4, type: 2-5-1, properties: ["result": "address":"array":"location", "deref": ]}, {name: "i", value: 5, type: 1, properties: ["i": "integer"]} -run/0: ingredient 0 is result -mem/0: location 1005 is 1031 -run/0: ingredient 1 is {name: "i", value: 5, type: 1, properties: ["i": "integer"]} -mem/0: location 1006 is 1 -run/0: address to copy is 1033 -run/0: product 0 is 1033 -mem/0: storing 1033 in location 1008 -run/0: instruction init-array/17 -run/0: {name: "tmp", value: 7, type: 2-1, properties: ["tmp": "address":"location", "deref": ]} <- copy/1 {name: "curr-value", value: 2, type: 1, properties: ["curr-value": "location"]} -run/0: ingredient 0 is curr-value -mem/0: location 1003 is 1 -mem/0: location 1008 is 1033 -mem/0: storing 1 in location 1033 -run/0: instruction init-array/18 -run/0: {name: "i", value: 5, type: 1, properties: ["i": "integer"]} <- add/2 {name: "i", value: 5, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is i -mem/0: location 1006 is 1 -run/0: ingredient 1 is 1 -run/0: product 0 is 2 -mem/0: storing 2 in location 1006 -run/0: instruction init-array/19 -run/0: loop/10 {name: "", value: -8, type: , properties: ["": ]} -run/0: ingredient 0 is -8 -run/0: jumping to instruction 12 -run/0: instruction init-array/12 -run/0: {name: "done?", value: 6, type: 3, properties: ["done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 5, type: 1, properties: ["i": "integer"]}, {name: "capacity", value: 1, type: 1, properties: ["capacity": "integer"]} -run/0: ingredient 0 is i -mem/0: location 1006 is 2 -run/0: ingredient 1 is capacity -mem/0: location 1002 is 3 -run/0: product 0 is 0 -mem/0: storing 0 in location 1007 -run/0: instruction init-array/13 -run/0: break-if/11 {name: "done?", value: 6, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 6, type: , properties: ["": ]} -mem/0: location 1007 is 0 -run/0: ingredient 0 is 0 -run/0: jump-if fell through -run/0: instruction init-array/14 -run/0: {name: "curr-value", value: 2, type: 1, properties: ["curr-value": "location"]}, {name: "exists?", value: 3, type: 3, properties: ["exists?": "boolean"]} <- next-ingredient/30 -run/0: product 0 is 2 -mem/0: storing 2 in location 1003 -mem/0: storing 1 in location 1004 -run/0: instruction init-array/15 -run/0: assert/19 {name: "exists?", value: 3, type: 3, properties: ["exists?": "boolean"]}, {name: "error in rewinding ingredients to init-array", value: 0, type: 0, properties: ["error in rewinding ingredients to init-array": "literal-string"]} -run/0: ingredient 0 is exists? -mem/0: location 1004 is 1 -run/0: instruction init-array/16 -run/0: {name: "tmp", value: 7, type: 2-1, properties: ["tmp": "address":"location"]} <- index-address/27 {name: "result", value: 4, type: 2-5-1, properties: ["result": "address":"array":"location", "deref": ]}, {name: "i", value: 5, type: 1, properties: ["i": "integer"]} -run/0: ingredient 0 is result -mem/0: location 1005 is 1031 -run/0: ingredient 1 is {name: "i", value: 5, type: 1, properties: ["i": "integer"]} -mem/0: location 1006 is 2 -run/0: address to copy is 1034 -run/0: product 0 is 1034 -mem/0: storing 1034 in location 1008 -run/0: instruction init-array/17 -run/0: {name: "tmp", value: 7, type: 2-1, properties: ["tmp": "address":"location", "deref": ]} <- copy/1 {name: "curr-value", value: 2, type: 1, properties: ["curr-value": "location"]} -run/0: ingredient 0 is curr-value -mem/0: location 1003 is 2 -mem/0: location 1008 is 1034 -mem/0: storing 2 in location 1034 -run/0: instruction init-array/18 -run/0: {name: "i", value: 5, type: 1, properties: ["i": "integer"]} <- add/2 {name: "i", value: 5, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is i -mem/0: location 1006 is 2 -run/0: ingredient 1 is 1 -run/0: product 0 is 3 -mem/0: storing 3 in location 1006 -run/0: instruction init-array/19 -run/0: loop/10 {name: "", value: -8, type: , properties: ["": ]} -run/0: ingredient 0 is -8 -run/0: jumping to instruction 12 -run/0: instruction init-array/12 -run/0: {name: "done?", value: 6, type: 3, properties: ["done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 5, type: 1, properties: ["i": "integer"]}, {name: "capacity", value: 1, type: 1, properties: ["capacity": "integer"]} -run/0: ingredient 0 is i -mem/0: location 1006 is 3 -run/0: ingredient 1 is capacity -mem/0: location 1002 is 3 -run/0: product 0 is 1 -mem/0: storing 1 in location 1007 -run/0: instruction init-array/13 -run/0: break-if/11 {name: "done?", value: 6, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 6, type: , properties: ["": ]} -mem/0: location 1007 is 1 -run/0: ingredient 0 is 1 -run/0: ingredient 1 is -run/0: jumping to instruction 20 -run/0: instruction init-array/21 -run/0: reply/33 {name: "result", value: 4, type: 2-5-1, properties: ["result": "address":"array":"location"]} -mem/0: location 1005 is 1031 -run/0: result 0 is 1031 -mem/0: storing 1031 in location 1 -run/0: instruction run1001/1 -run/0: {name: "2", value: 2, type: 5-1, properties: ["2": "array":"location"]} <- copy/1 {name: "1", value: 1, type: 2-5-1, properties: ["1": "address":"array":"location", "deref": ]} -run/0: ingredient 0 is 1 -mem/0: location 1 is 1031 -mem/0: location 1031 is 3 -mem/0: location 1032 is 0 -mem/0: location 1033 is 1 -mem/0: location 1034 is 2 -mem/0: storing 3 in location 2 -mem/0: storing 0 in location 3 -mem/0: storing 1 in location 4 -mem/0: storing 2 in location 5 -run/0: instruction array-from-args/1 -run/0: memory-should-contain/46 {name: " - 2 <- 3 # array length - 3 <- 0 - 4 <- 1 - 5 <- 2 - ", value: 0, type: 0, properties: [" - 2 <- 3 # array length - 3 <- 0 - 4 <- 1 - 5 <- 2 - ": "literal-string"]} -run/0: checking location 2 -run/0: checking location 3 -run/0: checking location 4 -run/0: checking location 5 diff --git a/cpp/.traces/array_length b/cpp/.traces/array_length deleted file mode 100644 index 514e67b5..00000000 --- a/cpp/.traces/array_length +++ /dev/null @@ -1,42 +0,0 @@ -parse/0: instruction: copy -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: copy -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: copy -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: copy -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: length -parse/0: ingredient: {name: "1", value: 0, type: 5-1, properties: ["1": "array":"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 ... -after-brace/0: copy ... -after-brace/0: copy ... -after-brace/0: length ... -new/0: routine allocated memory from 1000 to 101000 -schedule/0: main -run/0: instruction main/0 -run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- copy/1 {name: "3", value: 3, type: 0, properties: ["3": "literal"]} -run/0: ingredient 0 is 3 -mem/0: storing 3 in location 1 -run/0: instruction main/1 -run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- copy/1 {name: "14", value: 14, type: 0, properties: ["14": "literal"]} -run/0: ingredient 0 is 14 -mem/0: storing 14 in location 2 -run/0: instruction main/2 -run/0: {name: "3", value: 3, type: 1, properties: ["3": "integer"]} <- copy/1 {name: "15", value: 15, type: 0, properties: ["15": "literal"]} -run/0: ingredient 0 is 15 -mem/0: storing 15 in location 3 -run/0: instruction main/3 -run/0: {name: "4", value: 4, type: 1, properties: ["4": "integer"]} <- copy/1 {name: "16", value: 16, type: 0, properties: ["16": "literal"]} -run/0: ingredient 0 is 16 -mem/0: storing 16 in location 4 -run/0: instruction main/4 -run/0: {name: "5", value: 5, type: 1, properties: ["5": "integer"]} <- length/28 {name: "1", value: 1, type: 5-1, properties: ["1": "array":"integer"]} -mem/0: storing 3 in location 5 diff --git a/cpp/.traces/assert b/cpp/.traces/assert deleted file mode 100644 index 74ca6ecf..00000000 --- a/cpp/.traces/assert +++ /dev/null @@ -1,11 +0,0 @@ -parse/0: instruction: assert -parse/0: ingredient: {name: "0", value: 0, type: 0, properties: ["0": "literal"]} -parse/0: ingredient: {name: "this is an assert in mu", value: 0, type: 0, properties: ["this is an assert in mu": "literal-string"]} -after-brace/0: recipe main -after-brace/0: assert ... -new/0: routine allocated memory from 1000 to 101000 -schedule/0: main -run/0: instruction main/0 -run/0: assert/19 {name: "0", value: 0, type: 0, properties: ["0": "literal"]}, {name: "this is an assert in mu", value: 0, type: 0, properties: ["this is an assert in mu": "literal-string"]} -run/0: ingredient 0 is 0 -warn/0: this is an assert in mu diff --git a/cpp/.traces/brace_conversion b/cpp/.traces/brace_conversion deleted file mode 100644 index 99c3b723..00000000 --- a/cpp/.traces/brace_conversion +++ /dev/null @@ -1,11 +0,0 @@ -parse/0: label: { -parse/0: instruction: break -parse/0: instruction: copy -parse/0: ingredient: {name: "0", value: 0, type: 0, properties: ["0": "literal"]} -parse/0: product: {name: "1", value: 0, type: 1, properties: ["1": "integer"]} -parse/0: label: } -brace/0: 1000: push (open, 0) -brace/0: push (close, 3) -after-brace/0: recipe main -after-brace/0: jump 1:offset -after-brace/0: copy ... diff --git a/cpp/.traces/brace_conversion_and_run b/cpp/.traces/brace_conversion_and_run deleted file mode 100644 index 172de7f0..00000000 --- a/cpp/.traces/brace_conversion_and_run +++ /dev/null @@ -1,195 +0,0 @@ -parse/0: instruction: copy -parse/0: ingredient: {name: "5", value: 0, type: 0, properties: ["5": "literal"]} -parse/0: product: {name: "1", value: 0, type: 1, properties: ["1": "integer"]} -parse/0: instruction: copy -parse/0: ingredient: {name: "1", value: 0, type: 0, properties: ["1": "literal"]} -parse/0: product: {name: "2", value: 0, type: 1, properties: ["2": "integer"]} -parse/0: label: { -parse/0: instruction: equal -parse/0: ingredient: {name: "1", value: 0, type: 1, properties: ["1": "integer"]} -parse/0: ingredient: {name: "1", value: 0, type: 0, properties: ["1": "literal"]} -parse/0: product: {name: "3", value: 0, type: 3, properties: ["3": "boolean"]} -parse/0: instruction: break-if -parse/0: ingredient: {name: "3", value: 0, type: 3, properties: ["3": "boolean"]} -parse/0: instruction: multiply -parse/0: ingredient: {name: "2", value: 0, 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"]} -parse/0: instruction: subtract -parse/0: ingredient: {name: "1", value: 0, 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: loop -parse/0: label: } -parse/0: instruction: copy -parse/0: ingredient: {name: "2", value: 0, type: 1, properties: ["2": "integer"]} -parse/0: product: {name: "4", value: 0, type: 1, properties: ["4": "integer"]} -brace/0: 1000: push (open, 2) -brace/0: push (close, 8) -after-brace/0: recipe test-factorial -after-brace/0: copy ... -after-brace/0: copy ... -after-brace/0: equal ... -after-brace/0: jump-if 3, 3:offset -after-brace/0: multiply ... -after-brace/0: subtract ... -after-brace/0: jump -5:offset -after-brace/0: 7: {name: "", value: -5, type: , properties: ["": ]} -after-brace/0: 7: {name: "", value: -5, type: , properties: ["": ]} -after-brace/0: copy ... -new/0: routine allocated memory from 1000 to 101000 -schedule/0: test-factorial -run/0: instruction test-factorial/0 -run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- copy/1 {name: "5", value: 5, type: 0, properties: ["5": "literal"]} -run/0: ingredient 0 is 5 -mem/0: storing 5 in location 1 -run/0: instruction test-factorial/1 -run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- copy/1 {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is 1 -mem/0: storing 1 in location 2 -run/0: instruction test-factorial/3 -run/0: {name: "3", value: 3, type: 3, properties: ["3": "boolean"]} <- equal/13 {name: "1", value: 1, type: 1, properties: ["1": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is 1 -mem/0: location 1 is 5 -run/0: ingredient 1 is 1 -run/0: product 0 is 0 -mem/0: storing 0 in location 3 -run/0: instruction test-factorial/4 -run/0: break-if/11 {name: "3", value: 3, type: 3, properties: ["3": "boolean"]}, {name: "", value: 3, type: , properties: ["": ]} -mem/0: location 3 is 0 -run/0: ingredient 0 is 0 -run/0: jump-if fell through -run/0: instruction test-factorial/5 -run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- multiply/4 {name: "2", value: 2, type: 1, properties: ["2": "integer"]}, {name: "1", value: 1, type: 1, properties: ["1": "integer"]} -run/0: ingredient 0 is 2 -mem/0: location 2 is 1 -run/0: ingredient 1 is 1 -mem/0: location 1 is 5 -run/0: ingredient 1 is 5 -run/0: product 0 is 5 -mem/0: storing 5 in location 2 -run/0: instruction test-factorial/6 -run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- subtract/3 {name: "1", value: 1, type: 1, properties: ["1": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is 1 -mem/0: location 1 is 5 -run/0: ingredient 1 is 1 -run/0: product 0 is 4 -mem/0: storing 4 in location 1 -run/0: instruction test-factorial/7 -run/0: loop/10 {name: "", value: -5, type: , properties: ["": ]} -run/0: ingredient 0 is -5 -run/0: jumping to instruction 3 -run/0: instruction test-factorial/3 -run/0: {name: "3", value: 3, type: 3, properties: ["3": "boolean"]} <- equal/13 {name: "1", value: 1, type: 1, properties: ["1": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is 1 -mem/0: location 1 is 4 -run/0: ingredient 1 is 1 -run/0: product 0 is 0 -mem/0: storing 0 in location 3 -run/0: instruction test-factorial/4 -run/0: break-if/11 {name: "3", value: 3, type: 3, properties: ["3": "boolean"]}, {name: "", value: 3, type: , properties: ["": ]} -mem/0: location 3 is 0 -run/0: ingredient 0 is 0 -run/0: jump-if fell through -run/0: instruction test-factorial/5 -run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- multiply/4 {name: "2", value: 2, type: 1, properties: ["2": "integer"]}, {name: "1", value: 1, type: 1, properties: ["1": "integer"]} -run/0: ingredient 0 is 2 -mem/0: location 2 is 5 -run/0: ingredient 1 is 1 -mem/0: location 1 is 4 -run/0: ingredient 1 is 4 -run/0: product 0 is 20 -mem/0: storing 20 in location 2 -run/0: instruction test-factorial/6 -run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- subtract/3 {name: "1", value: 1, type: 1, properties: ["1": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is 1 -mem/0: location 1 is 4 -run/0: ingredient 1 is 1 -run/0: product 0 is 3 -mem/0: storing 3 in location 1 -run/0: instruction test-factorial/7 -run/0: loop/10 {name: "", value: -5, type: , properties: ["": ]} -run/0: ingredient 0 is -5 -run/0: jumping to instruction 3 -run/0: instruction test-factorial/3 -run/0: {name: "3", value: 3, type: 3, properties: ["3": "boolean"]} <- equal/13 {name: "1", value: 1, type: 1, properties: ["1": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is 1 -mem/0: location 1 is 3 -run/0: ingredient 1 is 1 -run/0: product 0 is 0 -mem/0: storing 0 in location 3 -run/0: instruction test-factorial/4 -run/0: break-if/11 {name: "3", value: 3, type: 3, properties: ["3": "boolean"]}, {name: "", value: 3, type: , properties: ["": ]} -mem/0: location 3 is 0 -run/0: ingredient 0 is 0 -run/0: jump-if fell through -run/0: instruction test-factorial/5 -run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- multiply/4 {name: "2", value: 2, type: 1, properties: ["2": "integer"]}, {name: "1", value: 1, type: 1, properties: ["1": "integer"]} -run/0: ingredient 0 is 2 -mem/0: location 2 is 20 -run/0: ingredient 1 is 1 -mem/0: location 1 is 3 -run/0: ingredient 1 is 3 -run/0: product 0 is 60 -mem/0: storing 60 in location 2 -run/0: instruction test-factorial/6 -run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- subtract/3 {name: "1", value: 1, type: 1, properties: ["1": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is 1 -mem/0: location 1 is 3 -run/0: ingredient 1 is 1 -run/0: product 0 is 2 -mem/0: storing 2 in location 1 -run/0: instruction test-factorial/7 -run/0: loop/10 {name: "", value: -5, type: , properties: ["": ]} -run/0: ingredient 0 is -5 -run/0: jumping to instruction 3 -run/0: instruction test-factorial/3 -run/0: {name: "3", value: 3, type: 3, properties: ["3": "boolean"]} <- equal/13 {name: "1", value: 1, type: 1, properties: ["1": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is 1 -mem/0: location 1 is 2 -run/0: ingredient 1 is 1 -run/0: product 0 is 0 -mem/0: storing 0 in location 3 -run/0: instruction test-factorial/4 -run/0: break-if/11 {name: "3", value: 3, type: 3, properties: ["3": "boolean"]}, {name: "", value: 3, type: , properties: ["": ]} -mem/0: location 3 is 0 -run/0: ingredient 0 is 0 -run/0: jump-if fell through -run/0: instruction test-factorial/5 -run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- multiply/4 {name: "2", value: 2, type: 1, properties: ["2": "integer"]}, {name: "1", value: 1, type: 1, properties: ["1": "integer"]} -run/0: ingredient 0 is 2 -mem/0: location 2 is 60 -run/0: ingredient 1 is 1 -mem/0: location 1 is 2 -run/0: ingredient 1 is 2 -run/0: product 0 is 120 -mem/0: storing 120 in location 2 -run/0: instruction test-factorial/6 -run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- subtract/3 {name: "1", value: 1, type: 1, properties: ["1": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is 1 -mem/0: location 1 is 2 -run/0: ingredient 1 is 1 -run/0: product 0 is 1 -mem/0: storing 1 in location 1 -run/0: instruction test-factorial/7 -run/0: loop/10 {name: "", value: -5, type: , properties: ["": ]} -run/0: ingredient 0 is -5 -run/0: jumping to instruction 3 -run/0: instruction test-factorial/3 -run/0: {name: "3", value: 3, type: 3, properties: ["3": "boolean"]} <- equal/13 {name: "1", value: 1, type: 1, properties: ["1": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is 1 -mem/0: location 1 is 1 -run/0: ingredient 1 is 1 -run/0: product 0 is 1 -mem/0: storing 1 in location 3 -run/0: instruction test-factorial/4 -run/0: break-if/11 {name: "3", value: 3, type: 3, properties: ["3": "boolean"]}, {name: "", value: 3, type: , properties: ["": ]} -mem/0: location 3 is 1 -run/0: ingredient 0 is 1 -run/0: ingredient 1 is -run/0: jumping to instruction 8 -run/0: instruction test-factorial/9 -run/0: {name: "4", value: 4, type: 1, properties: ["4": "integer"]} <- copy/1 {name: "2", value: 2, type: 1, properties: ["2": "integer"]} -run/0: ingredient 0 is 2 -mem/0: location 2 is 120 -mem/0: storing 120 in location 4 diff --git a/cpp/.traces/break_cascading b/cpp/.traces/break_cascading deleted file mode 100644 index c9c2dedd..00000000 --- a/cpp/.traces/break_cascading +++ /dev/null @@ -1,17 +0,0 @@ -parse/0: instruction: copy -parse/0: ingredient: {name: "0", value: 0, type: 0, properties: ["0": "literal"]} -parse/0: product: {name: "1", value: 0, type: 1, properties: ["1": "integer"]} -parse/0: label: { -parse/0: instruction: break -parse/0: label: } -parse/0: label: { -parse/0: instruction: break -parse/0: label: } -brace/0: 1000: push (open, 1) -brace/0: push (close, 3) -brace/0: 1000: push (open, 4) -brace/0: push (close, 6) -after-brace/0: recipe main -after-brace/0: copy ... -after-brace/0: jump 0:offset -after-brace/0: jump 0:offset diff --git a/cpp/.traces/break_cascading2 b/cpp/.traces/break_cascading2 deleted file mode 100644 index 636bf3d4..00000000 --- a/cpp/.traces/break_cascading2 +++ /dev/null @@ -1,25 +0,0 @@ -parse/0: instruction: copy -parse/0: ingredient: {name: "0", value: 0, type: 0, properties: ["0": "literal"]} -parse/0: product: {name: "1", value: 0, type: 1, properties: ["1": "integer"]} -parse/0: instruction: copy -parse/0: ingredient: {name: "0", value: 0, type: 0, properties: ["0": "literal"]} -parse/0: product: {name: "2", value: 0, type: 1, properties: ["2": "integer"]} -parse/0: label: { -parse/0: instruction: break -parse/0: instruction: copy -parse/0: ingredient: {name: "0", value: 0, type: 0, properties: ["0": "literal"]} -parse/0: product: {name: "3", value: 0, type: 1, properties: ["3": "integer"]} -parse/0: label: } -parse/0: label: { -parse/0: instruction: break -parse/0: label: } -brace/0: 1000: push (open, 2) -brace/0: push (close, 5) -brace/0: 1000: push (open, 6) -brace/0: push (close, 8) -after-brace/0: recipe main -after-brace/0: copy ... -after-brace/0: copy ... -after-brace/0: jump 1:offset -after-brace/0: copy ... -after-brace/0: jump 0:offset diff --git a/cpp/.traces/break_empty_block b/cpp/.traces/break_empty_block deleted file mode 100644 index f31738bb..00000000 --- a/cpp/.traces/break_empty_block +++ /dev/null @@ -1,11 +0,0 @@ -parse/0: instruction: copy -parse/0: ingredient: {name: "0", value: 0, type: 0, properties: ["0": "literal"]} -parse/0: product: {name: "1", value: 0, type: 1, properties: ["1": "integer"]} -parse/0: label: { -parse/0: instruction: break -parse/0: label: } -brace/0: 1000: push (open, 1) -brace/0: push (close, 3) -after-brace/0: recipe main -after-brace/0: copy ... -after-brace/0: jump 0:offset diff --git a/cpp/.traces/break_if b/cpp/.traces/break_if deleted file mode 100644 index 109f95f4..00000000 --- a/cpp/.traces/break_if +++ /dev/null @@ -1,26 +0,0 @@ -parse/0: instruction: copy -parse/0: ingredient: {name: "0", value: 0, type: 0, properties: ["0": "literal"]} -parse/0: product: {name: "1", value: 0, type: 1, properties: ["1": "integer"]} -parse/0: instruction: copy -parse/0: ingredient: {name: "0", value: 0, type: 0, properties: ["0": "literal"]} -parse/0: product: {name: "2", value: 0, type: 1, properties: ["2": "integer"]} -parse/0: label: { -parse/0: instruction: break-if -parse/0: ingredient: {name: "2", value: 0, type: 1, properties: ["2": "integer"]} -parse/0: instruction: copy -parse/0: ingredient: {name: "0", value: 0, type: 0, properties: ["0": "literal"]} -parse/0: product: {name: "3", value: 0, type: 1, properties: ["3": "integer"]} -parse/0: label: } -parse/0: label: { -parse/0: instruction: break -parse/0: label: } -brace/0: 1000: push (open, 2) -brace/0: push (close, 5) -brace/0: 1000: push (open, 6) -brace/0: push (close, 8) -after-brace/0: recipe main -after-brace/0: copy ... -after-brace/0: copy ... -after-brace/0: jump-if 2, 1:offset -after-brace/0: copy ... -after-brace/0: jump 0:offset diff --git a/cpp/.traces/break_label b/cpp/.traces/break_label deleted file mode 100644 index 5dc39132..00000000 --- a/cpp/.traces/break_label +++ /dev/null @@ -1,12 +0,0 @@ -parse/0: instruction: copy -parse/0: ingredient: {name: "0", value: 0, type: 0, properties: ["0": "literal"]} -parse/0: product: {name: "1", value: 0, type: 1, properties: ["1": "integer"]} -parse/0: label: { -parse/0: instruction: break -parse/0: ingredient: {name: "+foo", value: 0, type: 0, properties: ["+foo": "offset"]} -parse/0: label: } -brace/0: 1000: push (open, 1) -brace/0: push (close, 3) -after-brace/0: recipe main -after-brace/0: copy ... -after-brace/0: jump +foo:offset diff --git a/cpp/.traces/break_nested b/cpp/.traces/break_nested deleted file mode 100644 index 088b4742..00000000 --- a/cpp/.traces/break_nested +++ /dev/null @@ -1,27 +0,0 @@ -parse/0: instruction: copy -parse/0: ingredient: {name: "0", value: 0, type: 0, properties: ["0": "literal"]} -parse/0: product: {name: "1", value: 0, type: 1, properties: ["1": "integer"]} -parse/0: label: { -parse/0: instruction: copy -parse/0: ingredient: {name: "0", value: 0, type: 0, properties: ["0": "literal"]} -parse/0: product: {name: "2", value: 0, type: 1, properties: ["2": "integer"]} -parse/0: instruction: break -parse/0: label: { -parse/0: instruction: copy -parse/0: ingredient: {name: "0", value: 0, type: 0, properties: ["0": "literal"]} -parse/0: product: {name: "3", value: 0, type: 1, properties: ["3": "integer"]} -parse/0: label: } -parse/0: instruction: copy -parse/0: ingredient: {name: "0", value: 0, type: 0, properties: ["0": "literal"]} -parse/0: product: {name: "4", value: 0, type: 1, properties: ["4": "integer"]} -parse/0: label: } -brace/0: 1000: push (open, 1) -brace/0: 1000: push (open, 4) -brace/0: push (close, 6) -brace/0: push (close, 8) -after-brace/0: recipe main -after-brace/0: copy ... -after-brace/0: copy ... -after-brace/0: jump 4:offset -after-brace/0: copy ... -after-brace/0: copy ... diff --git a/cpp/.traces/break_nested_degenerate b/cpp/.traces/break_nested_degenerate deleted file mode 100644 index 649afcdb..00000000 --- a/cpp/.traces/break_nested_degenerate +++ /dev/null @@ -1,23 +0,0 @@ -parse/0: instruction: copy -parse/0: ingredient: {name: "0", value: 0, type: 0, properties: ["0": "literal"]} -parse/0: product: {name: "1", value: 0, type: 1, properties: ["1": "integer"]} -parse/0: label: { -parse/0: instruction: copy -parse/0: ingredient: {name: "0", value: 0, type: 0, properties: ["0": "literal"]} -parse/0: product: {name: "2", value: 0, type: 1, properties: ["2": "integer"]} -parse/0: instruction: break -parse/0: label: { -parse/0: label: } -parse/0: instruction: copy -parse/0: ingredient: {name: "0", value: 0, type: 0, properties: ["0": "literal"]} -parse/0: product: {name: "4", value: 0, type: 1, properties: ["4": "integer"]} -parse/0: label: } -brace/0: 1000: push (open, 1) -brace/0: 1000: push (open, 4) -brace/0: push (close, 5) -brace/0: push (close, 7) -after-brace/0: recipe main -after-brace/0: copy ... -after-brace/0: copy ... -after-brace/0: jump 3:offset -after-brace/0: copy ... diff --git a/cpp/.traces/break_nested_degenerate2 b/cpp/.traces/break_nested_degenerate2 deleted file mode 100644 index 46a5d360..00000000 --- a/cpp/.traces/break_nested_degenerate2 +++ /dev/null @@ -1,19 +0,0 @@ -parse/0: instruction: copy -parse/0: ingredient: {name: "0", value: 0, type: 0, properties: ["0": "literal"]} -parse/0: product: {name: "1", value: 0, type: 1, properties: ["1": "integer"]} -parse/0: label: { -parse/0: instruction: copy -parse/0: ingredient: {name: "0", value: 0, type: 0, properties: ["0": "literal"]} -parse/0: product: {name: "2", value: 0, type: 1, properties: ["2": "integer"]} -parse/0: instruction: break -parse/0: label: { -parse/0: label: } -parse/0: label: } -brace/0: 1000: push (open, 1) -brace/0: 1000: push (open, 4) -brace/0: push (close, 5) -brace/0: push (close, 6) -after-brace/0: recipe main -after-brace/0: copy ... -after-brace/0: copy ... -after-brace/0: jump 2:offset diff --git a/cpp/.traces/break_unless b/cpp/.traces/break_unless deleted file mode 100644 index 059b99ca..00000000 --- a/cpp/.traces/break_unless +++ /dev/null @@ -1,20 +0,0 @@ -parse/0: instruction: copy -parse/0: ingredient: {name: "0", value: 0, type: 0, properties: ["0": "literal"]} -parse/0: product: {name: "1", value: 0, type: 1, properties: ["1": "integer"]} -parse/0: instruction: copy -parse/0: ingredient: {name: "0", value: 0, type: 0, properties: ["0": "literal"]} -parse/0: product: {name: "2", value: 0, type: 1, properties: ["2": "integer"]} -parse/0: label: { -parse/0: instruction: break-unless -parse/0: ingredient: {name: "2", value: 0, type: 1, properties: ["2": "integer"]} -parse/0: instruction: copy -parse/0: ingredient: {name: "0", value: 0, type: 0, properties: ["0": "literal"]} -parse/0: product: {name: "3", value: 0, type: 1, properties: ["3": "integer"]} -parse/0: label: } -brace/0: 1000: push (open, 2) -brace/0: push (close, 5) -after-brace/0: recipe main -after-brace/0: copy ... -after-brace/0: copy ... -after-brace/0: jump-unless 2, 1:offset -after-brace/0: copy ... diff --git a/cpp/.traces/buffer-append-works b/cpp/.traces/buffer-append-works deleted file mode 100644 index e60333a7..00000000 --- a/cpp/.traces/buffer-append-works +++ /dev/null @@ -1,1146 +0,0 @@ -parse/0: instruction: run -parse/0: ingredient: {name: " - default-space:address:array:location <- new location:type, 30:literal - x:address:buffer <- init-buffer 3:literal - s1:address:array:character <- get x:address:buffer/deref, data:offset - x:address:buffer <- buffer-append x:address:buffer, 97:literal # 'a' - x:address:buffer <- buffer-append x:address:buffer, 98:literal # 'b' - x:address:buffer <- buffer-append x:address:buffer, 99:literal # 'c' - s2:address:array:character <- get x:address:buffer/deref, data:offset - 1:boolean/raw <- equal s1:address:array:character, s2:address:array:character -#? $print s2:address:array:character -#? $print [ -#? ] -#? $print 1060:integer/raw -#? $print [ -#? ] -#? $print 1061:integer/raw -#? $print [ -#? ] -#? $print 1062:integer/raw -#? $print [ -#? ] -#? $print 1063:integer/raw -#? $print [ -#? ] -#? $print 1064:integer/raw -#? $print [ -#? ] -#? $print 1065:integer/raw -#? $print [ -#? ] - 2:array:character/raw <- copy s2:address:array:character/deref - +buffer-filled - x:address:buffer <- buffer-append x:address:buffer, 100:literal # 'd' - s3:address:array:character <- get x:address:buffer/deref, data:offset - 10:boolean/raw <- equal s1:address:array:character, s3:address:array:character - 11:integer/raw <- get x:address:buffer/deref, length:offset - 12:array:character/raw <- copy s3:address:array:character/deref - ", value: 0, type: 0, properties: [" - default-space:address:array:location <- new location:type, 30:literal - x:address:buffer <- init-buffer 3:literal - s1:address:array:character <- get x:address:buffer/deref, data:offset - x:address:buffer <- buffer-append x:address:buffer, 97:literal # 'a' - x:address:buffer <- buffer-append x:address:buffer, 98:literal # 'b' - x:address:buffer <- buffer-append x:address:buffer, 99:literal # 'c' - s2:address:array:character <- get x:address:buffer/deref, data:offset - 1:boolean/raw <- equal s1:address:array:character, s2:address:array:character -#? $print s2:address:array:character -#? $print [ -#? ] -#? $print 1060:integer/raw -#? $print [ -#? ] -#? $print 1061:integer/raw -#? $print [ -#? ] -#? $print 1062:integer/raw -#? $print [ -#? ] -#? $print 1063:integer/raw -#? $print [ -#? ] -#? $print 1064:integer/raw -#? $print [ -#? ] -#? $print 1065:integer/raw -#? $print [ -#? ] - 2:array:character/raw <- copy s2:address:array:character/deref - +buffer-filled - x:address:buffer <- buffer-append x:address:buffer, 100:literal # 'd' - s3:address:array:character <- get x:address:buffer/deref, data:offset - 10:boolean/raw <- equal s1:address:array:character, s3:address:array:character - 11:integer/raw <- get x:address:buffer/deref, length:offset - 12:array:character/raw <- copy s3:address:array:character/deref - ": "literal-string"]} -parse/0: instruction: memory-should-contain -parse/0: ingredient: {name: " - # before +buffer-filled - 1 <- 1 # no change in data pointer - 2 <- 3 # size of data - 3 <- 97 # data - 4 <- 98 - 5 <- 99 - # in the end - 10 <- 0 # data pointer has grown - 11 <- 4 # final length - 12 <- 6 # but data's capacity has doubled - 13 <- 97 # data - 14 <- 98 - 15 <- 99 - 16 <- 100 - 17 <- 0 - 18 <- 0 - ", value: 0, type: 0, properties: [" - # before +buffer-filled - 1 <- 1 # no change in data pointer - 2 <- 3 # size of data - 3 <- 97 # data - 4 <- 98 - 5 <- 99 - # in the end - 10 <- 0 # data pointer has grown - 11 <- 4 # final length - 12 <- 6 # but data's capacity has doubled - 13 <- 97 # data - 14 <- 98 - 15 <- 99 - 16 <- 100 - 17 <- 0 - 18 <- 0 - ": "literal-string"]} -after-brace/0: recipe buffer-append-works -after-brace/0: run ... -after-brace/0: memory-should-contain ... -new/0: routine allocated memory from 1000 to 101000 -schedule/0: buffer-append-works -run/0: instruction buffer-append-works/0 -run/0: run/45 {name: " - default-space:address:array:location <- new location:type, 30:literal - x:address:buffer <- init-buffer 3:literal - s1:address:array:character <- get x:address:buffer/deref, data:offset - x:address:buffer <- buffer-append x:address:buffer, 97:literal # 'a' - x:address:buffer <- buffer-append x:address:buffer, 98:literal # 'b' - x:address:buffer <- buffer-append x:address:buffer, 99:literal # 'c' - s2:address:array:character <- get x:address:buffer/deref, data:offset - 1:boolean/raw <- equal s1:address:array:character, s2:address:array:character -#? $print s2:address:array:character -#? $print [ -#? ] -#? $print 1060:integer/raw -#? $print [ -#? ] -#? $print 1061:integer/raw -#? $print [ -#? ] -#? $print 1062:integer/raw -#? $print [ -#? ] -#? $print 1063:integer/raw -#? $print [ -#? ] -#? $print 1064:integer/raw -#? $print [ -#? ] -#? $print 1065:integer/raw -#? $print [ -#? ] - 2:array:character/raw <- copy s2:address:array:character/deref - +buffer-filled - x:address:buffer <- buffer-append x:address:buffer, 100:literal # 'd' - s3:address:array:character <- get x:address:buffer/deref, data:offset - 10:boolean/raw <- equal s1:address:array:character, s3:address:array:character - 11:integer/raw <- get x:address:buffer/deref, length:offset - 12:array:character/raw <- copy s3:address:array:character/deref - ", value: 0, type: 0, properties: [" - default-space:address:array:location <- new location:type, 30:literal - x:address:buffer <- init-buffer 3:literal - s1:address:array:character <- get x:address:buffer/deref, data:offset - x:address:buffer <- buffer-append x:address:buffer, 97:literal # 'a' - x:address:buffer <- buffer-append x:address:buffer, 98:literal # 'b' - x:address:buffer <- buffer-append x:address:buffer, 99:literal # 'c' - s2:address:array:character <- get x:address:buffer/deref, data:offset - 1:boolean/raw <- equal s1:address:array:character, s2:address:array:character -#? $print s2:address:array:character -#? $print [ -#? ] -#? $print 1060:integer/raw -#? $print [ -#? ] -#? $print 1061:integer/raw -#? $print [ -#? ] -#? $print 1062:integer/raw -#? $print [ -#? ] -#? $print 1063:integer/raw -#? $print [ -#? ] -#? $print 1064:integer/raw -#? $print [ -#? ] -#? $print 1065:integer/raw -#? $print [ -#? ] - 2:array:character/raw <- copy s2:address:array:character/deref - +buffer-filled - x:address:buffer <- buffer-append x:address:buffer, 100:literal # 'd' - s3:address:array:character <- get x:address:buffer/deref, data:offset - 10:boolean/raw <- equal s1:address:array:character, s3:address:array:character - 11:integer/raw <- get x:address:buffer/deref, length:offset - 12:array:character/raw <- copy s3:address:array:character/deref - ": "literal-string"]} -parse/0: instruction: new -parse/0: ingredient: {name: "location", value: 0, type: 0, properties: ["location": "type"]} -parse/0: ingredient: {name: "30", value: 0, type: 0, properties: ["30": "literal"]} -parse/0: product: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} -parse/0: instruction: init-buffer -parse/0: ingredient: {name: "3", value: 0, type: 0, properties: ["3": "literal"]} -parse/0: product: {name: "x", value: 0, type: 2-9, properties: ["x": "address":"buffer"]} -parse/0: instruction: get -parse/0: ingredient: {name: "x", value: 0, type: 2-9, properties: ["x": "address":"buffer", "deref": ]} -parse/0: ingredient: {name: "data", value: 0, type: 0, properties: ["data": "offset"]} -parse/0: product: {name: "s1", value: 0, type: 2-5-4, properties: ["s1": "address":"array":"character"]} -parse/0: instruction: buffer-append -parse/0: ingredient: {name: "x", value: 0, type: 2-9, properties: ["x": "address":"buffer"]} -parse/0: ingredient: {name: "97", value: 0, type: 0, properties: ["97": "literal"]} -parse/0: product: {name: "x", value: 0, type: 2-9, properties: ["x": "address":"buffer"]} -parse/0: instruction: buffer-append -parse/0: ingredient: {name: "x", value: 0, type: 2-9, properties: ["x": "address":"buffer"]} -parse/0: ingredient: {name: "98", value: 0, type: 0, properties: ["98": "literal"]} -parse/0: product: {name: "x", value: 0, type: 2-9, properties: ["x": "address":"buffer"]} -parse/0: instruction: buffer-append -parse/0: ingredient: {name: "x", value: 0, type: 2-9, properties: ["x": "address":"buffer"]} -parse/0: ingredient: {name: "99", value: 0, type: 0, properties: ["99": "literal"]} -parse/0: product: {name: "x", value: 0, type: 2-9, properties: ["x": "address":"buffer"]} -parse/0: instruction: get -parse/0: ingredient: {name: "x", value: 0, type: 2-9, properties: ["x": "address":"buffer", "deref": ]} -parse/0: ingredient: {name: "data", value: 0, type: 0, properties: ["data": "offset"]} -parse/0: product: {name: "s2", value: 0, type: 2-5-4, properties: ["s2": "address":"array":"character"]} -parse/0: instruction: equal -parse/0: ingredient: {name: "s1", value: 0, type: 2-5-4, properties: ["s1": "address":"array":"character"]} -parse/0: ingredient: {name: "s2", value: 0, type: 2-5-4, properties: ["s2": "address":"array":"character"]} -parse/0: product: {name: "1", value: 0, type: 3, properties: ["1": "boolean", "raw": ]} -parse/0: instruction: copy -parse/0: ingredient: {name: "s2", value: 0, type: 2-5-4, properties: ["s2": "address":"array":"character", "deref": ]} -parse/0: product: {name: "2", value: 0, type: 5-4, properties: ["2": "array":"character", "raw": ]} -parse/0: label: +buffer-filled -parse/0: instruction: buffer-append -parse/0: ingredient: {name: "x", value: 0, type: 2-9, properties: ["x": "address":"buffer"]} -parse/0: ingredient: {name: "100", value: 0, type: 0, properties: ["100": "literal"]} -parse/0: product: {name: "x", value: 0, type: 2-9, properties: ["x": "address":"buffer"]} -parse/0: instruction: get -parse/0: ingredient: {name: "x", value: 0, type: 2-9, properties: ["x": "address":"buffer", "deref": ]} -parse/0: ingredient: {name: "data", value: 0, type: 0, properties: ["data": "offset"]} -parse/0: product: {name: "s3", value: 0, type: 2-5-4, properties: ["s3": "address":"array":"character"]} -parse/0: instruction: equal -parse/0: ingredient: {name: "s1", value: 0, type: 2-5-4, properties: ["s1": "address":"array":"character"]} -parse/0: ingredient: {name: "s3", value: 0, type: 2-5-4, properties: ["s3": "address":"array":"character"]} -parse/0: product: {name: "10", value: 0, type: 3, properties: ["10": "boolean", "raw": ]} -parse/0: instruction: get -parse/0: ingredient: {name: "x", value: 0, type: 2-9, properties: ["x": "address":"buffer", "deref": ]} -parse/0: ingredient: {name: "length", value: 0, type: 0, properties: ["length": "offset"]} -parse/0: product: {name: "11", value: 0, type: 1, properties: ["11": "integer", "raw": ]} -parse/0: instruction: copy -parse/0: ingredient: {name: "s3", value: 0, type: 2-5-4, properties: ["s3": "address":"array":"character", "deref": ]} -parse/0: product: {name: "12", value: 0, type: 5-4, properties: ["12": "array":"character", "raw": ]} -new/0: location -> 1 -name/0: assign x 1 -name/0: element data of type buffer is at offset 1 -name/0: assign s1 2 -name/0: element data of type buffer is at offset 1 -name/0: assign s2 3 -name/0: element data of type buffer is at offset 1 -name/0: assign s3 4 -name/0: element length of type buffer is at offset 0 -after-brace/0: recipe run1001 -after-brace/0: new ... -after-brace/0: init-buffer ... -after-brace/0: get ... -after-brace/0: buffer-append ... -after-brace/0: buffer-append ... -after-brace/0: buffer-append ... -after-brace/0: get ... -after-brace/0: equal ... -after-brace/0: copy ... -after-brace/0: buffer-append ... -after-brace/0: get ... -after-brace/0: equal ... -after-brace/0: get ... -after-brace/0: copy ... -run/0: instruction run1001/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/44 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} -mem/0: array size is 30 -mem/0: new alloc: 1000 -run/0: instruction run1001/1 -run/0: {name: "x", value: 1, type: 2-9, properties: ["x": "address":"buffer"]} <- init-buffer/101 {name: "3", value: 3, type: 0, properties: ["3": "literal"]} -run/0: instruction init-buffer/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/44 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} -mem/0: array size is 30 -mem/0: new alloc: 1031 -run/0: instruction init-buffer/1 -run/0: {name: "result", value: 1, type: 2-9, properties: ["result": "address":"buffer"]} <- new/44 {name: "buffer", value: 9, type: 0, properties: ["buffer": "type"]} -mem/0: new alloc: 1062 -mem/0: storing 1062 in location 1033 -run/0: instruction init-buffer/2 -run/0: {name: "len", value: 2, type: 2-1, properties: ["len": "address":"integer"]} <- get-address/25 {name: "result", value: 1, type: 2-9, properties: ["result": "address":"buffer", "deref": ]}, {name: "length", value: 0, type: 0, properties: ["length": "offset"]} -run/0: ingredient 0 is result -mem/0: location 1033 is 1062 -run/0: ingredient 1 is length -run/0: address to copy is 1062 -run/0: product 0 is 1062 -mem/0: storing 1062 in location 1034 -run/0: instruction init-buffer/3 -run/0: {name: "len", value: 2, type: 2-1, properties: ["len": "address":"integer", "deref": ]} <- copy/1 {name: "0", value: 0, type: 0, properties: ["0": "literal"]} -run/0: ingredient 0 is 0 -mem/0: location 1034 is 1062 -mem/0: storing 0 in location 1062 -run/0: instruction init-buffer/4 -run/0: {name: "s", value: 3, type: 2-2-5-4, properties: ["s": "address":"address":"array":"character"]} <- get-address/25 {name: "result", value: 1, type: 2-9, properties: ["result": "address":"buffer", "deref": ]}, {name: "data", value: 1, type: 0, properties: ["data": "offset"]} -run/0: ingredient 0 is result -mem/0: location 1033 is 1062 -run/0: ingredient 1 is data -run/0: address to copy is 1063 -run/0: product 0 is 1063 -mem/0: storing 1063 in location 1035 -run/0: instruction init-buffer/5 -run/0: {name: "capacity", value: 4, type: 1, properties: ["capacity": "integer"]} <- next-ingredient/30 -run/0: product 0 is 3 -mem/0: storing 3 in location 1036 -run/0: instruction init-buffer/6 -run/0: {name: "s", value: 3, type: 2-2-5-4, properties: ["s": "address":"address":"array":"character", "deref": ]} <- new/44 {name: "character", value: 4, type: 0, properties: ["character": "type"]}, {name: "capacity", value: 4, type: 1, properties: ["capacity": "integer"]} -mem/0: location 1036 is 3 -mem/0: array size is 3 -mem/0: new alloc: 1064 -mem/0: location 1035 is 1063 -mem/0: storing 1064 in location 1063 -run/0: instruction init-buffer/7 -run/0: reply/33 {name: "result", value: 1, type: 2-9, properties: ["result": "address":"buffer"]} -mem/0: location 1033 is 1062 -run/0: result 0 is 1062 -mem/0: storing 1062 in location 1002 -run/0: instruction run1001/2 -run/0: {name: "s1", value: 2, type: 2-5-4, properties: ["s1": "address":"array":"character"]} <- get/24 {name: "x", value: 1, type: 2-9, properties: ["x": "address":"buffer", "deref": ]}, {name: "data", value: 1, type: 0, properties: ["data": "offset"]} -run/0: ingredient 0 is x -mem/0: location 1002 is 1062 -run/0: ingredient 1 is data -run/0: address to copy is 1063 -run/0: its type is 2 -mem/0: location 1063 is 1064 -run/0: product 0 is 1064 -mem/0: storing 1064 in location 1003 -run/0: instruction run1001/3 -run/0: {name: "x", value: 1, type: 2-9, properties: ["x": "address":"buffer"]} <- buffer-append/104 {name: "x", value: 1, type: 2-9, properties: ["x": "address":"buffer"]}, {name: "97", value: 97, type: 0, properties: ["97": "literal"]} -mem/0: location 1002 is 1062 -run/0: instruction buffer-append/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/44 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} -mem/0: array size is 30 -mem/0: new alloc: 1068 -run/0: instruction buffer-append/1 -run/0: {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer"]} <- next-ingredient/30 -run/0: product 0 is 1062 -mem/0: storing 1062 in location 1070 -run/0: instruction buffer-append/2 -run/0: {name: "c", value: 2, type: 4, properties: ["c": "character"]} <- next-ingredient/30 -run/0: product 0 is 97 -mem/0: storing 97 in location 1071 -run/0: instruction buffer-append/4 -run/0: {name: "full?", value: 3, type: 3, properties: ["full?": "boolean"]} <- buffer-full?/103 {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer"]} -mem/0: location 1070 is 1062 -run/0: instruction buffer-full?/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/44 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} -mem/0: array size is 30 -mem/0: new alloc: 1099 -run/0: instruction buffer-full?/1 -run/0: {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer"]} <- next-ingredient/30 -run/0: product 0 is 1062 -mem/0: storing 1062 in location 1101 -run/0: instruction buffer-full?/2 -run/0: {name: "len", value: 2, type: 1, properties: ["len": "integer"]} <- get/24 {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer", "deref": ]}, {name: "length", value: 0, type: 0, properties: ["length": "offset"]} -run/0: ingredient 0 is in -mem/0: location 1101 is 1062 -run/0: ingredient 1 is length -run/0: address to copy is 1062 -run/0: its type is 1 -mem/0: location 1062 is 0 -run/0: product 0 is 0 -mem/0: storing 0 in location 1102 -run/0: instruction buffer-full?/3 -run/0: {name: "s", value: 3, type: 2-5-4, properties: ["s": "address":"array":"character"]} <- get/24 {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer", "deref": ]}, {name: "data", value: 1, type: 0, properties: ["data": "offset"]} -run/0: ingredient 0 is in -mem/0: location 1101 is 1062 -run/0: ingredient 1 is data -run/0: address to copy is 1063 -run/0: its type is 2 -mem/0: location 1063 is 1064 -run/0: product 0 is 1064 -mem/0: storing 1064 in location 1103 -run/0: instruction buffer-full?/4 -run/0: {name: "capacity", value: 4, type: 1, properties: ["capacity": "integer"]} <- length/28 {name: "s", value: 3, type: 2-5-4, properties: ["s": "address":"array":"character", "deref": ]} -mem/0: location 1103 is 1064 -mem/0: storing 3 in location 1104 -run/0: instruction buffer-full?/5 -run/0: {name: "result", value: 5, type: 3, properties: ["result": "boolean"]} <- greater-or-equal/16 {name: "len", value: 2, type: 1, properties: ["len": "integer"]}, {name: "capacity", value: 4, type: 1, properties: ["capacity": "integer"]} -run/0: ingredient 0 is len -mem/0: location 1102 is 0 -run/0: ingredient 1 is capacity -mem/0: location 1104 is 3 -run/0: product 0 is 0 -mem/0: storing 0 in location 1105 -run/0: instruction buffer-full?/6 -run/0: reply/33 {name: "result", value: 5, type: 3, properties: ["result": "boolean"]} -mem/0: location 1105 is 0 -run/0: result 0 is 0 -mem/0: storing 0 in location 1072 -run/0: instruction buffer-append/5 -run/0: break-unless/12 {name: "full?", value: 3, type: 3, properties: ["full?": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} -mem/0: location 1072 is 0 -run/0: ingredient 0 is 0 -run/0: ingredient 1 is -run/0: jumping to instruction 7 -run/0: instruction buffer-append/8 -run/0: {name: "len", value: 4, type: 2-1, properties: ["len": "address":"integer"]} <- get-address/25 {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer", "deref": ]}, {name: "length", value: 0, type: 0, properties: ["length": "offset"]} -run/0: ingredient 0 is in -mem/0: location 1070 is 1062 -run/0: ingredient 1 is length -run/0: address to copy is 1062 -run/0: product 0 is 1062 -mem/0: storing 1062 in location 1073 -run/0: instruction buffer-append/9 -run/0: {name: "s", value: 5, type: 2-5-4, properties: ["s": "address":"array":"character"]} <- get/24 {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer", "deref": ]}, {name: "data", value: 1, type: 0, properties: ["data": "offset"]} -run/0: ingredient 0 is in -mem/0: location 1070 is 1062 -run/0: ingredient 1 is data -run/0: address to copy is 1063 -run/0: its type is 2 -mem/0: location 1063 is 1064 -run/0: product 0 is 1064 -mem/0: storing 1064 in location 1074 -run/0: instruction buffer-append/10 -run/0: {name: "dest", value: 6, type: 2-4, properties: ["dest": "address":"character"]} <- index-address/27 {name: "s", value: 5, type: 2-5-4, properties: ["s": "address":"array":"character", "deref": ]}, {name: "len", value: 4, type: 2-1, properties: ["len": "address":"integer", "deref": ]} -run/0: ingredient 0 is s -mem/0: location 1074 is 1064 -run/0: ingredient 1 is {name: "len", value: 4, type: 2-1, properties: ["len": "address":"integer", "deref": ]} -mem/0: location 1073 is 1062 -mem/0: location 1062 is 0 -run/0: address to copy is 1065 -run/0: product 0 is 1065 -mem/0: storing 1065 in location 1075 -run/0: instruction buffer-append/11 -run/0: {name: "dest", value: 6, type: 2-4, properties: ["dest": "address":"character", "deref": ]} <- copy/1 {name: "c", value: 2, type: 4, properties: ["c": "character"]} -run/0: ingredient 0 is c -mem/0: location 1071 is 97 -mem/0: location 1075 is 1065 -mem/0: storing 97 in location 1065 -run/0: instruction buffer-append/12 -run/0: {name: "len", value: 4, type: 2-1, properties: ["len": "address":"integer", "deref": ]} <- add/2 {name: "len", value: 4, type: 2-1, properties: ["len": "address":"integer", "deref": ]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is len -mem/0: location 1073 is 1062 -mem/0: location 1062 is 0 -run/0: ingredient 1 is 1 -run/0: product 0 is 1 -mem/0: location 1073 is 1062 -mem/0: storing 1 in location 1062 -run/0: instruction buffer-append/13 -run/0: reply/33 {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer", "same-as-ingredient": "0"]} -mem/0: location 1070 is 1062 -run/0: result 0 is 1062 -mem/0: storing 1062 in location 1002 -run/0: instruction run1001/4 -run/0: {name: "x", value: 1, type: 2-9, properties: ["x": "address":"buffer"]} <- buffer-append/104 {name: "x", value: 1, type: 2-9, properties: ["x": "address":"buffer"]}, {name: "98", value: 98, type: 0, properties: ["98": "literal"]} -mem/0: location 1002 is 1062 -run/0: instruction buffer-append/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/44 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} -mem/0: array size is 30 -mem/0: new alloc: 1130 -run/0: instruction buffer-append/1 -run/0: {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer"]} <- next-ingredient/30 -run/0: product 0 is 1062 -mem/0: storing 1062 in location 1132 -run/0: instruction buffer-append/2 -run/0: {name: "c", value: 2, type: 4, properties: ["c": "character"]} <- next-ingredient/30 -run/0: product 0 is 98 -mem/0: storing 98 in location 1133 -run/0: instruction buffer-append/4 -run/0: {name: "full?", value: 3, type: 3, properties: ["full?": "boolean"]} <- buffer-full?/103 {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer"]} -mem/0: location 1132 is 1062 -run/0: instruction buffer-full?/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/44 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} -mem/0: array size is 30 -mem/0: new alloc: 1161 -run/0: instruction buffer-full?/1 -run/0: {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer"]} <- next-ingredient/30 -run/0: product 0 is 1062 -mem/0: storing 1062 in location 1163 -run/0: instruction buffer-full?/2 -run/0: {name: "len", value: 2, type: 1, properties: ["len": "integer"]} <- get/24 {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer", "deref": ]}, {name: "length", value: 0, type: 0, properties: ["length": "offset"]} -run/0: ingredient 0 is in -mem/0: location 1163 is 1062 -run/0: ingredient 1 is length -run/0: address to copy is 1062 -run/0: its type is 1 -mem/0: location 1062 is 1 -run/0: product 0 is 1 -mem/0: storing 1 in location 1164 -run/0: instruction buffer-full?/3 -run/0: {name: "s", value: 3, type: 2-5-4, properties: ["s": "address":"array":"character"]} <- get/24 {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer", "deref": ]}, {name: "data", value: 1, type: 0, properties: ["data": "offset"]} -run/0: ingredient 0 is in -mem/0: location 1163 is 1062 -run/0: ingredient 1 is data -run/0: address to copy is 1063 -run/0: its type is 2 -mem/0: location 1063 is 1064 -run/0: product 0 is 1064 -mem/0: storing 1064 in location 1165 -run/0: instruction buffer-full?/4 -run/0: {name: "capacity", value: 4, type: 1, properties: ["capacity": "integer"]} <- length/28 {name: "s", value: 3, type: 2-5-4, properties: ["s": "address":"array":"character", "deref": ]} -mem/0: location 1165 is 1064 -mem/0: storing 3 in location 1166 -run/0: instruction buffer-full?/5 -run/0: {name: "result", value: 5, type: 3, properties: ["result": "boolean"]} <- greater-or-equal/16 {name: "len", value: 2, type: 1, properties: ["len": "integer"]}, {name: "capacity", value: 4, type: 1, properties: ["capacity": "integer"]} -run/0: ingredient 0 is len -mem/0: location 1164 is 1 -run/0: ingredient 1 is capacity -mem/0: location 1166 is 3 -run/0: product 0 is 0 -mem/0: storing 0 in location 1167 -run/0: instruction buffer-full?/6 -run/0: reply/33 {name: "result", value: 5, type: 3, properties: ["result": "boolean"]} -mem/0: location 1167 is 0 -run/0: result 0 is 0 -mem/0: storing 0 in location 1134 -run/0: instruction buffer-append/5 -run/0: break-unless/12 {name: "full?", value: 3, type: 3, properties: ["full?": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} -mem/0: location 1134 is 0 -run/0: ingredient 0 is 0 -run/0: ingredient 1 is -run/0: jumping to instruction 7 -run/0: instruction buffer-append/8 -run/0: {name: "len", value: 4, type: 2-1, properties: ["len": "address":"integer"]} <- get-address/25 {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer", "deref": ]}, {name: "length", value: 0, type: 0, properties: ["length": "offset"]} -run/0: ingredient 0 is in -mem/0: location 1132 is 1062 -run/0: ingredient 1 is length -run/0: address to copy is 1062 -run/0: product 0 is 1062 -mem/0: storing 1062 in location 1135 -run/0: instruction buffer-append/9 -run/0: {name: "s", value: 5, type: 2-5-4, properties: ["s": "address":"array":"character"]} <- get/24 {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer", "deref": ]}, {name: "data", value: 1, type: 0, properties: ["data": "offset"]} -run/0: ingredient 0 is in -mem/0: location 1132 is 1062 -run/0: ingredient 1 is data -run/0: address to copy is 1063 -run/0: its type is 2 -mem/0: location 1063 is 1064 -run/0: product 0 is 1064 -mem/0: storing 1064 in location 1136 -run/0: instruction buffer-append/10 -run/0: {name: "dest", value: 6, type: 2-4, properties: ["dest": "address":"character"]} <- index-address/27 {name: "s", value: 5, type: 2-5-4, properties: ["s": "address":"array":"character", "deref": ]}, {name: "len", value: 4, type: 2-1, properties: ["len": "address":"integer", "deref": ]} -run/0: ingredient 0 is s -mem/0: location 1136 is 1064 -run/0: ingredient 1 is {name: "len", value: 4, type: 2-1, properties: ["len": "address":"integer", "deref": ]} -mem/0: location 1135 is 1062 -mem/0: location 1062 is 1 -run/0: address to copy is 1066 -run/0: product 0 is 1066 -mem/0: storing 1066 in location 1137 -run/0: instruction buffer-append/11 -run/0: {name: "dest", value: 6, type: 2-4, properties: ["dest": "address":"character", "deref": ]} <- copy/1 {name: "c", value: 2, type: 4, properties: ["c": "character"]} -run/0: ingredient 0 is c -mem/0: location 1133 is 98 -mem/0: location 1137 is 1066 -mem/0: storing 98 in location 1066 -run/0: instruction buffer-append/12 -run/0: {name: "len", value: 4, type: 2-1, properties: ["len": "address":"integer", "deref": ]} <- add/2 {name: "len", value: 4, type: 2-1, properties: ["len": "address":"integer", "deref": ]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is len -mem/0: location 1135 is 1062 -mem/0: location 1062 is 1 -run/0: ingredient 1 is 1 -run/0: product 0 is 2 -mem/0: location 1135 is 1062 -mem/0: storing 2 in location 1062 -run/0: instruction buffer-append/13 -run/0: reply/33 {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer", "same-as-ingredient": "0"]} -mem/0: location 1132 is 1062 -run/0: result 0 is 1062 -mem/0: storing 1062 in location 1002 -run/0: instruction run1001/5 -run/0: {name: "x", value: 1, type: 2-9, properties: ["x": "address":"buffer"]} <- buffer-append/104 {name: "x", value: 1, type: 2-9, properties: ["x": "address":"buffer"]}, {name: "99", value: 99, type: 0, properties: ["99": "literal"]} -mem/0: location 1002 is 1062 -run/0: instruction buffer-append/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/44 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} -mem/0: array size is 30 -mem/0: new alloc: 1192 -run/0: instruction buffer-append/1 -run/0: {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer"]} <- next-ingredient/30 -run/0: product 0 is 1062 -mem/0: storing 1062 in location 1194 -run/0: instruction buffer-append/2 -run/0: {name: "c", value: 2, type: 4, properties: ["c": "character"]} <- next-ingredient/30 -run/0: product 0 is 99 -mem/0: storing 99 in location 1195 -run/0: instruction buffer-append/4 -run/0: {name: "full?", value: 3, type: 3, properties: ["full?": "boolean"]} <- buffer-full?/103 {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer"]} -mem/0: location 1194 is 1062 -run/0: instruction buffer-full?/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/44 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} -mem/0: array size is 30 -mem/0: new alloc: 1223 -run/0: instruction buffer-full?/1 -run/0: {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer"]} <- next-ingredient/30 -run/0: product 0 is 1062 -mem/0: storing 1062 in location 1225 -run/0: instruction buffer-full?/2 -run/0: {name: "len", value: 2, type: 1, properties: ["len": "integer"]} <- get/24 {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer", "deref": ]}, {name: "length", value: 0, type: 0, properties: ["length": "offset"]} -run/0: ingredient 0 is in -mem/0: location 1225 is 1062 -run/0: ingredient 1 is length -run/0: address to copy is 1062 -run/0: its type is 1 -mem/0: location 1062 is 2 -run/0: product 0 is 2 -mem/0: storing 2 in location 1226 -run/0: instruction buffer-full?/3 -run/0: {name: "s", value: 3, type: 2-5-4, properties: ["s": "address":"array":"character"]} <- get/24 {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer", "deref": ]}, {name: "data", value: 1, type: 0, properties: ["data": "offset"]} -run/0: ingredient 0 is in -mem/0: location 1225 is 1062 -run/0: ingredient 1 is data -run/0: address to copy is 1063 -run/0: its type is 2 -mem/0: location 1063 is 1064 -run/0: product 0 is 1064 -mem/0: storing 1064 in location 1227 -run/0: instruction buffer-full?/4 -run/0: {name: "capacity", value: 4, type: 1, properties: ["capacity": "integer"]} <- length/28 {name: "s", value: 3, type: 2-5-4, properties: ["s": "address":"array":"character", "deref": ]} -mem/0: location 1227 is 1064 -mem/0: storing 3 in location 1228 -run/0: instruction buffer-full?/5 -run/0: {name: "result", value: 5, type: 3, properties: ["result": "boolean"]} <- greater-or-equal/16 {name: "len", value: 2, type: 1, properties: ["len": "integer"]}, {name: "capacity", value: 4, type: 1, properties: ["capacity": "integer"]} -run/0: ingredient 0 is len -mem/0: location 1226 is 2 -run/0: ingredient 1 is capacity -mem/0: location 1228 is 3 -run/0: product 0 is 0 -mem/0: storing 0 in location 1229 -run/0: instruction buffer-full?/6 -run/0: reply/33 {name: "result", value: 5, type: 3, properties: ["result": "boolean"]} -mem/0: location 1229 is 0 -run/0: result 0 is 0 -mem/0: storing 0 in location 1196 -run/0: instruction buffer-append/5 -run/0: break-unless/12 {name: "full?", value: 3, type: 3, properties: ["full?": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} -mem/0: location 1196 is 0 -run/0: ingredient 0 is 0 -run/0: ingredient 1 is -run/0: jumping to instruction 7 -run/0: instruction buffer-append/8 -run/0: {name: "len", value: 4, type: 2-1, properties: ["len": "address":"integer"]} <- get-address/25 {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer", "deref": ]}, {name: "length", value: 0, type: 0, properties: ["length": "offset"]} -run/0: ingredient 0 is in -mem/0: location 1194 is 1062 -run/0: ingredient 1 is length -run/0: address to copy is 1062 -run/0: product 0 is 1062 -mem/0: storing 1062 in location 1197 -run/0: instruction buffer-append/9 -run/0: {name: "s", value: 5, type: 2-5-4, properties: ["s": "address":"array":"character"]} <- get/24 {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer", "deref": ]}, {name: "data", value: 1, type: 0, properties: ["data": "offset"]} -run/0: ingredient 0 is in -mem/0: location 1194 is 1062 -run/0: ingredient 1 is data -run/0: address to copy is 1063 -run/0: its type is 2 -mem/0: location 1063 is 1064 -run/0: product 0 is 1064 -mem/0: storing 1064 in location 1198 -run/0: instruction buffer-append/10 -run/0: {name: "dest", value: 6, type: 2-4, properties: ["dest": "address":"character"]} <- index-address/27 {name: "s", value: 5, type: 2-5-4, properties: ["s": "address":"array":"character", "deref": ]}, {name: "len", value: 4, type: 2-1, properties: ["len": "address":"integer", "deref": ]} -run/0: ingredient 0 is s -mem/0: location 1198 is 1064 -run/0: ingredient 1 is {name: "len", value: 4, type: 2-1, properties: ["len": "address":"integer", "deref": ]} -mem/0: location 1197 is 1062 -mem/0: location 1062 is 2 -run/0: address to copy is 1067 -run/0: product 0 is 1067 -mem/0: storing 1067 in location 1199 -run/0: instruction buffer-append/11 -run/0: {name: "dest", value: 6, type: 2-4, properties: ["dest": "address":"character", "deref": ]} <- copy/1 {name: "c", value: 2, type: 4, properties: ["c": "character"]} -run/0: ingredient 0 is c -mem/0: location 1195 is 99 -mem/0: location 1199 is 1067 -mem/0: storing 99 in location 1067 -run/0: instruction buffer-append/12 -run/0: {name: "len", value: 4, type: 2-1, properties: ["len": "address":"integer", "deref": ]} <- add/2 {name: "len", value: 4, type: 2-1, properties: ["len": "address":"integer", "deref": ]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is len -mem/0: location 1197 is 1062 -mem/0: location 1062 is 2 -run/0: ingredient 1 is 1 -run/0: product 0 is 3 -mem/0: location 1197 is 1062 -mem/0: storing 3 in location 1062 -run/0: instruction buffer-append/13 -run/0: reply/33 {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer", "same-as-ingredient": "0"]} -mem/0: location 1194 is 1062 -run/0: result 0 is 1062 -mem/0: storing 1062 in location 1002 -run/0: instruction run1001/6 -run/0: {name: "s2", value: 3, type: 2-5-4, properties: ["s2": "address":"array":"character"]} <- get/24 {name: "x", value: 1, type: 2-9, properties: ["x": "address":"buffer", "deref": ]}, {name: "data", value: 1, type: 0, properties: ["data": "offset"]} -run/0: ingredient 0 is x -mem/0: location 1002 is 1062 -run/0: ingredient 1 is data -run/0: address to copy is 1063 -run/0: its type is 2 -mem/0: location 1063 is 1064 -run/0: product 0 is 1064 -mem/0: storing 1064 in location 1004 -run/0: instruction run1001/7 -run/0: {name: "1", value: 1, type: 3, properties: ["1": "boolean", "raw": ]} <- equal/13 {name: "s1", value: 2, type: 2-5-4, properties: ["s1": "address":"array":"character"]}, {name: "s2", value: 3, type: 2-5-4, properties: ["s2": "address":"array":"character"]} -run/0: ingredient 0 is s1 -mem/0: location 1003 is 1064 -run/0: ingredient 1 is s2 -mem/0: location 1004 is 1064 -run/0: product 0 is 1 -mem/0: storing 1 in location 1 -run/0: instruction run1001/8 -run/0: {name: "2", value: 2, type: 5-4, properties: ["2": "array":"character", "raw": ]} <- copy/1 {name: "s2", value: 3, type: 2-5-4, properties: ["s2": "address":"array":"character", "deref": ]} -run/0: ingredient 0 is s2 -mem/0: location 1004 is 1064 -mem/0: location 1064 is 3 -mem/0: location 1065 is 97 -mem/0: location 1066 is 98 -mem/0: location 1067 is 99 -mem/0: storing 3 in location 2 -mem/0: storing 97 in location 3 -mem/0: storing 98 in location 4 -mem/0: storing 99 in location 5 -run/0: instruction run1001/10 -run/0: {name: "x", value: 1, type: 2-9, properties: ["x": "address":"buffer"]} <- buffer-append/104 {name: "x", value: 1, type: 2-9, properties: ["x": "address":"buffer"]}, {name: "100", value: 100, type: 0, properties: ["100": "literal"]} -mem/0: location 1002 is 1062 -run/0: instruction buffer-append/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/44 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} -mem/0: array size is 30 -mem/0: new alloc: 1254 -run/0: instruction buffer-append/1 -run/0: {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer"]} <- next-ingredient/30 -run/0: product 0 is 1062 -mem/0: storing 1062 in location 1256 -run/0: instruction buffer-append/2 -run/0: {name: "c", value: 2, type: 4, properties: ["c": "character"]} <- next-ingredient/30 -run/0: product 0 is 100 -mem/0: storing 100 in location 1257 -run/0: instruction buffer-append/4 -run/0: {name: "full?", value: 3, type: 3, properties: ["full?": "boolean"]} <- buffer-full?/103 {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer"]} -mem/0: location 1256 is 1062 -run/0: instruction buffer-full?/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/44 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} -mem/0: array size is 30 -mem/0: new alloc: 1285 -run/0: instruction buffer-full?/1 -run/0: {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer"]} <- next-ingredient/30 -run/0: product 0 is 1062 -mem/0: storing 1062 in location 1287 -run/0: instruction buffer-full?/2 -run/0: {name: "len", value: 2, type: 1, properties: ["len": "integer"]} <- get/24 {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer", "deref": ]}, {name: "length", value: 0, type: 0, properties: ["length": "offset"]} -run/0: ingredient 0 is in -mem/0: location 1287 is 1062 -run/0: ingredient 1 is length -run/0: address to copy is 1062 -run/0: its type is 1 -mem/0: location 1062 is 3 -run/0: product 0 is 3 -mem/0: storing 3 in location 1288 -run/0: instruction buffer-full?/3 -run/0: {name: "s", value: 3, type: 2-5-4, properties: ["s": "address":"array":"character"]} <- get/24 {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer", "deref": ]}, {name: "data", value: 1, type: 0, properties: ["data": "offset"]} -run/0: ingredient 0 is in -mem/0: location 1287 is 1062 -run/0: ingredient 1 is data -run/0: address to copy is 1063 -run/0: its type is 2 -mem/0: location 1063 is 1064 -run/0: product 0 is 1064 -mem/0: storing 1064 in location 1289 -run/0: instruction buffer-full?/4 -run/0: {name: "capacity", value: 4, type: 1, properties: ["capacity": "integer"]} <- length/28 {name: "s", value: 3, type: 2-5-4, properties: ["s": "address":"array":"character", "deref": ]} -mem/0: location 1289 is 1064 -mem/0: storing 3 in location 1290 -run/0: instruction buffer-full?/5 -run/0: {name: "result", value: 5, type: 3, properties: ["result": "boolean"]} <- greater-or-equal/16 {name: "len", value: 2, type: 1, properties: ["len": "integer"]}, {name: "capacity", value: 4, type: 1, properties: ["capacity": "integer"]} -run/0: ingredient 0 is len -mem/0: location 1288 is 3 -run/0: ingredient 1 is capacity -mem/0: location 1290 is 3 -run/0: product 0 is 1 -mem/0: storing 1 in location 1291 -run/0: instruction buffer-full?/6 -run/0: reply/33 {name: "result", value: 5, type: 3, properties: ["result": "boolean"]} -mem/0: location 1291 is 1 -run/0: result 0 is 1 -mem/0: storing 1 in location 1258 -run/0: instruction buffer-append/5 -run/0: break-unless/12 {name: "full?", value: 3, type: 3, properties: ["full?": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} -mem/0: location 1258 is 1 -run/0: ingredient 0 is 1 -run/0: jump-unless fell through -run/0: instruction buffer-append/6 -run/0: {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer"]} <- grow-buffer/102 {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer"]} -mem/0: location 1256 is 1062 -run/0: instruction grow-buffer/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/44 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} -mem/0: array size is 30 -mem/0: new alloc: 1316 -run/0: instruction grow-buffer/1 -run/0: {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer"]} <- next-ingredient/30 -run/0: product 0 is 1062 -mem/0: storing 1062 in location 1318 -run/0: instruction grow-buffer/2 -run/0: {name: "x", value: 2, type: 2-2-5-4, properties: ["x": "address":"address":"array":"character"]} <- get-address/25 {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer", "deref": ]}, {name: "data", value: 1, type: 0, properties: ["data": "offset"]} -run/0: ingredient 0 is in -mem/0: location 1318 is 1062 -run/0: ingredient 1 is data -run/0: address to copy is 1063 -run/0: product 0 is 1063 -mem/0: storing 1063 in location 1319 -run/0: instruction grow-buffer/3 -run/0: {name: "oldlen", value: 3, type: 1, properties: ["oldlen": "integer"]} <- length/28 {name: "x", value: 2, type: 2-2-5-4, properties: ["x": "address":"address":"array":"character", "deref": , "deref": ]} -mem/0: location 1319 is 1063 -mem/0: location 1063 is 1064 -mem/0: storing 3 in location 1320 -run/0: instruction grow-buffer/4 -run/0: {name: "newlen", value: 4, type: 1, properties: ["newlen": "integer"]} <- multiply/4 {name: "oldlen", value: 3, type: 1, properties: ["oldlen": "integer"]}, {name: "2", value: 2, type: 0, properties: ["2": "literal"]} -run/0: ingredient 0 is oldlen -mem/0: location 1320 is 3 -run/0: ingredient 1 is 2 -run/0: ingredient 1 is 2 -run/0: product 0 is 6 -mem/0: storing 6 in location 1321 -run/0: instruction grow-buffer/5 -run/0: {name: "olddata", value: 5, type: 2-5-4, properties: ["olddata": "address":"array":"character"]} <- copy/1 {name: "x", value: 2, type: 2-2-5-4, properties: ["x": "address":"address":"array":"character", "deref": ]} -run/0: ingredient 0 is x -mem/0: location 1319 is 1063 -mem/0: location 1063 is 1064 -mem/0: storing 1064 in location 1322 -run/0: instruction grow-buffer/6 -run/0: {name: "x", value: 2, type: 2-2-5-4, properties: ["x": "address":"address":"array":"character", "deref": ]} <- new/44 {name: "character", value: 4, type: 0, properties: ["character": "type"]}, {name: "newlen", value: 4, type: 1, properties: ["newlen": "integer"]} -mem/0: location 1321 is 6 -mem/0: array size is 6 -mem/0: new alloc: 1347 -mem/0: location 1319 is 1063 -mem/0: storing 1347 in location 1063 -run/0: instruction grow-buffer/7 -run/0: {name: "i", value: 6, type: 1, properties: ["i": "integer"]} <- copy/1 {name: "0", value: 0, type: 0, properties: ["0": "literal"]} -run/0: ingredient 0 is 0 -mem/0: storing 0 in location 1323 -run/0: instruction grow-buffer/9 -run/0: {name: "done?", value: 7, type: 3, properties: ["done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 6, type: 1, properties: ["i": "integer"]}, {name: "oldlen", value: 3, type: 1, properties: ["oldlen": "integer"]} -run/0: ingredient 0 is i -mem/0: location 1323 is 0 -run/0: ingredient 1 is oldlen -mem/0: location 1320 is 3 -run/0: product 0 is 0 -mem/0: storing 0 in location 1324 -run/0: instruction grow-buffer/10 -run/0: break-if/11 {name: "done?", value: 7, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 5, type: , properties: ["": ]} -mem/0: location 1324 is 0 -run/0: ingredient 0 is 0 -run/0: jump-if fell through -run/0: instruction grow-buffer/11 -run/0: {name: "src", value: 8, type: 4, properties: ["src": "character"]} <- index/26 {name: "olddata", value: 5, type: 2-5-4, properties: ["olddata": "address":"array":"character", "deref": ]}, {name: "i", value: 6, type: 1, properties: ["i": "integer"]} -run/0: ingredient 0 is {name: "olddata", value: 5, type: 2-5-4, properties: ["olddata": "address":"array":"character", "deref": ]} -mem/0: location 1322 is 1064 -run/0: ingredient 1 is {name: "i", value: 6, type: 1, properties: ["i": "integer"]} -mem/0: location 1323 is 0 -run/0: address to copy is 1065 -run/0: its type is 4 -mem/0: location 1065 is 97 -run/0: product 0 is 97 -mem/0: storing 97 in location 1325 -run/0: instruction grow-buffer/12 -run/0: {name: "dest", value: 9, type: 2-4, properties: ["dest": "address":"character"]} <- index-address/27 {name: "x", value: 2, type: 2-2-5-4, properties: ["x": "address":"address":"array":"character", "deref": , "deref": ]}, {name: "i", value: 6, type: 1, properties: ["i": "integer"]} -run/0: ingredient 0 is x -mem/0: location 1319 is 1063 -mem/0: location 1063 is 1347 -run/0: ingredient 1 is {name: "i", value: 6, type: 1, properties: ["i": "integer"]} -mem/0: location 1323 is 0 -run/0: address to copy is 1348 -run/0: product 0 is 1348 -mem/0: storing 1348 in location 1326 -run/0: instruction grow-buffer/13 -run/0: {name: "dest", value: 9, type: 2-4, properties: ["dest": "address":"character", "deref": ]} <- copy/1 {name: "src", value: 8, type: 4, properties: ["src": "character"]} -run/0: ingredient 0 is src -mem/0: location 1325 is 97 -mem/0: location 1326 is 1348 -mem/0: storing 97 in location 1348 -run/0: instruction grow-buffer/14 -run/0: {name: "i", value: 6, type: 1, properties: ["i": "integer"]} <- add/2 {name: "i", value: 6, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is i -mem/0: location 1323 is 0 -run/0: ingredient 1 is 1 -run/0: product 0 is 1 -mem/0: storing 1 in location 1323 -run/0: instruction grow-buffer/15 -run/0: loop/10 {name: "", value: -7, type: , properties: ["": ]} -run/0: ingredient 0 is -7 -run/0: jumping to instruction 9 -run/0: instruction grow-buffer/9 -run/0: {name: "done?", value: 7, type: 3, properties: ["done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 6, type: 1, properties: ["i": "integer"]}, {name: "oldlen", value: 3, type: 1, properties: ["oldlen": "integer"]} -run/0: ingredient 0 is i -mem/0: location 1323 is 1 -run/0: ingredient 1 is oldlen -mem/0: location 1320 is 3 -run/0: product 0 is 0 -mem/0: storing 0 in location 1324 -run/0: instruction grow-buffer/10 -run/0: break-if/11 {name: "done?", value: 7, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 5, type: , properties: ["": ]} -mem/0: location 1324 is 0 -run/0: ingredient 0 is 0 -run/0: jump-if fell through -run/0: instruction grow-buffer/11 -run/0: {name: "src", value: 8, type: 4, properties: ["src": "character"]} <- index/26 {name: "olddata", value: 5, type: 2-5-4, properties: ["olddata": "address":"array":"character", "deref": ]}, {name: "i", value: 6, type: 1, properties: ["i": "integer"]} -run/0: ingredient 0 is {name: "olddata", value: 5, type: 2-5-4, properties: ["olddata": "address":"array":"character", "deref": ]} -mem/0: location 1322 is 1064 -run/0: ingredient 1 is {name: "i", value: 6, type: 1, properties: ["i": "integer"]} -mem/0: location 1323 is 1 -run/0: address to copy is 1066 -run/0: its type is 4 -mem/0: location 1066 is 98 -run/0: product 0 is 98 -mem/0: storing 98 in location 1325 -run/0: instruction grow-buffer/12 -run/0: {name: "dest", value: 9, type: 2-4, properties: ["dest": "address":"character"]} <- index-address/27 {name: "x", value: 2, type: 2-2-5-4, properties: ["x": "address":"address":"array":"character", "deref": , "deref": ]}, {name: "i", value: 6, type: 1, properties: ["i": "integer"]} -run/0: ingredient 0 is x -mem/0: location 1319 is 1063 -mem/0: location 1063 is 1347 -run/0: ingredient 1 is {name: "i", value: 6, type: 1, properties: ["i": "integer"]} -mem/0: location 1323 is 1 -run/0: address to copy is 1349 -run/0: product 0 is 1349 -mem/0: storing 1349 in location 1326 -run/0: instruction grow-buffer/13 -run/0: {name: "dest", value: 9, type: 2-4, properties: ["dest": "address":"character", "deref": ]} <- copy/1 {name: "src", value: 8, type: 4, properties: ["src": "character"]} -run/0: ingredient 0 is src -mem/0: location 1325 is 98 -mem/0: location 1326 is 1349 -mem/0: storing 98 in location 1349 -run/0: instruction grow-buffer/14 -run/0: {name: "i", value: 6, type: 1, properties: ["i": "integer"]} <- add/2 {name: "i", value: 6, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is i -mem/0: location 1323 is 1 -run/0: ingredient 1 is 1 -run/0: product 0 is 2 -mem/0: storing 2 in location 1323 -run/0: instruction grow-buffer/15 -run/0: loop/10 {name: "", value: -7, type: , properties: ["": ]} -run/0: ingredient 0 is -7 -run/0: jumping to instruction 9 -run/0: instruction grow-buffer/9 -run/0: {name: "done?", value: 7, type: 3, properties: ["done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 6, type: 1, properties: ["i": "integer"]}, {name: "oldlen", value: 3, type: 1, properties: ["oldlen": "integer"]} -run/0: ingredient 0 is i -mem/0: location 1323 is 2 -run/0: ingredient 1 is oldlen -mem/0: location 1320 is 3 -run/0: product 0 is 0 -mem/0: storing 0 in location 1324 -run/0: instruction grow-buffer/10 -run/0: break-if/11 {name: "done?", value: 7, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 5, type: , properties: ["": ]} -mem/0: location 1324 is 0 -run/0: ingredient 0 is 0 -run/0: jump-if fell through -run/0: instruction grow-buffer/11 -run/0: {name: "src", value: 8, type: 4, properties: ["src": "character"]} <- index/26 {name: "olddata", value: 5, type: 2-5-4, properties: ["olddata": "address":"array":"character", "deref": ]}, {name: "i", value: 6, type: 1, properties: ["i": "integer"]} -run/0: ingredient 0 is {name: "olddata", value: 5, type: 2-5-4, properties: ["olddata": "address":"array":"character", "deref": ]} -mem/0: location 1322 is 1064 -run/0: ingredient 1 is {name: "i", value: 6, type: 1, properties: ["i": "integer"]} -mem/0: location 1323 is 2 -run/0: address to copy is 1067 -run/0: its type is 4 -mem/0: location 1067 is 99 -run/0: product 0 is 99 -mem/0: storing 99 in location 1325 -run/0: instruction grow-buffer/12 -run/0: {name: "dest", value: 9, type: 2-4, properties: ["dest": "address":"character"]} <- index-address/27 {name: "x", value: 2, type: 2-2-5-4, properties: ["x": "address":"address":"array":"character", "deref": , "deref": ]}, {name: "i", value: 6, type: 1, properties: ["i": "integer"]} -run/0: ingredient 0 is x -mem/0: location 1319 is 1063 -mem/0: location 1063 is 1347 -run/0: ingredient 1 is {name: "i", value: 6, type: 1, properties: ["i": "integer"]} -mem/0: location 1323 is 2 -run/0: address to copy is 1350 -run/0: product 0 is 1350 -mem/0: storing 1350 in location 1326 -run/0: instruction grow-buffer/13 -run/0: {name: "dest", value: 9, type: 2-4, properties: ["dest": "address":"character", "deref": ]} <- copy/1 {name: "src", value: 8, type: 4, properties: ["src": "character"]} -run/0: ingredient 0 is src -mem/0: location 1325 is 99 -mem/0: location 1326 is 1350 -mem/0: storing 99 in location 1350 -run/0: instruction grow-buffer/14 -run/0: {name: "i", value: 6, type: 1, properties: ["i": "integer"]} <- add/2 {name: "i", value: 6, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is i -mem/0: location 1323 is 2 -run/0: ingredient 1 is 1 -run/0: product 0 is 3 -mem/0: storing 3 in location 1323 -run/0: instruction grow-buffer/15 -run/0: loop/10 {name: "", value: -7, type: , properties: ["": ]} -run/0: ingredient 0 is -7 -run/0: jumping to instruction 9 -run/0: instruction grow-buffer/9 -run/0: {name: "done?", value: 7, type: 3, properties: ["done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 6, type: 1, properties: ["i": "integer"]}, {name: "oldlen", value: 3, type: 1, properties: ["oldlen": "integer"]} -run/0: ingredient 0 is i -mem/0: location 1323 is 3 -run/0: ingredient 1 is oldlen -mem/0: location 1320 is 3 -run/0: product 0 is 1 -mem/0: storing 1 in location 1324 -run/0: instruction grow-buffer/10 -run/0: break-if/11 {name: "done?", value: 7, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 5, type: , properties: ["": ]} -mem/0: location 1324 is 1 -run/0: ingredient 0 is 1 -run/0: ingredient 1 is -run/0: jumping to instruction 16 -run/0: instruction grow-buffer/17 -run/0: reply/33 {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer"]} -mem/0: location 1318 is 1062 -run/0: result 0 is 1062 -mem/0: storing 1062 in location 1256 -run/0: instruction buffer-append/8 -run/0: {name: "len", value: 4, type: 2-1, properties: ["len": "address":"integer"]} <- get-address/25 {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer", "deref": ]}, {name: "length", value: 0, type: 0, properties: ["length": "offset"]} -run/0: ingredient 0 is in -mem/0: location 1256 is 1062 -run/0: ingredient 1 is length -run/0: address to copy is 1062 -run/0: product 0 is 1062 -mem/0: storing 1062 in location 1259 -run/0: instruction buffer-append/9 -run/0: {name: "s", value: 5, type: 2-5-4, properties: ["s": "address":"array":"character"]} <- get/24 {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer", "deref": ]}, {name: "data", value: 1, type: 0, properties: ["data": "offset"]} -run/0: ingredient 0 is in -mem/0: location 1256 is 1062 -run/0: ingredient 1 is data -run/0: address to copy is 1063 -run/0: its type is 2 -mem/0: location 1063 is 1347 -run/0: product 0 is 1347 -mem/0: storing 1347 in location 1260 -run/0: instruction buffer-append/10 -run/0: {name: "dest", value: 6, type: 2-4, properties: ["dest": "address":"character"]} <- index-address/27 {name: "s", value: 5, type: 2-5-4, properties: ["s": "address":"array":"character", "deref": ]}, {name: "len", value: 4, type: 2-1, properties: ["len": "address":"integer", "deref": ]} -run/0: ingredient 0 is s -mem/0: location 1260 is 1347 -run/0: ingredient 1 is {name: "len", value: 4, type: 2-1, properties: ["len": "address":"integer", "deref": ]} -mem/0: location 1259 is 1062 -mem/0: location 1062 is 3 -run/0: address to copy is 1351 -run/0: product 0 is 1351 -mem/0: storing 1351 in location 1261 -run/0: instruction buffer-append/11 -run/0: {name: "dest", value: 6, type: 2-4, properties: ["dest": "address":"character", "deref": ]} <- copy/1 {name: "c", value: 2, type: 4, properties: ["c": "character"]} -run/0: ingredient 0 is c -mem/0: location 1257 is 100 -mem/0: location 1261 is 1351 -mem/0: storing 100 in location 1351 -run/0: instruction buffer-append/12 -run/0: {name: "len", value: 4, type: 2-1, properties: ["len": "address":"integer", "deref": ]} <- add/2 {name: "len", value: 4, type: 2-1, properties: ["len": "address":"integer", "deref": ]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is len -mem/0: location 1259 is 1062 -mem/0: location 1062 is 3 -run/0: ingredient 1 is 1 -run/0: product 0 is 4 -mem/0: location 1259 is 1062 -mem/0: storing 4 in location 1062 -run/0: instruction buffer-append/13 -run/0: reply/33 {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer", "same-as-ingredient": "0"]} -mem/0: location 1256 is 1062 -run/0: result 0 is 1062 -mem/0: storing 1062 in location 1002 -run/0: instruction run1001/11 -run/0: {name: "s3", value: 4, type: 2-5-4, properties: ["s3": "address":"array":"character"]} <- get/24 {name: "x", value: 1, type: 2-9, properties: ["x": "address":"buffer", "deref": ]}, {name: "data", value: 1, type: 0, properties: ["data": "offset"]} -run/0: ingredient 0 is x -mem/0: location 1002 is 1062 -run/0: ingredient 1 is data -run/0: address to copy is 1063 -run/0: its type is 2 -mem/0: location 1063 is 1347 -run/0: product 0 is 1347 -mem/0: storing 1347 in location 1005 -run/0: instruction run1001/12 -run/0: {name: "10", value: 10, type: 3, properties: ["10": "boolean", "raw": ]} <- equal/13 {name: "s1", value: 2, type: 2-5-4, properties: ["s1": "address":"array":"character"]}, {name: "s3", value: 4, type: 2-5-4, properties: ["s3": "address":"array":"character"]} -run/0: ingredient 0 is s1 -mem/0: location 1003 is 1064 -run/0: ingredient 1 is s3 -mem/0: location 1005 is 1347 -run/0: product 0 is 0 -mem/0: storing 0 in location 10 -run/0: instruction run1001/13 -run/0: {name: "11", value: 11, type: 1, properties: ["11": "integer", "raw": ]} <- get/24 {name: "x", value: 1, type: 2-9, properties: ["x": "address":"buffer", "deref": ]}, {name: "length", value: 0, type: 0, properties: ["length": "offset"]} -run/0: ingredient 0 is x -mem/0: location 1002 is 1062 -run/0: ingredient 1 is length -run/0: address to copy is 1062 -run/0: its type is 1 -mem/0: location 1062 is 4 -run/0: product 0 is 4 -mem/0: storing 4 in location 11 -run/0: instruction run1001/14 -run/0: {name: "12", value: 12, type: 5-4, properties: ["12": "array":"character", "raw": ]} <- copy/1 {name: "s3", value: 4, type: 2-5-4, properties: ["s3": "address":"array":"character", "deref": ]} -run/0: ingredient 0 is s3 -mem/0: location 1005 is 1347 -mem/0: location 1347 is 6 -mem/0: location 1348 is 97 -mem/0: location 1349 is 98 -mem/0: location 1350 is 99 -mem/0: location 1351 is 100 -mem/0: location 1352 is 0 -mem/0: location 1353 is 0 -mem/0: storing 6 in location 12 -mem/0: storing 97 in location 13 -mem/0: storing 98 in location 14 -mem/0: storing 99 in location 15 -mem/0: storing 100 in location 16 -mem/0: storing 0 in location 17 -mem/0: storing 0 in location 18 -run/0: instruction buffer-append-works/1 -run/0: memory-should-contain/46 {name: " - # before +buffer-filled - 1 <- 1 # no change in data pointer - 2 <- 3 # size of data - 3 <- 97 # data - 4 <- 98 - 5 <- 99 - # in the end - 10 <- 0 # data pointer has grown - 11 <- 4 # final length - 12 <- 6 # but data's capacity has doubled - 13 <- 97 # data - 14 <- 98 - 15 <- 99 - 16 <- 100 - 17 <- 0 - 18 <- 0 - ", value: 0, type: 0, properties: [" - # before +buffer-filled - 1 <- 1 # no change in data pointer - 2 <- 3 # size of data - 3 <- 97 # data - 4 <- 98 - 5 <- 99 - # in the end - 10 <- 0 # data pointer has grown - 11 <- 4 # final length - 12 <- 6 # but data's capacity has doubled - 13 <- 97 # data - 14 <- 98 - 15 <- 99 - 16 <- 100 - 17 <- 0 - 18 <- 0 - ": "literal-string"]} -run/0: checking location 1 -run/0: checking location 2 -run/0: checking location 3 -run/0: checking location 4 -run/0: checking location 5 -run/0: checking location 10 -run/0: checking location 11 -run/0: checking location 12 -run/0: checking location 13 -run/0: checking location 14 -run/0: checking location 15 -run/0: checking location 16 -run/0: checking location 17 -run/0: checking location 18 diff --git a/cpp/.traces/calling_recipe b/cpp/.traces/calling_recipe deleted file mode 100644 index a7a66682..00000000 --- a/cpp/.traces/calling_recipe +++ /dev/null @@ -1,19 +0,0 @@ -parse/0: instruction: f -parse/0: instruction: add -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 -after-brace/0: add ... -new/0: routine allocated memory from 1000 to 101000 -schedule/0: main -run/0: instruction main/0 -run/0: f/1001 -run/0: instruction f/0 -run/0: {name: "3", value: 3, type: 1, properties: ["3": "integer"]} <- add/2 {name: "2", value: 2, type: 0, properties: ["2": "literal"]}, {name: "2", value: 2, type: 0, properties: ["2": "literal"]} -run/0: ingredient 0 is 2 -run/0: ingredient 1 is 2 -run/0: product 0 is 4 -mem/0: storing 4 in location 3 diff --git a/cpp/.traces/channel b/cpp/.traces/channel deleted file mode 100644 index 1e3128c7..00000000 --- a/cpp/.traces/channel +++ /dev/null @@ -1,430 +0,0 @@ -parse/0: instruction: run -parse/0: ingredient: {name: " - 1:address:channel <- init-channel 3:literal/capacity - 1:address:channel <- write 1:address:channel, 34:literal - 2:integer, 1:address:channel <- read 1:address:channel - ", value: 0, type: 0, properties: [" - 1:address:channel <- init-channel 3:literal/capacity - 1:address:channel <- write 1:address:channel, 34:literal - 2:integer, 1:address:channel <- read 1:address:channel - ": "literal-string"]} -parse/0: instruction: memory-should-contain -parse/0: ingredient: {name: " - 2 <- 34 - ", value: 0, type: 0, properties: [" - 2 <- 34 - ": "literal-string"]} -after-brace/0: recipe channel -after-brace/0: run ... -after-brace/0: memory-should-contain ... -new/0: routine allocated memory from 1000 to 101000 -schedule/0: channel -run/0: instruction channel/0 -run/0: run/45 {name: " - 1:address:channel <- init-channel 3:literal/capacity - 1:address:channel <- write 1:address:channel, 34:literal - 2:integer, 1:address:channel <- read 1:address:channel - ", value: 0, type: 0, properties: [" - 1:address:channel <- init-channel 3:literal/capacity - 1:address:channel <- write 1:address:channel, 34:literal - 2:integer, 1:address:channel <- read 1:address:channel - ": "literal-string"]} -parse/0: instruction: init-channel -parse/0: ingredient: {name: "3", value: 0, type: 0, properties: ["3": "literal", "capacity": ]} -parse/0: product: {name: "1", value: 0, type: 2-10, properties: ["1": "address":"channel"]} -parse/0: instruction: write -parse/0: ingredient: {name: "1", value: 0, type: 2-10, properties: ["1": "address":"channel"]} -parse/0: ingredient: {name: "34", value: 0, type: 0, properties: ["34": "literal"]} -parse/0: product: {name: "1", value: 0, type: 2-10, properties: ["1": "address":"channel"]} -parse/0: instruction: read -parse/0: ingredient: {name: "1", value: 0, type: 2-10, properties: ["1": "address":"channel"]} -parse/0: product: {name: "2", value: 0, type: 1, properties: ["2": "integer"]} -parse/0: product: {name: "1", value: 0, type: 2-10, properties: ["1": "address":"channel"]} -after-brace/0: recipe run1001 -after-brace/0: init-channel ... -after-brace/0: write ... -after-brace/0: read ... -run/0: instruction run1001/0 -run/0: {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel"]} <- init-channel/108 {name: "3", value: 3, type: 0, properties: ["3": "literal", "capacity": ]} -run/0: instruction init-channel/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/44 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} -mem/0: array size is 30 -mem/0: new alloc: 1000 -run/0: instruction init-channel/1 -run/0: {name: "result", value: 1, type: 2-10, properties: ["result": "address":"channel"]} <- new/44 {name: "channel", value: 10, type: 0, properties: ["channel": "type"]} -mem/0: new alloc: 1031 -mem/0: storing 1031 in location 1002 -run/0: instruction init-channel/2 -run/0: {name: "full", value: 2, type: 2-1, properties: ["full": "address":"integer"]} <- get-address/25 {name: "result", value: 1, type: 2-10, properties: ["result": "address":"channel", "deref": ]}, {name: "first-full", value: 0, type: 0, properties: ["first-full": "offset"]} -run/0: ingredient 0 is result -mem/0: location 1002 is 1031 -run/0: ingredient 1 is first-full -run/0: address to copy is 1031 -run/0: product 0 is 1031 -mem/0: storing 1031 in location 1003 -run/0: instruction init-channel/3 -run/0: {name: "full", value: 2, type: 2-1, properties: ["full": "address":"integer", "deref": ]} <- copy/1 {name: "0", value: 0, type: 0, properties: ["0": "literal"]} -run/0: ingredient 0 is 0 -mem/0: location 1003 is 1031 -mem/0: storing 0 in location 1031 -run/0: instruction init-channel/4 -run/0: {name: "free", value: 3, type: 2-1, properties: ["free": "address":"integer"]} <- get-address/25 {name: "result", value: 1, type: 2-10, properties: ["result": "address":"channel", "deref": ]}, {name: "first-free", value: 1, type: 0, properties: ["first-free": "offset"]} -run/0: ingredient 0 is result -mem/0: location 1002 is 1031 -run/0: ingredient 1 is first-free -run/0: address to copy is 1032 -run/0: product 0 is 1032 -mem/0: storing 1032 in location 1004 -run/0: instruction init-channel/5 -run/0: {name: "free", value: 3, type: 2-1, properties: ["free": "address":"integer", "deref": ]} <- copy/1 {name: "0", value: 0, type: 0, properties: ["0": "literal"]} -run/0: ingredient 0 is 0 -mem/0: location 1004 is 1032 -mem/0: storing 0 in location 1032 -run/0: instruction init-channel/6 -run/0: {name: "capacity", value: 4, type: 1, properties: ["capacity": "integer"]} <- next-ingredient/30 -run/0: product 0 is 3 -mem/0: storing 3 in location 1005 -run/0: instruction init-channel/7 -run/0: {name: "capacity", value: 4, type: 1, properties: ["capacity": "integer"]} <- add/2 {name: "capacity", value: 4, type: 1, properties: ["capacity": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is capacity -mem/0: location 1005 is 3 -run/0: ingredient 1 is 1 -run/0: product 0 is 4 -mem/0: storing 4 in location 1005 -run/0: instruction init-channel/8 -run/0: {name: "dest", value: 5, type: 2-2-5-1, properties: ["dest": "address":"address":"array":"location"]} <- get-address/25 {name: "result", value: 1, type: 2-10, properties: ["result": "address":"channel", "deref": ]}, {name: "data", value: 2, type: 0, properties: ["data": "offset"]} -run/0: ingredient 0 is result -mem/0: location 1002 is 1031 -run/0: ingredient 1 is data -run/0: address to copy is 1033 -run/0: product 0 is 1033 -mem/0: storing 1033 in location 1006 -run/0: instruction init-channel/9 -run/0: {name: "dest", value: 5, type: 2-2-5-1, properties: ["dest": "address":"address":"array":"location", "deref": ]} <- new/44 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "capacity", value: 4, type: 1, properties: ["capacity": "integer"]} -mem/0: location 1005 is 4 -mem/0: array size is 4 -mem/0: new alloc: 1034 -mem/0: location 1006 is 1033 -mem/0: storing 1034 in location 1033 -run/0: instruction init-channel/10 -run/0: reply/33 {name: "result", value: 1, type: 2-10, properties: ["result": "address":"channel"]} -mem/0: location 1002 is 1031 -run/0: result 0 is 1031 -mem/0: storing 1031 in location 1 -run/0: instruction run1001/1 -run/0: {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel"]} <- write/109 {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel"]}, {name: "34", value: 34, type: 0, properties: ["34": "literal"]} -mem/0: location 1 is 1031 -run/0: instruction write/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/44 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} -mem/0: array size is 30 -mem/0: new alloc: 1039 -run/0: instruction write/1 -run/0: {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} <- next-ingredient/30 -run/0: product 0 is 1031 -mem/0: storing 1031 in location 1041 -run/0: instruction write/2 -run/0: {name: "val", value: 2, type: 1, properties: ["val": "location"]} <- next-ingredient/30 -run/0: product 0 is 34 -mem/0: storing 34 in location 1042 -run/0: instruction write/4 -run/0: {name: "full", value: 3, type: 3, properties: ["full": "boolean"]} <- channel-full?/110 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} -mem/0: location 1041 is 1031 -run/0: instruction channel-full?/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/44 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} -mem/0: array size is 30 -mem/0: new alloc: 1070 -run/0: instruction channel-full?/1 -run/0: {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} <- next-ingredient/30 -run/0: product 0 is 1031 -mem/0: storing 1031 in location 1072 -run/0: instruction channel-full?/2 -run/0: {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]} <- get/24 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "first-free", value: 1, type: 0, properties: ["first-free": "offset"]} -run/0: ingredient 0 is chan -mem/0: location 1072 is 1031 -run/0: ingredient 1 is first-free -run/0: address to copy is 1032 -run/0: its type is 1 -mem/0: location 1032 is 0 -run/0: product 0 is 0 -mem/0: storing 0 in location 1073 -run/0: instruction channel-full?/3 -run/0: {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]} <- add/2 {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is tmp -mem/0: location 1073 is 0 -run/0: ingredient 1 is 1 -run/0: product 0 is 1 -mem/0: storing 1 in location 1073 -run/0: instruction channel-full?/5 -run/0: {name: "len", value: 3, type: 1, properties: ["len": "integer"]} <- channel-capacity/113 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} -mem/0: location 1072 is 1031 -run/0: instruction channel-capacity/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/44 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} -mem/0: array size is 30 -mem/0: new alloc: 1101 -run/0: instruction channel-capacity/1 -run/0: {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} <- next-ingredient/30 -run/0: product 0 is 1031 -mem/0: storing 1031 in location 1103 -run/0: instruction channel-capacity/2 -run/0: {name: "q", value: 2, type: 2-5-1, properties: ["q": "address":"array":"location"]} <- get/24 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "data", value: 2, type: 0, properties: ["data": "offset"]} -run/0: ingredient 0 is chan -mem/0: location 1103 is 1031 -run/0: ingredient 1 is data -run/0: address to copy is 1033 -run/0: its type is 2 -mem/0: location 1033 is 1034 -run/0: product 0 is 1034 -mem/0: storing 1034 in location 1104 -run/0: instruction channel-capacity/3 -run/0: {name: "result", value: 3, type: 1, properties: ["result": "integer"]} <- length/28 {name: "q", value: 2, type: 2-5-1, properties: ["q": "address":"array":"location", "deref": ]} -mem/0: location 1104 is 1034 -mem/0: storing 4 in location 1105 -run/0: instruction channel-capacity/4 -run/0: reply/33 {name: "result", value: 3, type: 1, properties: ["result": "integer"]} -mem/0: location 1105 is 4 -run/0: result 0 is 4 -mem/0: storing 4 in location 1074 -run/0: instruction channel-full?/6 -run/0: {name: "at-end?", value: 4, type: 3, properties: ["at-end?": "boolean"]} <- greater-or-equal/16 {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]}, {name: "len", value: 3, type: 1, properties: ["len": "integer"]} -run/0: ingredient 0 is tmp -mem/0: location 1073 is 1 -run/0: ingredient 1 is len -mem/0: location 1074 is 4 -run/0: product 0 is 0 -mem/0: storing 0 in location 1075 -run/0: instruction channel-full?/7 -run/0: break-unless/12 {name: "at-end?", value: 4, type: 3, properties: ["at-end?": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} -mem/0: location 1075 is 0 -run/0: ingredient 0 is 0 -run/0: ingredient 1 is -run/0: jumping to instruction 9 -run/0: instruction channel-full?/10 -run/0: {name: "full", value: 5, type: 1, properties: ["full": "integer"]} <- get/24 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "first-full", value: 0, type: 0, properties: ["first-full": "offset"]} -run/0: ingredient 0 is chan -mem/0: location 1072 is 1031 -run/0: ingredient 1 is first-full -run/0: address to copy is 1031 -run/0: its type is 1 -mem/0: location 1031 is 0 -run/0: product 0 is 0 -mem/0: storing 0 in location 1076 -run/0: instruction channel-full?/11 -run/0: {name: "result", value: 6, type: 3, properties: ["result": "boolean"]} <- equal/13 {name: "full", value: 5, type: 1, properties: ["full": "integer"]}, {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]} -run/0: ingredient 0 is full -mem/0: location 1076 is 0 -run/0: ingredient 1 is tmp -mem/0: location 1073 is 1 -run/0: product 0 is 0 -mem/0: storing 0 in location 1077 -run/0: instruction channel-full?/12 -run/0: reply/33 {name: "result", value: 6, type: 3, properties: ["result": "boolean"]} -mem/0: location 1077 is 0 -run/0: result 0 is 0 -mem/0: storing 0 in location 1043 -run/0: instruction write/5 -run/0: break-unless/12 {name: "full", value: 3, type: 3, properties: ["full": "boolean"]}, {name: "", value: 2, type: , properties: ["": ]} -mem/0: location 1043 is 0 -run/0: ingredient 0 is 0 -run/0: ingredient 1 is -run/0: jumping to instruction 8 -run/0: instruction write/9 -run/0: {name: "circular-buffer", value: 5, type: 2-5-1, properties: ["circular-buffer": "address":"array":"location"]} <- get/24 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "data", value: 2, type: 0, properties: ["data": "offset"]} -run/0: ingredient 0 is chan -mem/0: location 1041 is 1031 -run/0: ingredient 1 is data -run/0: address to copy is 1033 -run/0: its type is 2 -mem/0: location 1033 is 1034 -run/0: product 0 is 1034 -mem/0: storing 1034 in location 1045 -run/0: instruction write/10 -run/0: {name: "free", value: 6, type: 2-1, properties: ["free": "address":"integer"]} <- get-address/25 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "first-free", value: 1, type: 0, properties: ["first-free": "offset"]} -run/0: ingredient 0 is chan -mem/0: location 1041 is 1031 -run/0: ingredient 1 is first-free -run/0: address to copy is 1032 -run/0: product 0 is 1032 -mem/0: storing 1032 in location 1046 -run/0: instruction write/11 -run/0: {name: "dest", value: 7, type: 2-1, properties: ["dest": "address":"location"]} <- index-address/27 {name: "circular-buffer", value: 5, type: 2-5-1, properties: ["circular-buffer": "address":"array":"location", "deref": ]}, {name: "free", value: 6, type: 2-1, properties: ["free": "address":"integer", "deref": ]} -run/0: ingredient 0 is circular-buffer -mem/0: location 1045 is 1034 -run/0: ingredient 1 is {name: "free", value: 6, type: 2-1, properties: ["free": "address":"integer", "deref": ]} -mem/0: location 1046 is 1032 -mem/0: location 1032 is 0 -run/0: address to copy is 1035 -run/0: product 0 is 1035 -mem/0: storing 1035 in location 1047 -run/0: instruction write/12 -run/0: {name: "dest", value: 7, type: 2-1, properties: ["dest": "address":"location", "deref": ]} <- copy/1 {name: "val", value: 2, type: 1, properties: ["val": "location"]} -run/0: ingredient 0 is val -mem/0: location 1042 is 34 -mem/0: location 1047 is 1035 -mem/0: storing 34 in location 1035 -run/0: instruction write/13 -run/0: {name: "free", value: 6, type: 2-1, properties: ["free": "address":"integer", "deref": ]} <- add/2 {name: "free", value: 6, type: 2-1, properties: ["free": "address":"integer", "deref": ]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is free -mem/0: location 1046 is 1032 -mem/0: location 1032 is 0 -run/0: ingredient 1 is 1 -run/0: product 0 is 1 -mem/0: location 1046 is 1032 -mem/0: storing 1 in location 1032 -run/0: instruction write/15 -run/0: {name: "len", value: 8, type: 1, properties: ["len": "integer"]} <- length/28 {name: "circular-buffer", value: 5, type: 2-5-1, properties: ["circular-buffer": "address":"array":"location", "deref": ]} -mem/0: location 1045 is 1034 -mem/0: storing 4 in location 1048 -run/0: instruction write/16 -run/0: {name: "at-end?", value: 9, type: 3, properties: ["at-end?": "boolean"]} <- greater-or-equal/16 {name: "free", value: 6, type: 2-1, properties: ["free": "address":"integer", "deref": ]}, {name: "len", value: 8, type: 1, properties: ["len": "integer"]} -run/0: ingredient 0 is free -mem/0: location 1046 is 1032 -mem/0: location 1032 is 1 -run/0: ingredient 1 is len -mem/0: location 1048 is 4 -run/0: product 0 is 0 -mem/0: storing 0 in location 1049 -run/0: instruction write/17 -run/0: break-unless/12 {name: "at-end?", value: 9, type: 3, properties: ["at-end?": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} -mem/0: location 1049 is 0 -run/0: ingredient 0 is 0 -run/0: ingredient 1 is -run/0: jumping to instruction 19 -run/0: instruction write/20 -run/0: reply/33 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "same-as-ingredient": "0"]} -mem/0: location 1041 is 1031 -run/0: result 0 is 1031 -mem/0: storing 1031 in location 1 -run/0: instruction run1001/2 -run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]}, {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel"]} <- read/111 {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel"]} -mem/0: location 1 is 1031 -run/0: instruction read/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/44 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} -mem/0: array size is 30 -mem/0: new alloc: 1132 -run/0: instruction read/1 -run/0: {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} <- next-ingredient/30 -run/0: product 0 is 1031 -mem/0: storing 1031 in location 1134 -run/0: instruction read/3 -run/0: {name: "empty", value: 2, type: 3, properties: ["empty": "boolean"]} <- channel-empty?/112 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} -mem/0: location 1134 is 1031 -run/0: instruction channel-empty?/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/44 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} -mem/0: array size is 30 -mem/0: new alloc: 1163 -run/0: instruction channel-empty?/1 -run/0: {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} <- next-ingredient/30 -run/0: product 0 is 1031 -mem/0: storing 1031 in location 1165 -run/0: instruction channel-empty?/2 -run/0: {name: "full", value: 2, type: 1, properties: ["full": "integer"]} <- get/24 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "first-full", value: 0, type: 0, properties: ["first-full": "offset"]} -run/0: ingredient 0 is chan -mem/0: location 1165 is 1031 -run/0: ingredient 1 is first-full -run/0: address to copy is 1031 -run/0: its type is 1 -mem/0: location 1031 is 0 -run/0: product 0 is 0 -mem/0: storing 0 in location 1166 -run/0: instruction channel-empty?/3 -run/0: {name: "free", value: 3, type: 1, properties: ["free": "integer"]} <- get/24 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "first-free", value: 1, type: 0, properties: ["first-free": "offset"]} -run/0: ingredient 0 is chan -mem/0: location 1165 is 1031 -run/0: ingredient 1 is first-free -run/0: address to copy is 1032 -run/0: its type is 1 -mem/0: location 1032 is 1 -run/0: product 0 is 1 -mem/0: storing 1 in location 1167 -run/0: instruction channel-empty?/4 -run/0: {name: "result", value: 4, type: 3, properties: ["result": "boolean"]} <- equal/13 {name: "full", value: 2, type: 1, properties: ["full": "integer"]}, {name: "free", value: 3, type: 1, properties: ["free": "integer"]} -run/0: ingredient 0 is full -mem/0: location 1166 is 0 -run/0: ingredient 1 is free -mem/0: location 1167 is 1 -run/0: product 0 is 0 -mem/0: storing 0 in location 1168 -run/0: instruction channel-empty?/5 -run/0: reply/33 {name: "result", value: 4, type: 3, properties: ["result": "boolean"]} -mem/0: location 1168 is 0 -run/0: result 0 is 0 -mem/0: storing 0 in location 1135 -run/0: instruction read/4 -run/0: break-unless/12 {name: "empty", value: 2, type: 3, properties: ["empty": "boolean"]}, {name: "", value: 2, type: , properties: ["": ]} -mem/0: location 1135 is 0 -run/0: ingredient 0 is 0 -run/0: ingredient 1 is -run/0: jumping to instruction 7 -run/0: instruction read/8 -run/0: {name: "full", value: 4, type: 2-1, properties: ["full": "address":"integer"]} <- get-address/25 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "first-full", value: 0, type: 0, properties: ["first-full": "offset"]} -run/0: ingredient 0 is chan -mem/0: location 1134 is 1031 -run/0: ingredient 1 is first-full -run/0: address to copy is 1031 -run/0: product 0 is 1031 -mem/0: storing 1031 in location 1137 -run/0: instruction read/9 -run/0: {name: "circular-buffer", value: 5, type: 2-5-1, properties: ["circular-buffer": "address":"array":"location"]} <- get/24 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "data", value: 2, type: 0, properties: ["data": "offset"]} -run/0: ingredient 0 is chan -mem/0: location 1134 is 1031 -run/0: ingredient 1 is data -run/0: address to copy is 1033 -run/0: its type is 2 -mem/0: location 1033 is 1034 -run/0: product 0 is 1034 -mem/0: storing 1034 in location 1138 -run/0: instruction read/10 -run/0: {name: "result", value: 6, type: 1, properties: ["result": "location"]} <- index/26 {name: "circular-buffer", value: 5, type: 2-5-1, properties: ["circular-buffer": "address":"array":"location", "deref": ]}, {name: "full", value: 4, type: 2-1, properties: ["full": "address":"integer", "deref": ]} -run/0: ingredient 0 is {name: "circular-buffer", value: 5, type: 2-5-1, properties: ["circular-buffer": "address":"array":"location", "deref": ]} -mem/0: location 1138 is 1034 -run/0: ingredient 1 is {name: "full", value: 4, type: 2-1, properties: ["full": "address":"integer", "deref": ]} -mem/0: location 1137 is 1031 -mem/0: location 1031 is 0 -run/0: address to copy is 1035 -run/0: its type is 1 -mem/0: location 1035 is 34 -run/0: product 0 is 34 -mem/0: storing 34 in location 1139 -run/0: instruction read/11 -run/0: {name: "full", value: 4, type: 2-1, properties: ["full": "address":"integer", "deref": ]} <- add/2 {name: "full", value: 4, type: 2-1, properties: ["full": "address":"integer", "deref": ]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is full -mem/0: location 1137 is 1031 -mem/0: location 1031 is 0 -run/0: ingredient 1 is 1 -run/0: product 0 is 1 -mem/0: location 1137 is 1031 -mem/0: storing 1 in location 1031 -run/0: instruction read/13 -run/0: {name: "len", value: 7, type: 1, properties: ["len": "integer"]} <- length/28 {name: "circular-buffer", value: 5, type: 2-5-1, properties: ["circular-buffer": "address":"array":"location", "deref": ]} -mem/0: location 1138 is 1034 -mem/0: storing 4 in location 1140 -run/0: instruction read/14 -run/0: {name: "at-end?", value: 8, type: 3, properties: ["at-end?": "boolean"]} <- greater-or-equal/16 {name: "full", value: 4, type: 2-1, properties: ["full": "address":"integer", "deref": ]}, {name: "len", value: 7, type: 1, properties: ["len": "integer"]} -run/0: ingredient 0 is full -mem/0: location 1137 is 1031 -mem/0: location 1031 is 1 -run/0: ingredient 1 is len -mem/0: location 1140 is 4 -run/0: product 0 is 0 -mem/0: storing 0 in location 1141 -run/0: instruction read/15 -run/0: break-unless/12 {name: "at-end?", value: 8, type: 3, properties: ["at-end?": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} -mem/0: location 1141 is 0 -run/0: ingredient 0 is 0 -run/0: ingredient 1 is -run/0: jumping to instruction 17 -run/0: instruction read/18 -run/0: reply/33 {name: "result", value: 6, type: 1, properties: ["result": "location"]}, {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "same-as-ingredient": "0"]} -mem/0: location 1139 is 34 -mem/0: location 1134 is 1031 -run/0: result 0 is 34 -mem/0: storing 34 in location 2 -run/0: result 1 is 1031 -mem/0: storing 1031 in location 1 -run/0: instruction channel/1 -run/0: memory-should-contain/46 {name: " - 2 <- 34 - ", value: 0, type: 0, properties: [" - 2 <- 34 - ": "literal-string"]} -run/0: checking location 2 diff --git a/cpp/.traces/channel-initialization b/cpp/.traces/channel-initialization deleted file mode 100644 index cb6d3026..00000000 --- a/cpp/.traces/channel-initialization +++ /dev/null @@ -1,147 +0,0 @@ -parse/0: instruction: run -parse/0: ingredient: {name: " - 1:address:channel <- init-channel 3:literal/capacity - 2:integer <- get 1:address:channel/deref, first-full:offset - 3:integer <- get 1:address:channel/deref, first-free:offset - ", value: 0, type: 0, properties: [" - 1:address:channel <- init-channel 3:literal/capacity - 2:integer <- get 1:address:channel/deref, first-full:offset - 3:integer <- get 1:address:channel/deref, first-free:offset - ": "literal-string"]} -parse/0: instruction: memory-should-contain -parse/0: ingredient: {name: " - 2 <- 0 # first-full - 3 <- 0 # first-free - ", value: 0, type: 0, properties: [" - 2 <- 0 # first-full - 3 <- 0 # first-free - ": "literal-string"]} -after-brace/0: recipe channel-initialization -after-brace/0: run ... -after-brace/0: memory-should-contain ... -new/0: routine allocated memory from 1000 to 101000 -schedule/0: channel-initialization -run/0: instruction channel-initialization/0 -run/0: run/45 {name: " - 1:address:channel <- init-channel 3:literal/capacity - 2:integer <- get 1:address:channel/deref, first-full:offset - 3:integer <- get 1:address:channel/deref, first-free:offset - ", value: 0, type: 0, properties: [" - 1:address:channel <- init-channel 3:literal/capacity - 2:integer <- get 1:address:channel/deref, first-full:offset - 3:integer <- get 1:address:channel/deref, first-free:offset - ": "literal-string"]} -parse/0: instruction: init-channel -parse/0: ingredient: {name: "3", value: 0, type: 0, properties: ["3": "literal", "capacity": ]} -parse/0: product: {name: "1", value: 0, type: 2-10, properties: ["1": "address":"channel"]} -parse/0: instruction: get -parse/0: ingredient: {name: "1", value: 0, type: 2-10, properties: ["1": "address":"channel", "deref": ]} -parse/0: ingredient: {name: "first-full", value: 0, type: 0, properties: ["first-full": "offset"]} -parse/0: product: {name: "2", value: 0, type: 1, properties: ["2": "integer"]} -parse/0: instruction: get -parse/0: ingredient: {name: "1", value: 0, type: 2-10, properties: ["1": "address":"channel", "deref": ]} -parse/0: ingredient: {name: "first-free", value: 0, type: 0, properties: ["first-free": "offset"]} -parse/0: product: {name: "3", value: 0, type: 1, properties: ["3": "integer"]} -name/0: element first-full of type channel is at offset 0 -name/0: element first-free of type channel is at offset 1 -after-brace/0: recipe run1001 -after-brace/0: init-channel ... -after-brace/0: get ... -after-brace/0: get ... -run/0: instruction run1001/0 -run/0: {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel"]} <- init-channel/108 {name: "3", value: 3, type: 0, properties: ["3": "literal", "capacity": ]} -run/0: instruction init-channel/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/44 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} -mem/0: array size is 30 -mem/0: new alloc: 1000 -run/0: instruction init-channel/1 -run/0: {name: "result", value: 1, type: 2-10, properties: ["result": "address":"channel"]} <- new/44 {name: "channel", value: 10, type: 0, properties: ["channel": "type"]} -mem/0: new alloc: 1031 -mem/0: storing 1031 in location 1002 -run/0: instruction init-channel/2 -run/0: {name: "full", value: 2, type: 2-1, properties: ["full": "address":"integer"]} <- get-address/25 {name: "result", value: 1, type: 2-10, properties: ["result": "address":"channel", "deref": ]}, {name: "first-full", value: 0, type: 0, properties: ["first-full": "offset"]} -run/0: ingredient 0 is result -mem/0: location 1002 is 1031 -run/0: ingredient 1 is first-full -run/0: address to copy is 1031 -run/0: product 0 is 1031 -mem/0: storing 1031 in location 1003 -run/0: instruction init-channel/3 -run/0: {name: "full", value: 2, type: 2-1, properties: ["full": "address":"integer", "deref": ]} <- copy/1 {name: "0", value: 0, type: 0, properties: ["0": "literal"]} -run/0: ingredient 0 is 0 -mem/0: location 1003 is 1031 -mem/0: storing 0 in location 1031 -run/0: instruction init-channel/4 -run/0: {name: "free", value: 3, type: 2-1, properties: ["free": "address":"integer"]} <- get-address/25 {name: "result", value: 1, type: 2-10, properties: ["result": "address":"channel", "deref": ]}, {name: "first-free", value: 1, type: 0, properties: ["first-free": "offset"]} -run/0: ingredient 0 is result -mem/0: location 1002 is 1031 -run/0: ingredient 1 is first-free -run/0: address to copy is 1032 -run/0: product 0 is 1032 -mem/0: storing 1032 in location 1004 -run/0: instruction init-channel/5 -run/0: {name: "free", value: 3, type: 2-1, properties: ["free": "address":"integer", "deref": ]} <- copy/1 {name: "0", value: 0, type: 0, properties: ["0": "literal"]} -run/0: ingredient 0 is 0 -mem/0: location 1004 is 1032 -mem/0: storing 0 in location 1032 -run/0: instruction init-channel/6 -run/0: {name: "capacity", value: 4, type: 1, properties: ["capacity": "integer"]} <- next-ingredient/30 -run/0: product 0 is 3 -mem/0: storing 3 in location 1005 -run/0: instruction init-channel/7 -run/0: {name: "capacity", value: 4, type: 1, properties: ["capacity": "integer"]} <- add/2 {name: "capacity", value: 4, type: 1, properties: ["capacity": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is capacity -mem/0: location 1005 is 3 -run/0: ingredient 1 is 1 -run/0: product 0 is 4 -mem/0: storing 4 in location 1005 -run/0: instruction init-channel/8 -run/0: {name: "dest", value: 5, type: 2-2-5-1, properties: ["dest": "address":"address":"array":"location"]} <- get-address/25 {name: "result", value: 1, type: 2-10, properties: ["result": "address":"channel", "deref": ]}, {name: "data", value: 2, type: 0, properties: ["data": "offset"]} -run/0: ingredient 0 is result -mem/0: location 1002 is 1031 -run/0: ingredient 1 is data -run/0: address to copy is 1033 -run/0: product 0 is 1033 -mem/0: storing 1033 in location 1006 -run/0: instruction init-channel/9 -run/0: {name: "dest", value: 5, type: 2-2-5-1, properties: ["dest": "address":"address":"array":"location", "deref": ]} <- new/44 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "capacity", value: 4, type: 1, properties: ["capacity": "integer"]} -mem/0: location 1005 is 4 -mem/0: array size is 4 -mem/0: new alloc: 1034 -mem/0: location 1006 is 1033 -mem/0: storing 1034 in location 1033 -run/0: instruction init-channel/10 -run/0: reply/33 {name: "result", value: 1, type: 2-10, properties: ["result": "address":"channel"]} -mem/0: location 1002 is 1031 -run/0: result 0 is 1031 -mem/0: storing 1031 in location 1 -run/0: instruction run1001/1 -run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- get/24 {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel", "deref": ]}, {name: "first-full", value: 0, type: 0, properties: ["first-full": "offset"]} -run/0: ingredient 0 is 1 -mem/0: location 1 is 1031 -run/0: ingredient 1 is first-full -run/0: address to copy is 1031 -run/0: its type is 1 -mem/0: location 1031 is 0 -run/0: product 0 is 0 -mem/0: storing 0 in location 2 -run/0: instruction run1001/2 -run/0: {name: "3", value: 3, type: 1, properties: ["3": "integer"]} <- get/24 {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel", "deref": ]}, {name: "first-free", value: 1, type: 0, properties: ["first-free": "offset"]} -run/0: ingredient 0 is 1 -mem/0: location 1 is 1031 -run/0: ingredient 1 is first-free -run/0: address to copy is 1032 -run/0: its type is 1 -mem/0: location 1032 is 0 -run/0: product 0 is 0 -mem/0: storing 0 in location 3 -run/0: instruction channel-initialization/1 -run/0: memory-should-contain/46 {name: " - 2 <- 0 # first-full - 3 <- 0 # first-free - ", value: 0, type: 0, properties: [" - 2 <- 0 # first-full - 3 <- 0 # first-free - ": "literal-string"]} -run/0: checking location 2 -run/0: checking location 3 diff --git a/cpp/.traces/channel-new-empty-not-full b/cpp/.traces/channel-new-empty-not-full deleted file mode 100644 index e0a165c2..00000000 --- a/cpp/.traces/channel-new-empty-not-full +++ /dev/null @@ -1,262 +0,0 @@ -parse/0: instruction: run -parse/0: ingredient: {name: " - 1:address:channel <- init-channel 3:literal/capacity - 2:integer <- channel-empty? 1:address:channel - 3:integer <- channel-full? 1:address:channel - ", value: 0, type: 0, properties: [" - 1:address:channel <- init-channel 3:literal/capacity - 2:integer <- channel-empty? 1:address:channel - 3:integer <- channel-full? 1:address:channel - ": "literal-string"]} -parse/0: instruction: memory-should-contain -parse/0: ingredient: {name: " - 2 <- 1 # empty? - 3 <- 0 # full? - ", value: 0, type: 0, properties: [" - 2 <- 1 # empty? - 3 <- 0 # full? - ": "literal-string"]} -after-brace/0: recipe channel-new-empty-not-full -after-brace/0: run ... -after-brace/0: memory-should-contain ... -new/0: routine allocated memory from 1000 to 101000 -schedule/0: channel-new-empty-not-full -run/0: instruction channel-new-empty-not-full/0 -run/0: run/45 {name: " - 1:address:channel <- init-channel 3:literal/capacity - 2:integer <- channel-empty? 1:address:channel - 3:integer <- channel-full? 1:address:channel - ", value: 0, type: 0, properties: [" - 1:address:channel <- init-channel 3:literal/capacity - 2:integer <- channel-empty? 1:address:channel - 3:integer <- channel-full? 1:address:channel - ": "literal-string"]} -parse/0: instruction: init-channel -parse/0: ingredient: {name: "3", value: 0, type: 0, properties: ["3": "literal", "capacity": ]} -parse/0: product: {name: "1", value: 0, type: 2-10, properties: ["1": "address":"channel"]} -parse/0: instruction: channel-empty? -parse/0: ingredient: {name: "1", value: 0, type: 2-10, properties: ["1": "address":"channel"]} -parse/0: product: {name: "2", value: 0, type: 1, properties: ["2": "integer"]} -parse/0: instruction: channel-full? -parse/0: ingredient: {name: "1", value: 0, type: 2-10, properties: ["1": "address":"channel"]} -parse/0: product: {name: "3", value: 0, type: 1, properties: ["3": "integer"]} -after-brace/0: recipe run1001 -after-brace/0: init-channel ... -after-brace/0: channel-empty? ... -after-brace/0: channel-full? ... -run/0: instruction run1001/0 -run/0: {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel"]} <- init-channel/108 {name: "3", value: 3, type: 0, properties: ["3": "literal", "capacity": ]} -run/0: instruction init-channel/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/44 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} -mem/0: array size is 30 -mem/0: new alloc: 1000 -run/0: instruction init-channel/1 -run/0: {name: "result", value: 1, type: 2-10, properties: ["result": "address":"channel"]} <- new/44 {name: "channel", value: 10, type: 0, properties: ["channel": "type"]} -mem/0: new alloc: 1031 -mem/0: storing 1031 in location 1002 -run/0: instruction init-channel/2 -run/0: {name: "full", value: 2, type: 2-1, properties: ["full": "address":"integer"]} <- get-address/25 {name: "result", value: 1, type: 2-10, properties: ["result": "address":"channel", "deref": ]}, {name: "first-full", value: 0, type: 0, properties: ["first-full": "offset"]} -run/0: ingredient 0 is result -mem/0: location 1002 is 1031 -run/0: ingredient 1 is first-full -run/0: address to copy is 1031 -run/0: product 0 is 1031 -mem/0: storing 1031 in location 1003 -run/0: instruction init-channel/3 -run/0: {name: "full", value: 2, type: 2-1, properties: ["full": "address":"integer", "deref": ]} <- copy/1 {name: "0", value: 0, type: 0, properties: ["0": "literal"]} -run/0: ingredient 0 is 0 -mem/0: location 1003 is 1031 -mem/0: storing 0 in location 1031 -run/0: instruction init-channel/4 -run/0: {name: "free", value: 3, type: 2-1, properties: ["free": "address":"integer"]} <- get-address/25 {name: "result", value: 1, type: 2-10, properties: ["result": "address":"channel", "deref": ]}, {name: "first-free", value: 1, type: 0, properties: ["first-free": "offset"]} -run/0: ingredient 0 is result -mem/0: location 1002 is 1031 -run/0: ingredient 1 is first-free -run/0: address to copy is 1032 -run/0: product 0 is 1032 -mem/0: storing 1032 in location 1004 -run/0: instruction init-channel/5 -run/0: {name: "free", value: 3, type: 2-1, properties: ["free": "address":"integer", "deref": ]} <- copy/1 {name: "0", value: 0, type: 0, properties: ["0": "literal"]} -run/0: ingredient 0 is 0 -mem/0: location 1004 is 1032 -mem/0: storing 0 in location 1032 -run/0: instruction init-channel/6 -run/0: {name: "capacity", value: 4, type: 1, properties: ["capacity": "integer"]} <- next-ingredient/30 -run/0: product 0 is 3 -mem/0: storing 3 in location 1005 -run/0: instruction init-channel/7 -run/0: {name: "capacity", value: 4, type: 1, properties: ["capacity": "integer"]} <- add/2 {name: "capacity", value: 4, type: 1, properties: ["capacity": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is capacity -mem/0: location 1005 is 3 -run/0: ingredient 1 is 1 -run/0: product 0 is 4 -mem/0: storing 4 in location 1005 -run/0: instruction init-channel/8 -run/0: {name: "dest", value: 5, type: 2-2-5-1, properties: ["dest": "address":"address":"array":"location"]} <- get-address/25 {name: "result", value: 1, type: 2-10, properties: ["result": "address":"channel", "deref": ]}, {name: "data", value: 2, type: 0, properties: ["data": "offset"]} -run/0: ingredient 0 is result -mem/0: location 1002 is 1031 -run/0: ingredient 1 is data -run/0: address to copy is 1033 -run/0: product 0 is 1033 -mem/0: storing 1033 in location 1006 -run/0: instruction init-channel/9 -run/0: {name: "dest", value: 5, type: 2-2-5-1, properties: ["dest": "address":"address":"array":"location", "deref": ]} <- new/44 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "capacity", value: 4, type: 1, properties: ["capacity": "integer"]} -mem/0: location 1005 is 4 -mem/0: array size is 4 -mem/0: new alloc: 1034 -mem/0: location 1006 is 1033 -mem/0: storing 1034 in location 1033 -run/0: instruction init-channel/10 -run/0: reply/33 {name: "result", value: 1, type: 2-10, properties: ["result": "address":"channel"]} -mem/0: location 1002 is 1031 -run/0: result 0 is 1031 -mem/0: storing 1031 in location 1 -run/0: instruction run1001/1 -run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- channel-empty?/112 {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel"]} -mem/0: location 1 is 1031 -run/0: instruction channel-empty?/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/44 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} -mem/0: array size is 30 -mem/0: new alloc: 1039 -run/0: instruction channel-empty?/1 -run/0: {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} <- next-ingredient/30 -run/0: product 0 is 1031 -mem/0: storing 1031 in location 1041 -run/0: instruction channel-empty?/2 -run/0: {name: "full", value: 2, type: 1, properties: ["full": "integer"]} <- get/24 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "first-full", value: 0, type: 0, properties: ["first-full": "offset"]} -run/0: ingredient 0 is chan -mem/0: location 1041 is 1031 -run/0: ingredient 1 is first-full -run/0: address to copy is 1031 -run/0: its type is 1 -mem/0: location 1031 is 0 -run/0: product 0 is 0 -mem/0: storing 0 in location 1042 -run/0: instruction channel-empty?/3 -run/0: {name: "free", value: 3, type: 1, properties: ["free": "integer"]} <- get/24 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "first-free", value: 1, type: 0, properties: ["first-free": "offset"]} -run/0: ingredient 0 is chan -mem/0: location 1041 is 1031 -run/0: ingredient 1 is first-free -run/0: address to copy is 1032 -run/0: its type is 1 -mem/0: location 1032 is 0 -run/0: product 0 is 0 -mem/0: storing 0 in location 1043 -run/0: instruction channel-empty?/4 -run/0: {name: "result", value: 4, type: 3, properties: ["result": "boolean"]} <- equal/13 {name: "full", value: 2, type: 1, properties: ["full": "integer"]}, {name: "free", value: 3, type: 1, properties: ["free": "integer"]} -run/0: ingredient 0 is full -mem/0: location 1042 is 0 -run/0: ingredient 1 is free -mem/0: location 1043 is 0 -run/0: product 0 is 1 -mem/0: storing 1 in location 1044 -run/0: instruction channel-empty?/5 -run/0: reply/33 {name: "result", value: 4, type: 3, properties: ["result": "boolean"]} -mem/0: location 1044 is 1 -run/0: result 0 is 1 -mem/0: storing 1 in location 2 -run/0: instruction run1001/2 -run/0: {name: "3", value: 3, type: 1, properties: ["3": "integer"]} <- channel-full?/110 {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel"]} -mem/0: location 1 is 1031 -run/0: instruction channel-full?/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/44 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} -mem/0: array size is 30 -mem/0: new alloc: 1070 -run/0: instruction channel-full?/1 -run/0: {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} <- next-ingredient/30 -run/0: product 0 is 1031 -mem/0: storing 1031 in location 1072 -run/0: instruction channel-full?/2 -run/0: {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]} <- get/24 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "first-free", value: 1, type: 0, properties: ["first-free": "offset"]} -run/0: ingredient 0 is chan -mem/0: location 1072 is 1031 -run/0: ingredient 1 is first-free -run/0: address to copy is 1032 -run/0: its type is 1 -mem/0: location 1032 is 0 -run/0: product 0 is 0 -mem/0: storing 0 in location 1073 -run/0: instruction channel-full?/3 -run/0: {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]} <- add/2 {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is tmp -mem/0: location 1073 is 0 -run/0: ingredient 1 is 1 -run/0: product 0 is 1 -mem/0: storing 1 in location 1073 -run/0: instruction channel-full?/5 -run/0: {name: "len", value: 3, type: 1, properties: ["len": "integer"]} <- channel-capacity/113 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} -mem/0: location 1072 is 1031 -run/0: instruction channel-capacity/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/44 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} -mem/0: array size is 30 -mem/0: new alloc: 1101 -run/0: instruction channel-capacity/1 -run/0: {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} <- next-ingredient/30 -run/0: product 0 is 1031 -mem/0: storing 1031 in location 1103 -run/0: instruction channel-capacity/2 -run/0: {name: "q", value: 2, type: 2-5-1, properties: ["q": "address":"array":"location"]} <- get/24 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "data", value: 2, type: 0, properties: ["data": "offset"]} -run/0: ingredient 0 is chan -mem/0: location 1103 is 1031 -run/0: ingredient 1 is data -run/0: address to copy is 1033 -run/0: its type is 2 -mem/0: location 1033 is 1034 -run/0: product 0 is 1034 -mem/0: storing 1034 in location 1104 -run/0: instruction channel-capacity/3 -run/0: {name: "result", value: 3, type: 1, properties: ["result": "integer"]} <- length/28 {name: "q", value: 2, type: 2-5-1, properties: ["q": "address":"array":"location", "deref": ]} -mem/0: location 1104 is 1034 -mem/0: storing 4 in location 1105 -run/0: instruction channel-capacity/4 -run/0: reply/33 {name: "result", value: 3, type: 1, properties: ["result": "integer"]} -mem/0: location 1105 is 4 -run/0: result 0 is 4 -mem/0: storing 4 in location 1074 -run/0: instruction channel-full?/6 -run/0: {name: "at-end?", value: 4, type: 3, properties: ["at-end?": "boolean"]} <- greater-or-equal/16 {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]}, {name: "len", value: 3, type: 1, properties: ["len": "integer"]} -run/0: ingredient 0 is tmp -mem/0: location 1073 is 1 -run/0: ingredient 1 is len -mem/0: location 1074 is 4 -run/0: product 0 is 0 -mem/0: storing 0 in location 1075 -run/0: instruction channel-full?/7 -run/0: break-unless/12 {name: "at-end?", value: 4, type: 3, properties: ["at-end?": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} -mem/0: location 1075 is 0 -run/0: ingredient 0 is 0 -run/0: ingredient 1 is -run/0: jumping to instruction 9 -run/0: instruction channel-full?/10 -run/0: {name: "full", value: 5, type: 1, properties: ["full": "integer"]} <- get/24 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "first-full", value: 0, type: 0, properties: ["first-full": "offset"]} -run/0: ingredient 0 is chan -mem/0: location 1072 is 1031 -run/0: ingredient 1 is first-full -run/0: address to copy is 1031 -run/0: its type is 1 -mem/0: location 1031 is 0 -run/0: product 0 is 0 -mem/0: storing 0 in location 1076 -run/0: instruction channel-full?/11 -run/0: {name: "result", value: 6, type: 3, properties: ["result": "boolean"]} <- equal/13 {name: "full", value: 5, type: 1, properties: ["full": "integer"]}, {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]} -run/0: ingredient 0 is full -mem/0: location 1076 is 0 -run/0: ingredient 1 is tmp -mem/0: location 1073 is 1 -run/0: product 0 is 0 -mem/0: storing 0 in location 1077 -run/0: instruction channel-full?/12 -run/0: reply/33 {name: "result", value: 6, type: 3, properties: ["result": "boolean"]} -mem/0: location 1077 is 0 -run/0: result 0 is 0 -mem/0: storing 0 in location 3 -run/0: instruction channel-new-empty-not-full/1 -run/0: memory-should-contain/46 {name: " - 2 <- 1 # empty? - 3 <- 0 # full? - ", value: 0, type: 0, properties: [" - 2 <- 1 # empty? - 3 <- 0 # full? - ": "literal-string"]} -run/0: checking location 2 -run/0: checking location 3 diff --git a/cpp/.traces/channel-read-increments-full b/cpp/.traces/channel-read-increments-full deleted file mode 100644 index 61cc50a4..00000000 --- a/cpp/.traces/channel-read-increments-full +++ /dev/null @@ -1,474 +0,0 @@ -parse/0: instruction: run -parse/0: ingredient: {name: " - 1:address:channel <- init-channel 3:literal/capacity - 1:address:channel <- write 1:address:channel, 34:literal - _, 1:address:channel <- read 1:address:channel - 2:integer <- get 1:address:channel/deref, first-full:offset - 3:integer <- get 1:address:channel/deref, first-free:offset - ", value: 0, type: 0, properties: [" - 1:address:channel <- init-channel 3:literal/capacity - 1:address:channel <- write 1:address:channel, 34:literal - _, 1:address:channel <- read 1:address:channel - 2:integer <- get 1:address:channel/deref, first-full:offset - 3:integer <- get 1:address:channel/deref, first-free:offset - ": "literal-string"]} -parse/0: instruction: memory-should-contain -parse/0: ingredient: {name: " - 2 <- 1 # first-full - 3 <- 1 # first-free - ", value: 0, type: 0, properties: [" - 2 <- 1 # first-full - 3 <- 1 # first-free - ": "literal-string"]} -after-brace/0: recipe channel-read-increments-full -after-brace/0: run ... -after-brace/0: memory-should-contain ... -new/0: routine allocated memory from 1000 to 101000 -schedule/0: channel-read-increments-full -run/0: instruction channel-read-increments-full/0 -run/0: run/45 {name: " - 1:address:channel <- init-channel 3:literal/capacity - 1:address:channel <- write 1:address:channel, 34:literal - _, 1:address:channel <- read 1:address:channel - 2:integer <- get 1:address:channel/deref, first-full:offset - 3:integer <- get 1:address:channel/deref, first-free:offset - ", value: 0, type: 0, properties: [" - 1:address:channel <- init-channel 3:literal/capacity - 1:address:channel <- write 1:address:channel, 34:literal - _, 1:address:channel <- read 1:address:channel - 2:integer <- get 1:address:channel/deref, first-full:offset - 3:integer <- get 1:address:channel/deref, first-free:offset - ": "literal-string"]} -parse/0: instruction: init-channel -parse/0: ingredient: {name: "3", value: 0, type: 0, properties: ["3": "literal", "capacity": ]} -parse/0: product: {name: "1", value: 0, type: 2-10, properties: ["1": "address":"channel"]} -parse/0: instruction: write -parse/0: ingredient: {name: "1", value: 0, type: 2-10, properties: ["1": "address":"channel"]} -parse/0: ingredient: {name: "34", value: 0, type: 0, properties: ["34": "literal"]} -parse/0: product: {name: "1", value: 0, type: 2-10, properties: ["1": "address":"channel"]} -parse/0: instruction: read -parse/0: ingredient: {name: "1", value: 0, type: 2-10, properties: ["1": "address":"channel"]} -parse/0: product: {name: "_", value: 0, type: 0, properties: ["_": "dummy"]} -parse/0: product: {name: "1", value: 0, type: 2-10, properties: ["1": "address":"channel"]} -parse/0: instruction: get -parse/0: ingredient: {name: "1", value: 0, type: 2-10, properties: ["1": "address":"channel", "deref": ]} -parse/0: ingredient: {name: "first-full", value: 0, type: 0, properties: ["first-full": "offset"]} -parse/0: product: {name: "2", value: 0, type: 1, properties: ["2": "integer"]} -parse/0: instruction: get -parse/0: ingredient: {name: "1", value: 0, type: 2-10, properties: ["1": "address":"channel", "deref": ]} -parse/0: ingredient: {name: "first-free", value: 0, type: 0, properties: ["first-free": "offset"]} -parse/0: product: {name: "3", value: 0, type: 1, properties: ["3": "integer"]} -name/0: element first-full of type channel is at offset 0 -name/0: element first-free of type channel is at offset 1 -after-brace/0: recipe run1001 -after-brace/0: init-channel ... -after-brace/0: write ... -after-brace/0: read ... -after-brace/0: get ... -after-brace/0: get ... -run/0: instruction run1001/0 -run/0: {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel"]} <- init-channel/108 {name: "3", value: 3, type: 0, properties: ["3": "literal", "capacity": ]} -run/0: instruction init-channel/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/44 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} -mem/0: array size is 30 -mem/0: new alloc: 1000 -run/0: instruction init-channel/1 -run/0: {name: "result", value: 1, type: 2-10, properties: ["result": "address":"channel"]} <- new/44 {name: "channel", value: 10, type: 0, properties: ["channel": "type"]} -mem/0: new alloc: 1031 -mem/0: storing 1031 in location 1002 -run/0: instruction init-channel/2 -run/0: {name: "full", value: 2, type: 2-1, properties: ["full": "address":"integer"]} <- get-address/25 {name: "result", value: 1, type: 2-10, properties: ["result": "address":"channel", "deref": ]}, {name: "first-full", value: 0, type: 0, properties: ["first-full": "offset"]} -run/0: ingredient 0 is result -mem/0: location 1002 is 1031 -run/0: ingredient 1 is first-full -run/0: address to copy is 1031 -run/0: product 0 is 1031 -mem/0: storing 1031 in location 1003 -run/0: instruction init-channel/3 -run/0: {name: "full", value: 2, type: 2-1, properties: ["full": "address":"integer", "deref": ]} <- copy/1 {name: "0", value: 0, type: 0, properties: ["0": "literal"]} -run/0: ingredient 0 is 0 -mem/0: location 1003 is 1031 -mem/0: storing 0 in location 1031 -run/0: instruction init-channel/4 -run/0: {name: "free", value: 3, type: 2-1, properties: ["free": "address":"integer"]} <- get-address/25 {name: "result", value: 1, type: 2-10, properties: ["result": "address":"channel", "deref": ]}, {name: "first-free", value: 1, type: 0, properties: ["first-free": "offset"]} -run/0: ingredient 0 is result -mem/0: location 1002 is 1031 -run/0: ingredient 1 is first-free -run/0: address to copy is 1032 -run/0: product 0 is 1032 -mem/0: storing 1032 in location 1004 -run/0: instruction init-channel/5 -run/0: {name: "free", value: 3, type: 2-1, properties: ["free": "address":"integer", "deref": ]} <- copy/1 {name: "0", value: 0, type: 0, properties: ["0": "literal"]} -run/0: ingredient 0 is 0 -mem/0: location 1004 is 1032 -mem/0: storing 0 in location 1032 -run/0: instruction init-channel/6 -run/0: {name: "capacity", value: 4, type: 1, properties: ["capacity": "integer"]} <- next-ingredient/30 -run/0: product 0 is 3 -mem/0: storing 3 in location 1005 -run/0: instruction init-channel/7 -run/0: {name: "capacity", value: 4, type: 1, properties: ["capacity": "integer"]} <- add/2 {name: "capacity", value: 4, type: 1, properties: ["capacity": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is capacity -mem/0: location 1005 is 3 -run/0: ingredient 1 is 1 -run/0: product 0 is 4 -mem/0: storing 4 in location 1005 -run/0: instruction init-channel/8 -run/0: {name: "dest", value: 5, type: 2-2-5-1, properties: ["dest": "address":"address":"array":"location"]} <- get-address/25 {name: "result", value: 1, type: 2-10, properties: ["result": "address":"channel", "deref": ]}, {name: "data", value: 2, type: 0, properties: ["data": "offset"]} -run/0: ingredient 0 is result -mem/0: location 1002 is 1031 -run/0: ingredient 1 is data -run/0: address to copy is 1033 -run/0: product 0 is 1033 -mem/0: storing 1033 in location 1006 -run/0: instruction init-channel/9 -run/0: {name: "dest", value: 5, type: 2-2-5-1, properties: ["dest": "address":"address":"array":"location", "deref": ]} <- new/44 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "capacity", value: 4, type: 1, properties: ["capacity": "integer"]} -mem/0: location 1005 is 4 -mem/0: array size is 4 -mem/0: new alloc: 1034 -mem/0: location 1006 is 1033 -mem/0: storing 1034 in location 1033 -run/0: instruction init-channel/10 -run/0: reply/33 {name: "result", value: 1, type: 2-10, properties: ["result": "address":"channel"]} -mem/0: location 1002 is 1031 -run/0: result 0 is 1031 -mem/0: storing 1031 in location 1 -run/0: instruction run1001/1 -run/0: {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel"]} <- write/109 {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel"]}, {name: "34", value: 34, type: 0, properties: ["34": "literal"]} -mem/0: location 1 is 1031 -run/0: instruction write/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/44 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} -mem/0: array size is 30 -mem/0: new alloc: 1039 -run/0: instruction write/1 -run/0: {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} <- next-ingredient/30 -run/0: product 0 is 1031 -mem/0: storing 1031 in location 1041 -run/0: instruction write/2 -run/0: {name: "val", value: 2, type: 1, properties: ["val": "location"]} <- next-ingredient/30 -run/0: product 0 is 34 -mem/0: storing 34 in location 1042 -run/0: instruction write/4 -run/0: {name: "full", value: 3, type: 3, properties: ["full": "boolean"]} <- channel-full?/110 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} -mem/0: location 1041 is 1031 -run/0: instruction channel-full?/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/44 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} -mem/0: array size is 30 -mem/0: new alloc: 1070 -run/0: instruction channel-full?/1 -run/0: {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} <- next-ingredient/30 -run/0: product 0 is 1031 -mem/0: storing 1031 in location 1072 -run/0: instruction channel-full?/2 -run/0: {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]} <- get/24 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "first-free", value: 1, type: 0, properties: ["first-free": "offset"]} -run/0: ingredient 0 is chan -mem/0: location 1072 is 1031 -run/0: ingredient 1 is first-free -run/0: address to copy is 1032 -run/0: its type is 1 -mem/0: location 1032 is 0 -run/0: product 0 is 0 -mem/0: storing 0 in location 1073 -run/0: instruction channel-full?/3 -run/0: {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]} <- add/2 {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is tmp -mem/0: location 1073 is 0 -run/0: ingredient 1 is 1 -run/0: product 0 is 1 -mem/0: storing 1 in location 1073 -run/0: instruction channel-full?/5 -run/0: {name: "len", value: 3, type: 1, properties: ["len": "integer"]} <- channel-capacity/113 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} -mem/0: location 1072 is 1031 -run/0: instruction channel-capacity/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/44 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} -mem/0: array size is 30 -mem/0: new alloc: 1101 -run/0: instruction channel-capacity/1 -run/0: {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} <- next-ingredient/30 -run/0: product 0 is 1031 -mem/0: storing 1031 in location 1103 -run/0: instruction channel-capacity/2 -run/0: {name: "q", value: 2, type: 2-5-1, properties: ["q": "address":"array":"location"]} <- get/24 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "data", value: 2, type: 0, properties: ["data": "offset"]} -run/0: ingredient 0 is chan -mem/0: location 1103 is 1031 -run/0: ingredient 1 is data -run/0: address to copy is 1033 -run/0: its type is 2 -mem/0: location 1033 is 1034 -run/0: product 0 is 1034 -mem/0: storing 1034 in location 1104 -run/0: instruction channel-capacity/3 -run/0: {name: "result", value: 3, type: 1, properties: ["result": "integer"]} <- length/28 {name: "q", value: 2, type: 2-5-1, properties: ["q": "address":"array":"location", "deref": ]} -mem/0: location 1104 is 1034 -mem/0: storing 4 in location 1105 -run/0: instruction channel-capacity/4 -run/0: reply/33 {name: "result", value: 3, type: 1, properties: ["result": "integer"]} -mem/0: location 1105 is 4 -run/0: result 0 is 4 -mem/0: storing 4 in location 1074 -run/0: instruction channel-full?/6 -run/0: {name: "at-end?", value: 4, type: 3, properties: ["at-end?": "boolean"]} <- greater-or-equal/16 {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]}, {name: "len", value: 3, type: 1, properties: ["len": "integer"]} -run/0: ingredient 0 is tmp -mem/0: location 1073 is 1 -run/0: ingredient 1 is len -mem/0: location 1074 is 4 -run/0: product 0 is 0 -mem/0: storing 0 in location 1075 -run/0: instruction channel-full?/7 -run/0: break-unless/12 {name: "at-end?", value: 4, type: 3, properties: ["at-end?": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} -mem/0: location 1075 is 0 -run/0: ingredient 0 is 0 -run/0: ingredient 1 is -run/0: jumping to instruction 9 -run/0: instruction channel-full?/10 -run/0: {name: "full", value: 5, type: 1, properties: ["full": "integer"]} <- get/24 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "first-full", value: 0, type: 0, properties: ["first-full": "offset"]} -run/0: ingredient 0 is chan -mem/0: location 1072 is 1031 -run/0: ingredient 1 is first-full -run/0: address to copy is 1031 -run/0: its type is 1 -mem/0: location 1031 is 0 -run/0: product 0 is 0 -mem/0: storing 0 in location 1076 -run/0: instruction channel-full?/11 -run/0: {name: "result", value: 6, type: 3, properties: ["result": "boolean"]} <- equal/13 {name: "full", value: 5, type: 1, properties: ["full": "integer"]}, {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]} -run/0: ingredient 0 is full -mem/0: location 1076 is 0 -run/0: ingredient 1 is tmp -mem/0: location 1073 is 1 -run/0: product 0 is 0 -mem/0: storing 0 in location 1077 -run/0: instruction channel-full?/12 -run/0: reply/33 {name: "result", value: 6, type: 3, properties: ["result": "boolean"]} -mem/0: location 1077 is 0 -run/0: result 0 is 0 -mem/0: storing 0 in location 1043 -run/0: instruction write/5 -run/0: break-unless/12 {name: "full", value: 3, type: 3, properties: ["full": "boolean"]}, {name: "", value: 2, type: , properties: ["": ]} -mem/0: location 1043 is 0 -run/0: ingredient 0 is 0 -run/0: ingredient 1 is -run/0: jumping to instruction 8 -run/0: instruction write/9 -run/0: {name: "circular-buffer", value: 5, type: 2-5-1, properties: ["circular-buffer": "address":"array":"location"]} <- get/24 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "data", value: 2, type: 0, properties: ["data": "offset"]} -run/0: ingredient 0 is chan -mem/0: location 1041 is 1031 -run/0: ingredient 1 is data -run/0: address to copy is 1033 -run/0: its type is 2 -mem/0: location 1033 is 1034 -run/0: product 0 is 1034 -mem/0: storing 1034 in location 1045 -run/0: instruction write/10 -run/0: {name: "free", value: 6, type: 2-1, properties: ["free": "address":"integer"]} <- get-address/25 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "first-free", value: 1, type: 0, properties: ["first-free": "offset"]} -run/0: ingredient 0 is chan -mem/0: location 1041 is 1031 -run/0: ingredient 1 is first-free -run/0: address to copy is 1032 -run/0: product 0 is 1032 -mem/0: storing 1032 in location 1046 -run/0: instruction write/11 -run/0: {name: "dest", value: 7, type: 2-1, properties: ["dest": "address":"location"]} <- index-address/27 {name: "circular-buffer", value: 5, type: 2-5-1, properties: ["circular-buffer": "address":"array":"location", "deref": ]}, {name: "free", value: 6, type: 2-1, properties: ["free": "address":"integer", "deref": ]} -run/0: ingredient 0 is circular-buffer -mem/0: location 1045 is 1034 -run/0: ingredient 1 is {name: "free", value: 6, type: 2-1, properties: ["free": "address":"integer", "deref": ]} -mem/0: location 1046 is 1032 -mem/0: location 1032 is 0 -run/0: address to copy is 1035 -run/0: product 0 is 1035 -mem/0: storing 1035 in location 1047 -run/0: instruction write/12 -run/0: {name: "dest", value: 7, type: 2-1, properties: ["dest": "address":"location", "deref": ]} <- copy/1 {name: "val", value: 2, type: 1, properties: ["val": "location"]} -run/0: ingredient 0 is val -mem/0: location 1042 is 34 -mem/0: location 1047 is 1035 -mem/0: storing 34 in location 1035 -run/0: instruction write/13 -run/0: {name: "free", value: 6, type: 2-1, properties: ["free": "address":"integer", "deref": ]} <- add/2 {name: "free", value: 6, type: 2-1, properties: ["free": "address":"integer", "deref": ]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is free -mem/0: location 1046 is 1032 -mem/0: location 1032 is 0 -run/0: ingredient 1 is 1 -run/0: product 0 is 1 -mem/0: location 1046 is 1032 -mem/0: storing 1 in location 1032 -run/0: instruction write/15 -run/0: {name: "len", value: 8, type: 1, properties: ["len": "integer"]} <- length/28 {name: "circular-buffer", value: 5, type: 2-5-1, properties: ["circular-buffer": "address":"array":"location", "deref": ]} -mem/0: location 1045 is 1034 -mem/0: storing 4 in location 1048 -run/0: instruction write/16 -run/0: {name: "at-end?", value: 9, type: 3, properties: ["at-end?": "boolean"]} <- greater-or-equal/16 {name: "free", value: 6, type: 2-1, properties: ["free": "address":"integer", "deref": ]}, {name: "len", value: 8, type: 1, properties: ["len": "integer"]} -run/0: ingredient 0 is free -mem/0: location 1046 is 1032 -mem/0: location 1032 is 1 -run/0: ingredient 1 is len -mem/0: location 1048 is 4 -run/0: product 0 is 0 -mem/0: storing 0 in location 1049 -run/0: instruction write/17 -run/0: break-unless/12 {name: "at-end?", value: 9, type: 3, properties: ["at-end?": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} -mem/0: location 1049 is 0 -run/0: ingredient 0 is 0 -run/0: ingredient 1 is -run/0: jumping to instruction 19 -run/0: instruction write/20 -run/0: reply/33 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "same-as-ingredient": "0"]} -mem/0: location 1041 is 1031 -run/0: result 0 is 1031 -mem/0: storing 1031 in location 1 -run/0: instruction run1001/2 -run/0: {name: "_", value: 0, type: 0, properties: ["_": "dummy"]}, {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel"]} <- read/111 {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel"]} -mem/0: location 1 is 1031 -run/0: instruction read/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/44 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} -mem/0: array size is 30 -mem/0: new alloc: 1132 -run/0: instruction read/1 -run/0: {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} <- next-ingredient/30 -run/0: product 0 is 1031 -mem/0: storing 1031 in location 1134 -run/0: instruction read/3 -run/0: {name: "empty", value: 2, type: 3, properties: ["empty": "boolean"]} <- channel-empty?/112 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} -mem/0: location 1134 is 1031 -run/0: instruction channel-empty?/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/44 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} -mem/0: array size is 30 -mem/0: new alloc: 1163 -run/0: instruction channel-empty?/1 -run/0: {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} <- next-ingredient/30 -run/0: product 0 is 1031 -mem/0: storing 1031 in location 1165 -run/0: instruction channel-empty?/2 -run/0: {name: "full", value: 2, type: 1, properties: ["full": "integer"]} <- get/24 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "first-full", value: 0, type: 0, properties: ["first-full": "offset"]} -run/0: ingredient 0 is chan -mem/0: location 1165 is 1031 -run/0: ingredient 1 is first-full -run/0: address to copy is 1031 -run/0: its type is 1 -mem/0: location 1031 is 0 -run/0: product 0 is 0 -mem/0: storing 0 in location 1166 -run/0: instruction channel-empty?/3 -run/0: {name: "free", value: 3, type: 1, properties: ["free": "integer"]} <- get/24 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "first-free", value: 1, type: 0, properties: ["first-free": "offset"]} -run/0: ingredient 0 is chan -mem/0: location 1165 is 1031 -run/0: ingredient 1 is first-free -run/0: address to copy is 1032 -run/0: its type is 1 -mem/0: location 1032 is 1 -run/0: product 0 is 1 -mem/0: storing 1 in location 1167 -run/0: instruction channel-empty?/4 -run/0: {name: "result", value: 4, type: 3, properties: ["result": "boolean"]} <- equal/13 {name: "full", value: 2, type: 1, properties: ["full": "integer"]}, {name: "free", value: 3, type: 1, properties: ["free": "integer"]} -run/0: ingredient 0 is full -mem/0: location 1166 is 0 -run/0: ingredient 1 is free -mem/0: location 1167 is 1 -run/0: product 0 is 0 -mem/0: storing 0 in location 1168 -run/0: instruction channel-empty?/5 -run/0: reply/33 {name: "result", value: 4, type: 3, properties: ["result": "boolean"]} -mem/0: location 1168 is 0 -run/0: result 0 is 0 -mem/0: storing 0 in location 1135 -run/0: instruction read/4 -run/0: break-unless/12 {name: "empty", value: 2, type: 3, properties: ["empty": "boolean"]}, {name: "", value: 2, type: , properties: ["": ]} -mem/0: location 1135 is 0 -run/0: ingredient 0 is 0 -run/0: ingredient 1 is -run/0: jumping to instruction 7 -run/0: instruction read/8 -run/0: {name: "full", value: 4, type: 2-1, properties: ["full": "address":"integer"]} <- get-address/25 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "first-full", value: 0, type: 0, properties: ["first-full": "offset"]} -run/0: ingredient 0 is chan -mem/0: location 1134 is 1031 -run/0: ingredient 1 is first-full -run/0: address to copy is 1031 -run/0: product 0 is 1031 -mem/0: storing 1031 in location 1137 -run/0: instruction read/9 -run/0: {name: "circular-buffer", value: 5, type: 2-5-1, properties: ["circular-buffer": "address":"array":"location"]} <- get/24 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "data", value: 2, type: 0, properties: ["data": "offset"]} -run/0: ingredient 0 is chan -mem/0: location 1134 is 1031 -run/0: ingredient 1 is data -run/0: address to copy is 1033 -run/0: its type is 2 -mem/0: location 1033 is 1034 -run/0: product 0 is 1034 -mem/0: storing 1034 in location 1138 -run/0: instruction read/10 -run/0: {name: "result", value: 6, type: 1, properties: ["result": "location"]} <- index/26 {name: "circular-buffer", value: 5, type: 2-5-1, properties: ["circular-buffer": "address":"array":"location", "deref": ]}, {name: "full", value: 4, type: 2-1, properties: ["full": "address":"integer", "deref": ]} -run/0: ingredient 0 is {name: "circular-buffer", value: 5, type: 2-5-1, properties: ["circular-buffer": "address":"array":"location", "deref": ]} -mem/0: location 1138 is 1034 -run/0: ingredient 1 is {name: "full", value: 4, type: 2-1, properties: ["full": "address":"integer", "deref": ]} -mem/0: location 1137 is 1031 -mem/0: location 1031 is 0 -run/0: address to copy is 1035 -run/0: its type is 1 -mem/0: location 1035 is 34 -run/0: product 0 is 34 -mem/0: storing 34 in location 1139 -run/0: instruction read/11 -run/0: {name: "full", value: 4, type: 2-1, properties: ["full": "address":"integer", "deref": ]} <- add/2 {name: "full", value: 4, type: 2-1, properties: ["full": "address":"integer", "deref": ]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is full -mem/0: location 1137 is 1031 -mem/0: location 1031 is 0 -run/0: ingredient 1 is 1 -run/0: product 0 is 1 -mem/0: location 1137 is 1031 -mem/0: storing 1 in location 1031 -run/0: instruction read/13 -run/0: {name: "len", value: 7, type: 1, properties: ["len": "integer"]} <- length/28 {name: "circular-buffer", value: 5, type: 2-5-1, properties: ["circular-buffer": "address":"array":"location", "deref": ]} -mem/0: location 1138 is 1034 -mem/0: storing 4 in location 1140 -run/0: instruction read/14 -run/0: {name: "at-end?", value: 8, type: 3, properties: ["at-end?": "boolean"]} <- greater-or-equal/16 {name: "full", value: 4, type: 2-1, properties: ["full": "address":"integer", "deref": ]}, {name: "len", value: 7, type: 1, properties: ["len": "integer"]} -run/0: ingredient 0 is full -mem/0: location 1137 is 1031 -mem/0: location 1031 is 1 -run/0: ingredient 1 is len -mem/0: location 1140 is 4 -run/0: product 0 is 0 -mem/0: storing 0 in location 1141 -run/0: instruction read/15 -run/0: break-unless/12 {name: "at-end?", value: 8, type: 3, properties: ["at-end?": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} -mem/0: location 1141 is 0 -run/0: ingredient 0 is 0 -run/0: ingredient 1 is -run/0: jumping to instruction 17 -run/0: instruction read/18 -run/0: reply/33 {name: "result", value: 6, type: 1, properties: ["result": "location"]}, {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "same-as-ingredient": "0"]} -mem/0: location 1139 is 34 -mem/0: location 1134 is 1031 -run/0: result 0 is 34 -run/0: result 1 is 1031 -mem/0: storing 1031 in location 1 -run/0: instruction run1001/3 -run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- get/24 {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel", "deref": ]}, {name: "first-full", value: 0, type: 0, properties: ["first-full": "offset"]} -run/0: ingredient 0 is 1 -mem/0: location 1 is 1031 -run/0: ingredient 1 is first-full -run/0: address to copy is 1031 -run/0: its type is 1 -mem/0: location 1031 is 1 -run/0: product 0 is 1 -mem/0: storing 1 in location 2 -run/0: instruction run1001/4 -run/0: {name: "3", value: 3, type: 1, properties: ["3": "integer"]} <- get/24 {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel", "deref": ]}, {name: "first-free", value: 1, type: 0, properties: ["first-free": "offset"]} -run/0: ingredient 0 is 1 -mem/0: location 1 is 1031 -run/0: ingredient 1 is first-free -run/0: address to copy is 1032 -run/0: its type is 1 -mem/0: location 1032 is 1 -run/0: product 0 is 1 -mem/0: storing 1 in location 3 -run/0: instruction channel-read-increments-full/1 -run/0: memory-should-contain/46 {name: " - 2 <- 1 # first-full - 3 <- 1 # first-free - ", value: 0, type: 0, properties: [" - 2 <- 1 # first-full - 3 <- 1 # first-free - ": "literal-string"]} -run/0: checking location 2 -run/0: checking location 3 diff --git a/cpp/.traces/channel-read-not-full b/cpp/.traces/channel-read-not-full deleted file mode 100644 index 4d9e19b2..00000000 --- a/cpp/.traces/channel-read-not-full +++ /dev/null @@ -1,592 +0,0 @@ -parse/0: instruction: run -parse/0: ingredient: {name: " - 1:address:channel <- init-channel 1:literal/capacity - 1:address:channel <- write 1:address:channel, 34:literal - _, 1:address:channel <- read 1:address:channel - 2:integer <- channel-empty? 1:address:channel - 3:integer <- channel-full? 1:address:channel - ", value: 0, type: 0, properties: [" - 1:address:channel <- init-channel 1:literal/capacity - 1:address:channel <- write 1:address:channel, 34:literal - _, 1:address:channel <- read 1:address:channel - 2:integer <- channel-empty? 1:address:channel - 3:integer <- channel-full? 1:address:channel - ": "literal-string"]} -parse/0: instruction: memory-should-contain -parse/0: ingredient: {name: " - 2 <- 1 # empty? - 3 <- 0 # full? - ", value: 0, type: 0, properties: [" - 2 <- 1 # empty? - 3 <- 0 # full? - ": "literal-string"]} -after-brace/0: recipe channel-read-not-full -after-brace/0: run ... -after-brace/0: memory-should-contain ... -new/0: routine allocated memory from 1000 to 101000 -schedule/0: channel-read-not-full -run/0: instruction channel-read-not-full/0 -run/0: run/45 {name: " - 1:address:channel <- init-channel 1:literal/capacity - 1:address:channel <- write 1:address:channel, 34:literal - _, 1:address:channel <- read 1:address:channel - 2:integer <- channel-empty? 1:address:channel - 3:integer <- channel-full? 1:address:channel - ", value: 0, type: 0, properties: [" - 1:address:channel <- init-channel 1:literal/capacity - 1:address:channel <- write 1:address:channel, 34:literal - _, 1:address:channel <- read 1:address:channel - 2:integer <- channel-empty? 1:address:channel - 3:integer <- channel-full? 1:address:channel - ": "literal-string"]} -parse/0: instruction: init-channel -parse/0: ingredient: {name: "1", value: 0, type: 0, properties: ["1": "literal", "capacity": ]} -parse/0: product: {name: "1", value: 0, type: 2-10, properties: ["1": "address":"channel"]} -parse/0: instruction: write -parse/0: ingredient: {name: "1", value: 0, type: 2-10, properties: ["1": "address":"channel"]} -parse/0: ingredient: {name: "34", value: 0, type: 0, properties: ["34": "literal"]} -parse/0: product: {name: "1", value: 0, type: 2-10, properties: ["1": "address":"channel"]} -parse/0: instruction: read -parse/0: ingredient: {name: "1", value: 0, type: 2-10, properties: ["1": "address":"channel"]} -parse/0: product: {name: "_", value: 0, type: 0, properties: ["_": "dummy"]} -parse/0: product: {name: "1", value: 0, type: 2-10, properties: ["1": "address":"channel"]} -parse/0: instruction: channel-empty? -parse/0: ingredient: {name: "1", value: 0, type: 2-10, properties: ["1": "address":"channel"]} -parse/0: product: {name: "2", value: 0, type: 1, properties: ["2": "integer"]} -parse/0: instruction: channel-full? -parse/0: ingredient: {name: "1", value: 0, type: 2-10, properties: ["1": "address":"channel"]} -parse/0: product: {name: "3", value: 0, type: 1, properties: ["3": "integer"]} -after-brace/0: recipe run1001 -after-brace/0: init-channel ... -after-brace/0: write ... -after-brace/0: read ... -after-brace/0: channel-empty? ... -after-brace/0: channel-full? ... -run/0: instruction run1001/0 -run/0: {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel"]} <- init-channel/108 {name: "1", value: 1, type: 0, properties: ["1": "literal", "capacity": ]} -run/0: instruction init-channel/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/44 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} -mem/0: array size is 30 -mem/0: new alloc: 1000 -run/0: instruction init-channel/1 -run/0: {name: "result", value: 1, type: 2-10, properties: ["result": "address":"channel"]} <- new/44 {name: "channel", value: 10, type: 0, properties: ["channel": "type"]} -mem/0: new alloc: 1031 -mem/0: storing 1031 in location 1002 -run/0: instruction init-channel/2 -run/0: {name: "full", value: 2, type: 2-1, properties: ["full": "address":"integer"]} <- get-address/25 {name: "result", value: 1, type: 2-10, properties: ["result": "address":"channel", "deref": ]}, {name: "first-full", value: 0, type: 0, properties: ["first-full": "offset"]} -run/0: ingredient 0 is result -mem/0: location 1002 is 1031 -run/0: ingredient 1 is first-full -run/0: address to copy is 1031 -run/0: product 0 is 1031 -mem/0: storing 1031 in location 1003 -run/0: instruction init-channel/3 -run/0: {name: "full", value: 2, type: 2-1, properties: ["full": "address":"integer", "deref": ]} <- copy/1 {name: "0", value: 0, type: 0, properties: ["0": "literal"]} -run/0: ingredient 0 is 0 -mem/0: location 1003 is 1031 -mem/0: storing 0 in location 1031 -run/0: instruction init-channel/4 -run/0: {name: "free", value: 3, type: 2-1, properties: ["free": "address":"integer"]} <- get-address/25 {name: "result", value: 1, type: 2-10, properties: ["result": "address":"channel", "deref": ]}, {name: "first-free", value: 1, type: 0, properties: ["first-free": "offset"]} -run/0: ingredient 0 is result -mem/0: location 1002 is 1031 -run/0: ingredient 1 is first-free -run/0: address to copy is 1032 -run/0: product 0 is 1032 -mem/0: storing 1032 in location 1004 -run/0: instruction init-channel/5 -run/0: {name: "free", value: 3, type: 2-1, properties: ["free": "address":"integer", "deref": ]} <- copy/1 {name: "0", value: 0, type: 0, properties: ["0": "literal"]} -run/0: ingredient 0 is 0 -mem/0: location 1004 is 1032 -mem/0: storing 0 in location 1032 -run/0: instruction init-channel/6 -run/0: {name: "capacity", value: 4, type: 1, properties: ["capacity": "integer"]} <- next-ingredient/30 -run/0: product 0 is 1 -mem/0: storing 1 in location 1005 -run/0: instruction init-channel/7 -run/0: {name: "capacity", value: 4, type: 1, properties: ["capacity": "integer"]} <- add/2 {name: "capacity", value: 4, type: 1, properties: ["capacity": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is capacity -mem/0: location 1005 is 1 -run/0: ingredient 1 is 1 -run/0: product 0 is 2 -mem/0: storing 2 in location 1005 -run/0: instruction init-channel/8 -run/0: {name: "dest", value: 5, type: 2-2-5-1, properties: ["dest": "address":"address":"array":"location"]} <- get-address/25 {name: "result", value: 1, type: 2-10, properties: ["result": "address":"channel", "deref": ]}, {name: "data", value: 2, type: 0, properties: ["data": "offset"]} -run/0: ingredient 0 is result -mem/0: location 1002 is 1031 -run/0: ingredient 1 is data -run/0: address to copy is 1033 -run/0: product 0 is 1033 -mem/0: storing 1033 in location 1006 -run/0: instruction init-channel/9 -run/0: {name: "dest", value: 5, type: 2-2-5-1, properties: ["dest": "address":"address":"array":"location", "deref": ]} <- new/44 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "capacity", value: 4, type: 1, properties: ["capacity": "integer"]} -mem/0: location 1005 is 2 -mem/0: array size is 2 -mem/0: new alloc: 1034 -mem/0: location 1006 is 1033 -mem/0: storing 1034 in location 1033 -run/0: instruction init-channel/10 -run/0: reply/33 {name: "result", value: 1, type: 2-10, properties: ["result": "address":"channel"]} -mem/0: location 1002 is 1031 -run/0: result 0 is 1031 -mem/0: storing 1031 in location 1 -run/0: instruction run1001/1 -run/0: {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel"]} <- write/109 {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel"]}, {name: "34", value: 34, type: 0, properties: ["34": "literal"]} -mem/0: location 1 is 1031 -run/0: instruction write/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/44 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} -mem/0: array size is 30 -mem/0: new alloc: 1037 -run/0: instruction write/1 -run/0: {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} <- next-ingredient/30 -run/0: product 0 is 1031 -mem/0: storing 1031 in location 1039 -run/0: instruction write/2 -run/0: {name: "val", value: 2, type: 1, properties: ["val": "location"]} <- next-ingredient/30 -run/0: product 0 is 34 -mem/0: storing 34 in location 1040 -run/0: instruction write/4 -run/0: {name: "full", value: 3, type: 3, properties: ["full": "boolean"]} <- channel-full?/110 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} -mem/0: location 1039 is 1031 -run/0: instruction channel-full?/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/44 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} -mem/0: array size is 30 -mem/0: new alloc: 1068 -run/0: instruction channel-full?/1 -run/0: {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} <- next-ingredient/30 -run/0: product 0 is 1031 -mem/0: storing 1031 in location 1070 -run/0: instruction channel-full?/2 -run/0: {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]} <- get/24 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "first-free", value: 1, type: 0, properties: ["first-free": "offset"]} -run/0: ingredient 0 is chan -mem/0: location 1070 is 1031 -run/0: ingredient 1 is first-free -run/0: address to copy is 1032 -run/0: its type is 1 -mem/0: location 1032 is 0 -run/0: product 0 is 0 -mem/0: storing 0 in location 1071 -run/0: instruction channel-full?/3 -run/0: {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]} <- add/2 {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is tmp -mem/0: location 1071 is 0 -run/0: ingredient 1 is 1 -run/0: product 0 is 1 -mem/0: storing 1 in location 1071 -run/0: instruction channel-full?/5 -run/0: {name: "len", value: 3, type: 1, properties: ["len": "integer"]} <- channel-capacity/113 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} -mem/0: location 1070 is 1031 -run/0: instruction channel-capacity/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/44 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} -mem/0: array size is 30 -mem/0: new alloc: 1099 -run/0: instruction channel-capacity/1 -run/0: {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} <- next-ingredient/30 -run/0: product 0 is 1031 -mem/0: storing 1031 in location 1101 -run/0: instruction channel-capacity/2 -run/0: {name: "q", value: 2, type: 2-5-1, properties: ["q": "address":"array":"location"]} <- get/24 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "data", value: 2, type: 0, properties: ["data": "offset"]} -run/0: ingredient 0 is chan -mem/0: location 1101 is 1031 -run/0: ingredient 1 is data -run/0: address to copy is 1033 -run/0: its type is 2 -mem/0: location 1033 is 1034 -run/0: product 0 is 1034 -mem/0: storing 1034 in location 1102 -run/0: instruction channel-capacity/3 -run/0: {name: "result", value: 3, type: 1, properties: ["result": "integer"]} <- length/28 {name: "q", value: 2, type: 2-5-1, properties: ["q": "address":"array":"location", "deref": ]} -mem/0: location 1102 is 1034 -mem/0: storing 2 in location 1103 -run/0: instruction channel-capacity/4 -run/0: reply/33 {name: "result", value: 3, type: 1, properties: ["result": "integer"]} -mem/0: location 1103 is 2 -run/0: result 0 is 2 -mem/0: storing 2 in location 1072 -run/0: instruction channel-full?/6 -run/0: {name: "at-end?", value: 4, type: 3, properties: ["at-end?": "boolean"]} <- greater-or-equal/16 {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]}, {name: "len", value: 3, type: 1, properties: ["len": "integer"]} -run/0: ingredient 0 is tmp -mem/0: location 1071 is 1 -run/0: ingredient 1 is len -mem/0: location 1072 is 2 -run/0: product 0 is 0 -mem/0: storing 0 in location 1073 -run/0: instruction channel-full?/7 -run/0: break-unless/12 {name: "at-end?", value: 4, type: 3, properties: ["at-end?": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} -mem/0: location 1073 is 0 -run/0: ingredient 0 is 0 -run/0: ingredient 1 is -run/0: jumping to instruction 9 -run/0: instruction channel-full?/10 -run/0: {name: "full", value: 5, type: 1, properties: ["full": "integer"]} <- get/24 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "first-full", value: 0, type: 0, properties: ["first-full": "offset"]} -run/0: ingredient 0 is chan -mem/0: location 1070 is 1031 -run/0: ingredient 1 is first-full -run/0: address to copy is 1031 -run/0: its type is 1 -mem/0: location 1031 is 0 -run/0: product 0 is 0 -mem/0: storing 0 in location 1074 -run/0: instruction channel-full?/11 -run/0: {name: "result", value: 6, type: 3, properties: ["result": "boolean"]} <- equal/13 {name: "full", value: 5, type: 1, properties: ["full": "integer"]}, {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]} -run/0: ingredient 0 is full -mem/0: location 1074 is 0 -run/0: ingredient 1 is tmp -mem/0: location 1071 is 1 -run/0: product 0 is 0 -mem/0: storing 0 in location 1075 -run/0: instruction channel-full?/12 -run/0: reply/33 {name: "result", value: 6, type: 3, properties: ["result": "boolean"]} -mem/0: location 1075 is 0 -run/0: result 0 is 0 -mem/0: storing 0 in location 1041 -run/0: instruction write/5 -run/0: break-unless/12 {name: "full", value: 3, type: 3, properties: ["full": "boolean"]}, {name: "", value: 2, type: , properties: ["": ]} -mem/0: location 1041 is 0 -run/0: ingredient 0 is 0 -run/0: ingredient 1 is -run/0: jumping to instruction 8 -run/0: instruction write/9 -run/0: {name: "circular-buffer", value: 5, type: 2-5-1, properties: ["circular-buffer": "address":"array":"location"]} <- get/24 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "data", value: 2, type: 0, properties: ["data": "offset"]} -run/0: ingredient 0 is chan -mem/0: location 1039 is 1031 -run/0: ingredient 1 is data -run/0: address to copy is 1033 -run/0: its type is 2 -mem/0: location 1033 is 1034 -run/0: product 0 is 1034 -mem/0: storing 1034 in location 1043 -run/0: instruction write/10 -run/0: {name: "free", value: 6, type: 2-1, properties: ["free": "address":"integer"]} <- get-address/25 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "first-free", value: 1, type: 0, properties: ["first-free": "offset"]} -run/0: ingredient 0 is chan -mem/0: location 1039 is 1031 -run/0: ingredient 1 is first-free -run/0: address to copy is 1032 -run/0: product 0 is 1032 -mem/0: storing 1032 in location 1044 -run/0: instruction write/11 -run/0: {name: "dest", value: 7, type: 2-1, properties: ["dest": "address":"location"]} <- index-address/27 {name: "circular-buffer", value: 5, type: 2-5-1, properties: ["circular-buffer": "address":"array":"location", "deref": ]}, {name: "free", value: 6, type: 2-1, properties: ["free": "address":"integer", "deref": ]} -run/0: ingredient 0 is circular-buffer -mem/0: location 1043 is 1034 -run/0: ingredient 1 is {name: "free", value: 6, type: 2-1, properties: ["free": "address":"integer", "deref": ]} -mem/0: location 1044 is 1032 -mem/0: location 1032 is 0 -run/0: address to copy is 1035 -run/0: product 0 is 1035 -mem/0: storing 1035 in location 1045 -run/0: instruction write/12 -run/0: {name: "dest", value: 7, type: 2-1, properties: ["dest": "address":"location", "deref": ]} <- copy/1 {name: "val", value: 2, type: 1, properties: ["val": "location"]} -run/0: ingredient 0 is val -mem/0: location 1040 is 34 -mem/0: location 1045 is 1035 -mem/0: storing 34 in location 1035 -run/0: instruction write/13 -run/0: {name: "free", value: 6, type: 2-1, properties: ["free": "address":"integer", "deref": ]} <- add/2 {name: "free", value: 6, type: 2-1, properties: ["free": "address":"integer", "deref": ]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is free -mem/0: location 1044 is 1032 -mem/0: location 1032 is 0 -run/0: ingredient 1 is 1 -run/0: product 0 is 1 -mem/0: location 1044 is 1032 -mem/0: storing 1 in location 1032 -run/0: instruction write/15 -run/0: {name: "len", value: 8, type: 1, properties: ["len": "integer"]} <- length/28 {name: "circular-buffer", value: 5, type: 2-5-1, properties: ["circular-buffer": "address":"array":"location", "deref": ]} -mem/0: location 1043 is 1034 -mem/0: storing 2 in location 1046 -run/0: instruction write/16 -run/0: {name: "at-end?", value: 9, type: 3, properties: ["at-end?": "boolean"]} <- greater-or-equal/16 {name: "free", value: 6, type: 2-1, properties: ["free": "address":"integer", "deref": ]}, {name: "len", value: 8, type: 1, properties: ["len": "integer"]} -run/0: ingredient 0 is free -mem/0: location 1044 is 1032 -mem/0: location 1032 is 1 -run/0: ingredient 1 is len -mem/0: location 1046 is 2 -run/0: product 0 is 0 -mem/0: storing 0 in location 1047 -run/0: instruction write/17 -run/0: break-unless/12 {name: "at-end?", value: 9, type: 3, properties: ["at-end?": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} -mem/0: location 1047 is 0 -run/0: ingredient 0 is 0 -run/0: ingredient 1 is -run/0: jumping to instruction 19 -run/0: instruction write/20 -run/0: reply/33 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "same-as-ingredient": "0"]} -mem/0: location 1039 is 1031 -run/0: result 0 is 1031 -mem/0: storing 1031 in location 1 -run/0: instruction run1001/2 -run/0: {name: "_", value: 0, type: 0, properties: ["_": "dummy"]}, {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel"]} <- read/111 {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel"]} -mem/0: location 1 is 1031 -run/0: instruction read/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/44 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} -mem/0: array size is 30 -mem/0: new alloc: 1130 -run/0: instruction read/1 -run/0: {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} <- next-ingredient/30 -run/0: product 0 is 1031 -mem/0: storing 1031 in location 1132 -run/0: instruction read/3 -run/0: {name: "empty", value: 2, type: 3, properties: ["empty": "boolean"]} <- channel-empty?/112 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} -mem/0: location 1132 is 1031 -run/0: instruction channel-empty?/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/44 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} -mem/0: array size is 30 -mem/0: new alloc: 1161 -run/0: instruction channel-empty?/1 -run/0: {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} <- next-ingredient/30 -run/0: product 0 is 1031 -mem/0: storing 1031 in location 1163 -run/0: instruction channel-empty?/2 -run/0: {name: "full", value: 2, type: 1, properties: ["full": "integer"]} <- get/24 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "first-full", value: 0, type: 0, properties: ["first-full": "offset"]} -run/0: ingredient 0 is chan -mem/0: location 1163 is 1031 -run/0: ingredient 1 is first-full -run/0: address to copy is 1031 -run/0: its type is 1 -mem/0: location 1031 is 0 -run/0: product 0 is 0 -mem/0: storing 0 in location 1164 -run/0: instruction channel-empty?/3 -run/0: {name: "free", value: 3, type: 1, properties: ["free": "integer"]} <- get/24 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "first-free", value: 1, type: 0, properties: ["first-free": "offset"]} -run/0: ingredient 0 is chan -mem/0: location 1163 is 1031 -run/0: ingredient 1 is first-free -run/0: address to copy is 1032 -run/0: its type is 1 -mem/0: location 1032 is 1 -run/0: product 0 is 1 -mem/0: storing 1 in location 1165 -run/0: instruction channel-empty?/4 -run/0: {name: "result", value: 4, type: 3, properties: ["result": "boolean"]} <- equal/13 {name: "full", value: 2, type: 1, properties: ["full": "integer"]}, {name: "free", value: 3, type: 1, properties: ["free": "integer"]} -run/0: ingredient 0 is full -mem/0: location 1164 is 0 -run/0: ingredient 1 is free -mem/0: location 1165 is 1 -run/0: product 0 is 0 -mem/0: storing 0 in location 1166 -run/0: instruction channel-empty?/5 -run/0: reply/33 {name: "result", value: 4, type: 3, properties: ["result": "boolean"]} -mem/0: location 1166 is 0 -run/0: result 0 is 0 -mem/0: storing 0 in location 1133 -run/0: instruction read/4 -run/0: break-unless/12 {name: "empty", value: 2, type: 3, properties: ["empty": "boolean"]}, {name: "", value: 2, type: , properties: ["": ]} -mem/0: location 1133 is 0 -run/0: ingredient 0 is 0 -run/0: ingredient 1 is -run/0: jumping to instruction 7 -run/0: instruction read/8 -run/0: {name: "full", value: 4, type: 2-1, properties: ["full": "address":"integer"]} <- get-address/25 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "first-full", value: 0, type: 0, properties: ["first-full": "offset"]} -run/0: ingredient 0 is chan -mem/0: location 1132 is 1031 -run/0: ingredient 1 is first-full -run/0: address to copy is 1031 -run/0: product 0 is 1031 -mem/0: storing 1031 in location 1135 -run/0: instruction read/9 -run/0: {name: "circular-buffer", value: 5, type: 2-5-1, properties: ["circular-buffer": "address":"array":"location"]} <- get/24 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "data", value: 2, type: 0, properties: ["data": "offset"]} -run/0: ingredient 0 is chan -mem/0: location 1132 is 1031 -run/0: ingredient 1 is data -run/0: address to copy is 1033 -run/0: its type is 2 -mem/0: location 1033 is 1034 -run/0: product 0 is 1034 -mem/0: storing 1034 in location 1136 -run/0: instruction read/10 -run/0: {name: "result", value: 6, type: 1, properties: ["result": "location"]} <- index/26 {name: "circular-buffer", value: 5, type: 2-5-1, properties: ["circular-buffer": "address":"array":"location", "deref": ]}, {name: "full", value: 4, type: 2-1, properties: ["full": "address":"integer", "deref": ]} -run/0: ingredient 0 is {name: "circular-buffer", value: 5, type: 2-5-1, properties: ["circular-buffer": "address":"array":"location", "deref": ]} -mem/0: location 1136 is 1034 -run/0: ingredient 1 is {name: "full", value: 4, type: 2-1, properties: ["full": "address":"integer", "deref": ]} -mem/0: location 1135 is 1031 -mem/0: location 1031 is 0 -run/0: address to copy is 1035 -run/0: its type is 1 -mem/0: location 1035 is 34 -run/0: product 0 is 34 -mem/0: storing 34 in location 1137 -run/0: instruction read/11 -run/0: {name: "full", value: 4, type: 2-1, properties: ["full": "address":"integer", "deref": ]} <- add/2 {name: "full", value: 4, type: 2-1, properties: ["full": "address":"integer", "deref": ]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is full -mem/0: location 1135 is 1031 -mem/0: location 1031 is 0 -run/0: ingredient 1 is 1 -run/0: product 0 is 1 -mem/0: location 1135 is 1031 -mem/0: storing 1 in location 1031 -run/0: instruction read/13 -run/0: {name: "len", value: 7, type: 1, properties: ["len": "integer"]} <- length/28 {name: "circular-buffer", value: 5, type: 2-5-1, properties: ["circular-buffer": "address":"array":"location", "deref": ]} -mem/0: location 1136 is 1034 -mem/0: storing 2 in location 1138 -run/0: instruction read/14 -run/0: {name: "at-end?", value: 8, type: 3, properties: ["at-end?": "boolean"]} <- greater-or-equal/16 {name: "full", value: 4, type: 2-1, properties: ["full": "address":"integer", "deref": ]}, {name: "len", value: 7, type: 1, properties: ["len": "integer"]} -run/0: ingredient 0 is full -mem/0: location 1135 is 1031 -mem/0: location 1031 is 1 -run/0: ingredient 1 is len -mem/0: location 1138 is 2 -run/0: product 0 is 0 -mem/0: storing 0 in location 1139 -run/0: instruction read/15 -run/0: break-unless/12 {name: "at-end?", value: 8, type: 3, properties: ["at-end?": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} -mem/0: location 1139 is 0 -run/0: ingredient 0 is 0 -run/0: ingredient 1 is -run/0: jumping to instruction 17 -run/0: instruction read/18 -run/0: reply/33 {name: "result", value: 6, type: 1, properties: ["result": "location"]}, {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "same-as-ingredient": "0"]} -mem/0: location 1137 is 34 -mem/0: location 1132 is 1031 -run/0: result 0 is 34 -run/0: result 1 is 1031 -mem/0: storing 1031 in location 1 -run/0: instruction run1001/3 -run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- channel-empty?/112 {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel"]} -mem/0: location 1 is 1031 -run/0: instruction channel-empty?/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/44 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} -mem/0: array size is 30 -mem/0: new alloc: 1192 -run/0: instruction channel-empty?/1 -run/0: {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} <- next-ingredient/30 -run/0: product 0 is 1031 -mem/0: storing 1031 in location 1194 -run/0: instruction channel-empty?/2 -run/0: {name: "full", value: 2, type: 1, properties: ["full": "integer"]} <- get/24 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "first-full", value: 0, type: 0, properties: ["first-full": "offset"]} -run/0: ingredient 0 is chan -mem/0: location 1194 is 1031 -run/0: ingredient 1 is first-full -run/0: address to copy is 1031 -run/0: its type is 1 -mem/0: location 1031 is 1 -run/0: product 0 is 1 -mem/0: storing 1 in location 1195 -run/0: instruction channel-empty?/3 -run/0: {name: "free", value: 3, type: 1, properties: ["free": "integer"]} <- get/24 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "first-free", value: 1, type: 0, properties: ["first-free": "offset"]} -run/0: ingredient 0 is chan -mem/0: location 1194 is 1031 -run/0: ingredient 1 is first-free -run/0: address to copy is 1032 -run/0: its type is 1 -mem/0: location 1032 is 1 -run/0: product 0 is 1 -mem/0: storing 1 in location 1196 -run/0: instruction channel-empty?/4 -run/0: {name: "result", value: 4, type: 3, properties: ["result": "boolean"]} <- equal/13 {name: "full", value: 2, type: 1, properties: ["full": "integer"]}, {name: "free", value: 3, type: 1, properties: ["free": "integer"]} -run/0: ingredient 0 is full -mem/0: location 1195 is 1 -run/0: ingredient 1 is free -mem/0: location 1196 is 1 -run/0: product 0 is 1 -mem/0: storing 1 in location 1197 -run/0: instruction channel-empty?/5 -run/0: reply/33 {name: "result", value: 4, type: 3, properties: ["result": "boolean"]} -mem/0: location 1197 is 1 -run/0: result 0 is 1 -mem/0: storing 1 in location 2 -run/0: instruction run1001/4 -run/0: {name: "3", value: 3, type: 1, properties: ["3": "integer"]} <- channel-full?/110 {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel"]} -mem/0: location 1 is 1031 -run/0: instruction channel-full?/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/44 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} -mem/0: array size is 30 -mem/0: new alloc: 1223 -run/0: instruction channel-full?/1 -run/0: {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} <- next-ingredient/30 -run/0: product 0 is 1031 -mem/0: storing 1031 in location 1225 -run/0: instruction channel-full?/2 -run/0: {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]} <- get/24 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "first-free", value: 1, type: 0, properties: ["first-free": "offset"]} -run/0: ingredient 0 is chan -mem/0: location 1225 is 1031 -run/0: ingredient 1 is first-free -run/0: address to copy is 1032 -run/0: its type is 1 -mem/0: location 1032 is 1 -run/0: product 0 is 1 -mem/0: storing 1 in location 1226 -run/0: instruction channel-full?/3 -run/0: {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]} <- add/2 {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is tmp -mem/0: location 1226 is 1 -run/0: ingredient 1 is 1 -run/0: product 0 is 2 -mem/0: storing 2 in location 1226 -run/0: instruction channel-full?/5 -run/0: {name: "len", value: 3, type: 1, properties: ["len": "integer"]} <- channel-capacity/113 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} -mem/0: location 1225 is 1031 -run/0: instruction channel-capacity/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/44 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} -mem/0: array size is 30 -mem/0: new alloc: 1254 -run/0: instruction channel-capacity/1 -run/0: {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} <- next-ingredient/30 -run/0: product 0 is 1031 -mem/0: storing 1031 in location 1256 -run/0: instruction channel-capacity/2 -run/0: {name: "q", value: 2, type: 2-5-1, properties: ["q": "address":"array":"location"]} <- get/24 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "data", value: 2, type: 0, properties: ["data": "offset"]} -run/0: ingredient 0 is chan -mem/0: location 1256 is 1031 -run/0: ingredient 1 is data -run/0: address to copy is 1033 -run/0: its type is 2 -mem/0: location 1033 is 1034 -run/0: product 0 is 1034 -mem/0: storing 1034 in location 1257 -run/0: instruction channel-capacity/3 -run/0: {name: "result", value: 3, type: 1, properties: ["result": "integer"]} <- length/28 {name: "q", value: 2, type: 2-5-1, properties: ["q": "address":"array":"location", "deref": ]} -mem/0: location 1257 is 1034 -mem/0: storing 2 in location 1258 -run/0: instruction channel-capacity/4 -run/0: reply/33 {name: "result", value: 3, type: 1, properties: ["result": "integer"]} -mem/0: location 1258 is 2 -run/0: result 0 is 2 -mem/0: storing 2 in location 1227 -run/0: instruction channel-full?/6 -run/0: {name: "at-end?", value: 4, type: 3, properties: ["at-end?": "boolean"]} <- greater-or-equal/16 {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]}, {name: "len", value: 3, type: 1, properties: ["len": "integer"]} -run/0: ingredient 0 is tmp -mem/0: location 1226 is 2 -run/0: ingredient 1 is len -mem/0: location 1227 is 2 -run/0: product 0 is 1 -mem/0: storing 1 in location 1228 -run/0: instruction channel-full?/7 -run/0: break-unless/12 {name: "at-end?", value: 4, type: 3, properties: ["at-end?": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} -mem/0: location 1228 is 1 -run/0: ingredient 0 is 1 -run/0: jump-unless fell through -run/0: instruction channel-full?/8 -run/0: {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]} <- copy/1 {name: "0", value: 0, type: 0, properties: ["0": "literal"]} -run/0: ingredient 0 is 0 -mem/0: storing 0 in location 1226 -run/0: instruction channel-full?/10 -run/0: {name: "full", value: 5, type: 1, properties: ["full": "integer"]} <- get/24 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "first-full", value: 0, type: 0, properties: ["first-full": "offset"]} -run/0: ingredient 0 is chan -mem/0: location 1225 is 1031 -run/0: ingredient 1 is first-full -run/0: address to copy is 1031 -run/0: its type is 1 -mem/0: location 1031 is 1 -run/0: product 0 is 1 -mem/0: storing 1 in location 1229 -run/0: instruction channel-full?/11 -run/0: {name: "result", value: 6, type: 3, properties: ["result": "boolean"]} <- equal/13 {name: "full", value: 5, type: 1, properties: ["full": "integer"]}, {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]} -run/0: ingredient 0 is full -mem/0: location 1229 is 1 -run/0: ingredient 1 is tmp -mem/0: location 1226 is 0 -run/0: product 0 is 0 -mem/0: storing 0 in location 1230 -run/0: instruction channel-full?/12 -run/0: reply/33 {name: "result", value: 6, type: 3, properties: ["result": "boolean"]} -mem/0: location 1230 is 0 -run/0: result 0 is 0 -mem/0: storing 0 in location 3 -run/0: instruction channel-read-not-full/1 -run/0: memory-should-contain/46 {name: " - 2 <- 1 # empty? - 3 <- 0 # full? - ", value: 0, type: 0, properties: [" - 2 <- 1 # empty? - 3 <- 0 # full? - ": "literal-string"]} -run/0: checking location 2 -run/0: checking location 3 diff --git a/cpp/.traces/channel-wrap b/cpp/.traces/channel-wrap deleted file mode 100644 index 935f3955..00000000 --- a/cpp/.traces/channel-wrap +++ /dev/null @@ -1,882 +0,0 @@ -parse/0: instruction: run -parse/0: ingredient: {name: " - # channel with just 1 slot - 1:address:channel <- init-channel 1:literal/capacity - # write and read a value - 1:address:channel <- write 1:address:channel, 34:literal - _, 1:address:channel <- read 1:address:channel - # first-free will now be 1 - 2:integer <- get 1:address:channel/deref, first-free:offset - 3:integer <- get 1:address:channel/deref, first-free:offset - # write second value, verify that first-free wraps - 1:address:channel <- write 1:address:channel, 34:literal - 4:integer <- get 1:address:channel/deref, first-free:offset - # read second value, verify that first-full wraps - _, 1:address:channel <- read 1:address:channel - 5:integer <- get 1:address:channel/deref, first-full:offset - ", value: 0, type: 0, properties: [" - # channel with just 1 slot - 1:address:channel <- init-channel 1:literal/capacity - # write and read a value - 1:address:channel <- write 1:address:channel, 34:literal - _, 1:address:channel <- read 1:address:channel - # first-free will now be 1 - 2:integer <- get 1:address:channel/deref, first-free:offset - 3:integer <- get 1:address:channel/deref, first-free:offset - # write second value, verify that first-free wraps - 1:address:channel <- write 1:address:channel, 34:literal - 4:integer <- get 1:address:channel/deref, first-free:offset - # read second value, verify that first-full wraps - _, 1:address:channel <- read 1:address:channel - 5:integer <- get 1:address:channel/deref, first-full:offset - ": "literal-string"]} -parse/0: instruction: memory-should-contain -parse/0: ingredient: {name: " - 2 <- 1 # first-free after first write - 3 <- 1 # first-full after first read - 4 <- 0 # first-free after second write, wrapped - 5 <- 0 # first-full after second read, wrapped - ", value: 0, type: 0, properties: [" - 2 <- 1 # first-free after first write - 3 <- 1 # first-full after first read - 4 <- 0 # first-free after second write, wrapped - 5 <- 0 # first-full after second read, wrapped - ": "literal-string"]} -after-brace/0: recipe channel-wrap -after-brace/0: run ... -after-brace/0: memory-should-contain ... -new/0: routine allocated memory from 1000 to 101000 -schedule/0: channel-wrap -run/0: instruction channel-wrap/0 -run/0: run/45 {name: " - # channel with just 1 slot - 1:address:channel <- init-channel 1:literal/capacity - # write and read a value - 1:address:channel <- write 1:address:channel, 34:literal - _, 1:address:channel <- read 1:address:channel - # first-free will now be 1 - 2:integer <- get 1:address:channel/deref, first-free:offset - 3:integer <- get 1:address:channel/deref, first-free:offset - # write second value, verify that first-free wraps - 1:address:channel <- write 1:address:channel, 34:literal - 4:integer <- get 1:address:channel/deref, first-free:offset - # read second value, verify that first-full wraps - _, 1:address:channel <- read 1:address:channel - 5:integer <- get 1:address:channel/deref, first-full:offset - ", value: 0, type: 0, properties: [" - # channel with just 1 slot - 1:address:channel <- init-channel 1:literal/capacity - # write and read a value - 1:address:channel <- write 1:address:channel, 34:literal - _, 1:address:channel <- read 1:address:channel - # first-free will now be 1 - 2:integer <- get 1:address:channel/deref, first-free:offset - 3:integer <- get 1:address:channel/deref, first-free:offset - # write second value, verify that first-free wraps - 1:address:channel <- write 1:address:channel, 34:literal - 4:integer <- get 1:address:channel/deref, first-free:offset - # read second value, verify that first-full wraps - _, 1:address:channel <- read 1:address:channel - 5:integer <- get 1:address:channel/deref, first-full:offset - ": "literal-string"]} -parse/0: instruction: init-channel -parse/0: ingredient: {name: "1", value: 0, type: 0, properties: ["1": "literal", "capacity": ]} -parse/0: product: {name: "1", value: 0, type: 2-10, properties: ["1": "address":"channel"]} -parse/0: instruction: write -parse/0: ingredient: {name: "1", value: 0, type: 2-10, properties: ["1": "address":"channel"]} -parse/0: ingredient: {name: "34", value: 0, type: 0, properties: ["34": "literal"]} -parse/0: product: {name: "1", value: 0, type: 2-10, properties: ["1": "address":"channel"]} -parse/0: instruction: read -parse/0: ingredient: {name: "1", value: 0, type: 2-10, properties: ["1": "address":"channel"]} -parse/0: product: {name: "_", value: 0, type: 0, properties: ["_": "dummy"]} -parse/0: product: {name: "1", value: 0, type: 2-10, properties: ["1": "address":"channel"]} -parse/0: instruction: get -parse/0: ingredient: {name: "1", value: 0, type: 2-10, properties: ["1": "address":"channel", "deref": ]} -parse/0: ingredient: {name: "first-free", value: 0, type: 0, properties: ["first-free": "offset"]} -parse/0: product: {name: "2", value: 0, type: 1, properties: ["2": "integer"]} -parse/0: instruction: get -parse/0: ingredient: {name: "1", value: 0, type: 2-10, properties: ["1": "address":"channel", "deref": ]} -parse/0: ingredient: {name: "first-free", value: 0, type: 0, properties: ["first-free": "offset"]} -parse/0: product: {name: "3", value: 0, type: 1, properties: ["3": "integer"]} -parse/0: instruction: write -parse/0: ingredient: {name: "1", value: 0, type: 2-10, properties: ["1": "address":"channel"]} -parse/0: ingredient: {name: "34", value: 0, type: 0, properties: ["34": "literal"]} -parse/0: product: {name: "1", value: 0, type: 2-10, properties: ["1": "address":"channel"]} -parse/0: instruction: get -parse/0: ingredient: {name: "1", value: 0, type: 2-10, properties: ["1": "address":"channel", "deref": ]} -parse/0: ingredient: {name: "first-free", value: 0, type: 0, properties: ["first-free": "offset"]} -parse/0: product: {name: "4", value: 0, type: 1, properties: ["4": "integer"]} -parse/0: instruction: read -parse/0: ingredient: {name: "1", value: 0, type: 2-10, properties: ["1": "address":"channel"]} -parse/0: product: {name: "_", value: 0, type: 0, properties: ["_": "dummy"]} -parse/0: product: {name: "1", value: 0, type: 2-10, properties: ["1": "address":"channel"]} -parse/0: instruction: get -parse/0: ingredient: {name: "1", value: 0, type: 2-10, properties: ["1": "address":"channel", "deref": ]} -parse/0: ingredient: {name: "first-full", value: 0, type: 0, properties: ["first-full": "offset"]} -parse/0: product: {name: "5", value: 0, type: 1, properties: ["5": "integer"]} -name/0: element first-free of type channel is at offset 1 -name/0: element first-free of type channel is at offset 1 -name/0: element first-free of type channel is at offset 1 -name/0: element first-full of type channel is at offset 0 -after-brace/0: recipe run1001 -after-brace/0: init-channel ... -after-brace/0: write ... -after-brace/0: read ... -after-brace/0: get ... -after-brace/0: get ... -after-brace/0: write ... -after-brace/0: get ... -after-brace/0: read ... -after-brace/0: get ... -run/0: instruction run1001/0 -run/0: {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel"]} <- init-channel/108 {name: "1", value: 1, type: 0, properties: ["1": "literal", "capacity": ]} -run/0: instruction init-channel/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/44 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} -mem/0: array size is 30 -mem/0: new alloc: 1000 -run/0: instruction init-channel/1 -run/0: {name: "result", value: 1, type: 2-10, properties: ["result": "address":"channel"]} <- new/44 {name: "channel", value: 10, type: 0, properties: ["channel": "type"]} -mem/0: new alloc: 1031 -mem/0: storing 1031 in location 1002 -run/0: instruction init-channel/2 -run/0: {name: "full", value: 2, type: 2-1, properties: ["full": "address":"integer"]} <- get-address/25 {name: "result", value: 1, type: 2-10, properties: ["result": "address":"channel", "deref": ]}, {name: "first-full", value: 0, type: 0, properties: ["first-full": "offset"]} -run/0: ingredient 0 is result -mem/0: location 1002 is 1031 -run/0: ingredient 1 is first-full -run/0: address to copy is 1031 -run/0: product 0 is 1031 -mem/0: storing 1031 in location 1003 -run/0: instruction init-channel/3 -run/0: {name: "full", value: 2, type: 2-1, properties: ["full": "address":"integer", "deref": ]} <- copy/1 {name: "0", value: 0, type: 0, properties: ["0": "literal"]} -run/0: ingredient 0 is 0 -mem/0: location 1003 is 1031 -mem/0: storing 0 in location 1031 -run/0: instruction init-channel/4 -run/0: {name: "free", value: 3, type: 2-1, properties: ["free": "address":"integer"]} <- get-address/25 {name: "result", value: 1, type: 2-10, properties: ["result": "address":"channel", "deref": ]}, {name: "first-free", value: 1, type: 0, properties: ["first-free": "offset"]} -run/0: ingredient 0 is result -mem/0: location 1002 is 1031 -run/0: ingredient 1 is first-free -run/0: address to copy is 1032 -run/0: product 0 is 1032 -mem/0: storing 1032 in location 1004 -run/0: instruction init-channel/5 -run/0: {name: "free", value: 3, type: 2-1, properties: ["free": "address":"integer", "deref": ]} <- copy/1 {name: "0", value: 0, type: 0, properties: ["0": "literal"]} -run/0: ingredient 0 is 0 -mem/0: location 1004 is 1032 -mem/0: storing 0 in location 1032 -run/0: instruction init-channel/6 -run/0: {name: "capacity", value: 4, type: 1, properties: ["capacity": "integer"]} <- next-ingredient/30 -run/0: product 0 is 1 -mem/0: storing 1 in location 1005 -run/0: instruction init-channel/7 -run/0: {name: "capacity", value: 4, type: 1, properties: ["capacity": "integer"]} <- add/2 {name: "capacity", value: 4, type: 1, properties: ["capacity": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is capacity -mem/0: location 1005 is 1 -run/0: ingredient 1 is 1 -run/0: product 0 is 2 -mem/0: storing 2 in location 1005 -run/0: instruction init-channel/8 -run/0: {name: "dest", value: 5, type: 2-2-5-1, properties: ["dest": "address":"address":"array":"location"]} <- get-address/25 {name: "result", value: 1, type: 2-10, properties: ["result": "address":"channel", "deref": ]}, {name: "data", value: 2, type: 0, properties: ["data": "offset"]} -run/0: ingredient 0 is result -mem/0: location 1002 is 1031 -run/0: ingredient 1 is data -run/0: address to copy is 1033 -run/0: product 0 is 1033 -mem/0: storing 1033 in location 1006 -run/0: instruction init-channel/9 -run/0: {name: "dest", value: 5, type: 2-2-5-1, properties: ["dest": "address":"address":"array":"location", "deref": ]} <- new/44 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "capacity", value: 4, type: 1, properties: ["capacity": "integer"]} -mem/0: location 1005 is 2 -mem/0: array size is 2 -mem/0: new alloc: 1034 -mem/0: location 1006 is 1033 -mem/0: storing 1034 in location 1033 -run/0: instruction init-channel/10 -run/0: reply/33 {name: "result", value: 1, type: 2-10, properties: ["result": "address":"channel"]} -mem/0: location 1002 is 1031 -run/0: result 0 is 1031 -mem/0: storing 1031 in location 1 -run/0: instruction run1001/1 -run/0: {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel"]} <- write/109 {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel"]}, {name: "34", value: 34, type: 0, properties: ["34": "literal"]} -mem/0: location 1 is 1031 -run/0: instruction write/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/44 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} -mem/0: array size is 30 -mem/0: new alloc: 1037 -run/0: instruction write/1 -run/0: {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} <- next-ingredient/30 -run/0: product 0 is 1031 -mem/0: storing 1031 in location 1039 -run/0: instruction write/2 -run/0: {name: "val", value: 2, type: 1, properties: ["val": "location"]} <- next-ingredient/30 -run/0: product 0 is 34 -mem/0: storing 34 in location 1040 -run/0: instruction write/4 -run/0: {name: "full", value: 3, type: 3, properties: ["full": "boolean"]} <- channel-full?/110 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} -mem/0: location 1039 is 1031 -run/0: instruction channel-full?/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/44 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} -mem/0: array size is 30 -mem/0: new alloc: 1068 -run/0: instruction channel-full?/1 -run/0: {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} <- next-ingredient/30 -run/0: product 0 is 1031 -mem/0: storing 1031 in location 1070 -run/0: instruction channel-full?/2 -run/0: {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]} <- get/24 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "first-free", value: 1, type: 0, properties: ["first-free": "offset"]} -run/0: ingredient 0 is chan -mem/0: location 1070 is 1031 -run/0: ingredient 1 is first-free -run/0: address to copy is 1032 -run/0: its type is 1 -mem/0: location 1032 is 0 -run/0: product 0 is 0 -mem/0: storing 0 in location 1071 -run/0: instruction channel-full?/3 -run/0: {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]} <- add/2 {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is tmp -mem/0: location 1071 is 0 -run/0: ingredient 1 is 1 -run/0: product 0 is 1 -mem/0: storing 1 in location 1071 -run/0: instruction channel-full?/5 -run/0: {name: "len", value: 3, type: 1, properties: ["len": "integer"]} <- channel-capacity/113 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} -mem/0: location 1070 is 1031 -run/0: instruction channel-capacity/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/44 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} -mem/0: array size is 30 -mem/0: new alloc: 1099 -run/0: instruction channel-capacity/1 -run/0: {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} <- next-ingredient/30 -run/0: product 0 is 1031 -mem/0: storing 1031 in location 1101 -run/0: instruction channel-capacity/2 -run/0: {name: "q", value: 2, type: 2-5-1, properties: ["q": "address":"array":"location"]} <- get/24 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "data", value: 2, type: 0, properties: ["data": "offset"]} -run/0: ingredient 0 is chan -mem/0: location 1101 is 1031 -run/0: ingredient 1 is data -run/0: address to copy is 1033 -run/0: its type is 2 -mem/0: location 1033 is 1034 -run/0: product 0 is 1034 -mem/0: storing 1034 in location 1102 -run/0: instruction channel-capacity/3 -run/0: {name: "result", value: 3, type: 1, properties: ["result": "integer"]} <- length/28 {name: "q", value: 2, type: 2-5-1, properties: ["q": "address":"array":"location", "deref": ]} -mem/0: location 1102 is 1034 -mem/0: storing 2 in location 1103 -run/0: instruction channel-capacity/4 -run/0: reply/33 {name: "result", value: 3, type: 1, properties: ["result": "integer"]} -mem/0: location 1103 is 2 -run/0: result 0 is 2 -mem/0: storing 2 in location 1072 -run/0: instruction channel-full?/6 -run/0: {name: "at-end?", value: 4, type: 3, properties: ["at-end?": "boolean"]} <- greater-or-equal/16 {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]}, {name: "len", value: 3, type: 1, properties: ["len": "integer"]} -run/0: ingredient 0 is tmp -mem/0: location 1071 is 1 -run/0: ingredient 1 is len -mem/0: location 1072 is 2 -run/0: product 0 is 0 -mem/0: storing 0 in location 1073 -run/0: instruction channel-full?/7 -run/0: break-unless/12 {name: "at-end?", value: 4, type: 3, properties: ["at-end?": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} -mem/0: location 1073 is 0 -run/0: ingredient 0 is 0 -run/0: ingredient 1 is -run/0: jumping to instruction 9 -run/0: instruction channel-full?/10 -run/0: {name: "full", value: 5, type: 1, properties: ["full": "integer"]} <- get/24 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "first-full", value: 0, type: 0, properties: ["first-full": "offset"]} -run/0: ingredient 0 is chan -mem/0: location 1070 is 1031 -run/0: ingredient 1 is first-full -run/0: address to copy is 1031 -run/0: its type is 1 -mem/0: location 1031 is 0 -run/0: product 0 is 0 -mem/0: storing 0 in location 1074 -run/0: instruction channel-full?/11 -run/0: {name: "result", value: 6, type: 3, properties: ["result": "boolean"]} <- equal/13 {name: "full", value: 5, type: 1, properties: ["full": "integer"]}, {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]} -run/0: ingredient 0 is full -mem/0: location 1074 is 0 -run/0: ingredient 1 is tmp -mem/0: location 1071 is 1 -run/0: product 0 is 0 -mem/0: storing 0 in location 1075 -run/0: instruction channel-full?/12 -run/0: reply/33 {name: "result", value: 6, type: 3, properties: ["result": "boolean"]} -mem/0: location 1075 is 0 -run/0: result 0 is 0 -mem/0: storing 0 in location 1041 -run/0: instruction write/5 -run/0: break-unless/12 {name: "full", value: 3, type: 3, properties: ["full": "boolean"]}, {name: "", value: 2, type: , properties: ["": ]} -mem/0: location 1041 is 0 -run/0: ingredient 0 is 0 -run/0: ingredient 1 is -run/0: jumping to instruction 8 -run/0: instruction write/9 -run/0: {name: "circular-buffer", value: 5, type: 2-5-1, properties: ["circular-buffer": "address":"array":"location"]} <- get/24 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "data", value: 2, type: 0, properties: ["data": "offset"]} -run/0: ingredient 0 is chan -mem/0: location 1039 is 1031 -run/0: ingredient 1 is data -run/0: address to copy is 1033 -run/0: its type is 2 -mem/0: location 1033 is 1034 -run/0: product 0 is 1034 -mem/0: storing 1034 in location 1043 -run/0: instruction write/10 -run/0: {name: "free", value: 6, type: 2-1, properties: ["free": "address":"integer"]} <- get-address/25 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "first-free", value: 1, type: 0, properties: ["first-free": "offset"]} -run/0: ingredient 0 is chan -mem/0: location 1039 is 1031 -run/0: ingredient 1 is first-free -run/0: address to copy is 1032 -run/0: product 0 is 1032 -mem/0: storing 1032 in location 1044 -run/0: instruction write/11 -run/0: {name: "dest", value: 7, type: 2-1, properties: ["dest": "address":"location"]} <- index-address/27 {name: "circular-buffer", value: 5, type: 2-5-1, properties: ["circular-buffer": "address":"array":"location", "deref": ]}, {name: "free", value: 6, type: 2-1, properties: ["free": "address":"integer", "deref": ]} -run/0: ingredient 0 is circular-buffer -mem/0: location 1043 is 1034 -run/0: ingredient 1 is {name: "free", value: 6, type: 2-1, properties: ["free": "address":"integer", "deref": ]} -mem/0: location 1044 is 1032 -mem/0: location 1032 is 0 -run/0: address to copy is 1035 -run/0: product 0 is 1035 -mem/0: storing 1035 in location 1045 -run/0: instruction write/12 -run/0: {name: "dest", value: 7, type: 2-1, properties: ["dest": "address":"location", "deref": ]} <- copy/1 {name: "val", value: 2, type: 1, properties: ["val": "location"]} -run/0: ingredient 0 is val -mem/0: location 1040 is 34 -mem/0: location 1045 is 1035 -mem/0: storing 34 in location 1035 -run/0: instruction write/13 -run/0: {name: "free", value: 6, type: 2-1, properties: ["free": "address":"integer", "deref": ]} <- add/2 {name: "free", value: 6, type: 2-1, properties: ["free": "address":"integer", "deref": ]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is free -mem/0: location 1044 is 1032 -mem/0: location 1032 is 0 -run/0: ingredient 1 is 1 -run/0: product 0 is 1 -mem/0: location 1044 is 1032 -mem/0: storing 1 in location 1032 -run/0: instruction write/15 -run/0: {name: "len", value: 8, type: 1, properties: ["len": "integer"]} <- length/28 {name: "circular-buffer", value: 5, type: 2-5-1, properties: ["circular-buffer": "address":"array":"location", "deref": ]} -mem/0: location 1043 is 1034 -mem/0: storing 2 in location 1046 -run/0: instruction write/16 -run/0: {name: "at-end?", value: 9, type: 3, properties: ["at-end?": "boolean"]} <- greater-or-equal/16 {name: "free", value: 6, type: 2-1, properties: ["free": "address":"integer", "deref": ]}, {name: "len", value: 8, type: 1, properties: ["len": "integer"]} -run/0: ingredient 0 is free -mem/0: location 1044 is 1032 -mem/0: location 1032 is 1 -run/0: ingredient 1 is len -mem/0: location 1046 is 2 -run/0: product 0 is 0 -mem/0: storing 0 in location 1047 -run/0: instruction write/17 -run/0: break-unless/12 {name: "at-end?", value: 9, type: 3, properties: ["at-end?": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} -mem/0: location 1047 is 0 -run/0: ingredient 0 is 0 -run/0: ingredient 1 is -run/0: jumping to instruction 19 -run/0: instruction write/20 -run/0: reply/33 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "same-as-ingredient": "0"]} -mem/0: location 1039 is 1031 -run/0: result 0 is 1031 -mem/0: storing 1031 in location 1 -run/0: instruction run1001/2 -run/0: {name: "_", value: 0, type: 0, properties: ["_": "dummy"]}, {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel"]} <- read/111 {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel"]} -mem/0: location 1 is 1031 -run/0: instruction read/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/44 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} -mem/0: array size is 30 -mem/0: new alloc: 1130 -run/0: instruction read/1 -run/0: {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} <- next-ingredient/30 -run/0: product 0 is 1031 -mem/0: storing 1031 in location 1132 -run/0: instruction read/3 -run/0: {name: "empty", value: 2, type: 3, properties: ["empty": "boolean"]} <- channel-empty?/112 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} -mem/0: location 1132 is 1031 -run/0: instruction channel-empty?/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/44 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} -mem/0: array size is 30 -mem/0: new alloc: 1161 -run/0: instruction channel-empty?/1 -run/0: {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} <- next-ingredient/30 -run/0: product 0 is 1031 -mem/0: storing 1031 in location 1163 -run/0: instruction channel-empty?/2 -run/0: {name: "full", value: 2, type: 1, properties: ["full": "integer"]} <- get/24 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "first-full", value: 0, type: 0, properties: ["first-full": "offset"]} -run/0: ingredient 0 is chan -mem/0: location 1163 is 1031 -run/0: ingredient 1 is first-full -run/0: address to copy is 1031 -run/0: its type is 1 -mem/0: location 1031 is 0 -run/0: product 0 is 0 -mem/0: storing 0 in location 1164 -run/0: instruction channel-empty?/3 -run/0: {name: "free", value: 3, type: 1, properties: ["free": "integer"]} <- get/24 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "first-free", value: 1, type: 0, properties: ["first-free": "offset"]} -run/0: ingredient 0 is chan -mem/0: location 1163 is 1031 -run/0: ingredient 1 is first-free -run/0: address to copy is 1032 -run/0: its type is 1 -mem/0: location 1032 is 1 -run/0: product 0 is 1 -mem/0: storing 1 in location 1165 -run/0: instruction channel-empty?/4 -run/0: {name: "result", value: 4, type: 3, properties: ["result": "boolean"]} <- equal/13 {name: "full", value: 2, type: 1, properties: ["full": "integer"]}, {name: "free", value: 3, type: 1, properties: ["free": "integer"]} -run/0: ingredient 0 is full -mem/0: location 1164 is 0 -run/0: ingredient 1 is free -mem/0: location 1165 is 1 -run/0: product 0 is 0 -mem/0: storing 0 in location 1166 -run/0: instruction channel-empty?/5 -run/0: reply/33 {name: "result", value: 4, type: 3, properties: ["result": "boolean"]} -mem/0: location 1166 is 0 -run/0: result 0 is 0 -mem/0: storing 0 in location 1133 -run/0: instruction read/4 -run/0: break-unless/12 {name: "empty", value: 2, type: 3, properties: ["empty": "boolean"]}, {name: "", value: 2, type: , properties: ["": ]} -mem/0: location 1133 is 0 -run/0: ingredient 0 is 0 -run/0: ingredient 1 is -run/0: jumping to instruction 7 -run/0: instruction read/8 -run/0: {name: "full", value: 4, type: 2-1, properties: ["full": "address":"integer"]} <- get-address/25 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "first-full", value: 0, type: 0, properties: ["first-full": "offset"]} -run/0: ingredient 0 is chan -mem/0: location 1132 is 1031 -run/0: ingredient 1 is first-full -run/0: address to copy is 1031 -run/0: product 0 is 1031 -mem/0: storing 1031 in location 1135 -run/0: instruction read/9 -run/0: {name: "circular-buffer", value: 5, type: 2-5-1, properties: ["circular-buffer": "address":"array":"location"]} <- get/24 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "data", value: 2, type: 0, properties: ["data": "offset"]} -run/0: ingredient 0 is chan -mem/0: location 1132 is 1031 -run/0: ingredient 1 is data -run/0: address to copy is 1033 -run/0: its type is 2 -mem/0: location 1033 is 1034 -run/0: product 0 is 1034 -mem/0: storing 1034 in location 1136 -run/0: instruction read/10 -run/0: {name: "result", value: 6, type: 1, properties: ["result": "location"]} <- index/26 {name: "circular-buffer", value: 5, type: 2-5-1, properties: ["circular-buffer": "address":"array":"location", "deref": ]}, {name: "full", value: 4, type: 2-1, properties: ["full": "address":"integer", "deref": ]} -run/0: ingredient 0 is {name: "circular-buffer", value: 5, type: 2-5-1, properties: ["circular-buffer": "address":"array":"location", "deref": ]} -mem/0: location 1136 is 1034 -run/0: ingredient 1 is {name: "full", value: 4, type: 2-1, properties: ["full": "address":"integer", "deref": ]} -mem/0: location 1135 is 1031 -mem/0: location 1031 is 0 -run/0: address to copy is 1035 -run/0: its type is 1 -mem/0: location 1035 is 34 -run/0: product 0 is 34 -mem/0: storing 34 in location 1137 -run/0: instruction read/11 -run/0: {name: "full", value: 4, type: 2-1, properties: ["full": "address":"integer", "deref": ]} <- add/2 {name: "full", value: 4, type: 2-1, properties: ["full": "address":"integer", "deref": ]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is full -mem/0: location 1135 is 1031 -mem/0: location 1031 is 0 -run/0: ingredient 1 is 1 -run/0: product 0 is 1 -mem/0: location 1135 is 1031 -mem/0: storing 1 in location 1031 -run/0: instruction read/13 -run/0: {name: "len", value: 7, type: 1, properties: ["len": "integer"]} <- length/28 {name: "circular-buffer", value: 5, type: 2-5-1, properties: ["circular-buffer": "address":"array":"location", "deref": ]} -mem/0: location 1136 is 1034 -mem/0: storing 2 in location 1138 -run/0: instruction read/14 -run/0: {name: "at-end?", value: 8, type: 3, properties: ["at-end?": "boolean"]} <- greater-or-equal/16 {name: "full", value: 4, type: 2-1, properties: ["full": "address":"integer", "deref": ]}, {name: "len", value: 7, type: 1, properties: ["len": "integer"]} -run/0: ingredient 0 is full -mem/0: location 1135 is 1031 -mem/0: location 1031 is 1 -run/0: ingredient 1 is len -mem/0: location 1138 is 2 -run/0: product 0 is 0 -mem/0: storing 0 in location 1139 -run/0: instruction read/15 -run/0: break-unless/12 {name: "at-end?", value: 8, type: 3, properties: ["at-end?": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} -mem/0: location 1139 is 0 -run/0: ingredient 0 is 0 -run/0: ingredient 1 is -run/0: jumping to instruction 17 -run/0: instruction read/18 -run/0: reply/33 {name: "result", value: 6, type: 1, properties: ["result": "location"]}, {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "same-as-ingredient": "0"]} -mem/0: location 1137 is 34 -mem/0: location 1132 is 1031 -run/0: result 0 is 34 -run/0: result 1 is 1031 -mem/0: storing 1031 in location 1 -run/0: instruction run1001/3 -run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- get/24 {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel", "deref": ]}, {name: "first-free", value: 1, type: 0, properties: ["first-free": "offset"]} -run/0: ingredient 0 is 1 -mem/0: location 1 is 1031 -run/0: ingredient 1 is first-free -run/0: address to copy is 1032 -run/0: its type is 1 -mem/0: location 1032 is 1 -run/0: product 0 is 1 -mem/0: storing 1 in location 2 -run/0: instruction run1001/4 -run/0: {name: "3", value: 3, type: 1, properties: ["3": "integer"]} <- get/24 {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel", "deref": ]}, {name: "first-free", value: 1, type: 0, properties: ["first-free": "offset"]} -run/0: ingredient 0 is 1 -mem/0: location 1 is 1031 -run/0: ingredient 1 is first-free -run/0: address to copy is 1032 -run/0: its type is 1 -mem/0: location 1032 is 1 -run/0: product 0 is 1 -mem/0: storing 1 in location 3 -run/0: instruction run1001/5 -run/0: {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel"]} <- write/109 {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel"]}, {name: "34", value: 34, type: 0, properties: ["34": "literal"]} -mem/0: location 1 is 1031 -run/0: instruction write/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/44 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} -mem/0: array size is 30 -mem/0: new alloc: 1192 -run/0: instruction write/1 -run/0: {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} <- next-ingredient/30 -run/0: product 0 is 1031 -mem/0: storing 1031 in location 1194 -run/0: instruction write/2 -run/0: {name: "val", value: 2, type: 1, properties: ["val": "location"]} <- next-ingredient/30 -run/0: product 0 is 34 -mem/0: storing 34 in location 1195 -run/0: instruction write/4 -run/0: {name: "full", value: 3, type: 3, properties: ["full": "boolean"]} <- channel-full?/110 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} -mem/0: location 1194 is 1031 -run/0: instruction channel-full?/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/44 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} -mem/0: array size is 30 -mem/0: new alloc: 1223 -run/0: instruction channel-full?/1 -run/0: {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} <- next-ingredient/30 -run/0: product 0 is 1031 -mem/0: storing 1031 in location 1225 -run/0: instruction channel-full?/2 -run/0: {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]} <- get/24 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "first-free", value: 1, type: 0, properties: ["first-free": "offset"]} -run/0: ingredient 0 is chan -mem/0: location 1225 is 1031 -run/0: ingredient 1 is first-free -run/0: address to copy is 1032 -run/0: its type is 1 -mem/0: location 1032 is 1 -run/0: product 0 is 1 -mem/0: storing 1 in location 1226 -run/0: instruction channel-full?/3 -run/0: {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]} <- add/2 {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is tmp -mem/0: location 1226 is 1 -run/0: ingredient 1 is 1 -run/0: product 0 is 2 -mem/0: storing 2 in location 1226 -run/0: instruction channel-full?/5 -run/0: {name: "len", value: 3, type: 1, properties: ["len": "integer"]} <- channel-capacity/113 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} -mem/0: location 1225 is 1031 -run/0: instruction channel-capacity/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/44 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} -mem/0: array size is 30 -mem/0: new alloc: 1254 -run/0: instruction channel-capacity/1 -run/0: {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} <- next-ingredient/30 -run/0: product 0 is 1031 -mem/0: storing 1031 in location 1256 -run/0: instruction channel-capacity/2 -run/0: {name: "q", value: 2, type: 2-5-1, properties: ["q": "address":"array":"location"]} <- get/24 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "data", value: 2, type: 0, properties: ["data": "offset"]} -run/0: ingredient 0 is chan -mem/0: location 1256 is 1031 -run/0: ingredient 1 is data -run/0: address to copy is 1033 -run/0: its type is 2 -mem/0: location 1033 is 1034 -run/0: product 0 is 1034 -mem/0: storing 1034 in location 1257 -run/0: instruction channel-capacity/3 -run/0: {name: "result", value: 3, type: 1, properties: ["result": "integer"]} <- length/28 {name: "q", value: 2, type: 2-5-1, properties: ["q": "address":"array":"location", "deref": ]} -mem/0: location 1257 is 1034 -mem/0: storing 2 in location 1258 -run/0: instruction channel-capacity/4 -run/0: reply/33 {name: "result", value: 3, type: 1, properties: ["result": "integer"]} -mem/0: location 1258 is 2 -run/0: result 0 is 2 -mem/0: storing 2 in location 1227 -run/0: instruction channel-full?/6 -run/0: {name: "at-end?", value: 4, type: 3, properties: ["at-end?": "boolean"]} <- greater-or-equal/16 {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]}, {name: "len", value: 3, type: 1, properties: ["len": "integer"]} -run/0: ingredient 0 is tmp -mem/0: location 1226 is 2 -run/0: ingredient 1 is len -mem/0: location 1227 is 2 -run/0: product 0 is 1 -mem/0: storing 1 in location 1228 -run/0: instruction channel-full?/7 -run/0: break-unless/12 {name: "at-end?", value: 4, type: 3, properties: ["at-end?": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} -mem/0: location 1228 is 1 -run/0: ingredient 0 is 1 -run/0: jump-unless fell through -run/0: instruction channel-full?/8 -run/0: {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]} <- copy/1 {name: "0", value: 0, type: 0, properties: ["0": "literal"]} -run/0: ingredient 0 is 0 -mem/0: storing 0 in location 1226 -run/0: instruction channel-full?/10 -run/0: {name: "full", value: 5, type: 1, properties: ["full": "integer"]} <- get/24 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "first-full", value: 0, type: 0, properties: ["first-full": "offset"]} -run/0: ingredient 0 is chan -mem/0: location 1225 is 1031 -run/0: ingredient 1 is first-full -run/0: address to copy is 1031 -run/0: its type is 1 -mem/0: location 1031 is 1 -run/0: product 0 is 1 -mem/0: storing 1 in location 1229 -run/0: instruction channel-full?/11 -run/0: {name: "result", value: 6, type: 3, properties: ["result": "boolean"]} <- equal/13 {name: "full", value: 5, type: 1, properties: ["full": "integer"]}, {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]} -run/0: ingredient 0 is full -mem/0: location 1229 is 1 -run/0: ingredient 1 is tmp -mem/0: location 1226 is 0 -run/0: product 0 is 0 -mem/0: storing 0 in location 1230 -run/0: instruction channel-full?/12 -run/0: reply/33 {name: "result", value: 6, type: 3, properties: ["result": "boolean"]} -mem/0: location 1230 is 0 -run/0: result 0 is 0 -mem/0: storing 0 in location 1196 -run/0: instruction write/5 -run/0: break-unless/12 {name: "full", value: 3, type: 3, properties: ["full": "boolean"]}, {name: "", value: 2, type: , properties: ["": ]} -mem/0: location 1196 is 0 -run/0: ingredient 0 is 0 -run/0: ingredient 1 is -run/0: jumping to instruction 8 -run/0: instruction write/9 -run/0: {name: "circular-buffer", value: 5, type: 2-5-1, properties: ["circular-buffer": "address":"array":"location"]} <- get/24 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "data", value: 2, type: 0, properties: ["data": "offset"]} -run/0: ingredient 0 is chan -mem/0: location 1194 is 1031 -run/0: ingredient 1 is data -run/0: address to copy is 1033 -run/0: its type is 2 -mem/0: location 1033 is 1034 -run/0: product 0 is 1034 -mem/0: storing 1034 in location 1198 -run/0: instruction write/10 -run/0: {name: "free", value: 6, type: 2-1, properties: ["free": "address":"integer"]} <- get-address/25 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "first-free", value: 1, type: 0, properties: ["first-free": "offset"]} -run/0: ingredient 0 is chan -mem/0: location 1194 is 1031 -run/0: ingredient 1 is first-free -run/0: address to copy is 1032 -run/0: product 0 is 1032 -mem/0: storing 1032 in location 1199 -run/0: instruction write/11 -run/0: {name: "dest", value: 7, type: 2-1, properties: ["dest": "address":"location"]} <- index-address/27 {name: "circular-buffer", value: 5, type: 2-5-1, properties: ["circular-buffer": "address":"array":"location", "deref": ]}, {name: "free", value: 6, type: 2-1, properties: ["free": "address":"integer", "deref": ]} -run/0: ingredient 0 is circular-buffer -mem/0: location 1198 is 1034 -run/0: ingredient 1 is {name: "free", value: 6, type: 2-1, properties: ["free": "address":"integer", "deref": ]} -mem/0: location 1199 is 1032 -mem/0: location 1032 is 1 -run/0: address to copy is 1036 -run/0: product 0 is 1036 -mem/0: storing 1036 in location 1200 -run/0: instruction write/12 -run/0: {name: "dest", value: 7, type: 2-1, properties: ["dest": "address":"location", "deref": ]} <- copy/1 {name: "val", value: 2, type: 1, properties: ["val": "location"]} -run/0: ingredient 0 is val -mem/0: location 1195 is 34 -mem/0: location 1200 is 1036 -mem/0: storing 34 in location 1036 -run/0: instruction write/13 -run/0: {name: "free", value: 6, type: 2-1, properties: ["free": "address":"integer", "deref": ]} <- add/2 {name: "free", value: 6, type: 2-1, properties: ["free": "address":"integer", "deref": ]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is free -mem/0: location 1199 is 1032 -mem/0: location 1032 is 1 -run/0: ingredient 1 is 1 -run/0: product 0 is 2 -mem/0: location 1199 is 1032 -mem/0: storing 2 in location 1032 -run/0: instruction write/15 -run/0: {name: "len", value: 8, type: 1, properties: ["len": "integer"]} <- length/28 {name: "circular-buffer", value: 5, type: 2-5-1, properties: ["circular-buffer": "address":"array":"location", "deref": ]} -mem/0: location 1198 is 1034 -mem/0: storing 2 in location 1201 -run/0: instruction write/16 -run/0: {name: "at-end?", value: 9, type: 3, properties: ["at-end?": "boolean"]} <- greater-or-equal/16 {name: "free", value: 6, type: 2-1, properties: ["free": "address":"integer", "deref": ]}, {name: "len", value: 8, type: 1, properties: ["len": "integer"]} -run/0: ingredient 0 is free -mem/0: location 1199 is 1032 -mem/0: location 1032 is 2 -run/0: ingredient 1 is len -mem/0: location 1201 is 2 -run/0: product 0 is 1 -mem/0: storing 1 in location 1202 -run/0: instruction write/17 -run/0: break-unless/12 {name: "at-end?", value: 9, type: 3, properties: ["at-end?": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} -mem/0: location 1202 is 1 -run/0: ingredient 0 is 1 -run/0: jump-unless fell through -run/0: instruction write/18 -run/0: {name: "free", value: 6, type: 2-1, properties: ["free": "address":"integer", "deref": ]} <- copy/1 {name: "0", value: 0, type: 0, properties: ["0": "literal"]} -run/0: ingredient 0 is 0 -mem/0: location 1199 is 1032 -mem/0: storing 0 in location 1032 -run/0: instruction write/20 -run/0: reply/33 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "same-as-ingredient": "0"]} -mem/0: location 1194 is 1031 -run/0: result 0 is 1031 -mem/0: storing 1031 in location 1 -run/0: instruction run1001/6 -run/0: {name: "4", value: 4, type: 1, properties: ["4": "integer"]} <- get/24 {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel", "deref": ]}, {name: "first-free", value: 1, type: 0, properties: ["first-free": "offset"]} -run/0: ingredient 0 is 1 -mem/0: location 1 is 1031 -run/0: ingredient 1 is first-free -run/0: address to copy is 1032 -run/0: its type is 1 -mem/0: location 1032 is 0 -run/0: product 0 is 0 -mem/0: storing 0 in location 4 -run/0: instruction run1001/7 -run/0: {name: "_", value: 0, type: 0, properties: ["_": "dummy"]}, {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel"]} <- read/111 {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel"]} -mem/0: location 1 is 1031 -run/0: instruction read/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/44 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} -mem/0: array size is 30 -mem/0: new alloc: 1285 -run/0: instruction read/1 -run/0: {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} <- next-ingredient/30 -run/0: product 0 is 1031 -mem/0: storing 1031 in location 1287 -run/0: instruction read/3 -run/0: {name: "empty", value: 2, type: 3, properties: ["empty": "boolean"]} <- channel-empty?/112 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} -mem/0: location 1287 is 1031 -run/0: instruction channel-empty?/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/44 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} -mem/0: array size is 30 -mem/0: new alloc: 1316 -run/0: instruction channel-empty?/1 -run/0: {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} <- next-ingredient/30 -run/0: product 0 is 1031 -mem/0: storing 1031 in location 1318 -run/0: instruction channel-empty?/2 -run/0: {name: "full", value: 2, type: 1, properties: ["full": "integer"]} <- get/24 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "first-full", value: 0, type: 0, properties: ["first-full": "offset"]} -run/0: ingredient 0 is chan -mem/0: location 1318 is 1031 -run/0: ingredient 1 is first-full -run/0: address to copy is 1031 -run/0: its type is 1 -mem/0: location 1031 is 1 -run/0: product 0 is 1 -mem/0: storing 1 in location 1319 -run/0: instruction channel-empty?/3 -run/0: {name: "free", value: 3, type: 1, properties: ["free": "integer"]} <- get/24 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "first-free", value: 1, type: 0, properties: ["first-free": "offset"]} -run/0: ingredient 0 is chan -mem/0: location 1318 is 1031 -run/0: ingredient 1 is first-free -run/0: address to copy is 1032 -run/0: its type is 1 -mem/0: location 1032 is 0 -run/0: product 0 is 0 -mem/0: storing 0 in location 1320 -run/0: instruction channel-empty?/4 -run/0: {name: "result", value: 4, type: 3, properties: ["result": "boolean"]} <- equal/13 {name: "full", value: 2, type: 1, properties: ["full": "integer"]}, {name: "free", value: 3, type: 1, properties: ["free": "integer"]} -run/0: ingredient 0 is full -mem/0: location 1319 is 1 -run/0: ingredient 1 is free -mem/0: location 1320 is 0 -run/0: product 0 is 0 -mem/0: storing 0 in location 1321 -run/0: instruction channel-empty?/5 -run/0: reply/33 {name: "result", value: 4, type: 3, properties: ["result": "boolean"]} -mem/0: location 1321 is 0 -run/0: result 0 is 0 -mem/0: storing 0 in location 1288 -run/0: instruction read/4 -run/0: break-unless/12 {name: "empty", value: 2, type: 3, properties: ["empty": "boolean"]}, {name: "", value: 2, type: , properties: ["": ]} -mem/0: location 1288 is 0 -run/0: ingredient 0 is 0 -run/0: ingredient 1 is -run/0: jumping to instruction 7 -run/0: instruction read/8 -run/0: {name: "full", value: 4, type: 2-1, properties: ["full": "address":"integer"]} <- get-address/25 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "first-full", value: 0, type: 0, properties: ["first-full": "offset"]} -run/0: ingredient 0 is chan -mem/0: location 1287 is 1031 -run/0: ingredient 1 is first-full -run/0: address to copy is 1031 -run/0: product 0 is 1031 -mem/0: storing 1031 in location 1290 -run/0: instruction read/9 -run/0: {name: "circular-buffer", value: 5, type: 2-5-1, properties: ["circular-buffer": "address":"array":"location"]} <- get/24 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "data", value: 2, type: 0, properties: ["data": "offset"]} -run/0: ingredient 0 is chan -mem/0: location 1287 is 1031 -run/0: ingredient 1 is data -run/0: address to copy is 1033 -run/0: its type is 2 -mem/0: location 1033 is 1034 -run/0: product 0 is 1034 -mem/0: storing 1034 in location 1291 -run/0: instruction read/10 -run/0: {name: "result", value: 6, type: 1, properties: ["result": "location"]} <- index/26 {name: "circular-buffer", value: 5, type: 2-5-1, properties: ["circular-buffer": "address":"array":"location", "deref": ]}, {name: "full", value: 4, type: 2-1, properties: ["full": "address":"integer", "deref": ]} -run/0: ingredient 0 is {name: "circular-buffer", value: 5, type: 2-5-1, properties: ["circular-buffer": "address":"array":"location", "deref": ]} -mem/0: location 1291 is 1034 -run/0: ingredient 1 is {name: "full", value: 4, type: 2-1, properties: ["full": "address":"integer", "deref": ]} -mem/0: location 1290 is 1031 -mem/0: location 1031 is 1 -run/0: address to copy is 1036 -run/0: its type is 1 -mem/0: location 1036 is 34 -run/0: product 0 is 34 -mem/0: storing 34 in location 1292 -run/0: instruction read/11 -run/0: {name: "full", value: 4, type: 2-1, properties: ["full": "address":"integer", "deref": ]} <- add/2 {name: "full", value: 4, type: 2-1, properties: ["full": "address":"integer", "deref": ]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is full -mem/0: location 1290 is 1031 -mem/0: location 1031 is 1 -run/0: ingredient 1 is 1 -run/0: product 0 is 2 -mem/0: location 1290 is 1031 -mem/0: storing 2 in location 1031 -run/0: instruction read/13 -run/0: {name: "len", value: 7, type: 1, properties: ["len": "integer"]} <- length/28 {name: "circular-buffer", value: 5, type: 2-5-1, properties: ["circular-buffer": "address":"array":"location", "deref": ]} -mem/0: location 1291 is 1034 -mem/0: storing 2 in location 1293 -run/0: instruction read/14 -run/0: {name: "at-end?", value: 8, type: 3, properties: ["at-end?": "boolean"]} <- greater-or-equal/16 {name: "full", value: 4, type: 2-1, properties: ["full": "address":"integer", "deref": ]}, {name: "len", value: 7, type: 1, properties: ["len": "integer"]} -run/0: ingredient 0 is full -mem/0: location 1290 is 1031 -mem/0: location 1031 is 2 -run/0: ingredient 1 is len -mem/0: location 1293 is 2 -run/0: product 0 is 1 -mem/0: storing 1 in location 1294 -run/0: instruction read/15 -run/0: break-unless/12 {name: "at-end?", value: 8, type: 3, properties: ["at-end?": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} -mem/0: location 1294 is 1 -run/0: ingredient 0 is 1 -run/0: jump-unless fell through -run/0: instruction read/16 -run/0: {name: "full", value: 4, type: 2-1, properties: ["full": "address":"integer", "deref": ]} <- copy/1 {name: "0", value: 0, type: 0, properties: ["0": "literal"]} -run/0: ingredient 0 is 0 -mem/0: location 1290 is 1031 -mem/0: storing 0 in location 1031 -run/0: instruction read/18 -run/0: reply/33 {name: "result", value: 6, type: 1, properties: ["result": "location"]}, {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "same-as-ingredient": "0"]} -mem/0: location 1292 is 34 -mem/0: location 1287 is 1031 -run/0: result 0 is 34 -run/0: result 1 is 1031 -mem/0: storing 1031 in location 1 -run/0: instruction run1001/8 -run/0: {name: "5", value: 5, type: 1, properties: ["5": "integer"]} <- get/24 {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel", "deref": ]}, {name: "first-full", value: 0, type: 0, properties: ["first-full": "offset"]} -run/0: ingredient 0 is 1 -mem/0: location 1 is 1031 -run/0: ingredient 1 is first-full -run/0: address to copy is 1031 -run/0: its type is 1 -mem/0: location 1031 is 0 -run/0: product 0 is 0 -mem/0: storing 0 in location 5 -run/0: instruction channel-wrap/1 -run/0: memory-should-contain/46 {name: " - 2 <- 1 # first-free after first write - 3 <- 1 # first-full after first read - 4 <- 0 # first-free after second write, wrapped - 5 <- 0 # first-full after second read, wrapped - ", value: 0, type: 0, properties: [" - 2 <- 1 # first-free after first write - 3 <- 1 # first-full after first read - 4 <- 0 # first-free after second write, wrapped - 5 <- 0 # first-full after second read, wrapped - ": "literal-string"]} -run/0: checking location 2 -run/0: checking location 3 -run/0: checking location 4 -run/0: checking location 5 diff --git a/cpp/.traces/channel-write-full b/cpp/.traces/channel-write-full deleted file mode 100644 index d91949f4..00000000 --- a/cpp/.traces/channel-write-full +++ /dev/null @@ -1,457 +0,0 @@ -parse/0: instruction: run -parse/0: ingredient: {name: " - 1:address:channel <- init-channel 1:literal/capacity - 1:address:channel <- write 1:address:channel, 34:literal - 2:integer <- channel-empty? 1:address:channel - 3:integer <- channel-full? 1:address:channel - ", value: 0, type: 0, properties: [" - 1:address:channel <- init-channel 1:literal/capacity - 1:address:channel <- write 1:address:channel, 34:literal - 2:integer <- channel-empty? 1:address:channel - 3:integer <- channel-full? 1:address:channel - ": "literal-string"]} -parse/0: instruction: memory-should-contain -parse/0: ingredient: {name: " - 2 <- 0 # empty? - 3 <- 1 # full? - ", value: 0, type: 0, properties: [" - 2 <- 0 # empty? - 3 <- 1 # full? - ": "literal-string"]} -after-brace/0: recipe channel-write-full -after-brace/0: run ... -after-brace/0: memory-should-contain ... -new/0: routine allocated memory from 1000 to 101000 -schedule/0: channel-write-full -run/0: instruction channel-write-full/0 -run/0: run/45 {name: " - 1:address:channel <- init-channel 1:literal/capacity - 1:address:channel <- write 1:address:channel, 34:literal - 2:integer <- channel-empty? 1:address:channel - 3:integer <- channel-full? 1:address:channel - ", value: 0, type: 0, properties: [" - 1:address:channel <- init-channel 1:literal/capacity - 1:address:channel <- write 1:address:channel, 34:literal - 2:integer <- channel-empty? 1:address:channel - 3:integer <- channel-full? 1:address:channel - ": "literal-string"]} -parse/0: instruction: init-channel -parse/0: ingredient: {name: "1", value: 0, type: 0, properties: ["1": "literal", "capacity": ]} -parse/0: product: {name: "1", value: 0, type: 2-10, properties: ["1": "address":"channel"]} -parse/0: instruction: write -parse/0: ingredient: {name: "1", value: 0, type: 2-10, properties: ["1": "address":"channel"]} -parse/0: ingredient: {name: "34", value: 0, type: 0, properties: ["34": "literal"]} -parse/0: product: {name: "1", value: 0, type: 2-10, properties: ["1": "address":"channel"]} -parse/0: instruction: channel-empty? -parse/0: ingredient: {name: "1", value: 0, type: 2-10, properties: ["1": "address":"channel"]} -parse/0: product: {name: "2", value: 0, type: 1, properties: ["2": "integer"]} -parse/0: instruction: channel-full? -parse/0: ingredient: {name: "1", value: 0, type: 2-10, properties: ["1": "address":"channel"]} -parse/0: product: {name: "3", value: 0, type: 1, properties: ["3": "integer"]} -after-brace/0: recipe run1001 -after-brace/0: init-channel ... -after-brace/0: write ... -after-brace/0: channel-empty? ... -after-brace/0: channel-full? ... -run/0: instruction run1001/0 -run/0: {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel"]} <- init-channel/108 {name: "1", value: 1, type: 0, properties: ["1": "literal", "capacity": ]} -run/0: instruction init-channel/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/44 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} -mem/0: array size is 30 -mem/0: new alloc: 1000 -run/0: instruction init-channel/1 -run/0: {name: "result", value: 1, type: 2-10, properties: ["result": "address":"channel"]} <- new/44 {name: "channel", value: 10, type: 0, properties: ["channel": "type"]} -mem/0: new alloc: 1031 -mem/0: storing 1031 in location 1002 -run/0: instruction init-channel/2 -run/0: {name: "full", value: 2, type: 2-1, properties: ["full": "address":"integer"]} <- get-address/25 {name: "result", value: 1, type: 2-10, properties: ["result": "address":"channel", "deref": ]}, {name: "first-full", value: 0, type: 0, properties: ["first-full": "offset"]} -run/0: ingredient 0 is result -mem/0: location 1002 is 1031 -run/0: ingredient 1 is first-full -run/0: address to copy is 1031 -run/0: product 0 is 1031 -mem/0: storing 1031 in location 1003 -run/0: instruction init-channel/3 -run/0: {name: "full", value: 2, type: 2-1, properties: ["full": "address":"integer", "deref": ]} <- copy/1 {name: "0", value: 0, type: 0, properties: ["0": "literal"]} -run/0: ingredient 0 is 0 -mem/0: location 1003 is 1031 -mem/0: storing 0 in location 1031 -run/0: instruction init-channel/4 -run/0: {name: "free", value: 3, type: 2-1, properties: ["free": "address":"integer"]} <- get-address/25 {name: "result", value: 1, type: 2-10, properties: ["result": "address":"channel", "deref": ]}, {name: "first-free", value: 1, type: 0, properties: ["first-free": "offset"]} -run/0: ingredient 0 is result -mem/0: location 1002 is 1031 -run/0: ingredient 1 is first-free -run/0: address to copy is 1032 -run/0: product 0 is 1032 -mem/0: storing 1032 in location 1004 -run/0: instruction init-channel/5 -run/0: {name: "free", value: 3, type: 2-1, properties: ["free": "address":"integer", "deref": ]} <- copy/1 {name: "0", value: 0, type: 0, properties: ["0": "literal"]} -run/0: ingredient 0 is 0 -mem/0: location 1004 is 1032 -mem/0: storing 0 in location 1032 -run/0: instruction init-channel/6 -run/0: {name: "capacity", value: 4, type: 1, properties: ["capacity": "integer"]} <- next-ingredient/30 -run/0: product 0 is 1 -mem/0: storing 1 in location 1005 -run/0: instruction init-channel/7 -run/0: {name: "capacity", value: 4, type: 1, properties: ["capacity": "integer"]} <- add/2 {name: "capacity", value: 4, type: 1, properties: ["capacity": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is capacity -mem/0: location 1005 is 1 -run/0: ingredient 1 is 1 -run/0: product 0 is 2 -mem/0: storing 2 in location 1005 -run/0: instruction init-channel/8 -run/0: {name: "dest", value: 5, type: 2-2-5-1, properties: ["dest": "address":"address":"array":"location"]} <- get-address/25 {name: "result", value: 1, type: 2-10, properties: ["result": "address":"channel", "deref": ]}, {name: "data", value: 2, type: 0, properties: ["data": "offset"]} -run/0: ingredient 0 is result -mem/0: location 1002 is 1031 -run/0: ingredient 1 is data -run/0: address to copy is 1033 -run/0: product 0 is 1033 -mem/0: storing 1033 in location 1006 -run/0: instruction init-channel/9 -run/0: {name: "dest", value: 5, type: 2-2-5-1, properties: ["dest": "address":"address":"array":"location", "deref": ]} <- new/44 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "capacity", value: 4, type: 1, properties: ["capacity": "integer"]} -mem/0: location 1005 is 2 -mem/0: array size is 2 -mem/0: new alloc: 1034 -mem/0: location 1006 is 1033 -mem/0: storing 1034 in location 1033 -run/0: instruction init-channel/10 -run/0: reply/33 {name: "result", value: 1, type: 2-10, properties: ["result": "address":"channel"]} -mem/0: location 1002 is 1031 -run/0: result 0 is 1031 -mem/0: storing 1031 in location 1 -run/0: instruction run1001/1 -run/0: {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel"]} <- write/109 {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel"]}, {name: "34", value: 34, type: 0, properties: ["34": "literal"]} -mem/0: location 1 is 1031 -run/0: instruction write/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/44 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} -mem/0: array size is 30 -mem/0: new alloc: 1037 -run/0: instruction write/1 -run/0: {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} <- next-ingredient/30 -run/0: product 0 is 1031 -mem/0: storing 1031 in location 1039 -run/0: instruction write/2 -run/0: {name: "val", value: 2, type: 1, properties: ["val": "location"]} <- next-ingredient/30 -run/0: product 0 is 34 -mem/0: storing 34 in location 1040 -run/0: instruction write/4 -run/0: {name: "full", value: 3, type: 3, properties: ["full": "boolean"]} <- channel-full?/110 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} -mem/0: location 1039 is 1031 -run/0: instruction channel-full?/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/44 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} -mem/0: array size is 30 -mem/0: new alloc: 1068 -run/0: instruction channel-full?/1 -run/0: {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} <- next-ingredient/30 -run/0: product 0 is 1031 -mem/0: storing 1031 in location 1070 -run/0: instruction channel-full?/2 -run/0: {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]} <- get/24 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "first-free", value: 1, type: 0, properties: ["first-free": "offset"]} -run/0: ingredient 0 is chan -mem/0: location 1070 is 1031 -run/0: ingredient 1 is first-free -run/0: address to copy is 1032 -run/0: its type is 1 -mem/0: location 1032 is 0 -run/0: product 0 is 0 -mem/0: storing 0 in location 1071 -run/0: instruction channel-full?/3 -run/0: {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]} <- add/2 {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is tmp -mem/0: location 1071 is 0 -run/0: ingredient 1 is 1 -run/0: product 0 is 1 -mem/0: storing 1 in location 1071 -run/0: instruction channel-full?/5 -run/0: {name: "len", value: 3, type: 1, properties: ["len": "integer"]} <- channel-capacity/113 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} -mem/0: location 1070 is 1031 -run/0: instruction channel-capacity/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/44 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} -mem/0: array size is 30 -mem/0: new alloc: 1099 -run/0: instruction channel-capacity/1 -run/0: {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} <- next-ingredient/30 -run/0: product 0 is 1031 -mem/0: storing 1031 in location 1101 -run/0: instruction channel-capacity/2 -run/0: {name: "q", value: 2, type: 2-5-1, properties: ["q": "address":"array":"location"]} <- get/24 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "data", value: 2, type: 0, properties: ["data": "offset"]} -run/0: ingredient 0 is chan -mem/0: location 1101 is 1031 -run/0: ingredient 1 is data -run/0: address to copy is 1033 -run/0: its type is 2 -mem/0: location 1033 is 1034 -run/0: product 0 is 1034 -mem/0: storing 1034 in location 1102 -run/0: instruction channel-capacity/3 -run/0: {name: "result", value: 3, type: 1, properties: ["result": "integer"]} <- length/28 {name: "q", value: 2, type: 2-5-1, properties: ["q": "address":"array":"location", "deref": ]} -mem/0: location 1102 is 1034 -mem/0: storing 2 in location 1103 -run/0: instruction channel-capacity/4 -run/0: reply/33 {name: "result", value: 3, type: 1, properties: ["result": "integer"]} -mem/0: location 1103 is 2 -run/0: result 0 is 2 -mem/0: storing 2 in location 1072 -run/0: instruction channel-full?/6 -run/0: {name: "at-end?", value: 4, type: 3, properties: ["at-end?": "boolean"]} <- greater-or-equal/16 {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]}, {name: "len", value: 3, type: 1, properties: ["len": "integer"]} -run/0: ingredient 0 is tmp -mem/0: location 1071 is 1 -run/0: ingredient 1 is len -mem/0: location 1072 is 2 -run/0: product 0 is 0 -mem/0: storing 0 in location 1073 -run/0: instruction channel-full?/7 -run/0: break-unless/12 {name: "at-end?", value: 4, type: 3, properties: ["at-end?": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} -mem/0: location 1073 is 0 -run/0: ingredient 0 is 0 -run/0: ingredient 1 is -run/0: jumping to instruction 9 -run/0: instruction channel-full?/10 -run/0: {name: "full", value: 5, type: 1, properties: ["full": "integer"]} <- get/24 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "first-full", value: 0, type: 0, properties: ["first-full": "offset"]} -run/0: ingredient 0 is chan -mem/0: location 1070 is 1031 -run/0: ingredient 1 is first-full -run/0: address to copy is 1031 -run/0: its type is 1 -mem/0: location 1031 is 0 -run/0: product 0 is 0 -mem/0: storing 0 in location 1074 -run/0: instruction channel-full?/11 -run/0: {name: "result", value: 6, type: 3, properties: ["result": "boolean"]} <- equal/13 {name: "full", value: 5, type: 1, properties: ["full": "integer"]}, {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]} -run/0: ingredient 0 is full -mem/0: location 1074 is 0 -run/0: ingredient 1 is tmp -mem/0: location 1071 is 1 -run/0: product 0 is 0 -mem/0: storing 0 in location 1075 -run/0: instruction channel-full?/12 -run/0: reply/33 {name: "result", value: 6, type: 3, properties: ["result": "boolean"]} -mem/0: location 1075 is 0 -run/0: result 0 is 0 -mem/0: storing 0 in location 1041 -run/0: instruction write/5 -run/0: break-unless/12 {name: "full", value: 3, type: 3, properties: ["full": "boolean"]}, {name: "", value: 2, type: , properties: ["": ]} -mem/0: location 1041 is 0 -run/0: ingredient 0 is 0 -run/0: ingredient 1 is -run/0: jumping to instruction 8 -run/0: instruction write/9 -run/0: {name: "circular-buffer", value: 5, type: 2-5-1, properties: ["circular-buffer": "address":"array":"location"]} <- get/24 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "data", value: 2, type: 0, properties: ["data": "offset"]} -run/0: ingredient 0 is chan -mem/0: location 1039 is 1031 -run/0: ingredient 1 is data -run/0: address to copy is 1033 -run/0: its type is 2 -mem/0: location 1033 is 1034 -run/0: product 0 is 1034 -mem/0: storing 1034 in location 1043 -run/0: instruction write/10 -run/0: {name: "free", value: 6, type: 2-1, properties: ["free": "address":"integer"]} <- get-address/25 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "first-free", value: 1, type: 0, properties: ["first-free": "offset"]} -run/0: ingredient 0 is chan -mem/0: location 1039 is 1031 -run/0: ingredient 1 is first-free -run/0: address to copy is 1032 -run/0: product 0 is 1032 -mem/0: storing 1032 in location 1044 -run/0: instruction write/11 -run/0: {name: "dest", value: 7, type: 2-1, properties: ["dest": "address":"location"]} <- index-address/27 {name: "circular-buffer", value: 5, type: 2-5-1, properties: ["circular-buffer": "address":"array":"location", "deref": ]}, {name: "free", value: 6, type: 2-1, properties: ["free": "address":"integer", "deref": ]} -run/0: ingredient 0 is circular-buffer -mem/0: location 1043 is 1034 -run/0: ingredient 1 is {name: "free", value: 6, type: 2-1, properties: ["free": "address":"integer", "deref": ]} -mem/0: location 1044 is 1032 -mem/0: location 1032 is 0 -run/0: address to copy is 1035 -run/0: product 0 is 1035 -mem/0: storing 1035 in location 1045 -run/0: instruction write/12 -run/0: {name: "dest", value: 7, type: 2-1, properties: ["dest": "address":"location", "deref": ]} <- copy/1 {name: "val", value: 2, type: 1, properties: ["val": "location"]} -run/0: ingredient 0 is val -mem/0: location 1040 is 34 -mem/0: location 1045 is 1035 -mem/0: storing 34 in location 1035 -run/0: instruction write/13 -run/0: {name: "free", value: 6, type: 2-1, properties: ["free": "address":"integer", "deref": ]} <- add/2 {name: "free", value: 6, type: 2-1, properties: ["free": "address":"integer", "deref": ]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is free -mem/0: location 1044 is 1032 -mem/0: location 1032 is 0 -run/0: ingredient 1 is 1 -run/0: product 0 is 1 -mem/0: location 1044 is 1032 -mem/0: storing 1 in location 1032 -run/0: instruction write/15 -run/0: {name: "len", value: 8, type: 1, properties: ["len": "integer"]} <- length/28 {name: "circular-buffer", value: 5, type: 2-5-1, properties: ["circular-buffer": "address":"array":"location", "deref": ]} -mem/0: location 1043 is 1034 -mem/0: storing 2 in location 1046 -run/0: instruction write/16 -run/0: {name: "at-end?", value: 9, type: 3, properties: ["at-end?": "boolean"]} <- greater-or-equal/16 {name: "free", value: 6, type: 2-1, properties: ["free": "address":"integer", "deref": ]}, {name: "len", value: 8, type: 1, properties: ["len": "integer"]} -run/0: ingredient 0 is free -mem/0: location 1044 is 1032 -mem/0: location 1032 is 1 -run/0: ingredient 1 is len -mem/0: location 1046 is 2 -run/0: product 0 is 0 -mem/0: storing 0 in location 1047 -run/0: instruction write/17 -run/0: break-unless/12 {name: "at-end?", value: 9, type: 3, properties: ["at-end?": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} -mem/0: location 1047 is 0 -run/0: ingredient 0 is 0 -run/0: ingredient 1 is -run/0: jumping to instruction 19 -run/0: instruction write/20 -run/0: reply/33 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "same-as-ingredient": "0"]} -mem/0: location 1039 is 1031 -run/0: result 0 is 1031 -mem/0: storing 1031 in location 1 -run/0: instruction run1001/2 -run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- channel-empty?/112 {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel"]} -mem/0: location 1 is 1031 -run/0: instruction channel-empty?/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/44 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} -mem/0: array size is 30 -mem/0: new alloc: 1130 -run/0: instruction channel-empty?/1 -run/0: {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} <- next-ingredient/30 -run/0: product 0 is 1031 -mem/0: storing 1031 in location 1132 -run/0: instruction channel-empty?/2 -run/0: {name: "full", value: 2, type: 1, properties: ["full": "integer"]} <- get/24 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "first-full", value: 0, type: 0, properties: ["first-full": "offset"]} -run/0: ingredient 0 is chan -mem/0: location 1132 is 1031 -run/0: ingredient 1 is first-full -run/0: address to copy is 1031 -run/0: its type is 1 -mem/0: location 1031 is 0 -run/0: product 0 is 0 -mem/0: storing 0 in location 1133 -run/0: instruction channel-empty?/3 -run/0: {name: "free", value: 3, type: 1, properties: ["free": "integer"]} <- get/24 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "first-free", value: 1, type: 0, properties: ["first-free": "offset"]} -run/0: ingredient 0 is chan -mem/0: location 1132 is 1031 -run/0: ingredient 1 is first-free -run/0: address to copy is 1032 -run/0: its type is 1 -mem/0: location 1032 is 1 -run/0: product 0 is 1 -mem/0: storing 1 in location 1134 -run/0: instruction channel-empty?/4 -run/0: {name: "result", value: 4, type: 3, properties: ["result": "boolean"]} <- equal/13 {name: "full", value: 2, type: 1, properties: ["full": "integer"]}, {name: "free", value: 3, type: 1, properties: ["free": "integer"]} -run/0: ingredient 0 is full -mem/0: location 1133 is 0 -run/0: ingredient 1 is free -mem/0: location 1134 is 1 -run/0: product 0 is 0 -mem/0: storing 0 in location 1135 -run/0: instruction channel-empty?/5 -run/0: reply/33 {name: "result", value: 4, type: 3, properties: ["result": "boolean"]} -mem/0: location 1135 is 0 -run/0: result 0 is 0 -mem/0: storing 0 in location 2 -run/0: instruction run1001/3 -run/0: {name: "3", value: 3, type: 1, properties: ["3": "integer"]} <- channel-full?/110 {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel"]} -mem/0: location 1 is 1031 -run/0: instruction channel-full?/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/44 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} -mem/0: array size is 30 -mem/0: new alloc: 1161 -run/0: instruction channel-full?/1 -run/0: {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} <- next-ingredient/30 -run/0: product 0 is 1031 -mem/0: storing 1031 in location 1163 -run/0: instruction channel-full?/2 -run/0: {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]} <- get/24 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "first-free", value: 1, type: 0, properties: ["first-free": "offset"]} -run/0: ingredient 0 is chan -mem/0: location 1163 is 1031 -run/0: ingredient 1 is first-free -run/0: address to copy is 1032 -run/0: its type is 1 -mem/0: location 1032 is 1 -run/0: product 0 is 1 -mem/0: storing 1 in location 1164 -run/0: instruction channel-full?/3 -run/0: {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]} <- add/2 {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is tmp -mem/0: location 1164 is 1 -run/0: ingredient 1 is 1 -run/0: product 0 is 2 -mem/0: storing 2 in location 1164 -run/0: instruction channel-full?/5 -run/0: {name: "len", value: 3, type: 1, properties: ["len": "integer"]} <- channel-capacity/113 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} -mem/0: location 1163 is 1031 -run/0: instruction channel-capacity/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/44 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} -mem/0: array size is 30 -mem/0: new alloc: 1192 -run/0: instruction channel-capacity/1 -run/0: {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} <- next-ingredient/30 -run/0: product 0 is 1031 -mem/0: storing 1031 in location 1194 -run/0: instruction channel-capacity/2 -run/0: {name: "q", value: 2, type: 2-5-1, properties: ["q": "address":"array":"location"]} <- get/24 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "data", value: 2, type: 0, properties: ["data": "offset"]} -run/0: ingredient 0 is chan -mem/0: location 1194 is 1031 -run/0: ingredient 1 is data -run/0: address to copy is 1033 -run/0: its type is 2 -mem/0: location 1033 is 1034 -run/0: product 0 is 1034 -mem/0: storing 1034 in location 1195 -run/0: instruction channel-capacity/3 -run/0: {name: "result", value: 3, type: 1, properties: ["result": "integer"]} <- length/28 {name: "q", value: 2, type: 2-5-1, properties: ["q": "address":"array":"location", "deref": ]} -mem/0: location 1195 is 1034 -mem/0: storing 2 in location 1196 -run/0: instruction channel-capacity/4 -run/0: reply/33 {name: "result", value: 3, type: 1, properties: ["result": "integer"]} -mem/0: location 1196 is 2 -run/0: result 0 is 2 -mem/0: storing 2 in location 1165 -run/0: instruction channel-full?/6 -run/0: {name: "at-end?", value: 4, type: 3, properties: ["at-end?": "boolean"]} <- greater-or-equal/16 {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]}, {name: "len", value: 3, type: 1, properties: ["len": "integer"]} -run/0: ingredient 0 is tmp -mem/0: location 1164 is 2 -run/0: ingredient 1 is len -mem/0: location 1165 is 2 -run/0: product 0 is 1 -mem/0: storing 1 in location 1166 -run/0: instruction channel-full?/7 -run/0: break-unless/12 {name: "at-end?", value: 4, type: 3, properties: ["at-end?": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} -mem/0: location 1166 is 1 -run/0: ingredient 0 is 1 -run/0: jump-unless fell through -run/0: instruction channel-full?/8 -run/0: {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]} <- copy/1 {name: "0", value: 0, type: 0, properties: ["0": "literal"]} -run/0: ingredient 0 is 0 -mem/0: storing 0 in location 1164 -run/0: instruction channel-full?/10 -run/0: {name: "full", value: 5, type: 1, properties: ["full": "integer"]} <- get/24 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "first-full", value: 0, type: 0, properties: ["first-full": "offset"]} -run/0: ingredient 0 is chan -mem/0: location 1163 is 1031 -run/0: ingredient 1 is first-full -run/0: address to copy is 1031 -run/0: its type is 1 -mem/0: location 1031 is 0 -run/0: product 0 is 0 -mem/0: storing 0 in location 1167 -run/0: instruction channel-full?/11 -run/0: {name: "result", value: 6, type: 3, properties: ["result": "boolean"]} <- equal/13 {name: "full", value: 5, type: 1, properties: ["full": "integer"]}, {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]} -run/0: ingredient 0 is full -mem/0: location 1167 is 0 -run/0: ingredient 1 is tmp -mem/0: location 1164 is 0 -run/0: product 0 is 1 -mem/0: storing 1 in location 1168 -run/0: instruction channel-full?/12 -run/0: reply/33 {name: "result", value: 6, type: 3, properties: ["result": "boolean"]} -mem/0: location 1168 is 1 -run/0: result 0 is 1 -mem/0: storing 1 in location 3 -run/0: instruction channel-write-full/1 -run/0: memory-should-contain/46 {name: " - 2 <- 0 # empty? - 3 <- 1 # full? - ", value: 0, type: 0, properties: [" - 2 <- 0 # empty? - 3 <- 1 # full? - ": "literal-string"]} -run/0: checking location 2 -run/0: checking location 3 diff --git a/cpp/.traces/channel-write-increments-free b/cpp/.traces/channel-write-increments-free deleted file mode 100644 index aa3aa317..00000000 --- a/cpp/.traces/channel-write-increments-free +++ /dev/null @@ -1,339 +0,0 @@ -parse/0: instruction: run -parse/0: ingredient: {name: " - 1:address:channel <- init-channel 3:literal/capacity - 1:address:channel <- write 1:address:channel, 34:literal - 2:integer <- get 1:address:channel/deref, first-full:offset - 3:integer <- get 1:address:channel/deref, first-free:offset - ", value: 0, type: 0, properties: [" - 1:address:channel <- init-channel 3:literal/capacity - 1:address:channel <- write 1:address:channel, 34:literal - 2:integer <- get 1:address:channel/deref, first-full:offset - 3:integer <- get 1:address:channel/deref, first-free:offset - ": "literal-string"]} -parse/0: instruction: memory-should-contain -parse/0: ingredient: {name: " - 2 <- 0 # first-full - 3 <- 1 # first-free - ", value: 0, type: 0, properties: [" - 2 <- 0 # first-full - 3 <- 1 # first-free - ": "literal-string"]} -after-brace/0: recipe channel-write-increments-free -after-brace/0: run ... -after-brace/0: memory-should-contain ... -new/0: routine allocated memory from 1000 to 101000 -schedule/0: channel-write-increments-free -run/0: instruction channel-write-increments-free/0 -run/0: run/45 {name: " - 1:address:channel <- init-channel 3:literal/capacity - 1:address:channel <- write 1:address:channel, 34:literal - 2:integer <- get 1:address:channel/deref, first-full:offset - 3:integer <- get 1:address:channel/deref, first-free:offset - ", value: 0, type: 0, properties: [" - 1:address:channel <- init-channel 3:literal/capacity - 1:address:channel <- write 1:address:channel, 34:literal - 2:integer <- get 1:address:channel/deref, first-full:offset - 3:integer <- get 1:address:channel/deref, first-free:offset - ": "literal-string"]} -parse/0: instruction: init-channel -parse/0: ingredient: {name: "3", value: 0, type: 0, properties: ["3": "literal", "capacity": ]} -parse/0: product: {name: "1", value: 0, type: 2-10, properties: ["1": "address":"channel"]} -parse/0: instruction: write -parse/0: ingredient: {name: "1", value: 0, type: 2-10, properties: ["1": "address":"channel"]} -parse/0: ingredient: {name: "34", value: 0, type: 0, properties: ["34": "literal"]} -parse/0: product: {name: "1", value: 0, type: 2-10, properties: ["1": "address":"channel"]} -parse/0: instruction: get -parse/0: ingredient: {name: "1", value: 0, type: 2-10, properties: ["1": "address":"channel", "deref": ]} -parse/0: ingredient: {name: "first-full", value: 0, type: 0, properties: ["first-full": "offset"]} -parse/0: product: {name: "2", value: 0, type: 1, properties: ["2": "integer"]} -parse/0: instruction: get -parse/0: ingredient: {name: "1", value: 0, type: 2-10, properties: ["1": "address":"channel", "deref": ]} -parse/0: ingredient: {name: "first-free", value: 0, type: 0, properties: ["first-free": "offset"]} -parse/0: product: {name: "3", value: 0, type: 1, properties: ["3": "integer"]} -name/0: element first-full of type channel is at offset 0 -name/0: element first-free of type channel is at offset 1 -after-brace/0: recipe run1001 -after-brace/0: init-channel ... -after-brace/0: write ... -after-brace/0: get ... -after-brace/0: get ... -run/0: instruction run1001/0 -run/0: {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel"]} <- init-channel/108 {name: "3", value: 3, type: 0, properties: ["3": "literal", "capacity": ]} -run/0: instruction init-channel/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/44 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} -mem/0: array size is 30 -mem/0: new alloc: 1000 -run/0: instruction init-channel/1 -run/0: {name: "result", value: 1, type: 2-10, properties: ["result": "address":"channel"]} <- new/44 {name: "channel", value: 10, type: 0, properties: ["channel": "type"]} -mem/0: new alloc: 1031 -mem/0: storing 1031 in location 1002 -run/0: instruction init-channel/2 -run/0: {name: "full", value: 2, type: 2-1, properties: ["full": "address":"integer"]} <- get-address/25 {name: "result", value: 1, type: 2-10, properties: ["result": "address":"channel", "deref": ]}, {name: "first-full", value: 0, type: 0, properties: ["first-full": "offset"]} -run/0: ingredient 0 is result -mem/0: location 1002 is 1031 -run/0: ingredient 1 is first-full -run/0: address to copy is 1031 -run/0: product 0 is 1031 -mem/0: storing 1031 in location 1003 -run/0: instruction init-channel/3 -run/0: {name: "full", value: 2, type: 2-1, properties: ["full": "address":"integer", "deref": ]} <- copy/1 {name: "0", value: 0, type: 0, properties: ["0": "literal"]} -run/0: ingredient 0 is 0 -mem/0: location 1003 is 1031 -mem/0: storing 0 in location 1031 -run/0: instruction init-channel/4 -run/0: {name: "free", value: 3, type: 2-1, properties: ["free": "address":"integer"]} <- get-address/25 {name: "result", value: 1, type: 2-10, properties: ["result": "address":"channel", "deref": ]}, {name: "first-free", value: 1, type: 0, properties: ["first-free": "offset"]} -run/0: ingredient 0 is result -mem/0: location 1002 is 1031 -run/0: ingredient 1 is first-free -run/0: address to copy is 1032 -run/0: product 0 is 1032 -mem/0: storing 1032 in location 1004 -run/0: instruction init-channel/5 -run/0: {name: "free", value: 3, type: 2-1, properties: ["free": "address":"integer", "deref": ]} <- copy/1 {name: "0", value: 0, type: 0, properties: ["0": "literal"]} -run/0: ingredient 0 is 0 -mem/0: location 1004 is 1032 -mem/0: storing 0 in location 1032 -run/0: instruction init-channel/6 -run/0: {name: "capacity", value: 4, type: 1, properties: ["capacity": "integer"]} <- next-ingredient/30 -run/0: product 0 is 3 -mem/0: storing 3 in location 1005 -run/0: instruction init-channel/7 -run/0: {name: "capacity", value: 4, type: 1, properties: ["capacity": "integer"]} <- add/2 {name: "capacity", value: 4, type: 1, properties: ["capacity": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is capacity -mem/0: location 1005 is 3 -run/0: ingredient 1 is 1 -run/0: product 0 is 4 -mem/0: storing 4 in location 1005 -run/0: instruction init-channel/8 -run/0: {name: "dest", value: 5, type: 2-2-5-1, properties: ["dest": "address":"address":"array":"location"]} <- get-address/25 {name: "result", value: 1, type: 2-10, properties: ["result": "address":"channel", "deref": ]}, {name: "data", value: 2, type: 0, properties: ["data": "offset"]} -run/0: ingredient 0 is result -mem/0: location 1002 is 1031 -run/0: ingredient 1 is data -run/0: address to copy is 1033 -run/0: product 0 is 1033 -mem/0: storing 1033 in location 1006 -run/0: instruction init-channel/9 -run/0: {name: "dest", value: 5, type: 2-2-5-1, properties: ["dest": "address":"address":"array":"location", "deref": ]} <- new/44 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "capacity", value: 4, type: 1, properties: ["capacity": "integer"]} -mem/0: location 1005 is 4 -mem/0: array size is 4 -mem/0: new alloc: 1034 -mem/0: location 1006 is 1033 -mem/0: storing 1034 in location 1033 -run/0: instruction init-channel/10 -run/0: reply/33 {name: "result", value: 1, type: 2-10, properties: ["result": "address":"channel"]} -mem/0: location 1002 is 1031 -run/0: result 0 is 1031 -mem/0: storing 1031 in location 1 -run/0: instruction run1001/1 -run/0: {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel"]} <- write/109 {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel"]}, {name: "34", value: 34, type: 0, properties: ["34": "literal"]} -mem/0: location 1 is 1031 -run/0: instruction write/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/44 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} -mem/0: array size is 30 -mem/0: new alloc: 1039 -run/0: instruction write/1 -run/0: {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} <- next-ingredient/30 -run/0: product 0 is 1031 -mem/0: storing 1031 in location 1041 -run/0: instruction write/2 -run/0: {name: "val", value: 2, type: 1, properties: ["val": "location"]} <- next-ingredient/30 -run/0: product 0 is 34 -mem/0: storing 34 in location 1042 -run/0: instruction write/4 -run/0: {name: "full", value: 3, type: 3, properties: ["full": "boolean"]} <- channel-full?/110 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} -mem/0: location 1041 is 1031 -run/0: instruction channel-full?/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/44 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} -mem/0: array size is 30 -mem/0: new alloc: 1070 -run/0: instruction channel-full?/1 -run/0: {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} <- next-ingredient/30 -run/0: product 0 is 1031 -mem/0: storing 1031 in location 1072 -run/0: instruction channel-full?/2 -run/0: {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]} <- get/24 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "first-free", value: 1, type: 0, properties: ["first-free": "offset"]} -run/0: ingredient 0 is chan -mem/0: location 1072 is 1031 -run/0: ingredient 1 is first-free -run/0: address to copy is 1032 -run/0: its type is 1 -mem/0: location 1032 is 0 -run/0: product 0 is 0 -mem/0: storing 0 in location 1073 -run/0: instruction channel-full?/3 -run/0: {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]} <- add/2 {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is tmp -mem/0: location 1073 is 0 -run/0: ingredient 1 is 1 -run/0: product 0 is 1 -mem/0: storing 1 in location 1073 -run/0: instruction channel-full?/5 -run/0: {name: "len", value: 3, type: 1, properties: ["len": "integer"]} <- channel-capacity/113 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} -mem/0: location 1072 is 1031 -run/0: instruction channel-capacity/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/44 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} -mem/0: array size is 30 -mem/0: new alloc: 1101 -run/0: instruction channel-capacity/1 -run/0: {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} <- next-ingredient/30 -run/0: product 0 is 1031 -mem/0: storing 1031 in location 1103 -run/0: instruction channel-capacity/2 -run/0: {name: "q", value: 2, type: 2-5-1, properties: ["q": "address":"array":"location"]} <- get/24 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "data", value: 2, type: 0, properties: ["data": "offset"]} -run/0: ingredient 0 is chan -mem/0: location 1103 is 1031 -run/0: ingredient 1 is data -run/0: address to copy is 1033 -run/0: its type is 2 -mem/0: location 1033 is 1034 -run/0: product 0 is 1034 -mem/0: storing 1034 in location 1104 -run/0: instruction channel-capacity/3 -run/0: {name: "result", value: 3, type: 1, properties: ["result": "integer"]} <- length/28 {name: "q", value: 2, type: 2-5-1, properties: ["q": "address":"array":"location", "deref": ]} -mem/0: location 1104 is 1034 -mem/0: storing 4 in location 1105 -run/0: instruction channel-capacity/4 -run/0: reply/33 {name: "result", value: 3, type: 1, properties: ["result": "integer"]} -mem/0: location 1105 is 4 -run/0: result 0 is 4 -mem/0: storing 4 in location 1074 -run/0: instruction channel-full?/6 -run/0: {name: "at-end?", value: 4, type: 3, properties: ["at-end?": "boolean"]} <- greater-or-equal/16 {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]}, {name: "len", value: 3, type: 1, properties: ["len": "integer"]} -run/0: ingredient 0 is tmp -mem/0: location 1073 is 1 -run/0: ingredient 1 is len -mem/0: location 1074 is 4 -run/0: product 0 is 0 -mem/0: storing 0 in location 1075 -run/0: instruction channel-full?/7 -run/0: break-unless/12 {name: "at-end?", value: 4, type: 3, properties: ["at-end?": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} -mem/0: location 1075 is 0 -run/0: ingredient 0 is 0 -run/0: ingredient 1 is -run/0: jumping to instruction 9 -run/0: instruction channel-full?/10 -run/0: {name: "full", value: 5, type: 1, properties: ["full": "integer"]} <- get/24 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "first-full", value: 0, type: 0, properties: ["first-full": "offset"]} -run/0: ingredient 0 is chan -mem/0: location 1072 is 1031 -run/0: ingredient 1 is first-full -run/0: address to copy is 1031 -run/0: its type is 1 -mem/0: location 1031 is 0 -run/0: product 0 is 0 -mem/0: storing 0 in location 1076 -run/0: instruction channel-full?/11 -run/0: {name: "result", value: 6, type: 3, properties: ["result": "boolean"]} <- equal/13 {name: "full", value: 5, type: 1, properties: ["full": "integer"]}, {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]} -run/0: ingredient 0 is full -mem/0: location 1076 is 0 -run/0: ingredient 1 is tmp -mem/0: location 1073 is 1 -run/0: product 0 is 0 -mem/0: storing 0 in location 1077 -run/0: instruction channel-full?/12 -run/0: reply/33 {name: "result", value: 6, type: 3, properties: ["result": "boolean"]} -mem/0: location 1077 is 0 -run/0: result 0 is 0 -mem/0: storing 0 in location 1043 -run/0: instruction write/5 -run/0: break-unless/12 {name: "full", value: 3, type: 3, properties: ["full": "boolean"]}, {name: "", value: 2, type: , properties: ["": ]} -mem/0: location 1043 is 0 -run/0: ingredient 0 is 0 -run/0: ingredient 1 is -run/0: jumping to instruction 8 -run/0: instruction write/9 -run/0: {name: "circular-buffer", value: 5, type: 2-5-1, properties: ["circular-buffer": "address":"array":"location"]} <- get/24 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "data", value: 2, type: 0, properties: ["data": "offset"]} -run/0: ingredient 0 is chan -mem/0: location 1041 is 1031 -run/0: ingredient 1 is data -run/0: address to copy is 1033 -run/0: its type is 2 -mem/0: location 1033 is 1034 -run/0: product 0 is 1034 -mem/0: storing 1034 in location 1045 -run/0: instruction write/10 -run/0: {name: "free", value: 6, type: 2-1, properties: ["free": "address":"integer"]} <- get-address/25 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "first-free", value: 1, type: 0, properties: ["first-free": "offset"]} -run/0: ingredient 0 is chan -mem/0: location 1041 is 1031 -run/0: ingredient 1 is first-free -run/0: address to copy is 1032 -run/0: product 0 is 1032 -mem/0: storing 1032 in location 1046 -run/0: instruction write/11 -run/0: {name: "dest", value: 7, type: 2-1, properties: ["dest": "address":"location"]} <- index-address/27 {name: "circular-buffer", value: 5, type: 2-5-1, properties: ["circular-buffer": "address":"array":"location", "deref": ]}, {name: "free", value: 6, type: 2-1, properties: ["free": "address":"integer", "deref": ]} -run/0: ingredient 0 is circular-buffer -mem/0: location 1045 is 1034 -run/0: ingredient 1 is {name: "free", value: 6, type: 2-1, properties: ["free": "address":"integer", "deref": ]} -mem/0: location 1046 is 1032 -mem/0: location 1032 is 0 -run/0: address to copy is 1035 -run/0: product 0 is 1035 -mem/0: storing 1035 in location 1047 -run/0: instruction write/12 -run/0: {name: "dest", value: 7, type: 2-1, properties: ["dest": "address":"location", "deref": ]} <- copy/1 {name: "val", value: 2, type: 1, properties: ["val": "location"]} -run/0: ingredient 0 is val -mem/0: location 1042 is 34 -mem/0: location 1047 is 1035 -mem/0: storing 34 in location 1035 -run/0: instruction write/13 -run/0: {name: "free", value: 6, type: 2-1, properties: ["free": "address":"integer", "deref": ]} <- add/2 {name: "free", value: 6, type: 2-1, properties: ["free": "address":"integer", "deref": ]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is free -mem/0: location 1046 is 1032 -mem/0: location 1032 is 0 -run/0: ingredient 1 is 1 -run/0: product 0 is 1 -mem/0: location 1046 is 1032 -mem/0: storing 1 in location 1032 -run/0: instruction write/15 -run/0: {name: "len", value: 8, type: 1, properties: ["len": "integer"]} <- length/28 {name: "circular-buffer", value: 5, type: 2-5-1, properties: ["circular-buffer": "address":"array":"location", "deref": ]} -mem/0: location 1045 is 1034 -mem/0: storing 4 in location 1048 -run/0: instruction write/16 -run/0: {name: "at-end?", value: 9, type: 3, properties: ["at-end?": "boolean"]} <- greater-or-equal/16 {name: "free", value: 6, type: 2-1, properties: ["free": "address":"integer", "deref": ]}, {name: "len", value: 8, type: 1, properties: ["len": "integer"]} -run/0: ingredient 0 is free -mem/0: location 1046 is 1032 -mem/0: location 1032 is 1 -run/0: ingredient 1 is len -mem/0: location 1048 is 4 -run/0: product 0 is 0 -mem/0: storing 0 in location 1049 -run/0: instruction write/17 -run/0: break-unless/12 {name: "at-end?", value: 9, type: 3, properties: ["at-end?": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} -mem/0: location 1049 is 0 -run/0: ingredient 0 is 0 -run/0: ingredient 1 is -run/0: jumping to instruction 19 -run/0: instruction write/20 -run/0: reply/33 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "same-as-ingredient": "0"]} -mem/0: location 1041 is 1031 -run/0: result 0 is 1031 -mem/0: storing 1031 in location 1 -run/0: instruction run1001/2 -run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- get/24 {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel", "deref": ]}, {name: "first-full", value: 0, type: 0, properties: ["first-full": "offset"]} -run/0: ingredient 0 is 1 -mem/0: location 1 is 1031 -run/0: ingredient 1 is first-full -run/0: address to copy is 1031 -run/0: its type is 1 -mem/0: location 1031 is 0 -run/0: product 0 is 0 -mem/0: storing 0 in location 2 -run/0: instruction run1001/3 -run/0: {name: "3", value: 3, type: 1, properties: ["3": "integer"]} <- get/24 {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel", "deref": ]}, {name: "first-free", value: 1, type: 0, properties: ["first-free": "offset"]} -run/0: ingredient 0 is 1 -mem/0: location 1 is 1031 -run/0: ingredient 1 is first-free -run/0: address to copy is 1032 -run/0: its type is 1 -mem/0: location 1032 is 1 -run/0: product 0 is 1 -mem/0: storing 1 in location 3 -run/0: instruction channel-write-increments-free/1 -run/0: memory-should-contain/46 {name: " - 2 <- 0 # first-full - 3 <- 1 # first-free - ", value: 0, type: 0, properties: [" - 2 <- 0 # first-full - 3 <- 1 # first-free - ": "literal-string"]} -run/0: checking location 2 -run/0: checking location 3 diff --git a/cpp/.traces/channel-write-not-empty b/cpp/.traces/channel-write-not-empty deleted file mode 100644 index 47b4f426..00000000 --- a/cpp/.traces/channel-write-not-empty +++ /dev/null @@ -1,454 +0,0 @@ -parse/0: instruction: run -parse/0: ingredient: {name: " - 1:address:channel <- init-channel 3:literal/capacity - 1:address:channel <- write 1:address:channel, 34:literal - 2:integer <- channel-empty? 1:address:channel - 3:integer <- channel-full? 1:address:channel - ", value: 0, type: 0, properties: [" - 1:address:channel <- init-channel 3:literal/capacity - 1:address:channel <- write 1:address:channel, 34:literal - 2:integer <- channel-empty? 1:address:channel - 3:integer <- channel-full? 1:address:channel - ": "literal-string"]} -parse/0: instruction: memory-should-contain -parse/0: ingredient: {name: " - 2 <- 0 # empty? - 3 <- 0 # full? - ", value: 0, type: 0, properties: [" - 2 <- 0 # empty? - 3 <- 0 # full? - ": "literal-string"]} -after-brace/0: recipe channel-write-not-empty -after-brace/0: run ... -after-brace/0: memory-should-contain ... -new/0: routine allocated memory from 1000 to 101000 -schedule/0: channel-write-not-empty -run/0: instruction channel-write-not-empty/0 -run/0: run/45 {name: " - 1:address:channel <- init-channel 3:literal/capacity - 1:address:channel <- write 1:address:channel, 34:literal - 2:integer <- channel-empty? 1:address:channel - 3:integer <- channel-full? 1:address:channel - ", value: 0, type: 0, properties: [" - 1:address:channel <- init-channel 3:literal/capacity - 1:address:channel <- write 1:address:channel, 34:literal - 2:integer <- channel-empty? 1:address:channel - 3:integer <- channel-full? 1:address:channel - ": "literal-string"]} -parse/0: instruction: init-channel -parse/0: ingredient: {name: "3", value: 0, type: 0, properties: ["3": "literal", "capacity": ]} -parse/0: product: {name: "1", value: 0, type: 2-10, properties: ["1": "address":"channel"]} -parse/0: instruction: write -parse/0: ingredient: {name: "1", value: 0, type: 2-10, properties: ["1": "address":"channel"]} -parse/0: ingredient: {name: "34", value: 0, type: 0, properties: ["34": "literal"]} -parse/0: product: {name: "1", value: 0, type: 2-10, properties: ["1": "address":"channel"]} -parse/0: instruction: channel-empty? -parse/0: ingredient: {name: "1", value: 0, type: 2-10, properties: ["1": "address":"channel"]} -parse/0: product: {name: "2", value: 0, type: 1, properties: ["2": "integer"]} -parse/0: instruction: channel-full? -parse/0: ingredient: {name: "1", value: 0, type: 2-10, properties: ["1": "address":"channel"]} -parse/0: product: {name: "3", value: 0, type: 1, properties: ["3": "integer"]} -after-brace/0: recipe run1001 -after-brace/0: init-channel ... -after-brace/0: write ... -after-brace/0: channel-empty? ... -after-brace/0: channel-full? ... -run/0: instruction run1001/0 -run/0: {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel"]} <- init-channel/108 {name: "3", value: 3, type: 0, properties: ["3": "literal", "capacity": ]} -run/0: instruction init-channel/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/44 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} -mem/0: array size is 30 -mem/0: new alloc: 1000 -run/0: instruction init-channel/1 -run/0: {name: "result", value: 1, type: 2-10, properties: ["result": "address":"channel"]} <- new/44 {name: "channel", value: 10, type: 0, properties: ["channel": "type"]} -mem/0: new alloc: 1031 -mem/0: storing 1031 in location 1002 -run/0: instruction init-channel/2 -run/0: {name: "full", value: 2, type: 2-1, properties: ["full": "address":"integer"]} <- get-address/25 {name: "result", value: 1, type: 2-10, properties: ["result": "address":"channel", "deref": ]}, {name: "first-full", value: 0, type: 0, properties: ["first-full": "offset"]} -run/0: ingredient 0 is result -mem/0: location 1002 is 1031 -run/0: ingredient 1 is first-full -run/0: address to copy is 1031 -run/0: product 0 is 1031 -mem/0: storing 1031 in location 1003 -run/0: instruction init-channel/3 -run/0: {name: "full", value: 2, type: 2-1, properties: ["full": "address":"integer", "deref": ]} <- copy/1 {name: "0", value: 0, type: 0, properties: ["0": "literal"]} -run/0: ingredient 0 is 0 -mem/0: location 1003 is 1031 -mem/0: storing 0 in location 1031 -run/0: instruction init-channel/4 -run/0: {name: "free", value: 3, type: 2-1, properties: ["free": "address":"integer"]} <- get-address/25 {name: "result", value: 1, type: 2-10, properties: ["result": "address":"channel", "deref": ]}, {name: "first-free", value: 1, type: 0, properties: ["first-free": "offset"]} -run/0: ingredient 0 is result -mem/0: location 1002 is 1031 -run/0: ingredient 1 is first-free -run/0: address to copy is 1032 -run/0: product 0 is 1032 -mem/0: storing 1032 in location 1004 -run/0: instruction init-channel/5 -run/0: {name: "free", value: 3, type: 2-1, properties: ["free": "address":"integer", "deref": ]} <- copy/1 {name: "0", value: 0, type: 0, properties: ["0": "literal"]} -run/0: ingredient 0 is 0 -mem/0: location 1004 is 1032 -mem/0: storing 0 in location 1032 -run/0: instruction init-channel/6 -run/0: {name: "capacity", value: 4, type: 1, properties: ["capacity": "integer"]} <- next-ingredient/30 -run/0: product 0 is 3 -mem/0: storing 3 in location 1005 -run/0: instruction init-channel/7 -run/0: {name: "capacity", value: 4, type: 1, properties: ["capacity": "integer"]} <- add/2 {name: "capacity", value: 4, type: 1, properties: ["capacity": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is capacity -mem/0: location 1005 is 3 -run/0: ingredient 1 is 1 -run/0: product 0 is 4 -mem/0: storing 4 in location 1005 -run/0: instruction init-channel/8 -run/0: {name: "dest", value: 5, type: 2-2-5-1, properties: ["dest": "address":"address":"array":"location"]} <- get-address/25 {name: "result", value: 1, type: 2-10, properties: ["result": "address":"channel", "deref": ]}, {name: "data", value: 2, type: 0, properties: ["data": "offset"]} -run/0: ingredient 0 is result -mem/0: location 1002 is 1031 -run/0: ingredient 1 is data -run/0: address to copy is 1033 -run/0: product 0 is 1033 -mem/0: storing 1033 in location 1006 -run/0: instruction init-channel/9 -run/0: {name: "dest", value: 5, type: 2-2-5-1, properties: ["dest": "address":"address":"array":"location", "deref": ]} <- new/44 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "capacity", value: 4, type: 1, properties: ["capacity": "integer"]} -mem/0: location 1005 is 4 -mem/0: array size is 4 -mem/0: new alloc: 1034 -mem/0: location 1006 is 1033 -mem/0: storing 1034 in location 1033 -run/0: instruction init-channel/10 -run/0: reply/33 {name: "result", value: 1, type: 2-10, properties: ["result": "address":"channel"]} -mem/0: location 1002 is 1031 -run/0: result 0 is 1031 -mem/0: storing 1031 in location 1 -run/0: instruction run1001/1 -run/0: {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel"]} <- write/109 {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel"]}, {name: "34", value: 34, type: 0, properties: ["34": "literal"]} -mem/0: location 1 is 1031 -run/0: instruction write/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/44 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} -mem/0: array size is 30 -mem/0: new alloc: 1039 -run/0: instruction write/1 -run/0: {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} <- next-ingredient/30 -run/0: product 0 is 1031 -mem/0: storing 1031 in location 1041 -run/0: instruction write/2 -run/0: {name: "val", value: 2, type: 1, properties: ["val": "location"]} <- next-ingredient/30 -run/0: product 0 is 34 -mem/0: storing 34 in location 1042 -run/0: instruction write/4 -run/0: {name: "full", value: 3, type: 3, properties: ["full": "boolean"]} <- channel-full?/110 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} -mem/0: location 1041 is 1031 -run/0: instruction channel-full?/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/44 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} -mem/0: array size is 30 -mem/0: new alloc: 1070 -run/0: instruction channel-full?/1 -run/0: {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} <- next-ingredient/30 -run/0: product 0 is 1031 -mem/0: storing 1031 in location 1072 -run/0: instruction channel-full?/2 -run/0: {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]} <- get/24 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "first-free", value: 1, type: 0, properties: ["first-free": "offset"]} -run/0: ingredient 0 is chan -mem/0: location 1072 is 1031 -run/0: ingredient 1 is first-free -run/0: address to copy is 1032 -run/0: its type is 1 -mem/0: location 1032 is 0 -run/0: product 0 is 0 -mem/0: storing 0 in location 1073 -run/0: instruction channel-full?/3 -run/0: {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]} <- add/2 {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is tmp -mem/0: location 1073 is 0 -run/0: ingredient 1 is 1 -run/0: product 0 is 1 -mem/0: storing 1 in location 1073 -run/0: instruction channel-full?/5 -run/0: {name: "len", value: 3, type: 1, properties: ["len": "integer"]} <- channel-capacity/113 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} -mem/0: location 1072 is 1031 -run/0: instruction channel-capacity/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/44 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} -mem/0: array size is 30 -mem/0: new alloc: 1101 -run/0: instruction channel-capacity/1 -run/0: {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} <- next-ingredient/30 -run/0: product 0 is 1031 -mem/0: storing 1031 in location 1103 -run/0: instruction channel-capacity/2 -run/0: {name: "q", value: 2, type: 2-5-1, properties: ["q": "address":"array":"location"]} <- get/24 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "data", value: 2, type: 0, properties: ["data": "offset"]} -run/0: ingredient 0 is chan -mem/0: location 1103 is 1031 -run/0: ingredient 1 is data -run/0: address to copy is 1033 -run/0: its type is 2 -mem/0: location 1033 is 1034 -run/0: product 0 is 1034 -mem/0: storing 1034 in location 1104 -run/0: instruction channel-capacity/3 -run/0: {name: "result", value: 3, type: 1, properties: ["result": "integer"]} <- length/28 {name: "q", value: 2, type: 2-5-1, properties: ["q": "address":"array":"location", "deref": ]} -mem/0: location 1104 is 1034 -mem/0: storing 4 in location 1105 -run/0: instruction channel-capacity/4 -run/0: reply/33 {name: "result", value: 3, type: 1, properties: ["result": "integer"]} -mem/0: location 1105 is 4 -run/0: result 0 is 4 -mem/0: storing 4 in location 1074 -run/0: instruction channel-full?/6 -run/0: {name: "at-end?", value: 4, type: 3, properties: ["at-end?": "boolean"]} <- greater-or-equal/16 {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]}, {name: "len", value: 3, type: 1, properties: ["len": "integer"]} -run/0: ingredient 0 is tmp -mem/0: location 1073 is 1 -run/0: ingredient 1 is len -mem/0: location 1074 is 4 -run/0: product 0 is 0 -mem/0: storing 0 in location 1075 -run/0: instruction channel-full?/7 -run/0: break-unless/12 {name: "at-end?", value: 4, type: 3, properties: ["at-end?": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} -mem/0: location 1075 is 0 -run/0: ingredient 0 is 0 -run/0: ingredient 1 is -run/0: jumping to instruction 9 -run/0: instruction channel-full?/10 -run/0: {name: "full", value: 5, type: 1, properties: ["full": "integer"]} <- get/24 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "first-full", value: 0, type: 0, properties: ["first-full": "offset"]} -run/0: ingredient 0 is chan -mem/0: location 1072 is 1031 -run/0: ingredient 1 is first-full -run/0: address to copy is 1031 -run/0: its type is 1 -mem/0: location 1031 is 0 -run/0: product 0 is 0 -mem/0: storing 0 in location 1076 -run/0: instruction channel-full?/11 -run/0: {name: "result", value: 6, type: 3, properties: ["result": "boolean"]} <- equal/13 {name: "full", value: 5, type: 1, properties: ["full": "integer"]}, {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]} -run/0: ingredient 0 is full -mem/0: location 1076 is 0 -run/0: ingredient 1 is tmp -mem/0: location 1073 is 1 -run/0: product 0 is 0 -mem/0: storing 0 in location 1077 -run/0: instruction channel-full?/12 -run/0: reply/33 {name: "result", value: 6, type: 3, properties: ["result": "boolean"]} -mem/0: location 1077 is 0 -run/0: result 0 is 0 -mem/0: storing 0 in location 1043 -run/0: instruction write/5 -run/0: break-unless/12 {name: "full", value: 3, type: 3, properties: ["full": "boolean"]}, {name: "", value: 2, type: , properties: ["": ]} -mem/0: location 1043 is 0 -run/0: ingredient 0 is 0 -run/0: ingredient 1 is -run/0: jumping to instruction 8 -run/0: instruction write/9 -run/0: {name: "circular-buffer", value: 5, type: 2-5-1, properties: ["circular-buffer": "address":"array":"location"]} <- get/24 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "data", value: 2, type: 0, properties: ["data": "offset"]} -run/0: ingredient 0 is chan -mem/0: location 1041 is 1031 -run/0: ingredient 1 is data -run/0: address to copy is 1033 -run/0: its type is 2 -mem/0: location 1033 is 1034 -run/0: product 0 is 1034 -mem/0: storing 1034 in location 1045 -run/0: instruction write/10 -run/0: {name: "free", value: 6, type: 2-1, properties: ["free": "address":"integer"]} <- get-address/25 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "first-free", value: 1, type: 0, properties: ["first-free": "offset"]} -run/0: ingredient 0 is chan -mem/0: location 1041 is 1031 -run/0: ingredient 1 is first-free -run/0: address to copy is 1032 -run/0: product 0 is 1032 -mem/0: storing 1032 in location 1046 -run/0: instruction write/11 -run/0: {name: "dest", value: 7, type: 2-1, properties: ["dest": "address":"location"]} <- index-address/27 {name: "circular-buffer", value: 5, type: 2-5-1, properties: ["circular-buffer": "address":"array":"location", "deref": ]}, {name: "free", value: 6, type: 2-1, properties: ["free": "address":"integer", "deref": ]} -run/0: ingredient 0 is circular-buffer -mem/0: location 1045 is 1034 -run/0: ingredient 1 is {name: "free", value: 6, type: 2-1, properties: ["free": "address":"integer", "deref": ]} -mem/0: location 1046 is 1032 -mem/0: location 1032 is 0 -run/0: address to copy is 1035 -run/0: product 0 is 1035 -mem/0: storing 1035 in location 1047 -run/0: instruction write/12 -run/0: {name: "dest", value: 7, type: 2-1, properties: ["dest": "address":"location", "deref": ]} <- copy/1 {name: "val", value: 2, type: 1, properties: ["val": "location"]} -run/0: ingredient 0 is val -mem/0: location 1042 is 34 -mem/0: location 1047 is 1035 -mem/0: storing 34 in location 1035 -run/0: instruction write/13 -run/0: {name: "free", value: 6, type: 2-1, properties: ["free": "address":"integer", "deref": ]} <- add/2 {name: "free", value: 6, type: 2-1, properties: ["free": "address":"integer", "deref": ]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is free -mem/0: location 1046 is 1032 -mem/0: location 1032 is 0 -run/0: ingredient 1 is 1 -run/0: product 0 is 1 -mem/0: location 1046 is 1032 -mem/0: storing 1 in location 1032 -run/0: instruction write/15 -run/0: {name: "len", value: 8, type: 1, properties: ["len": "integer"]} <- length/28 {name: "circular-buffer", value: 5, type: 2-5-1, properties: ["circular-buffer": "address":"array":"location", "deref": ]} -mem/0: location 1045 is 1034 -mem/0: storing 4 in location 1048 -run/0: instruction write/16 -run/0: {name: "at-end?", value: 9, type: 3, properties: ["at-end?": "boolean"]} <- greater-or-equal/16 {name: "free", value: 6, type: 2-1, properties: ["free": "address":"integer", "deref": ]}, {name: "len", value: 8, type: 1, properties: ["len": "integer"]} -run/0: ingredient 0 is free -mem/0: location 1046 is 1032 -mem/0: location 1032 is 1 -run/0: ingredient 1 is len -mem/0: location 1048 is 4 -run/0: product 0 is 0 -mem/0: storing 0 in location 1049 -run/0: instruction write/17 -run/0: break-unless/12 {name: "at-end?", value: 9, type: 3, properties: ["at-end?": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} -mem/0: location 1049 is 0 -run/0: ingredient 0 is 0 -run/0: ingredient 1 is -run/0: jumping to instruction 19 -run/0: instruction write/20 -run/0: reply/33 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "same-as-ingredient": "0"]} -mem/0: location 1041 is 1031 -run/0: result 0 is 1031 -mem/0: storing 1031 in location 1 -run/0: instruction run1001/2 -run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- channel-empty?/112 {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel"]} -mem/0: location 1 is 1031 -run/0: instruction channel-empty?/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/44 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} -mem/0: array size is 30 -mem/0: new alloc: 1132 -run/0: instruction channel-empty?/1 -run/0: {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} <- next-ingredient/30 -run/0: product 0 is 1031 -mem/0: storing 1031 in location 1134 -run/0: instruction channel-empty?/2 -run/0: {name: "full", value: 2, type: 1, properties: ["full": "integer"]} <- get/24 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "first-full", value: 0, type: 0, properties: ["first-full": "offset"]} -run/0: ingredient 0 is chan -mem/0: location 1134 is 1031 -run/0: ingredient 1 is first-full -run/0: address to copy is 1031 -run/0: its type is 1 -mem/0: location 1031 is 0 -run/0: product 0 is 0 -mem/0: storing 0 in location 1135 -run/0: instruction channel-empty?/3 -run/0: {name: "free", value: 3, type: 1, properties: ["free": "integer"]} <- get/24 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "first-free", value: 1, type: 0, properties: ["first-free": "offset"]} -run/0: ingredient 0 is chan -mem/0: location 1134 is 1031 -run/0: ingredient 1 is first-free -run/0: address to copy is 1032 -run/0: its type is 1 -mem/0: location 1032 is 1 -run/0: product 0 is 1 -mem/0: storing 1 in location 1136 -run/0: instruction channel-empty?/4 -run/0: {name: "result", value: 4, type: 3, properties: ["result": "boolean"]} <- equal/13 {name: "full", value: 2, type: 1, properties: ["full": "integer"]}, {name: "free", value: 3, type: 1, properties: ["free": "integer"]} -run/0: ingredient 0 is full -mem/0: location 1135 is 0 -run/0: ingredient 1 is free -mem/0: location 1136 is 1 -run/0: product 0 is 0 -mem/0: storing 0 in location 1137 -run/0: instruction channel-empty?/5 -run/0: reply/33 {name: "result", value: 4, type: 3, properties: ["result": "boolean"]} -mem/0: location 1137 is 0 -run/0: result 0 is 0 -mem/0: storing 0 in location 2 -run/0: instruction run1001/3 -run/0: {name: "3", value: 3, type: 1, properties: ["3": "integer"]} <- channel-full?/110 {name: "1", value: 1, type: 2-10, properties: ["1": "address":"channel"]} -mem/0: location 1 is 1031 -run/0: instruction channel-full?/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/44 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} -mem/0: array size is 30 -mem/0: new alloc: 1163 -run/0: instruction channel-full?/1 -run/0: {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} <- next-ingredient/30 -run/0: product 0 is 1031 -mem/0: storing 1031 in location 1165 -run/0: instruction channel-full?/2 -run/0: {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]} <- get/24 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "first-free", value: 1, type: 0, properties: ["first-free": "offset"]} -run/0: ingredient 0 is chan -mem/0: location 1165 is 1031 -run/0: ingredient 1 is first-free -run/0: address to copy is 1032 -run/0: its type is 1 -mem/0: location 1032 is 1 -run/0: product 0 is 1 -mem/0: storing 1 in location 1166 -run/0: instruction channel-full?/3 -run/0: {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]} <- add/2 {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is tmp -mem/0: location 1166 is 1 -run/0: ingredient 1 is 1 -run/0: product 0 is 2 -mem/0: storing 2 in location 1166 -run/0: instruction channel-full?/5 -run/0: {name: "len", value: 3, type: 1, properties: ["len": "integer"]} <- channel-capacity/113 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} -mem/0: location 1165 is 1031 -run/0: instruction channel-capacity/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/44 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} -mem/0: array size is 30 -mem/0: new alloc: 1194 -run/0: instruction channel-capacity/1 -run/0: {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel"]} <- next-ingredient/30 -run/0: product 0 is 1031 -mem/0: storing 1031 in location 1196 -run/0: instruction channel-capacity/2 -run/0: {name: "q", value: 2, type: 2-5-1, properties: ["q": "address":"array":"location"]} <- get/24 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "data", value: 2, type: 0, properties: ["data": "offset"]} -run/0: ingredient 0 is chan -mem/0: location 1196 is 1031 -run/0: ingredient 1 is data -run/0: address to copy is 1033 -run/0: its type is 2 -mem/0: location 1033 is 1034 -run/0: product 0 is 1034 -mem/0: storing 1034 in location 1197 -run/0: instruction channel-capacity/3 -run/0: {name: "result", value: 3, type: 1, properties: ["result": "integer"]} <- length/28 {name: "q", value: 2, type: 2-5-1, properties: ["q": "address":"array":"location", "deref": ]} -mem/0: location 1197 is 1034 -mem/0: storing 4 in location 1198 -run/0: instruction channel-capacity/4 -run/0: reply/33 {name: "result", value: 3, type: 1, properties: ["result": "integer"]} -mem/0: location 1198 is 4 -run/0: result 0 is 4 -mem/0: storing 4 in location 1167 -run/0: instruction channel-full?/6 -run/0: {name: "at-end?", value: 4, type: 3, properties: ["at-end?": "boolean"]} <- greater-or-equal/16 {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]}, {name: "len", value: 3, type: 1, properties: ["len": "integer"]} -run/0: ingredient 0 is tmp -mem/0: location 1166 is 2 -run/0: ingredient 1 is len -mem/0: location 1167 is 4 -run/0: product 0 is 0 -mem/0: storing 0 in location 1168 -run/0: instruction channel-full?/7 -run/0: break-unless/12 {name: "at-end?", value: 4, type: 3, properties: ["at-end?": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} -mem/0: location 1168 is 0 -run/0: ingredient 0 is 0 -run/0: ingredient 1 is -run/0: jumping to instruction 9 -run/0: instruction channel-full?/10 -run/0: {name: "full", value: 5, type: 1, properties: ["full": "integer"]} <- get/24 {name: "chan", value: 1, type: 2-10, properties: ["chan": "address":"channel", "deref": ]}, {name: "first-full", value: 0, type: 0, properties: ["first-full": "offset"]} -run/0: ingredient 0 is chan -mem/0: location 1165 is 1031 -run/0: ingredient 1 is first-full -run/0: address to copy is 1031 -run/0: its type is 1 -mem/0: location 1031 is 0 -run/0: product 0 is 0 -mem/0: storing 0 in location 1169 -run/0: instruction channel-full?/11 -run/0: {name: "result", value: 6, type: 3, properties: ["result": "boolean"]} <- equal/13 {name: "full", value: 5, type: 1, properties: ["full": "integer"]}, {name: "tmp", value: 2, type: 1, properties: ["tmp": "integer"]} -run/0: ingredient 0 is full -mem/0: location 1169 is 0 -run/0: ingredient 1 is tmp -mem/0: location 1166 is 2 -run/0: product 0 is 0 -mem/0: storing 0 in location 1170 -run/0: instruction channel-full?/12 -run/0: reply/33 {name: "result", value: 6, type: 3, properties: ["result": "boolean"]} -mem/0: location 1170 is 0 -run/0: result 0 is 0 -mem/0: storing 0 in location 3 -run/0: instruction channel-write-not-empty/1 -run/0: memory-should-contain/46 {name: " - 2 <- 0 # empty? - 3 <- 0 # full? - ", value: 0, type: 0, properties: [" - 2 <- 0 # empty? - 3 <- 0 # full? - ": "literal-string"]} -run/0: checking location 2 -run/0: checking location 3 diff --git a/cpp/.traces/check_string_in_memory b/cpp/.traces/check_string_in_memory deleted file mode 100644 index 783c9702..00000000 --- a/cpp/.traces/check_string_in_memory +++ /dev/null @@ -1,78 +0,0 @@ -parse/0: instruction: run -parse/0: ingredient: {name: " - 1:integer <- copy 3:literal - 2:character <- copy 97:literal # 'a' - 3:character <- copy 98:literal # 'b' - 4:character <- copy 99:literal # 'c' - ", value: 0, type: 0, properties: [" - 1:integer <- copy 3:literal - 2:character <- copy 97:literal # 'a' - 3:character <- copy 98:literal # 'b' - 4:character <- copy 99:literal # 'c' - ": "literal-string"]} -parse/0: instruction: memory-should-contain -parse/0: ingredient: {name: " - 1:string <- [abc] - ", value: 0, type: 0, properties: [" - 1:string <- [abc] - ": "literal-string"]} -after-brace/0: recipe check_string_in_memory -after-brace/0: run ... -after-brace/0: memory-should-contain ... -new/0: routine allocated memory from 1000 to 101000 -schedule/0: check_string_in_memory -run/0: instruction check_string_in_memory/0 -run/0: run/45 {name: " - 1:integer <- copy 3:literal - 2:character <- copy 97:literal # 'a' - 3:character <- copy 98:literal # 'b' - 4:character <- copy 99:literal # 'c' - ", value: 0, type: 0, properties: [" - 1:integer <- copy 3:literal - 2:character <- copy 97:literal # 'a' - 3:character <- copy 98:literal # 'b' - 4:character <- copy 99:literal # 'c' - ": "literal-string"]} -parse/0: instruction: copy -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: copy -parse/0: ingredient: {name: "97", value: 0, type: 0, properties: ["97": "literal"]} -parse/0: product: {name: "2", value: 0, type: 4, properties: ["2": "character"]} -parse/0: instruction: copy -parse/0: ingredient: {name: "98", value: 0, type: 0, properties: ["98": "literal"]} -parse/0: product: {name: "3", value: 0, type: 4, properties: ["3": "character"]} -parse/0: instruction: copy -parse/0: ingredient: {name: "99", value: 0, type: 0, properties: ["99": "literal"]} -parse/0: product: {name: "4", value: 0, type: 4, properties: ["4": "character"]} -after-brace/0: recipe run1001 -after-brace/0: copy ... -after-brace/0: copy ... -after-brace/0: copy ... -after-brace/0: copy ... -run/0: instruction run1001/0 -run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- copy/1 {name: "3", value: 3, type: 0, properties: ["3": "literal"]} -run/0: ingredient 0 is 3 -mem/0: storing 3 in location 1 -run/0: instruction run1001/1 -run/0: {name: "2", value: 2, type: 4, properties: ["2": "character"]} <- copy/1 {name: "97", value: 97, type: 0, properties: ["97": "literal"]} -run/0: ingredient 0 is 97 -mem/0: storing 97 in location 2 -run/0: instruction run1001/2 -run/0: {name: "3", value: 3, type: 4, properties: ["3": "character"]} <- copy/1 {name: "98", value: 98, type: 0, properties: ["98": "literal"]} -run/0: ingredient 0 is 98 -mem/0: storing 98 in location 3 -run/0: instruction run1001/3 -run/0: {name: "4", value: 4, type: 4, properties: ["4": "character"]} <- copy/1 {name: "99", value: 99, type: 0, properties: ["99": "literal"]} -run/0: ingredient 0 is 99 -mem/0: storing 99 in location 4 -run/0: instruction check_string_in_memory/1 -run/0: memory-should-contain/46 {name: " - 1:string <- [abc] - ", value: 0, type: 0, properties: [" - 1:string <- [abc] - ": "literal-string"]} -run/0: checking string length at 1 -run/0: checking location 2 -run/0: checking location 3 -run/0: checking location 4 diff --git a/cpp/.traces/check_trace b/cpp/.traces/check_trace deleted file mode 100644 index 17b68c94..00000000 --- a/cpp/.traces/check_trace +++ /dev/null @@ -1,41 +0,0 @@ -parse/0: instruction: run -parse/0: ingredient: {name: " - 1:integer <- add 2:literal, 2:literal - ", value: 0, type: 0, properties: [" - 1:integer <- add 2:literal, 2:literal - ": "literal-string"]} -parse/0: instruction: trace-should-contain -parse/0: ingredient: {name: " - mem: storing 4 in location 1 - ", value: 0, type: 0, properties: [" - mem: storing 4 in location 1 - ": "literal-string"]} -after-brace/0: recipe check_trace -after-brace/0: run ... -after-brace/0: trace-should-contain ... -new/0: routine allocated memory from 1000 to 101000 -schedule/0: check_trace -run/0: instruction check_trace/0 -run/0: run/45 {name: " - 1:integer <- add 2:literal, 2:literal - ", value: 0, type: 0, properties: [" - 1:integer <- add 2:literal, 2:literal - ": "literal-string"]} -parse/0: instruction: add -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: "1", value: 0, type: 1, properties: ["1": "integer"]} -after-brace/0: recipe run1001 -after-brace/0: add ... -run/0: instruction run1001/0 -run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- add/2 {name: "2", value: 2, type: 0, properties: ["2": "literal"]}, {name: "2", value: 2, type: 0, properties: ["2": "literal"]} -run/0: ingredient 0 is 2 -run/0: ingredient 1 is 2 -run/0: product 0 is 4 -mem/0: storing 4 in location 1 -run/0: instruction check_trace/1 -run/0: trace-should-contain/47 {name: " - mem: storing 4 in location 1 - ", value: 0, type: 0, properties: [" - mem: storing 4 in location 1 - ": "literal-string"]} diff --git a/cpp/.traces/check_trace_instruction b/cpp/.traces/check_trace_instruction deleted file mode 100644 index a1642099..00000000 --- a/cpp/.traces/check_trace_instruction +++ /dev/null @@ -1,37 +0,0 @@ -parse/0: instruction: run -parse/0: ingredient: {name: " - trace [foo], [aaa] - ", value: 0, type: 0, properties: [" - trace [foo], [aaa] - ": "literal-string"]} -parse/0: instruction: trace-should-contain -parse/0: ingredient: {name: " - foo: aaa - ", value: 0, type: 0, properties: [" - foo: aaa - ": "literal-string"]} -after-brace/0: recipe check_trace_instruction -after-brace/0: run ... -after-brace/0: trace-should-contain ... -new/0: routine allocated memory from 1000 to 101000 -schedule/0: check_trace_instruction -run/0: instruction check_trace_instruction/0 -run/0: run/45 {name: " - trace [foo], [aaa] - ", value: 0, type: 0, properties: [" - trace [foo], [aaa] - ": "literal-string"]} -parse/0: instruction: trace -parse/0: ingredient: {name: "foo", value: 0, type: 0, properties: ["foo": "literal-string"]} -parse/0: ingredient: {name: "aaa", value: 0, type: 0, properties: ["aaa": "literal-string"]} -after-brace/0: recipe run1001 -after-brace/0: trace ... -run/0: instruction run1001/0 -run/0: trace/18 {name: "foo", value: 0, type: 0, properties: ["foo": "literal-string"]}, {name: "aaa", value: 0, type: 0, properties: ["aaa": "literal-string"]} -foo/0: aaa -run/0: instruction check_trace_instruction/1 -run/0: trace-should-contain/47 {name: " - foo: aaa - ", value: 0, type: 0, properties: [" - foo: aaa - ": "literal-string"]} diff --git a/cpp/.traces/check_trace_negative b/cpp/.traces/check_trace_negative deleted file mode 100644 index c65bac12..00000000 --- a/cpp/.traces/check_trace_negative +++ /dev/null @@ -1,41 +0,0 @@ -parse/0: instruction: run -parse/0: ingredient: {name: " - 1:integer <- add 2:literal, 2:literal - ", value: 0, type: 0, properties: [" - 1:integer <- add 2:literal, 2:literal - ": "literal-string"]} -parse/0: instruction: trace-should-not-contain -parse/0: ingredient: {name: " - mem: storing 5 in location 1 - ", value: 0, type: 0, properties: [" - mem: storing 5 in location 1 - ": "literal-string"]} -after-brace/0: recipe check_trace_negative -after-brace/0: run ... -after-brace/0: trace-should-not-contain ... -new/0: routine allocated memory from 1000 to 101000 -schedule/0: check_trace_negative -run/0: instruction check_trace_negative/0 -run/0: run/45 {name: " - 1:integer <- add 2:literal, 2:literal - ", value: 0, type: 0, properties: [" - 1:integer <- add 2:literal, 2:literal - ": "literal-string"]} -parse/0: instruction: add -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: "1", value: 0, type: 1, properties: ["1": "integer"]} -after-brace/0: recipe run1001 -after-brace/0: add ... -run/0: instruction run1001/0 -run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- add/2 {name: "2", value: 2, type: 0, properties: ["2": "literal"]}, {name: "2", value: 2, type: 0, properties: ["2": "literal"]} -run/0: ingredient 0 is 2 -run/0: ingredient 1 is 2 -run/0: product 0 is 4 -mem/0: storing 4 in location 1 -run/0: instruction check_trace_negative/1 -run/0: trace-should-not-contain/48 {name: " - mem: storing 5 in location 1 - ", value: 0, type: 0, properties: [" - mem: storing 5 in location 1 - ": "literal-string"]} diff --git a/cpp/.traces/clear-line-erases-printed-characters b/cpp/.traces/clear-line-erases-printed-characters deleted file mode 100644 index edf9997d..00000000 --- a/cpp/.traces/clear-line-erases-printed-characters +++ /dev/null @@ -1,1170 +0,0 @@ -parse/0: instruction: run -parse/0: ingredient: {name: " -#? $start-tracing #? 3 - 1:address:screen <- init-fake-screen 3:literal/width, 2:literal/height - # print a character - 1:address:screen <- print-character 1:address:screen, 97:literal # 'a' - # move cursor to start of line - 1:address:screen <- move-cursor 1:address:screen, 0:literal/row, 0:literal/column - # clear line - 1:address:screen <- clear-line 1:address:screen - 2:address:array:character <- get 1:address:screen/deref, data:offset - 3:array:character <- copy 2:address:array:character/deref - ", value: 0, type: 0, properties: [" -#? $start-tracing #? 3 - 1:address:screen <- init-fake-screen 3:literal/width, 2:literal/height - # print a character - 1:address:screen <- print-character 1:address:screen, 97:literal # 'a' - # move cursor to start of line - 1:address:screen <- move-cursor 1:address:screen, 0:literal/row, 0:literal/column - # clear line - 1:address:screen <- clear-line 1:address:screen - 2:address:array:character <- get 1:address:screen/deref, data:offset - 3:array:character <- copy 2:address:array:character/deref - ": "literal-string"]} -parse/0: instruction: memory-should-contain -parse/0: ingredient: {name: " - 3 <- 6 # width*height - 4 <- 0 - 5 <- 0 - 6 <- 0 - 7 <- 0 - 8 <- 0 - 9 <- 0 - ", value: 0, type: 0, properties: [" - 3 <- 6 # width*height - 4 <- 0 - 5 <- 0 - 6 <- 0 - 7 <- 0 - 8 <- 0 - 9 <- 0 - ": "literal-string"]} -after-brace/0: recipe clear-line-erases-printed-characters -after-brace/0: run ... -after-brace/0: memory-should-contain ... -new/0: routine allocated memory from 1000 to 101000 -schedule/0: clear-line-erases-printed-characters -run/0: instruction clear-line-erases-printed-characters/0 -run/0: run/45 {name: " -#? $start-tracing #? 3 - 1:address:screen <- init-fake-screen 3:literal/width, 2:literal/height - # print a character - 1:address:screen <- print-character 1:address:screen, 97:literal # 'a' - # move cursor to start of line - 1:address:screen <- move-cursor 1:address:screen, 0:literal/row, 0:literal/column - # clear line - 1:address:screen <- clear-line 1:address:screen - 2:address:array:character <- get 1:address:screen/deref, data:offset - 3:array:character <- copy 2:address:array:character/deref - ", value: 0, type: 0, properties: [" -#? $start-tracing #? 3 - 1:address:screen <- init-fake-screen 3:literal/width, 2:literal/height - # print a character - 1:address:screen <- print-character 1:address:screen, 97:literal # 'a' - # move cursor to start of line - 1:address:screen <- move-cursor 1:address:screen, 0:literal/row, 0:literal/column - # clear line - 1:address:screen <- clear-line 1:address:screen - 2:address:array:character <- get 1:address:screen/deref, data:offset - 3:array:character <- copy 2:address:array:character/deref - ": "literal-string"]} -parse/0: instruction: init-fake-screen -parse/0: ingredient: {name: "3", value: 0, type: 0, properties: ["3": "literal", "width": ]} -parse/0: ingredient: {name: "2", value: 0, type: 0, properties: ["2": "literal", "height": ]} -parse/0: product: {name: "1", value: 0, type: 2-11, properties: ["1": "address":"screen"]} -parse/0: instruction: print-character -parse/0: ingredient: {name: "1", value: 0, type: 2-11, properties: ["1": "address":"screen"]} -parse/0: ingredient: {name: "97", value: 0, type: 0, properties: ["97": "literal"]} -parse/0: product: {name: "1", value: 0, type: 2-11, properties: ["1": "address":"screen"]} -parse/0: instruction: move-cursor -parse/0: ingredient: {name: "1", value: 0, type: 2-11, properties: ["1": "address":"screen"]} -parse/0: ingredient: {name: "0", value: 0, type: 0, properties: ["0": "literal", "row": ]} -parse/0: ingredient: {name: "0", value: 0, type: 0, properties: ["0": "literal", "column": ]} -parse/0: product: {name: "1", value: 0, type: 2-11, properties: ["1": "address":"screen"]} -parse/0: instruction: clear-line -parse/0: ingredient: {name: "1", value: 0, type: 2-11, properties: ["1": "address":"screen"]} -parse/0: product: {name: "1", value: 0, type: 2-11, properties: ["1": "address":"screen"]} -parse/0: instruction: get -parse/0: ingredient: {name: "1", value: 0, type: 2-11, properties: ["1": "address":"screen", "deref": ]} -parse/0: ingredient: {name: "data", value: 0, type: 0, properties: ["data": "offset"]} -parse/0: product: {name: "2", value: 0, type: 2-5-4, properties: ["2": "address":"array":"character"]} -parse/0: instruction: copy -parse/0: ingredient: {name: "2", value: 0, type: 2-5-4, properties: ["2": "address":"array":"character", "deref": ]} -parse/0: product: {name: "3", value: 0, type: 5-4, properties: ["3": "array":"character"]} -name/0: element data of type screen is at offset 4 -after-brace/0: recipe run1001 -after-brace/0: init-fake-screen ... -after-brace/0: print-character ... -after-brace/0: move-cursor ... -after-brace/0: clear-line ... -after-brace/0: get ... -after-brace/0: copy ... -run/0: instruction run1001/0 -run/0: {name: "1", value: 1, type: 2-11, properties: ["1": "address":"screen"]} <- init-fake-screen/115 {name: "3", value: 3, type: 0, properties: ["3": "literal", "width": ]}, {name: "2", value: 2, type: 0, properties: ["2": "literal", "height": ]} -run/0: instruction init-fake-screen/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/44 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal", "capacity": ]} -mem/0: array size is 30 -mem/0: new alloc: 1000 -run/0: instruction init-fake-screen/1 -run/0: {name: "result", value: 1, type: 2-11, properties: ["result": "address":"screen"]} <- new/44 {name: "screen", value: 11, type: 0, properties: ["screen": "type"]} -mem/0: new alloc: 1031 -mem/0: storing 1031 in location 1002 -run/0: instruction init-fake-screen/2 -run/0: {name: "width", value: 2, type: 2-1, properties: ["width": "address":"integer"]} <- get-address/25 {name: "result", value: 1, type: 2-11, properties: ["result": "address":"screen", "deref": ]}, {name: "num-columns", value: 1, type: 0, properties: ["num-columns": "offset"]} -run/0: ingredient 0 is result -mem/0: location 1002 is 1031 -run/0: ingredient 1 is num-columns -run/0: address to copy is 1032 -run/0: product 0 is 1032 -mem/0: storing 1032 in location 1003 -run/0: instruction init-fake-screen/3 -run/0: {name: "width", value: 2, type: 2-1, properties: ["width": "address":"integer", "deref": ]} <- next-ingredient/30 -run/0: product 0 is 3 -mem/0: location 1003 is 1032 -mem/0: storing 3 in location 1032 -run/0: instruction init-fake-screen/4 -run/0: {name: "height", value: 3, type: 2-1, properties: ["height": "address":"integer"]} <- get-address/25 {name: "result", value: 1, type: 2-11, properties: ["result": "address":"screen", "deref": ]}, {name: "num-rows", value: 0, type: 0, properties: ["num-rows": "offset"]} -run/0: ingredient 0 is result -mem/0: location 1002 is 1031 -run/0: ingredient 1 is num-rows -run/0: address to copy is 1031 -run/0: product 0 is 1031 -mem/0: storing 1031 in location 1004 -run/0: instruction init-fake-screen/5 -run/0: {name: "height", value: 3, type: 2-1, properties: ["height": "address":"integer", "deref": ]} <- next-ingredient/30 -run/0: product 0 is 2 -mem/0: location 1004 is 1031 -mem/0: storing 2 in location 1031 -run/0: instruction init-fake-screen/6 -run/0: {name: "row", value: 4, type: 2-1, properties: ["row": "address":"integer"]} <- get-address/25 {name: "result", value: 1, type: 2-11, properties: ["result": "address":"screen", "deref": ]}, {name: "cursor-row", value: 2, type: 0, properties: ["cursor-row": "offset"]} -run/0: ingredient 0 is result -mem/0: location 1002 is 1031 -run/0: ingredient 1 is cursor-row -run/0: address to copy is 1033 -run/0: product 0 is 1033 -mem/0: storing 1033 in location 1005 -run/0: instruction init-fake-screen/7 -run/0: {name: "row", value: 4, type: 2-1, properties: ["row": "address":"integer", "deref": ]} <- copy/1 {name: "0", value: 0, type: 0, properties: ["0": "literal"]} -run/0: ingredient 0 is 0 -mem/0: location 1005 is 1033 -mem/0: storing 0 in location 1033 -run/0: instruction init-fake-screen/8 -run/0: {name: "column", value: 5, type: 2-1, properties: ["column": "address":"integer"]} <- get-address/25 {name: "result", value: 1, type: 2-11, properties: ["result": "address":"screen", "deref": ]}, {name: "cursor-column", value: 3, type: 0, properties: ["cursor-column": "offset"]} -run/0: ingredient 0 is result -mem/0: location 1002 is 1031 -run/0: ingredient 1 is cursor-column -run/0: address to copy is 1034 -run/0: product 0 is 1034 -mem/0: storing 1034 in location 1006 -run/0: instruction init-fake-screen/9 -run/0: {name: "column", value: 5, type: 2-1, properties: ["column": "address":"integer", "deref": ]} <- copy/1 {name: "0", value: 0, type: 0, properties: ["0": "literal"]} -run/0: ingredient 0 is 0 -mem/0: location 1006 is 1034 -mem/0: storing 0 in location 1034 -run/0: instruction init-fake-screen/10 -run/0: {name: "bufsize", value: 6, type: 1, properties: ["bufsize": "integer"]} <- multiply/4 {name: "width", value: 2, type: 2-1, properties: ["width": "address":"integer", "deref": ]}, {name: "height", value: 3, type: 2-1, properties: ["height": "address":"integer", "deref": ]} -run/0: ingredient 0 is width -mem/0: location 1003 is 1032 -mem/0: location 1032 is 3 -run/0: ingredient 1 is height -mem/0: location 1004 is 1031 -mem/0: location 1031 is 2 -run/0: ingredient 1 is 2 -run/0: product 0 is 6 -mem/0: storing 6 in location 1007 -run/0: instruction init-fake-screen/11 -run/0: {name: "buf", value: 7, type: 2-2-5-4, properties: ["buf": "address":"address":"array":"character"]} <- get-address/25 {name: "result", value: 1, type: 2-11, properties: ["result": "address":"screen", "deref": ]}, {name: "data", value: 4, type: 0, properties: ["data": "offset"]} -run/0: ingredient 0 is result -mem/0: location 1002 is 1031 -run/0: ingredient 1 is data -run/0: address to copy is 1035 -run/0: product 0 is 1035 -mem/0: storing 1035 in location 1008 -run/0: instruction init-fake-screen/12 -run/0: {name: "buf", value: 7, type: 2-2-5-4, properties: ["buf": "address":"address":"array":"character", "deref": ]} <- new/44 {name: "character", value: 0, type: 0, properties: ["character": "literal"]}, {name: "bufsize", value: 6, type: 1, properties: ["bufsize": "integer"]} -mem/0: location 1007 is 6 -mem/0: array size is 6 -mem/0: new alloc: 1036 -mem/0: location 1008 is 1035 -mem/0: storing 1036 in location 1035 -run/0: instruction init-fake-screen/13 -run/0: clear-screen/116 {name: "result", value: 1, type: 2-11, properties: ["result": "address":"screen"]} -mem/0: location 1002 is 1031 -run/0: instruction clear-screen/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/44 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} -mem/0: array size is 30 -mem/0: new alloc: 1043 -run/0: instruction clear-screen/1 -run/0: {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen"]} <- next-ingredient/30 -run/0: product 0 is 1031 -mem/0: storing 1031 in location 1045 -run/0: instruction clear-screen/3 -run/0: break-unless/12 {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen"]}, {name: "", value: 12, type: , properties: ["": ]} -mem/0: location 1045 is 1031 -run/0: ingredient 0 is 1031 -run/0: jump-unless fell through -run/0: instruction clear-screen/4 -run/0: {name: "buf", value: 2, type: 2-5-4, properties: ["buf": "address":"array":"character"]} <- get/24 {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen", "deref": ]}, {name: "data", value: 4, type: 0, properties: ["data": "offset"]} -run/0: ingredient 0 is x -mem/0: location 1045 is 1031 -run/0: ingredient 1 is data -run/0: address to copy is 1035 -run/0: its type is 2 -mem/0: location 1035 is 1036 -run/0: product 0 is 1036 -mem/0: storing 1036 in location 1046 -run/0: instruction clear-screen/5 -run/0: {name: "max", value: 3, type: 1, properties: ["max": "integer"]} <- length/28 {name: "buf", value: 2, type: 2-5-4, properties: ["buf": "address":"array":"character", "deref": ]} -mem/0: location 1046 is 1036 -mem/0: storing 6 in location 1047 -run/0: instruction clear-screen/6 -run/0: {name: "i", value: 4, type: 1, properties: ["i": "integer"]} <- copy/1 {name: "0", value: 0, type: 0, properties: ["0": "literal"]} -run/0: ingredient 0 is 0 -mem/0: storing 0 in location 1048 -run/0: instruction clear-screen/8 -run/0: {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "max", value: 3, type: 1, properties: ["max": "integer"]} -run/0: ingredient 0 is i -mem/0: location 1048 is 0 -run/0: ingredient 1 is max -mem/0: location 1047 is 6 -run/0: product 0 is 0 -mem/0: storing 0 in location 1049 -run/0: instruction clear-screen/9 -run/0: break-if/11 {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 4, type: , properties: ["": ]} -mem/0: location 1049 is 0 -run/0: ingredient 0 is 0 -run/0: jump-if fell through -run/0: instruction clear-screen/10 -run/0: {name: "c", value: 6, type: 2-4, properties: ["c": "address":"character"]} <- index-address/27 {name: "buf", value: 2, type: 2-5-4, properties: ["buf": "address":"array":"character", "deref": ]}, {name: "i", value: 4, type: 1, properties: ["i": "integer"]} -run/0: ingredient 0 is buf -mem/0: location 1046 is 1036 -run/0: ingredient 1 is {name: "i", value: 4, type: 1, properties: ["i": "integer"]} -mem/0: location 1048 is 0 -run/0: address to copy is 1037 -run/0: product 0 is 1037 -mem/0: storing 1037 in location 1050 -run/0: instruction clear-screen/11 -run/0: {name: "c", value: 6, type: 2-4, properties: ["c": "address":"character", "deref": ]} <- copy/1 {name: " ", value: 0, type: 0, properties: [" ": "literal-string"]} -run/0: ingredient 0 is -mem/0: location 1050 is 1037 -mem/0: storing 0 in location 1037 -run/0: instruction clear-screen/12 -run/0: {name: "i", value: 4, type: 1, properties: ["i": "integer"]} <- add/2 {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is i -mem/0: location 1048 is 0 -run/0: ingredient 1 is 1 -run/0: product 0 is 1 -mem/0: storing 1 in location 1048 -run/0: instruction clear-screen/13 -run/0: loop/10 {name: "", value: -6, type: , properties: ["": ]} -run/0: ingredient 0 is -6 -run/0: jumping to instruction 8 -run/0: instruction clear-screen/8 -run/0: {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "max", value: 3, type: 1, properties: ["max": "integer"]} -run/0: ingredient 0 is i -mem/0: location 1048 is 1 -run/0: ingredient 1 is max -mem/0: location 1047 is 6 -run/0: product 0 is 0 -mem/0: storing 0 in location 1049 -run/0: instruction clear-screen/9 -run/0: break-if/11 {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 4, type: , properties: ["": ]} -mem/0: location 1049 is 0 -run/0: ingredient 0 is 0 -run/0: jump-if fell through -run/0: instruction clear-screen/10 -run/0: {name: "c", value: 6, type: 2-4, properties: ["c": "address":"character"]} <- index-address/27 {name: "buf", value: 2, type: 2-5-4, properties: ["buf": "address":"array":"character", "deref": ]}, {name: "i", value: 4, type: 1, properties: ["i": "integer"]} -run/0: ingredient 0 is buf -mem/0: location 1046 is 1036 -run/0: ingredient 1 is {name: "i", value: 4, type: 1, properties: ["i": "integer"]} -mem/0: location 1048 is 1 -run/0: address to copy is 1038 -run/0: product 0 is 1038 -mem/0: storing 1038 in location 1050 -run/0: instruction clear-screen/11 -run/0: {name: "c", value: 6, type: 2-4, properties: ["c": "address":"character", "deref": ]} <- copy/1 {name: " ", value: 0, type: 0, properties: [" ": "literal-string"]} -run/0: ingredient 0 is -mem/0: location 1050 is 1038 -mem/0: storing 0 in location 1038 -run/0: instruction clear-screen/12 -run/0: {name: "i", value: 4, type: 1, properties: ["i": "integer"]} <- add/2 {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is i -mem/0: location 1048 is 1 -run/0: ingredient 1 is 1 -run/0: product 0 is 2 -mem/0: storing 2 in location 1048 -run/0: instruction clear-screen/13 -run/0: loop/10 {name: "", value: -6, type: , properties: ["": ]} -run/0: ingredient 0 is -6 -run/0: jumping to instruction 8 -run/0: instruction clear-screen/8 -run/0: {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "max", value: 3, type: 1, properties: ["max": "integer"]} -run/0: ingredient 0 is i -mem/0: location 1048 is 2 -run/0: ingredient 1 is max -mem/0: location 1047 is 6 -run/0: product 0 is 0 -mem/0: storing 0 in location 1049 -run/0: instruction clear-screen/9 -run/0: break-if/11 {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 4, type: , properties: ["": ]} -mem/0: location 1049 is 0 -run/0: ingredient 0 is 0 -run/0: jump-if fell through -run/0: instruction clear-screen/10 -run/0: {name: "c", value: 6, type: 2-4, properties: ["c": "address":"character"]} <- index-address/27 {name: "buf", value: 2, type: 2-5-4, properties: ["buf": "address":"array":"character", "deref": ]}, {name: "i", value: 4, type: 1, properties: ["i": "integer"]} -run/0: ingredient 0 is buf -mem/0: location 1046 is 1036 -run/0: ingredient 1 is {name: "i", value: 4, type: 1, properties: ["i": "integer"]} -mem/0: location 1048 is 2 -run/0: address to copy is 1039 -run/0: product 0 is 1039 -mem/0: storing 1039 in location 1050 -run/0: instruction clear-screen/11 -run/0: {name: "c", value: 6, type: 2-4, properties: ["c": "address":"character", "deref": ]} <- copy/1 {name: " ", value: 0, type: 0, properties: [" ": "literal-string"]} -run/0: ingredient 0 is -mem/0: location 1050 is 1039 -mem/0: storing 0 in location 1039 -run/0: instruction clear-screen/12 -run/0: {name: "i", value: 4, type: 1, properties: ["i": "integer"]} <- add/2 {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is i -mem/0: location 1048 is 2 -run/0: ingredient 1 is 1 -run/0: product 0 is 3 -mem/0: storing 3 in location 1048 -run/0: instruction clear-screen/13 -run/0: loop/10 {name: "", value: -6, type: , properties: ["": ]} -run/0: ingredient 0 is -6 -run/0: jumping to instruction 8 -run/0: instruction clear-screen/8 -run/0: {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "max", value: 3, type: 1, properties: ["max": "integer"]} -run/0: ingredient 0 is i -mem/0: location 1048 is 3 -run/0: ingredient 1 is max -mem/0: location 1047 is 6 -run/0: product 0 is 0 -mem/0: storing 0 in location 1049 -run/0: instruction clear-screen/9 -run/0: break-if/11 {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 4, type: , properties: ["": ]} -mem/0: location 1049 is 0 -run/0: ingredient 0 is 0 -run/0: jump-if fell through -run/0: instruction clear-screen/10 -run/0: {name: "c", value: 6, type: 2-4, properties: ["c": "address":"character"]} <- index-address/27 {name: "buf", value: 2, type: 2-5-4, properties: ["buf": "address":"array":"character", "deref": ]}, {name: "i", value: 4, type: 1, properties: ["i": "integer"]} -run/0: ingredient 0 is buf -mem/0: location 1046 is 1036 -run/0: ingredient 1 is {name: "i", value: 4, type: 1, properties: ["i": "integer"]} -mem/0: location 1048 is 3 -run/0: address to copy is 1040 -run/0: product 0 is 1040 -mem/0: storing 1040 in location 1050 -run/0: instruction clear-screen/11 -run/0: {name: "c", value: 6, type: 2-4, properties: ["c": "address":"character", "deref": ]} <- copy/1 {name: " ", value: 0, type: 0, properties: [" ": "literal-string"]} -run/0: ingredient 0 is -mem/0: location 1050 is 1040 -mem/0: storing 0 in location 1040 -run/0: instruction clear-screen/12 -run/0: {name: "i", value: 4, type: 1, properties: ["i": "integer"]} <- add/2 {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is i -mem/0: location 1048 is 3 -run/0: ingredient 1 is 1 -run/0: product 0 is 4 -mem/0: storing 4 in location 1048 -run/0: instruction clear-screen/13 -run/0: loop/10 {name: "", value: -6, type: , properties: ["": ]} -run/0: ingredient 0 is -6 -run/0: jumping to instruction 8 -run/0: instruction clear-screen/8 -run/0: {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "max", value: 3, type: 1, properties: ["max": "integer"]} -run/0: ingredient 0 is i -mem/0: location 1048 is 4 -run/0: ingredient 1 is max -mem/0: location 1047 is 6 -run/0: product 0 is 0 -mem/0: storing 0 in location 1049 -run/0: instruction clear-screen/9 -run/0: break-if/11 {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 4, type: , properties: ["": ]} -mem/0: location 1049 is 0 -run/0: ingredient 0 is 0 -run/0: jump-if fell through -run/0: instruction clear-screen/10 -run/0: {name: "c", value: 6, type: 2-4, properties: ["c": "address":"character"]} <- index-address/27 {name: "buf", value: 2, type: 2-5-4, properties: ["buf": "address":"array":"character", "deref": ]}, {name: "i", value: 4, type: 1, properties: ["i": "integer"]} -run/0: ingredient 0 is buf -mem/0: location 1046 is 1036 -run/0: ingredient 1 is {name: "i", value: 4, type: 1, properties: ["i": "integer"]} -mem/0: location 1048 is 4 -run/0: address to copy is 1041 -run/0: product 0 is 1041 -mem/0: storing 1041 in location 1050 -run/0: instruction clear-screen/11 -run/0: {name: "c", value: 6, type: 2-4, properties: ["c": "address":"character", "deref": ]} <- copy/1 {name: " ", value: 0, type: 0, properties: [" ": "literal-string"]} -run/0: ingredient 0 is -mem/0: location 1050 is 1041 -mem/0: storing 0 in location 1041 -run/0: instruction clear-screen/12 -run/0: {name: "i", value: 4, type: 1, properties: ["i": "integer"]} <- add/2 {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is i -mem/0: location 1048 is 4 -run/0: ingredient 1 is 1 -run/0: product 0 is 5 -mem/0: storing 5 in location 1048 -run/0: instruction clear-screen/13 -run/0: loop/10 {name: "", value: -6, type: , properties: ["": ]} -run/0: ingredient 0 is -6 -run/0: jumping to instruction 8 -run/0: instruction clear-screen/8 -run/0: {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "max", value: 3, type: 1, properties: ["max": "integer"]} -run/0: ingredient 0 is i -mem/0: location 1048 is 5 -run/0: ingredient 1 is max -mem/0: location 1047 is 6 -run/0: product 0 is 0 -mem/0: storing 0 in location 1049 -run/0: instruction clear-screen/9 -run/0: break-if/11 {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 4, type: , properties: ["": ]} -mem/0: location 1049 is 0 -run/0: ingredient 0 is 0 -run/0: jump-if fell through -run/0: instruction clear-screen/10 -run/0: {name: "c", value: 6, type: 2-4, properties: ["c": "address":"character"]} <- index-address/27 {name: "buf", value: 2, type: 2-5-4, properties: ["buf": "address":"array":"character", "deref": ]}, {name: "i", value: 4, type: 1, properties: ["i": "integer"]} -run/0: ingredient 0 is buf -mem/0: location 1046 is 1036 -run/0: ingredient 1 is {name: "i", value: 4, type: 1, properties: ["i": "integer"]} -mem/0: location 1048 is 5 -run/0: address to copy is 1042 -run/0: product 0 is 1042 -mem/0: storing 1042 in location 1050 -run/0: instruction clear-screen/11 -run/0: {name: "c", value: 6, type: 2-4, properties: ["c": "address":"character", "deref": ]} <- copy/1 {name: " ", value: 0, type: 0, properties: [" ": "literal-string"]} -run/0: ingredient 0 is -mem/0: location 1050 is 1042 -mem/0: storing 0 in location 1042 -run/0: instruction clear-screen/12 -run/0: {name: "i", value: 4, type: 1, properties: ["i": "integer"]} <- add/2 {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is i -mem/0: location 1048 is 5 -run/0: ingredient 1 is 1 -run/0: product 0 is 6 -mem/0: storing 6 in location 1048 -run/0: instruction clear-screen/13 -run/0: loop/10 {name: "", value: -6, type: , properties: ["": ]} -run/0: ingredient 0 is -6 -run/0: jumping to instruction 8 -run/0: instruction clear-screen/8 -run/0: {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "max", value: 3, type: 1, properties: ["max": "integer"]} -run/0: ingredient 0 is i -mem/0: location 1048 is 6 -run/0: ingredient 1 is max -mem/0: location 1047 is 6 -run/0: product 0 is 1 -mem/0: storing 1 in location 1049 -run/0: instruction clear-screen/9 -run/0: break-if/11 {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 4, type: , properties: ["": ]} -mem/0: location 1049 is 1 -run/0: ingredient 0 is 1 -run/0: ingredient 1 is -run/0: jumping to instruction 14 -run/0: instruction clear-screen/15 -run/0: reply/33 {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen", "same-as-ingredient": "0"]} -mem/0: location 1045 is 1031 -run/0: instruction init-fake-screen/14 -run/0: reply/33 {name: "result", value: 1, type: 2-11, properties: ["result": "address":"screen"]} -mem/0: location 1002 is 1031 -run/0: result 0 is 1031 -mem/0: storing 1031 in location 1 -run/0: instruction run1001/1 -run/0: {name: "1", value: 1, type: 2-11, properties: ["1": "address":"screen"]} <- print-character/117 {name: "1", value: 1, type: 2-11, properties: ["1": "address":"screen"]}, {name: "97", value: 97, type: 0, properties: ["97": "literal"]} -mem/0: location 1 is 1031 -run/0: instruction print-character/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/44 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} -mem/0: array size is 30 -mem/0: new alloc: 1074 -run/0: instruction print-character/1 -run/0: {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen"]} <- next-ingredient/30 -run/0: product 0 is 1031 -mem/0: storing 1031 in location 1076 -run/0: instruction print-character/2 -run/0: {name: "c", value: 2, type: 4, properties: ["c": "character"]} <- next-ingredient/30 -run/0: product 0 is 97 -mem/0: storing 97 in location 1077 -run/0: instruction print-character/4 -run/0: break-unless/12 {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen"]}, {name: "", value: 14, type: , properties: ["": ]} -mem/0: location 1076 is 1031 -run/0: ingredient 0 is 1031 -run/0: jump-unless fell through -run/0: instruction print-character/5 -run/0: {name: "row", value: 3, type: 2-1, properties: ["row": "address":"integer"]} <- get-address/25 {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen", "deref": ]}, {name: "cursor-row", value: 2, type: 0, properties: ["cursor-row": "offset"]} -run/0: ingredient 0 is x -mem/0: location 1076 is 1031 -run/0: ingredient 1 is cursor-row -run/0: address to copy is 1033 -run/0: product 0 is 1033 -mem/0: storing 1033 in location 1078 -run/0: instruction print-character/6 -run/0: {name: "column", value: 4, type: 2-1, properties: ["column": "address":"integer"]} <- get-address/25 {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen", "deref": ]}, {name: "cursor-column", value: 3, type: 0, properties: ["cursor-column": "offset"]} -run/0: ingredient 0 is x -mem/0: location 1076 is 1031 -run/0: ingredient 1 is cursor-column -run/0: address to copy is 1034 -run/0: product 0 is 1034 -mem/0: storing 1034 in location 1079 -run/0: instruction print-character/7 -run/0: {name: "width", value: 5, type: 1, properties: ["width": "integer"]} <- get/24 {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen", "deref": ]}, {name: "num-columns", value: 1, type: 0, properties: ["num-columns": "offset"]} -run/0: ingredient 0 is x -mem/0: location 1076 is 1031 -run/0: ingredient 1 is num-columns -run/0: address to copy is 1032 -run/0: its type is 1 -mem/0: location 1032 is 3 -run/0: product 0 is 3 -mem/0: storing 3 in location 1080 -run/0: instruction print-character/8 -run/0: {name: "index", value: 6, type: 1, properties: ["index": "integer"]} <- multiply/4 {name: "row", value: 3, type: 2-1, properties: ["row": "address":"integer", "deref": ]}, {name: "width", value: 5, type: 1, properties: ["width": "integer"]} -run/0: ingredient 0 is row -mem/0: location 1078 is 1033 -mem/0: location 1033 is 0 -run/0: ingredient 1 is width -mem/0: location 1080 is 3 -run/0: ingredient 1 is 3 -run/0: product 0 is 0 -mem/0: storing 0 in location 1081 -run/0: instruction print-character/9 -run/0: {name: "index", value: 6, type: 1, properties: ["index": "integer"]} <- add/2 {name: "index", value: 6, type: 1, properties: ["index": "integer"]}, {name: "column", value: 4, type: 2-1, properties: ["column": "address":"integer", "deref": ]} -run/0: ingredient 0 is index -mem/0: location 1081 is 0 -run/0: ingredient 1 is column -mem/0: location 1079 is 1034 -mem/0: location 1034 is 0 -run/0: product 0 is 0 -mem/0: storing 0 in location 1081 -run/0: instruction print-character/10 -run/0: {name: "buf", value: 7, type: 2-5-4, properties: ["buf": "address":"array":"character"]} <- get/24 {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen", "deref": ]}, {name: "data", value: 4, type: 0, properties: ["data": "offset"]} -run/0: ingredient 0 is x -mem/0: location 1076 is 1031 -run/0: ingredient 1 is data -run/0: address to copy is 1035 -run/0: its type is 2 -mem/0: location 1035 is 1036 -run/0: product 0 is 1036 -mem/0: storing 1036 in location 1082 -run/0: instruction print-character/11 -run/0: {name: "cursor", value: 8, type: 2-4, properties: ["cursor": "address":"character"]} <- index-address/27 {name: "buf", value: 7, type: 2-5-4, properties: ["buf": "address":"array":"character", "deref": ]}, {name: "index", value: 6, type: 1, properties: ["index": "integer"]} -run/0: ingredient 0 is buf -mem/0: location 1082 is 1036 -run/0: ingredient 1 is {name: "index", value: 6, type: 1, properties: ["index": "integer"]} -mem/0: location 1081 is 0 -run/0: address to copy is 1037 -run/0: product 0 is 1037 -mem/0: storing 1037 in location 1083 -run/0: instruction print-character/12 -run/0: {name: "cursor", value: 8, type: 2-4, properties: ["cursor": "address":"character", "deref": ]} <- copy/1 {name: "c", value: 2, type: 4, properties: ["c": "character"]} -run/0: ingredient 0 is c -mem/0: location 1077 is 97 -mem/0: location 1083 is 1037 -mem/0: storing 97 in location 1037 -run/0: instruction print-character/14 -run/0: {name: "at-right?", value: 9, type: 3, properties: ["at-right?": "boolean"]} <- equal/13 {name: "column", value: 4, type: 2-1, properties: ["column": "address":"integer", "deref": ]}, {name: "width", value: 5, type: 1, properties: ["width": "integer"]} -run/0: ingredient 0 is column -mem/0: location 1079 is 1034 -mem/0: location 1034 is 0 -run/0: ingredient 1 is width -mem/0: location 1080 is 3 -run/0: product 0 is 0 -mem/0: storing 0 in location 1084 -run/0: instruction print-character/15 -run/0: break-if/11 {name: "at-right?", value: 9, type: 3, properties: ["at-right?": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} -mem/0: location 1084 is 0 -run/0: ingredient 0 is 0 -run/0: jump-if fell through -run/0: instruction print-character/16 -run/0: {name: "column", value: 4, type: 2-1, properties: ["column": "address":"integer", "deref": ]} <- add/2 {name: "column", value: 4, type: 2-1, properties: ["column": "address":"integer", "deref": ]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is column -mem/0: location 1079 is 1034 -mem/0: location 1034 is 0 -run/0: ingredient 1 is 1 -run/0: product 0 is 1 -mem/0: location 1079 is 1034 -mem/0: storing 1 in location 1034 -run/0: instruction print-character/18 -run/0: reply/33 {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen", "same-as-ingredient": "0"]} -mem/0: location 1076 is 1031 -run/0: result 0 is 1031 -mem/0: storing 1031 in location 1 -run/0: instruction run1001/2 -run/0: {name: "1", value: 1, type: 2-11, properties: ["1": "address":"screen"]} <- move-cursor/120 {name: "1", value: 1, type: 2-11, properties: ["1": "address":"screen"]}, {name: "0", value: 0, type: 0, properties: ["0": "literal", "row": ]}, {name: "0", value: 0, type: 0, properties: ["0": "literal", "column": ]} -mem/0: location 1 is 1031 -run/0: instruction move-cursor/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/44 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} -mem/0: array size is 30 -mem/0: new alloc: 1105 -run/0: instruction move-cursor/1 -run/0: {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen"]} <- next-ingredient/30 -run/0: product 0 is 1031 -mem/0: storing 1031 in location 1107 -run/0: instruction move-cursor/2 -run/0: {name: "new-row", value: 2, type: 1, properties: ["new-row": "integer"]} <- next-ingredient/30 -run/0: product 0 is 0 -mem/0: storing 0 in location 1108 -run/0: instruction move-cursor/3 -run/0: {name: "new-column", value: 3, type: 1, properties: ["new-column": "integer"]} <- next-ingredient/30 -run/0: product 0 is 0 -mem/0: storing 0 in location 1109 -run/0: instruction move-cursor/5 -run/0: break-unless/12 {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen"]}, {name: "", value: 5, type: , properties: ["": ]} -mem/0: location 1107 is 1031 -run/0: ingredient 0 is 1031 -run/0: jump-unless fell through -run/0: instruction move-cursor/6 -run/0: {name: "row", value: 4, type: 2-1, properties: ["row": "address":"integer"]} <- get-address/25 {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen", "deref": ]}, {name: "cursor-row", value: 2, type: 0, properties: ["cursor-row": "offset"]} -run/0: ingredient 0 is x -mem/0: location 1107 is 1031 -run/0: ingredient 1 is cursor-row -run/0: address to copy is 1033 -run/0: product 0 is 1033 -mem/0: storing 1033 in location 1110 -run/0: instruction move-cursor/7 -run/0: {name: "row", value: 4, type: 2-1, properties: ["row": "address":"integer", "deref": ]} <- copy/1 {name: "new-row", value: 2, type: 1, properties: ["new-row": "integer"]} -run/0: ingredient 0 is new-row -mem/0: location 1108 is 0 -mem/0: location 1110 is 1033 -mem/0: storing 0 in location 1033 -run/0: instruction move-cursor/8 -run/0: {name: "column", value: 5, type: 2-1, properties: ["column": "address":"integer"]} <- get-address/25 {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen", "deref": ]}, {name: "cursor-column", value: 3, type: 0, properties: ["cursor-column": "offset"]} -run/0: ingredient 0 is x -mem/0: location 1107 is 1031 -run/0: ingredient 1 is cursor-column -run/0: address to copy is 1034 -run/0: product 0 is 1034 -mem/0: storing 1034 in location 1111 -run/0: instruction move-cursor/9 -run/0: {name: "column", value: 5, type: 2-1, properties: ["column": "address":"integer", "deref": ]} <- copy/1 {name: "new-column", value: 3, type: 1, properties: ["new-column": "integer"]} -run/0: ingredient 0 is new-column -mem/0: location 1109 is 0 -mem/0: location 1111 is 1034 -mem/0: storing 0 in location 1034 -run/0: instruction move-cursor/10 -run/0: reply/33 {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen", "same-as-ingredient": "0"]} -mem/0: location 1107 is 1031 -run/0: result 0 is 1031 -mem/0: storing 1031 in location 1 -run/0: instruction run1001/3 -run/0: {name: "1", value: 1, type: 2-11, properties: ["1": "address":"screen"]} <- clear-line/118 {name: "1", value: 1, type: 2-11, properties: ["1": "address":"screen"]} -mem/0: location 1 is 1031 -run/0: instruction clear-line/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/44 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} -mem/0: array size is 30 -mem/0: new alloc: 1136 -run/0: instruction clear-line/1 -run/0: {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen"]} <- next-ingredient/30 -run/0: product 0 is 1031 -mem/0: storing 1031 in location 1138 -run/0: instruction clear-line/3 -run/0: break-unless/12 {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen"]}, {name: "", value: 11, type: , properties: ["": ]} -mem/0: location 1138 is 1031 -run/0: ingredient 0 is 1031 -run/0: jump-unless fell through -run/0: instruction clear-line/4 -run/0: {name: "n", value: 2, type: 1, properties: ["n": "integer"]} <- get/24 {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen", "deref": ]}, {name: "num-columns", value: 1, type: 0, properties: ["num-columns": "offset"]} -run/0: ingredient 0 is x -mem/0: location 1138 is 1031 -run/0: ingredient 1 is num-columns -run/0: address to copy is 1032 -run/0: its type is 1 -mem/0: location 1032 is 3 -run/0: product 0 is 3 -mem/0: storing 3 in location 1139 -run/0: instruction clear-line/5 -run/0: {name: "column", value: 3, type: 2-1, properties: ["column": "address":"integer"]} <- get-address/25 {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen", "deref": ]}, {name: "cursor-column", value: 3, type: 0, properties: ["cursor-column": "offset"]} -run/0: ingredient 0 is x -mem/0: location 1138 is 1031 -run/0: ingredient 1 is cursor-column -run/0: address to copy is 1034 -run/0: product 0 is 1034 -mem/0: storing 1034 in location 1140 -run/0: instruction clear-line/6 -run/0: {name: "original-column", value: 4, type: 1, properties: ["original-column": "integer"]} <- copy/1 {name: "column", value: 3, type: 2-1, properties: ["column": "address":"integer", "deref": ]} -run/0: ingredient 0 is column -mem/0: location 1140 is 1034 -mem/0: location 1034 is 0 -mem/0: storing 0 in location 1141 -run/0: instruction clear-line/8 -run/0: {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]} <- greater-or-equal/16 {name: "column", value: 3, type: 2-1, properties: ["column": "address":"integer", "deref": ]}, {name: "n", value: 2, type: 1, properties: ["n": "integer"]} -run/0: ingredient 0 is column -mem/0: location 1140 is 1034 -mem/0: location 1034 is 0 -run/0: ingredient 1 is n -mem/0: location 1139 is 3 -run/0: product 0 is 0 -mem/0: storing 0 in location 1142 -run/0: instruction clear-line/9 -run/0: break-if/11 {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 2, type: , properties: ["": ]} -mem/0: location 1142 is 0 -run/0: ingredient 0 is 0 -run/0: jump-if fell through -run/0: instruction clear-line/10 -run/0: print-character/117 {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen"]}, {name: " ", value: 0, type: 0, properties: [" ": "literal-string"]} -mem/0: location 1138 is 1031 -run/0: instruction print-character/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/44 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} -mem/0: array size is 30 -mem/0: new alloc: 1167 -run/0: instruction print-character/1 -run/0: {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen"]} <- next-ingredient/30 -run/0: product 0 is 1031 -mem/0: storing 1031 in location 1169 -run/0: instruction print-character/2 -run/0: {name: "c", value: 2, type: 4, properties: ["c": "character"]} <- next-ingredient/30 -run/0: product 0 is 0 -mem/0: storing 0 in location 1170 -run/0: instruction print-character/4 -run/0: break-unless/12 {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen"]}, {name: "", value: 14, type: , properties: ["": ]} -mem/0: location 1169 is 1031 -run/0: ingredient 0 is 1031 -run/0: jump-unless fell through -run/0: instruction print-character/5 -run/0: {name: "row", value: 3, type: 2-1, properties: ["row": "address":"integer"]} <- get-address/25 {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen", "deref": ]}, {name: "cursor-row", value: 2, type: 0, properties: ["cursor-row": "offset"]} -run/0: ingredient 0 is x -mem/0: location 1169 is 1031 -run/0: ingredient 1 is cursor-row -run/0: address to copy is 1033 -run/0: product 0 is 1033 -mem/0: storing 1033 in location 1171 -run/0: instruction print-character/6 -run/0: {name: "column", value: 4, type: 2-1, properties: ["column": "address":"integer"]} <- get-address/25 {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen", "deref": ]}, {name: "cursor-column", value: 3, type: 0, properties: ["cursor-column": "offset"]} -run/0: ingredient 0 is x -mem/0: location 1169 is 1031 -run/0: ingredient 1 is cursor-column -run/0: address to copy is 1034 -run/0: product 0 is 1034 -mem/0: storing 1034 in location 1172 -run/0: instruction print-character/7 -run/0: {name: "width", value: 5, type: 1, properties: ["width": "integer"]} <- get/24 {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen", "deref": ]}, {name: "num-columns", value: 1, type: 0, properties: ["num-columns": "offset"]} -run/0: ingredient 0 is x -mem/0: location 1169 is 1031 -run/0: ingredient 1 is num-columns -run/0: address to copy is 1032 -run/0: its type is 1 -mem/0: location 1032 is 3 -run/0: product 0 is 3 -mem/0: storing 3 in location 1173 -run/0: instruction print-character/8 -run/0: {name: "index", value: 6, type: 1, properties: ["index": "integer"]} <- multiply/4 {name: "row", value: 3, type: 2-1, properties: ["row": "address":"integer", "deref": ]}, {name: "width", value: 5, type: 1, properties: ["width": "integer"]} -run/0: ingredient 0 is row -mem/0: location 1171 is 1033 -mem/0: location 1033 is 0 -run/0: ingredient 1 is width -mem/0: location 1173 is 3 -run/0: ingredient 1 is 3 -run/0: product 0 is 0 -mem/0: storing 0 in location 1174 -run/0: instruction print-character/9 -run/0: {name: "index", value: 6, type: 1, properties: ["index": "integer"]} <- add/2 {name: "index", value: 6, type: 1, properties: ["index": "integer"]}, {name: "column", value: 4, type: 2-1, properties: ["column": "address":"integer", "deref": ]} -run/0: ingredient 0 is index -mem/0: location 1174 is 0 -run/0: ingredient 1 is column -mem/0: location 1172 is 1034 -mem/0: location 1034 is 0 -run/0: product 0 is 0 -mem/0: storing 0 in location 1174 -run/0: instruction print-character/10 -run/0: {name: "buf", value: 7, type: 2-5-4, properties: ["buf": "address":"array":"character"]} <- get/24 {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen", "deref": ]}, {name: "data", value: 4, type: 0, properties: ["data": "offset"]} -run/0: ingredient 0 is x -mem/0: location 1169 is 1031 -run/0: ingredient 1 is data -run/0: address to copy is 1035 -run/0: its type is 2 -mem/0: location 1035 is 1036 -run/0: product 0 is 1036 -mem/0: storing 1036 in location 1175 -run/0: instruction print-character/11 -run/0: {name: "cursor", value: 8, type: 2-4, properties: ["cursor": "address":"character"]} <- index-address/27 {name: "buf", value: 7, type: 2-5-4, properties: ["buf": "address":"array":"character", "deref": ]}, {name: "index", value: 6, type: 1, properties: ["index": "integer"]} -run/0: ingredient 0 is buf -mem/0: location 1175 is 1036 -run/0: ingredient 1 is {name: "index", value: 6, type: 1, properties: ["index": "integer"]} -mem/0: location 1174 is 0 -run/0: address to copy is 1037 -run/0: product 0 is 1037 -mem/0: storing 1037 in location 1176 -run/0: instruction print-character/12 -run/0: {name: "cursor", value: 8, type: 2-4, properties: ["cursor": "address":"character", "deref": ]} <- copy/1 {name: "c", value: 2, type: 4, properties: ["c": "character"]} -run/0: ingredient 0 is c -mem/0: location 1170 is 0 -mem/0: location 1176 is 1037 -mem/0: storing 0 in location 1037 -run/0: instruction print-character/14 -run/0: {name: "at-right?", value: 9, type: 3, properties: ["at-right?": "boolean"]} <- equal/13 {name: "column", value: 4, type: 2-1, properties: ["column": "address":"integer", "deref": ]}, {name: "width", value: 5, type: 1, properties: ["width": "integer"]} -run/0: ingredient 0 is column -mem/0: location 1172 is 1034 -mem/0: location 1034 is 0 -run/0: ingredient 1 is width -mem/0: location 1173 is 3 -run/0: product 0 is 0 -mem/0: storing 0 in location 1177 -run/0: instruction print-character/15 -run/0: break-if/11 {name: "at-right?", value: 9, type: 3, properties: ["at-right?": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} -mem/0: location 1177 is 0 -run/0: ingredient 0 is 0 -run/0: jump-if fell through -run/0: instruction print-character/16 -run/0: {name: "column", value: 4, type: 2-1, properties: ["column": "address":"integer", "deref": ]} <- add/2 {name: "column", value: 4, type: 2-1, properties: ["column": "address":"integer", "deref": ]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is column -mem/0: location 1172 is 1034 -mem/0: location 1034 is 0 -run/0: ingredient 1 is 1 -run/0: product 0 is 1 -mem/0: location 1172 is 1034 -mem/0: storing 1 in location 1034 -run/0: instruction print-character/18 -run/0: reply/33 {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen", "same-as-ingredient": "0"]} -mem/0: location 1169 is 1031 -run/0: instruction clear-line/11 -run/0: loop/10 {name: "", value: -4, type: , properties: ["": ]} -run/0: ingredient 0 is -4 -run/0: jumping to instruction 8 -run/0: instruction clear-line/8 -run/0: {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]} <- greater-or-equal/16 {name: "column", value: 3, type: 2-1, properties: ["column": "address":"integer", "deref": ]}, {name: "n", value: 2, type: 1, properties: ["n": "integer"]} -run/0: ingredient 0 is column -mem/0: location 1140 is 1034 -mem/0: location 1034 is 1 -run/0: ingredient 1 is n -mem/0: location 1139 is 3 -run/0: product 0 is 0 -mem/0: storing 0 in location 1142 -run/0: instruction clear-line/9 -run/0: break-if/11 {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 2, type: , properties: ["": ]} -mem/0: location 1142 is 0 -run/0: ingredient 0 is 0 -run/0: jump-if fell through -run/0: instruction clear-line/10 -run/0: print-character/117 {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen"]}, {name: " ", value: 0, type: 0, properties: [" ": "literal-string"]} -mem/0: location 1138 is 1031 -run/0: instruction print-character/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/44 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} -mem/0: array size is 30 -mem/0: new alloc: 1198 -run/0: instruction print-character/1 -run/0: {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen"]} <- next-ingredient/30 -run/0: product 0 is 1031 -mem/0: storing 1031 in location 1200 -run/0: instruction print-character/2 -run/0: {name: "c", value: 2, type: 4, properties: ["c": "character"]} <- next-ingredient/30 -run/0: product 0 is 0 -mem/0: storing 0 in location 1201 -run/0: instruction print-character/4 -run/0: break-unless/12 {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen"]}, {name: "", value: 14, type: , properties: ["": ]} -mem/0: location 1200 is 1031 -run/0: ingredient 0 is 1031 -run/0: jump-unless fell through -run/0: instruction print-character/5 -run/0: {name: "row", value: 3, type: 2-1, properties: ["row": "address":"integer"]} <- get-address/25 {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen", "deref": ]}, {name: "cursor-row", value: 2, type: 0, properties: ["cursor-row": "offset"]} -run/0: ingredient 0 is x -mem/0: location 1200 is 1031 -run/0: ingredient 1 is cursor-row -run/0: address to copy is 1033 -run/0: product 0 is 1033 -mem/0: storing 1033 in location 1202 -run/0: instruction print-character/6 -run/0: {name: "column", value: 4, type: 2-1, properties: ["column": "address":"integer"]} <- get-address/25 {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen", "deref": ]}, {name: "cursor-column", value: 3, type: 0, properties: ["cursor-column": "offset"]} -run/0: ingredient 0 is x -mem/0: location 1200 is 1031 -run/0: ingredient 1 is cursor-column -run/0: address to copy is 1034 -run/0: product 0 is 1034 -mem/0: storing 1034 in location 1203 -run/0: instruction print-character/7 -run/0: {name: "width", value: 5, type: 1, properties: ["width": "integer"]} <- get/24 {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen", "deref": ]}, {name: "num-columns", value: 1, type: 0, properties: ["num-columns": "offset"]} -run/0: ingredient 0 is x -mem/0: location 1200 is 1031 -run/0: ingredient 1 is num-columns -run/0: address to copy is 1032 -run/0: its type is 1 -mem/0: location 1032 is 3 -run/0: product 0 is 3 -mem/0: storing 3 in location 1204 -run/0: instruction print-character/8 -run/0: {name: "index", value: 6, type: 1, properties: ["index": "integer"]} <- multiply/4 {name: "row", value: 3, type: 2-1, properties: ["row": "address":"integer", "deref": ]}, {name: "width", value: 5, type: 1, properties: ["width": "integer"]} -run/0: ingredient 0 is row -mem/0: location 1202 is 1033 -mem/0: location 1033 is 0 -run/0: ingredient 1 is width -mem/0: location 1204 is 3 -run/0: ingredient 1 is 3 -run/0: product 0 is 0 -mem/0: storing 0 in location 1205 -run/0: instruction print-character/9 -run/0: {name: "index", value: 6, type: 1, properties: ["index": "integer"]} <- add/2 {name: "index", value: 6, type: 1, properties: ["index": "integer"]}, {name: "column", value: 4, type: 2-1, properties: ["column": "address":"integer", "deref": ]} -run/0: ingredient 0 is index -mem/0: location 1205 is 0 -run/0: ingredient 1 is column -mem/0: location 1203 is 1034 -mem/0: location 1034 is 1 -run/0: product 0 is 1 -mem/0: storing 1 in location 1205 -run/0: instruction print-character/10 -run/0: {name: "buf", value: 7, type: 2-5-4, properties: ["buf": "address":"array":"character"]} <- get/24 {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen", "deref": ]}, {name: "data", value: 4, type: 0, properties: ["data": "offset"]} -run/0: ingredient 0 is x -mem/0: location 1200 is 1031 -run/0: ingredient 1 is data -run/0: address to copy is 1035 -run/0: its type is 2 -mem/0: location 1035 is 1036 -run/0: product 0 is 1036 -mem/0: storing 1036 in location 1206 -run/0: instruction print-character/11 -run/0: {name: "cursor", value: 8, type: 2-4, properties: ["cursor": "address":"character"]} <- index-address/27 {name: "buf", value: 7, type: 2-5-4, properties: ["buf": "address":"array":"character", "deref": ]}, {name: "index", value: 6, type: 1, properties: ["index": "integer"]} -run/0: ingredient 0 is buf -mem/0: location 1206 is 1036 -run/0: ingredient 1 is {name: "index", value: 6, type: 1, properties: ["index": "integer"]} -mem/0: location 1205 is 1 -run/0: address to copy is 1038 -run/0: product 0 is 1038 -mem/0: storing 1038 in location 1207 -run/0: instruction print-character/12 -run/0: {name: "cursor", value: 8, type: 2-4, properties: ["cursor": "address":"character", "deref": ]} <- copy/1 {name: "c", value: 2, type: 4, properties: ["c": "character"]} -run/0: ingredient 0 is c -mem/0: location 1201 is 0 -mem/0: location 1207 is 1038 -mem/0: storing 0 in location 1038 -run/0: instruction print-character/14 -run/0: {name: "at-right?", value: 9, type: 3, properties: ["at-right?": "boolean"]} <- equal/13 {name: "column", value: 4, type: 2-1, properties: ["column": "address":"integer", "deref": ]}, {name: "width", value: 5, type: 1, properties: ["width": "integer"]} -run/0: ingredient 0 is column -mem/0: location 1203 is 1034 -mem/0: location 1034 is 1 -run/0: ingredient 1 is width -mem/0: location 1204 is 3 -run/0: product 0 is 0 -mem/0: storing 0 in location 1208 -run/0: instruction print-character/15 -run/0: break-if/11 {name: "at-right?", value: 9, type: 3, properties: ["at-right?": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} -mem/0: location 1208 is 0 -run/0: ingredient 0 is 0 -run/0: jump-if fell through -run/0: instruction print-character/16 -run/0: {name: "column", value: 4, type: 2-1, properties: ["column": "address":"integer", "deref": ]} <- add/2 {name: "column", value: 4, type: 2-1, properties: ["column": "address":"integer", "deref": ]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is column -mem/0: location 1203 is 1034 -mem/0: location 1034 is 1 -run/0: ingredient 1 is 1 -run/0: product 0 is 2 -mem/0: location 1203 is 1034 -mem/0: storing 2 in location 1034 -run/0: instruction print-character/18 -run/0: reply/33 {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen", "same-as-ingredient": "0"]} -mem/0: location 1200 is 1031 -run/0: instruction clear-line/11 -run/0: loop/10 {name: "", value: -4, type: , properties: ["": ]} -run/0: ingredient 0 is -4 -run/0: jumping to instruction 8 -run/0: instruction clear-line/8 -run/0: {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]} <- greater-or-equal/16 {name: "column", value: 3, type: 2-1, properties: ["column": "address":"integer", "deref": ]}, {name: "n", value: 2, type: 1, properties: ["n": "integer"]} -run/0: ingredient 0 is column -mem/0: location 1140 is 1034 -mem/0: location 1034 is 2 -run/0: ingredient 1 is n -mem/0: location 1139 is 3 -run/0: product 0 is 0 -mem/0: storing 0 in location 1142 -run/0: instruction clear-line/9 -run/0: break-if/11 {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 2, type: , properties: ["": ]} -mem/0: location 1142 is 0 -run/0: ingredient 0 is 0 -run/0: jump-if fell through -run/0: instruction clear-line/10 -run/0: print-character/117 {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen"]}, {name: " ", value: 0, type: 0, properties: [" ": "literal-string"]} -mem/0: location 1138 is 1031 -run/0: instruction print-character/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/44 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} -mem/0: array size is 30 -mem/0: new alloc: 1229 -run/0: instruction print-character/1 -run/0: {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen"]} <- next-ingredient/30 -run/0: product 0 is 1031 -mem/0: storing 1031 in location 1231 -run/0: instruction print-character/2 -run/0: {name: "c", value: 2, type: 4, properties: ["c": "character"]} <- next-ingredient/30 -run/0: product 0 is 0 -mem/0: storing 0 in location 1232 -run/0: instruction print-character/4 -run/0: break-unless/12 {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen"]}, {name: "", value: 14, type: , properties: ["": ]} -mem/0: location 1231 is 1031 -run/0: ingredient 0 is 1031 -run/0: jump-unless fell through -run/0: instruction print-character/5 -run/0: {name: "row", value: 3, type: 2-1, properties: ["row": "address":"integer"]} <- get-address/25 {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen", "deref": ]}, {name: "cursor-row", value: 2, type: 0, properties: ["cursor-row": "offset"]} -run/0: ingredient 0 is x -mem/0: location 1231 is 1031 -run/0: ingredient 1 is cursor-row -run/0: address to copy is 1033 -run/0: product 0 is 1033 -mem/0: storing 1033 in location 1233 -run/0: instruction print-character/6 -run/0: {name: "column", value: 4, type: 2-1, properties: ["column": "address":"integer"]} <- get-address/25 {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen", "deref": ]}, {name: "cursor-column", value: 3, type: 0, properties: ["cursor-column": "offset"]} -run/0: ingredient 0 is x -mem/0: location 1231 is 1031 -run/0: ingredient 1 is cursor-column -run/0: address to copy is 1034 -run/0: product 0 is 1034 -mem/0: storing 1034 in location 1234 -run/0: instruction print-character/7 -run/0: {name: "width", value: 5, type: 1, properties: ["width": "integer"]} <- get/24 {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen", "deref": ]}, {name: "num-columns", value: 1, type: 0, properties: ["num-columns": "offset"]} -run/0: ingredient 0 is x -mem/0: location 1231 is 1031 -run/0: ingredient 1 is num-columns -run/0: address to copy is 1032 -run/0: its type is 1 -mem/0: location 1032 is 3 -run/0: product 0 is 3 -mem/0: storing 3 in location 1235 -run/0: instruction print-character/8 -run/0: {name: "index", value: 6, type: 1, properties: ["index": "integer"]} <- multiply/4 {name: "row", value: 3, type: 2-1, properties: ["row": "address":"integer", "deref": ]}, {name: "width", value: 5, type: 1, properties: ["width": "integer"]} -run/0: ingredient 0 is row -mem/0: location 1233 is 1033 -mem/0: location 1033 is 0 -run/0: ingredient 1 is width -mem/0: location 1235 is 3 -run/0: ingredient 1 is 3 -run/0: product 0 is 0 -mem/0: storing 0 in location 1236 -run/0: instruction print-character/9 -run/0: {name: "index", value: 6, type: 1, properties: ["index": "integer"]} <- add/2 {name: "index", value: 6, type: 1, properties: ["index": "integer"]}, {name: "column", value: 4, type: 2-1, properties: ["column": "address":"integer", "deref": ]} -run/0: ingredient 0 is index -mem/0: location 1236 is 0 -run/0: ingredient 1 is column -mem/0: location 1234 is 1034 -mem/0: location 1034 is 2 -run/0: product 0 is 2 -mem/0: storing 2 in location 1236 -run/0: instruction print-character/10 -run/0: {name: "buf", value: 7, type: 2-5-4, properties: ["buf": "address":"array":"character"]} <- get/24 {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen", "deref": ]}, {name: "data", value: 4, type: 0, properties: ["data": "offset"]} -run/0: ingredient 0 is x -mem/0: location 1231 is 1031 -run/0: ingredient 1 is data -run/0: address to copy is 1035 -run/0: its type is 2 -mem/0: location 1035 is 1036 -run/0: product 0 is 1036 -mem/0: storing 1036 in location 1237 -run/0: instruction print-character/11 -run/0: {name: "cursor", value: 8, type: 2-4, properties: ["cursor": "address":"character"]} <- index-address/27 {name: "buf", value: 7, type: 2-5-4, properties: ["buf": "address":"array":"character", "deref": ]}, {name: "index", value: 6, type: 1, properties: ["index": "integer"]} -run/0: ingredient 0 is buf -mem/0: location 1237 is 1036 -run/0: ingredient 1 is {name: "index", value: 6, type: 1, properties: ["index": "integer"]} -mem/0: location 1236 is 2 -run/0: address to copy is 1039 -run/0: product 0 is 1039 -mem/0: storing 1039 in location 1238 -run/0: instruction print-character/12 -run/0: {name: "cursor", value: 8, type: 2-4, properties: ["cursor": "address":"character", "deref": ]} <- copy/1 {name: "c", value: 2, type: 4, properties: ["c": "character"]} -run/0: ingredient 0 is c -mem/0: location 1232 is 0 -mem/0: location 1238 is 1039 -mem/0: storing 0 in location 1039 -run/0: instruction print-character/14 -run/0: {name: "at-right?", value: 9, type: 3, properties: ["at-right?": "boolean"]} <- equal/13 {name: "column", value: 4, type: 2-1, properties: ["column": "address":"integer", "deref": ]}, {name: "width", value: 5, type: 1, properties: ["width": "integer"]} -run/0: ingredient 0 is column -mem/0: location 1234 is 1034 -mem/0: location 1034 is 2 -run/0: ingredient 1 is width -mem/0: location 1235 is 3 -run/0: product 0 is 0 -mem/0: storing 0 in location 1239 -run/0: instruction print-character/15 -run/0: break-if/11 {name: "at-right?", value: 9, type: 3, properties: ["at-right?": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} -mem/0: location 1239 is 0 -run/0: ingredient 0 is 0 -run/0: jump-if fell through -run/0: instruction print-character/16 -run/0: {name: "column", value: 4, type: 2-1, properties: ["column": "address":"integer", "deref": ]} <- add/2 {name: "column", value: 4, type: 2-1, properties: ["column": "address":"integer", "deref": ]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is column -mem/0: location 1234 is 1034 -mem/0: location 1034 is 2 -run/0: ingredient 1 is 1 -run/0: product 0 is 3 -mem/0: location 1234 is 1034 -mem/0: storing 3 in location 1034 -run/0: instruction print-character/18 -run/0: reply/33 {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen", "same-as-ingredient": "0"]} -mem/0: location 1231 is 1031 -run/0: instruction clear-line/11 -run/0: loop/10 {name: "", value: -4, type: , properties: ["": ]} -run/0: ingredient 0 is -4 -run/0: jumping to instruction 8 -run/0: instruction clear-line/8 -run/0: {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]} <- greater-or-equal/16 {name: "column", value: 3, type: 2-1, properties: ["column": "address":"integer", "deref": ]}, {name: "n", value: 2, type: 1, properties: ["n": "integer"]} -run/0: ingredient 0 is column -mem/0: location 1140 is 1034 -mem/0: location 1034 is 3 -run/0: ingredient 1 is n -mem/0: location 1139 is 3 -run/0: product 0 is 1 -mem/0: storing 1 in location 1142 -run/0: instruction clear-line/9 -run/0: break-if/11 {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 2, type: , properties: ["": ]} -mem/0: location 1142 is 1 -run/0: ingredient 0 is 1 -run/0: ingredient 1 is -run/0: jumping to instruction 12 -run/0: instruction clear-line/13 -run/0: {name: "column", value: 3, type: 2-1, properties: ["column": "address":"integer", "deref": ]} <- copy/1 {name: "original-column", value: 4, type: 1, properties: ["original-column": "integer"]} -run/0: ingredient 0 is original-column -mem/0: location 1141 is 0 -mem/0: location 1140 is 1034 -mem/0: storing 0 in location 1034 -run/0: instruction clear-line/14 -run/0: reply/33 {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen", "same-as-ingredient": "0"]} -mem/0: location 1138 is 1031 -run/0: result 0 is 1031 -mem/0: storing 1031 in location 1 -run/0: instruction run1001/4 -run/0: {name: "2", value: 2, type: 2-5-4, properties: ["2": "address":"array":"character"]} <- get/24 {name: "1", value: 1, type: 2-11, properties: ["1": "address":"screen", "deref": ]}, {name: "data", value: 4, type: 0, properties: ["data": "offset"]} -run/0: ingredient 0 is 1 -mem/0: location 1 is 1031 -run/0: ingredient 1 is data -run/0: address to copy is 1035 -run/0: its type is 2 -mem/0: location 1035 is 1036 -run/0: product 0 is 1036 -mem/0: storing 1036 in location 2 -run/0: instruction run1001/5 -run/0: {name: "3", value: 3, type: 5-4, properties: ["3": "array":"character"]} <- copy/1 {name: "2", value: 2, type: 2-5-4, properties: ["2": "address":"array":"character", "deref": ]} -run/0: ingredient 0 is 2 -mem/0: location 2 is 1036 -mem/0: location 1036 is 6 -mem/0: location 1037 is 0 -mem/0: location 1038 is 0 -mem/0: location 1039 is 0 -mem/0: location 1040 is 0 -mem/0: location 1041 is 0 -mem/0: location 1042 is 0 -mem/0: storing 6 in location 3 -mem/0: storing 0 in location 4 -mem/0: storing 0 in location 5 -mem/0: storing 0 in location 6 -mem/0: storing 0 in location 7 -mem/0: storing 0 in location 8 -mem/0: storing 0 in location 9 -run/0: instruction clear-line-erases-printed-characters/1 -run/0: memory-should-contain/46 {name: " - 3 <- 6 # width*height - 4 <- 0 - 5 <- 0 - 6 <- 0 - 7 <- 0 - 8 <- 0 - 9 <- 0 - ", value: 0, type: 0, properties: [" - 3 <- 6 # width*height - 4 <- 0 - 5 <- 0 - 6 <- 0 - 7 <- 0 - 8 <- 0 - 9 <- 0 - ": "literal-string"]} -run/0: checking location 3 -run/0: checking location 4 -run/0: checking location 5 -run/0: checking location 6 -run/0: checking location 7 -run/0: checking location 8 -run/0: checking location 9 diff --git a/cpp/.traces/clear-line-erases-printed-characters2 b/cpp/.traces/clear-line-erases-printed-characters2 deleted file mode 100644 index 20ffbd1c..00000000 --- a/cpp/.traces/clear-line-erases-printed-characters2 +++ /dev/null @@ -1,1718 +0,0 @@ -parse/0: instruction: assume-screen -parse/0: ingredient: {name: "5", value: 0, type: 0, properties: ["5": "literal", "width": ]} -parse/0: ingredient: {name: "3", value: 0, type: 0, properties: ["3": "literal", "height": ]} -parse/0: instruction: run -parse/0: ingredient: {name: " - # print a character - screen:address <- print-character screen:address, 97:literal # 'a' - # move cursor to start of line - screen:address <- move-cursor screen:address, 0:literal/row, 0:literal/column - # clear line - screen:address <- clear-line screen:address - ", value: 0, type: 0, properties: [" - # print a character - screen:address <- print-character screen:address, 97:literal # 'a' - # move cursor to start of line - screen:address <- move-cursor screen:address, 0:literal/row, 0:literal/column - # clear line - screen:address <- clear-line screen:address - ": "literal-string"]} -parse/0: instruction: screen-should-contain -parse/0: ingredient: {name: " - . . - . . - . . - ", value: 0, type: 0, properties: [" - . . - . . - . . - ": "literal-string"]} -after-brace/0: recipe clear-line-erases-printed-characters2 -after-brace/0: assume-screen ... -after-brace/0: run ... -after-brace/0: screen-should-contain ... -new/0: routine allocated memory from 1000 to 101000 -schedule/0: clear-line-erases-printed-characters2 -run/0: instruction clear-line-erases-printed-characters2/0 -run/0: {name: "screen", value: 900, type: 2, properties: ["screen": "address"]} <- assume-screen/115 {name: "5", value: 5, type: 0, properties: ["5": "literal", "width": ]}, {name: "3", value: 3, type: 0, properties: ["3": "literal", "height": ]} -run/0: instruction init-fake-screen/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/44 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal", "capacity": ]} -mem/0: array size is 30 -mem/0: new alloc: 1000 -run/0: instruction init-fake-screen/1 -run/0: {name: "result", value: 1, type: 2-11, properties: ["result": "address":"screen"]} <- new/44 {name: "screen", value: 11, type: 0, properties: ["screen": "type"]} -mem/0: new alloc: 1031 -mem/0: storing 1031 in location 1002 -run/0: instruction init-fake-screen/2 -run/0: {name: "width", value: 2, type: 2-1, properties: ["width": "address":"integer"]} <- get-address/25 {name: "result", value: 1, type: 2-11, properties: ["result": "address":"screen", "deref": ]}, {name: "num-columns", value: 1, type: 0, properties: ["num-columns": "offset"]} -run/0: ingredient 0 is result -mem/0: location 1002 is 1031 -run/0: ingredient 1 is num-columns -run/0: address to copy is 1032 -run/0: product 0 is 1032 -mem/0: storing 1032 in location 1003 -run/0: instruction init-fake-screen/3 -run/0: {name: "width", value: 2, type: 2-1, properties: ["width": "address":"integer", "deref": ]} <- next-ingredient/30 -run/0: product 0 is 5 -mem/0: location 1003 is 1032 -mem/0: storing 5 in location 1032 -run/0: instruction init-fake-screen/4 -run/0: {name: "height", value: 3, type: 2-1, properties: ["height": "address":"integer"]} <- get-address/25 {name: "result", value: 1, type: 2-11, properties: ["result": "address":"screen", "deref": ]}, {name: "num-rows", value: 0, type: 0, properties: ["num-rows": "offset"]} -run/0: ingredient 0 is result -mem/0: location 1002 is 1031 -run/0: ingredient 1 is num-rows -run/0: address to copy is 1031 -run/0: product 0 is 1031 -mem/0: storing 1031 in location 1004 -run/0: instruction init-fake-screen/5 -run/0: {name: "height", value: 3, type: 2-1, properties: ["height": "address":"integer", "deref": ]} <- next-ingredient/30 -run/0: product 0 is 3 -mem/0: location 1004 is 1031 -mem/0: storing 3 in location 1031 -run/0: instruction init-fake-screen/6 -run/0: {name: "row", value: 4, type: 2-1, properties: ["row": "address":"integer"]} <- get-address/25 {name: "result", value: 1, type: 2-11, properties: ["result": "address":"screen", "deref": ]}, {name: "cursor-row", value: 2, type: 0, properties: ["cursor-row": "offset"]} -run/0: ingredient 0 is result -mem/0: location 1002 is 1031 -run/0: ingredient 1 is cursor-row -run/0: address to copy is 1033 -run/0: product 0 is 1033 -mem/0: storing 1033 in location 1005 -run/0: instruction init-fake-screen/7 -run/0: {name: "row", value: 4, type: 2-1, properties: ["row": "address":"integer", "deref": ]} <- copy/1 {name: "0", value: 0, type: 0, properties: ["0": "literal"]} -run/0: ingredient 0 is 0 -mem/0: location 1005 is 1033 -mem/0: storing 0 in location 1033 -run/0: instruction init-fake-screen/8 -run/0: {name: "column", value: 5, type: 2-1, properties: ["column": "address":"integer"]} <- get-address/25 {name: "result", value: 1, type: 2-11, properties: ["result": "address":"screen", "deref": ]}, {name: "cursor-column", value: 3, type: 0, properties: ["cursor-column": "offset"]} -run/0: ingredient 0 is result -mem/0: location 1002 is 1031 -run/0: ingredient 1 is cursor-column -run/0: address to copy is 1034 -run/0: product 0 is 1034 -mem/0: storing 1034 in location 1006 -run/0: instruction init-fake-screen/9 -run/0: {name: "column", value: 5, type: 2-1, properties: ["column": "address":"integer", "deref": ]} <- copy/1 {name: "0", value: 0, type: 0, properties: ["0": "literal"]} -run/0: ingredient 0 is 0 -mem/0: location 1006 is 1034 -mem/0: storing 0 in location 1034 -run/0: instruction init-fake-screen/10 -run/0: {name: "bufsize", value: 6, type: 1, properties: ["bufsize": "integer"]} <- multiply/4 {name: "width", value: 2, type: 2-1, properties: ["width": "address":"integer", "deref": ]}, {name: "height", value: 3, type: 2-1, properties: ["height": "address":"integer", "deref": ]} -run/0: ingredient 0 is width -mem/0: location 1003 is 1032 -mem/0: location 1032 is 5 -run/0: ingredient 1 is height -mem/0: location 1004 is 1031 -mem/0: location 1031 is 3 -run/0: ingredient 1 is 3 -run/0: product 0 is 15 -mem/0: storing 15 in location 1007 -run/0: instruction init-fake-screen/11 -run/0: {name: "buf", value: 7, type: 2-2-5-4, properties: ["buf": "address":"address":"array":"character"]} <- get-address/25 {name: "result", value: 1, type: 2-11, properties: ["result": "address":"screen", "deref": ]}, {name: "data", value: 4, type: 0, properties: ["data": "offset"]} -run/0: ingredient 0 is result -mem/0: location 1002 is 1031 -run/0: ingredient 1 is data -run/0: address to copy is 1035 -run/0: product 0 is 1035 -mem/0: storing 1035 in location 1008 -run/0: instruction init-fake-screen/12 -run/0: {name: "buf", value: 7, type: 2-2-5-4, properties: ["buf": "address":"address":"array":"character", "deref": ]} <- new/44 {name: "character", value: 0, type: 0, properties: ["character": "literal"]}, {name: "bufsize", value: 6, type: 1, properties: ["bufsize": "integer"]} -mem/0: location 1007 is 15 -mem/0: array size is 15 -mem/0: new alloc: 1036 -mem/0: location 1008 is 1035 -mem/0: storing 1036 in location 1035 -run/0: instruction init-fake-screen/13 -run/0: clear-screen/116 {name: "result", value: 1, type: 2-11, properties: ["result": "address":"screen"]} -mem/0: location 1002 is 1031 -run/0: instruction clear-screen/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/44 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} -mem/0: array size is 30 -mem/0: new alloc: 1052 -run/0: instruction clear-screen/1 -run/0: {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen"]} <- next-ingredient/30 -run/0: product 0 is 1031 -mem/0: storing 1031 in location 1054 -run/0: instruction clear-screen/3 -run/0: break-unless/12 {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen"]}, {name: "", value: 12, type: , properties: ["": ]} -mem/0: location 1054 is 1031 -run/0: ingredient 0 is 1031 -run/0: jump-unless fell through -run/0: instruction clear-screen/4 -run/0: {name: "buf", value: 2, type: 2-5-4, properties: ["buf": "address":"array":"character"]} <- get/24 {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen", "deref": ]}, {name: "data", value: 4, type: 0, properties: ["data": "offset"]} -run/0: ingredient 0 is x -mem/0: location 1054 is 1031 -run/0: ingredient 1 is data -run/0: address to copy is 1035 -run/0: its type is 2 -mem/0: location 1035 is 1036 -run/0: product 0 is 1036 -mem/0: storing 1036 in location 1055 -run/0: instruction clear-screen/5 -run/0: {name: "max", value: 3, type: 1, properties: ["max": "integer"]} <- length/28 {name: "buf", value: 2, type: 2-5-4, properties: ["buf": "address":"array":"character", "deref": ]} -mem/0: location 1055 is 1036 -mem/0: storing 15 in location 1056 -run/0: instruction clear-screen/6 -run/0: {name: "i", value: 4, type: 1, properties: ["i": "integer"]} <- copy/1 {name: "0", value: 0, type: 0, properties: ["0": "literal"]} -run/0: ingredient 0 is 0 -mem/0: storing 0 in location 1057 -run/0: instruction clear-screen/8 -run/0: {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "max", value: 3, type: 1, properties: ["max": "integer"]} -run/0: ingredient 0 is i -mem/0: location 1057 is 0 -run/0: ingredient 1 is max -mem/0: location 1056 is 15 -run/0: product 0 is 0 -mem/0: storing 0 in location 1058 -run/0: instruction clear-screen/9 -run/0: break-if/11 {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 4, type: , properties: ["": ]} -mem/0: location 1058 is 0 -run/0: ingredient 0 is 0 -run/0: jump-if fell through -run/0: instruction clear-screen/10 -run/0: {name: "c", value: 6, type: 2-4, properties: ["c": "address":"character"]} <- index-address/27 {name: "buf", value: 2, type: 2-5-4, properties: ["buf": "address":"array":"character", "deref": ]}, {name: "i", value: 4, type: 1, properties: ["i": "integer"]} -run/0: ingredient 0 is buf -mem/0: location 1055 is 1036 -run/0: ingredient 1 is {name: "i", value: 4, type: 1, properties: ["i": "integer"]} -mem/0: location 1057 is 0 -run/0: address to copy is 1037 -run/0: product 0 is 1037 -mem/0: storing 1037 in location 1059 -run/0: instruction clear-screen/11 -run/0: {name: "c", value: 6, type: 2-4, properties: ["c": "address":"character", "deref": ]} <- copy/1 {name: " ", value: 0, type: 0, properties: [" ": "literal-string"]} -run/0: ingredient 0 is -mem/0: location 1059 is 1037 -mem/0: storing 0 in location 1037 -run/0: instruction clear-screen/12 -run/0: {name: "i", value: 4, type: 1, properties: ["i": "integer"]} <- add/2 {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is i -mem/0: location 1057 is 0 -run/0: ingredient 1 is 1 -run/0: product 0 is 1 -mem/0: storing 1 in location 1057 -run/0: instruction clear-screen/13 -run/0: loop/10 {name: "", value: -6, type: , properties: ["": ]} -run/0: ingredient 0 is -6 -run/0: jumping to instruction 8 -run/0: instruction clear-screen/8 -run/0: {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "max", value: 3, type: 1, properties: ["max": "integer"]} -run/0: ingredient 0 is i -mem/0: location 1057 is 1 -run/0: ingredient 1 is max -mem/0: location 1056 is 15 -run/0: product 0 is 0 -mem/0: storing 0 in location 1058 -run/0: instruction clear-screen/9 -run/0: break-if/11 {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 4, type: , properties: ["": ]} -mem/0: location 1058 is 0 -run/0: ingredient 0 is 0 -run/0: jump-if fell through -run/0: instruction clear-screen/10 -run/0: {name: "c", value: 6, type: 2-4, properties: ["c": "address":"character"]} <- index-address/27 {name: "buf", value: 2, type: 2-5-4, properties: ["buf": "address":"array":"character", "deref": ]}, {name: "i", value: 4, type: 1, properties: ["i": "integer"]} -run/0: ingredient 0 is buf -mem/0: location 1055 is 1036 -run/0: ingredient 1 is {name: "i", value: 4, type: 1, properties: ["i": "integer"]} -mem/0: location 1057 is 1 -run/0: address to copy is 1038 -run/0: product 0 is 1038 -mem/0: storing 1038 in location 1059 -run/0: instruction clear-screen/11 -run/0: {name: "c", value: 6, type: 2-4, properties: ["c": "address":"character", "deref": ]} <- copy/1 {name: " ", value: 0, type: 0, properties: [" ": "literal-string"]} -run/0: ingredient 0 is -mem/0: location 1059 is 1038 -mem/0: storing 0 in location 1038 -run/0: instruction clear-screen/12 -run/0: {name: "i", value: 4, type: 1, properties: ["i": "integer"]} <- add/2 {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is i -mem/0: location 1057 is 1 -run/0: ingredient 1 is 1 -run/0: product 0 is 2 -mem/0: storing 2 in location 1057 -run/0: instruction clear-screen/13 -run/0: loop/10 {name: "", value: -6, type: , properties: ["": ]} -run/0: ingredient 0 is -6 -run/0: jumping to instruction 8 -run/0: instruction clear-screen/8 -run/0: {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "max", value: 3, type: 1, properties: ["max": "integer"]} -run/0: ingredient 0 is i -mem/0: location 1057 is 2 -run/0: ingredient 1 is max -mem/0: location 1056 is 15 -run/0: product 0 is 0 -mem/0: storing 0 in location 1058 -run/0: instruction clear-screen/9 -run/0: break-if/11 {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 4, type: , properties: ["": ]} -mem/0: location 1058 is 0 -run/0: ingredient 0 is 0 -run/0: jump-if fell through -run/0: instruction clear-screen/10 -run/0: {name: "c", value: 6, type: 2-4, properties: ["c": "address":"character"]} <- index-address/27 {name: "buf", value: 2, type: 2-5-4, properties: ["buf": "address":"array":"character", "deref": ]}, {name: "i", value: 4, type: 1, properties: ["i": "integer"]} -run/0: ingredient 0 is buf -mem/0: location 1055 is 1036 -run/0: ingredient 1 is {name: "i", value: 4, type: 1, properties: ["i": "integer"]} -mem/0: location 1057 is 2 -run/0: address to copy is 1039 -run/0: product 0 is 1039 -mem/0: storing 1039 in location 1059 -run/0: instruction clear-screen/11 -run/0: {name: "c", value: 6, type: 2-4, properties: ["c": "address":"character", "deref": ]} <- copy/1 {name: " ", value: 0, type: 0, properties: [" ": "literal-string"]} -run/0: ingredient 0 is -mem/0: location 1059 is 1039 -mem/0: storing 0 in location 1039 -run/0: instruction clear-screen/12 -run/0: {name: "i", value: 4, type: 1, properties: ["i": "integer"]} <- add/2 {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is i -mem/0: location 1057 is 2 -run/0: ingredient 1 is 1 -run/0: product 0 is 3 -mem/0: storing 3 in location 1057 -run/0: instruction clear-screen/13 -run/0: loop/10 {name: "", value: -6, type: , properties: ["": ]} -run/0: ingredient 0 is -6 -run/0: jumping to instruction 8 -run/0: instruction clear-screen/8 -run/0: {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "max", value: 3, type: 1, properties: ["max": "integer"]} -run/0: ingredient 0 is i -mem/0: location 1057 is 3 -run/0: ingredient 1 is max -mem/0: location 1056 is 15 -run/0: product 0 is 0 -mem/0: storing 0 in location 1058 -run/0: instruction clear-screen/9 -run/0: break-if/11 {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 4, type: , properties: ["": ]} -mem/0: location 1058 is 0 -run/0: ingredient 0 is 0 -run/0: jump-if fell through -run/0: instruction clear-screen/10 -run/0: {name: "c", value: 6, type: 2-4, properties: ["c": "address":"character"]} <- index-address/27 {name: "buf", value: 2, type: 2-5-4, properties: ["buf": "address":"array":"character", "deref": ]}, {name: "i", value: 4, type: 1, properties: ["i": "integer"]} -run/0: ingredient 0 is buf -mem/0: location 1055 is 1036 -run/0: ingredient 1 is {name: "i", value: 4, type: 1, properties: ["i": "integer"]} -mem/0: location 1057 is 3 -run/0: address to copy is 1040 -run/0: product 0 is 1040 -mem/0: storing 1040 in location 1059 -run/0: instruction clear-screen/11 -run/0: {name: "c", value: 6, type: 2-4, properties: ["c": "address":"character", "deref": ]} <- copy/1 {name: " ", value: 0, type: 0, properties: [" ": "literal-string"]} -run/0: ingredient 0 is -mem/0: location 1059 is 1040 -mem/0: storing 0 in location 1040 -run/0: instruction clear-screen/12 -run/0: {name: "i", value: 4, type: 1, properties: ["i": "integer"]} <- add/2 {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is i -mem/0: location 1057 is 3 -run/0: ingredient 1 is 1 -run/0: product 0 is 4 -mem/0: storing 4 in location 1057 -run/0: instruction clear-screen/13 -run/0: loop/10 {name: "", value: -6, type: , properties: ["": ]} -run/0: ingredient 0 is -6 -run/0: jumping to instruction 8 -run/0: instruction clear-screen/8 -run/0: {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "max", value: 3, type: 1, properties: ["max": "integer"]} -run/0: ingredient 0 is i -mem/0: location 1057 is 4 -run/0: ingredient 1 is max -mem/0: location 1056 is 15 -run/0: product 0 is 0 -mem/0: storing 0 in location 1058 -run/0: instruction clear-screen/9 -run/0: break-if/11 {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 4, type: , properties: ["": ]} -mem/0: location 1058 is 0 -run/0: ingredient 0 is 0 -run/0: jump-if fell through -run/0: instruction clear-screen/10 -run/0: {name: "c", value: 6, type: 2-4, properties: ["c": "address":"character"]} <- index-address/27 {name: "buf", value: 2, type: 2-5-4, properties: ["buf": "address":"array":"character", "deref": ]}, {name: "i", value: 4, type: 1, properties: ["i": "integer"]} -run/0: ingredient 0 is buf -mem/0: location 1055 is 1036 -run/0: ingredient 1 is {name: "i", value: 4, type: 1, properties: ["i": "integer"]} -mem/0: location 1057 is 4 -run/0: address to copy is 1041 -run/0: product 0 is 1041 -mem/0: storing 1041 in location 1059 -run/0: instruction clear-screen/11 -run/0: {name: "c", value: 6, type: 2-4, properties: ["c": "address":"character", "deref": ]} <- copy/1 {name: " ", value: 0, type: 0, properties: [" ": "literal-string"]} -run/0: ingredient 0 is -mem/0: location 1059 is 1041 -mem/0: storing 0 in location 1041 -run/0: instruction clear-screen/12 -run/0: {name: "i", value: 4, type: 1, properties: ["i": "integer"]} <- add/2 {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is i -mem/0: location 1057 is 4 -run/0: ingredient 1 is 1 -run/0: product 0 is 5 -mem/0: storing 5 in location 1057 -run/0: instruction clear-screen/13 -run/0: loop/10 {name: "", value: -6, type: , properties: ["": ]} -run/0: ingredient 0 is -6 -run/0: jumping to instruction 8 -run/0: instruction clear-screen/8 -run/0: {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "max", value: 3, type: 1, properties: ["max": "integer"]} -run/0: ingredient 0 is i -mem/0: location 1057 is 5 -run/0: ingredient 1 is max -mem/0: location 1056 is 15 -run/0: product 0 is 0 -mem/0: storing 0 in location 1058 -run/0: instruction clear-screen/9 -run/0: break-if/11 {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 4, type: , properties: ["": ]} -mem/0: location 1058 is 0 -run/0: ingredient 0 is 0 -run/0: jump-if fell through -run/0: instruction clear-screen/10 -run/0: {name: "c", value: 6, type: 2-4, properties: ["c": "address":"character"]} <- index-address/27 {name: "buf", value: 2, type: 2-5-4, properties: ["buf": "address":"array":"character", "deref": ]}, {name: "i", value: 4, type: 1, properties: ["i": "integer"]} -run/0: ingredient 0 is buf -mem/0: location 1055 is 1036 -run/0: ingredient 1 is {name: "i", value: 4, type: 1, properties: ["i": "integer"]} -mem/0: location 1057 is 5 -run/0: address to copy is 1042 -run/0: product 0 is 1042 -mem/0: storing 1042 in location 1059 -run/0: instruction clear-screen/11 -run/0: {name: "c", value: 6, type: 2-4, properties: ["c": "address":"character", "deref": ]} <- copy/1 {name: " ", value: 0, type: 0, properties: [" ": "literal-string"]} -run/0: ingredient 0 is -mem/0: location 1059 is 1042 -mem/0: storing 0 in location 1042 -run/0: instruction clear-screen/12 -run/0: {name: "i", value: 4, type: 1, properties: ["i": "integer"]} <- add/2 {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is i -mem/0: location 1057 is 5 -run/0: ingredient 1 is 1 -run/0: product 0 is 6 -mem/0: storing 6 in location 1057 -run/0: instruction clear-screen/13 -run/0: loop/10 {name: "", value: -6, type: , properties: ["": ]} -run/0: ingredient 0 is -6 -run/0: jumping to instruction 8 -run/0: instruction clear-screen/8 -run/0: {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "max", value: 3, type: 1, properties: ["max": "integer"]} -run/0: ingredient 0 is i -mem/0: location 1057 is 6 -run/0: ingredient 1 is max -mem/0: location 1056 is 15 -run/0: product 0 is 0 -mem/0: storing 0 in location 1058 -run/0: instruction clear-screen/9 -run/0: break-if/11 {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 4, type: , properties: ["": ]} -mem/0: location 1058 is 0 -run/0: ingredient 0 is 0 -run/0: jump-if fell through -run/0: instruction clear-screen/10 -run/0: {name: "c", value: 6, type: 2-4, properties: ["c": "address":"character"]} <- index-address/27 {name: "buf", value: 2, type: 2-5-4, properties: ["buf": "address":"array":"character", "deref": ]}, {name: "i", value: 4, type: 1, properties: ["i": "integer"]} -run/0: ingredient 0 is buf -mem/0: location 1055 is 1036 -run/0: ingredient 1 is {name: "i", value: 4, type: 1, properties: ["i": "integer"]} -mem/0: location 1057 is 6 -run/0: address to copy is 1043 -run/0: product 0 is 1043 -mem/0: storing 1043 in location 1059 -run/0: instruction clear-screen/11 -run/0: {name: "c", value: 6, type: 2-4, properties: ["c": "address":"character", "deref": ]} <- copy/1 {name: " ", value: 0, type: 0, properties: [" ": "literal-string"]} -run/0: ingredient 0 is -mem/0: location 1059 is 1043 -mem/0: storing 0 in location 1043 -run/0: instruction clear-screen/12 -run/0: {name: "i", value: 4, type: 1, properties: ["i": "integer"]} <- add/2 {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is i -mem/0: location 1057 is 6 -run/0: ingredient 1 is 1 -run/0: product 0 is 7 -mem/0: storing 7 in location 1057 -run/0: instruction clear-screen/13 -run/0: loop/10 {name: "", value: -6, type: , properties: ["": ]} -run/0: ingredient 0 is -6 -run/0: jumping to instruction 8 -run/0: instruction clear-screen/8 -run/0: {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "max", value: 3, type: 1, properties: ["max": "integer"]} -run/0: ingredient 0 is i -mem/0: location 1057 is 7 -run/0: ingredient 1 is max -mem/0: location 1056 is 15 -run/0: product 0 is 0 -mem/0: storing 0 in location 1058 -run/0: instruction clear-screen/9 -run/0: break-if/11 {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 4, type: , properties: ["": ]} -mem/0: location 1058 is 0 -run/0: ingredient 0 is 0 -run/0: jump-if fell through -run/0: instruction clear-screen/10 -run/0: {name: "c", value: 6, type: 2-4, properties: ["c": "address":"character"]} <- index-address/27 {name: "buf", value: 2, type: 2-5-4, properties: ["buf": "address":"array":"character", "deref": ]}, {name: "i", value: 4, type: 1, properties: ["i": "integer"]} -run/0: ingredient 0 is buf -mem/0: location 1055 is 1036 -run/0: ingredient 1 is {name: "i", value: 4, type: 1, properties: ["i": "integer"]} -mem/0: location 1057 is 7 -run/0: address to copy is 1044 -run/0: product 0 is 1044 -mem/0: storing 1044 in location 1059 -run/0: instruction clear-screen/11 -run/0: {name: "c", value: 6, type: 2-4, properties: ["c": "address":"character", "deref": ]} <- copy/1 {name: " ", value: 0, type: 0, properties: [" ": "literal-string"]} -run/0: ingredient 0 is -mem/0: location 1059 is 1044 -mem/0: storing 0 in location 1044 -run/0: instruction clear-screen/12 -run/0: {name: "i", value: 4, type: 1, properties: ["i": "integer"]} <- add/2 {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is i -mem/0: location 1057 is 7 -run/0: ingredient 1 is 1 -run/0: product 0 is 8 -mem/0: storing 8 in location 1057 -run/0: instruction clear-screen/13 -run/0: loop/10 {name: "", value: -6, type: , properties: ["": ]} -run/0: ingredient 0 is -6 -run/0: jumping to instruction 8 -run/0: instruction clear-screen/8 -run/0: {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "max", value: 3, type: 1, properties: ["max": "integer"]} -run/0: ingredient 0 is i -mem/0: location 1057 is 8 -run/0: ingredient 1 is max -mem/0: location 1056 is 15 -run/0: product 0 is 0 -mem/0: storing 0 in location 1058 -run/0: instruction clear-screen/9 -run/0: break-if/11 {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 4, type: , properties: ["": ]} -mem/0: location 1058 is 0 -run/0: ingredient 0 is 0 -run/0: jump-if fell through -run/0: instruction clear-screen/10 -run/0: {name: "c", value: 6, type: 2-4, properties: ["c": "address":"character"]} <- index-address/27 {name: "buf", value: 2, type: 2-5-4, properties: ["buf": "address":"array":"character", "deref": ]}, {name: "i", value: 4, type: 1, properties: ["i": "integer"]} -run/0: ingredient 0 is buf -mem/0: location 1055 is 1036 -run/0: ingredient 1 is {name: "i", value: 4, type: 1, properties: ["i": "integer"]} -mem/0: location 1057 is 8 -run/0: address to copy is 1045 -run/0: product 0 is 1045 -mem/0: storing 1045 in location 1059 -run/0: instruction clear-screen/11 -run/0: {name: "c", value: 6, type: 2-4, properties: ["c": "address":"character", "deref": ]} <- copy/1 {name: " ", value: 0, type: 0, properties: [" ": "literal-string"]} -run/0: ingredient 0 is -mem/0: location 1059 is 1045 -mem/0: storing 0 in location 1045 -run/0: instruction clear-screen/12 -run/0: {name: "i", value: 4, type: 1, properties: ["i": "integer"]} <- add/2 {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is i -mem/0: location 1057 is 8 -run/0: ingredient 1 is 1 -run/0: product 0 is 9 -mem/0: storing 9 in location 1057 -run/0: instruction clear-screen/13 -run/0: loop/10 {name: "", value: -6, type: , properties: ["": ]} -run/0: ingredient 0 is -6 -run/0: jumping to instruction 8 -run/0: instruction clear-screen/8 -run/0: {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "max", value: 3, type: 1, properties: ["max": "integer"]} -run/0: ingredient 0 is i -mem/0: location 1057 is 9 -run/0: ingredient 1 is max -mem/0: location 1056 is 15 -run/0: product 0 is 0 -mem/0: storing 0 in location 1058 -run/0: instruction clear-screen/9 -run/0: break-if/11 {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 4, type: , properties: ["": ]} -mem/0: location 1058 is 0 -run/0: ingredient 0 is 0 -run/0: jump-if fell through -run/0: instruction clear-screen/10 -run/0: {name: "c", value: 6, type: 2-4, properties: ["c": "address":"character"]} <- index-address/27 {name: "buf", value: 2, type: 2-5-4, properties: ["buf": "address":"array":"character", "deref": ]}, {name: "i", value: 4, type: 1, properties: ["i": "integer"]} -run/0: ingredient 0 is buf -mem/0: location 1055 is 1036 -run/0: ingredient 1 is {name: "i", value: 4, type: 1, properties: ["i": "integer"]} -mem/0: location 1057 is 9 -run/0: address to copy is 1046 -run/0: product 0 is 1046 -mem/0: storing 1046 in location 1059 -run/0: instruction clear-screen/11 -run/0: {name: "c", value: 6, type: 2-4, properties: ["c": "address":"character", "deref": ]} <- copy/1 {name: " ", value: 0, type: 0, properties: [" ": "literal-string"]} -run/0: ingredient 0 is -mem/0: location 1059 is 1046 -mem/0: storing 0 in location 1046 -run/0: instruction clear-screen/12 -run/0: {name: "i", value: 4, type: 1, properties: ["i": "integer"]} <- add/2 {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is i -mem/0: location 1057 is 9 -run/0: ingredient 1 is 1 -run/0: product 0 is 10 -mem/0: storing 10 in location 1057 -run/0: instruction clear-screen/13 -run/0: loop/10 {name: "", value: -6, type: , properties: ["": ]} -run/0: ingredient 0 is -6 -run/0: jumping to instruction 8 -run/0: instruction clear-screen/8 -run/0: {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "max", value: 3, type: 1, properties: ["max": "integer"]} -run/0: ingredient 0 is i -mem/0: location 1057 is 10 -run/0: ingredient 1 is max -mem/0: location 1056 is 15 -run/0: product 0 is 0 -mem/0: storing 0 in location 1058 -run/0: instruction clear-screen/9 -run/0: break-if/11 {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 4, type: , properties: ["": ]} -mem/0: location 1058 is 0 -run/0: ingredient 0 is 0 -run/0: jump-if fell through -run/0: instruction clear-screen/10 -run/0: {name: "c", value: 6, type: 2-4, properties: ["c": "address":"character"]} <- index-address/27 {name: "buf", value: 2, type: 2-5-4, properties: ["buf": "address":"array":"character", "deref": ]}, {name: "i", value: 4, type: 1, properties: ["i": "integer"]} -run/0: ingredient 0 is buf -mem/0: location 1055 is 1036 -run/0: ingredient 1 is {name: "i", value: 4, type: 1, properties: ["i": "integer"]} -mem/0: location 1057 is 10 -run/0: address to copy is 1047 -run/0: product 0 is 1047 -mem/0: storing 1047 in location 1059 -run/0: instruction clear-screen/11 -run/0: {name: "c", value: 6, type: 2-4, properties: ["c": "address":"character", "deref": ]} <- copy/1 {name: " ", value: 0, type: 0, properties: [" ": "literal-string"]} -run/0: ingredient 0 is -mem/0: location 1059 is 1047 -mem/0: storing 0 in location 1047 -run/0: instruction clear-screen/12 -run/0: {name: "i", value: 4, type: 1, properties: ["i": "integer"]} <- add/2 {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is i -mem/0: location 1057 is 10 -run/0: ingredient 1 is 1 -run/0: product 0 is 11 -mem/0: storing 11 in location 1057 -run/0: instruction clear-screen/13 -run/0: loop/10 {name: "", value: -6, type: , properties: ["": ]} -run/0: ingredient 0 is -6 -run/0: jumping to instruction 8 -run/0: instruction clear-screen/8 -run/0: {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "max", value: 3, type: 1, properties: ["max": "integer"]} -run/0: ingredient 0 is i -mem/0: location 1057 is 11 -run/0: ingredient 1 is max -mem/0: location 1056 is 15 -run/0: product 0 is 0 -mem/0: storing 0 in location 1058 -run/0: instruction clear-screen/9 -run/0: break-if/11 {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 4, type: , properties: ["": ]} -mem/0: location 1058 is 0 -run/0: ingredient 0 is 0 -run/0: jump-if fell through -run/0: instruction clear-screen/10 -run/0: {name: "c", value: 6, type: 2-4, properties: ["c": "address":"character"]} <- index-address/27 {name: "buf", value: 2, type: 2-5-4, properties: ["buf": "address":"array":"character", "deref": ]}, {name: "i", value: 4, type: 1, properties: ["i": "integer"]} -run/0: ingredient 0 is buf -mem/0: location 1055 is 1036 -run/0: ingredient 1 is {name: "i", value: 4, type: 1, properties: ["i": "integer"]} -mem/0: location 1057 is 11 -run/0: address to copy is 1048 -run/0: product 0 is 1048 -mem/0: storing 1048 in location 1059 -run/0: instruction clear-screen/11 -run/0: {name: "c", value: 6, type: 2-4, properties: ["c": "address":"character", "deref": ]} <- copy/1 {name: " ", value: 0, type: 0, properties: [" ": "literal-string"]} -run/0: ingredient 0 is -mem/0: location 1059 is 1048 -mem/0: storing 0 in location 1048 -run/0: instruction clear-screen/12 -run/0: {name: "i", value: 4, type: 1, properties: ["i": "integer"]} <- add/2 {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is i -mem/0: location 1057 is 11 -run/0: ingredient 1 is 1 -run/0: product 0 is 12 -mem/0: storing 12 in location 1057 -run/0: instruction clear-screen/13 -run/0: loop/10 {name: "", value: -6, type: , properties: ["": ]} -run/0: ingredient 0 is -6 -run/0: jumping to instruction 8 -run/0: instruction clear-screen/8 -run/0: {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "max", value: 3, type: 1, properties: ["max": "integer"]} -run/0: ingredient 0 is i -mem/0: location 1057 is 12 -run/0: ingredient 1 is max -mem/0: location 1056 is 15 -run/0: product 0 is 0 -mem/0: storing 0 in location 1058 -run/0: instruction clear-screen/9 -run/0: break-if/11 {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 4, type: , properties: ["": ]} -mem/0: location 1058 is 0 -run/0: ingredient 0 is 0 -run/0: jump-if fell through -run/0: instruction clear-screen/10 -run/0: {name: "c", value: 6, type: 2-4, properties: ["c": "address":"character"]} <- index-address/27 {name: "buf", value: 2, type: 2-5-4, properties: ["buf": "address":"array":"character", "deref": ]}, {name: "i", value: 4, type: 1, properties: ["i": "integer"]} -run/0: ingredient 0 is buf -mem/0: location 1055 is 1036 -run/0: ingredient 1 is {name: "i", value: 4, type: 1, properties: ["i": "integer"]} -mem/0: location 1057 is 12 -run/0: address to copy is 1049 -run/0: product 0 is 1049 -mem/0: storing 1049 in location 1059 -run/0: instruction clear-screen/11 -run/0: {name: "c", value: 6, type: 2-4, properties: ["c": "address":"character", "deref": ]} <- copy/1 {name: " ", value: 0, type: 0, properties: [" ": "literal-string"]} -run/0: ingredient 0 is -mem/0: location 1059 is 1049 -mem/0: storing 0 in location 1049 -run/0: instruction clear-screen/12 -run/0: {name: "i", value: 4, type: 1, properties: ["i": "integer"]} <- add/2 {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is i -mem/0: location 1057 is 12 -run/0: ingredient 1 is 1 -run/0: product 0 is 13 -mem/0: storing 13 in location 1057 -run/0: instruction clear-screen/13 -run/0: loop/10 {name: "", value: -6, type: , properties: ["": ]} -run/0: ingredient 0 is -6 -run/0: jumping to instruction 8 -run/0: instruction clear-screen/8 -run/0: {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "max", value: 3, type: 1, properties: ["max": "integer"]} -run/0: ingredient 0 is i -mem/0: location 1057 is 13 -run/0: ingredient 1 is max -mem/0: location 1056 is 15 -run/0: product 0 is 0 -mem/0: storing 0 in location 1058 -run/0: instruction clear-screen/9 -run/0: break-if/11 {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 4, type: , properties: ["": ]} -mem/0: location 1058 is 0 -run/0: ingredient 0 is 0 -run/0: jump-if fell through -run/0: instruction clear-screen/10 -run/0: {name: "c", value: 6, type: 2-4, properties: ["c": "address":"character"]} <- index-address/27 {name: "buf", value: 2, type: 2-5-4, properties: ["buf": "address":"array":"character", "deref": ]}, {name: "i", value: 4, type: 1, properties: ["i": "integer"]} -run/0: ingredient 0 is buf -mem/0: location 1055 is 1036 -run/0: ingredient 1 is {name: "i", value: 4, type: 1, properties: ["i": "integer"]} -mem/0: location 1057 is 13 -run/0: address to copy is 1050 -run/0: product 0 is 1050 -mem/0: storing 1050 in location 1059 -run/0: instruction clear-screen/11 -run/0: {name: "c", value: 6, type: 2-4, properties: ["c": "address":"character", "deref": ]} <- copy/1 {name: " ", value: 0, type: 0, properties: [" ": "literal-string"]} -run/0: ingredient 0 is -mem/0: location 1059 is 1050 -mem/0: storing 0 in location 1050 -run/0: instruction clear-screen/12 -run/0: {name: "i", value: 4, type: 1, properties: ["i": "integer"]} <- add/2 {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is i -mem/0: location 1057 is 13 -run/0: ingredient 1 is 1 -run/0: product 0 is 14 -mem/0: storing 14 in location 1057 -run/0: instruction clear-screen/13 -run/0: loop/10 {name: "", value: -6, type: , properties: ["": ]} -run/0: ingredient 0 is -6 -run/0: jumping to instruction 8 -run/0: instruction clear-screen/8 -run/0: {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "max", value: 3, type: 1, properties: ["max": "integer"]} -run/0: ingredient 0 is i -mem/0: location 1057 is 14 -run/0: ingredient 1 is max -mem/0: location 1056 is 15 -run/0: product 0 is 0 -mem/0: storing 0 in location 1058 -run/0: instruction clear-screen/9 -run/0: break-if/11 {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 4, type: , properties: ["": ]} -mem/0: location 1058 is 0 -run/0: ingredient 0 is 0 -run/0: jump-if fell through -run/0: instruction clear-screen/10 -run/0: {name: "c", value: 6, type: 2-4, properties: ["c": "address":"character"]} <- index-address/27 {name: "buf", value: 2, type: 2-5-4, properties: ["buf": "address":"array":"character", "deref": ]}, {name: "i", value: 4, type: 1, properties: ["i": "integer"]} -run/0: ingredient 0 is buf -mem/0: location 1055 is 1036 -run/0: ingredient 1 is {name: "i", value: 4, type: 1, properties: ["i": "integer"]} -mem/0: location 1057 is 14 -run/0: address to copy is 1051 -run/0: product 0 is 1051 -mem/0: storing 1051 in location 1059 -run/0: instruction clear-screen/11 -run/0: {name: "c", value: 6, type: 2-4, properties: ["c": "address":"character", "deref": ]} <- copy/1 {name: " ", value: 0, type: 0, properties: [" ": "literal-string"]} -run/0: ingredient 0 is -mem/0: location 1059 is 1051 -mem/0: storing 0 in location 1051 -run/0: instruction clear-screen/12 -run/0: {name: "i", value: 4, type: 1, properties: ["i": "integer"]} <- add/2 {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is i -mem/0: location 1057 is 14 -run/0: ingredient 1 is 1 -run/0: product 0 is 15 -mem/0: storing 15 in location 1057 -run/0: instruction clear-screen/13 -run/0: loop/10 {name: "", value: -6, type: , properties: ["": ]} -run/0: ingredient 0 is -6 -run/0: jumping to instruction 8 -run/0: instruction clear-screen/8 -run/0: {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "max", value: 3, type: 1, properties: ["max": "integer"]} -run/0: ingredient 0 is i -mem/0: location 1057 is 15 -run/0: ingredient 1 is max -mem/0: location 1056 is 15 -run/0: product 0 is 1 -mem/0: storing 1 in location 1058 -run/0: instruction clear-screen/9 -run/0: break-if/11 {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 4, type: , properties: ["": ]} -mem/0: location 1058 is 1 -run/0: ingredient 0 is 1 -run/0: ingredient 1 is -run/0: jumping to instruction 14 -run/0: instruction clear-screen/15 -run/0: reply/33 {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen", "same-as-ingredient": "0"]} -mem/0: location 1054 is 1031 -run/0: instruction init-fake-screen/14 -run/0: reply/33 {name: "result", value: 1, type: 2-11, properties: ["result": "address":"screen"]} -mem/0: location 1002 is 1031 -run/0: result 0 is 1031 -mem/0: storing 1031 in location 900 -run/0: instruction clear-line-erases-printed-characters2/1 -run/0: run/45 {name: " - # print a character - screen:address <- print-character screen:address, 97:literal # 'a' - # move cursor to start of line - screen:address <- move-cursor screen:address, 0:literal/row, 0:literal/column - # clear line - screen:address <- clear-line screen:address - ", value: 0, type: 0, properties: [" - # print a character - screen:address <- print-character screen:address, 97:literal # 'a' - # move cursor to start of line - screen:address <- move-cursor screen:address, 0:literal/row, 0:literal/column - # clear line - screen:address <- clear-line screen:address - ": "literal-string"]} -parse/0: instruction: print-character -parse/0: ingredient: {name: "screen", value: 0, type: 2, properties: ["screen": "address"]} -parse/0: ingredient: {name: "97", value: 0, type: 0, properties: ["97": "literal"]} -parse/0: product: {name: "screen", value: 0, type: 2, properties: ["screen": "address"]} -parse/0: instruction: move-cursor -parse/0: ingredient: {name: "screen", value: 0, type: 2, properties: ["screen": "address"]} -parse/0: ingredient: {name: "0", value: 0, type: 0, properties: ["0": "literal", "row": ]} -parse/0: ingredient: {name: "0", value: 0, type: 0, properties: ["0": "literal", "column": ]} -parse/0: product: {name: "screen", value: 0, type: 2, properties: ["screen": "address"]} -parse/0: instruction: clear-line -parse/0: ingredient: {name: "screen", value: 0, type: 2, properties: ["screen": "address"]} -parse/0: product: {name: "screen", value: 0, type: 2, properties: ["screen": "address"]} -after-brace/0: recipe run1001 -after-brace/0: print-character ... -after-brace/0: move-cursor ... -after-brace/0: clear-line ... -run/0: instruction run1001/0 -run/0: {name: "screen", value: 900, type: 2, properties: ["screen": "address"]} <- print-character/117 {name: "screen", value: 900, type: 2, properties: ["screen": "address"]}, {name: "97", value: 97, type: 0, properties: ["97": "literal"]} -mem/0: location 900 is 1031 -run/0: instruction print-character/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/44 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} -mem/0: array size is 30 -mem/0: new alloc: 1083 -run/0: instruction print-character/1 -run/0: {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen"]} <- next-ingredient/30 -run/0: product 0 is 1031 -mem/0: storing 1031 in location 1085 -run/0: instruction print-character/2 -run/0: {name: "c", value: 2, type: 4, properties: ["c": "character"]} <- next-ingredient/30 -run/0: product 0 is 97 -mem/0: storing 97 in location 1086 -run/0: instruction print-character/4 -run/0: break-unless/12 {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen"]}, {name: "", value: 14, type: , properties: ["": ]} -mem/0: location 1085 is 1031 -run/0: ingredient 0 is 1031 -run/0: jump-unless fell through -run/0: instruction print-character/5 -run/0: {name: "row", value: 3, type: 2-1, properties: ["row": "address":"integer"]} <- get-address/25 {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen", "deref": ]}, {name: "cursor-row", value: 2, type: 0, properties: ["cursor-row": "offset"]} -run/0: ingredient 0 is x -mem/0: location 1085 is 1031 -run/0: ingredient 1 is cursor-row -run/0: address to copy is 1033 -run/0: product 0 is 1033 -mem/0: storing 1033 in location 1087 -run/0: instruction print-character/6 -run/0: {name: "column", value: 4, type: 2-1, properties: ["column": "address":"integer"]} <- get-address/25 {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen", "deref": ]}, {name: "cursor-column", value: 3, type: 0, properties: ["cursor-column": "offset"]} -run/0: ingredient 0 is x -mem/0: location 1085 is 1031 -run/0: ingredient 1 is cursor-column -run/0: address to copy is 1034 -run/0: product 0 is 1034 -mem/0: storing 1034 in location 1088 -run/0: instruction print-character/7 -run/0: {name: "width", value: 5, type: 1, properties: ["width": "integer"]} <- get/24 {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen", "deref": ]}, {name: "num-columns", value: 1, type: 0, properties: ["num-columns": "offset"]} -run/0: ingredient 0 is x -mem/0: location 1085 is 1031 -run/0: ingredient 1 is num-columns -run/0: address to copy is 1032 -run/0: its type is 1 -mem/0: location 1032 is 5 -run/0: product 0 is 5 -mem/0: storing 5 in location 1089 -run/0: instruction print-character/8 -run/0: {name: "index", value: 6, type: 1, properties: ["index": "integer"]} <- multiply/4 {name: "row", value: 3, type: 2-1, properties: ["row": "address":"integer", "deref": ]}, {name: "width", value: 5, type: 1, properties: ["width": "integer"]} -run/0: ingredient 0 is row -mem/0: location 1087 is 1033 -mem/0: location 1033 is 0 -run/0: ingredient 1 is width -mem/0: location 1089 is 5 -run/0: ingredient 1 is 5 -run/0: product 0 is 0 -mem/0: storing 0 in location 1090 -run/0: instruction print-character/9 -run/0: {name: "index", value: 6, type: 1, properties: ["index": "integer"]} <- add/2 {name: "index", value: 6, type: 1, properties: ["index": "integer"]}, {name: "column", value: 4, type: 2-1, properties: ["column": "address":"integer", "deref": ]} -run/0: ingredient 0 is index -mem/0: location 1090 is 0 -run/0: ingredient 1 is column -mem/0: location 1088 is 1034 -mem/0: location 1034 is 0 -run/0: product 0 is 0 -mem/0: storing 0 in location 1090 -run/0: instruction print-character/10 -run/0: {name: "buf", value: 7, type: 2-5-4, properties: ["buf": "address":"array":"character"]} <- get/24 {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen", "deref": ]}, {name: "data", value: 4, type: 0, properties: ["data": "offset"]} -run/0: ingredient 0 is x -mem/0: location 1085 is 1031 -run/0: ingredient 1 is data -run/0: address to copy is 1035 -run/0: its type is 2 -mem/0: location 1035 is 1036 -run/0: product 0 is 1036 -mem/0: storing 1036 in location 1091 -run/0: instruction print-character/11 -run/0: {name: "cursor", value: 8, type: 2-4, properties: ["cursor": "address":"character"]} <- index-address/27 {name: "buf", value: 7, type: 2-5-4, properties: ["buf": "address":"array":"character", "deref": ]}, {name: "index", value: 6, type: 1, properties: ["index": "integer"]} -run/0: ingredient 0 is buf -mem/0: location 1091 is 1036 -run/0: ingredient 1 is {name: "index", value: 6, type: 1, properties: ["index": "integer"]} -mem/0: location 1090 is 0 -run/0: address to copy is 1037 -run/0: product 0 is 1037 -mem/0: storing 1037 in location 1092 -run/0: instruction print-character/12 -run/0: {name: "cursor", value: 8, type: 2-4, properties: ["cursor": "address":"character", "deref": ]} <- copy/1 {name: "c", value: 2, type: 4, properties: ["c": "character"]} -run/0: ingredient 0 is c -mem/0: location 1086 is 97 -mem/0: location 1092 is 1037 -mem/0: storing 97 in location 1037 -run/0: instruction print-character/14 -run/0: {name: "at-right?", value: 9, type: 3, properties: ["at-right?": "boolean"]} <- equal/13 {name: "column", value: 4, type: 2-1, properties: ["column": "address":"integer", "deref": ]}, {name: "width", value: 5, type: 1, properties: ["width": "integer"]} -run/0: ingredient 0 is column -mem/0: location 1088 is 1034 -mem/0: location 1034 is 0 -run/0: ingredient 1 is width -mem/0: location 1089 is 5 -run/0: product 0 is 0 -mem/0: storing 0 in location 1093 -run/0: instruction print-character/15 -run/0: break-if/11 {name: "at-right?", value: 9, type: 3, properties: ["at-right?": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} -mem/0: location 1093 is 0 -run/0: ingredient 0 is 0 -run/0: jump-if fell through -run/0: instruction print-character/16 -run/0: {name: "column", value: 4, type: 2-1, properties: ["column": "address":"integer", "deref": ]} <- add/2 {name: "column", value: 4, type: 2-1, properties: ["column": "address":"integer", "deref": ]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is column -mem/0: location 1088 is 1034 -mem/0: location 1034 is 0 -run/0: ingredient 1 is 1 -run/0: product 0 is 1 -mem/0: location 1088 is 1034 -mem/0: storing 1 in location 1034 -run/0: instruction print-character/18 -run/0: reply/33 {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen", "same-as-ingredient": "0"]} -mem/0: location 1085 is 1031 -run/0: result 0 is 1031 -mem/0: storing 1031 in location 900 -run/0: instruction run1001/1 -run/0: {name: "screen", value: 900, type: 2, properties: ["screen": "address"]} <- move-cursor/120 {name: "screen", value: 900, type: 2, properties: ["screen": "address"]}, {name: "0", value: 0, type: 0, properties: ["0": "literal", "row": ]}, {name: "0", value: 0, type: 0, properties: ["0": "literal", "column": ]} -mem/0: location 900 is 1031 -run/0: instruction move-cursor/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/44 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} -mem/0: array size is 30 -mem/0: new alloc: 1114 -run/0: instruction move-cursor/1 -run/0: {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen"]} <- next-ingredient/30 -run/0: product 0 is 1031 -mem/0: storing 1031 in location 1116 -run/0: instruction move-cursor/2 -run/0: {name: "new-row", value: 2, type: 1, properties: ["new-row": "integer"]} <- next-ingredient/30 -run/0: product 0 is 0 -mem/0: storing 0 in location 1117 -run/0: instruction move-cursor/3 -run/0: {name: "new-column", value: 3, type: 1, properties: ["new-column": "integer"]} <- next-ingredient/30 -run/0: product 0 is 0 -mem/0: storing 0 in location 1118 -run/0: instruction move-cursor/5 -run/0: break-unless/12 {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen"]}, {name: "", value: 5, type: , properties: ["": ]} -mem/0: location 1116 is 1031 -run/0: ingredient 0 is 1031 -run/0: jump-unless fell through -run/0: instruction move-cursor/6 -run/0: {name: "row", value: 4, type: 2-1, properties: ["row": "address":"integer"]} <- get-address/25 {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen", "deref": ]}, {name: "cursor-row", value: 2, type: 0, properties: ["cursor-row": "offset"]} -run/0: ingredient 0 is x -mem/0: location 1116 is 1031 -run/0: ingredient 1 is cursor-row -run/0: address to copy is 1033 -run/0: product 0 is 1033 -mem/0: storing 1033 in location 1119 -run/0: instruction move-cursor/7 -run/0: {name: "row", value: 4, type: 2-1, properties: ["row": "address":"integer", "deref": ]} <- copy/1 {name: "new-row", value: 2, type: 1, properties: ["new-row": "integer"]} -run/0: ingredient 0 is new-row -mem/0: location 1117 is 0 -mem/0: location 1119 is 1033 -mem/0: storing 0 in location 1033 -run/0: instruction move-cursor/8 -run/0: {name: "column", value: 5, type: 2-1, properties: ["column": "address":"integer"]} <- get-address/25 {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen", "deref": ]}, {name: "cursor-column", value: 3, type: 0, properties: ["cursor-column": "offset"]} -run/0: ingredient 0 is x -mem/0: location 1116 is 1031 -run/0: ingredient 1 is cursor-column -run/0: address to copy is 1034 -run/0: product 0 is 1034 -mem/0: storing 1034 in location 1120 -run/0: instruction move-cursor/9 -run/0: {name: "column", value: 5, type: 2-1, properties: ["column": "address":"integer", "deref": ]} <- copy/1 {name: "new-column", value: 3, type: 1, properties: ["new-column": "integer"]} -run/0: ingredient 0 is new-column -mem/0: location 1118 is 0 -mem/0: location 1120 is 1034 -mem/0: storing 0 in location 1034 -run/0: instruction move-cursor/10 -run/0: reply/33 {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen", "same-as-ingredient": "0"]} -mem/0: location 1116 is 1031 -run/0: result 0 is 1031 -mem/0: storing 1031 in location 900 -run/0: instruction run1001/2 -run/0: {name: "screen", value: 900, type: 2, properties: ["screen": "address"]} <- clear-line/118 {name: "screen", value: 900, type: 2, properties: ["screen": "address"]} -mem/0: location 900 is 1031 -run/0: instruction clear-line/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/44 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} -mem/0: array size is 30 -mem/0: new alloc: 1145 -run/0: instruction clear-line/1 -run/0: {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen"]} <- next-ingredient/30 -run/0: product 0 is 1031 -mem/0: storing 1031 in location 1147 -run/0: instruction clear-line/3 -run/0: break-unless/12 {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen"]}, {name: "", value: 11, type: , properties: ["": ]} -mem/0: location 1147 is 1031 -run/0: ingredient 0 is 1031 -run/0: jump-unless fell through -run/0: instruction clear-line/4 -run/0: {name: "n", value: 2, type: 1, properties: ["n": "integer"]} <- get/24 {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen", "deref": ]}, {name: "num-columns", value: 1, type: 0, properties: ["num-columns": "offset"]} -run/0: ingredient 0 is x -mem/0: location 1147 is 1031 -run/0: ingredient 1 is num-columns -run/0: address to copy is 1032 -run/0: its type is 1 -mem/0: location 1032 is 5 -run/0: product 0 is 5 -mem/0: storing 5 in location 1148 -run/0: instruction clear-line/5 -run/0: {name: "column", value: 3, type: 2-1, properties: ["column": "address":"integer"]} <- get-address/25 {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen", "deref": ]}, {name: "cursor-column", value: 3, type: 0, properties: ["cursor-column": "offset"]} -run/0: ingredient 0 is x -mem/0: location 1147 is 1031 -run/0: ingredient 1 is cursor-column -run/0: address to copy is 1034 -run/0: product 0 is 1034 -mem/0: storing 1034 in location 1149 -run/0: instruction clear-line/6 -run/0: {name: "original-column", value: 4, type: 1, properties: ["original-column": "integer"]} <- copy/1 {name: "column", value: 3, type: 2-1, properties: ["column": "address":"integer", "deref": ]} -run/0: ingredient 0 is column -mem/0: location 1149 is 1034 -mem/0: location 1034 is 0 -mem/0: storing 0 in location 1150 -run/0: instruction clear-line/8 -run/0: {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]} <- greater-or-equal/16 {name: "column", value: 3, type: 2-1, properties: ["column": "address":"integer", "deref": ]}, {name: "n", value: 2, type: 1, properties: ["n": "integer"]} -run/0: ingredient 0 is column -mem/0: location 1149 is 1034 -mem/0: location 1034 is 0 -run/0: ingredient 1 is n -mem/0: location 1148 is 5 -run/0: product 0 is 0 -mem/0: storing 0 in location 1151 -run/0: instruction clear-line/9 -run/0: break-if/11 {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 2, type: , properties: ["": ]} -mem/0: location 1151 is 0 -run/0: ingredient 0 is 0 -run/0: jump-if fell through -run/0: instruction clear-line/10 -run/0: print-character/117 {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen"]}, {name: " ", value: 0, type: 0, properties: [" ": "literal-string"]} -mem/0: location 1147 is 1031 -run/0: instruction print-character/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/44 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} -mem/0: array size is 30 -mem/0: new alloc: 1176 -run/0: instruction print-character/1 -run/0: {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen"]} <- next-ingredient/30 -run/0: product 0 is 1031 -mem/0: storing 1031 in location 1178 -run/0: instruction print-character/2 -run/0: {name: "c", value: 2, type: 4, properties: ["c": "character"]} <- next-ingredient/30 -run/0: product 0 is 0 -mem/0: storing 0 in location 1179 -run/0: instruction print-character/4 -run/0: break-unless/12 {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen"]}, {name: "", value: 14, type: , properties: ["": ]} -mem/0: location 1178 is 1031 -run/0: ingredient 0 is 1031 -run/0: jump-unless fell through -run/0: instruction print-character/5 -run/0: {name: "row", value: 3, type: 2-1, properties: ["row": "address":"integer"]} <- get-address/25 {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen", "deref": ]}, {name: "cursor-row", value: 2, type: 0, properties: ["cursor-row": "offset"]} -run/0: ingredient 0 is x -mem/0: location 1178 is 1031 -run/0: ingredient 1 is cursor-row -run/0: address to copy is 1033 -run/0: product 0 is 1033 -mem/0: storing 1033 in location 1180 -run/0: instruction print-character/6 -run/0: {name: "column", value: 4, type: 2-1, properties: ["column": "address":"integer"]} <- get-address/25 {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen", "deref": ]}, {name: "cursor-column", value: 3, type: 0, properties: ["cursor-column": "offset"]} -run/0: ingredient 0 is x -mem/0: location 1178 is 1031 -run/0: ingredient 1 is cursor-column -run/0: address to copy is 1034 -run/0: product 0 is 1034 -mem/0: storing 1034 in location 1181 -run/0: instruction print-character/7 -run/0: {name: "width", value: 5, type: 1, properties: ["width": "integer"]} <- get/24 {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen", "deref": ]}, {name: "num-columns", value: 1, type: 0, properties: ["num-columns": "offset"]} -run/0: ingredient 0 is x -mem/0: location 1178 is 1031 -run/0: ingredient 1 is num-columns -run/0: address to copy is 1032 -run/0: its type is 1 -mem/0: location 1032 is 5 -run/0: product 0 is 5 -mem/0: storing 5 in location 1182 -run/0: instruction print-character/8 -run/0: {name: "index", value: 6, type: 1, properties: ["index": "integer"]} <- multiply/4 {name: "row", value: 3, type: 2-1, properties: ["row": "address":"integer", "deref": ]}, {name: "width", value: 5, type: 1, properties: ["width": "integer"]} -run/0: ingredient 0 is row -mem/0: location 1180 is 1033 -mem/0: location 1033 is 0 -run/0: ingredient 1 is width -mem/0: location 1182 is 5 -run/0: ingredient 1 is 5 -run/0: product 0 is 0 -mem/0: storing 0 in location 1183 -run/0: instruction print-character/9 -run/0: {name: "index", value: 6, type: 1, properties: ["index": "integer"]} <- add/2 {name: "index", value: 6, type: 1, properties: ["index": "integer"]}, {name: "column", value: 4, type: 2-1, properties: ["column": "address":"integer", "deref": ]} -run/0: ingredient 0 is index -mem/0: location 1183 is 0 -run/0: ingredient 1 is column -mem/0: location 1181 is 1034 -mem/0: location 1034 is 0 -run/0: product 0 is 0 -mem/0: storing 0 in location 1183 -run/0: instruction print-character/10 -run/0: {name: "buf", value: 7, type: 2-5-4, properties: ["buf": "address":"array":"character"]} <- get/24 {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen", "deref": ]}, {name: "data", value: 4, type: 0, properties: ["data": "offset"]} -run/0: ingredient 0 is x -mem/0: location 1178 is 1031 -run/0: ingredient 1 is data -run/0: address to copy is 1035 -run/0: its type is 2 -mem/0: location 1035 is 1036 -run/0: product 0 is 1036 -mem/0: storing 1036 in location 1184 -run/0: instruction print-character/11 -run/0: {name: "cursor", value: 8, type: 2-4, properties: ["cursor": "address":"character"]} <- index-address/27 {name: "buf", value: 7, type: 2-5-4, properties: ["buf": "address":"array":"character", "deref": ]}, {name: "index", value: 6, type: 1, properties: ["index": "integer"]} -run/0: ingredient 0 is buf -mem/0: location 1184 is 1036 -run/0: ingredient 1 is {name: "index", value: 6, type: 1, properties: ["index": "integer"]} -mem/0: location 1183 is 0 -run/0: address to copy is 1037 -run/0: product 0 is 1037 -mem/0: storing 1037 in location 1185 -run/0: instruction print-character/12 -run/0: {name: "cursor", value: 8, type: 2-4, properties: ["cursor": "address":"character", "deref": ]} <- copy/1 {name: "c", value: 2, type: 4, properties: ["c": "character"]} -run/0: ingredient 0 is c -mem/0: location 1179 is 0 -mem/0: location 1185 is 1037 -mem/0: storing 0 in location 1037 -run/0: instruction print-character/14 -run/0: {name: "at-right?", value: 9, type: 3, properties: ["at-right?": "boolean"]} <- equal/13 {name: "column", value: 4, type: 2-1, properties: ["column": "address":"integer", "deref": ]}, {name: "width", value: 5, type: 1, properties: ["width": "integer"]} -run/0: ingredient 0 is column -mem/0: location 1181 is 1034 -mem/0: location 1034 is 0 -run/0: ingredient 1 is width -mem/0: location 1182 is 5 -run/0: product 0 is 0 -mem/0: storing 0 in location 1186 -run/0: instruction print-character/15 -run/0: break-if/11 {name: "at-right?", value: 9, type: 3, properties: ["at-right?": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} -mem/0: location 1186 is 0 -run/0: ingredient 0 is 0 -run/0: jump-if fell through -run/0: instruction print-character/16 -run/0: {name: "column", value: 4, type: 2-1, properties: ["column": "address":"integer", "deref": ]} <- add/2 {name: "column", value: 4, type: 2-1, properties: ["column": "address":"integer", "deref": ]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is column -mem/0: location 1181 is 1034 -mem/0: location 1034 is 0 -run/0: ingredient 1 is 1 -run/0: product 0 is 1 -mem/0: location 1181 is 1034 -mem/0: storing 1 in location 1034 -run/0: instruction print-character/18 -run/0: reply/33 {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen", "same-as-ingredient": "0"]} -mem/0: location 1178 is 1031 -run/0: instruction clear-line/11 -run/0: loop/10 {name: "", value: -4, type: , properties: ["": ]} -run/0: ingredient 0 is -4 -run/0: jumping to instruction 8 -run/0: instruction clear-line/8 -run/0: {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]} <- greater-or-equal/16 {name: "column", value: 3, type: 2-1, properties: ["column": "address":"integer", "deref": ]}, {name: "n", value: 2, type: 1, properties: ["n": "integer"]} -run/0: ingredient 0 is column -mem/0: location 1149 is 1034 -mem/0: location 1034 is 1 -run/0: ingredient 1 is n -mem/0: location 1148 is 5 -run/0: product 0 is 0 -mem/0: storing 0 in location 1151 -run/0: instruction clear-line/9 -run/0: break-if/11 {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 2, type: , properties: ["": ]} -mem/0: location 1151 is 0 -run/0: ingredient 0 is 0 -run/0: jump-if fell through -run/0: instruction clear-line/10 -run/0: print-character/117 {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen"]}, {name: " ", value: 0, type: 0, properties: [" ": "literal-string"]} -mem/0: location 1147 is 1031 -run/0: instruction print-character/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/44 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} -mem/0: array size is 30 -mem/0: new alloc: 1207 -run/0: instruction print-character/1 -run/0: {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen"]} <- next-ingredient/30 -run/0: product 0 is 1031 -mem/0: storing 1031 in location 1209 -run/0: instruction print-character/2 -run/0: {name: "c", value: 2, type: 4, properties: ["c": "character"]} <- next-ingredient/30 -run/0: product 0 is 0 -mem/0: storing 0 in location 1210 -run/0: instruction print-character/4 -run/0: break-unless/12 {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen"]}, {name: "", value: 14, type: , properties: ["": ]} -mem/0: location 1209 is 1031 -run/0: ingredient 0 is 1031 -run/0: jump-unless fell through -run/0: instruction print-character/5 -run/0: {name: "row", value: 3, type: 2-1, properties: ["row": "address":"integer"]} <- get-address/25 {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen", "deref": ]}, {name: "cursor-row", value: 2, type: 0, properties: ["cursor-row": "offset"]} -run/0: ingredient 0 is x -mem/0: location 1209 is 1031 -run/0: ingredient 1 is cursor-row -run/0: address to copy is 1033 -run/0: product 0 is 1033 -mem/0: storing 1033 in location 1211 -run/0: instruction print-character/6 -run/0: {name: "column", value: 4, type: 2-1, properties: ["column": "address":"integer"]} <- get-address/25 {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen", "deref": ]}, {name: "cursor-column", value: 3, type: 0, properties: ["cursor-column": "offset"]} -run/0: ingredient 0 is x -mem/0: location 1209 is 1031 -run/0: ingredient 1 is cursor-column -run/0: address to copy is 1034 -run/0: product 0 is 1034 -mem/0: storing 1034 in location 1212 -run/0: instruction print-character/7 -run/0: {name: "width", value: 5, type: 1, properties: ["width": "integer"]} <- get/24 {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen", "deref": ]}, {name: "num-columns", value: 1, type: 0, properties: ["num-columns": "offset"]} -run/0: ingredient 0 is x -mem/0: location 1209 is 1031 -run/0: ingredient 1 is num-columns -run/0: address to copy is 1032 -run/0: its type is 1 -mem/0: location 1032 is 5 -run/0: product 0 is 5 -mem/0: storing 5 in location 1213 -run/0: instruction print-character/8 -run/0: {name: "index", value: 6, type: 1, properties: ["index": "integer"]} <- multiply/4 {name: "row", value: 3, type: 2-1, properties: ["row": "address":"integer", "deref": ]}, {name: "width", value: 5, type: 1, properties: ["width": "integer"]} -run/0: ingredient 0 is row -mem/0: location 1211 is 1033 -mem/0: location 1033 is 0 -run/0: ingredient 1 is width -mem/0: location 1213 is 5 -run/0: ingredient 1 is 5 -run/0: product 0 is 0 -mem/0: storing 0 in location 1214 -run/0: instruction print-character/9 -run/0: {name: "index", value: 6, type: 1, properties: ["index": "integer"]} <- add/2 {name: "index", value: 6, type: 1, properties: ["index": "integer"]}, {name: "column", value: 4, type: 2-1, properties: ["column": "address":"integer", "deref": ]} -run/0: ingredient 0 is index -mem/0: location 1214 is 0 -run/0: ingredient 1 is column -mem/0: location 1212 is 1034 -mem/0: location 1034 is 1 -run/0: product 0 is 1 -mem/0: storing 1 in location 1214 -run/0: instruction print-character/10 -run/0: {name: "buf", value: 7, type: 2-5-4, properties: ["buf": "address":"array":"character"]} <- get/24 {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen", "deref": ]}, {name: "data", value: 4, type: 0, properties: ["data": "offset"]} -run/0: ingredient 0 is x -mem/0: location 1209 is 1031 -run/0: ingredient 1 is data -run/0: address to copy is 1035 -run/0: its type is 2 -mem/0: location 1035 is 1036 -run/0: product 0 is 1036 -mem/0: storing 1036 in location 1215 -run/0: instruction print-character/11 -run/0: {name: "cursor", value: 8, type: 2-4, properties: ["cursor": "address":"character"]} <- index-address/27 {name: "buf", value: 7, type: 2-5-4, properties: ["buf": "address":"array":"character", "deref": ]}, {name: "index", value: 6, type: 1, properties: ["index": "integer"]} -run/0: ingredient 0 is buf -mem/0: location 1215 is 1036 -run/0: ingredient 1 is {name: "index", value: 6, type: 1, properties: ["index": "integer"]} -mem/0: location 1214 is 1 -run/0: address to copy is 1038 -run/0: product 0 is 1038 -mem/0: storing 1038 in location 1216 -run/0: instruction print-character/12 -run/0: {name: "cursor", value: 8, type: 2-4, properties: ["cursor": "address":"character", "deref": ]} <- copy/1 {name: "c", value: 2, type: 4, properties: ["c": "character"]} -run/0: ingredient 0 is c -mem/0: location 1210 is 0 -mem/0: location 1216 is 1038 -mem/0: storing 0 in location 1038 -run/0: instruction print-character/14 -run/0: {name: "at-right?", value: 9, type: 3, properties: ["at-right?": "boolean"]} <- equal/13 {name: "column", value: 4, type: 2-1, properties: ["column": "address":"integer", "deref": ]}, {name: "width", value: 5, type: 1, properties: ["width": "integer"]} -run/0: ingredient 0 is column -mem/0: location 1212 is 1034 -mem/0: location 1034 is 1 -run/0: ingredient 1 is width -mem/0: location 1213 is 5 -run/0: product 0 is 0 -mem/0: storing 0 in location 1217 -run/0: instruction print-character/15 -run/0: break-if/11 {name: "at-right?", value: 9, type: 3, properties: ["at-right?": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} -mem/0: location 1217 is 0 -run/0: ingredient 0 is 0 -run/0: jump-if fell through -run/0: instruction print-character/16 -run/0: {name: "column", value: 4, type: 2-1, properties: ["column": "address":"integer", "deref": ]} <- add/2 {name: "column", value: 4, type: 2-1, properties: ["column": "address":"integer", "deref": ]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is column -mem/0: location 1212 is 1034 -mem/0: location 1034 is 1 -run/0: ingredient 1 is 1 -run/0: product 0 is 2 -mem/0: location 1212 is 1034 -mem/0: storing 2 in location 1034 -run/0: instruction print-character/18 -run/0: reply/33 {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen", "same-as-ingredient": "0"]} -mem/0: location 1209 is 1031 -run/0: instruction clear-line/11 -run/0: loop/10 {name: "", value: -4, type: , properties: ["": ]} -run/0: ingredient 0 is -4 -run/0: jumping to instruction 8 -run/0: instruction clear-line/8 -run/0: {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]} <- greater-or-equal/16 {name: "column", value: 3, type: 2-1, properties: ["column": "address":"integer", "deref": ]}, {name: "n", value: 2, type: 1, properties: ["n": "integer"]} -run/0: ingredient 0 is column -mem/0: location 1149 is 1034 -mem/0: location 1034 is 2 -run/0: ingredient 1 is n -mem/0: location 1148 is 5 -run/0: product 0 is 0 -mem/0: storing 0 in location 1151 -run/0: instruction clear-line/9 -run/0: break-if/11 {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 2, type: , properties: ["": ]} -mem/0: location 1151 is 0 -run/0: ingredient 0 is 0 -run/0: jump-if fell through -run/0: instruction clear-line/10 -run/0: print-character/117 {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen"]}, {name: " ", value: 0, type: 0, properties: [" ": "literal-string"]} -mem/0: location 1147 is 1031 -run/0: instruction print-character/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/44 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} -mem/0: array size is 30 -mem/0: new alloc: 1238 -run/0: instruction print-character/1 -run/0: {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen"]} <- next-ingredient/30 -run/0: product 0 is 1031 -mem/0: storing 1031 in location 1240 -run/0: instruction print-character/2 -run/0: {name: "c", value: 2, type: 4, properties: ["c": "character"]} <- next-ingredient/30 -run/0: product 0 is 0 -mem/0: storing 0 in location 1241 -run/0: instruction print-character/4 -run/0: break-unless/12 {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen"]}, {name: "", value: 14, type: , properties: ["": ]} -mem/0: location 1240 is 1031 -run/0: ingredient 0 is 1031 -run/0: jump-unless fell through -run/0: instruction print-character/5 -run/0: {name: "row", value: 3, type: 2-1, properties: ["row": "address":"integer"]} <- get-address/25 {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen", "deref": ]}, {name: "cursor-row", value: 2, type: 0, properties: ["cursor-row": "offset"]} -run/0: ingredient 0 is x -mem/0: location 1240 is 1031 -run/0: ingredient 1 is cursor-row -run/0: address to copy is 1033 -run/0: product 0 is 1033 -mem/0: storing 1033 in location 1242 -run/0: instruction print-character/6 -run/0: {name: "column", value: 4, type: 2-1, properties: ["column": "address":"integer"]} <- get-address/25 {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen", "deref": ]}, {name: "cursor-column", value: 3, type: 0, properties: ["cursor-column": "offset"]} -run/0: ingredient 0 is x -mem/0: location 1240 is 1031 -run/0: ingredient 1 is cursor-column -run/0: address to copy is 1034 -run/0: product 0 is 1034 -mem/0: storing 1034 in location 1243 -run/0: instruction print-character/7 -run/0: {name: "width", value: 5, type: 1, properties: ["width": "integer"]} <- get/24 {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen", "deref": ]}, {name: "num-columns", value: 1, type: 0, properties: ["num-columns": "offset"]} -run/0: ingredient 0 is x -mem/0: location 1240 is 1031 -run/0: ingredient 1 is num-columns -run/0: address to copy is 1032 -run/0: its type is 1 -mem/0: location 1032 is 5 -run/0: product 0 is 5 -mem/0: storing 5 in location 1244 -run/0: instruction print-character/8 -run/0: {name: "index", value: 6, type: 1, properties: ["index": "integer"]} <- multiply/4 {name: "row", value: 3, type: 2-1, properties: ["row": "address":"integer", "deref": ]}, {name: "width", value: 5, type: 1, properties: ["width": "integer"]} -run/0: ingredient 0 is row -mem/0: location 1242 is 1033 -mem/0: location 1033 is 0 -run/0: ingredient 1 is width -mem/0: location 1244 is 5 -run/0: ingredient 1 is 5 -run/0: product 0 is 0 -mem/0: storing 0 in location 1245 -run/0: instruction print-character/9 -run/0: {name: "index", value: 6, type: 1, properties: ["index": "integer"]} <- add/2 {name: "index", value: 6, type: 1, properties: ["index": "integer"]}, {name: "column", value: 4, type: 2-1, properties: ["column": "address":"integer", "deref": ]} -run/0: ingredient 0 is index -mem/0: location 1245 is 0 -run/0: ingredient 1 is column -mem/0: location 1243 is 1034 -mem/0: location 1034 is 2 -run/0: product 0 is 2 -mem/0: storing 2 in location 1245 -run/0: instruction print-character/10 -run/0: {name: "buf", value: 7, type: 2-5-4, properties: ["buf": "address":"array":"character"]} <- get/24 {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen", "deref": ]}, {name: "data", value: 4, type: 0, properties: ["data": "offset"]} -run/0: ingredient 0 is x -mem/0: location 1240 is 1031 -run/0: ingredient 1 is data -run/0: address to copy is 1035 -run/0: its type is 2 -mem/0: location 1035 is 1036 -run/0: product 0 is 1036 -mem/0: storing 1036 in location 1246 -run/0: instruction print-character/11 -run/0: {name: "cursor", value: 8, type: 2-4, properties: ["cursor": "address":"character"]} <- index-address/27 {name: "buf", value: 7, type: 2-5-4, properties: ["buf": "address":"array":"character", "deref": ]}, {name: "index", value: 6, type: 1, properties: ["index": "integer"]} -run/0: ingredient 0 is buf -mem/0: location 1246 is 1036 -run/0: ingredient 1 is {name: "index", value: 6, type: 1, properties: ["index": "integer"]} -mem/0: location 1245 is 2 -run/0: address to copy is 1039 -run/0: product 0 is 1039 -mem/0: storing 1039 in location 1247 -run/0: instruction print-character/12 -run/0: {name: "cursor", value: 8, type: 2-4, properties: ["cursor": "address":"character", "deref": ]} <- copy/1 {name: "c", value: 2, type: 4, properties: ["c": "character"]} -run/0: ingredient 0 is c -mem/0: location 1241 is 0 -mem/0: location 1247 is 1039 -mem/0: storing 0 in location 1039 -run/0: instruction print-character/14 -run/0: {name: "at-right?", value: 9, type: 3, properties: ["at-right?": "boolean"]} <- equal/13 {name: "column", value: 4, type: 2-1, properties: ["column": "address":"integer", "deref": ]}, {name: "width", value: 5, type: 1, properties: ["width": "integer"]} -run/0: ingredient 0 is column -mem/0: location 1243 is 1034 -mem/0: location 1034 is 2 -run/0: ingredient 1 is width -mem/0: location 1244 is 5 -run/0: product 0 is 0 -mem/0: storing 0 in location 1248 -run/0: instruction print-character/15 -run/0: break-if/11 {name: "at-right?", value: 9, type: 3, properties: ["at-right?": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} -mem/0: location 1248 is 0 -run/0: ingredient 0 is 0 -run/0: jump-if fell through -run/0: instruction print-character/16 -run/0: {name: "column", value: 4, type: 2-1, properties: ["column": "address":"integer", "deref": ]} <- add/2 {name: "column", value: 4, type: 2-1, properties: ["column": "address":"integer", "deref": ]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is column -mem/0: location 1243 is 1034 -mem/0: location 1034 is 2 -run/0: ingredient 1 is 1 -run/0: product 0 is 3 -mem/0: location 1243 is 1034 -mem/0: storing 3 in location 1034 -run/0: instruction print-character/18 -run/0: reply/33 {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen", "same-as-ingredient": "0"]} -mem/0: location 1240 is 1031 -run/0: instruction clear-line/11 -run/0: loop/10 {name: "", value: -4, type: , properties: ["": ]} -run/0: ingredient 0 is -4 -run/0: jumping to instruction 8 -run/0: instruction clear-line/8 -run/0: {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]} <- greater-or-equal/16 {name: "column", value: 3, type: 2-1, properties: ["column": "address":"integer", "deref": ]}, {name: "n", value: 2, type: 1, properties: ["n": "integer"]} -run/0: ingredient 0 is column -mem/0: location 1149 is 1034 -mem/0: location 1034 is 3 -run/0: ingredient 1 is n -mem/0: location 1148 is 5 -run/0: product 0 is 0 -mem/0: storing 0 in location 1151 -run/0: instruction clear-line/9 -run/0: break-if/11 {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 2, type: , properties: ["": ]} -mem/0: location 1151 is 0 -run/0: ingredient 0 is 0 -run/0: jump-if fell through -run/0: instruction clear-line/10 -run/0: print-character/117 {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen"]}, {name: " ", value: 0, type: 0, properties: [" ": "literal-string"]} -mem/0: location 1147 is 1031 -run/0: instruction print-character/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/44 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} -mem/0: array size is 30 -mem/0: new alloc: 1269 -run/0: instruction print-character/1 -run/0: {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen"]} <- next-ingredient/30 -run/0: product 0 is 1031 -mem/0: storing 1031 in location 1271 -run/0: instruction print-character/2 -run/0: {name: "c", value: 2, type: 4, properties: ["c": "character"]} <- next-ingredient/30 -run/0: product 0 is 0 -mem/0: storing 0 in location 1272 -run/0: instruction print-character/4 -run/0: break-unless/12 {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen"]}, {name: "", value: 14, type: , properties: ["": ]} -mem/0: location 1271 is 1031 -run/0: ingredient 0 is 1031 -run/0: jump-unless fell through -run/0: instruction print-character/5 -run/0: {name: "row", value: 3, type: 2-1, properties: ["row": "address":"integer"]} <- get-address/25 {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen", "deref": ]}, {name: "cursor-row", value: 2, type: 0, properties: ["cursor-row": "offset"]} -run/0: ingredient 0 is x -mem/0: location 1271 is 1031 -run/0: ingredient 1 is cursor-row -run/0: address to copy is 1033 -run/0: product 0 is 1033 -mem/0: storing 1033 in location 1273 -run/0: instruction print-character/6 -run/0: {name: "column", value: 4, type: 2-1, properties: ["column": "address":"integer"]} <- get-address/25 {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen", "deref": ]}, {name: "cursor-column", value: 3, type: 0, properties: ["cursor-column": "offset"]} -run/0: ingredient 0 is x -mem/0: location 1271 is 1031 -run/0: ingredient 1 is cursor-column -run/0: address to copy is 1034 -run/0: product 0 is 1034 -mem/0: storing 1034 in location 1274 -run/0: instruction print-character/7 -run/0: {name: "width", value: 5, type: 1, properties: ["width": "integer"]} <- get/24 {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen", "deref": ]}, {name: "num-columns", value: 1, type: 0, properties: ["num-columns": "offset"]} -run/0: ingredient 0 is x -mem/0: location 1271 is 1031 -run/0: ingredient 1 is num-columns -run/0: address to copy is 1032 -run/0: its type is 1 -mem/0: location 1032 is 5 -run/0: product 0 is 5 -mem/0: storing 5 in location 1275 -run/0: instruction print-character/8 -run/0: {name: "index", value: 6, type: 1, properties: ["index": "integer"]} <- multiply/4 {name: "row", value: 3, type: 2-1, properties: ["row": "address":"integer", "deref": ]}, {name: "width", value: 5, type: 1, properties: ["width": "integer"]} -run/0: ingredient 0 is row -mem/0: location 1273 is 1033 -mem/0: location 1033 is 0 -run/0: ingredient 1 is width -mem/0: location 1275 is 5 -run/0: ingredient 1 is 5 -run/0: product 0 is 0 -mem/0: storing 0 in location 1276 -run/0: instruction print-character/9 -run/0: {name: "index", value: 6, type: 1, properties: ["index": "integer"]} <- add/2 {name: "index", value: 6, type: 1, properties: ["index": "integer"]}, {name: "column", value: 4, type: 2-1, properties: ["column": "address":"integer", "deref": ]} -run/0: ingredient 0 is index -mem/0: location 1276 is 0 -run/0: ingredient 1 is column -mem/0: location 1274 is 1034 -mem/0: location 1034 is 3 -run/0: product 0 is 3 -mem/0: storing 3 in location 1276 -run/0: instruction print-character/10 -run/0: {name: "buf", value: 7, type: 2-5-4, properties: ["buf": "address":"array":"character"]} <- get/24 {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen", "deref": ]}, {name: "data", value: 4, type: 0, properties: ["data": "offset"]} -run/0: ingredient 0 is x -mem/0: location 1271 is 1031 -run/0: ingredient 1 is data -run/0: address to copy is 1035 -run/0: its type is 2 -mem/0: location 1035 is 1036 -run/0: product 0 is 1036 -mem/0: storing 1036 in location 1277 -run/0: instruction print-character/11 -run/0: {name: "cursor", value: 8, type: 2-4, properties: ["cursor": "address":"character"]} <- index-address/27 {name: "buf", value: 7, type: 2-5-4, properties: ["buf": "address":"array":"character", "deref": ]}, {name: "index", value: 6, type: 1, properties: ["index": "integer"]} -run/0: ingredient 0 is buf -mem/0: location 1277 is 1036 -run/0: ingredient 1 is {name: "index", value: 6, type: 1, properties: ["index": "integer"]} -mem/0: location 1276 is 3 -run/0: address to copy is 1040 -run/0: product 0 is 1040 -mem/0: storing 1040 in location 1278 -run/0: instruction print-character/12 -run/0: {name: "cursor", value: 8, type: 2-4, properties: ["cursor": "address":"character", "deref": ]} <- copy/1 {name: "c", value: 2, type: 4, properties: ["c": "character"]} -run/0: ingredient 0 is c -mem/0: location 1272 is 0 -mem/0: location 1278 is 1040 -mem/0: storing 0 in location 1040 -run/0: instruction print-character/14 -run/0: {name: "at-right?", value: 9, type: 3, properties: ["at-right?": "boolean"]} <- equal/13 {name: "column", value: 4, type: 2-1, properties: ["column": "address":"integer", "deref": ]}, {name: "width", value: 5, type: 1, properties: ["width": "integer"]} -run/0: ingredient 0 is column -mem/0: location 1274 is 1034 -mem/0: location 1034 is 3 -run/0: ingredient 1 is width -mem/0: location 1275 is 5 -run/0: product 0 is 0 -mem/0: storing 0 in location 1279 -run/0: instruction print-character/15 -run/0: break-if/11 {name: "at-right?", value: 9, type: 3, properties: ["at-right?": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} -mem/0: location 1279 is 0 -run/0: ingredient 0 is 0 -run/0: jump-if fell through -run/0: instruction print-character/16 -run/0: {name: "column", value: 4, type: 2-1, properties: ["column": "address":"integer", "deref": ]} <- add/2 {name: "column", value: 4, type: 2-1, properties: ["column": "address":"integer", "deref": ]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is column -mem/0: location 1274 is 1034 -mem/0: location 1034 is 3 -run/0: ingredient 1 is 1 -run/0: product 0 is 4 -mem/0: location 1274 is 1034 -mem/0: storing 4 in location 1034 -run/0: instruction print-character/18 -run/0: reply/33 {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen", "same-as-ingredient": "0"]} -mem/0: location 1271 is 1031 -run/0: instruction clear-line/11 -run/0: loop/10 {name: "", value: -4, type: , properties: ["": ]} -run/0: ingredient 0 is -4 -run/0: jumping to instruction 8 -run/0: instruction clear-line/8 -run/0: {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]} <- greater-or-equal/16 {name: "column", value: 3, type: 2-1, properties: ["column": "address":"integer", "deref": ]}, {name: "n", value: 2, type: 1, properties: ["n": "integer"]} -run/0: ingredient 0 is column -mem/0: location 1149 is 1034 -mem/0: location 1034 is 4 -run/0: ingredient 1 is n -mem/0: location 1148 is 5 -run/0: product 0 is 0 -mem/0: storing 0 in location 1151 -run/0: instruction clear-line/9 -run/0: break-if/11 {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 2, type: , properties: ["": ]} -mem/0: location 1151 is 0 -run/0: ingredient 0 is 0 -run/0: jump-if fell through -run/0: instruction clear-line/10 -run/0: print-character/117 {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen"]}, {name: " ", value: 0, type: 0, properties: [" ": "literal-string"]} -mem/0: location 1147 is 1031 -run/0: instruction print-character/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/44 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} -mem/0: array size is 30 -mem/0: new alloc: 1300 -run/0: instruction print-character/1 -run/0: {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen"]} <- next-ingredient/30 -run/0: product 0 is 1031 -mem/0: storing 1031 in location 1302 -run/0: instruction print-character/2 -run/0: {name: "c", value: 2, type: 4, properties: ["c": "character"]} <- next-ingredient/30 -run/0: product 0 is 0 -mem/0: storing 0 in location 1303 -run/0: instruction print-character/4 -run/0: break-unless/12 {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen"]}, {name: "", value: 14, type: , properties: ["": ]} -mem/0: location 1302 is 1031 -run/0: ingredient 0 is 1031 -run/0: jump-unless fell through -run/0: instruction print-character/5 -run/0: {name: "row", value: 3, type: 2-1, properties: ["row": "address":"integer"]} <- get-address/25 {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen", "deref": ]}, {name: "cursor-row", value: 2, type: 0, properties: ["cursor-row": "offset"]} -run/0: ingredient 0 is x -mem/0: location 1302 is 1031 -run/0: ingredient 1 is cursor-row -run/0: address to copy is 1033 -run/0: product 0 is 1033 -mem/0: storing 1033 in location 1304 -run/0: instruction print-character/6 -run/0: {name: "column", value: 4, type: 2-1, properties: ["column": "address":"integer"]} <- get-address/25 {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen", "deref": ]}, {name: "cursor-column", value: 3, type: 0, properties: ["cursor-column": "offset"]} -run/0: ingredient 0 is x -mem/0: location 1302 is 1031 -run/0: ingredient 1 is cursor-column -run/0: address to copy is 1034 -run/0: product 0 is 1034 -mem/0: storing 1034 in location 1305 -run/0: instruction print-character/7 -run/0: {name: "width", value: 5, type: 1, properties: ["width": "integer"]} <- get/24 {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen", "deref": ]}, {name: "num-columns", value: 1, type: 0, properties: ["num-columns": "offset"]} -run/0: ingredient 0 is x -mem/0: location 1302 is 1031 -run/0: ingredient 1 is num-columns -run/0: address to copy is 1032 -run/0: its type is 1 -mem/0: location 1032 is 5 -run/0: product 0 is 5 -mem/0: storing 5 in location 1306 -run/0: instruction print-character/8 -run/0: {name: "index", value: 6, type: 1, properties: ["index": "integer"]} <- multiply/4 {name: "row", value: 3, type: 2-1, properties: ["row": "address":"integer", "deref": ]}, {name: "width", value: 5, type: 1, properties: ["width": "integer"]} -run/0: ingredient 0 is row -mem/0: location 1304 is 1033 -mem/0: location 1033 is 0 -run/0: ingredient 1 is width -mem/0: location 1306 is 5 -run/0: ingredient 1 is 5 -run/0: product 0 is 0 -mem/0: storing 0 in location 1307 -run/0: instruction print-character/9 -run/0: {name: "index", value: 6, type: 1, properties: ["index": "integer"]} <- add/2 {name: "index", value: 6, type: 1, properties: ["index": "integer"]}, {name: "column", value: 4, type: 2-1, properties: ["column": "address":"integer", "deref": ]} -run/0: ingredient 0 is index -mem/0: location 1307 is 0 -run/0: ingredient 1 is column -mem/0: location 1305 is 1034 -mem/0: location 1034 is 4 -run/0: product 0 is 4 -mem/0: storing 4 in location 1307 -run/0: instruction print-character/10 -run/0: {name: "buf", value: 7, type: 2-5-4, properties: ["buf": "address":"array":"character"]} <- get/24 {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen", "deref": ]}, {name: "data", value: 4, type: 0, properties: ["data": "offset"]} -run/0: ingredient 0 is x -mem/0: location 1302 is 1031 -run/0: ingredient 1 is data -run/0: address to copy is 1035 -run/0: its type is 2 -mem/0: location 1035 is 1036 -run/0: product 0 is 1036 -mem/0: storing 1036 in location 1308 -run/0: instruction print-character/11 -run/0: {name: "cursor", value: 8, type: 2-4, properties: ["cursor": "address":"character"]} <- index-address/27 {name: "buf", value: 7, type: 2-5-4, properties: ["buf": "address":"array":"character", "deref": ]}, {name: "index", value: 6, type: 1, properties: ["index": "integer"]} -run/0: ingredient 0 is buf -mem/0: location 1308 is 1036 -run/0: ingredient 1 is {name: "index", value: 6, type: 1, properties: ["index": "integer"]} -mem/0: location 1307 is 4 -run/0: address to copy is 1041 -run/0: product 0 is 1041 -mem/0: storing 1041 in location 1309 -run/0: instruction print-character/12 -run/0: {name: "cursor", value: 8, type: 2-4, properties: ["cursor": "address":"character", "deref": ]} <- copy/1 {name: "c", value: 2, type: 4, properties: ["c": "character"]} -run/0: ingredient 0 is c -mem/0: location 1303 is 0 -mem/0: location 1309 is 1041 -mem/0: storing 0 in location 1041 -run/0: instruction print-character/14 -run/0: {name: "at-right?", value: 9, type: 3, properties: ["at-right?": "boolean"]} <- equal/13 {name: "column", value: 4, type: 2-1, properties: ["column": "address":"integer", "deref": ]}, {name: "width", value: 5, type: 1, properties: ["width": "integer"]} -run/0: ingredient 0 is column -mem/0: location 1305 is 1034 -mem/0: location 1034 is 4 -run/0: ingredient 1 is width -mem/0: location 1306 is 5 -run/0: product 0 is 0 -mem/0: storing 0 in location 1310 -run/0: instruction print-character/15 -run/0: break-if/11 {name: "at-right?", value: 9, type: 3, properties: ["at-right?": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} -mem/0: location 1310 is 0 -run/0: ingredient 0 is 0 -run/0: jump-if fell through -run/0: instruction print-character/16 -run/0: {name: "column", value: 4, type: 2-1, properties: ["column": "address":"integer", "deref": ]} <- add/2 {name: "column", value: 4, type: 2-1, properties: ["column": "address":"integer", "deref": ]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is column -mem/0: location 1305 is 1034 -mem/0: location 1034 is 4 -run/0: ingredient 1 is 1 -run/0: product 0 is 5 -mem/0: location 1305 is 1034 -mem/0: storing 5 in location 1034 -run/0: instruction print-character/18 -run/0: reply/33 {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen", "same-as-ingredient": "0"]} -mem/0: location 1302 is 1031 -run/0: instruction clear-line/11 -run/0: loop/10 {name: "", value: -4, type: , properties: ["": ]} -run/0: ingredient 0 is -4 -run/0: jumping to instruction 8 -run/0: instruction clear-line/8 -run/0: {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]} <- greater-or-equal/16 {name: "column", value: 3, type: 2-1, properties: ["column": "address":"integer", "deref": ]}, {name: "n", value: 2, type: 1, properties: ["n": "integer"]} -run/0: ingredient 0 is column -mem/0: location 1149 is 1034 -mem/0: location 1034 is 5 -run/0: ingredient 1 is n -mem/0: location 1148 is 5 -run/0: product 0 is 1 -mem/0: storing 1 in location 1151 -run/0: instruction clear-line/9 -run/0: break-if/11 {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 2, type: , properties: ["": ]} -mem/0: location 1151 is 1 -run/0: ingredient 0 is 1 -run/0: ingredient 1 is -run/0: jumping to instruction 12 -run/0: instruction clear-line/13 -run/0: {name: "column", value: 3, type: 2-1, properties: ["column": "address":"integer", "deref": ]} <- copy/1 {name: "original-column", value: 4, type: 1, properties: ["original-column": "integer"]} -run/0: ingredient 0 is original-column -mem/0: location 1150 is 0 -mem/0: location 1149 is 1034 -mem/0: storing 0 in location 1034 -run/0: instruction clear-line/14 -run/0: reply/33 {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen", "same-as-ingredient": "0"]} -mem/0: location 1147 is 1031 -run/0: result 0 is 1031 -mem/0: storing 1031 in location 900 -run/0: instruction clear-line-erases-printed-characters2/2 -run/0: screen-should-contain/62 {name: " - . . - . . - . . - ", value: 0, type: 0, properties: [" - . . - . . - . . - ": "literal-string"]} -run/0: checking screen size at 1036 -run/0: checking location 1037 -run/0: checking location 1038 -run/0: checking location 1039 -run/0: checking location 1040 -run/0: checking location 1041 -run/0: checking location 1042 -run/0: checking location 1043 -run/0: checking location 1044 -run/0: checking location 1045 -run/0: checking location 1046 -run/0: checking location 1047 -run/0: checking location 1048 -run/0: checking location 1049 -run/0: checking location 1050 -run/0: checking location 1051 diff --git a/cpp/.traces/closure b/cpp/.traces/closure deleted file mode 100644 index dd3a750e..00000000 --- a/cpp/.traces/closure +++ /dev/null @@ -1,140 +0,0 @@ -parse/0: instruction: new -parse/0: ingredient: {name: "location", value: 0, type: 0, properties: ["location": "type"]} -parse/0: ingredient: {name: "30", value: 0, type: 0, properties: ["30": "literal"]} -parse/0: product: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} -parse/0: instruction: init-counter -parse/0: product: {name: "1", value: 0, type: 2-5-1, properties: ["1": "address":"array":"location", "names": "init-counter"]} -parse/0: instruction: increment-counter -parse/0: ingredient: {name: "1", value: 0, type: 2-5-1, properties: ["1": "address":"array":"location", "names": "init-counter"]} -parse/0: product: {name: "2", value: 0, type: 1, properties: ["2": "integer", "raw": ]} -parse/0: instruction: increment-counter -parse/0: ingredient: {name: "1", value: 0, type: 2-5-1, properties: ["1": "address":"array":"location", "names": "init-counter"]} -parse/0: product: {name: "3", value: 0, type: 1, properties: ["3": "integer", "raw": ]} -parse/0: instruction: new -parse/0: ingredient: {name: "location", value: 0, type: 0, properties: ["location": "type"]} -parse/0: ingredient: {name: "30", value: 0, type: 0, properties: ["30": "literal"]} -parse/0: product: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} -parse/0: instruction: copy -parse/0: ingredient: {name: "23", value: 0, type: 0, properties: ["23": "literal"]} -parse/0: product: {name: "x", value: 0, type: 1, properties: ["x": "integer"]} -parse/0: instruction: copy -parse/0: ingredient: {name: "3", value: 0, type: 0, properties: ["3": "literal"]} -parse/0: product: {name: "y", value: 0, type: 1, properties: ["y": "integer"]} -parse/0: instruction: reply -parse/0: ingredient: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} -parse/0: instruction: new -parse/0: ingredient: {name: "space", value: 0, type: 0, properties: ["space": "literal"]} -parse/0: ingredient: {name: "30", value: 0, type: 0, properties: ["30": "literal"]} -parse/0: product: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} -parse/0: instruction: next-ingredient -parse/0: product: {name: "0", value: 0, type: 2-5-1, properties: ["0": "address":"array":"location", "names": "init-counter"]} -parse/0: instruction: add -parse/0: ingredient: {name: "y", value: 0, type: 1, properties: ["y": "integer", "space": "1"]} -parse/0: ingredient: {name: "1", value: 0, type: 0, properties: ["1": "literal"]} -parse/0: product: {name: "y", value: 0, type: 1, properties: ["y": "integer", "space": "1"]} -parse/0: instruction: copy -parse/0: ingredient: {name: "234", value: 0, type: 0, properties: ["234": "literal"]} -parse/0: product: {name: "y", value: 0, type: 1, properties: ["y": "integer"]} -parse/0: instruction: reply -parse/0: ingredient: {name: "y", value: 0, type: 1, properties: ["y": "integer", "space": "1"]} -name/0: recipe increment-counter is surrounded by init-counter -new/0: location -> 1 -new/0: location -> 1 -name/0: assign x 1 -name/0: assign y 2 -new/0: space -> 0 -name/0: assign y 1 -after-brace/0: recipe main -after-brace/0: new ... -after-brace/0: init-counter ... -after-brace/0: increment-counter ... -after-brace/0: increment-counter ... -after-brace/0: recipe init-counter -after-brace/0: new ... -after-brace/0: copy ... -after-brace/0: copy ... -after-brace/0: reply ... -after-brace/0: recipe increment-counter -after-brace/0: new ... -after-brace/0: next-ingredient ... -after-brace/0: add ... -after-brace/0: copy ... -after-brace/0: reply ... -new/0: routine allocated memory from 1000 to 101000 -schedule/0: main -run/0: instruction main/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/44 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} -mem/0: array size is 30 -mem/0: new alloc: 1000 -run/0: instruction main/1 -run/0: {name: "1", value: 1, type: 2-5-1, properties: ["1": "address":"array":"location", "names": "init-counter"]} <- init-counter/1001 -run/0: instruction init-counter/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/44 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} -mem/0: array size is 30 -mem/0: new alloc: 1031 -run/0: instruction init-counter/1 -run/0: {name: "x", value: 1, type: 1, properties: ["x": "integer"]} <- copy/1 {name: "23", value: 23, type: 0, properties: ["23": "literal"]} -run/0: ingredient 0 is 23 -mem/0: storing 23 in location 1033 -run/0: instruction init-counter/2 -run/0: {name: "y", value: 2, type: 1, properties: ["y": "integer"]} <- copy/1 {name: "3", value: 3, type: 0, properties: ["3": "literal"]} -run/0: ingredient 0 is 3 -mem/0: storing 3 in location 1034 -run/0: instruction init-counter/3 -run/0: reply/33 {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} -run/0: result 0 is 1031 -mem/0: storing 1031 in location 1002 -run/0: instruction main/2 -run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer", "raw": ]} <- increment-counter/1002 {name: "1", value: 1, type: 2-5-1, properties: ["1": "address":"array":"location", "names": "init-counter"]} -mem/0: location 1002 is 1031 -run/0: instruction increment-counter/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/44 {name: "space", value: 0, type: 0, properties: ["space": "literal"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} -mem/0: array size is 30 -mem/0: new alloc: 1062 -run/0: instruction increment-counter/1 -run/0: {name: "0", value: 0, type: 2-5-1, properties: ["0": "address":"array":"location", "names": "init-counter"]} <- next-ingredient/30 -run/0: product 0 is 1031 -mem/0: storing 1031 in location 1063 -run/0: instruction increment-counter/2 -run/0: {name: "y", value: 2, type: 1, properties: ["y": "integer", "space": "1"]} <- add/2 {name: "y", value: 2, type: 1, properties: ["y": "integer", "space": "1"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is y -mem/0: location 1034 is 3 -run/0: ingredient 1 is 1 -run/0: product 0 is 4 -mem/0: storing 4 in location 1034 -run/0: instruction increment-counter/3 -run/0: {name: "y", value: 1, type: 1, properties: ["y": "integer"]} <- copy/1 {name: "234", value: 234, type: 0, properties: ["234": "literal"]} -run/0: ingredient 0 is 234 -mem/0: storing 234 in location 1064 -run/0: instruction increment-counter/4 -run/0: reply/33 {name: "y", value: 2, type: 1, properties: ["y": "integer", "space": "1"]} -mem/0: location 1034 is 4 -run/0: result 0 is 4 -mem/0: storing 4 in location 2 -run/0: instruction main/3 -run/0: {name: "3", value: 3, type: 1, properties: ["3": "integer", "raw": ]} <- increment-counter/1002 {name: "1", value: 1, type: 2-5-1, properties: ["1": "address":"array":"location", "names": "init-counter"]} -mem/0: location 1002 is 1031 -run/0: instruction increment-counter/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/44 {name: "space", value: 0, type: 0, properties: ["space": "literal"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} -mem/0: array size is 30 -mem/0: new alloc: 1093 -run/0: instruction increment-counter/1 -run/0: {name: "0", value: 0, type: 2-5-1, properties: ["0": "address":"array":"location", "names": "init-counter"]} <- next-ingredient/30 -run/0: product 0 is 1031 -mem/0: storing 1031 in location 1094 -run/0: instruction increment-counter/2 -run/0: {name: "y", value: 2, type: 1, properties: ["y": "integer", "space": "1"]} <- add/2 {name: "y", value: 2, type: 1, properties: ["y": "integer", "space": "1"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is y -mem/0: location 1034 is 4 -run/0: ingredient 1 is 1 -run/0: product 0 is 5 -mem/0: storing 5 in location 1034 -run/0: instruction increment-counter/3 -run/0: {name: "y", value: 1, type: 1, properties: ["y": "integer"]} <- copy/1 {name: "234", value: 234, type: 0, properties: ["234": "literal"]} -run/0: ingredient 0 is 234 -mem/0: storing 234 in location 1095 -run/0: instruction increment-counter/4 -run/0: reply/33 {name: "y", value: 2, type: 1, properties: ["y": "integer", "space": "1"]} -mem/0: location 1034 is 5 -run/0: result 0 is 5 -mem/0: storing 5 in location 3 diff --git a/cpp/.traces/container b/cpp/.traces/container deleted file mode 100644 index 4f0dac52..00000000 --- a/cpp/.traces/container +++ /dev/null @@ -1,5 +0,0 @@ -parse/0: reading container foo -parse/0: element name: x -parse/0: type: 1 -parse/0: element name: y -parse/0: type: 1 diff --git a/cpp/.traces/convert_names b/cpp/.traces/convert_names deleted file mode 100644 index 5420908d..00000000 --- a/cpp/.traces/convert_names +++ /dev/null @@ -1,12 +0,0 @@ -parse/0: instruction: copy -parse/0: ingredient: {name: "0", value: 0, type: 0, properties: ["0": "literal"]} -parse/0: product: {name: "x", value: 0, type: 1, properties: ["x": "integer"]} -name/0: assign x 1 -after-brace/0: recipe main -after-brace/0: copy ... -new/0: routine allocated memory from 1000 to 101000 -schedule/0: main -run/0: instruction main/0 -run/0: {name: "x", value: 1, type: 1, properties: ["x": "integer"]} <- copy/1 {name: "0", value: 0, type: 0, properties: ["0": "literal"]} -run/0: ingredient 0 is 0 -mem/0: storing 0 in location 1 diff --git a/cpp/.traces/convert_names_handles_containers b/cpp/.traces/convert_names_handles_containers deleted file mode 100644 index 1b50d2fb..00000000 --- a/cpp/.traces/convert_names_handles_containers +++ /dev/null @@ -1,11 +0,0 @@ -parse/0: instruction: copy -parse/0: ingredient: {name: "0", value: 0, type: 0, properties: ["0": "literal"]} -parse/0: product: {name: "a", value: 0, type: 6, properties: ["a": "point"]} -parse/0: instruction: copy -parse/0: ingredient: {name: "0", value: 0, type: 0, properties: ["0": "literal"]} -parse/0: product: {name: "b", value: 0, type: 1, properties: ["b": "integer"]} -name/0: assign a 1 -name/0: assign b 3 -after-brace/0: recipe main -after-brace/0: copy ... -after-brace/0: copy ... diff --git a/cpp/.traces/convert_names_passes_default_space b/cpp/.traces/convert_names_passes_default_space deleted file mode 100644 index 1897c72a..00000000 --- a/cpp/.traces/convert_names_passes_default_space +++ /dev/null @@ -1,12 +0,0 @@ -parse/0: instruction: copy -parse/0: ingredient: {name: "0", value: 0, type: 0, properties: ["0": "literal"]} -parse/0: product: {name: "default-space", value: 0, type: 1, properties: ["default-space": "integer"]} -parse/0: product: {name: "x", value: 0, type: 1, properties: ["x": "integer"]} -name/0: assign x 1 -after-brace/0: recipe main -after-brace/0: copy ... -new/0: routine allocated memory from 1000 to 101000 -schedule/0: main -run/0: instruction main/0 -run/0: {name: "default-space", value: 0, type: 1, properties: ["default-space": "integer"]}, {name: "x", value: 1, type: 1, properties: ["x": "integer"]} <- copy/1 {name: "0", value: 0, type: 0, properties: ["0": "literal"]} -run/0: ingredient 0 is 0 diff --git a/cpp/.traces/convert_names_passes_dummy b/cpp/.traces/convert_names_passes_dummy deleted file mode 100644 index 6a79d0a3..00000000 --- a/cpp/.traces/convert_names_passes_dummy +++ /dev/null @@ -1,12 +0,0 @@ -parse/0: instruction: copy -parse/0: ingredient: {name: "0", value: 0, type: 0, properties: ["0": "literal"]} -parse/0: product: {name: "_", value: 0, type: 0, properties: ["_": "dummy"]} -parse/0: product: {name: "x", value: 0, type: 1, properties: ["x": "integer"]} -name/0: assign x 1 -after-brace/0: recipe main -after-brace/0: copy ... -new/0: routine allocated memory from 1000 to 101000 -schedule/0: main -run/0: instruction main/0 -run/0: {name: "_", value: 0, type: 0, properties: ["_": "dummy"]}, {name: "x", value: 1, type: 1, properties: ["x": "integer"]} <- copy/1 {name: "0", value: 0, type: 0, properties: ["0": "literal"]} -run/0: ingredient 0 is 0 diff --git a/cpp/.traces/convert_names_passes_raw b/cpp/.traces/convert_names_passes_raw deleted file mode 100644 index bb1c42ae..00000000 --- a/cpp/.traces/convert_names_passes_raw +++ /dev/null @@ -1,11 +0,0 @@ -parse/0: instruction: copy -parse/0: ingredient: {name: "0", value: 0, type: 0, properties: ["0": "literal"]} -parse/0: product: {name: "x", value: 0, type: 1, properties: ["x": "integer", "raw": ]} -after-brace/0: recipe main -after-brace/0: copy ... -new/0: routine allocated memory from 1000 to 101000 -schedule/0: main -run/0: instruction main/0 -run/0: {name: "x", value: 0, type: 1, properties: ["x": "integer", "raw": ]} <- copy/1 {name: "0", value: 0, type: 0, properties: ["0": "literal"]} -run/0: ingredient 0 is 0 -mem/0: storing 0 in location 0 diff --git a/cpp/.traces/convert_names_transforms_container_elements b/cpp/.traces/convert_names_transforms_container_elements deleted file mode 100644 index 4232571c..00000000 --- a/cpp/.traces/convert_names_transforms_container_elements +++ /dev/null @@ -1,35 +0,0 @@ -parse/0: instruction: get -parse/0: ingredient: {name: "0", value: 0, type: 6, properties: ["0": "point"]} -parse/0: ingredient: {name: "y", value: 0, type: 0, properties: ["y": "offset"]} -parse/0: product: {name: "a", value: 0, type: 1, properties: ["a": "integer"]} -parse/0: instruction: get -parse/0: ingredient: {name: "0", value: 0, type: 6, properties: ["0": "point"]} -parse/0: ingredient: {name: "x", value: 0, type: 0, properties: ["x": "offset"]} -parse/0: product: {name: "b", value: 0, type: 1, properties: ["b": "integer"]} -name/0: element y of type point is at offset 1 -name/0: assign a 1 -name/0: element x of type point is at offset 0 -name/0: assign b 2 -after-brace/0: recipe main -after-brace/0: get ... -after-brace/0: get ... -new/0: routine allocated memory from 1000 to 101000 -schedule/0: main -run/0: instruction main/0 -run/0: {name: "a", value: 1, type: 1, properties: ["a": "integer"]} <- get/24 {name: "0", value: 0, type: 6, properties: ["0": "point"]}, {name: "y", value: 1, type: 0, properties: ["y": "offset"]} -run/0: ingredient 0 is 0 -run/0: ingredient 1 is y -run/0: address to copy is 1 -run/0: its type is 1 -mem/0: location 1 is 0 -run/0: product 0 is 0 -mem/0: storing 0 in location 1 -run/0: instruction main/1 -run/0: {name: "b", value: 2, type: 1, properties: ["b": "integer"]} <- get/24 {name: "0", value: 0, type: 6, properties: ["0": "point"]}, {name: "x", value: 0, type: 0, properties: ["x": "offset"]} -run/0: ingredient 0 is 0 -run/0: ingredient 1 is x -run/0: address to copy is 0 -run/0: its type is 1 -mem/0: location 0 is 0 -run/0: product 0 is 0 -mem/0: storing 0 in location 2 diff --git a/cpp/.traces/convert_names_warns b/cpp/.traces/convert_names_warns deleted file mode 100644 index 4615bbe6..00000000 --- a/cpp/.traces/convert_names_warns +++ /dev/null @@ -1,14 +0,0 @@ -parse/0: instruction: copy -parse/0: ingredient: {name: "y", value: 0, type: 1, properties: ["y": "integer"]} -parse/0: product: {name: "x", value: 0, type: 1, properties: ["x": "integer"]} -warn/0: use before set: y in main -name/0: assign x 1 -after-brace/0: recipe main -after-brace/0: copy ... -new/0: routine allocated memory from 1000 to 101000 -schedule/0: main -run/0: instruction main/0 -run/0: {name: "x", value: 1, type: 1, properties: ["x": "integer"]} <- copy/1 {name: "y", value: 0, type: 1, properties: ["y": "integer"]} -run/0: ingredient 0 is y -mem/0: location 0 is 0 -mem/0: storing 0 in location 1 diff --git a/cpp/.traces/copy b/cpp/.traces/copy deleted file mode 100644 index ce833903..00000000 --- a/cpp/.traces/copy +++ /dev/null @@ -1,20 +0,0 @@ -parse/0: instruction: copy -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: copy -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 ... -new/0: routine allocated memory from 1000 to 101000 -schedule/0: main -run/0: instruction main/0 -run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- copy/1 {name: "23", value: 23, type: 0, properties: ["23": "literal"]} -run/0: ingredient 0 is 23 -mem/0: storing 23 in location 1 -run/0: instruction main/1 -run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- copy/1 {name: "1", value: 1, type: 1, properties: ["1": "integer"]} -run/0: ingredient 0 is 1 -mem/0: location 1 is 23 -mem/0: storing 23 in location 2 diff --git a/cpp/.traces/copy_array b/cpp/.traces/copy_array deleted file mode 100644 index 00c78037..00000000 --- a/cpp/.traces/copy_array +++ /dev/null @@ -1,50 +0,0 @@ -parse/0: instruction: copy -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: copy -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: copy -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: copy -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: copy -parse/0: ingredient: {name: "1", value: 0, type: 5-1, properties: ["1": "array":"integer"]} -parse/0: product: {name: "5", value: 0, type: 5-1, properties: ["5": "array":"integer"]} -after-brace/0: recipe main -after-brace/0: copy ... -after-brace/0: copy ... -after-brace/0: copy ... -after-brace/0: copy ... -after-brace/0: copy ... -new/0: routine allocated memory from 1000 to 101000 -schedule/0: main -run/0: instruction main/0 -run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- copy/1 {name: "3", value: 3, type: 0, properties: ["3": "literal"]} -run/0: ingredient 0 is 3 -mem/0: storing 3 in location 1 -run/0: instruction main/1 -run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- copy/1 {name: "14", value: 14, type: 0, properties: ["14": "literal"]} -run/0: ingredient 0 is 14 -mem/0: storing 14 in location 2 -run/0: instruction main/2 -run/0: {name: "3", value: 3, type: 1, properties: ["3": "integer"]} <- copy/1 {name: "15", value: 15, type: 0, properties: ["15": "literal"]} -run/0: ingredient 0 is 15 -mem/0: storing 15 in location 3 -run/0: instruction main/3 -run/0: {name: "4", value: 4, type: 1, properties: ["4": "integer"]} <- copy/1 {name: "16", value: 16, type: 0, properties: ["16": "literal"]} -run/0: ingredient 0 is 16 -mem/0: storing 16 in location 4 -run/0: instruction main/4 -run/0: {name: "5", value: 5, type: 5-1, properties: ["5": "array":"integer"]} <- copy/1 {name: "1", value: 1, type: 5-1, properties: ["1": "array":"integer"]} -run/0: ingredient 0 is 1 -mem/0: location 1 is 3 -mem/0: location 2 is 14 -mem/0: location 3 is 15 -mem/0: location 4 is 16 -mem/0: storing 3 in location 5 -mem/0: storing 14 in location 6 -mem/0: storing 15 in location 7 -mem/0: storing 16 in location 8 diff --git a/cpp/.traces/copy_array_indirect b/cpp/.traces/copy_array_indirect deleted file mode 100644 index a32cbfc9..00000000 --- a/cpp/.traces/copy_array_indirect +++ /dev/null @@ -1,59 +0,0 @@ -parse/0: instruction: copy -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: copy -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: copy -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: copy -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: copy -parse/0: ingredient: {name: "1", value: 0, type: 0, properties: ["1": "literal"]} -parse/0: product: {name: "5", value: 0, type: 2-5-1, properties: ["5": "address":"array":"integer"]} -parse/0: instruction: copy -parse/0: ingredient: {name: "5", value: 0, type: 2-5-1, properties: ["5": "address":"array":"integer", "deref": ]} -parse/0: product: {name: "6", value: 0, type: 5-1, properties: ["6": "array":"integer"]} -after-brace/0: recipe main -after-brace/0: copy ... -after-brace/0: copy ... -after-brace/0: copy ... -after-brace/0: copy ... -after-brace/0: copy ... -after-brace/0: copy ... -new/0: routine allocated memory from 1000 to 101000 -schedule/0: main -run/0: instruction main/0 -run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- copy/1 {name: "3", value: 3, type: 0, properties: ["3": "literal"]} -run/0: ingredient 0 is 3 -mem/0: storing 3 in location 1 -run/0: instruction main/1 -run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- copy/1 {name: "14", value: 14, type: 0, properties: ["14": "literal"]} -run/0: ingredient 0 is 14 -mem/0: storing 14 in location 2 -run/0: instruction main/2 -run/0: {name: "3", value: 3, type: 1, properties: ["3": "integer"]} <- copy/1 {name: "15", value: 15, type: 0, properties: ["15": "literal"]} -run/0: ingredient 0 is 15 -mem/0: storing 15 in location 3 -run/0: instruction main/3 -run/0: {name: "4", value: 4, type: 1, properties: ["4": "integer"]} <- copy/1 {name: "16", value: 16, type: 0, properties: ["16": "literal"]} -run/0: ingredient 0 is 16 -mem/0: storing 16 in location 4 -run/0: instruction main/4 -run/0: {name: "5", value: 5, type: 2-5-1, properties: ["5": "address":"array":"integer"]} <- copy/1 {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is 1 -mem/0: storing 1 in location 5 -run/0: instruction main/5 -run/0: {name: "6", value: 6, type: 5-1, properties: ["6": "array":"integer"]} <- copy/1 {name: "5", value: 5, type: 2-5-1, properties: ["5": "address":"array":"integer", "deref": ]} -run/0: ingredient 0 is 5 -mem/0: location 5 is 1 -mem/0: location 1 is 3 -mem/0: location 2 is 14 -mem/0: location 3 is 15 -mem/0: location 4 is 16 -mem/0: storing 3 in location 6 -mem/0: storing 14 in location 7 -mem/0: storing 15 in location 8 -mem/0: storing 16 in location 9 diff --git a/cpp/.traces/copy_exclusive_container b/cpp/.traces/copy_exclusive_container deleted file mode 100644 index 3cc5ea54..00000000 --- a/cpp/.traces/copy_exclusive_container +++ /dev/null @@ -1,40 +0,0 @@ -parse/0: instruction: copy -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: copy -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: copy -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: copy -parse/0: ingredient: {name: "1", value: 0, type: 8, properties: ["1": "integer-or-point"]} -parse/0: product: {name: "4", value: 0, type: 8, properties: ["4": "integer-or-point"]} -after-brace/0: recipe main -after-brace/0: copy ... -after-brace/0: copy ... -after-brace/0: copy ... -after-brace/0: copy ... -new/0: routine allocated memory from 1000 to 101000 -schedule/0: main -run/0: instruction main/0 -run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- copy/1 {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is 1 -mem/0: storing 1 in location 1 -run/0: instruction main/1 -run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- copy/1 {name: "34", value: 34, type: 0, properties: ["34": "literal"]} -run/0: ingredient 0 is 34 -mem/0: storing 34 in location 2 -run/0: instruction main/2 -run/0: {name: "3", value: 3, type: 1, properties: ["3": "integer"]} <- copy/1 {name: "35", value: 35, type: 0, properties: ["35": "literal"]} -run/0: ingredient 0 is 35 -mem/0: storing 35 in location 3 -run/0: instruction main/3 -run/0: {name: "4", value: 4, type: 8, properties: ["4": "integer-or-point"]} <- copy/1 {name: "1", value: 1, type: 8, properties: ["1": "integer-or-point"]} -run/0: ingredient 0 is 1 -mem/0: location 1 is 1 -mem/0: location 2 is 34 -mem/0: location 3 is 35 -mem/0: storing 1 in location 4 -mem/0: storing 34 in location 5 -mem/0: storing 35 in location 6 diff --git a/cpp/.traces/copy_handles_nested_container_elements b/cpp/.traces/copy_handles_nested_container_elements deleted file mode 100644 index b8a57d73..00000000 --- a/cpp/.traces/copy_handles_nested_container_elements +++ /dev/null @@ -1,40 +0,0 @@ -parse/0: instruction: copy -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: copy -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: copy -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: copy -parse/0: ingredient: {name: "12", value: 0, type: 7, properties: ["12": "point-integer"]} -parse/0: product: {name: "15", value: 0, type: 7, properties: ["15": "point-integer"]} -after-brace/0: recipe main -after-brace/0: copy ... -after-brace/0: copy ... -after-brace/0: copy ... -after-brace/0: copy ... -new/0: routine allocated memory from 1000 to 101000 -schedule/0: main -run/0: instruction main/0 -run/0: {name: "12", value: 12, type: 1, properties: ["12": "integer"]} <- copy/1 {name: "34", value: 34, type: 0, properties: ["34": "literal"]} -run/0: ingredient 0 is 34 -mem/0: storing 34 in location 12 -run/0: instruction main/1 -run/0: {name: "13", value: 13, type: 1, properties: ["13": "integer"]} <- copy/1 {name: "35", value: 35, type: 0, properties: ["35": "literal"]} -run/0: ingredient 0 is 35 -mem/0: storing 35 in location 13 -run/0: instruction main/2 -run/0: {name: "14", value: 14, type: 1, properties: ["14": "integer"]} <- copy/1 {name: "36", value: 36, type: 0, properties: ["36": "literal"]} -run/0: ingredient 0 is 36 -mem/0: storing 36 in location 14 -run/0: instruction main/3 -run/0: {name: "15", value: 15, type: 7, properties: ["15": "point-integer"]} <- copy/1 {name: "12", value: 12, type: 7, properties: ["12": "point-integer"]} -run/0: ingredient 0 is 12 -mem/0: location 12 is 34 -mem/0: location 13 is 35 -mem/0: location 14 is 36 -mem/0: storing 34 in location 15 -mem/0: storing 35 in location 16 -mem/0: storing 36 in location 17 diff --git a/cpp/.traces/copy_indirect b/cpp/.traces/copy_indirect deleted file mode 100644 index 2c5ae938..00000000 --- a/cpp/.traces/copy_indirect +++ /dev/null @@ -1,29 +0,0 @@ -parse/0: instruction: copy -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: copy -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: copy -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 ... -after-brace/0: copy ... -new/0: routine allocated memory from 1000 to 101000 -schedule/0: main -run/0: instruction main/0 -run/0: {name: "1", value: 1, type: 2-1, properties: ["1": "address":"integer"]} <- copy/1 {name: "2", value: 2, type: 0, properties: ["2": "literal"]} -run/0: ingredient 0 is 2 -mem/0: storing 2 in location 1 -run/0: instruction main/1 -run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- copy/1 {name: "34", value: 34, type: 0, properties: ["34": "literal"]} -run/0: ingredient 0 is 34 -mem/0: storing 34 in location 2 -run/0: instruction main/2 -run/0: {name: "3", value: 3, type: 1, properties: ["3": "integer"]} <- copy/1 {name: "1", value: 1, type: 2-1, properties: ["1": "address":"integer", "deref": ]} -run/0: ingredient 0 is 1 -mem/0: location 1 is 2 -mem/0: location 2 is 34 -mem/0: storing 34 in location 3 diff --git a/cpp/.traces/copy_literal b/cpp/.traces/copy_literal deleted file mode 100644 index 3a25bf98..00000000 --- a/cpp/.traces/copy_literal +++ /dev/null @@ -1,11 +0,0 @@ -parse/0: instruction: copy -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 ... -new/0: routine allocated memory from 1000 to 101000 -schedule/0: main -run/0: instruction main/0 -run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- copy/1 {name: "23", value: 23, type: 0, properties: ["23": "literal"]} -run/0: ingredient 0 is 23 -mem/0: storing 23 in location 1 diff --git a/cpp/.traces/copy_multiple_locations b/cpp/.traces/copy_multiple_locations deleted file mode 100644 index 8014b483..00000000 --- a/cpp/.traces/copy_multiple_locations +++ /dev/null @@ -1,30 +0,0 @@ -parse/0: instruction: copy -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: copy -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: copy -parse/0: ingredient: {name: "1", value: 0, type: 6, properties: ["1": "point"]} -parse/0: product: {name: "3", value: 0, type: 6, properties: ["3": "point"]} -after-brace/0: recipe main -after-brace/0: copy ... -after-brace/0: copy ... -after-brace/0: copy ... -new/0: routine allocated memory from 1000 to 101000 -schedule/0: main -run/0: instruction main/0 -run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- copy/1 {name: "34", value: 34, type: 0, properties: ["34": "literal"]} -run/0: ingredient 0 is 34 -mem/0: storing 34 in location 1 -run/0: instruction main/1 -run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- copy/1 {name: "35", value: 35, type: 0, properties: ["35": "literal"]} -run/0: ingredient 0 is 35 -mem/0: storing 35 in location 2 -run/0: instruction main/2 -run/0: {name: "3", value: 3, type: 6, properties: ["3": "point"]} <- copy/1 {name: "1", value: 1, type: 6, properties: ["1": "point"]} -run/0: ingredient 0 is 1 -mem/0: location 1 is 34 -mem/0: location 2 is 35 -mem/0: storing 34 in location 3 -mem/0: storing 35 in location 4 diff --git a/cpp/.traces/deref_sidesteps_default_space b/cpp/.traces/deref_sidesteps_default_space deleted file mode 100644 index 0592d082..00000000 --- a/cpp/.traces/deref_sidesteps_default_space +++ /dev/null @@ -1,44 +0,0 @@ -parse/0: instruction: copy -parse/0: ingredient: {name: "34", value: 0, type: 0, properties: ["34": "literal"]} -parse/0: product: {name: "3", value: 0, type: 1, properties: ["3": "integer"]} -parse/0: instruction: copy -parse/0: ingredient: {name: "5", value: 0, type: 0, properties: ["5": "literal"]} -parse/0: product: {name: "1000", value: 0, type: 1, properties: ["1000": "integer"]} -parse/0: instruction: copy -parse/0: ingredient: {name: "1000", value: 0, type: 0, properties: ["1000": "literal"]} -parse/0: product: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} -parse/0: instruction: copy -parse/0: ingredient: {name: "3", value: 0, type: 0, properties: ["3": "literal"]} -parse/0: product: {name: "1", value: 0, type: 2-1, properties: ["1": "address":"integer"]} -parse/0: instruction: copy -parse/0: ingredient: {name: "1", value: 0, type: 2-1, properties: ["1": "address":"integer", "deref": ]} -parse/0: product: {name: "8", value: 0, type: 1, properties: ["8": "integer", "raw": ]} -after-brace/0: recipe main -after-brace/0: copy ... -after-brace/0: copy ... -after-brace/0: copy ... -after-brace/0: copy ... -after-brace/0: copy ... -new/0: routine allocated memory from 1000 to 101000 -schedule/0: main -run/0: instruction main/0 -run/0: {name: "3", value: 3, type: 1, properties: ["3": "integer"]} <- copy/1 {name: "34", value: 34, type: 0, properties: ["34": "literal"]} -run/0: ingredient 0 is 34 -mem/0: storing 34 in location 3 -run/0: instruction main/1 -run/0: {name: "1000", value: 1000, type: 1, properties: ["1000": "integer"]} <- copy/1 {name: "5", value: 5, type: 0, properties: ["5": "literal"]} -run/0: ingredient 0 is 5 -mem/0: storing 5 in location 1000 -run/0: instruction main/2 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- copy/1 {name: "1000", value: 1000, type: 0, properties: ["1000": "literal"]} -run/0: ingredient 0 is 1000 -run/0: instruction main/3 -run/0: {name: "1", value: 1, type: 2-1, properties: ["1": "address":"integer"]} <- copy/1 {name: "3", value: 3, type: 0, properties: ["3": "literal"]} -run/0: ingredient 0 is 3 -mem/0: storing 3 in location 1002 -run/0: instruction main/4 -run/0: {name: "8", value: 8, type: 1, properties: ["8": "integer", "raw": ]} <- copy/1 {name: "1", value: 1, type: 2-1, properties: ["1": "address":"integer", "deref": ]} -run/0: ingredient 0 is 1 -mem/0: location 1002 is 3 -mem/0: location 3 is 34 -mem/0: storing 34 in location 8 diff --git a/cpp/.traces/deref_sidesteps_default_space_in_get b/cpp/.traces/deref_sidesteps_default_space_in_get deleted file mode 100644 index c4349bca..00000000 --- a/cpp/.traces/deref_sidesteps_default_space_in_get +++ /dev/null @@ -1,57 +0,0 @@ -parse/0: instruction: copy -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: copy -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: copy -parse/0: ingredient: {name: "5", value: 0, type: 0, properties: ["5": "literal"]} -parse/0: product: {name: "1000", value: 0, type: 1, properties: ["1000": "integer"]} -parse/0: instruction: copy -parse/0: ingredient: {name: "1000", value: 0, type: 0, properties: ["1000": "literal"]} -parse/0: product: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} -parse/0: instruction: copy -parse/0: ingredient: {name: "12", value: 0, type: 0, properties: ["12": "literal"]} -parse/0: product: {name: "1", value: 0, type: 2-6, properties: ["1": "address":"point"]} -parse/0: instruction: get -parse/0: ingredient: {name: "1", value: 0, type: 2-6, properties: ["1": "address":"point", "deref": ]} -parse/0: ingredient: {name: "1", value: 0, type: 0, properties: ["1": "offset"]} -parse/0: product: {name: "9", value: 0, type: 1, properties: ["9": "integer", "raw": ]} -after-brace/0: recipe main -after-brace/0: copy ... -after-brace/0: copy ... -after-brace/0: copy ... -after-brace/0: copy ... -after-brace/0: copy ... -after-brace/0: get ... -new/0: routine allocated memory from 1000 to 101000 -schedule/0: main -run/0: instruction main/0 -run/0: {name: "12", value: 12, type: 1, properties: ["12": "integer"]} <- copy/1 {name: "34", value: 34, type: 0, properties: ["34": "literal"]} -run/0: ingredient 0 is 34 -mem/0: storing 34 in location 12 -run/0: instruction main/1 -run/0: {name: "13", value: 13, type: 1, properties: ["13": "integer"]} <- copy/1 {name: "35", value: 35, type: 0, properties: ["35": "literal"]} -run/0: ingredient 0 is 35 -mem/0: storing 35 in location 13 -run/0: instruction main/2 -run/0: {name: "1000", value: 1000, type: 1, properties: ["1000": "integer"]} <- copy/1 {name: "5", value: 5, type: 0, properties: ["5": "literal"]} -run/0: ingredient 0 is 5 -mem/0: storing 5 in location 1000 -run/0: instruction main/3 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- copy/1 {name: "1000", value: 1000, type: 0, properties: ["1000": "literal"]} -run/0: ingredient 0 is 1000 -run/0: instruction main/4 -run/0: {name: "1", value: 1, type: 2-6, properties: ["1": "address":"point"]} <- copy/1 {name: "12", value: 12, type: 0, properties: ["12": "literal"]} -run/0: ingredient 0 is 12 -mem/0: storing 12 in location 1002 -run/0: instruction main/5 -run/0: {name: "9", value: 9, type: 1, properties: ["9": "integer", "raw": ]} <- get/24 {name: "1", value: 1, type: 2-6, properties: ["1": "address":"point", "deref": ]}, {name: "1", value: 1, type: 0, properties: ["1": "offset"]} -run/0: ingredient 0 is 1 -mem/0: location 1002 is 12 -run/0: ingredient 1 is 1 -run/0: address to copy is 13 -run/0: its type is 1 -mem/0: location 13 is 35 -run/0: product 0 is 35 -mem/0: storing 35 in location 9 diff --git a/cpp/.traces/deref_sidesteps_default_space_in_index b/cpp/.traces/deref_sidesteps_default_space_in_index deleted file mode 100644 index b18fd64d..00000000 --- a/cpp/.traces/deref_sidesteps_default_space_in_index +++ /dev/null @@ -1,65 +0,0 @@ -parse/0: instruction: copy -parse/0: ingredient: {name: "2", value: 0, type: 0, properties: ["2": "literal"]} -parse/0: product: {name: "12", value: 0, type: 1, properties: ["12": "integer"]} -parse/0: instruction: copy -parse/0: ingredient: {name: "34", value: 0, type: 0, properties: ["34": "literal"]} -parse/0: product: {name: "13", value: 0, type: 1, properties: ["13": "integer"]} -parse/0: instruction: copy -parse/0: ingredient: {name: "35", value: 0, type: 0, properties: ["35": "literal"]} -parse/0: product: {name: "14", value: 0, type: 1, properties: ["14": "integer"]} -parse/0: instruction: copy -parse/0: ingredient: {name: "5", value: 0, type: 0, properties: ["5": "literal"]} -parse/0: product: {name: "1000", value: 0, type: 1, properties: ["1000": "integer"]} -parse/0: instruction: copy -parse/0: ingredient: {name: "1000", value: 0, type: 0, properties: ["1000": "literal"]} -parse/0: product: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} -parse/0: instruction: copy -parse/0: ingredient: {name: "12", value: 0, type: 0, properties: ["12": "literal"]} -parse/0: product: {name: "1", value: 0, type: 2-5-1, properties: ["1": "address":"array":"integer"]} -parse/0: instruction: index -parse/0: ingredient: {name: "1", value: 0, type: 2-5-1, properties: ["1": "address":"array":"integer", "deref": ]} -parse/0: ingredient: {name: "1", value: 0, type: 0, properties: ["1": "literal"]} -parse/0: product: {name: "9", value: 0, type: 1, properties: ["9": "integer", "raw": ]} -after-brace/0: recipe main -after-brace/0: copy ... -after-brace/0: copy ... -after-brace/0: copy ... -after-brace/0: copy ... -after-brace/0: copy ... -after-brace/0: copy ... -after-brace/0: index ... -new/0: routine allocated memory from 1000 to 101000 -schedule/0: main -run/0: instruction main/0 -run/0: {name: "12", value: 12, type: 1, properties: ["12": "integer"]} <- copy/1 {name: "2", value: 2, type: 0, properties: ["2": "literal"]} -run/0: ingredient 0 is 2 -mem/0: storing 2 in location 12 -run/0: instruction main/1 -run/0: {name: "13", value: 13, type: 1, properties: ["13": "integer"]} <- copy/1 {name: "34", value: 34, type: 0, properties: ["34": "literal"]} -run/0: ingredient 0 is 34 -mem/0: storing 34 in location 13 -run/0: instruction main/2 -run/0: {name: "14", value: 14, type: 1, properties: ["14": "integer"]} <- copy/1 {name: "35", value: 35, type: 0, properties: ["35": "literal"]} -run/0: ingredient 0 is 35 -mem/0: storing 35 in location 14 -run/0: instruction main/3 -run/0: {name: "1000", value: 1000, type: 1, properties: ["1000": "integer"]} <- copy/1 {name: "5", value: 5, type: 0, properties: ["5": "literal"]} -run/0: ingredient 0 is 5 -mem/0: storing 5 in location 1000 -run/0: instruction main/4 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- copy/1 {name: "1000", value: 1000, type: 0, properties: ["1000": "literal"]} -run/0: ingredient 0 is 1000 -run/0: instruction main/5 -run/0: {name: "1", value: 1, type: 2-5-1, properties: ["1": "address":"array":"integer"]} <- copy/1 {name: "12", value: 12, type: 0, properties: ["12": "literal"]} -run/0: ingredient 0 is 12 -mem/0: storing 12 in location 1002 -run/0: instruction main/6 -run/0: {name: "9", value: 9, type: 1, properties: ["9": "integer", "raw": ]} <- index/26 {name: "1", value: 1, type: 2-5-1, properties: ["1": "address":"array":"integer", "deref": ]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is {name: "1", value: 1, type: 2-5-1, properties: ["1": "address":"array":"integer", "deref": ]} -mem/0: location 1002 is 12 -run/0: ingredient 1 is {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: address to copy is 14 -run/0: its type is 1 -mem/0: location 14 is 35 -run/0: product 0 is 35 -mem/0: storing 35 in location 9 diff --git a/cpp/.traces/divide b/cpp/.traces/divide deleted file mode 100644 index 902b84e3..00000000 --- a/cpp/.traces/divide +++ /dev/null @@ -1,33 +0,0 @@ -parse/0: instruction: copy -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: copy -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: divide -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 ... -after-brace/0: divide ... -new/0: routine allocated memory from 1000 to 101000 -schedule/0: main -run/0: instruction main/0 -run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- copy/1 {name: "27", value: 27, type: 0, properties: ["27": "literal"]} -run/0: ingredient 0 is 27 -mem/0: storing 27 in location 1 -run/0: instruction main/1 -run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- copy/1 {name: "3", value: 3, type: 0, properties: ["3": "literal"]} -run/0: ingredient 0 is 3 -mem/0: storing 3 in location 2 -run/0: instruction main/2 -run/0: {name: "3", value: 3, type: 1, properties: ["3": "integer"]} <- divide/5 {name: "1", value: 1, type: 1, properties: ["1": "integer"]}, {name: "2", value: 2, type: 1, properties: ["2": "integer"]} -run/0: ingredient 0 is 1 -mem/0: location 1 is 27 -run/0: ingredient 1 is 2 -mem/0: location 2 is 3 -run/0: ingredient 1 is 3 -run/0: product 0 is 9 -mem/0: storing 9 in location 3 diff --git a/cpp/.traces/divide_literal b/cpp/.traces/divide_literal deleted file mode 100644 index 81ed7530..00000000 --- a/cpp/.traces/divide_literal +++ /dev/null @@ -1,15 +0,0 @@ -parse/0: instruction: divide -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 ... -new/0: routine allocated memory from 1000 to 101000 -schedule/0: main -run/0: instruction main/0 -run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- divide/5 {name: "8", value: 8, type: 0, properties: ["8": "literal"]}, {name: "2", value: 2, type: 0, properties: ["2": "literal"]} -run/0: ingredient 0 is 8 -run/0: ingredient 1 is 2 -run/0: ingredient 1 is 2 -run/0: product 0 is 4 -mem/0: storing 4 in location 1 diff --git a/cpp/.traces/divide_with_remainder b/cpp/.traces/divide_with_remainder deleted file mode 100644 index e99c8cf2..00000000 --- a/cpp/.traces/divide_with_remainder +++ /dev/null @@ -1,35 +0,0 @@ -parse/0: instruction: copy -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: copy -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: divide-with-remainder -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 ... -after-brace/0: divide-with-remainder ... -new/0: routine allocated memory from 1000 to 101000 -schedule/0: main -run/0: instruction main/0 -run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- copy/1 {name: "27", value: 27, type: 0, properties: ["27": "literal"]} -run/0: ingredient 0 is 27 -mem/0: storing 27 in location 1 -run/0: instruction main/1 -run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- copy/1 {name: "11", value: 11, type: 0, properties: ["11": "literal"]} -run/0: ingredient 0 is 11 -mem/0: storing 11 in location 2 -run/0: instruction main/2 -run/0: {name: "3", value: 3, type: 1, properties: ["3": "integer"]}, {name: "4", value: 4, type: 1, properties: ["4": "integer"]} <- divide-with-remainder/6 {name: "1", value: 1, type: 1, properties: ["1": "integer"]}, {name: "2", value: 2, type: 1, properties: ["2": "integer"]} -run/0: ingredient 0 is 1 -mem/0: location 1 is 27 -run/0: ingredient 1 is 2 -mem/0: location 2 is 11 -run/0: product 0 is 2 -mem/0: storing 2 in location 3 -run/0: product 1 is 5 -mem/0: storing 5 in location 4 diff --git a/cpp/.traces/divide_with_remainder_literal b/cpp/.traces/divide_with_remainder_literal deleted file mode 100644 index a401ee2e..00000000 --- a/cpp/.traces/divide_with_remainder_literal +++ /dev/null @@ -1,17 +0,0 @@ -parse/0: instruction: divide-with-remainder -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 ... -new/0: routine allocated memory from 1000 to 101000 -schedule/0: main -run/0: instruction main/0 -run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]}, {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- divide-with-remainder/6 {name: "9", value: 9, type: 0, properties: ["9": "literal"]}, {name: "2", value: 2, type: 0, properties: ["2": "literal"]} -run/0: ingredient 0 is 9 -run/0: ingredient 1 is 2 -run/0: product 0 is 4 -mem/0: storing 4 in location 1 -run/0: product 1 is 1 -mem/0: storing 1 in location 2 diff --git a/cpp/.traces/equal b/cpp/.traces/equal deleted file mode 100644 index 52cd0896..00000000 --- a/cpp/.traces/equal +++ /dev/null @@ -1,32 +0,0 @@ -parse/0: instruction: copy -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: copy -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: equal -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 ... -after-brace/0: equal ... -new/0: routine allocated memory from 1000 to 101000 -schedule/0: main -run/0: instruction main/0 -run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- copy/1 {name: "34", value: 34, type: 0, properties: ["34": "literal"]} -run/0: ingredient 0 is 34 -mem/0: storing 34 in location 1 -run/0: instruction main/1 -run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- copy/1 {name: "33", value: 33, type: 0, properties: ["33": "literal"]} -run/0: ingredient 0 is 33 -mem/0: storing 33 in location 2 -run/0: instruction main/2 -run/0: {name: "3", value: 3, type: 1, properties: ["3": "integer"]} <- equal/13 {name: "1", value: 1, type: 1, properties: ["1": "integer"]}, {name: "2", value: 2, type: 1, properties: ["2": "integer"]} -run/0: ingredient 0 is 1 -mem/0: location 1 is 34 -run/0: ingredient 1 is 2 -mem/0: location 2 is 33 -run/0: product 0 is 0 -mem/0: storing 0 in location 3 diff --git a/cpp/.traces/equal2 b/cpp/.traces/equal2 deleted file mode 100644 index 6d43f9f1..00000000 --- a/cpp/.traces/equal2 +++ /dev/null @@ -1,32 +0,0 @@ -parse/0: instruction: copy -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: copy -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: equal -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 ... -after-brace/0: equal ... -new/0: routine allocated memory from 1000 to 101000 -schedule/0: main -run/0: instruction main/0 -run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- copy/1 {name: "34", value: 34, type: 0, properties: ["34": "literal"]} -run/0: ingredient 0 is 34 -mem/0: storing 34 in location 1 -run/0: instruction main/1 -run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- copy/1 {name: "34", value: 34, type: 0, properties: ["34": "literal"]} -run/0: ingredient 0 is 34 -mem/0: storing 34 in location 2 -run/0: instruction main/2 -run/0: {name: "3", value: 3, type: 1, properties: ["3": "integer"]} <- equal/13 {name: "1", value: 1, type: 1, properties: ["1": "integer"]}, {name: "2", value: 2, type: 1, properties: ["2": "integer"]} -run/0: ingredient 0 is 1 -mem/0: location 1 is 34 -run/0: ingredient 1 is 2 -mem/0: location 2 is 34 -run/0: product 0 is 1 -mem/0: storing 1 in location 3 diff --git a/cpp/.traces/exclusive_container b/cpp/.traces/exclusive_container deleted file mode 100644 index ec1376fa..00000000 --- a/cpp/.traces/exclusive_container +++ /dev/null @@ -1,5 +0,0 @@ -parse/0: reading exclusive-container foo -parse/0: element name: x -parse/0: type: 1 -parse/0: element name: y -parse/0: type: 1 diff --git a/cpp/.traces/first_recipe b/cpp/.traces/first_recipe deleted file mode 100644 index 5cfc15c8..00000000 --- a/cpp/.traces/first_recipe +++ /dev/null @@ -1,3 +0,0 @@ -parse/0: instruction: copy -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/first_scenario_in_mu b/cpp/.traces/first_scenario_in_mu deleted file mode 100644 index 88e3dbe0..00000000 --- a/cpp/.traces/first_scenario_in_mu +++ /dev/null @@ -1,42 +0,0 @@ -parse/0: instruction: run -parse/0: ingredient: {name: " - 1:integer <- add 2:literal, 2:literal - ", value: 0, type: 0, properties: [" - 1:integer <- add 2:literal, 2:literal - ": "literal-string"]} -parse/0: instruction: memory-should-contain -parse/0: ingredient: {name: " - 1 <- 4 - ", value: 0, type: 0, properties: [" - 1 <- 4 - ": "literal-string"]} -after-brace/0: recipe first_scenario_in_mu -after-brace/0: run ... -after-brace/0: memory-should-contain ... -new/0: routine allocated memory from 1000 to 101000 -schedule/0: first_scenario_in_mu -run/0: instruction first_scenario_in_mu/0 -run/0: run/45 {name: " - 1:integer <- add 2:literal, 2:literal - ", value: 0, type: 0, properties: [" - 1:integer <- add 2:literal, 2:literal - ": "literal-string"]} -parse/0: instruction: add -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: "1", value: 0, type: 1, properties: ["1": "integer"]} -after-brace/0: recipe run1001 -after-brace/0: add ... -run/0: instruction run1001/0 -run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- add/2 {name: "2", value: 2, type: 0, properties: ["2": "literal"]}, {name: "2", value: 2, type: 0, properties: ["2": "literal"]} -run/0: ingredient 0 is 2 -run/0: ingredient 1 is 2 -run/0: product 0 is 4 -mem/0: storing 4 in location 1 -run/0: instruction first_scenario_in_mu/1 -run/0: memory-should-contain/46 {name: " - 1 <- 4 - ", value: 0, type: 0, properties: [" - 1 <- 4 - ": "literal-string"]} -run/0: checking location 1 diff --git a/cpp/.traces/get b/cpp/.traces/get deleted file mode 100644 index 50aab6f2..00000000 --- a/cpp/.traces/get +++ /dev/null @@ -1,33 +0,0 @@ -parse/0: instruction: copy -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: copy -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: get -parse/0: ingredient: {name: "12", value: 0, type: 6, 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 ... -after-brace/0: get ... -new/0: routine allocated memory from 1000 to 101000 -schedule/0: main -run/0: instruction main/0 -run/0: {name: "12", value: 12, type: 1, properties: ["12": "integer"]} <- copy/1 {name: "34", value: 34, type: 0, properties: ["34": "literal"]} -run/0: ingredient 0 is 34 -mem/0: storing 34 in location 12 -run/0: instruction main/1 -run/0: {name: "13", value: 13, type: 1, properties: ["13": "integer"]} <- copy/1 {name: "35", value: 35, type: 0, properties: ["35": "literal"]} -run/0: ingredient 0 is 35 -mem/0: storing 35 in location 13 -run/0: instruction main/2 -run/0: {name: "15", value: 15, type: 1, properties: ["15": "integer"]} <- get/24 {name: "12", value: 12, type: 6, properties: ["12": "point"]}, {name: "1", value: 1, type: 0, properties: ["1": "offset"]} -run/0: ingredient 0 is 12 -run/0: ingredient 1 is 1 -run/0: address to copy is 13 -run/0: its type is 1 -mem/0: location 13 is 35 -run/0: product 0 is 35 -mem/0: storing 35 in location 15 diff --git a/cpp/.traces/get_address b/cpp/.traces/get_address deleted file mode 100644 index 7182ed20..00000000 --- a/cpp/.traces/get_address +++ /dev/null @@ -1,31 +0,0 @@ -parse/0: instruction: copy -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: copy -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: get-address -parse/0: ingredient: {name: "12", value: 0, type: 6, 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 ... -after-brace/0: get-address ... -new/0: routine allocated memory from 1000 to 101000 -schedule/0: main -run/0: instruction main/0 -run/0: {name: "12", value: 12, type: 1, properties: ["12": "integer"]} <- copy/1 {name: "34", value: 34, type: 0, properties: ["34": "literal"]} -run/0: ingredient 0 is 34 -mem/0: storing 34 in location 12 -run/0: instruction main/1 -run/0: {name: "13", value: 13, type: 1, properties: ["13": "integer"]} <- copy/1 {name: "35", value: 35, type: 0, properties: ["35": "literal"]} -run/0: ingredient 0 is 35 -mem/0: storing 35 in location 13 -run/0: instruction main/2 -run/0: {name: "15", value: 15, type: 2-1, properties: ["15": "address":"integer"]} <- get-address/25 {name: "12", value: 12, type: 6, properties: ["12": "point"]}, {name: "1", value: 1, type: 0, properties: ["1": "offset"]} -run/0: ingredient 0 is 12 -run/0: ingredient 1 is 1 -run/0: address to copy is 13 -run/0: product 0 is 13 -mem/0: storing 13 in location 15 diff --git a/cpp/.traces/get_address_indirect b/cpp/.traces/get_address_indirect deleted file mode 100644 index e8c3c850..00000000 --- a/cpp/.traces/get_address_indirect +++ /dev/null @@ -1,40 +0,0 @@ -parse/0: instruction: copy -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: copy -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: copy -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: get-address -parse/0: ingredient: {name: "1", value: 0, type: 2-6, properties: ["1": "address":"point", "deref": ]} -parse/0: ingredient: {name: "0", value: 0, type: 0, properties: ["0": "offset"]} -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 ... -after-brace/0: copy ... -after-brace/0: get-address ... -new/0: routine allocated memory from 1000 to 101000 -schedule/0: main -run/0: instruction main/0 -run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- copy/1 {name: "2", value: 2, type: 0, properties: ["2": "literal"]} -run/0: ingredient 0 is 2 -mem/0: storing 2 in location 1 -run/0: instruction main/1 -run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- copy/1 {name: "34", value: 34, type: 0, properties: ["34": "literal"]} -run/0: ingredient 0 is 34 -mem/0: storing 34 in location 2 -run/0: instruction main/2 -run/0: {name: "3", value: 3, type: 1, properties: ["3": "integer"]} <- copy/1 {name: "35", value: 35, type: 0, properties: ["35": "literal"]} -run/0: ingredient 0 is 35 -mem/0: storing 35 in location 3 -run/0: instruction main/3 -run/0: {name: "4", value: 4, type: 1, properties: ["4": "integer"]} <- get-address/25 {name: "1", value: 1, type: 2-6, properties: ["1": "address":"point", "deref": ]}, {name: "0", value: 0, type: 0, properties: ["0": "offset"]} -run/0: ingredient 0 is 1 -mem/0: location 1 is 2 -run/0: ingredient 1 is 0 -run/0: address to copy is 2 -run/0: product 0 is 2 -mem/0: storing 2 in location 4 diff --git a/cpp/.traces/get_default_space b/cpp/.traces/get_default_space deleted file mode 100644 index bb513849..00000000 --- a/cpp/.traces/get_default_space +++ /dev/null @@ -1,18 +0,0 @@ -parse/0: instruction: copy -parse/0: ingredient: {name: "10", value: 0, type: 0, properties: ["10": "literal"]} -parse/0: product: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} -parse/0: instruction: copy -parse/0: ingredient: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} -parse/0: product: {name: "1", value: 0, type: 1, properties: ["1": "integer", "raw": ]} -after-brace/0: recipe main -after-brace/0: copy ... -after-brace/0: copy ... -new/0: routine allocated memory from 1000 to 101000 -schedule/0: main -run/0: instruction main/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- copy/1 {name: "10", value: 10, type: 0, properties: ["10": "literal"]} -run/0: ingredient 0 is 10 -run/0: instruction main/1 -run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer", "raw": ]} <- copy/1 {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} -run/0: ingredient 0 is default-space -mem/0: storing 10 in location 1 diff --git a/cpp/.traces/get_handles_nested_container_elements b/cpp/.traces/get_handles_nested_container_elements deleted file mode 100644 index 6ff45ce2..00000000 --- a/cpp/.traces/get_handles_nested_container_elements +++ /dev/null @@ -1,41 +0,0 @@ -parse/0: instruction: copy -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: copy -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: copy -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: get -parse/0: ingredient: {name: "12", value: 0, type: 7, 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 ... -after-brace/0: copy ... -after-brace/0: get ... -new/0: routine allocated memory from 1000 to 101000 -schedule/0: main -run/0: instruction main/0 -run/0: {name: "12", value: 12, type: 1, properties: ["12": "integer"]} <- copy/1 {name: "34", value: 34, type: 0, properties: ["34": "literal"]} -run/0: ingredient 0 is 34 -mem/0: storing 34 in location 12 -run/0: instruction main/1 -run/0: {name: "13", value: 13, type: 1, properties: ["13": "integer"]} <- copy/1 {name: "35", value: 35, type: 0, properties: ["35": "literal"]} -run/0: ingredient 0 is 35 -mem/0: storing 35 in location 13 -run/0: instruction main/2 -run/0: {name: "14", value: 14, type: 1, properties: ["14": "integer"]} <- copy/1 {name: "36", value: 36, type: 0, properties: ["36": "literal"]} -run/0: ingredient 0 is 36 -mem/0: storing 36 in location 14 -run/0: instruction main/3 -run/0: {name: "15", value: 15, type: 1, properties: ["15": "integer"]} <- get/24 {name: "12", value: 12, type: 7, properties: ["12": "point-integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "offset"]} -run/0: ingredient 0 is 12 -run/0: ingredient 1 is 1 -run/0: address to copy is 14 -run/0: its type is 1 -mem/0: location 14 is 36 -run/0: product 0 is 36 -mem/0: storing 36 in location 15 diff --git a/cpp/.traces/get_indirect b/cpp/.traces/get_indirect deleted file mode 100644 index 3d176c0c..00000000 --- a/cpp/.traces/get_indirect +++ /dev/null @@ -1,42 +0,0 @@ -parse/0: instruction: copy -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: copy -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: copy -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: get -parse/0: ingredient: {name: "1", value: 0, type: 2-6, properties: ["1": "address":"point", "deref": ]} -parse/0: ingredient: {name: "0", value: 0, type: 0, properties: ["0": "offset"]} -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 ... -after-brace/0: copy ... -after-brace/0: get ... -new/0: routine allocated memory from 1000 to 101000 -schedule/0: main -run/0: instruction main/0 -run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- copy/1 {name: "2", value: 2, type: 0, properties: ["2": "literal"]} -run/0: ingredient 0 is 2 -mem/0: storing 2 in location 1 -run/0: instruction main/1 -run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- copy/1 {name: "34", value: 34, type: 0, properties: ["34": "literal"]} -run/0: ingredient 0 is 34 -mem/0: storing 34 in location 2 -run/0: instruction main/2 -run/0: {name: "3", value: 3, type: 1, properties: ["3": "integer"]} <- copy/1 {name: "35", value: 35, type: 0, properties: ["35": "literal"]} -run/0: ingredient 0 is 35 -mem/0: storing 35 in location 3 -run/0: instruction main/3 -run/0: {name: "4", value: 4, type: 1, properties: ["4": "integer"]} <- get/24 {name: "1", value: 1, type: 2-6, properties: ["1": "address":"point", "deref": ]}, {name: "0", value: 0, type: 0, properties: ["0": "offset"]} -run/0: ingredient 0 is 1 -mem/0: location 1 is 2 -run/0: ingredient 1 is 0 -run/0: address to copy is 2 -run/0: its type is 1 -mem/0: location 2 is 34 -run/0: product 0 is 34 -mem/0: storing 34 in location 4 diff --git a/cpp/.traces/greater_or_equal b/cpp/.traces/greater_or_equal deleted file mode 100644 index b03df27c..00000000 --- a/cpp/.traces/greater_or_equal +++ /dev/null @@ -1,32 +0,0 @@ -parse/0: instruction: copy -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: copy -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: greater-or-equal -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 ... -after-brace/0: greater-or-equal ... -new/0: routine allocated memory from 1000 to 101000 -schedule/0: main -run/0: instruction main/0 -run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- copy/1 {name: "34", value: 34, type: 0, properties: ["34": "literal"]} -run/0: ingredient 0 is 34 -mem/0: storing 34 in location 1 -run/0: instruction main/1 -run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- copy/1 {name: "33", value: 33, type: 0, properties: ["33": "literal"]} -run/0: ingredient 0 is 33 -mem/0: storing 33 in location 2 -run/0: instruction main/2 -run/0: {name: "3", value: 3, type: 1, properties: ["3": "integer"]} <- greater-or-equal/16 {name: "1", value: 1, type: 1, properties: ["1": "integer"]}, {name: "2", value: 2, type: 1, properties: ["2": "integer"]} -run/0: ingredient 0 is 1 -mem/0: location 1 is 34 -run/0: ingredient 1 is 2 -mem/0: location 2 is 33 -run/0: product 0 is 1 -mem/0: storing 1 in location 3 diff --git a/cpp/.traces/greater_or_equal2 b/cpp/.traces/greater_or_equal2 deleted file mode 100644 index 6cc4e076..00000000 --- a/cpp/.traces/greater_or_equal2 +++ /dev/null @@ -1,32 +0,0 @@ -parse/0: instruction: copy -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: copy -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: greater-or-equal -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 ... -after-brace/0: greater-or-equal ... -new/0: routine allocated memory from 1000 to 101000 -schedule/0: main -run/0: instruction main/0 -run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- copy/1 {name: "34", value: 34, type: 0, properties: ["34": "literal"]} -run/0: ingredient 0 is 34 -mem/0: storing 34 in location 1 -run/0: instruction main/1 -run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- copy/1 {name: "34", value: 34, type: 0, properties: ["34": "literal"]} -run/0: ingredient 0 is 34 -mem/0: storing 34 in location 2 -run/0: instruction main/2 -run/0: {name: "3", value: 3, type: 1, properties: ["3": "integer"]} <- greater-or-equal/16 {name: "1", value: 1, type: 1, properties: ["1": "integer"]}, {name: "2", value: 2, type: 1, properties: ["2": "integer"]} -run/0: ingredient 0 is 1 -mem/0: location 1 is 34 -run/0: ingredient 1 is 2 -mem/0: location 2 is 34 -run/0: product 0 is 1 -mem/0: storing 1 in location 3 diff --git a/cpp/.traces/greater_or_equal3 b/cpp/.traces/greater_or_equal3 deleted file mode 100644 index aa0e7f60..00000000 --- a/cpp/.traces/greater_or_equal3 +++ /dev/null @@ -1,32 +0,0 @@ -parse/0: instruction: copy -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: copy -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: greater-or-equal -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 ... -after-brace/0: greater-or-equal ... -new/0: routine allocated memory from 1000 to 101000 -schedule/0: main -run/0: instruction main/0 -run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- copy/1 {name: "34", value: 34, type: 0, properties: ["34": "literal"]} -run/0: ingredient 0 is 34 -mem/0: storing 34 in location 1 -run/0: instruction main/1 -run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- copy/1 {name: "35", value: 35, type: 0, properties: ["35": "literal"]} -run/0: ingredient 0 is 35 -mem/0: storing 35 in location 2 -run/0: instruction main/2 -run/0: {name: "3", value: 3, type: 1, properties: ["3": "integer"]} <- greater-or-equal/16 {name: "1", value: 1, type: 1, properties: ["1": "integer"]}, {name: "2", value: 2, type: 1, properties: ["2": "integer"]} -run/0: ingredient 0 is 1 -mem/0: location 1 is 34 -run/0: ingredient 1 is 2 -mem/0: location 2 is 35 -run/0: product 0 is 0 -mem/0: storing 0 in location 3 diff --git a/cpp/.traces/greater_than b/cpp/.traces/greater_than deleted file mode 100644 index 1a56cb8b..00000000 --- a/cpp/.traces/greater_than +++ /dev/null @@ -1,32 +0,0 @@ -parse/0: instruction: copy -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: copy -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: greater-than -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 ... -after-brace/0: greater-than ... -new/0: routine allocated memory from 1000 to 101000 -schedule/0: main -run/0: instruction main/0 -run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- copy/1 {name: "34", value: 34, type: 0, properties: ["34": "literal"]} -run/0: ingredient 0 is 34 -mem/0: storing 34 in location 1 -run/0: instruction main/1 -run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- copy/1 {name: "33", value: 33, type: 0, properties: ["33": "literal"]} -run/0: ingredient 0 is 33 -mem/0: storing 33 in location 2 -run/0: instruction main/2 -run/0: {name: "3", value: 3, type: 1, properties: ["3": "integer"]} <- greater-than/14 {name: "1", value: 1, type: 1, properties: ["1": "integer"]}, {name: "2", value: 2, type: 1, properties: ["2": "integer"]} -run/0: ingredient 0 is 1 -mem/0: location 1 is 34 -run/0: ingredient 1 is 2 -mem/0: location 2 is 33 -run/0: product 0 is 1 -mem/0: storing 1 in location 3 diff --git a/cpp/.traces/greater_than2 b/cpp/.traces/greater_than2 deleted file mode 100644 index f352176b..00000000 --- a/cpp/.traces/greater_than2 +++ /dev/null @@ -1,32 +0,0 @@ -parse/0: instruction: copy -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: copy -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: greater-than -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 ... -after-brace/0: greater-than ... -new/0: routine allocated memory from 1000 to 101000 -schedule/0: main -run/0: instruction main/0 -run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- copy/1 {name: "34", value: 34, type: 0, properties: ["34": "literal"]} -run/0: ingredient 0 is 34 -mem/0: storing 34 in location 1 -run/0: instruction main/1 -run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- copy/1 {name: "34", value: 34, type: 0, properties: ["34": "literal"]} -run/0: ingredient 0 is 34 -mem/0: storing 34 in location 2 -run/0: instruction main/2 -run/0: {name: "3", value: 3, type: 1, properties: ["3": "integer"]} <- greater-than/14 {name: "1", value: 1, type: 1, properties: ["1": "integer"]}, {name: "2", value: 2, type: 1, properties: ["2": "integer"]} -run/0: ingredient 0 is 1 -mem/0: location 1 is 34 -run/0: ingredient 1 is 2 -mem/0: location 2 is 34 -run/0: product 0 is 0 -mem/0: storing 0 in location 3 diff --git a/cpp/.traces/include_nonderef_properties b/cpp/.traces/include_nonderef_properties deleted file mode 100644 index d7eacc1a..00000000 --- a/cpp/.traces/include_nonderef_properties +++ /dev/null @@ -1,42 +0,0 @@ -parse/0: instruction: copy -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: copy -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: copy -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: get -parse/0: ingredient: {name: "1", value: 0, type: 2-6, properties: ["1": "address":"point", "deref": , "foo": ]} -parse/0: ingredient: {name: "0", value: 0, type: 0, properties: ["0": "offset"]} -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 ... -after-brace/0: copy ... -after-brace/0: get ... -new/0: routine allocated memory from 1000 to 101000 -schedule/0: main -run/0: instruction main/0 -run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- copy/1 {name: "2", value: 2, type: 0, properties: ["2": "literal"]} -run/0: ingredient 0 is 2 -mem/0: storing 2 in location 1 -run/0: instruction main/1 -run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- copy/1 {name: "34", value: 34, type: 0, properties: ["34": "literal"]} -run/0: ingredient 0 is 34 -mem/0: storing 34 in location 2 -run/0: instruction main/2 -run/0: {name: "3", value: 3, type: 1, properties: ["3": "integer"]} <- copy/1 {name: "35", value: 35, type: 0, properties: ["35": "literal"]} -run/0: ingredient 0 is 35 -mem/0: storing 35 in location 3 -run/0: instruction main/3 -run/0: {name: "4", value: 4, type: 1, properties: ["4": "integer"]} <- get/24 {name: "1", value: 1, type: 2-6, properties: ["1": "address":"point", "deref": , "foo": ]}, {name: "0", value: 0, type: 0, properties: ["0": "offset"]} -run/0: ingredient 0 is 1 -mem/0: location 1 is 2 -run/0: ingredient 1 is 0 -run/0: address to copy is 2 -run/0: its type is 1 -mem/0: location 2 is 34 -run/0: product 0 is 34 -mem/0: storing 34 in location 4 diff --git a/cpp/.traces/index b/cpp/.traces/index deleted file mode 100644 index 9653e872..00000000 --- a/cpp/.traces/index +++ /dev/null @@ -1,49 +0,0 @@ -parse/0: instruction: copy -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: copy -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: copy -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: copy -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: index -parse/0: ingredient: {name: "1", value: 0, type: 5-1, properties: ["1": "array":"integer"]} -parse/0: ingredient: {name: "0", value: 0, type: 0, properties: ["0": "literal"]} -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 ... -after-brace/0: copy ... -after-brace/0: copy ... -after-brace/0: index ... -new/0: routine allocated memory from 1000 to 101000 -schedule/0: main -run/0: instruction main/0 -run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- copy/1 {name: "3", value: 3, type: 0, properties: ["3": "literal"]} -run/0: ingredient 0 is 3 -mem/0: storing 3 in location 1 -run/0: instruction main/1 -run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- copy/1 {name: "14", value: 14, type: 0, properties: ["14": "literal"]} -run/0: ingredient 0 is 14 -mem/0: storing 14 in location 2 -run/0: instruction main/2 -run/0: {name: "3", value: 3, type: 1, properties: ["3": "integer"]} <- copy/1 {name: "15", value: 15, type: 0, properties: ["15": "literal"]} -run/0: ingredient 0 is 15 -mem/0: storing 15 in location 3 -run/0: instruction main/3 -run/0: {name: "4", value: 4, type: 1, properties: ["4": "integer"]} <- copy/1 {name: "16", value: 16, type: 0, properties: ["16": "literal"]} -run/0: ingredient 0 is 16 -mem/0: storing 16 in location 4 -run/0: instruction main/4 -run/0: {name: "5", value: 5, type: 1, properties: ["5": "integer"]} <- index/26 {name: "1", value: 1, type: 5-1, properties: ["1": "array":"integer"]}, {name: "0", value: 0, type: 0, properties: ["0": "literal"]} -run/0: ingredient 0 is {name: "1", value: 1, type: 5-1, properties: ["1": "array":"integer"]} -run/0: ingredient 1 is {name: "0", value: 0, type: 0, properties: ["0": "literal"]} -run/0: address to copy is 2 -run/0: its type is 1 -mem/0: location 2 is 14 -run/0: product 0 is 14 -mem/0: storing 14 in location 5 diff --git a/cpp/.traces/index_address b/cpp/.traces/index_address deleted file mode 100644 index c203603f..00000000 --- a/cpp/.traces/index_address +++ /dev/null @@ -1,47 +0,0 @@ -parse/0: instruction: copy -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: copy -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: copy -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: copy -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: index-address -parse/0: ingredient: {name: "1", value: 0, type: 5-1, properties: ["1": "array":"integer"]} -parse/0: ingredient: {name: "0", value: 0, type: 0, properties: ["0": "literal"]} -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 ... -after-brace/0: copy ... -after-brace/0: copy ... -after-brace/0: index-address ... -new/0: routine allocated memory from 1000 to 101000 -schedule/0: main -run/0: instruction main/0 -run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- copy/1 {name: "3", value: 3, type: 0, properties: ["3": "literal"]} -run/0: ingredient 0 is 3 -mem/0: storing 3 in location 1 -run/0: instruction main/1 -run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- copy/1 {name: "14", value: 14, type: 0, properties: ["14": "literal"]} -run/0: ingredient 0 is 14 -mem/0: storing 14 in location 2 -run/0: instruction main/2 -run/0: {name: "3", value: 3, type: 1, properties: ["3": "integer"]} <- copy/1 {name: "15", value: 15, type: 0, properties: ["15": "literal"]} -run/0: ingredient 0 is 15 -mem/0: storing 15 in location 3 -run/0: instruction main/3 -run/0: {name: "4", value: 4, type: 1, properties: ["4": "integer"]} <- copy/1 {name: "16", value: 16, type: 0, properties: ["16": "literal"]} -run/0: ingredient 0 is 16 -mem/0: storing 16 in location 4 -run/0: instruction main/4 -run/0: {name: "5", value: 5, type: 1, properties: ["5": "integer"]} <- index-address/27 {name: "1", value: 1, type: 5-1, properties: ["1": "array":"integer"]}, {name: "0", value: 0, type: 0, properties: ["0": "literal"]} -run/0: ingredient 0 is 1 -run/0: ingredient 1 is {name: "0", value: 0, type: 0, properties: ["0": "literal"]} -run/0: address to copy is 2 -run/0: product 0 is 2 -mem/0: storing 2 in location 5 diff --git a/cpp/.traces/index_direct_offset b/cpp/.traces/index_direct_offset deleted file mode 100644 index a20a3d67..00000000 --- a/cpp/.traces/index_direct_offset +++ /dev/null @@ -1,58 +0,0 @@ -parse/0: instruction: copy -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: copy -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: copy -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: copy -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: copy -parse/0: ingredient: {name: "0", value: 0, type: 0, properties: ["0": "literal"]} -parse/0: product: {name: "5", value: 0, type: 1, properties: ["5": "integer"]} -parse/0: instruction: index -parse/0: ingredient: {name: "1", value: 0, type: 5-1, properties: ["1": "array":"integer"]} -parse/0: ingredient: {name: "5", value: 0, type: 1, properties: ["5": "integer"]} -parse/0: product: {name: "6", value: 0, type: 1, properties: ["6": "integer"]} -after-brace/0: recipe main -after-brace/0: copy ... -after-brace/0: copy ... -after-brace/0: copy ... -after-brace/0: copy ... -after-brace/0: copy ... -after-brace/0: index ... -new/0: routine allocated memory from 1000 to 101000 -schedule/0: main -run/0: instruction main/0 -run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- copy/1 {name: "3", value: 3, type: 0, properties: ["3": "literal"]} -run/0: ingredient 0 is 3 -mem/0: storing 3 in location 1 -run/0: instruction main/1 -run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- copy/1 {name: "14", value: 14, type: 0, properties: ["14": "literal"]} -run/0: ingredient 0 is 14 -mem/0: storing 14 in location 2 -run/0: instruction main/2 -run/0: {name: "3", value: 3, type: 1, properties: ["3": "integer"]} <- copy/1 {name: "15", value: 15, type: 0, properties: ["15": "literal"]} -run/0: ingredient 0 is 15 -mem/0: storing 15 in location 3 -run/0: instruction main/3 -run/0: {name: "4", value: 4, type: 1, properties: ["4": "integer"]} <- copy/1 {name: "16", value: 16, type: 0, properties: ["16": "literal"]} -run/0: ingredient 0 is 16 -mem/0: storing 16 in location 4 -run/0: instruction main/4 -run/0: {name: "5", value: 5, type: 1, properties: ["5": "integer"]} <- copy/1 {name: "0", value: 0, type: 0, properties: ["0": "literal"]} -run/0: ingredient 0 is 0 -mem/0: storing 0 in location 5 -run/0: instruction main/5 -run/0: {name: "6", value: 6, type: 1, properties: ["6": "integer"]} <- index/26 {name: "1", value: 1, type: 5-1, properties: ["1": "array":"integer"]}, {name: "5", value: 5, type: 1, properties: ["5": "integer"]} -run/0: ingredient 0 is {name: "1", value: 1, type: 5-1, properties: ["1": "array":"integer"]} -run/0: ingredient 1 is {name: "5", value: 5, type: 1, properties: ["5": "integer"]} -mem/0: location 5 is 0 -run/0: address to copy is 2 -run/0: its type is 1 -mem/0: location 2 is 14 -run/0: product 0 is 14 -mem/0: storing 14 in location 6 diff --git a/cpp/.traces/index_indirect b/cpp/.traces/index_indirect deleted file mode 100644 index 16489d15..00000000 --- a/cpp/.traces/index_indirect +++ /dev/null @@ -1,58 +0,0 @@ -parse/0: instruction: copy -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: copy -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: copy -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: copy -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: copy -parse/0: ingredient: {name: "1", value: 0, type: 0, properties: ["1": "literal"]} -parse/0: product: {name: "5", value: 0, type: 2-5-1, properties: ["5": "address":"array":"integer"]} -parse/0: instruction: index -parse/0: ingredient: {name: "5", value: 0, type: 2-5-1, properties: ["5": "address":"array":"integer", "deref": ]} -parse/0: ingredient: {name: "1", value: 0, type: 0, properties: ["1": "literal"]} -parse/0: product: {name: "6", value: 0, type: 1, properties: ["6": "integer"]} -after-brace/0: recipe main -after-brace/0: copy ... -after-brace/0: copy ... -after-brace/0: copy ... -after-brace/0: copy ... -after-brace/0: copy ... -after-brace/0: index ... -new/0: routine allocated memory from 1000 to 101000 -schedule/0: main -run/0: instruction main/0 -run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- copy/1 {name: "3", value: 3, type: 0, properties: ["3": "literal"]} -run/0: ingredient 0 is 3 -mem/0: storing 3 in location 1 -run/0: instruction main/1 -run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- copy/1 {name: "14", value: 14, type: 0, properties: ["14": "literal"]} -run/0: ingredient 0 is 14 -mem/0: storing 14 in location 2 -run/0: instruction main/2 -run/0: {name: "3", value: 3, type: 1, properties: ["3": "integer"]} <- copy/1 {name: "15", value: 15, type: 0, properties: ["15": "literal"]} -run/0: ingredient 0 is 15 -mem/0: storing 15 in location 3 -run/0: instruction main/3 -run/0: {name: "4", value: 4, type: 1, properties: ["4": "integer"]} <- copy/1 {name: "16", value: 16, type: 0, properties: ["16": "literal"]} -run/0: ingredient 0 is 16 -mem/0: storing 16 in location 4 -run/0: instruction main/4 -run/0: {name: "5", value: 5, type: 2-5-1, properties: ["5": "address":"array":"integer"]} <- copy/1 {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is 1 -mem/0: storing 1 in location 5 -run/0: instruction main/5 -run/0: {name: "6", value: 6, type: 1, properties: ["6": "integer"]} <- index/26 {name: "5", value: 5, type: 2-5-1, properties: ["5": "address":"array":"integer", "deref": ]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is {name: "5", value: 5, type: 2-5-1, properties: ["5": "address":"array":"integer", "deref": ]} -mem/0: location 5 is 1 -run/0: ingredient 1 is {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: address to copy is 3 -run/0: its type is 1 -mem/0: location 3 is 15 -run/0: product 0 is 15 -mem/0: storing 15 in location 6 diff --git a/cpp/.traces/ingredient b/cpp/.traces/ingredient deleted file mode 100644 index e2bc1da4..00000000 --- a/cpp/.traces/ingredient +++ /dev/null @@ -1,25 +0,0 @@ -parse/0: instruction: f -parse/0: ingredient: {name: "1", value: 0, type: 0, properties: ["1": "literal"]} -parse/0: ingredient: {name: "2", value: 0, type: 0, properties: ["2": "literal"]} -parse/0: instruction: ingredient -parse/0: ingredient: {name: "1", value: 0, type: 0, properties: ["1": "literal"]} -parse/0: product: {name: "12", value: 0, type: 1, properties: ["12": "integer"]} -parse/0: instruction: next-ingredient -parse/0: product: {name: "13", value: 0, type: 1, properties: ["13": "integer"]} -parse/0: product: {name: "1", value: 0, type: 3, properties: ["1": "boolean"]} -after-brace/0: recipe main -after-brace/0: f ... -after-brace/0: recipe f -after-brace/0: ingredient ... -after-brace/0: next-ingredient ... -new/0: routine allocated memory from 1000 to 101000 -schedule/0: main -run/0: instruction main/0 -run/0: f/1001 {name: "1", value: 1, type: 0, properties: ["1": "literal"]}, {name: "2", value: 2, type: 0, properties: ["2": "literal"]} -run/0: instruction f/0 -run/0: {name: "12", value: 12, type: 1, properties: ["12": "integer"]} <- ingredient/32 {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: product 0 is 2 -mem/0: storing 2 in location 12 -run/0: instruction f/1 -run/0: {name: "13", value: 13, type: 1, properties: ["13": "integer"]}, {name: "1", value: 1, type: 3, properties: ["1": "boolean"]} <- next-ingredient/30 -mem/0: storing 0 in location 1 diff --git a/cpp/.traces/integer-to-decimal-digit-negative b/cpp/.traces/integer-to-decimal-digit-negative deleted file mode 100644 index 9b4328ad..00000000 --- a/cpp/.traces/integer-to-decimal-digit-negative +++ /dev/null @@ -1,611 +0,0 @@ -parse/0: instruction: run -parse/0: ingredient: {name: " - 1:address:array:character/raw <- integer-to-decimal-string -1:literal - 2:array:character/raw <- copy 1:address:array:character/deref/raw - ", value: 0, type: 0, properties: [" - 1:address:array:character/raw <- integer-to-decimal-string -1:literal - 2:array:character/raw <- copy 1:address:array:character/deref/raw - ": "literal-string"]} -parse/0: instruction: memory-should-contain -parse/0: ingredient: {name: " - 2 <- 2 - 3 <- 45 # '-' - 4 <- 49 # '1' - ", value: 0, type: 0, properties: [" - 2 <- 2 - 3 <- 45 # '-' - 4 <- 49 # '1' - ": "literal-string"]} -after-brace/0: recipe integer-to-decimal-digit-negative -after-brace/0: run ... -after-brace/0: memory-should-contain ... -new/0: routine allocated memory from 1000 to 101000 -schedule/0: integer-to-decimal-digit-negative -run/0: instruction integer-to-decimal-digit-negative/0 -run/0: run/45 {name: " - 1:address:array:character/raw <- integer-to-decimal-string -1:literal - 2:array:character/raw <- copy 1:address:array:character/deref/raw - ", value: 0, type: 0, properties: [" - 1:address:array:character/raw <- integer-to-decimal-string -1:literal - 2:array:character/raw <- copy 1:address:array:character/deref/raw - ": "literal-string"]} -parse/0: instruction: integer-to-decimal-string -parse/0: ingredient: {name: "-1", value: 0, type: 0, properties: ["-1": "literal"]} -parse/0: product: {name: "1", value: 0, type: 2-5-4, properties: ["1": "address":"array":"character", "raw": ]} -parse/0: instruction: copy -parse/0: ingredient: {name: "1", value: 0, type: 2-5-4, properties: ["1": "address":"array":"character", "deref": , "raw": ]} -parse/0: product: {name: "2", value: 0, type: 5-4, properties: ["2": "array":"character", "raw": ]} -after-brace/0: recipe run1001 -after-brace/0: integer-to-decimal-string ... -after-brace/0: copy ... -run/0: instruction run1001/0 -run/0: {name: "1", value: 1, type: 2-5-4, properties: ["1": "address":"array":"character", "raw": ]} <- integer-to-decimal-string/105 {name: "-1", value: -1, type: 0, properties: ["-1": "literal"]} -run/0: instruction integer-to-decimal-string/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/44 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} -mem/0: array size is 30 -mem/0: new alloc: 1000 -run/0: instruction integer-to-decimal-string/1 -run/0: {name: "n", value: 1, type: 1, properties: ["n": "integer"]} <- next-ingredient/30 -run/0: product 0 is -1 -mem/0: storing -1 in location 1002 -run/0: instruction integer-to-decimal-string/3 -run/0: break-if/11 {name: "n", value: 1, type: 1, properties: ["n": "integer"]}, {name: "", value: 2, type: , properties: ["": ]} -mem/0: location 1002 is -1 -run/0: ingredient 0 is -1 -run/0: ingredient 1 is -run/0: jumping to instruction 6 -run/0: instruction integer-to-decimal-string/7 -run/0: {name: "negate-result", value: 3, type: 3, properties: ["negate-result": "boolean"]} <- copy/1 {name: "0", value: 0, type: 0, properties: ["0": "literal"]} -run/0: ingredient 0 is 0 -mem/0: storing 0 in location 1004 -run/0: instruction integer-to-decimal-string/9 -run/0: {name: "negative?", value: 4, type: 3, properties: ["negative?": "boolean"]} <- lesser-than/15 {name: "n", value: 1, type: 1, properties: ["n": "integer"]}, {name: "0", value: 0, type: 0, properties: ["0": "literal"]} -run/0: ingredient 0 is n -mem/0: location 1002 is -1 -run/0: ingredient 1 is 0 -run/0: product 0 is 1 -mem/0: storing 1 in location 1005 -run/0: instruction integer-to-decimal-string/10 -run/0: break-unless/12 {name: "negative?", value: 4, type: 3, properties: ["negative?": "boolean"]}, {name: "", value: 2, type: , properties: ["": ]} -mem/0: location 1005 is 1 -run/0: ingredient 0 is 1 -run/0: jump-unless fell through -run/0: instruction integer-to-decimal-string/11 -run/0: {name: "negate-result", value: 3, type: 3, properties: ["negate-result": "boolean"]} <- copy/1 {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is 1 -mem/0: storing 1 in location 1004 -run/0: instruction integer-to-decimal-string/12 -run/0: {name: "n", value: 1, type: 1, properties: ["n": "integer"]} <- multiply/4 {name: "n", value: 1, type: 1, properties: ["n": "integer"]}, {name: "-1", value: -1, type: 0, properties: ["-1": "literal"]} -run/0: ingredient 0 is n -mem/0: location 1002 is -1 -run/0: ingredient 1 is -1 -run/0: ingredient 1 is -1 -run/0: product 0 is 1 -mem/0: storing 1 in location 1002 -run/0: instruction integer-to-decimal-string/14 -run/0: {name: "tmp", value: 5, type: 2-9, properties: ["tmp": "address":"buffer"]} <- init-buffer/101 {name: "30", value: 30, type: 0, properties: ["30": "literal"]} -run/0: instruction init-buffer/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/44 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} -mem/0: array size is 30 -mem/0: new alloc: 1031 -run/0: instruction init-buffer/1 -run/0: {name: "result", value: 1, type: 2-9, properties: ["result": "address":"buffer"]} <- new/44 {name: "buffer", value: 9, type: 0, properties: ["buffer": "type"]} -mem/0: new alloc: 1062 -mem/0: storing 1062 in location 1033 -run/0: instruction init-buffer/2 -run/0: {name: "len", value: 2, type: 2-1, properties: ["len": "address":"integer"]} <- get-address/25 {name: "result", value: 1, type: 2-9, properties: ["result": "address":"buffer", "deref": ]}, {name: "length", value: 0, type: 0, properties: ["length": "offset"]} -run/0: ingredient 0 is result -mem/0: location 1033 is 1062 -run/0: ingredient 1 is length -run/0: address to copy is 1062 -run/0: product 0 is 1062 -mem/0: storing 1062 in location 1034 -run/0: instruction init-buffer/3 -run/0: {name: "len", value: 2, type: 2-1, properties: ["len": "address":"integer", "deref": ]} <- copy/1 {name: "0", value: 0, type: 0, properties: ["0": "literal"]} -run/0: ingredient 0 is 0 -mem/0: location 1034 is 1062 -mem/0: storing 0 in location 1062 -run/0: instruction init-buffer/4 -run/0: {name: "s", value: 3, type: 2-2-5-4, properties: ["s": "address":"address":"array":"character"]} <- get-address/25 {name: "result", value: 1, type: 2-9, properties: ["result": "address":"buffer", "deref": ]}, {name: "data", value: 1, type: 0, properties: ["data": "offset"]} -run/0: ingredient 0 is result -mem/0: location 1033 is 1062 -run/0: ingredient 1 is data -run/0: address to copy is 1063 -run/0: product 0 is 1063 -mem/0: storing 1063 in location 1035 -run/0: instruction init-buffer/5 -run/0: {name: "capacity", value: 4, type: 1, properties: ["capacity": "integer"]} <- next-ingredient/30 -run/0: product 0 is 30 -mem/0: storing 30 in location 1036 -run/0: instruction init-buffer/6 -run/0: {name: "s", value: 3, type: 2-2-5-4, properties: ["s": "address":"address":"array":"character", "deref": ]} <- new/44 {name: "character", value: 4, type: 0, properties: ["character": "type"]}, {name: "capacity", value: 4, type: 1, properties: ["capacity": "integer"]} -mem/0: location 1036 is 30 -mem/0: array size is 30 -mem/0: new alloc: 1064 -mem/0: location 1035 is 1063 -mem/0: storing 1064 in location 1063 -run/0: instruction init-buffer/7 -run/0: reply/33 {name: "result", value: 1, type: 2-9, properties: ["result": "address":"buffer"]} -mem/0: location 1033 is 1062 -run/0: result 0 is 1062 -mem/0: storing 1062 in location 1006 -run/0: instruction integer-to-decimal-string/15 -run/0: {name: "digit-base", value: 6, type: 1, properties: ["digit-base": "integer"]} <- copy/1 {name: "48", value: 48, type: 0, properties: ["48": "literal"]} -run/0: ingredient 0 is 48 -mem/0: storing 48 in location 1007 -run/0: instruction integer-to-decimal-string/17 -run/0: {name: "done?", value: 7, type: 3, properties: ["done?": "boolean"]} <- equal/13 {name: "n", value: 1, type: 1, properties: ["n": "integer"]}, {name: "0", value: 0, type: 0, properties: ["0": "literal"]} -run/0: ingredient 0 is n -mem/0: location 1002 is 1 -run/0: ingredient 1 is 0 -run/0: product 0 is 0 -mem/0: storing 0 in location 1008 -run/0: instruction integer-to-decimal-string/18 -run/0: break-if/11 {name: "done?", value: 7, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 4, type: , properties: ["": ]} -mem/0: location 1008 is 0 -run/0: ingredient 0 is 0 -run/0: jump-if fell through -run/0: instruction integer-to-decimal-string/19 -run/0: {name: "n", value: 1, type: 1, properties: ["n": "integer"]}, {name: "digit", value: 8, type: 1, properties: ["digit": "integer"]} <- divide-with-remainder/6 {name: "n", value: 1, type: 1, properties: ["n": "integer"]}, {name: "10", value: 10, type: 0, properties: ["10": "literal"]} -run/0: ingredient 0 is n -mem/0: location 1002 is 1 -run/0: ingredient 1 is 10 -run/0: product 0 is 0 -mem/0: storing 0 in location 1002 -run/0: product 1 is 1 -mem/0: storing 1 in location 1009 -run/0: instruction integer-to-decimal-string/20 -run/0: {name: "c", value: 9, type: 4, properties: ["c": "character"]} <- add/2 {name: "digit-base", value: 6, type: 1, properties: ["digit-base": "integer"]}, {name: "digit", value: 8, type: 1, properties: ["digit": "integer"]} -run/0: ingredient 0 is digit-base -mem/0: location 1007 is 48 -run/0: ingredient 1 is digit -mem/0: location 1009 is 1 -run/0: product 0 is 49 -mem/0: storing 49 in location 1010 -run/0: instruction integer-to-decimal-string/21 -run/0: {name: "tmp", value: 5, type: 2-9, properties: ["tmp": "address":"buffer"]} <- buffer-append/104 {name: "tmp", value: 5, type: 2-9, properties: ["tmp": "address":"buffer"]}, {name: "c", value: 9, type: 4, properties: ["c": "character"]} -mem/0: location 1006 is 1062 -mem/0: location 1010 is 49 -run/0: instruction buffer-append/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/44 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} -mem/0: array size is 30 -mem/0: new alloc: 1095 -run/0: instruction buffer-append/1 -run/0: {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer"]} <- next-ingredient/30 -run/0: product 0 is 1062 -mem/0: storing 1062 in location 1097 -run/0: instruction buffer-append/2 -run/0: {name: "c", value: 2, type: 4, properties: ["c": "character"]} <- next-ingredient/30 -run/0: product 0 is 49 -mem/0: storing 49 in location 1098 -run/0: instruction buffer-append/4 -run/0: {name: "full?", value: 3, type: 3, properties: ["full?": "boolean"]} <- buffer-full?/103 {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer"]} -mem/0: location 1097 is 1062 -run/0: instruction buffer-full?/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/44 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} -mem/0: array size is 30 -mem/0: new alloc: 1126 -run/0: instruction buffer-full?/1 -run/0: {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer"]} <- next-ingredient/30 -run/0: product 0 is 1062 -mem/0: storing 1062 in location 1128 -run/0: instruction buffer-full?/2 -run/0: {name: "len", value: 2, type: 1, properties: ["len": "integer"]} <- get/24 {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer", "deref": ]}, {name: "length", value: 0, type: 0, properties: ["length": "offset"]} -run/0: ingredient 0 is in -mem/0: location 1128 is 1062 -run/0: ingredient 1 is length -run/0: address to copy is 1062 -run/0: its type is 1 -mem/0: location 1062 is 0 -run/0: product 0 is 0 -mem/0: storing 0 in location 1129 -run/0: instruction buffer-full?/3 -run/0: {name: "s", value: 3, type: 2-5-4, properties: ["s": "address":"array":"character"]} <- get/24 {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer", "deref": ]}, {name: "data", value: 1, type: 0, properties: ["data": "offset"]} -run/0: ingredient 0 is in -mem/0: location 1128 is 1062 -run/0: ingredient 1 is data -run/0: address to copy is 1063 -run/0: its type is 2 -mem/0: location 1063 is 1064 -run/0: product 0 is 1064 -mem/0: storing 1064 in location 1130 -run/0: instruction buffer-full?/4 -run/0: {name: "capacity", value: 4, type: 1, properties: ["capacity": "integer"]} <- length/28 {name: "s", value: 3, type: 2-5-4, properties: ["s": "address":"array":"character", "deref": ]} -mem/0: location 1130 is 1064 -mem/0: storing 30 in location 1131 -run/0: instruction buffer-full?/5 -run/0: {name: "result", value: 5, type: 3, properties: ["result": "boolean"]} <- greater-or-equal/16 {name: "len", value: 2, type: 1, properties: ["len": "integer"]}, {name: "capacity", value: 4, type: 1, properties: ["capacity": "integer"]} -run/0: ingredient 0 is len -mem/0: location 1129 is 0 -run/0: ingredient 1 is capacity -mem/0: location 1131 is 30 -run/0: product 0 is 0 -mem/0: storing 0 in location 1132 -run/0: instruction buffer-full?/6 -run/0: reply/33 {name: "result", value: 5, type: 3, properties: ["result": "boolean"]} -mem/0: location 1132 is 0 -run/0: result 0 is 0 -mem/0: storing 0 in location 1099 -run/0: instruction buffer-append/5 -run/0: break-unless/12 {name: "full?", value: 3, type: 3, properties: ["full?": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} -mem/0: location 1099 is 0 -run/0: ingredient 0 is 0 -run/0: ingredient 1 is -run/0: jumping to instruction 7 -run/0: instruction buffer-append/8 -run/0: {name: "len", value: 4, type: 2-1, properties: ["len": "address":"integer"]} <- get-address/25 {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer", "deref": ]}, {name: "length", value: 0, type: 0, properties: ["length": "offset"]} -run/0: ingredient 0 is in -mem/0: location 1097 is 1062 -run/0: ingredient 1 is length -run/0: address to copy is 1062 -run/0: product 0 is 1062 -mem/0: storing 1062 in location 1100 -run/0: instruction buffer-append/9 -run/0: {name: "s", value: 5, type: 2-5-4, properties: ["s": "address":"array":"character"]} <- get/24 {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer", "deref": ]}, {name: "data", value: 1, type: 0, properties: ["data": "offset"]} -run/0: ingredient 0 is in -mem/0: location 1097 is 1062 -run/0: ingredient 1 is data -run/0: address to copy is 1063 -run/0: its type is 2 -mem/0: location 1063 is 1064 -run/0: product 0 is 1064 -mem/0: storing 1064 in location 1101 -run/0: instruction buffer-append/10 -run/0: {name: "dest", value: 6, type: 2-4, properties: ["dest": "address":"character"]} <- index-address/27 {name: "s", value: 5, type: 2-5-4, properties: ["s": "address":"array":"character", "deref": ]}, {name: "len", value: 4, type: 2-1, properties: ["len": "address":"integer", "deref": ]} -run/0: ingredient 0 is s -mem/0: location 1101 is 1064 -run/0: ingredient 1 is {name: "len", value: 4, type: 2-1, properties: ["len": "address":"integer", "deref": ]} -mem/0: location 1100 is 1062 -mem/0: location 1062 is 0 -run/0: address to copy is 1065 -run/0: product 0 is 1065 -mem/0: storing 1065 in location 1102 -run/0: instruction buffer-append/11 -run/0: {name: "dest", value: 6, type: 2-4, properties: ["dest": "address":"character", "deref": ]} <- copy/1 {name: "c", value: 2, type: 4, properties: ["c": "character"]} -run/0: ingredient 0 is c -mem/0: location 1098 is 49 -mem/0: location 1102 is 1065 -mem/0: storing 49 in location 1065 -run/0: instruction buffer-append/12 -run/0: {name: "len", value: 4, type: 2-1, properties: ["len": "address":"integer", "deref": ]} <- add/2 {name: "len", value: 4, type: 2-1, properties: ["len": "address":"integer", "deref": ]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is len -mem/0: location 1100 is 1062 -mem/0: location 1062 is 0 -run/0: ingredient 1 is 1 -run/0: product 0 is 1 -mem/0: location 1100 is 1062 -mem/0: storing 1 in location 1062 -run/0: instruction buffer-append/13 -run/0: reply/33 {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer", "same-as-ingredient": "0"]} -mem/0: location 1097 is 1062 -run/0: result 0 is 1062 -mem/0: storing 1062 in location 1006 -run/0: instruction integer-to-decimal-string/22 -run/0: loop/10 {name: "", value: -6, type: , properties: ["": ]} -run/0: ingredient 0 is -6 -run/0: jumping to instruction 17 -run/0: instruction integer-to-decimal-string/17 -run/0: {name: "done?", value: 7, type: 3, properties: ["done?": "boolean"]} <- equal/13 {name: "n", value: 1, type: 1, properties: ["n": "integer"]}, {name: "0", value: 0, type: 0, properties: ["0": "literal"]} -run/0: ingredient 0 is n -mem/0: location 1002 is 0 -run/0: ingredient 1 is 0 -run/0: product 0 is 1 -mem/0: storing 1 in location 1008 -run/0: instruction integer-to-decimal-string/18 -run/0: break-if/11 {name: "done?", value: 7, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 4, type: , properties: ["": ]} -mem/0: location 1008 is 1 -run/0: ingredient 0 is 1 -run/0: ingredient 1 is -run/0: jumping to instruction 23 -run/0: instruction integer-to-decimal-string/25 -run/0: break-unless/12 {name: "negate-result", value: 3, type: 3, properties: ["negate-result": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} -mem/0: location 1004 is 1 -run/0: ingredient 0 is 1 -run/0: jump-unless fell through -run/0: instruction integer-to-decimal-string/26 -run/0: {name: "tmp", value: 5, type: 2-9, properties: ["tmp": "address":"buffer"]} <- buffer-append/104 {name: "tmp", value: 5, type: 2-9, properties: ["tmp": "address":"buffer"]}, {name: "45", value: 45, type: 0, properties: ["45": "literal"]} -mem/0: location 1006 is 1062 -run/0: instruction buffer-append/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/44 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} -mem/0: array size is 30 -mem/0: new alloc: 1157 -run/0: instruction buffer-append/1 -run/0: {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer"]} <- next-ingredient/30 -run/0: product 0 is 1062 -mem/0: storing 1062 in location 1159 -run/0: instruction buffer-append/2 -run/0: {name: "c", value: 2, type: 4, properties: ["c": "character"]} <- next-ingredient/30 -run/0: product 0 is 45 -mem/0: storing 45 in location 1160 -run/0: instruction buffer-append/4 -run/0: {name: "full?", value: 3, type: 3, properties: ["full?": "boolean"]} <- buffer-full?/103 {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer"]} -mem/0: location 1159 is 1062 -run/0: instruction buffer-full?/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/44 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} -mem/0: array size is 30 -mem/0: new alloc: 1188 -run/0: instruction buffer-full?/1 -run/0: {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer"]} <- next-ingredient/30 -run/0: product 0 is 1062 -mem/0: storing 1062 in location 1190 -run/0: instruction buffer-full?/2 -run/0: {name: "len", value: 2, type: 1, properties: ["len": "integer"]} <- get/24 {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer", "deref": ]}, {name: "length", value: 0, type: 0, properties: ["length": "offset"]} -run/0: ingredient 0 is in -mem/0: location 1190 is 1062 -run/0: ingredient 1 is length -run/0: address to copy is 1062 -run/0: its type is 1 -mem/0: location 1062 is 1 -run/0: product 0 is 1 -mem/0: storing 1 in location 1191 -run/0: instruction buffer-full?/3 -run/0: {name: "s", value: 3, type: 2-5-4, properties: ["s": "address":"array":"character"]} <- get/24 {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer", "deref": ]}, {name: "data", value: 1, type: 0, properties: ["data": "offset"]} -run/0: ingredient 0 is in -mem/0: location 1190 is 1062 -run/0: ingredient 1 is data -run/0: address to copy is 1063 -run/0: its type is 2 -mem/0: location 1063 is 1064 -run/0: product 0 is 1064 -mem/0: storing 1064 in location 1192 -run/0: instruction buffer-full?/4 -run/0: {name: "capacity", value: 4, type: 1, properties: ["capacity": "integer"]} <- length/28 {name: "s", value: 3, type: 2-5-4, properties: ["s": "address":"array":"character", "deref": ]} -mem/0: location 1192 is 1064 -mem/0: storing 30 in location 1193 -run/0: instruction buffer-full?/5 -run/0: {name: "result", value: 5, type: 3, properties: ["result": "boolean"]} <- greater-or-equal/16 {name: "len", value: 2, type: 1, properties: ["len": "integer"]}, {name: "capacity", value: 4, type: 1, properties: ["capacity": "integer"]} -run/0: ingredient 0 is len -mem/0: location 1191 is 1 -run/0: ingredient 1 is capacity -mem/0: location 1193 is 30 -run/0: product 0 is 0 -mem/0: storing 0 in location 1194 -run/0: instruction buffer-full?/6 -run/0: reply/33 {name: "result", value: 5, type: 3, properties: ["result": "boolean"]} -mem/0: location 1194 is 0 -run/0: result 0 is 0 -mem/0: storing 0 in location 1161 -run/0: instruction buffer-append/5 -run/0: break-unless/12 {name: "full?", value: 3, type: 3, properties: ["full?": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} -mem/0: location 1161 is 0 -run/0: ingredient 0 is 0 -run/0: ingredient 1 is -run/0: jumping to instruction 7 -run/0: instruction buffer-append/8 -run/0: {name: "len", value: 4, type: 2-1, properties: ["len": "address":"integer"]} <- get-address/25 {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer", "deref": ]}, {name: "length", value: 0, type: 0, properties: ["length": "offset"]} -run/0: ingredient 0 is in -mem/0: location 1159 is 1062 -run/0: ingredient 1 is length -run/0: address to copy is 1062 -run/0: product 0 is 1062 -mem/0: storing 1062 in location 1162 -run/0: instruction buffer-append/9 -run/0: {name: "s", value: 5, type: 2-5-4, properties: ["s": "address":"array":"character"]} <- get/24 {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer", "deref": ]}, {name: "data", value: 1, type: 0, properties: ["data": "offset"]} -run/0: ingredient 0 is in -mem/0: location 1159 is 1062 -run/0: ingredient 1 is data -run/0: address to copy is 1063 -run/0: its type is 2 -mem/0: location 1063 is 1064 -run/0: product 0 is 1064 -mem/0: storing 1064 in location 1163 -run/0: instruction buffer-append/10 -run/0: {name: "dest", value: 6, type: 2-4, properties: ["dest": "address":"character"]} <- index-address/27 {name: "s", value: 5, type: 2-5-4, properties: ["s": "address":"array":"character", "deref": ]}, {name: "len", value: 4, type: 2-1, properties: ["len": "address":"integer", "deref": ]} -run/0: ingredient 0 is s -mem/0: location 1163 is 1064 -run/0: ingredient 1 is {name: "len", value: 4, type: 2-1, properties: ["len": "address":"integer", "deref": ]} -mem/0: location 1162 is 1062 -mem/0: location 1062 is 1 -run/0: address to copy is 1066 -run/0: product 0 is 1066 -mem/0: storing 1066 in location 1164 -run/0: instruction buffer-append/11 -run/0: {name: "dest", value: 6, type: 2-4, properties: ["dest": "address":"character", "deref": ]} <- copy/1 {name: "c", value: 2, type: 4, properties: ["c": "character"]} -run/0: ingredient 0 is c -mem/0: location 1160 is 45 -mem/0: location 1164 is 1066 -mem/0: storing 45 in location 1066 -run/0: instruction buffer-append/12 -run/0: {name: "len", value: 4, type: 2-1, properties: ["len": "address":"integer", "deref": ]} <- add/2 {name: "len", value: 4, type: 2-1, properties: ["len": "address":"integer", "deref": ]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is len -mem/0: location 1162 is 1062 -mem/0: location 1062 is 1 -run/0: ingredient 1 is 1 -run/0: product 0 is 2 -mem/0: location 1162 is 1062 -mem/0: storing 2 in location 1062 -run/0: instruction buffer-append/13 -run/0: reply/33 {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer", "same-as-ingredient": "0"]} -mem/0: location 1159 is 1062 -run/0: result 0 is 1062 -mem/0: storing 1062 in location 1006 -run/0: instruction integer-to-decimal-string/28 -run/0: {name: "len", value: 10, type: 1, properties: ["len": "integer"]} <- get/24 {name: "tmp", value: 5, type: 2-9, properties: ["tmp": "address":"buffer", "deref": ]}, {name: "length", value: 0, type: 0, properties: ["length": "offset"]} -run/0: ingredient 0 is tmp -mem/0: location 1006 is 1062 -run/0: ingredient 1 is length -run/0: address to copy is 1062 -run/0: its type is 1 -mem/0: location 1062 is 2 -run/0: product 0 is 2 -mem/0: storing 2 in location 1011 -run/0: instruction integer-to-decimal-string/29 -run/0: {name: "buf", value: 11, type: 2-5-4, properties: ["buf": "address":"array":"character"]} <- get/24 {name: "tmp", value: 5, type: 2-9, properties: ["tmp": "address":"buffer", "deref": ]}, {name: "data", value: 1, type: 0, properties: ["data": "offset"]} -run/0: ingredient 0 is tmp -mem/0: location 1006 is 1062 -run/0: ingredient 1 is data -run/0: address to copy is 1063 -run/0: its type is 2 -mem/0: location 1063 is 1064 -run/0: product 0 is 1064 -mem/0: storing 1064 in location 1012 -run/0: instruction integer-to-decimal-string/30 -run/0: {name: "result", value: 2, type: 2-5-4, properties: ["result": "address":"array":"character"]} <- new/44 {name: "character", value: 4, type: 0, properties: ["character": "type"]}, {name: "len", value: 10, type: 1, properties: ["len": "integer"]} -mem/0: location 1011 is 2 -mem/0: array size is 2 -mem/0: new alloc: 1219 -mem/0: storing 1219 in location 1003 -run/0: instruction integer-to-decimal-string/31 -run/0: {name: "i", value: 12, type: 1, properties: ["i": "integer"]} <- subtract/3 {name: "len", value: 10, type: 1, properties: ["len": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is len -mem/0: location 1011 is 2 -run/0: ingredient 1 is 1 -run/0: product 0 is 1 -mem/0: storing 1 in location 1013 -run/0: instruction integer-to-decimal-string/32 -run/0: {name: "j", value: 13, type: 1, properties: ["j": "integer"]} <- copy/1 {name: "0", value: 0, type: 0, properties: ["0": "literal"]} -run/0: ingredient 0 is 0 -mem/0: storing 0 in location 1014 -run/0: instruction integer-to-decimal-string/34 -run/0: {name: "done?", value: 7, type: 3, properties: ["done?": "boolean"]} <- lesser-than/15 {name: "i", value: 12, type: 1, properties: ["i": "integer"]}, {name: "0", value: 0, type: 0, properties: ["0": "literal"]} -run/0: ingredient 0 is i -mem/0: location 1013 is 1 -run/0: ingredient 1 is 0 -run/0: product 0 is 0 -mem/0: storing 0 in location 1008 -run/0: instruction integer-to-decimal-string/35 -run/0: break-if/11 {name: "done?", value: 7, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 6, type: , properties: ["": ]} -mem/0: location 1008 is 0 -run/0: ingredient 0 is 0 -run/0: jump-if fell through -run/0: instruction integer-to-decimal-string/36 -run/0: {name: "src", value: 14, type: 4, properties: ["src": "character"]} <- index/26 {name: "buf", value: 11, type: 2-5-4, properties: ["buf": "address":"array":"character", "deref": ]}, {name: "i", value: 12, type: 1, properties: ["i": "integer"]} -run/0: ingredient 0 is {name: "buf", value: 11, type: 2-5-4, properties: ["buf": "address":"array":"character", "deref": ]} -mem/0: location 1012 is 1064 -run/0: ingredient 1 is {name: "i", value: 12, type: 1, properties: ["i": "integer"]} -mem/0: location 1013 is 1 -run/0: address to copy is 1066 -run/0: its type is 4 -mem/0: location 1066 is 45 -run/0: product 0 is 45 -mem/0: storing 45 in location 1015 -run/0: instruction integer-to-decimal-string/37 -run/0: {name: "dest", value: 15, type: 2-4, properties: ["dest": "address":"character"]} <- index-address/27 {name: "result", value: 2, type: 2-5-4, properties: ["result": "address":"array":"character", "deref": ]}, {name: "j", value: 13, type: 1, properties: ["j": "integer"]} -run/0: ingredient 0 is result -mem/0: location 1003 is 1219 -run/0: ingredient 1 is {name: "j", value: 13, type: 1, properties: ["j": "integer"]} -mem/0: location 1014 is 0 -run/0: address to copy is 1220 -run/0: product 0 is 1220 -mem/0: storing 1220 in location 1016 -run/0: instruction integer-to-decimal-string/38 -run/0: {name: "dest", value: 15, type: 2-4, properties: ["dest": "address":"character", "deref": ]} <- copy/1 {name: "src", value: 14, type: 4, properties: ["src": "character"]} -run/0: ingredient 0 is src -mem/0: location 1015 is 45 -mem/0: location 1016 is 1220 -mem/0: storing 45 in location 1220 -run/0: instruction integer-to-decimal-string/39 -run/0: {name: "i", value: 12, type: 1, properties: ["i": "integer"]} <- subtract/3 {name: "i", value: 12, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is i -mem/0: location 1013 is 1 -run/0: ingredient 1 is 1 -run/0: product 0 is 0 -mem/0: storing 0 in location 1013 -run/0: instruction integer-to-decimal-string/40 -run/0: {name: "j", value: 13, type: 1, properties: ["j": "integer"]} <- add/2 {name: "j", value: 13, type: 1, properties: ["j": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is j -mem/0: location 1014 is 0 -run/0: ingredient 1 is 1 -run/0: product 0 is 1 -mem/0: storing 1 in location 1014 -run/0: instruction integer-to-decimal-string/41 -run/0: loop/10 {name: "", value: -8, type: , properties: ["": ]} -run/0: ingredient 0 is -8 -run/0: jumping to instruction 34 -run/0: instruction integer-to-decimal-string/34 -run/0: {name: "done?", value: 7, type: 3, properties: ["done?": "boolean"]} <- lesser-than/15 {name: "i", value: 12, type: 1, properties: ["i": "integer"]}, {name: "0", value: 0, type: 0, properties: ["0": "literal"]} -run/0: ingredient 0 is i -mem/0: location 1013 is 0 -run/0: ingredient 1 is 0 -run/0: product 0 is 0 -mem/0: storing 0 in location 1008 -run/0: instruction integer-to-decimal-string/35 -run/0: break-if/11 {name: "done?", value: 7, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 6, type: , properties: ["": ]} -mem/0: location 1008 is 0 -run/0: ingredient 0 is 0 -run/0: jump-if fell through -run/0: instruction integer-to-decimal-string/36 -run/0: {name: "src", value: 14, type: 4, properties: ["src": "character"]} <- index/26 {name: "buf", value: 11, type: 2-5-4, properties: ["buf": "address":"array":"character", "deref": ]}, {name: "i", value: 12, type: 1, properties: ["i": "integer"]} -run/0: ingredient 0 is {name: "buf", value: 11, type: 2-5-4, properties: ["buf": "address":"array":"character", "deref": ]} -mem/0: location 1012 is 1064 -run/0: ingredient 1 is {name: "i", value: 12, type: 1, properties: ["i": "integer"]} -mem/0: location 1013 is 0 -run/0: address to copy is 1065 -run/0: its type is 4 -mem/0: location 1065 is 49 -run/0: product 0 is 49 -mem/0: storing 49 in location 1015 -run/0: instruction integer-to-decimal-string/37 -run/0: {name: "dest", value: 15, type: 2-4, properties: ["dest": "address":"character"]} <- index-address/27 {name: "result", value: 2, type: 2-5-4, properties: ["result": "address":"array":"character", "deref": ]}, {name: "j", value: 13, type: 1, properties: ["j": "integer"]} -run/0: ingredient 0 is result -mem/0: location 1003 is 1219 -run/0: ingredient 1 is {name: "j", value: 13, type: 1, properties: ["j": "integer"]} -mem/0: location 1014 is 1 -run/0: address to copy is 1221 -run/0: product 0 is 1221 -mem/0: storing 1221 in location 1016 -run/0: instruction integer-to-decimal-string/38 -run/0: {name: "dest", value: 15, type: 2-4, properties: ["dest": "address":"character", "deref": ]} <- copy/1 {name: "src", value: 14, type: 4, properties: ["src": "character"]} -run/0: ingredient 0 is src -mem/0: location 1015 is 49 -mem/0: location 1016 is 1221 -mem/0: storing 49 in location 1221 -run/0: instruction integer-to-decimal-string/39 -run/0: {name: "i", value: 12, type: 1, properties: ["i": "integer"]} <- subtract/3 {name: "i", value: 12, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is i -mem/0: location 1013 is 0 -run/0: ingredient 1 is 1 -run/0: product 0 is -1 -mem/0: storing -1 in location 1013 -run/0: instruction integer-to-decimal-string/40 -run/0: {name: "j", value: 13, type: 1, properties: ["j": "integer"]} <- add/2 {name: "j", value: 13, type: 1, properties: ["j": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is j -mem/0: location 1014 is 1 -run/0: ingredient 1 is 1 -run/0: product 0 is 2 -mem/0: storing 2 in location 1014 -run/0: instruction integer-to-decimal-string/41 -run/0: loop/10 {name: "", value: -8, type: , properties: ["": ]} -run/0: ingredient 0 is -8 -run/0: jumping to instruction 34 -run/0: instruction integer-to-decimal-string/34 -run/0: {name: "done?", value: 7, type: 3, properties: ["done?": "boolean"]} <- lesser-than/15 {name: "i", value: 12, type: 1, properties: ["i": "integer"]}, {name: "0", value: 0, type: 0, properties: ["0": "literal"]} -run/0: ingredient 0 is i -mem/0: location 1013 is -1 -run/0: ingredient 1 is 0 -run/0: product 0 is 1 -mem/0: storing 1 in location 1008 -run/0: instruction integer-to-decimal-string/35 -run/0: break-if/11 {name: "done?", value: 7, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 6, type: , properties: ["": ]} -mem/0: location 1008 is 1 -run/0: ingredient 0 is 1 -run/0: ingredient 1 is -run/0: jumping to instruction 42 -run/0: instruction integer-to-decimal-string/43 -run/0: reply/33 {name: "result", value: 2, type: 2-5-4, properties: ["result": "address":"array":"character"]} -mem/0: location 1003 is 1219 -run/0: result 0 is 1219 -mem/0: storing 1219 in location 1 -run/0: instruction run1001/1 -run/0: {name: "2", value: 2, type: 5-4, properties: ["2": "array":"character", "raw": ]} <- copy/1 {name: "1", value: 1, type: 2-5-4, properties: ["1": "address":"array":"character", "deref": , "raw": ]} -run/0: ingredient 0 is 1 -mem/0: location 1 is 1219 -mem/0: location 1219 is 2 -mem/0: location 1220 is 45 -mem/0: location 1221 is 49 -mem/0: storing 2 in location 2 -mem/0: storing 45 in location 3 -mem/0: storing 49 in location 4 -run/0: instruction integer-to-decimal-digit-negative/1 -run/0: memory-should-contain/46 {name: " - 2 <- 2 - 3 <- 45 # '-' - 4 <- 49 # '1' - ", value: 0, type: 0, properties: [" - 2 <- 2 - 3 <- 45 # '-' - 4 <- 49 # '1' - ": "literal-string"]} -run/0: checking location 2 -run/0: checking location 3 -run/0: checking location 4 diff --git a/cpp/.traces/integer-to-decimal-digit-positive b/cpp/.traces/integer-to-decimal-digit-positive deleted file mode 100644 index c722fcab..00000000 --- a/cpp/.traces/integer-to-decimal-digit-positive +++ /dev/null @@ -1,837 +0,0 @@ -parse/0: instruction: run -parse/0: ingredient: {name: " - 1:address:array:character/raw <- integer-to-decimal-string 234:literal - 2:array:character/raw <- copy 1:address:array:character/deref/raw - ", value: 0, type: 0, properties: [" - 1:address:array:character/raw <- integer-to-decimal-string 234:literal - 2:array:character/raw <- copy 1:address:array:character/deref/raw - ": "literal-string"]} -parse/0: instruction: memory-should-contain -parse/0: ingredient: {name: " - 2:string <- [234] - ", value: 0, type: 0, properties: [" - 2:string <- [234] - ": "literal-string"]} -after-brace/0: recipe integer-to-decimal-digit-positive -after-brace/0: run ... -after-brace/0: memory-should-contain ... -new/0: routine allocated memory from 1000 to 101000 -schedule/0: integer-to-decimal-digit-positive -run/0: instruction integer-to-decimal-digit-positive/0 -run/0: run/45 {name: " - 1:address:array:character/raw <- integer-to-decimal-string 234:literal - 2:array:character/raw <- copy 1:address:array:character/deref/raw - ", value: 0, type: 0, properties: [" - 1:address:array:character/raw <- integer-to-decimal-string 234:literal - 2:array:character/raw <- copy 1:address:array:character/deref/raw - ": "literal-string"]} -parse/0: instruction: integer-to-decimal-string -parse/0: ingredient: {name: "234", value: 0, type: 0, properties: ["234": "literal"]} -parse/0: product: {name: "1", value: 0, type: 2-5-4, properties: ["1": "address":"array":"character", "raw": ]} -parse/0: instruction: copy -parse/0: ingredient: {name: "1", value: 0, type: 2-5-4, properties: ["1": "address":"array":"character", "deref": , "raw": ]} -parse/0: product: {name: "2", value: 0, type: 5-4, properties: ["2": "array":"character", "raw": ]} -after-brace/0: recipe run1001 -after-brace/0: integer-to-decimal-string ... -after-brace/0: copy ... -run/0: instruction run1001/0 -run/0: {name: "1", value: 1, type: 2-5-4, properties: ["1": "address":"array":"character", "raw": ]} <- integer-to-decimal-string/105 {name: "234", value: 234, type: 0, properties: ["234": "literal"]} -run/0: instruction integer-to-decimal-string/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/44 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} -mem/0: array size is 30 -mem/0: new alloc: 1000 -run/0: instruction integer-to-decimal-string/1 -run/0: {name: "n", value: 1, type: 1, properties: ["n": "integer"]} <- next-ingredient/30 -run/0: product 0 is 234 -mem/0: storing 234 in location 1002 -run/0: instruction integer-to-decimal-string/3 -run/0: break-if/11 {name: "n", value: 1, type: 1, properties: ["n": "integer"]}, {name: "", value: 2, type: , properties: ["": ]} -mem/0: location 1002 is 234 -run/0: ingredient 0 is 234 -run/0: ingredient 1 is -run/0: jumping to instruction 6 -run/0: instruction integer-to-decimal-string/7 -run/0: {name: "negate-result", value: 3, type: 3, properties: ["negate-result": "boolean"]} <- copy/1 {name: "0", value: 0, type: 0, properties: ["0": "literal"]} -run/0: ingredient 0 is 0 -mem/0: storing 0 in location 1004 -run/0: instruction integer-to-decimal-string/9 -run/0: {name: "negative?", value: 4, type: 3, properties: ["negative?": "boolean"]} <- lesser-than/15 {name: "n", value: 1, type: 1, properties: ["n": "integer"]}, {name: "0", value: 0, type: 0, properties: ["0": "literal"]} -run/0: ingredient 0 is n -mem/0: location 1002 is 234 -run/0: ingredient 1 is 0 -run/0: product 0 is 0 -mem/0: storing 0 in location 1005 -run/0: instruction integer-to-decimal-string/10 -run/0: break-unless/12 {name: "negative?", value: 4, type: 3, properties: ["negative?": "boolean"]}, {name: "", value: 2, type: , properties: ["": ]} -mem/0: location 1005 is 0 -run/0: ingredient 0 is 0 -run/0: ingredient 1 is -run/0: jumping to instruction 13 -run/0: instruction integer-to-decimal-string/14 -run/0: {name: "tmp", value: 5, type: 2-9, properties: ["tmp": "address":"buffer"]} <- init-buffer/101 {name: "30", value: 30, type: 0, properties: ["30": "literal"]} -run/0: instruction init-buffer/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/44 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} -mem/0: array size is 30 -mem/0: new alloc: 1031 -run/0: instruction init-buffer/1 -run/0: {name: "result", value: 1, type: 2-9, properties: ["result": "address":"buffer"]} <- new/44 {name: "buffer", value: 9, type: 0, properties: ["buffer": "type"]} -mem/0: new alloc: 1062 -mem/0: storing 1062 in location 1033 -run/0: instruction init-buffer/2 -run/0: {name: "len", value: 2, type: 2-1, properties: ["len": "address":"integer"]} <- get-address/25 {name: "result", value: 1, type: 2-9, properties: ["result": "address":"buffer", "deref": ]}, {name: "length", value: 0, type: 0, properties: ["length": "offset"]} -run/0: ingredient 0 is result -mem/0: location 1033 is 1062 -run/0: ingredient 1 is length -run/0: address to copy is 1062 -run/0: product 0 is 1062 -mem/0: storing 1062 in location 1034 -run/0: instruction init-buffer/3 -run/0: {name: "len", value: 2, type: 2-1, properties: ["len": "address":"integer", "deref": ]} <- copy/1 {name: "0", value: 0, type: 0, properties: ["0": "literal"]} -run/0: ingredient 0 is 0 -mem/0: location 1034 is 1062 -mem/0: storing 0 in location 1062 -run/0: instruction init-buffer/4 -run/0: {name: "s", value: 3, type: 2-2-5-4, properties: ["s": "address":"address":"array":"character"]} <- get-address/25 {name: "result", value: 1, type: 2-9, properties: ["result": "address":"buffer", "deref": ]}, {name: "data", value: 1, type: 0, properties: ["data": "offset"]} -run/0: ingredient 0 is result -mem/0: location 1033 is 1062 -run/0: ingredient 1 is data -run/0: address to copy is 1063 -run/0: product 0 is 1063 -mem/0: storing 1063 in location 1035 -run/0: instruction init-buffer/5 -run/0: {name: "capacity", value: 4, type: 1, properties: ["capacity": "integer"]} <- next-ingredient/30 -run/0: product 0 is 30 -mem/0: storing 30 in location 1036 -run/0: instruction init-buffer/6 -run/0: {name: "s", value: 3, type: 2-2-5-4, properties: ["s": "address":"address":"array":"character", "deref": ]} <- new/44 {name: "character", value: 4, type: 0, properties: ["character": "type"]}, {name: "capacity", value: 4, type: 1, properties: ["capacity": "integer"]} -mem/0: location 1036 is 30 -mem/0: array size is 30 -mem/0: new alloc: 1064 -mem/0: location 1035 is 1063 -mem/0: storing 1064 in location 1063 -run/0: instruction init-buffer/7 -run/0: reply/33 {name: "result", value: 1, type: 2-9, properties: ["result": "address":"buffer"]} -mem/0: location 1033 is 1062 -run/0: result 0 is 1062 -mem/0: storing 1062 in location 1006 -run/0: instruction integer-to-decimal-string/15 -run/0: {name: "digit-base", value: 6, type: 1, properties: ["digit-base": "integer"]} <- copy/1 {name: "48", value: 48, type: 0, properties: ["48": "literal"]} -run/0: ingredient 0 is 48 -mem/0: storing 48 in location 1007 -run/0: instruction integer-to-decimal-string/17 -run/0: {name: "done?", value: 7, type: 3, properties: ["done?": "boolean"]} <- equal/13 {name: "n", value: 1, type: 1, properties: ["n": "integer"]}, {name: "0", value: 0, type: 0, properties: ["0": "literal"]} -run/0: ingredient 0 is n -mem/0: location 1002 is 234 -run/0: ingredient 1 is 0 -run/0: product 0 is 0 -mem/0: storing 0 in location 1008 -run/0: instruction integer-to-decimal-string/18 -run/0: break-if/11 {name: "done?", value: 7, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 4, type: , properties: ["": ]} -mem/0: location 1008 is 0 -run/0: ingredient 0 is 0 -run/0: jump-if fell through -run/0: instruction integer-to-decimal-string/19 -run/0: {name: "n", value: 1, type: 1, properties: ["n": "integer"]}, {name: "digit", value: 8, type: 1, properties: ["digit": "integer"]} <- divide-with-remainder/6 {name: "n", value: 1, type: 1, properties: ["n": "integer"]}, {name: "10", value: 10, type: 0, properties: ["10": "literal"]} -run/0: ingredient 0 is n -mem/0: location 1002 is 234 -run/0: ingredient 1 is 10 -run/0: product 0 is 23 -mem/0: storing 23 in location 1002 -run/0: product 1 is 4 -mem/0: storing 4 in location 1009 -run/0: instruction integer-to-decimal-string/20 -run/0: {name: "c", value: 9, type: 4, properties: ["c": "character"]} <- add/2 {name: "digit-base", value: 6, type: 1, properties: ["digit-base": "integer"]}, {name: "digit", value: 8, type: 1, properties: ["digit": "integer"]} -run/0: ingredient 0 is digit-base -mem/0: location 1007 is 48 -run/0: ingredient 1 is digit -mem/0: location 1009 is 4 -run/0: product 0 is 52 -mem/0: storing 52 in location 1010 -run/0: instruction integer-to-decimal-string/21 -run/0: {name: "tmp", value: 5, type: 2-9, properties: ["tmp": "address":"buffer"]} <- buffer-append/104 {name: "tmp", value: 5, type: 2-9, properties: ["tmp": "address":"buffer"]}, {name: "c", value: 9, type: 4, properties: ["c": "character"]} -mem/0: location 1006 is 1062 -mem/0: location 1010 is 52 -run/0: instruction buffer-append/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/44 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} -mem/0: array size is 30 -mem/0: new alloc: 1095 -run/0: instruction buffer-append/1 -run/0: {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer"]} <- next-ingredient/30 -run/0: product 0 is 1062 -mem/0: storing 1062 in location 1097 -run/0: instruction buffer-append/2 -run/0: {name: "c", value: 2, type: 4, properties: ["c": "character"]} <- next-ingredient/30 -run/0: product 0 is 52 -mem/0: storing 52 in location 1098 -run/0: instruction buffer-append/4 -run/0: {name: "full?", value: 3, type: 3, properties: ["full?": "boolean"]} <- buffer-full?/103 {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer"]} -mem/0: location 1097 is 1062 -run/0: instruction buffer-full?/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/44 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} -mem/0: array size is 30 -mem/0: new alloc: 1126 -run/0: instruction buffer-full?/1 -run/0: {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer"]} <- next-ingredient/30 -run/0: product 0 is 1062 -mem/0: storing 1062 in location 1128 -run/0: instruction buffer-full?/2 -run/0: {name: "len", value: 2, type: 1, properties: ["len": "integer"]} <- get/24 {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer", "deref": ]}, {name: "length", value: 0, type: 0, properties: ["length": "offset"]} -run/0: ingredient 0 is in -mem/0: location 1128 is 1062 -run/0: ingredient 1 is length -run/0: address to copy is 1062 -run/0: its type is 1 -mem/0: location 1062 is 0 -run/0: product 0 is 0 -mem/0: storing 0 in location 1129 -run/0: instruction buffer-full?/3 -run/0: {name: "s", value: 3, type: 2-5-4, properties: ["s": "address":"array":"character"]} <- get/24 {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer", "deref": ]}, {name: "data", value: 1, type: 0, properties: ["data": "offset"]} -run/0: ingredient 0 is in -mem/0: location 1128 is 1062 -run/0: ingredient 1 is data -run/0: address to copy is 1063 -run/0: its type is 2 -mem/0: location 1063 is 1064 -run/0: product 0 is 1064 -mem/0: storing 1064 in location 1130 -run/0: instruction buffer-full?/4 -run/0: {name: "capacity", value: 4, type: 1, properties: ["capacity": "integer"]} <- length/28 {name: "s", value: 3, type: 2-5-4, properties: ["s": "address":"array":"character", "deref": ]} -mem/0: location 1130 is 1064 -mem/0: storing 30 in location 1131 -run/0: instruction buffer-full?/5 -run/0: {name: "result", value: 5, type: 3, properties: ["result": "boolean"]} <- greater-or-equal/16 {name: "len", value: 2, type: 1, properties: ["len": "integer"]}, {name: "capacity", value: 4, type: 1, properties: ["capacity": "integer"]} -run/0: ingredient 0 is len -mem/0: location 1129 is 0 -run/0: ingredient 1 is capacity -mem/0: location 1131 is 30 -run/0: product 0 is 0 -mem/0: storing 0 in location 1132 -run/0: instruction buffer-full?/6 -run/0: reply/33 {name: "result", value: 5, type: 3, properties: ["result": "boolean"]} -mem/0: location 1132 is 0 -run/0: result 0 is 0 -mem/0: storing 0 in location 1099 -run/0: instruction buffer-append/5 -run/0: break-unless/12 {name: "full?", value: 3, type: 3, properties: ["full?": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} -mem/0: location 1099 is 0 -run/0: ingredient 0 is 0 -run/0: ingredient 1 is -run/0: jumping to instruction 7 -run/0: instruction buffer-append/8 -run/0: {name: "len", value: 4, type: 2-1, properties: ["len": "address":"integer"]} <- get-address/25 {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer", "deref": ]}, {name: "length", value: 0, type: 0, properties: ["length": "offset"]} -run/0: ingredient 0 is in -mem/0: location 1097 is 1062 -run/0: ingredient 1 is length -run/0: address to copy is 1062 -run/0: product 0 is 1062 -mem/0: storing 1062 in location 1100 -run/0: instruction buffer-append/9 -run/0: {name: "s", value: 5, type: 2-5-4, properties: ["s": "address":"array":"character"]} <- get/24 {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer", "deref": ]}, {name: "data", value: 1, type: 0, properties: ["data": "offset"]} -run/0: ingredient 0 is in -mem/0: location 1097 is 1062 -run/0: ingredient 1 is data -run/0: address to copy is 1063 -run/0: its type is 2 -mem/0: location 1063 is 1064 -run/0: product 0 is 1064 -mem/0: storing 1064 in location 1101 -run/0: instruction buffer-append/10 -run/0: {name: "dest", value: 6, type: 2-4, properties: ["dest": "address":"character"]} <- index-address/27 {name: "s", value: 5, type: 2-5-4, properties: ["s": "address":"array":"character", "deref": ]}, {name: "len", value: 4, type: 2-1, properties: ["len": "address":"integer", "deref": ]} -run/0: ingredient 0 is s -mem/0: location 1101 is 1064 -run/0: ingredient 1 is {name: "len", value: 4, type: 2-1, properties: ["len": "address":"integer", "deref": ]} -mem/0: location 1100 is 1062 -mem/0: location 1062 is 0 -run/0: address to copy is 1065 -run/0: product 0 is 1065 -mem/0: storing 1065 in location 1102 -run/0: instruction buffer-append/11 -run/0: {name: "dest", value: 6, type: 2-4, properties: ["dest": "address":"character", "deref": ]} <- copy/1 {name: "c", value: 2, type: 4, properties: ["c": "character"]} -run/0: ingredient 0 is c -mem/0: location 1098 is 52 -mem/0: location 1102 is 1065 -mem/0: storing 52 in location 1065 -run/0: instruction buffer-append/12 -run/0: {name: "len", value: 4, type: 2-1, properties: ["len": "address":"integer", "deref": ]} <- add/2 {name: "len", value: 4, type: 2-1, properties: ["len": "address":"integer", "deref": ]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is len -mem/0: location 1100 is 1062 -mem/0: location 1062 is 0 -run/0: ingredient 1 is 1 -run/0: product 0 is 1 -mem/0: location 1100 is 1062 -mem/0: storing 1 in location 1062 -run/0: instruction buffer-append/13 -run/0: reply/33 {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer", "same-as-ingredient": "0"]} -mem/0: location 1097 is 1062 -run/0: result 0 is 1062 -mem/0: storing 1062 in location 1006 -run/0: instruction integer-to-decimal-string/22 -run/0: loop/10 {name: "", value: -6, type: , properties: ["": ]} -run/0: ingredient 0 is -6 -run/0: jumping to instruction 17 -run/0: instruction integer-to-decimal-string/17 -run/0: {name: "done?", value: 7, type: 3, properties: ["done?": "boolean"]} <- equal/13 {name: "n", value: 1, type: 1, properties: ["n": "integer"]}, {name: "0", value: 0, type: 0, properties: ["0": "literal"]} -run/0: ingredient 0 is n -mem/0: location 1002 is 23 -run/0: ingredient 1 is 0 -run/0: product 0 is 0 -mem/0: storing 0 in location 1008 -run/0: instruction integer-to-decimal-string/18 -run/0: break-if/11 {name: "done?", value: 7, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 4, type: , properties: ["": ]} -mem/0: location 1008 is 0 -run/0: ingredient 0 is 0 -run/0: jump-if fell through -run/0: instruction integer-to-decimal-string/19 -run/0: {name: "n", value: 1, type: 1, properties: ["n": "integer"]}, {name: "digit", value: 8, type: 1, properties: ["digit": "integer"]} <- divide-with-remainder/6 {name: "n", value: 1, type: 1, properties: ["n": "integer"]}, {name: "10", value: 10, type: 0, properties: ["10": "literal"]} -run/0: ingredient 0 is n -mem/0: location 1002 is 23 -run/0: ingredient 1 is 10 -run/0: product 0 is 2 -mem/0: storing 2 in location 1002 -run/0: product 1 is 3 -mem/0: storing 3 in location 1009 -run/0: instruction integer-to-decimal-string/20 -run/0: {name: "c", value: 9, type: 4, properties: ["c": "character"]} <- add/2 {name: "digit-base", value: 6, type: 1, properties: ["digit-base": "integer"]}, {name: "digit", value: 8, type: 1, properties: ["digit": "integer"]} -run/0: ingredient 0 is digit-base -mem/0: location 1007 is 48 -run/0: ingredient 1 is digit -mem/0: location 1009 is 3 -run/0: product 0 is 51 -mem/0: storing 51 in location 1010 -run/0: instruction integer-to-decimal-string/21 -run/0: {name: "tmp", value: 5, type: 2-9, properties: ["tmp": "address":"buffer"]} <- buffer-append/104 {name: "tmp", value: 5, type: 2-9, properties: ["tmp": "address":"buffer"]}, {name: "c", value: 9, type: 4, properties: ["c": "character"]} -mem/0: location 1006 is 1062 -mem/0: location 1010 is 51 -run/0: instruction buffer-append/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/44 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} -mem/0: array size is 30 -mem/0: new alloc: 1157 -run/0: instruction buffer-append/1 -run/0: {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer"]} <- next-ingredient/30 -run/0: product 0 is 1062 -mem/0: storing 1062 in location 1159 -run/0: instruction buffer-append/2 -run/0: {name: "c", value: 2, type: 4, properties: ["c": "character"]} <- next-ingredient/30 -run/0: product 0 is 51 -mem/0: storing 51 in location 1160 -run/0: instruction buffer-append/4 -run/0: {name: "full?", value: 3, type: 3, properties: ["full?": "boolean"]} <- buffer-full?/103 {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer"]} -mem/0: location 1159 is 1062 -run/0: instruction buffer-full?/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/44 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} -mem/0: array size is 30 -mem/0: new alloc: 1188 -run/0: instruction buffer-full?/1 -run/0: {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer"]} <- next-ingredient/30 -run/0: product 0 is 1062 -mem/0: storing 1062 in location 1190 -run/0: instruction buffer-full?/2 -run/0: {name: "len", value: 2, type: 1, properties: ["len": "integer"]} <- get/24 {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer", "deref": ]}, {name: "length", value: 0, type: 0, properties: ["length": "offset"]} -run/0: ingredient 0 is in -mem/0: location 1190 is 1062 -run/0: ingredient 1 is length -run/0: address to copy is 1062 -run/0: its type is 1 -mem/0: location 1062 is 1 -run/0: product 0 is 1 -mem/0: storing 1 in location 1191 -run/0: instruction buffer-full?/3 -run/0: {name: "s", value: 3, type: 2-5-4, properties: ["s": "address":"array":"character"]} <- get/24 {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer", "deref": ]}, {name: "data", value: 1, type: 0, properties: ["data": "offset"]} -run/0: ingredient 0 is in -mem/0: location 1190 is 1062 -run/0: ingredient 1 is data -run/0: address to copy is 1063 -run/0: its type is 2 -mem/0: location 1063 is 1064 -run/0: product 0 is 1064 -mem/0: storing 1064 in location 1192 -run/0: instruction buffer-full?/4 -run/0: {name: "capacity", value: 4, type: 1, properties: ["capacity": "integer"]} <- length/28 {name: "s", value: 3, type: 2-5-4, properties: ["s": "address":"array":"character", "deref": ]} -mem/0: location 1192 is 1064 -mem/0: storing 30 in location 1193 -run/0: instruction buffer-full?/5 -run/0: {name: "result", value: 5, type: 3, properties: ["result": "boolean"]} <- greater-or-equal/16 {name: "len", value: 2, type: 1, properties: ["len": "integer"]}, {name: "capacity", value: 4, type: 1, properties: ["capacity": "integer"]} -run/0: ingredient 0 is len -mem/0: location 1191 is 1 -run/0: ingredient 1 is capacity -mem/0: location 1193 is 30 -run/0: product 0 is 0 -mem/0: storing 0 in location 1194 -run/0: instruction buffer-full?/6 -run/0: reply/33 {name: "result", value: 5, type: 3, properties: ["result": "boolean"]} -mem/0: location 1194 is 0 -run/0: result 0 is 0 -mem/0: storing 0 in location 1161 -run/0: instruction buffer-append/5 -run/0: break-unless/12 {name: "full?", value: 3, type: 3, properties: ["full?": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} -mem/0: location 1161 is 0 -run/0: ingredient 0 is 0 -run/0: ingredient 1 is -run/0: jumping to instruction 7 -run/0: instruction buffer-append/8 -run/0: {name: "len", value: 4, type: 2-1, properties: ["len": "address":"integer"]} <- get-address/25 {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer", "deref": ]}, {name: "length", value: 0, type: 0, properties: ["length": "offset"]} -run/0: ingredient 0 is in -mem/0: location 1159 is 1062 -run/0: ingredient 1 is length -run/0: address to copy is 1062 -run/0: product 0 is 1062 -mem/0: storing 1062 in location 1162 -run/0: instruction buffer-append/9 -run/0: {name: "s", value: 5, type: 2-5-4, properties: ["s": "address":"array":"character"]} <- get/24 {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer", "deref": ]}, {name: "data", value: 1, type: 0, properties: ["data": "offset"]} -run/0: ingredient 0 is in -mem/0: location 1159 is 1062 -run/0: ingredient 1 is data -run/0: address to copy is 1063 -run/0: its type is 2 -mem/0: location 1063 is 1064 -run/0: product 0 is 1064 -mem/0: storing 1064 in location 1163 -run/0: instruction buffer-append/10 -run/0: {name: "dest", value: 6, type: 2-4, properties: ["dest": "address":"character"]} <- index-address/27 {name: "s", value: 5, type: 2-5-4, properties: ["s": "address":"array":"character", "deref": ]}, {name: "len", value: 4, type: 2-1, properties: ["len": "address":"integer", "deref": ]} -run/0: ingredient 0 is s -mem/0: location 1163 is 1064 -run/0: ingredient 1 is {name: "len", value: 4, type: 2-1, properties: ["len": "address":"integer", "deref": ]} -mem/0: location 1162 is 1062 -mem/0: location 1062 is 1 -run/0: address to copy is 1066 -run/0: product 0 is 1066 -mem/0: storing 1066 in location 1164 -run/0: instruction buffer-append/11 -run/0: {name: "dest", value: 6, type: 2-4, properties: ["dest": "address":"character", "deref": ]} <- copy/1 {name: "c", value: 2, type: 4, properties: ["c": "character"]} -run/0: ingredient 0 is c -mem/0: location 1160 is 51 -mem/0: location 1164 is 1066 -mem/0: storing 51 in location 1066 -run/0: instruction buffer-append/12 -run/0: {name: "len", value: 4, type: 2-1, properties: ["len": "address":"integer", "deref": ]} <- add/2 {name: "len", value: 4, type: 2-1, properties: ["len": "address":"integer", "deref": ]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is len -mem/0: location 1162 is 1062 -mem/0: location 1062 is 1 -run/0: ingredient 1 is 1 -run/0: product 0 is 2 -mem/0: location 1162 is 1062 -mem/0: storing 2 in location 1062 -run/0: instruction buffer-append/13 -run/0: reply/33 {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer", "same-as-ingredient": "0"]} -mem/0: location 1159 is 1062 -run/0: result 0 is 1062 -mem/0: storing 1062 in location 1006 -run/0: instruction integer-to-decimal-string/22 -run/0: loop/10 {name: "", value: -6, type: , properties: ["": ]} -run/0: ingredient 0 is -6 -run/0: jumping to instruction 17 -run/0: instruction integer-to-decimal-string/17 -run/0: {name: "done?", value: 7, type: 3, properties: ["done?": "boolean"]} <- equal/13 {name: "n", value: 1, type: 1, properties: ["n": "integer"]}, {name: "0", value: 0, type: 0, properties: ["0": "literal"]} -run/0: ingredient 0 is n -mem/0: location 1002 is 2 -run/0: ingredient 1 is 0 -run/0: product 0 is 0 -mem/0: storing 0 in location 1008 -run/0: instruction integer-to-decimal-string/18 -run/0: break-if/11 {name: "done?", value: 7, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 4, type: , properties: ["": ]} -mem/0: location 1008 is 0 -run/0: ingredient 0 is 0 -run/0: jump-if fell through -run/0: instruction integer-to-decimal-string/19 -run/0: {name: "n", value: 1, type: 1, properties: ["n": "integer"]}, {name: "digit", value: 8, type: 1, properties: ["digit": "integer"]} <- divide-with-remainder/6 {name: "n", value: 1, type: 1, properties: ["n": "integer"]}, {name: "10", value: 10, type: 0, properties: ["10": "literal"]} -run/0: ingredient 0 is n -mem/0: location 1002 is 2 -run/0: ingredient 1 is 10 -run/0: product 0 is 0 -mem/0: storing 0 in location 1002 -run/0: product 1 is 2 -mem/0: storing 2 in location 1009 -run/0: instruction integer-to-decimal-string/20 -run/0: {name: "c", value: 9, type: 4, properties: ["c": "character"]} <- add/2 {name: "digit-base", value: 6, type: 1, properties: ["digit-base": "integer"]}, {name: "digit", value: 8, type: 1, properties: ["digit": "integer"]} -run/0: ingredient 0 is digit-base -mem/0: location 1007 is 48 -run/0: ingredient 1 is digit -mem/0: location 1009 is 2 -run/0: product 0 is 50 -mem/0: storing 50 in location 1010 -run/0: instruction integer-to-decimal-string/21 -run/0: {name: "tmp", value: 5, type: 2-9, properties: ["tmp": "address":"buffer"]} <- buffer-append/104 {name: "tmp", value: 5, type: 2-9, properties: ["tmp": "address":"buffer"]}, {name: "c", value: 9, type: 4, properties: ["c": "character"]} -mem/0: location 1006 is 1062 -mem/0: location 1010 is 50 -run/0: instruction buffer-append/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/44 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} -mem/0: array size is 30 -mem/0: new alloc: 1219 -run/0: instruction buffer-append/1 -run/0: {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer"]} <- next-ingredient/30 -run/0: product 0 is 1062 -mem/0: storing 1062 in location 1221 -run/0: instruction buffer-append/2 -run/0: {name: "c", value: 2, type: 4, properties: ["c": "character"]} <- next-ingredient/30 -run/0: product 0 is 50 -mem/0: storing 50 in location 1222 -run/0: instruction buffer-append/4 -run/0: {name: "full?", value: 3, type: 3, properties: ["full?": "boolean"]} <- buffer-full?/103 {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer"]} -mem/0: location 1221 is 1062 -run/0: instruction buffer-full?/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/44 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} -mem/0: array size is 30 -mem/0: new alloc: 1250 -run/0: instruction buffer-full?/1 -run/0: {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer"]} <- next-ingredient/30 -run/0: product 0 is 1062 -mem/0: storing 1062 in location 1252 -run/0: instruction buffer-full?/2 -run/0: {name: "len", value: 2, type: 1, properties: ["len": "integer"]} <- get/24 {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer", "deref": ]}, {name: "length", value: 0, type: 0, properties: ["length": "offset"]} -run/0: ingredient 0 is in -mem/0: location 1252 is 1062 -run/0: ingredient 1 is length -run/0: address to copy is 1062 -run/0: its type is 1 -mem/0: location 1062 is 2 -run/0: product 0 is 2 -mem/0: storing 2 in location 1253 -run/0: instruction buffer-full?/3 -run/0: {name: "s", value: 3, type: 2-5-4, properties: ["s": "address":"array":"character"]} <- get/24 {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer", "deref": ]}, {name: "data", value: 1, type: 0, properties: ["data": "offset"]} -run/0: ingredient 0 is in -mem/0: location 1252 is 1062 -run/0: ingredient 1 is data -run/0: address to copy is 1063 -run/0: its type is 2 -mem/0: location 1063 is 1064 -run/0: product 0 is 1064 -mem/0: storing 1064 in location 1254 -run/0: instruction buffer-full?/4 -run/0: {name: "capacity", value: 4, type: 1, properties: ["capacity": "integer"]} <- length/28 {name: "s", value: 3, type: 2-5-4, properties: ["s": "address":"array":"character", "deref": ]} -mem/0: location 1254 is 1064 -mem/0: storing 30 in location 1255 -run/0: instruction buffer-full?/5 -run/0: {name: "result", value: 5, type: 3, properties: ["result": "boolean"]} <- greater-or-equal/16 {name: "len", value: 2, type: 1, properties: ["len": "integer"]}, {name: "capacity", value: 4, type: 1, properties: ["capacity": "integer"]} -run/0: ingredient 0 is len -mem/0: location 1253 is 2 -run/0: ingredient 1 is capacity -mem/0: location 1255 is 30 -run/0: product 0 is 0 -mem/0: storing 0 in location 1256 -run/0: instruction buffer-full?/6 -run/0: reply/33 {name: "result", value: 5, type: 3, properties: ["result": "boolean"]} -mem/0: location 1256 is 0 -run/0: result 0 is 0 -mem/0: storing 0 in location 1223 -run/0: instruction buffer-append/5 -run/0: break-unless/12 {name: "full?", value: 3, type: 3, properties: ["full?": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} -mem/0: location 1223 is 0 -run/0: ingredient 0 is 0 -run/0: ingredient 1 is -run/0: jumping to instruction 7 -run/0: instruction buffer-append/8 -run/0: {name: "len", value: 4, type: 2-1, properties: ["len": "address":"integer"]} <- get-address/25 {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer", "deref": ]}, {name: "length", value: 0, type: 0, properties: ["length": "offset"]} -run/0: ingredient 0 is in -mem/0: location 1221 is 1062 -run/0: ingredient 1 is length -run/0: address to copy is 1062 -run/0: product 0 is 1062 -mem/0: storing 1062 in location 1224 -run/0: instruction buffer-append/9 -run/0: {name: "s", value: 5, type: 2-5-4, properties: ["s": "address":"array":"character"]} <- get/24 {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer", "deref": ]}, {name: "data", value: 1, type: 0, properties: ["data": "offset"]} -run/0: ingredient 0 is in -mem/0: location 1221 is 1062 -run/0: ingredient 1 is data -run/0: address to copy is 1063 -run/0: its type is 2 -mem/0: location 1063 is 1064 -run/0: product 0 is 1064 -mem/0: storing 1064 in location 1225 -run/0: instruction buffer-append/10 -run/0: {name: "dest", value: 6, type: 2-4, properties: ["dest": "address":"character"]} <- index-address/27 {name: "s", value: 5, type: 2-5-4, properties: ["s": "address":"array":"character", "deref": ]}, {name: "len", value: 4, type: 2-1, properties: ["len": "address":"integer", "deref": ]} -run/0: ingredient 0 is s -mem/0: location 1225 is 1064 -run/0: ingredient 1 is {name: "len", value: 4, type: 2-1, properties: ["len": "address":"integer", "deref": ]} -mem/0: location 1224 is 1062 -mem/0: location 1062 is 2 -run/0: address to copy is 1067 -run/0: product 0 is 1067 -mem/0: storing 1067 in location 1226 -run/0: instruction buffer-append/11 -run/0: {name: "dest", value: 6, type: 2-4, properties: ["dest": "address":"character", "deref": ]} <- copy/1 {name: "c", value: 2, type: 4, properties: ["c": "character"]} -run/0: ingredient 0 is c -mem/0: location 1222 is 50 -mem/0: location 1226 is 1067 -mem/0: storing 50 in location 1067 -run/0: instruction buffer-append/12 -run/0: {name: "len", value: 4, type: 2-1, properties: ["len": "address":"integer", "deref": ]} <- add/2 {name: "len", value: 4, type: 2-1, properties: ["len": "address":"integer", "deref": ]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is len -mem/0: location 1224 is 1062 -mem/0: location 1062 is 2 -run/0: ingredient 1 is 1 -run/0: product 0 is 3 -mem/0: location 1224 is 1062 -mem/0: storing 3 in location 1062 -run/0: instruction buffer-append/13 -run/0: reply/33 {name: "in", value: 1, type: 2-9, properties: ["in": "address":"buffer", "same-as-ingredient": "0"]} -mem/0: location 1221 is 1062 -run/0: result 0 is 1062 -mem/0: storing 1062 in location 1006 -run/0: instruction integer-to-decimal-string/22 -run/0: loop/10 {name: "", value: -6, type: , properties: ["": ]} -run/0: ingredient 0 is -6 -run/0: jumping to instruction 17 -run/0: instruction integer-to-decimal-string/17 -run/0: {name: "done?", value: 7, type: 3, properties: ["done?": "boolean"]} <- equal/13 {name: "n", value: 1, type: 1, properties: ["n": "integer"]}, {name: "0", value: 0, type: 0, properties: ["0": "literal"]} -run/0: ingredient 0 is n -mem/0: location 1002 is 0 -run/0: ingredient 1 is 0 -run/0: product 0 is 1 -mem/0: storing 1 in location 1008 -run/0: instruction integer-to-decimal-string/18 -run/0: break-if/11 {name: "done?", value: 7, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 4, type: , properties: ["": ]} -mem/0: location 1008 is 1 -run/0: ingredient 0 is 1 -run/0: ingredient 1 is -run/0: jumping to instruction 23 -run/0: instruction integer-to-decimal-string/25 -run/0: break-unless/12 {name: "negate-result", value: 3, type: 3, properties: ["negate-result": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} -mem/0: location 1004 is 0 -run/0: ingredient 0 is 0 -run/0: ingredient 1 is -run/0: jumping to instruction 27 -run/0: instruction integer-to-decimal-string/28 -run/0: {name: "len", value: 10, type: 1, properties: ["len": "integer"]} <- get/24 {name: "tmp", value: 5, type: 2-9, properties: ["tmp": "address":"buffer", "deref": ]}, {name: "length", value: 0, type: 0, properties: ["length": "offset"]} -run/0: ingredient 0 is tmp -mem/0: location 1006 is 1062 -run/0: ingredient 1 is length -run/0: address to copy is 1062 -run/0: its type is 1 -mem/0: location 1062 is 3 -run/0: product 0 is 3 -mem/0: storing 3 in location 1011 -run/0: instruction integer-to-decimal-string/29 -run/0: {name: "buf", value: 11, type: 2-5-4, properties: ["buf": "address":"array":"character"]} <- get/24 {name: "tmp", value: 5, type: 2-9, properties: ["tmp": "address":"buffer", "deref": ]}, {name: "data", value: 1, type: 0, properties: ["data": "offset"]} -run/0: ingredient 0 is tmp -mem/0: location 1006 is 1062 -run/0: ingredient 1 is data -run/0: address to copy is 1063 -run/0: its type is 2 -mem/0: location 1063 is 1064 -run/0: product 0 is 1064 -mem/0: storing 1064 in location 1012 -run/0: instruction integer-to-decimal-string/30 -run/0: {name: "result", value: 2, type: 2-5-4, properties: ["result": "address":"array":"character"]} <- new/44 {name: "character", value: 4, type: 0, properties: ["character": "type"]}, {name: "len", value: 10, type: 1, properties: ["len": "integer"]} -mem/0: location 1011 is 3 -mem/0: array size is 3 -mem/0: new alloc: 1281 -mem/0: storing 1281 in location 1003 -run/0: instruction integer-to-decimal-string/31 -run/0: {name: "i", value: 12, type: 1, properties: ["i": "integer"]} <- subtract/3 {name: "len", value: 10, type: 1, properties: ["len": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is len -mem/0: location 1011 is 3 -run/0: ingredient 1 is 1 -run/0: product 0 is 2 -mem/0: storing 2 in location 1013 -run/0: instruction integer-to-decimal-string/32 -run/0: {name: "j", value: 13, type: 1, properties: ["j": "integer"]} <- copy/1 {name: "0", value: 0, type: 0, properties: ["0": "literal"]} -run/0: ingredient 0 is 0 -mem/0: storing 0 in location 1014 -run/0: instruction integer-to-decimal-string/34 -run/0: {name: "done?", value: 7, type: 3, properties: ["done?": "boolean"]} <- lesser-than/15 {name: "i", value: 12, type: 1, properties: ["i": "integer"]}, {name: "0", value: 0, type: 0, properties: ["0": "literal"]} -run/0: ingredient 0 is i -mem/0: location 1013 is 2 -run/0: ingredient 1 is 0 -run/0: product 0 is 0 -mem/0: storing 0 in location 1008 -run/0: instruction integer-to-decimal-string/35 -run/0: break-if/11 {name: "done?", value: 7, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 6, type: , properties: ["": ]} -mem/0: location 1008 is 0 -run/0: ingredient 0 is 0 -run/0: jump-if fell through -run/0: instruction integer-to-decimal-string/36 -run/0: {name: "src", value: 14, type: 4, properties: ["src": "character"]} <- index/26 {name: "buf", value: 11, type: 2-5-4, properties: ["buf": "address":"array":"character", "deref": ]}, {name: "i", value: 12, type: 1, properties: ["i": "integer"]} -run/0: ingredient 0 is {name: "buf", value: 11, type: 2-5-4, properties: ["buf": "address":"array":"character", "deref": ]} -mem/0: location 1012 is 1064 -run/0: ingredient 1 is {name: "i", value: 12, type: 1, properties: ["i": "integer"]} -mem/0: location 1013 is 2 -run/0: address to copy is 1067 -run/0: its type is 4 -mem/0: location 1067 is 50 -run/0: product 0 is 50 -mem/0: storing 50 in location 1015 -run/0: instruction integer-to-decimal-string/37 -run/0: {name: "dest", value: 15, type: 2-4, properties: ["dest": "address":"character"]} <- index-address/27 {name: "result", value: 2, type: 2-5-4, properties: ["result": "address":"array":"character", "deref": ]}, {name: "j", value: 13, type: 1, properties: ["j": "integer"]} -run/0: ingredient 0 is result -mem/0: location 1003 is 1281 -run/0: ingredient 1 is {name: "j", value: 13, type: 1, properties: ["j": "integer"]} -mem/0: location 1014 is 0 -run/0: address to copy is 1282 -run/0: product 0 is 1282 -mem/0: storing 1282 in location 1016 -run/0: instruction integer-to-decimal-string/38 -run/0: {name: "dest", value: 15, type: 2-4, properties: ["dest": "address":"character", "deref": ]} <- copy/1 {name: "src", value: 14, type: 4, properties: ["src": "character"]} -run/0: ingredient 0 is src -mem/0: location 1015 is 50 -mem/0: location 1016 is 1282 -mem/0: storing 50 in location 1282 -run/0: instruction integer-to-decimal-string/39 -run/0: {name: "i", value: 12, type: 1, properties: ["i": "integer"]} <- subtract/3 {name: "i", value: 12, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is i -mem/0: location 1013 is 2 -run/0: ingredient 1 is 1 -run/0: product 0 is 1 -mem/0: storing 1 in location 1013 -run/0: instruction integer-to-decimal-string/40 -run/0: {name: "j", value: 13, type: 1, properties: ["j": "integer"]} <- add/2 {name: "j", value: 13, type: 1, properties: ["j": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is j -mem/0: location 1014 is 0 -run/0: ingredient 1 is 1 -run/0: product 0 is 1 -mem/0: storing 1 in location 1014 -run/0: instruction integer-to-decimal-string/41 -run/0: loop/10 {name: "", value: -8, type: , properties: ["": ]} -run/0: ingredient 0 is -8 -run/0: jumping to instruction 34 -run/0: instruction integer-to-decimal-string/34 -run/0: {name: "done?", value: 7, type: 3, properties: ["done?": "boolean"]} <- lesser-than/15 {name: "i", value: 12, type: 1, properties: ["i": "integer"]}, {name: "0", value: 0, type: 0, properties: ["0": "literal"]} -run/0: ingredient 0 is i -mem/0: location 1013 is 1 -run/0: ingredient 1 is 0 -run/0: product 0 is 0 -mem/0: storing 0 in location 1008 -run/0: instruction integer-to-decimal-string/35 -run/0: break-if/11 {name: "done?", value: 7, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 6, type: , properties: ["": ]} -mem/0: location 1008 is 0 -run/0: ingredient 0 is 0 -run/0: jump-if fell through -run/0: instruction integer-to-decimal-string/36 -run/0: {name: "src", value: 14, type: 4, properties: ["src": "character"]} <- index/26 {name: "buf", value: 11, type: 2-5-4, properties: ["buf": "address":"array":"character", "deref": ]}, {name: "i", value: 12, type: 1, properties: ["i": "integer"]} -run/0: ingredient 0 is {name: "buf", value: 11, type: 2-5-4, properties: ["buf": "address":"array":"character", "deref": ]} -mem/0: location 1012 is 1064 -run/0: ingredient 1 is {name: "i", value: 12, type: 1, properties: ["i": "integer"]} -mem/0: location 1013 is 1 -run/0: address to copy is 1066 -run/0: its type is 4 -mem/0: location 1066 is 51 -run/0: product 0 is 51 -mem/0: storing 51 in location 1015 -run/0: instruction integer-to-decimal-string/37 -run/0: {name: "dest", value: 15, type: 2-4, properties: ["dest": "address":"character"]} <- index-address/27 {name: "result", value: 2, type: 2-5-4, properties: ["result": "address":"array":"character", "deref": ]}, {name: "j", value: 13, type: 1, properties: ["j": "integer"]} -run/0: ingredient 0 is result -mem/0: location 1003 is 1281 -run/0: ingredient 1 is {name: "j", value: 13, type: 1, properties: ["j": "integer"]} -mem/0: location 1014 is 1 -run/0: address to copy is 1283 -run/0: product 0 is 1283 -mem/0: storing 1283 in location 1016 -run/0: instruction integer-to-decimal-string/38 -run/0: {name: "dest", value: 15, type: 2-4, properties: ["dest": "address":"character", "deref": ]} <- copy/1 {name: "src", value: 14, type: 4, properties: ["src": "character"]} -run/0: ingredient 0 is src -mem/0: location 1015 is 51 -mem/0: location 1016 is 1283 -mem/0: storing 51 in location 1283 -run/0: instruction integer-to-decimal-string/39 -run/0: {name: "i", value: 12, type: 1, properties: ["i": "integer"]} <- subtract/3 {name: "i", value: 12, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is i -mem/0: location 1013 is 1 -run/0: ingredient 1 is 1 -run/0: product 0 is 0 -mem/0: storing 0 in location 1013 -run/0: instruction integer-to-decimal-string/40 -run/0: {name: "j", value: 13, type: 1, properties: ["j": "integer"]} <- add/2 {name: "j", value: 13, type: 1, properties: ["j": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is j -mem/0: location 1014 is 1 -run/0: ingredient 1 is 1 -run/0: product 0 is 2 -mem/0: storing 2 in location 1014 -run/0: instruction integer-to-decimal-string/41 -run/0: loop/10 {name: "", value: -8, type: , properties: ["": ]} -run/0: ingredient 0 is -8 -run/0: jumping to instruction 34 -run/0: instruction integer-to-decimal-string/34 -run/0: {name: "done?", value: 7, type: 3, properties: ["done?": "boolean"]} <- lesser-than/15 {name: "i", value: 12, type: 1, properties: ["i": "integer"]}, {name: "0", value: 0, type: 0, properties: ["0": "literal"]} -run/0: ingredient 0 is i -mem/0: location 1013 is 0 -run/0: ingredient 1 is 0 -run/0: product 0 is 0 -mem/0: storing 0 in location 1008 -run/0: instruction integer-to-decimal-string/35 -run/0: break-if/11 {name: "done?", value: 7, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 6, type: , properties: ["": ]} -mem/0: location 1008 is 0 -run/0: ingredient 0 is 0 -run/0: jump-if fell through -run/0: instruction integer-to-decimal-string/36 -run/0: {name: "src", value: 14, type: 4, properties: ["src": "character"]} <- index/26 {name: "buf", value: 11, type: 2-5-4, properties: ["buf": "address":"array":"character", "deref": ]}, {name: "i", value: 12, type: 1, properties: ["i": "integer"]} -run/0: ingredient 0 is {name: "buf", value: 11, type: 2-5-4, properties: ["buf": "address":"array":"character", "deref": ]} -mem/0: location 1012 is 1064 -run/0: ingredient 1 is {name: "i", value: 12, type: 1, properties: ["i": "integer"]} -mem/0: location 1013 is 0 -run/0: address to copy is 1065 -run/0: its type is 4 -mem/0: location 1065 is 52 -run/0: product 0 is 52 -mem/0: storing 52 in location 1015 -run/0: instruction integer-to-decimal-string/37 -run/0: {name: "dest", value: 15, type: 2-4, properties: ["dest": "address":"character"]} <- index-address/27 {name: "result", value: 2, type: 2-5-4, properties: ["result": "address":"array":"character", "deref": ]}, {name: "j", value: 13, type: 1, properties: ["j": "integer"]} -run/0: ingredient 0 is result -mem/0: location 1003 is 1281 -run/0: ingredient 1 is {name: "j", value: 13, type: 1, properties: ["j": "integer"]} -mem/0: location 1014 is 2 -run/0: address to copy is 1284 -run/0: product 0 is 1284 -mem/0: storing 1284 in location 1016 -run/0: instruction integer-to-decimal-string/38 -run/0: {name: "dest", value: 15, type: 2-4, properties: ["dest": "address":"character", "deref": ]} <- copy/1 {name: "src", value: 14, type: 4, properties: ["src": "character"]} -run/0: ingredient 0 is src -mem/0: location 1015 is 52 -mem/0: location 1016 is 1284 -mem/0: storing 52 in location 1284 -run/0: instruction integer-to-decimal-string/39 -run/0: {name: "i", value: 12, type: 1, properties: ["i": "integer"]} <- subtract/3 {name: "i", value: 12, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is i -mem/0: location 1013 is 0 -run/0: ingredient 1 is 1 -run/0: product 0 is -1 -mem/0: storing -1 in location 1013 -run/0: instruction integer-to-decimal-string/40 -run/0: {name: "j", value: 13, type: 1, properties: ["j": "integer"]} <- add/2 {name: "j", value: 13, type: 1, properties: ["j": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is j -mem/0: location 1014 is 2 -run/0: ingredient 1 is 1 -run/0: product 0 is 3 -mem/0: storing 3 in location 1014 -run/0: instruction integer-to-decimal-string/41 -run/0: loop/10 {name: "", value: -8, type: , properties: ["": ]} -run/0: ingredient 0 is -8 -run/0: jumping to instruction 34 -run/0: instruction integer-to-decimal-string/34 -run/0: {name: "done?", value: 7, type: 3, properties: ["done?": "boolean"]} <- lesser-than/15 {name: "i", value: 12, type: 1, properties: ["i": "integer"]}, {name: "0", value: 0, type: 0, properties: ["0": "literal"]} -run/0: ingredient 0 is i -mem/0: location 1013 is -1 -run/0: ingredient 1 is 0 -run/0: product 0 is 1 -mem/0: storing 1 in location 1008 -run/0: instruction integer-to-decimal-string/35 -run/0: break-if/11 {name: "done?", value: 7, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 6, type: , properties: ["": ]} -mem/0: location 1008 is 1 -run/0: ingredient 0 is 1 -run/0: ingredient 1 is -run/0: jumping to instruction 42 -run/0: instruction integer-to-decimal-string/43 -run/0: reply/33 {name: "result", value: 2, type: 2-5-4, properties: ["result": "address":"array":"character"]} -mem/0: location 1003 is 1281 -run/0: result 0 is 1281 -mem/0: storing 1281 in location 1 -run/0: instruction run1001/1 -run/0: {name: "2", value: 2, type: 5-4, properties: ["2": "array":"character", "raw": ]} <- copy/1 {name: "1", value: 1, type: 2-5-4, properties: ["1": "address":"array":"character", "deref": , "raw": ]} -run/0: ingredient 0 is 1 -mem/0: location 1 is 1281 -mem/0: location 1281 is 3 -mem/0: location 1282 is 50 -mem/0: location 1283 is 51 -mem/0: location 1284 is 52 -mem/0: storing 3 in location 2 -mem/0: storing 50 in location 3 -mem/0: storing 51 in location 4 -mem/0: storing 52 in location 5 -run/0: instruction integer-to-decimal-digit-positive/1 -run/0: memory-should-contain/46 {name: " - 2:string <- [234] - ", value: 0, type: 0, properties: [" - 2:string <- [234] - ": "literal-string"]} -run/0: checking string length at 2 -run/0: checking location 3 -run/0: checking location 4 -run/0: checking location 5 diff --git a/cpp/.traces/integer-to-decimal-digit-zero b/cpp/.traces/integer-to-decimal-digit-zero deleted file mode 100644 index 85cb42d4..00000000 --- a/cpp/.traces/integer-to-decimal-digit-zero +++ /dev/null @@ -1,75 +0,0 @@ -parse/0: instruction: run -parse/0: ingredient: {name: " - 1:address:array:character/raw <- integer-to-decimal-string 0:literal - 2:array:character/raw <- copy 1:address:array:character/deref/raw - ", value: 0, type: 0, properties: [" - 1:address:array:character/raw <- integer-to-decimal-string 0:literal - 2:array:character/raw <- copy 1:address:array:character/deref/raw - ": "literal-string"]} -parse/0: instruction: memory-should-contain -parse/0: ingredient: {name: " - 2:string <- [0] - ", value: 0, type: 0, properties: [" - 2:string <- [0] - ": "literal-string"]} -after-brace/0: recipe integer-to-decimal-digit-zero -after-brace/0: run ... -after-brace/0: memory-should-contain ... -new/0: routine allocated memory from 1000 to 101000 -schedule/0: integer-to-decimal-digit-zero -run/0: instruction integer-to-decimal-digit-zero/0 -run/0: run/45 {name: " - 1:address:array:character/raw <- integer-to-decimal-string 0:literal - 2:array:character/raw <- copy 1:address:array:character/deref/raw - ", value: 0, type: 0, properties: [" - 1:address:array:character/raw <- integer-to-decimal-string 0:literal - 2:array:character/raw <- copy 1:address:array:character/deref/raw - ": "literal-string"]} -parse/0: instruction: integer-to-decimal-string -parse/0: ingredient: {name: "0", value: 0, type: 0, properties: ["0": "literal"]} -parse/0: product: {name: "1", value: 0, type: 2-5-4, properties: ["1": "address":"array":"character", "raw": ]} -parse/0: instruction: copy -parse/0: ingredient: {name: "1", value: 0, type: 2-5-4, properties: ["1": "address":"array":"character", "deref": , "raw": ]} -parse/0: product: {name: "2", value: 0, type: 5-4, properties: ["2": "array":"character", "raw": ]} -after-brace/0: recipe run1001 -after-brace/0: integer-to-decimal-string ... -after-brace/0: copy ... -run/0: instruction run1001/0 -run/0: {name: "1", value: 1, type: 2-5-4, properties: ["1": "address":"array":"character", "raw": ]} <- integer-to-decimal-string/105 {name: "0", value: 0, type: 0, properties: ["0": "literal"]} -run/0: instruction integer-to-decimal-string/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/44 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} -mem/0: array size is 30 -mem/0: new alloc: 1000 -run/0: instruction integer-to-decimal-string/1 -run/0: {name: "n", value: 1, type: 1, properties: ["n": "integer"]} <- next-ingredient/30 -run/0: product 0 is 0 -mem/0: storing 0 in location 1002 -run/0: instruction integer-to-decimal-string/3 -run/0: break-if/11 {name: "n", value: 1, type: 1, properties: ["n": "integer"]}, {name: "", value: 2, type: , properties: ["": ]} -mem/0: location 1002 is 0 -run/0: ingredient 0 is 0 -run/0: jump-if fell through -run/0: instruction integer-to-decimal-string/4 -run/0: {name: "result", value: 2, type: 2-5-4, properties: ["result": "address":"array":"character"]} <- new/44 {name: "0", value: 0, type: 0, properties: ["0": "literal-string"]} -mem/0: storing 1031 in location 1003 -run/0: instruction integer-to-decimal-string/5 -run/0: reply/33 {name: "result", value: 2, type: 2-5-4, properties: ["result": "address":"array":"character"]} -mem/0: location 1003 is 1031 -run/0: result 0 is 1031 -mem/0: storing 1031 in location 1 -run/0: instruction run1001/1 -run/0: {name: "2", value: 2, type: 5-4, properties: ["2": "array":"character", "raw": ]} <- copy/1 {name: "1", value: 1, type: 2-5-4, properties: ["1": "address":"array":"character", "deref": , "raw": ]} -run/0: ingredient 0 is 1 -mem/0: location 1 is 1031 -mem/0: location 1031 is 1 -mem/0: location 1032 is 48 -mem/0: storing 1 in location 2 -mem/0: storing 48 in location 3 -run/0: instruction integer-to-decimal-digit-zero/1 -run/0: memory-should-contain/46 {name: " - 2:string <- [0] - ", value: 0, type: 0, properties: [" - 2:string <- [0] - ": "literal-string"]} -run/0: checking string length at 2 -run/0: checking location 3 diff --git a/cpp/.traces/interpolate-at-end b/cpp/.traces/interpolate-at-end deleted file mode 100644 index 6d411983..00000000 --- a/cpp/.traces/interpolate-at-end +++ /dev/null @@ -1,944 +0,0 @@ -parse/0: instruction: run -parse/0: ingredient: {name: " - 1:address:array:character/raw <- new [hello, _] - 2:address:array:character/raw <- new [abc] - 3:address:array:character/raw <- interpolate 1:address:array:character/raw, 2:address:array:character/raw - 4:array:character/raw <- copy 3:address:array:character/raw/deref - ", value: 0, type: 0, properties: [" - 1:address:array:character/raw <- new [hello, _] - 2:address:array:character/raw <- new [abc] - 3:address:array:character/raw <- interpolate 1:address:array:character/raw, 2:address:array:character/raw - 4:array:character/raw <- copy 3:address:array:character/raw/deref - ": "literal-string"]} -parse/0: instruction: memory-should-contain -parse/0: ingredient: {name: " - 4:string <- [hello, abc] - ", value: 0, type: 0, properties: [" - 4:string <- [hello, abc] - ": "literal-string"]} -after-brace/0: recipe interpolate-at-end -after-brace/0: run ... -after-brace/0: memory-should-contain ... -new/0: routine allocated memory from 1000 to 101000 -schedule/0: interpolate-at-end -run/0: instruction interpolate-at-end/0 -run/0: run/45 {name: " - 1:address:array:character/raw <- new [hello, _] - 2:address:array:character/raw <- new [abc] - 3:address:array:character/raw <- interpolate 1:address:array:character/raw, 2:address:array:character/raw - 4:array:character/raw <- copy 3:address:array:character/raw/deref - ", value: 0, type: 0, properties: [" - 1:address:array:character/raw <- new [hello, _] - 2:address:array:character/raw <- new [abc] - 3:address:array:character/raw <- interpolate 1:address:array:character/raw, 2:address:array:character/raw - 4:array:character/raw <- copy 3:address:array:character/raw/deref - ": "literal-string"]} -parse/0: instruction: new -parse/0: ingredient: {name: "hello, _", value: 0, type: 0, properties: ["hello, _": "literal-string"]} -parse/0: product: {name: "1", value: 0, type: 2-5-4, properties: ["1": "address":"array":"character", "raw": ]} -parse/0: instruction: new -parse/0: ingredient: {name: "abc", value: 0, type: 0, properties: ["abc": "literal-string"]} -parse/0: product: {name: "2", value: 0, type: 2-5-4, properties: ["2": "address":"array":"character", "raw": ]} -parse/0: instruction: interpolate -parse/0: ingredient: {name: "1", value: 0, type: 2-5-4, properties: ["1": "address":"array":"character", "raw": ]} -parse/0: ingredient: {name: "2", value: 0, type: 2-5-4, properties: ["2": "address":"array":"character", "raw": ]} -parse/0: product: {name: "3", value: 0, type: 2-5-4, properties: ["3": "address":"array":"character", "raw": ]} -parse/0: instruction: copy -parse/0: ingredient: {name: "3", value: 0, type: 2-5-4, properties: ["3": "address":"array":"character", "raw": , "deref": ]} -parse/0: product: {name: "4", value: 0, type: 5-4, properties: ["4": "array":"character", "raw": ]} -new/0: hello, _ -> 0 -new/0: abc -> 0 -after-brace/0: recipe run1001 -after-brace/0: new ... -after-brace/0: new ... -after-brace/0: interpolate ... -after-brace/0: copy ... -run/0: instruction run1001/0 -run/0: {name: "1", value: 1, type: 2-5-4, properties: ["1": "address":"array":"character", "raw": ]} <- new/44 {name: "hello, _", value: 0, type: 0, properties: ["hello, _": "literal-string"]} -mem/0: storing 1000 in location 1 -run/0: instruction run1001/1 -run/0: {name: "2", value: 2, type: 2-5-4, properties: ["2": "address":"array":"character", "raw": ]} <- new/44 {name: "abc", value: 0, type: 0, properties: ["abc": "literal-string"]} -mem/0: storing 1009 in location 2 -run/0: instruction run1001/2 -run/0: {name: "3", value: 3, type: 2-5-4, properties: ["3": "address":"array":"character", "raw": ]} <- interpolate/107 {name: "1", value: 1, type: 2-5-4, properties: ["1": "address":"array":"character", "raw": ]}, {name: "2", value: 2, type: 2-5-4, properties: ["2": "address":"array":"character", "raw": ]} -mem/0: location 1 is 1000 -mem/0: location 2 is 1009 -run/0: instruction interpolate/0 -run/0: {name: "default-space", value: 0, type: 5-2-1, properties: ["default-space": "array":"address":"location"]} <- new/44 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "60", value: 60, type: 0, properties: ["60": "literal"]} -mem/0: array size is 60 -mem/0: new alloc: 1013 -run/0: instruction interpolate/1 -run/0: {name: "template", value: 1, type: 2-5-4, properties: ["template": "address":"array":"character"]} <- next-ingredient/30 -run/0: product 0 is 1000 -mem/0: storing 1000 in location 1015 -run/0: instruction interpolate/2 -run/0: {name: "tem-len", value: 2, type: 1, properties: ["tem-len": "integer"]} <- length/28 {name: "template", value: 1, type: 2-5-4, properties: ["template": "address":"array":"character", "deref": ]} -mem/0: location 1015 is 1000 -mem/0: storing 8 in location 1016 -run/0: instruction interpolate/3 -run/0: {name: "result-len", value: 3, type: 1, properties: ["result-len": "integer"]} <- copy/1 {name: "tem-len", value: 2, type: 1, properties: ["tem-len": "integer"]} -run/0: ingredient 0 is tem-len -mem/0: location 1016 is 8 -mem/0: storing 8 in location 1017 -run/0: instruction interpolate/5 -run/0: {name: "a", value: 4, type: 2-5-4, properties: ["a": "address":"array":"character"]}, {name: "arg-received?", value: 5, type: 3, properties: ["arg-received?": "boolean"]} <- next-ingredient/30 -run/0: product 0 is 1009 -mem/0: storing 1009 in location 1018 -mem/0: storing 1 in location 1019 -run/0: instruction interpolate/6 -run/0: break-unless/12 {name: "arg-received?", value: 5, type: 3, properties: ["arg-received?": "boolean"]}, {name: "", value: 4, type: , properties: ["": ]} -mem/0: location 1019 is 1 -run/0: ingredient 0 is 1 -run/0: jump-unless fell through -run/0: instruction interpolate/7 -run/0: {name: "a-len", value: 6, type: 1, properties: ["a-len": "integer"]} <- length/28 {name: "a", value: 4, type: 2-5-4, properties: ["a": "address":"array":"character", "deref": ]} -mem/0: location 1018 is 1009 -mem/0: storing 3 in location 1020 -run/0: instruction interpolate/8 -run/0: {name: "result-len", value: 3, type: 1, properties: ["result-len": "integer"]} <- add/2 {name: "result-len", value: 3, type: 1, properties: ["result-len": "integer"]}, {name: "a-len", value: 6, type: 1, properties: ["a-len": "integer"]} -run/0: ingredient 0 is result-len -mem/0: location 1017 is 8 -run/0: ingredient 1 is a-len -mem/0: location 1020 is 3 -run/0: product 0 is 11 -mem/0: storing 11 in location 1017 -run/0: instruction interpolate/9 -run/0: {name: "result-len", value: 3, type: 1, properties: ["result-len": "integer"]} <- subtract/3 {name: "result-len", value: 3, type: 1, properties: ["result-len": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is result-len -mem/0: location 1017 is 11 -run/0: ingredient 1 is 1 -run/0: product 0 is 10 -mem/0: storing 10 in location 1017 -run/0: instruction interpolate/10 -run/0: loop/10 {name: "", value: -6, type: , properties: ["": ]} -run/0: ingredient 0 is -6 -run/0: jumping to instruction 5 -run/0: instruction interpolate/5 -run/0: {name: "a", value: 4, type: 2-5-4, properties: ["a": "address":"array":"character"]}, {name: "arg-received?", value: 5, type: 3, properties: ["arg-received?": "boolean"]} <- next-ingredient/30 -mem/0: storing 0 in location 1019 -run/0: instruction interpolate/6 -run/0: break-unless/12 {name: "arg-received?", value: 5, type: 3, properties: ["arg-received?": "boolean"]}, {name: "", value: 4, type: , properties: ["": ]} -mem/0: location 1019 is 0 -run/0: ingredient 0 is 0 -run/0: ingredient 1 is -run/0: jumping to instruction 11 -run/0: instruction interpolate/12 -run/0: rewind-ingredients/31 -run/0: instruction interpolate/13 -run/0: {name: "_", value: 0, type: 0, properties: ["_": "dummy"]} <- next-ingredient/30 -run/0: product 0 is 1000 -run/0: instruction interpolate/14 -run/0: {name: "result", value: 7, type: 2-5-4, properties: ["result": "address":"array":"character"]} <- new/44 {name: "character", value: 4, type: 0, properties: ["character": "type"]}, {name: "result-len", value: 3, type: 1, properties: ["result-len": "integer"]} -mem/0: location 1017 is 10 -mem/0: array size is 10 -mem/0: new alloc: 1074 -mem/0: storing 1074 in location 1021 -run/0: instruction interpolate/15 -run/0: {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} <- copy/1 {name: "0", value: 0, type: 0, properties: ["0": "literal"]} -run/0: ingredient 0 is 0 -mem/0: storing 0 in location 1022 -run/0: instruction interpolate/16 -run/0: {name: "i", value: 9, type: 1, properties: ["i": "integer"]} <- copy/1 {name: "0", value: 0, type: 0, properties: ["0": "literal"]} -run/0: ingredient 0 is 0 -mem/0: storing 0 in location 1023 -run/0: instruction interpolate/18 -run/0: {name: "a", value: 4, type: 2-5-4, properties: ["a": "address":"array":"character"]}, {name: "arg-received?", value: 5, type: 3, properties: ["arg-received?": "boolean"]} <- next-ingredient/30 -run/0: product 0 is 1009 -mem/0: storing 1009 in location 1018 -mem/0: storing 1 in location 1019 -run/0: instruction interpolate/19 -run/0: break-unless/12 {name: "arg-received?", value: 5, type: 3, properties: ["arg-received?": "boolean"]}, {name: "", value: 25, type: , properties: ["": ]} -mem/0: location 1019 is 1 -run/0: ingredient 0 is 1 -run/0: jump-unless fell through -run/0: instruction interpolate/21 -run/0: {name: "tem-done?", value: 10, type: 3, properties: ["tem-done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 9, type: 1, properties: ["i": "integer"]}, {name: "tem-len", value: 2, type: 1, properties: ["tem-len": "integer"]} -run/0: ingredient 0 is i -mem/0: location 1023 is 0 -run/0: ingredient 1 is tem-len -mem/0: location 1016 is 8 -run/0: product 0 is 0 -mem/0: storing 0 in location 1024 -run/0: instruction interpolate/22 -run/0: break-if/11 {name: "tem-done?", value: 10, type: 3, properties: ["tem-done?": "boolean"]}, {name: "2", value: 2, type: 0, properties: ["2": "blocks"]} -mem/0: location 1024 is 0 -run/0: ingredient 0 is 0 -run/0: jump-if fell through -run/0: instruction interpolate/23 -run/0: {name: "in", value: 11, type: 4, properties: ["in": "character"]} <- index/26 {name: "template", value: 1, type: 2-5-4, properties: ["template": "address":"array":"character", "deref": ]}, {name: "i", value: 9, type: 1, properties: ["i": "integer"]} -run/0: ingredient 0 is {name: "template", value: 1, type: 2-5-4, properties: ["template": "address":"array":"character", "deref": ]} -mem/0: location 1015 is 1000 -run/0: ingredient 1 is {name: "i", value: 9, type: 1, properties: ["i": "integer"]} -mem/0: location 1023 is 0 -run/0: address to copy is 1001 -run/0: its type is 4 -mem/0: location 1001 is 104 -run/0: product 0 is 104 -mem/0: storing 104 in location 1025 -run/0: instruction interpolate/24 -run/0: {name: "underscore?", value: 12, type: 3, properties: ["underscore?": "boolean"]} <- equal/13 {name: "in", value: 11, type: 4, properties: ["in": "character"]}, {name: "95", value: 95, type: 0, properties: ["95": "literal"]} -run/0: ingredient 0 is in -mem/0: location 1025 is 104 -run/0: ingredient 1 is 95 -run/0: product 0 is 0 -mem/0: storing 0 in location 1026 -run/0: instruction interpolate/25 -run/0: break-if/11 {name: "underscore?", value: 12, type: 3, properties: ["underscore?": "boolean"]}, {name: "", value: 5, type: , properties: ["": ]} -mem/0: location 1026 is 0 -run/0: ingredient 0 is 0 -run/0: jump-if fell through -run/0: instruction interpolate/26 -run/0: {name: "out", value: 13, type: 2-4, properties: ["out": "address":"character"]} <- index-address/27 {name: "result", value: 7, type: 2-5-4, properties: ["result": "address":"array":"character", "deref": ]}, {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} -run/0: ingredient 0 is result -mem/0: location 1021 is 1074 -run/0: ingredient 1 is {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} -mem/0: location 1022 is 0 -run/0: address to copy is 1075 -run/0: product 0 is 1075 -mem/0: storing 1075 in location 1027 -run/0: instruction interpolate/27 -run/0: {name: "out", value: 13, type: 2-4, properties: ["out": "address":"character", "deref": ]} <- copy/1 {name: "in", value: 11, type: 4, properties: ["in": "character"]} -run/0: ingredient 0 is in -mem/0: location 1025 is 104 -mem/0: location 1027 is 1075 -mem/0: storing 104 in location 1075 -run/0: instruction interpolate/28 -run/0: {name: "i", value: 9, type: 1, properties: ["i": "integer"]} <- add/2 {name: "i", value: 9, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is i -mem/0: location 1023 is 0 -run/0: ingredient 1 is 1 -run/0: product 0 is 1 -mem/0: storing 1 in location 1023 -run/0: instruction interpolate/29 -run/0: {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} <- add/2 {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is result-idx -mem/0: location 1022 is 0 -run/0: ingredient 1 is 1 -run/0: product 0 is 1 -mem/0: storing 1 in location 1022 -run/0: instruction interpolate/30 -run/0: loop/10 {name: "", value: -10, type: , properties: ["": ]} -run/0: ingredient 0 is -10 -run/0: jumping to instruction 21 -run/0: instruction interpolate/21 -run/0: {name: "tem-done?", value: 10, type: 3, properties: ["tem-done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 9, type: 1, properties: ["i": "integer"]}, {name: "tem-len", value: 2, type: 1, properties: ["tem-len": "integer"]} -run/0: ingredient 0 is i -mem/0: location 1023 is 1 -run/0: ingredient 1 is tem-len -mem/0: location 1016 is 8 -run/0: product 0 is 0 -mem/0: storing 0 in location 1024 -run/0: instruction interpolate/22 -run/0: break-if/11 {name: "tem-done?", value: 10, type: 3, properties: ["tem-done?": "boolean"]}, {name: "2", value: 2, type: 0, properties: ["2": "blocks"]} -mem/0: location 1024 is 0 -run/0: ingredient 0 is 0 -run/0: jump-if fell through -run/0: instruction interpolate/23 -run/0: {name: "in", value: 11, type: 4, properties: ["in": "character"]} <- index/26 {name: "template", value: 1, type: 2-5-4, properties: ["template": "address":"array":"character", "deref": ]}, {name: "i", value: 9, type: 1, properties: ["i": "integer"]} -run/0: ingredient 0 is {name: "template", value: 1, type: 2-5-4, properties: ["template": "address":"array":"character", "deref": ]} -mem/0: location 1015 is 1000 -run/0: ingredient 1 is {name: "i", value: 9, type: 1, properties: ["i": "integer"]} -mem/0: location 1023 is 1 -run/0: address to copy is 1002 -run/0: its type is 4 -mem/0: location 1002 is 101 -run/0: product 0 is 101 -mem/0: storing 101 in location 1025 -run/0: instruction interpolate/24 -run/0: {name: "underscore?", value: 12, type: 3, properties: ["underscore?": "boolean"]} <- equal/13 {name: "in", value: 11, type: 4, properties: ["in": "character"]}, {name: "95", value: 95, type: 0, properties: ["95": "literal"]} -run/0: ingredient 0 is in -mem/0: location 1025 is 101 -run/0: ingredient 1 is 95 -run/0: product 0 is 0 -mem/0: storing 0 in location 1026 -run/0: instruction interpolate/25 -run/0: break-if/11 {name: "underscore?", value: 12, type: 3, properties: ["underscore?": "boolean"]}, {name: "", value: 5, type: , properties: ["": ]} -mem/0: location 1026 is 0 -run/0: ingredient 0 is 0 -run/0: jump-if fell through -run/0: instruction interpolate/26 -run/0: {name: "out", value: 13, type: 2-4, properties: ["out": "address":"character"]} <- index-address/27 {name: "result", value: 7, type: 2-5-4, properties: ["result": "address":"array":"character", "deref": ]}, {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} -run/0: ingredient 0 is result -mem/0: location 1021 is 1074 -run/0: ingredient 1 is {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} -mem/0: location 1022 is 1 -run/0: address to copy is 1076 -run/0: product 0 is 1076 -mem/0: storing 1076 in location 1027 -run/0: instruction interpolate/27 -run/0: {name: "out", value: 13, type: 2-4, properties: ["out": "address":"character", "deref": ]} <- copy/1 {name: "in", value: 11, type: 4, properties: ["in": "character"]} -run/0: ingredient 0 is in -mem/0: location 1025 is 101 -mem/0: location 1027 is 1076 -mem/0: storing 101 in location 1076 -run/0: instruction interpolate/28 -run/0: {name: "i", value: 9, type: 1, properties: ["i": "integer"]} <- add/2 {name: "i", value: 9, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is i -mem/0: location 1023 is 1 -run/0: ingredient 1 is 1 -run/0: product 0 is 2 -mem/0: storing 2 in location 1023 -run/0: instruction interpolate/29 -run/0: {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} <- add/2 {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is result-idx -mem/0: location 1022 is 1 -run/0: ingredient 1 is 1 -run/0: product 0 is 2 -mem/0: storing 2 in location 1022 -run/0: instruction interpolate/30 -run/0: loop/10 {name: "", value: -10, type: , properties: ["": ]} -run/0: ingredient 0 is -10 -run/0: jumping to instruction 21 -run/0: instruction interpolate/21 -run/0: {name: "tem-done?", value: 10, type: 3, properties: ["tem-done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 9, type: 1, properties: ["i": "integer"]}, {name: "tem-len", value: 2, type: 1, properties: ["tem-len": "integer"]} -run/0: ingredient 0 is i -mem/0: location 1023 is 2 -run/0: ingredient 1 is tem-len -mem/0: location 1016 is 8 -run/0: product 0 is 0 -mem/0: storing 0 in location 1024 -run/0: instruction interpolate/22 -run/0: break-if/11 {name: "tem-done?", value: 10, type: 3, properties: ["tem-done?": "boolean"]}, {name: "2", value: 2, type: 0, properties: ["2": "blocks"]} -mem/0: location 1024 is 0 -run/0: ingredient 0 is 0 -run/0: jump-if fell through -run/0: instruction interpolate/23 -run/0: {name: "in", value: 11, type: 4, properties: ["in": "character"]} <- index/26 {name: "template", value: 1, type: 2-5-4, properties: ["template": "address":"array":"character", "deref": ]}, {name: "i", value: 9, type: 1, properties: ["i": "integer"]} -run/0: ingredient 0 is {name: "template", value: 1, type: 2-5-4, properties: ["template": "address":"array":"character", "deref": ]} -mem/0: location 1015 is 1000 -run/0: ingredient 1 is {name: "i", value: 9, type: 1, properties: ["i": "integer"]} -mem/0: location 1023 is 2 -run/0: address to copy is 1003 -run/0: its type is 4 -mem/0: location 1003 is 108 -run/0: product 0 is 108 -mem/0: storing 108 in location 1025 -run/0: instruction interpolate/24 -run/0: {name: "underscore?", value: 12, type: 3, properties: ["underscore?": "boolean"]} <- equal/13 {name: "in", value: 11, type: 4, properties: ["in": "character"]}, {name: "95", value: 95, type: 0, properties: ["95": "literal"]} -run/0: ingredient 0 is in -mem/0: location 1025 is 108 -run/0: ingredient 1 is 95 -run/0: product 0 is 0 -mem/0: storing 0 in location 1026 -run/0: instruction interpolate/25 -run/0: break-if/11 {name: "underscore?", value: 12, type: 3, properties: ["underscore?": "boolean"]}, {name: "", value: 5, type: , properties: ["": ]} -mem/0: location 1026 is 0 -run/0: ingredient 0 is 0 -run/0: jump-if fell through -run/0: instruction interpolate/26 -run/0: {name: "out", value: 13, type: 2-4, properties: ["out": "address":"character"]} <- index-address/27 {name: "result", value: 7, type: 2-5-4, properties: ["result": "address":"array":"character", "deref": ]}, {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} -run/0: ingredient 0 is result -mem/0: location 1021 is 1074 -run/0: ingredient 1 is {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} -mem/0: location 1022 is 2 -run/0: address to copy is 1077 -run/0: product 0 is 1077 -mem/0: storing 1077 in location 1027 -run/0: instruction interpolate/27 -run/0: {name: "out", value: 13, type: 2-4, properties: ["out": "address":"character", "deref": ]} <- copy/1 {name: "in", value: 11, type: 4, properties: ["in": "character"]} -run/0: ingredient 0 is in -mem/0: location 1025 is 108 -mem/0: location 1027 is 1077 -mem/0: storing 108 in location 1077 -run/0: instruction interpolate/28 -run/0: {name: "i", value: 9, type: 1, properties: ["i": "integer"]} <- add/2 {name: "i", value: 9, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is i -mem/0: location 1023 is 2 -run/0: ingredient 1 is 1 -run/0: product 0 is 3 -mem/0: storing 3 in location 1023 -run/0: instruction interpolate/29 -run/0: {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} <- add/2 {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is result-idx -mem/0: location 1022 is 2 -run/0: ingredient 1 is 1 -run/0: product 0 is 3 -mem/0: storing 3 in location 1022 -run/0: instruction interpolate/30 -run/0: loop/10 {name: "", value: -10, type: , properties: ["": ]} -run/0: ingredient 0 is -10 -run/0: jumping to instruction 21 -run/0: instruction interpolate/21 -run/0: {name: "tem-done?", value: 10, type: 3, properties: ["tem-done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 9, type: 1, properties: ["i": "integer"]}, {name: "tem-len", value: 2, type: 1, properties: ["tem-len": "integer"]} -run/0: ingredient 0 is i -mem/0: location 1023 is 3 -run/0: ingredient 1 is tem-len -mem/0: location 1016 is 8 -run/0: product 0 is 0 -mem/0: storing 0 in location 1024 -run/0: instruction interpolate/22 -run/0: break-if/11 {name: "tem-done?", value: 10, type: 3, properties: ["tem-done?": "boolean"]}, {name: "2", value: 2, type: 0, properties: ["2": "blocks"]} -mem/0: location 1024 is 0 -run/0: ingredient 0 is 0 -run/0: jump-if fell through -run/0: instruction interpolate/23 -run/0: {name: "in", value: 11, type: 4, properties: ["in": "character"]} <- index/26 {name: "template", value: 1, type: 2-5-4, properties: ["template": "address":"array":"character", "deref": ]}, {name: "i", value: 9, type: 1, properties: ["i": "integer"]} -run/0: ingredient 0 is {name: "template", value: 1, type: 2-5-4, properties: ["template": "address":"array":"character", "deref": ]} -mem/0: location 1015 is 1000 -run/0: ingredient 1 is {name: "i", value: 9, type: 1, properties: ["i": "integer"]} -mem/0: location 1023 is 3 -run/0: address to copy is 1004 -run/0: its type is 4 -mem/0: location 1004 is 108 -run/0: product 0 is 108 -mem/0: storing 108 in location 1025 -run/0: instruction interpolate/24 -run/0: {name: "underscore?", value: 12, type: 3, properties: ["underscore?": "boolean"]} <- equal/13 {name: "in", value: 11, type: 4, properties: ["in": "character"]}, {name: "95", value: 95, type: 0, properties: ["95": "literal"]} -run/0: ingredient 0 is in -mem/0: location 1025 is 108 -run/0: ingredient 1 is 95 -run/0: product 0 is 0 -mem/0: storing 0 in location 1026 -run/0: instruction interpolate/25 -run/0: break-if/11 {name: "underscore?", value: 12, type: 3, properties: ["underscore?": "boolean"]}, {name: "", value: 5, type: , properties: ["": ]} -mem/0: location 1026 is 0 -run/0: ingredient 0 is 0 -run/0: jump-if fell through -run/0: instruction interpolate/26 -run/0: {name: "out", value: 13, type: 2-4, properties: ["out": "address":"character"]} <- index-address/27 {name: "result", value: 7, type: 2-5-4, properties: ["result": "address":"array":"character", "deref": ]}, {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} -run/0: ingredient 0 is result -mem/0: location 1021 is 1074 -run/0: ingredient 1 is {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} -mem/0: location 1022 is 3 -run/0: address to copy is 1078 -run/0: product 0 is 1078 -mem/0: storing 1078 in location 1027 -run/0: instruction interpolate/27 -run/0: {name: "out", value: 13, type: 2-4, properties: ["out": "address":"character", "deref": ]} <- copy/1 {name: "in", value: 11, type: 4, properties: ["in": "character"]} -run/0: ingredient 0 is in -mem/0: location 1025 is 108 -mem/0: location 1027 is 1078 -mem/0: storing 108 in location 1078 -run/0: instruction interpolate/28 -run/0: {name: "i", value: 9, type: 1, properties: ["i": "integer"]} <- add/2 {name: "i", value: 9, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is i -mem/0: location 1023 is 3 -run/0: ingredient 1 is 1 -run/0: product 0 is 4 -mem/0: storing 4 in location 1023 -run/0: instruction interpolate/29 -run/0: {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} <- add/2 {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is result-idx -mem/0: location 1022 is 3 -run/0: ingredient 1 is 1 -run/0: product 0 is 4 -mem/0: storing 4 in location 1022 -run/0: instruction interpolate/30 -run/0: loop/10 {name: "", value: -10, type: , properties: ["": ]} -run/0: ingredient 0 is -10 -run/0: jumping to instruction 21 -run/0: instruction interpolate/21 -run/0: {name: "tem-done?", value: 10, type: 3, properties: ["tem-done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 9, type: 1, properties: ["i": "integer"]}, {name: "tem-len", value: 2, type: 1, properties: ["tem-len": "integer"]} -run/0: ingredient 0 is i -mem/0: location 1023 is 4 -run/0: ingredient 1 is tem-len -mem/0: location 1016 is 8 -run/0: product 0 is 0 -mem/0: storing 0 in location 1024 -run/0: instruction interpolate/22 -run/0: break-if/11 {name: "tem-done?", value: 10, type: 3, properties: ["tem-done?": "boolean"]}, {name: "2", value: 2, type: 0, properties: ["2": "blocks"]} -mem/0: location 1024 is 0 -run/0: ingredient 0 is 0 -run/0: jump-if fell through -run/0: instruction interpolate/23 -run/0: {name: "in", value: 11, type: 4, properties: ["in": "character"]} <- index/26 {name: "template", value: 1, type: 2-5-4, properties: ["template": "address":"array":"character", "deref": ]}, {name: "i", value: 9, type: 1, properties: ["i": "integer"]} -run/0: ingredient 0 is {name: "template", value: 1, type: 2-5-4, properties: ["template": "address":"array":"character", "deref": ]} -mem/0: location 1015 is 1000 -run/0: ingredient 1 is {name: "i", value: 9, type: 1, properties: ["i": "integer"]} -mem/0: location 1023 is 4 -run/0: address to copy is 1005 -run/0: its type is 4 -mem/0: location 1005 is 111 -run/0: product 0 is 111 -mem/0: storing 111 in location 1025 -run/0: instruction interpolate/24 -run/0: {name: "underscore?", value: 12, type: 3, properties: ["underscore?": "boolean"]} <- equal/13 {name: "in", value: 11, type: 4, properties: ["in": "character"]}, {name: "95", value: 95, type: 0, properties: ["95": "literal"]} -run/0: ingredient 0 is in -mem/0: location 1025 is 111 -run/0: ingredient 1 is 95 -run/0: product 0 is 0 -mem/0: storing 0 in location 1026 -run/0: instruction interpolate/25 -run/0: break-if/11 {name: "underscore?", value: 12, type: 3, properties: ["underscore?": "boolean"]}, {name: "", value: 5, type: , properties: ["": ]} -mem/0: location 1026 is 0 -run/0: ingredient 0 is 0 -run/0: jump-if fell through -run/0: instruction interpolate/26 -run/0: {name: "out", value: 13, type: 2-4, properties: ["out": "address":"character"]} <- index-address/27 {name: "result", value: 7, type: 2-5-4, properties: ["result": "address":"array":"character", "deref": ]}, {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} -run/0: ingredient 0 is result -mem/0: location 1021 is 1074 -run/0: ingredient 1 is {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} -mem/0: location 1022 is 4 -run/0: address to copy is 1079 -run/0: product 0 is 1079 -mem/0: storing 1079 in location 1027 -run/0: instruction interpolate/27 -run/0: {name: "out", value: 13, type: 2-4, properties: ["out": "address":"character", "deref": ]} <- copy/1 {name: "in", value: 11, type: 4, properties: ["in": "character"]} -run/0: ingredient 0 is in -mem/0: location 1025 is 111 -mem/0: location 1027 is 1079 -mem/0: storing 111 in location 1079 -run/0: instruction interpolate/28 -run/0: {name: "i", value: 9, type: 1, properties: ["i": "integer"]} <- add/2 {name: "i", value: 9, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is i -mem/0: location 1023 is 4 -run/0: ingredient 1 is 1 -run/0: product 0 is 5 -mem/0: storing 5 in location 1023 -run/0: instruction interpolate/29 -run/0: {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} <- add/2 {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is result-idx -mem/0: location 1022 is 4 -run/0: ingredient 1 is 1 -run/0: product 0 is 5 -mem/0: storing 5 in location 1022 -run/0: instruction interpolate/30 -run/0: loop/10 {name: "", value: -10, type: , properties: ["": ]} -run/0: ingredient 0 is -10 -run/0: jumping to instruction 21 -run/0: instruction interpolate/21 -run/0: {name: "tem-done?", value: 10, type: 3, properties: ["tem-done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 9, type: 1, properties: ["i": "integer"]}, {name: "tem-len", value: 2, type: 1, properties: ["tem-len": "integer"]} -run/0: ingredient 0 is i -mem/0: location 1023 is 5 -run/0: ingredient 1 is tem-len -mem/0: location 1016 is 8 -run/0: product 0 is 0 -mem/0: storing 0 in location 1024 -run/0: instruction interpolate/22 -run/0: break-if/11 {name: "tem-done?", value: 10, type: 3, properties: ["tem-done?": "boolean"]}, {name: "2", value: 2, type: 0, properties: ["2": "blocks"]} -mem/0: location 1024 is 0 -run/0: ingredient 0 is 0 -run/0: jump-if fell through -run/0: instruction interpolate/23 -run/0: {name: "in", value: 11, type: 4, properties: ["in": "character"]} <- index/26 {name: "template", value: 1, type: 2-5-4, properties: ["template": "address":"array":"character", "deref": ]}, {name: "i", value: 9, type: 1, properties: ["i": "integer"]} -run/0: ingredient 0 is {name: "template", value: 1, type: 2-5-4, properties: ["template": "address":"array":"character", "deref": ]} -mem/0: location 1015 is 1000 -run/0: ingredient 1 is {name: "i", value: 9, type: 1, properties: ["i": "integer"]} -mem/0: location 1023 is 5 -run/0: address to copy is 1006 -run/0: its type is 4 -mem/0: location 1006 is 44 -run/0: product 0 is 44 -mem/0: storing 44 in location 1025 -run/0: instruction interpolate/24 -run/0: {name: "underscore?", value: 12, type: 3, properties: ["underscore?": "boolean"]} <- equal/13 {name: "in", value: 11, type: 4, properties: ["in": "character"]}, {name: "95", value: 95, type: 0, properties: ["95": "literal"]} -run/0: ingredient 0 is in -mem/0: location 1025 is 44 -run/0: ingredient 1 is 95 -run/0: product 0 is 0 -mem/0: storing 0 in location 1026 -run/0: instruction interpolate/25 -run/0: break-if/11 {name: "underscore?", value: 12, type: 3, properties: ["underscore?": "boolean"]}, {name: "", value: 5, type: , properties: ["": ]} -mem/0: location 1026 is 0 -run/0: ingredient 0 is 0 -run/0: jump-if fell through -run/0: instruction interpolate/26 -run/0: {name: "out", value: 13, type: 2-4, properties: ["out": "address":"character"]} <- index-address/27 {name: "result", value: 7, type: 2-5-4, properties: ["result": "address":"array":"character", "deref": ]}, {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} -run/0: ingredient 0 is result -mem/0: location 1021 is 1074 -run/0: ingredient 1 is {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} -mem/0: location 1022 is 5 -run/0: address to copy is 1080 -run/0: product 0 is 1080 -mem/0: storing 1080 in location 1027 -run/0: instruction interpolate/27 -run/0: {name: "out", value: 13, type: 2-4, properties: ["out": "address":"character", "deref": ]} <- copy/1 {name: "in", value: 11, type: 4, properties: ["in": "character"]} -run/0: ingredient 0 is in -mem/0: location 1025 is 44 -mem/0: location 1027 is 1080 -mem/0: storing 44 in location 1080 -run/0: instruction interpolate/28 -run/0: {name: "i", value: 9, type: 1, properties: ["i": "integer"]} <- add/2 {name: "i", value: 9, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is i -mem/0: location 1023 is 5 -run/0: ingredient 1 is 1 -run/0: product 0 is 6 -mem/0: storing 6 in location 1023 -run/0: instruction interpolate/29 -run/0: {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} <- add/2 {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is result-idx -mem/0: location 1022 is 5 -run/0: ingredient 1 is 1 -run/0: product 0 is 6 -mem/0: storing 6 in location 1022 -run/0: instruction interpolate/30 -run/0: loop/10 {name: "", value: -10, type: , properties: ["": ]} -run/0: ingredient 0 is -10 -run/0: jumping to instruction 21 -run/0: instruction interpolate/21 -run/0: {name: "tem-done?", value: 10, type: 3, properties: ["tem-done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 9, type: 1, properties: ["i": "integer"]}, {name: "tem-len", value: 2, type: 1, properties: ["tem-len": "integer"]} -run/0: ingredient 0 is i -mem/0: location 1023 is 6 -run/0: ingredient 1 is tem-len -mem/0: location 1016 is 8 -run/0: product 0 is 0 -mem/0: storing 0 in location 1024 -run/0: instruction interpolate/22 -run/0: break-if/11 {name: "tem-done?", value: 10, type: 3, properties: ["tem-done?": "boolean"]}, {name: "2", value: 2, type: 0, properties: ["2": "blocks"]} -mem/0: location 1024 is 0 -run/0: ingredient 0 is 0 -run/0: jump-if fell through -run/0: instruction interpolate/23 -run/0: {name: "in", value: 11, type: 4, properties: ["in": "character"]} <- index/26 {name: "template", value: 1, type: 2-5-4, properties: ["template": "address":"array":"character", "deref": ]}, {name: "i", value: 9, type: 1, properties: ["i": "integer"]} -run/0: ingredient 0 is {name: "template", value: 1, type: 2-5-4, properties: ["template": "address":"array":"character", "deref": ]} -mem/0: location 1015 is 1000 -run/0: ingredient 1 is {name: "i", value: 9, type: 1, properties: ["i": "integer"]} -mem/0: location 1023 is 6 -run/0: address to copy is 1007 -run/0: its type is 4 -mem/0: location 1007 is 32 -run/0: product 0 is 32 -mem/0: storing 32 in location 1025 -run/0: instruction interpolate/24 -run/0: {name: "underscore?", value: 12, type: 3, properties: ["underscore?": "boolean"]} <- equal/13 {name: "in", value: 11, type: 4, properties: ["in": "character"]}, {name: "95", value: 95, type: 0, properties: ["95": "literal"]} -run/0: ingredient 0 is in -mem/0: location 1025 is 32 -run/0: ingredient 1 is 95 -run/0: product 0 is 0 -mem/0: storing 0 in location 1026 -run/0: instruction interpolate/25 -run/0: break-if/11 {name: "underscore?", value: 12, type: 3, properties: ["underscore?": "boolean"]}, {name: "", value: 5, type: , properties: ["": ]} -mem/0: location 1026 is 0 -run/0: ingredient 0 is 0 -run/0: jump-if fell through -run/0: instruction interpolate/26 -run/0: {name: "out", value: 13, type: 2-4, properties: ["out": "address":"character"]} <- index-address/27 {name: "result", value: 7, type: 2-5-4, properties: ["result": "address":"array":"character", "deref": ]}, {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} -run/0: ingredient 0 is result -mem/0: location 1021 is 1074 -run/0: ingredient 1 is {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} -mem/0: location 1022 is 6 -run/0: address to copy is 1081 -run/0: product 0 is 1081 -mem/0: storing 1081 in location 1027 -run/0: instruction interpolate/27 -run/0: {name: "out", value: 13, type: 2-4, properties: ["out": "address":"character", "deref": ]} <- copy/1 {name: "in", value: 11, type: 4, properties: ["in": "character"]} -run/0: ingredient 0 is in -mem/0: location 1025 is 32 -mem/0: location 1027 is 1081 -mem/0: storing 32 in location 1081 -run/0: instruction interpolate/28 -run/0: {name: "i", value: 9, type: 1, properties: ["i": "integer"]} <- add/2 {name: "i", value: 9, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is i -mem/0: location 1023 is 6 -run/0: ingredient 1 is 1 -run/0: product 0 is 7 -mem/0: storing 7 in location 1023 -run/0: instruction interpolate/29 -run/0: {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} <- add/2 {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is result-idx -mem/0: location 1022 is 6 -run/0: ingredient 1 is 1 -run/0: product 0 is 7 -mem/0: storing 7 in location 1022 -run/0: instruction interpolate/30 -run/0: loop/10 {name: "", value: -10, type: , properties: ["": ]} -run/0: ingredient 0 is -10 -run/0: jumping to instruction 21 -run/0: instruction interpolate/21 -run/0: {name: "tem-done?", value: 10, type: 3, properties: ["tem-done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 9, type: 1, properties: ["i": "integer"]}, {name: "tem-len", value: 2, type: 1, properties: ["tem-len": "integer"]} -run/0: ingredient 0 is i -mem/0: location 1023 is 7 -run/0: ingredient 1 is tem-len -mem/0: location 1016 is 8 -run/0: product 0 is 0 -mem/0: storing 0 in location 1024 -run/0: instruction interpolate/22 -run/0: break-if/11 {name: "tem-done?", value: 10, type: 3, properties: ["tem-done?": "boolean"]}, {name: "2", value: 2, type: 0, properties: ["2": "blocks"]} -mem/0: location 1024 is 0 -run/0: ingredient 0 is 0 -run/0: jump-if fell through -run/0: instruction interpolate/23 -run/0: {name: "in", value: 11, type: 4, properties: ["in": "character"]} <- index/26 {name: "template", value: 1, type: 2-5-4, properties: ["template": "address":"array":"character", "deref": ]}, {name: "i", value: 9, type: 1, properties: ["i": "integer"]} -run/0: ingredient 0 is {name: "template", value: 1, type: 2-5-4, properties: ["template": "address":"array":"character", "deref": ]} -mem/0: location 1015 is 1000 -run/0: ingredient 1 is {name: "i", value: 9, type: 1, properties: ["i": "integer"]} -mem/0: location 1023 is 7 -run/0: address to copy is 1008 -run/0: its type is 4 -mem/0: location 1008 is 95 -run/0: product 0 is 95 -mem/0: storing 95 in location 1025 -run/0: instruction interpolate/24 -run/0: {name: "underscore?", value: 12, type: 3, properties: ["underscore?": "boolean"]} <- equal/13 {name: "in", value: 11, type: 4, properties: ["in": "character"]}, {name: "95", value: 95, type: 0, properties: ["95": "literal"]} -run/0: ingredient 0 is in -mem/0: location 1025 is 95 -run/0: ingredient 1 is 95 -run/0: product 0 is 1 -mem/0: storing 1 in location 1026 -run/0: instruction interpolate/25 -run/0: break-if/11 {name: "underscore?", value: 12, type: 3, properties: ["underscore?": "boolean"]}, {name: "", value: 5, type: , properties: ["": ]} -mem/0: location 1026 is 1 -run/0: ingredient 0 is 1 -run/0: ingredient 1 is -run/0: jumping to instruction 31 -run/0: instruction interpolate/32 -run/0: {name: "j", value: 14, type: 1, properties: ["j": "integer"]} <- copy/1 {name: "0", value: 0, type: 0, properties: ["0": "literal"]} -run/0: ingredient 0 is 0 -mem/0: storing 0 in location 1028 -run/0: instruction interpolate/34 -run/0: {name: "arg-done?", value: 15, type: 3, properties: ["arg-done?": "boolean"]} <- greater-or-equal/16 {name: "j", value: 14, type: 1, properties: ["j": "integer"]}, {name: "a-len", value: 6, type: 1, properties: ["a-len": "integer"]} -run/0: ingredient 0 is j -mem/0: location 1028 is 0 -run/0: ingredient 1 is a-len -mem/0: location 1020 is 3 -run/0: product 0 is 0 -mem/0: storing 0 in location 1029 -run/0: instruction interpolate/35 -run/0: break-if/11 {name: "arg-done?", value: 15, type: 3, properties: ["arg-done?": "boolean"]}, {name: "", value: 6, type: , properties: ["": ]} -mem/0: location 1029 is 0 -run/0: ingredient 0 is 0 -run/0: jump-if fell through -run/0: instruction interpolate/36 -run/0: {name: "in", value: 11, type: 4, properties: ["in": "character"]} <- index/26 {name: "a", value: 4, type: 2-5-4, properties: ["a": "address":"array":"character", "deref": ]}, {name: "j", value: 14, type: 1, properties: ["j": "integer"]} -run/0: ingredient 0 is {name: "a", value: 4, type: 2-5-4, properties: ["a": "address":"array":"character", "deref": ]} -mem/0: location 1018 is 1009 -run/0: ingredient 1 is {name: "j", value: 14, type: 1, properties: ["j": "integer"]} -mem/0: location 1028 is 0 -run/0: address to copy is 1010 -run/0: its type is 4 -mem/0: location 1010 is 97 -run/0: product 0 is 97 -mem/0: storing 97 in location 1025 -run/0: instruction interpolate/37 -run/0: {name: "out", value: 13, type: 2-4, properties: ["out": "address":"character"]} <- index-address/27 {name: "result", value: 7, type: 2-5-4, properties: ["result": "address":"array":"character", "deref": ]}, {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} -run/0: ingredient 0 is result -mem/0: location 1021 is 1074 -run/0: ingredient 1 is {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} -mem/0: location 1022 is 7 -run/0: address to copy is 1082 -run/0: product 0 is 1082 -mem/0: storing 1082 in location 1027 -run/0: instruction interpolate/38 -run/0: {name: "out", value: 13, type: 2-4, properties: ["out": "address":"character", "deref": ]} <- copy/1 {name: "in", value: 11, type: 4, properties: ["in": "character"]} -run/0: ingredient 0 is in -mem/0: location 1025 is 97 -mem/0: location 1027 is 1082 -mem/0: storing 97 in location 1082 -run/0: instruction interpolate/39 -run/0: {name: "j", value: 14, type: 1, properties: ["j": "integer"]} <- add/2 {name: "j", value: 14, type: 1, properties: ["j": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is j -mem/0: location 1028 is 0 -run/0: ingredient 1 is 1 -run/0: product 0 is 1 -mem/0: storing 1 in location 1028 -run/0: instruction interpolate/40 -run/0: {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} <- add/2 {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is result-idx -mem/0: location 1022 is 7 -run/0: ingredient 1 is 1 -run/0: product 0 is 8 -mem/0: storing 8 in location 1022 -run/0: instruction interpolate/41 -run/0: loop/10 {name: "", value: -8, type: , properties: ["": ]} -run/0: ingredient 0 is -8 -run/0: jumping to instruction 34 -run/0: instruction interpolate/34 -run/0: {name: "arg-done?", value: 15, type: 3, properties: ["arg-done?": "boolean"]} <- greater-or-equal/16 {name: "j", value: 14, type: 1, properties: ["j": "integer"]}, {name: "a-len", value: 6, type: 1, properties: ["a-len": "integer"]} -run/0: ingredient 0 is j -mem/0: location 1028 is 1 -run/0: ingredient 1 is a-len -mem/0: location 1020 is 3 -run/0: product 0 is 0 -mem/0: storing 0 in location 1029 -run/0: instruction interpolate/35 -run/0: break-if/11 {name: "arg-done?", value: 15, type: 3, properties: ["arg-done?": "boolean"]}, {name: "", value: 6, type: , properties: ["": ]} -mem/0: location 1029 is 0 -run/0: ingredient 0 is 0 -run/0: jump-if fell through -run/0: instruction interpolate/36 -run/0: {name: "in", value: 11, type: 4, properties: ["in": "character"]} <- index/26 {name: "a", value: 4, type: 2-5-4, properties: ["a": "address":"array":"character", "deref": ]}, {name: "j", value: 14, type: 1, properties: ["j": "integer"]} -run/0: ingredient 0 is {name: "a", value: 4, type: 2-5-4, properties: ["a": "address":"array":"character", "deref": ]} -mem/0: location 1018 is 1009 -run/0: ingredient 1 is {name: "j", value: 14, type: 1, properties: ["j": "integer"]} -mem/0: location 1028 is 1 -run/0: address to copy is 1011 -run/0: its type is 4 -mem/0: location 1011 is 98 -run/0: product 0 is 98 -mem/0: storing 98 in location 1025 -run/0: instruction interpolate/37 -run/0: {name: "out", value: 13, type: 2-4, properties: ["out": "address":"character"]} <- index-address/27 {name: "result", value: 7, type: 2-5-4, properties: ["result": "address":"array":"character", "deref": ]}, {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} -run/0: ingredient 0 is result -mem/0: location 1021 is 1074 -run/0: ingredient 1 is {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} -mem/0: location 1022 is 8 -run/0: address to copy is 1083 -run/0: product 0 is 1083 -mem/0: storing 1083 in location 1027 -run/0: instruction interpolate/38 -run/0: {name: "out", value: 13, type: 2-4, properties: ["out": "address":"character", "deref": ]} <- copy/1 {name: "in", value: 11, type: 4, properties: ["in": "character"]} -run/0: ingredient 0 is in -mem/0: location 1025 is 98 -mem/0: location 1027 is 1083 -mem/0: storing 98 in location 1083 -run/0: instruction interpolate/39 -run/0: {name: "j", value: 14, type: 1, properties: ["j": "integer"]} <- add/2 {name: "j", value: 14, type: 1, properties: ["j": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is j -mem/0: location 1028 is 1 -run/0: ingredient 1 is 1 -run/0: product 0 is 2 -mem/0: storing 2 in location 1028 -run/0: instruction interpolate/40 -run/0: {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} <- add/2 {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is result-idx -mem/0: location 1022 is 8 -run/0: ingredient 1 is 1 -run/0: product 0 is 9 -mem/0: storing 9 in location 1022 -run/0: instruction interpolate/41 -run/0: loop/10 {name: "", value: -8, type: , properties: ["": ]} -run/0: ingredient 0 is -8 -run/0: jumping to instruction 34 -run/0: instruction interpolate/34 -run/0: {name: "arg-done?", value: 15, type: 3, properties: ["arg-done?": "boolean"]} <- greater-or-equal/16 {name: "j", value: 14, type: 1, properties: ["j": "integer"]}, {name: "a-len", value: 6, type: 1, properties: ["a-len": "integer"]} -run/0: ingredient 0 is j -mem/0: location 1028 is 2 -run/0: ingredient 1 is a-len -mem/0: location 1020 is 3 -run/0: product 0 is 0 -mem/0: storing 0 in location 1029 -run/0: instruction interpolate/35 -run/0: break-if/11 {name: "arg-done?", value: 15, type: 3, properties: ["arg-done?": "boolean"]}, {name: "", value: 6, type: , properties: ["": ]} -mem/0: location 1029 is 0 -run/0: ingredient 0 is 0 -run/0: jump-if fell through -run/0: instruction interpolate/36 -run/0: {name: "in", value: 11, type: 4, properties: ["in": "character"]} <- index/26 {name: "a", value: 4, type: 2-5-4, properties: ["a": "address":"array":"character", "deref": ]}, {name: "j", value: 14, type: 1, properties: ["j": "integer"]} -run/0: ingredient 0 is {name: "a", value: 4, type: 2-5-4, properties: ["a": "address":"array":"character", "deref": ]} -mem/0: location 1018 is 1009 -run/0: ingredient 1 is {name: "j", value: 14, type: 1, properties: ["j": "integer"]} -mem/0: location 1028 is 2 -run/0: address to copy is 1012 -run/0: its type is 4 -mem/0: location 1012 is 99 -run/0: product 0 is 99 -mem/0: storing 99 in location 1025 -run/0: instruction interpolate/37 -run/0: {name: "out", value: 13, type: 2-4, properties: ["out": "address":"character"]} <- index-address/27 {name: "result", value: 7, type: 2-5-4, properties: ["result": "address":"array":"character", "deref": ]}, {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} -run/0: ingredient 0 is result -mem/0: location 1021 is 1074 -run/0: ingredient 1 is {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} -mem/0: location 1022 is 9 -run/0: address to copy is 1084 -run/0: product 0 is 1084 -mem/0: storing 1084 in location 1027 -run/0: instruction interpolate/38 -run/0: {name: "out", value: 13, type: 2-4, properties: ["out": "address":"character", "deref": ]} <- copy/1 {name: "in", value: 11, type: 4, properties: ["in": "character"]} -run/0: ingredient 0 is in -mem/0: location 1025 is 99 -mem/0: location 1027 is 1084 -mem/0: storing 99 in location 1084 -run/0: instruction interpolate/39 -run/0: {name: "j", value: 14, type: 1, properties: ["j": "integer"]} <- add/2 {name: "j", value: 14, type: 1, properties: ["j": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is j -mem/0: location 1028 is 2 -run/0: ingredient 1 is 1 -run/0: product 0 is 3 -mem/0: storing 3 in location 1028 -run/0: instruction interpolate/40 -run/0: {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} <- add/2 {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is result-idx -mem/0: location 1022 is 9 -run/0: ingredient 1 is 1 -run/0: product 0 is 10 -mem/0: storing 10 in location 1022 -run/0: instruction interpolate/41 -run/0: loop/10 {name: "", value: -8, type: , properties: ["": ]} -run/0: ingredient 0 is -8 -run/0: jumping to instruction 34 -run/0: instruction interpolate/34 -run/0: {name: "arg-done?", value: 15, type: 3, properties: ["arg-done?": "boolean"]} <- greater-or-equal/16 {name: "j", value: 14, type: 1, properties: ["j": "integer"]}, {name: "a-len", value: 6, type: 1, properties: ["a-len": "integer"]} -run/0: ingredient 0 is j -mem/0: location 1028 is 3 -run/0: ingredient 1 is a-len -mem/0: location 1020 is 3 -run/0: product 0 is 1 -mem/0: storing 1 in location 1029 -run/0: instruction interpolate/35 -run/0: break-if/11 {name: "arg-done?", value: 15, type: 3, properties: ["arg-done?": "boolean"]}, {name: "", value: 6, type: , properties: ["": ]} -mem/0: location 1029 is 1 -run/0: ingredient 0 is 1 -run/0: ingredient 1 is -run/0: jumping to instruction 42 -run/0: instruction interpolate/43 -run/0: {name: "i", value: 9, type: 1, properties: ["i": "integer"]} <- add/2 {name: "i", value: 9, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is i -mem/0: location 1023 is 7 -run/0: ingredient 1 is 1 -run/0: product 0 is 8 -mem/0: storing 8 in location 1023 -run/0: instruction interpolate/44 -run/0: loop/10 {name: "", value: -27, type: , properties: ["": ]} -run/0: ingredient 0 is -27 -run/0: jumping to instruction 18 -run/0: instruction interpolate/18 -run/0: {name: "a", value: 4, type: 2-5-4, properties: ["a": "address":"array":"character"]}, {name: "arg-received?", value: 5, type: 3, properties: ["arg-received?": "boolean"]} <- next-ingredient/30 -mem/0: storing 0 in location 1019 -run/0: instruction interpolate/19 -run/0: break-unless/12 {name: "arg-received?", value: 5, type: 3, properties: ["arg-received?": "boolean"]}, {name: "", value: 25, type: , properties: ["": ]} -mem/0: location 1019 is 0 -run/0: ingredient 0 is 0 -run/0: ingredient 1 is -run/0: jumping to instruction 45 -run/0: instruction interpolate/47 -run/0: {name: "tem-done?", value: 10, type: 3, properties: ["tem-done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 9, type: 1, properties: ["i": "integer"]}, {name: "tem-len", value: 2, type: 1, properties: ["tem-len": "integer"]} -run/0: ingredient 0 is i -mem/0: location 1023 is 8 -run/0: ingredient 1 is tem-len -mem/0: location 1016 is 8 -run/0: product 0 is 1 -mem/0: storing 1 in location 1024 -run/0: instruction interpolate/48 -run/0: break-if/11 {name: "tem-done?", value: 10, type: 3, properties: ["tem-done?": "boolean"]}, {name: "", value: 6, type: , properties: ["": ]} -mem/0: location 1024 is 1 -run/0: ingredient 0 is 1 -run/0: ingredient 1 is -run/0: jumping to instruction 55 -run/0: instruction interpolate/56 -run/0: reply/33 {name: "result", value: 7, type: 2-5-4, properties: ["result": "address":"array":"character"]} -mem/0: location 1021 is 1074 -run/0: result 0 is 1074 -mem/0: storing 1074 in location 3 -run/0: instruction run1001/3 -run/0: {name: "4", value: 4, type: 5-4, properties: ["4": "array":"character", "raw": ]} <- copy/1 {name: "3", value: 3, type: 2-5-4, properties: ["3": "address":"array":"character", "raw": , "deref": ]} -run/0: ingredient 0 is 3 -mem/0: location 3 is 1074 -mem/0: location 1074 is 10 -mem/0: location 1075 is 104 -mem/0: location 1076 is 101 -mem/0: location 1077 is 108 -mem/0: location 1078 is 108 -mem/0: location 1079 is 111 -mem/0: location 1080 is 44 -mem/0: location 1081 is 32 -mem/0: location 1082 is 97 -mem/0: location 1083 is 98 -mem/0: location 1084 is 99 -mem/0: storing 10 in location 4 -mem/0: storing 104 in location 5 -mem/0: storing 101 in location 6 -mem/0: storing 108 in location 7 -mem/0: storing 108 in location 8 -mem/0: storing 111 in location 9 -mem/0: storing 44 in location 10 -mem/0: storing 32 in location 11 -mem/0: storing 97 in location 12 -mem/0: storing 98 in location 13 -mem/0: storing 99 in location 14 -run/0: instruction interpolate-at-end/1 -run/0: memory-should-contain/46 {name: " - 4:string <- [hello, abc] - ", value: 0, type: 0, properties: [" - 4:string <- [hello, abc] - ": "literal-string"]} -run/0: checking string length at 4 -run/0: checking location 5 -run/0: checking location 6 -run/0: checking location 7 -run/0: checking location 8 -run/0: checking location 9 -run/0: checking location 10 -run/0: checking location 11 -run/0: checking location 12 -run/0: checking location 13 -run/0: checking location 14 diff --git a/cpp/.traces/interpolate-at-start b/cpp/.traces/interpolate-at-start deleted file mode 100644 index 5a6164e7..00000000 --- a/cpp/.traces/interpolate-at-start +++ /dev/null @@ -1,925 +0,0 @@ -parse/0: instruction: run -parse/0: ingredient: {name: " - 1:address:array:character/raw <- new [_, hello!] - 2:address:array:character/raw <- new [abc] - 3:address:array:character/raw <- interpolate 1:address:array:character/raw, 2:address:array:character/raw - 4:array:character/raw <- copy 3:address:array:character/raw/deref - ", value: 0, type: 0, properties: [" - 1:address:array:character/raw <- new [_, hello!] - 2:address:array:character/raw <- new [abc] - 3:address:array:character/raw <- interpolate 1:address:array:character/raw, 2:address:array:character/raw - 4:array:character/raw <- copy 3:address:array:character/raw/deref - ": "literal-string"]} -parse/0: instruction: memory-should-contain -parse/0: ingredient: {name: " - 4:string <- [abc, hello!] - 16 <- 0 # out of bounds - ", value: 0, type: 0, properties: [" - 4:string <- [abc, hello!] - 16 <- 0 # out of bounds - ": "literal-string"]} -after-brace/0: recipe interpolate-at-start -after-brace/0: run ... -after-brace/0: memory-should-contain ... -new/0: routine allocated memory from 1000 to 101000 -schedule/0: interpolate-at-start -run/0: instruction interpolate-at-start/0 -run/0: run/45 {name: " - 1:address:array:character/raw <- new [_, hello!] - 2:address:array:character/raw <- new [abc] - 3:address:array:character/raw <- interpolate 1:address:array:character/raw, 2:address:array:character/raw - 4:array:character/raw <- copy 3:address:array:character/raw/deref - ", value: 0, type: 0, properties: [" - 1:address:array:character/raw <- new [_, hello!] - 2:address:array:character/raw <- new [abc] - 3:address:array:character/raw <- interpolate 1:address:array:character/raw, 2:address:array:character/raw - 4:array:character/raw <- copy 3:address:array:character/raw/deref - ": "literal-string"]} -parse/0: instruction: new -parse/0: ingredient: {name: "_, hello!", value: 0, type: 0, properties: ["_, hello!": "literal-string"]} -parse/0: product: {name: "1", value: 0, type: 2-5-4, properties: ["1": "address":"array":"character", "raw": ]} -parse/0: instruction: new -parse/0: ingredient: {name: "abc", value: 0, type: 0, properties: ["abc": "literal-string"]} -parse/0: product: {name: "2", value: 0, type: 2-5-4, properties: ["2": "address":"array":"character", "raw": ]} -parse/0: instruction: interpolate -parse/0: ingredient: {name: "1", value: 0, type: 2-5-4, properties: ["1": "address":"array":"character", "raw": ]} -parse/0: ingredient: {name: "2", value: 0, type: 2-5-4, properties: ["2": "address":"array":"character", "raw": ]} -parse/0: product: {name: "3", value: 0, type: 2-5-4, properties: ["3": "address":"array":"character", "raw": ]} -parse/0: instruction: copy -parse/0: ingredient: {name: "3", value: 0, type: 2-5-4, properties: ["3": "address":"array":"character", "raw": , "deref": ]} -parse/0: product: {name: "4", value: 0, type: 5-4, properties: ["4": "array":"character", "raw": ]} -new/0: _, hello! -> 0 -new/0: abc -> 0 -after-brace/0: recipe run1001 -after-brace/0: new ... -after-brace/0: new ... -after-brace/0: interpolate ... -after-brace/0: copy ... -run/0: instruction run1001/0 -run/0: {name: "1", value: 1, type: 2-5-4, properties: ["1": "address":"array":"character", "raw": ]} <- new/44 {name: "_, hello!", value: 0, type: 0, properties: ["_, hello!": "literal-string"]} -mem/0: storing 1000 in location 1 -run/0: instruction run1001/1 -run/0: {name: "2", value: 2, type: 2-5-4, properties: ["2": "address":"array":"character", "raw": ]} <- new/44 {name: "abc", value: 0, type: 0, properties: ["abc": "literal-string"]} -mem/0: storing 1010 in location 2 -run/0: instruction run1001/2 -run/0: {name: "3", value: 3, type: 2-5-4, properties: ["3": "address":"array":"character", "raw": ]} <- interpolate/107 {name: "1", value: 1, type: 2-5-4, properties: ["1": "address":"array":"character", "raw": ]}, {name: "2", value: 2, type: 2-5-4, properties: ["2": "address":"array":"character", "raw": ]} -mem/0: location 1 is 1000 -mem/0: location 2 is 1010 -run/0: instruction interpolate/0 -run/0: {name: "default-space", value: 0, type: 5-2-1, properties: ["default-space": "array":"address":"location"]} <- new/44 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "60", value: 60, type: 0, properties: ["60": "literal"]} -mem/0: array size is 60 -mem/0: new alloc: 1014 -run/0: instruction interpolate/1 -run/0: {name: "template", value: 1, type: 2-5-4, properties: ["template": "address":"array":"character"]} <- next-ingredient/30 -run/0: product 0 is 1000 -mem/0: storing 1000 in location 1016 -run/0: instruction interpolate/2 -run/0: {name: "tem-len", value: 2, type: 1, properties: ["tem-len": "integer"]} <- length/28 {name: "template", value: 1, type: 2-5-4, properties: ["template": "address":"array":"character", "deref": ]} -mem/0: location 1016 is 1000 -mem/0: storing 9 in location 1017 -run/0: instruction interpolate/3 -run/0: {name: "result-len", value: 3, type: 1, properties: ["result-len": "integer"]} <- copy/1 {name: "tem-len", value: 2, type: 1, properties: ["tem-len": "integer"]} -run/0: ingredient 0 is tem-len -mem/0: location 1017 is 9 -mem/0: storing 9 in location 1018 -run/0: instruction interpolate/5 -run/0: {name: "a", value: 4, type: 2-5-4, properties: ["a": "address":"array":"character"]}, {name: "arg-received?", value: 5, type: 3, properties: ["arg-received?": "boolean"]} <- next-ingredient/30 -run/0: product 0 is 1010 -mem/0: storing 1010 in location 1019 -mem/0: storing 1 in location 1020 -run/0: instruction interpolate/6 -run/0: break-unless/12 {name: "arg-received?", value: 5, type: 3, properties: ["arg-received?": "boolean"]}, {name: "", value: 4, type: , properties: ["": ]} -mem/0: location 1020 is 1 -run/0: ingredient 0 is 1 -run/0: jump-unless fell through -run/0: instruction interpolate/7 -run/0: {name: "a-len", value: 6, type: 1, properties: ["a-len": "integer"]} <- length/28 {name: "a", value: 4, type: 2-5-4, properties: ["a": "address":"array":"character", "deref": ]} -mem/0: location 1019 is 1010 -mem/0: storing 3 in location 1021 -run/0: instruction interpolate/8 -run/0: {name: "result-len", value: 3, type: 1, properties: ["result-len": "integer"]} <- add/2 {name: "result-len", value: 3, type: 1, properties: ["result-len": "integer"]}, {name: "a-len", value: 6, type: 1, properties: ["a-len": "integer"]} -run/0: ingredient 0 is result-len -mem/0: location 1018 is 9 -run/0: ingredient 1 is a-len -mem/0: location 1021 is 3 -run/0: product 0 is 12 -mem/0: storing 12 in location 1018 -run/0: instruction interpolate/9 -run/0: {name: "result-len", value: 3, type: 1, properties: ["result-len": "integer"]} <- subtract/3 {name: "result-len", value: 3, type: 1, properties: ["result-len": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is result-len -mem/0: location 1018 is 12 -run/0: ingredient 1 is 1 -run/0: product 0 is 11 -mem/0: storing 11 in location 1018 -run/0: instruction interpolate/10 -run/0: loop/10 {name: "", value: -6, type: , properties: ["": ]} -run/0: ingredient 0 is -6 -run/0: jumping to instruction 5 -run/0: instruction interpolate/5 -run/0: {name: "a", value: 4, type: 2-5-4, properties: ["a": "address":"array":"character"]}, {name: "arg-received?", value: 5, type: 3, properties: ["arg-received?": "boolean"]} <- next-ingredient/30 -mem/0: storing 0 in location 1020 -run/0: instruction interpolate/6 -run/0: break-unless/12 {name: "arg-received?", value: 5, type: 3, properties: ["arg-received?": "boolean"]}, {name: "", value: 4, type: , properties: ["": ]} -mem/0: location 1020 is 0 -run/0: ingredient 0 is 0 -run/0: ingredient 1 is -run/0: jumping to instruction 11 -run/0: instruction interpolate/12 -run/0: rewind-ingredients/31 -run/0: instruction interpolate/13 -run/0: {name: "_", value: 0, type: 0, properties: ["_": "dummy"]} <- next-ingredient/30 -run/0: product 0 is 1000 -run/0: instruction interpolate/14 -run/0: {name: "result", value: 7, type: 2-5-4, properties: ["result": "address":"array":"character"]} <- new/44 {name: "character", value: 4, type: 0, properties: ["character": "type"]}, {name: "result-len", value: 3, type: 1, properties: ["result-len": "integer"]} -mem/0: location 1018 is 11 -mem/0: array size is 11 -mem/0: new alloc: 1075 -mem/0: storing 1075 in location 1022 -run/0: instruction interpolate/15 -run/0: {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} <- copy/1 {name: "0", value: 0, type: 0, properties: ["0": "literal"]} -run/0: ingredient 0 is 0 -mem/0: storing 0 in location 1023 -run/0: instruction interpolate/16 -run/0: {name: "i", value: 9, type: 1, properties: ["i": "integer"]} <- copy/1 {name: "0", value: 0, type: 0, properties: ["0": "literal"]} -run/0: ingredient 0 is 0 -mem/0: storing 0 in location 1024 -run/0: instruction interpolate/18 -run/0: {name: "a", value: 4, type: 2-5-4, properties: ["a": "address":"array":"character"]}, {name: "arg-received?", value: 5, type: 3, properties: ["arg-received?": "boolean"]} <- next-ingredient/30 -run/0: product 0 is 1010 -mem/0: storing 1010 in location 1019 -mem/0: storing 1 in location 1020 -run/0: instruction interpolate/19 -run/0: break-unless/12 {name: "arg-received?", value: 5, type: 3, properties: ["arg-received?": "boolean"]}, {name: "", value: 25, type: , properties: ["": ]} -mem/0: location 1020 is 1 -run/0: ingredient 0 is 1 -run/0: jump-unless fell through -run/0: instruction interpolate/21 -run/0: {name: "tem-done?", value: 10, type: 3, properties: ["tem-done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 9, type: 1, properties: ["i": "integer"]}, {name: "tem-len", value: 2, type: 1, properties: ["tem-len": "integer"]} -run/0: ingredient 0 is i -mem/0: location 1024 is 0 -run/0: ingredient 1 is tem-len -mem/0: location 1017 is 9 -run/0: product 0 is 0 -mem/0: storing 0 in location 1025 -run/0: instruction interpolate/22 -run/0: break-if/11 {name: "tem-done?", value: 10, type: 3, properties: ["tem-done?": "boolean"]}, {name: "2", value: 2, type: 0, properties: ["2": "blocks"]} -mem/0: location 1025 is 0 -run/0: ingredient 0 is 0 -run/0: jump-if fell through -run/0: instruction interpolate/23 -run/0: {name: "in", value: 11, type: 4, properties: ["in": "character"]} <- index/26 {name: "template", value: 1, type: 2-5-4, properties: ["template": "address":"array":"character", "deref": ]}, {name: "i", value: 9, type: 1, properties: ["i": "integer"]} -run/0: ingredient 0 is {name: "template", value: 1, type: 2-5-4, properties: ["template": "address":"array":"character", "deref": ]} -mem/0: location 1016 is 1000 -run/0: ingredient 1 is {name: "i", value: 9, type: 1, properties: ["i": "integer"]} -mem/0: location 1024 is 0 -run/0: address to copy is 1001 -run/0: its type is 4 -mem/0: location 1001 is 95 -run/0: product 0 is 95 -mem/0: storing 95 in location 1026 -run/0: instruction interpolate/24 -run/0: {name: "underscore?", value: 12, type: 3, properties: ["underscore?": "boolean"]} <- equal/13 {name: "in", value: 11, type: 4, properties: ["in": "character"]}, {name: "95", value: 95, type: 0, properties: ["95": "literal"]} -run/0: ingredient 0 is in -mem/0: location 1026 is 95 -run/0: ingredient 1 is 95 -run/0: product 0 is 1 -mem/0: storing 1 in location 1027 -run/0: instruction interpolate/25 -run/0: break-if/11 {name: "underscore?", value: 12, type: 3, properties: ["underscore?": "boolean"]}, {name: "", value: 5, type: , properties: ["": ]} -mem/0: location 1027 is 1 -run/0: ingredient 0 is 1 -run/0: ingredient 1 is -run/0: jumping to instruction 31 -run/0: instruction interpolate/32 -run/0: {name: "j", value: 14, type: 1, properties: ["j": "integer"]} <- copy/1 {name: "0", value: 0, type: 0, properties: ["0": "literal"]} -run/0: ingredient 0 is 0 -mem/0: storing 0 in location 1029 -run/0: instruction interpolate/34 -run/0: {name: "arg-done?", value: 15, type: 3, properties: ["arg-done?": "boolean"]} <- greater-or-equal/16 {name: "j", value: 14, type: 1, properties: ["j": "integer"]}, {name: "a-len", value: 6, type: 1, properties: ["a-len": "integer"]} -run/0: ingredient 0 is j -mem/0: location 1029 is 0 -run/0: ingredient 1 is a-len -mem/0: location 1021 is 3 -run/0: product 0 is 0 -mem/0: storing 0 in location 1030 -run/0: instruction interpolate/35 -run/0: break-if/11 {name: "arg-done?", value: 15, type: 3, properties: ["arg-done?": "boolean"]}, {name: "", value: 6, type: , properties: ["": ]} -mem/0: location 1030 is 0 -run/0: ingredient 0 is 0 -run/0: jump-if fell through -run/0: instruction interpolate/36 -run/0: {name: "in", value: 11, type: 4, properties: ["in": "character"]} <- index/26 {name: "a", value: 4, type: 2-5-4, properties: ["a": "address":"array":"character", "deref": ]}, {name: "j", value: 14, type: 1, properties: ["j": "integer"]} -run/0: ingredient 0 is {name: "a", value: 4, type: 2-5-4, properties: ["a": "address":"array":"character", "deref": ]} -mem/0: location 1019 is 1010 -run/0: ingredient 1 is {name: "j", value: 14, type: 1, properties: ["j": "integer"]} -mem/0: location 1029 is 0 -run/0: address to copy is 1011 -run/0: its type is 4 -mem/0: location 1011 is 97 -run/0: product 0 is 97 -mem/0: storing 97 in location 1026 -run/0: instruction interpolate/37 -run/0: {name: "out", value: 13, type: 2-4, properties: ["out": "address":"character"]} <- index-address/27 {name: "result", value: 7, type: 2-5-4, properties: ["result": "address":"array":"character", "deref": ]}, {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} -run/0: ingredient 0 is result -mem/0: location 1022 is 1075 -run/0: ingredient 1 is {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} -mem/0: location 1023 is 0 -run/0: address to copy is 1076 -run/0: product 0 is 1076 -mem/0: storing 1076 in location 1028 -run/0: instruction interpolate/38 -run/0: {name: "out", value: 13, type: 2-4, properties: ["out": "address":"character", "deref": ]} <- copy/1 {name: "in", value: 11, type: 4, properties: ["in": "character"]} -run/0: ingredient 0 is in -mem/0: location 1026 is 97 -mem/0: location 1028 is 1076 -mem/0: storing 97 in location 1076 -run/0: instruction interpolate/39 -run/0: {name: "j", value: 14, type: 1, properties: ["j": "integer"]} <- add/2 {name: "j", value: 14, type: 1, properties: ["j": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is j -mem/0: location 1029 is 0 -run/0: ingredient 1 is 1 -run/0: product 0 is 1 -mem/0: storing 1 in location 1029 -run/0: instruction interpolate/40 -run/0: {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} <- add/2 {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is result-idx -mem/0: location 1023 is 0 -run/0: ingredient 1 is 1 -run/0: product 0 is 1 -mem/0: storing 1 in location 1023 -run/0: instruction interpolate/41 -run/0: loop/10 {name: "", value: -8, type: , properties: ["": ]} -run/0: ingredient 0 is -8 -run/0: jumping to instruction 34 -run/0: instruction interpolate/34 -run/0: {name: "arg-done?", value: 15, type: 3, properties: ["arg-done?": "boolean"]} <- greater-or-equal/16 {name: "j", value: 14, type: 1, properties: ["j": "integer"]}, {name: "a-len", value: 6, type: 1, properties: ["a-len": "integer"]} -run/0: ingredient 0 is j -mem/0: location 1029 is 1 -run/0: ingredient 1 is a-len -mem/0: location 1021 is 3 -run/0: product 0 is 0 -mem/0: storing 0 in location 1030 -run/0: instruction interpolate/35 -run/0: break-if/11 {name: "arg-done?", value: 15, type: 3, properties: ["arg-done?": "boolean"]}, {name: "", value: 6, type: , properties: ["": ]} -mem/0: location 1030 is 0 -run/0: ingredient 0 is 0 -run/0: jump-if fell through -run/0: instruction interpolate/36 -run/0: {name: "in", value: 11, type: 4, properties: ["in": "character"]} <- index/26 {name: "a", value: 4, type: 2-5-4, properties: ["a": "address":"array":"character", "deref": ]}, {name: "j", value: 14, type: 1, properties: ["j": "integer"]} -run/0: ingredient 0 is {name: "a", value: 4, type: 2-5-4, properties: ["a": "address":"array":"character", "deref": ]} -mem/0: location 1019 is 1010 -run/0: ingredient 1 is {name: "j", value: 14, type: 1, properties: ["j": "integer"]} -mem/0: location 1029 is 1 -run/0: address to copy is 1012 -run/0: its type is 4 -mem/0: location 1012 is 98 -run/0: product 0 is 98 -mem/0: storing 98 in location 1026 -run/0: instruction interpolate/37 -run/0: {name: "out", value: 13, type: 2-4, properties: ["out": "address":"character"]} <- index-address/27 {name: "result", value: 7, type: 2-5-4, properties: ["result": "address":"array":"character", "deref": ]}, {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} -run/0: ingredient 0 is result -mem/0: location 1022 is 1075 -run/0: ingredient 1 is {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} -mem/0: location 1023 is 1 -run/0: address to copy is 1077 -run/0: product 0 is 1077 -mem/0: storing 1077 in location 1028 -run/0: instruction interpolate/38 -run/0: {name: "out", value: 13, type: 2-4, properties: ["out": "address":"character", "deref": ]} <- copy/1 {name: "in", value: 11, type: 4, properties: ["in": "character"]} -run/0: ingredient 0 is in -mem/0: location 1026 is 98 -mem/0: location 1028 is 1077 -mem/0: storing 98 in location 1077 -run/0: instruction interpolate/39 -run/0: {name: "j", value: 14, type: 1, properties: ["j": "integer"]} <- add/2 {name: "j", value: 14, type: 1, properties: ["j": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is j -mem/0: location 1029 is 1 -run/0: ingredient 1 is 1 -run/0: product 0 is 2 -mem/0: storing 2 in location 1029 -run/0: instruction interpolate/40 -run/0: {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} <- add/2 {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is result-idx -mem/0: location 1023 is 1 -run/0: ingredient 1 is 1 -run/0: product 0 is 2 -mem/0: storing 2 in location 1023 -run/0: instruction interpolate/41 -run/0: loop/10 {name: "", value: -8, type: , properties: ["": ]} -run/0: ingredient 0 is -8 -run/0: jumping to instruction 34 -run/0: instruction interpolate/34 -run/0: {name: "arg-done?", value: 15, type: 3, properties: ["arg-done?": "boolean"]} <- greater-or-equal/16 {name: "j", value: 14, type: 1, properties: ["j": "integer"]}, {name: "a-len", value: 6, type: 1, properties: ["a-len": "integer"]} -run/0: ingredient 0 is j -mem/0: location 1029 is 2 -run/0: ingredient 1 is a-len -mem/0: location 1021 is 3 -run/0: product 0 is 0 -mem/0: storing 0 in location 1030 -run/0: instruction interpolate/35 -run/0: break-if/11 {name: "arg-done?", value: 15, type: 3, properties: ["arg-done?": "boolean"]}, {name: "", value: 6, type: , properties: ["": ]} -mem/0: location 1030 is 0 -run/0: ingredient 0 is 0 -run/0: jump-if fell through -run/0: instruction interpolate/36 -run/0: {name: "in", value: 11, type: 4, properties: ["in": "character"]} <- index/26 {name: "a", value: 4, type: 2-5-4, properties: ["a": "address":"array":"character", "deref": ]}, {name: "j", value: 14, type: 1, properties: ["j": "integer"]} -run/0: ingredient 0 is {name: "a", value: 4, type: 2-5-4, properties: ["a": "address":"array":"character", "deref": ]} -mem/0: location 1019 is 1010 -run/0: ingredient 1 is {name: "j", value: 14, type: 1, properties: ["j": "integer"]} -mem/0: location 1029 is 2 -run/0: address to copy is 1013 -run/0: its type is 4 -mem/0: location 1013 is 99 -run/0: product 0 is 99 -mem/0: storing 99 in location 1026 -run/0: instruction interpolate/37 -run/0: {name: "out", value: 13, type: 2-4, properties: ["out": "address":"character"]} <- index-address/27 {name: "result", value: 7, type: 2-5-4, properties: ["result": "address":"array":"character", "deref": ]}, {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} -run/0: ingredient 0 is result -mem/0: location 1022 is 1075 -run/0: ingredient 1 is {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} -mem/0: location 1023 is 2 -run/0: address to copy is 1078 -run/0: product 0 is 1078 -mem/0: storing 1078 in location 1028 -run/0: instruction interpolate/38 -run/0: {name: "out", value: 13, type: 2-4, properties: ["out": "address":"character", "deref": ]} <- copy/1 {name: "in", value: 11, type: 4, properties: ["in": "character"]} -run/0: ingredient 0 is in -mem/0: location 1026 is 99 -mem/0: location 1028 is 1078 -mem/0: storing 99 in location 1078 -run/0: instruction interpolate/39 -run/0: {name: "j", value: 14, type: 1, properties: ["j": "integer"]} <- add/2 {name: "j", value: 14, type: 1, properties: ["j": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is j -mem/0: location 1029 is 2 -run/0: ingredient 1 is 1 -run/0: product 0 is 3 -mem/0: storing 3 in location 1029 -run/0: instruction interpolate/40 -run/0: {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} <- add/2 {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is result-idx -mem/0: location 1023 is 2 -run/0: ingredient 1 is 1 -run/0: product 0 is 3 -mem/0: storing 3 in location 1023 -run/0: instruction interpolate/41 -run/0: loop/10 {name: "", value: -8, type: , properties: ["": ]} -run/0: ingredient 0 is -8 -run/0: jumping to instruction 34 -run/0: instruction interpolate/34 -run/0: {name: "arg-done?", value: 15, type: 3, properties: ["arg-done?": "boolean"]} <- greater-or-equal/16 {name: "j", value: 14, type: 1, properties: ["j": "integer"]}, {name: "a-len", value: 6, type: 1, properties: ["a-len": "integer"]} -run/0: ingredient 0 is j -mem/0: location 1029 is 3 -run/0: ingredient 1 is a-len -mem/0: location 1021 is 3 -run/0: product 0 is 1 -mem/0: storing 1 in location 1030 -run/0: instruction interpolate/35 -run/0: break-if/11 {name: "arg-done?", value: 15, type: 3, properties: ["arg-done?": "boolean"]}, {name: "", value: 6, type: , properties: ["": ]} -mem/0: location 1030 is 1 -run/0: ingredient 0 is 1 -run/0: ingredient 1 is -run/0: jumping to instruction 42 -run/0: instruction interpolate/43 -run/0: {name: "i", value: 9, type: 1, properties: ["i": "integer"]} <- add/2 {name: "i", value: 9, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is i -mem/0: location 1024 is 0 -run/0: ingredient 1 is 1 -run/0: product 0 is 1 -mem/0: storing 1 in location 1024 -run/0: instruction interpolate/44 -run/0: loop/10 {name: "", value: -27, type: , properties: ["": ]} -run/0: ingredient 0 is -27 -run/0: jumping to instruction 18 -run/0: instruction interpolate/18 -run/0: {name: "a", value: 4, type: 2-5-4, properties: ["a": "address":"array":"character"]}, {name: "arg-received?", value: 5, type: 3, properties: ["arg-received?": "boolean"]} <- next-ingredient/30 -mem/0: storing 0 in location 1020 -run/0: instruction interpolate/19 -run/0: break-unless/12 {name: "arg-received?", value: 5, type: 3, properties: ["arg-received?": "boolean"]}, {name: "", value: 25, type: , properties: ["": ]} -mem/0: location 1020 is 0 -run/0: ingredient 0 is 0 -run/0: ingredient 1 is -run/0: jumping to instruction 45 -run/0: instruction interpolate/47 -run/0: {name: "tem-done?", value: 10, type: 3, properties: ["tem-done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 9, type: 1, properties: ["i": "integer"]}, {name: "tem-len", value: 2, type: 1, properties: ["tem-len": "integer"]} -run/0: ingredient 0 is i -mem/0: location 1024 is 1 -run/0: ingredient 1 is tem-len -mem/0: location 1017 is 9 -run/0: product 0 is 0 -mem/0: storing 0 in location 1025 -run/0: instruction interpolate/48 -run/0: break-if/11 {name: "tem-done?", value: 10, type: 3, properties: ["tem-done?": "boolean"]}, {name: "", value: 6, type: , properties: ["": ]} -mem/0: location 1025 is 0 -run/0: ingredient 0 is 0 -run/0: jump-if fell through -run/0: instruction interpolate/49 -run/0: {name: "in", value: 11, type: 4, properties: ["in": "character"]} <- index/26 {name: "template", value: 1, type: 2-5-4, properties: ["template": "address":"array":"character", "deref": ]}, {name: "i", value: 9, type: 1, properties: ["i": "integer"]} -run/0: ingredient 0 is {name: "template", value: 1, type: 2-5-4, properties: ["template": "address":"array":"character", "deref": ]} -mem/0: location 1016 is 1000 -run/0: ingredient 1 is {name: "i", value: 9, type: 1, properties: ["i": "integer"]} -mem/0: location 1024 is 1 -run/0: address to copy is 1002 -run/0: its type is 4 -mem/0: location 1002 is 44 -run/0: product 0 is 44 -mem/0: storing 44 in location 1026 -run/0: instruction interpolate/50 -run/0: {name: "out", value: 13, type: 2-4, properties: ["out": "address":"character"]} <- index-address/27 {name: "result", value: 7, type: 2-5-4, properties: ["result": "address":"array":"character", "deref": ]}, {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} -run/0: ingredient 0 is result -mem/0: location 1022 is 1075 -run/0: ingredient 1 is {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} -mem/0: location 1023 is 3 -run/0: address to copy is 1079 -run/0: product 0 is 1079 -mem/0: storing 1079 in location 1028 -run/0: instruction interpolate/51 -run/0: {name: "out", value: 13, type: 2-4, properties: ["out": "address":"character", "deref": ]} <- copy/1 {name: "in", value: 11, type: 4, properties: ["in": "character"]} -run/0: ingredient 0 is in -mem/0: location 1026 is 44 -mem/0: location 1028 is 1079 -mem/0: storing 44 in location 1079 -run/0: instruction interpolate/52 -run/0: {name: "i", value: 9, type: 1, properties: ["i": "integer"]} <- add/2 {name: "i", value: 9, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is i -mem/0: location 1024 is 1 -run/0: ingredient 1 is 1 -run/0: product 0 is 2 -mem/0: storing 2 in location 1024 -run/0: instruction interpolate/53 -run/0: {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} <- add/2 {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is result-idx -mem/0: location 1023 is 3 -run/0: ingredient 1 is 1 -run/0: product 0 is 4 -mem/0: storing 4 in location 1023 -run/0: instruction interpolate/54 -run/0: loop/10 {name: "", value: -8, type: , properties: ["": ]} -run/0: ingredient 0 is -8 -run/0: jumping to instruction 47 -run/0: instruction interpolate/47 -run/0: {name: "tem-done?", value: 10, type: 3, properties: ["tem-done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 9, type: 1, properties: ["i": "integer"]}, {name: "tem-len", value: 2, type: 1, properties: ["tem-len": "integer"]} -run/0: ingredient 0 is i -mem/0: location 1024 is 2 -run/0: ingredient 1 is tem-len -mem/0: location 1017 is 9 -run/0: product 0 is 0 -mem/0: storing 0 in location 1025 -run/0: instruction interpolate/48 -run/0: break-if/11 {name: "tem-done?", value: 10, type: 3, properties: ["tem-done?": "boolean"]}, {name: "", value: 6, type: , properties: ["": ]} -mem/0: location 1025 is 0 -run/0: ingredient 0 is 0 -run/0: jump-if fell through -run/0: instruction interpolate/49 -run/0: {name: "in", value: 11, type: 4, properties: ["in": "character"]} <- index/26 {name: "template", value: 1, type: 2-5-4, properties: ["template": "address":"array":"character", "deref": ]}, {name: "i", value: 9, type: 1, properties: ["i": "integer"]} -run/0: ingredient 0 is {name: "template", value: 1, type: 2-5-4, properties: ["template": "address":"array":"character", "deref": ]} -mem/0: location 1016 is 1000 -run/0: ingredient 1 is {name: "i", value: 9, type: 1, properties: ["i": "integer"]} -mem/0: location 1024 is 2 -run/0: address to copy is 1003 -run/0: its type is 4 -mem/0: location 1003 is 32 -run/0: product 0 is 32 -mem/0: storing 32 in location 1026 -run/0: instruction interpolate/50 -run/0: {name: "out", value: 13, type: 2-4, properties: ["out": "address":"character"]} <- index-address/27 {name: "result", value: 7, type: 2-5-4, properties: ["result": "address":"array":"character", "deref": ]}, {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} -run/0: ingredient 0 is result -mem/0: location 1022 is 1075 -run/0: ingredient 1 is {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} -mem/0: location 1023 is 4 -run/0: address to copy is 1080 -run/0: product 0 is 1080 -mem/0: storing 1080 in location 1028 -run/0: instruction interpolate/51 -run/0: {name: "out", value: 13, type: 2-4, properties: ["out": "address":"character", "deref": ]} <- copy/1 {name: "in", value: 11, type: 4, properties: ["in": "character"]} -run/0: ingredient 0 is in -mem/0: location 1026 is 32 -mem/0: location 1028 is 1080 -mem/0: storing 32 in location 1080 -run/0: instruction interpolate/52 -run/0: {name: "i", value: 9, type: 1, properties: ["i": "integer"]} <- add/2 {name: "i", value: 9, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is i -mem/0: location 1024 is 2 -run/0: ingredient 1 is 1 -run/0: product 0 is 3 -mem/0: storing 3 in location 1024 -run/0: instruction interpolate/53 -run/0: {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} <- add/2 {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is result-idx -mem/0: location 1023 is 4 -run/0: ingredient 1 is 1 -run/0: product 0 is 5 -mem/0: storing 5 in location 1023 -run/0: instruction interpolate/54 -run/0: loop/10 {name: "", value: -8, type: , properties: ["": ]} -run/0: ingredient 0 is -8 -run/0: jumping to instruction 47 -run/0: instruction interpolate/47 -run/0: {name: "tem-done?", value: 10, type: 3, properties: ["tem-done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 9, type: 1, properties: ["i": "integer"]}, {name: "tem-len", value: 2, type: 1, properties: ["tem-len": "integer"]} -run/0: ingredient 0 is i -mem/0: location 1024 is 3 -run/0: ingredient 1 is tem-len -mem/0: location 1017 is 9 -run/0: product 0 is 0 -mem/0: storing 0 in location 1025 -run/0: instruction interpolate/48 -run/0: break-if/11 {name: "tem-done?", value: 10, type: 3, properties: ["tem-done?": "boolean"]}, {name: "", value: 6, type: , properties: ["": ]} -mem/0: location 1025 is 0 -run/0: ingredient 0 is 0 -run/0: jump-if fell through -run/0: instruction interpolate/49 -run/0: {name: "in", value: 11, type: 4, properties: ["in": "character"]} <- index/26 {name: "template", value: 1, type: 2-5-4, properties: ["template": "address":"array":"character", "deref": ]}, {name: "i", value: 9, type: 1, properties: ["i": "integer"]} -run/0: ingredient 0 is {name: "template", value: 1, type: 2-5-4, properties: ["template": "address":"array":"character", "deref": ]} -mem/0: location 1016 is 1000 -run/0: ingredient 1 is {name: "i", value: 9, type: 1, properties: ["i": "integer"]} -mem/0: location 1024 is 3 -run/0: address to copy is 1004 -run/0: its type is 4 -mem/0: location 1004 is 104 -run/0: product 0 is 104 -mem/0: storing 104 in location 1026 -run/0: instruction interpolate/50 -run/0: {name: "out", value: 13, type: 2-4, properties: ["out": "address":"character"]} <- index-address/27 {name: "result", value: 7, type: 2-5-4, properties: ["result": "address":"array":"character", "deref": ]}, {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} -run/0: ingredient 0 is result -mem/0: location 1022 is 1075 -run/0: ingredient 1 is {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} -mem/0: location 1023 is 5 -run/0: address to copy is 1081 -run/0: product 0 is 1081 -mem/0: storing 1081 in location 1028 -run/0: instruction interpolate/51 -run/0: {name: "out", value: 13, type: 2-4, properties: ["out": "address":"character", "deref": ]} <- copy/1 {name: "in", value: 11, type: 4, properties: ["in": "character"]} -run/0: ingredient 0 is in -mem/0: location 1026 is 104 -mem/0: location 1028 is 1081 -mem/0: storing 104 in location 1081 -run/0: instruction interpolate/52 -run/0: {name: "i", value: 9, type: 1, properties: ["i": "integer"]} <- add/2 {name: "i", value: 9, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is i -mem/0: location 1024 is 3 -run/0: ingredient 1 is 1 -run/0: product 0 is 4 -mem/0: storing 4 in location 1024 -run/0: instruction interpolate/53 -run/0: {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} <- add/2 {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is result-idx -mem/0: location 1023 is 5 -run/0: ingredient 1 is 1 -run/0: product 0 is 6 -mem/0: storing 6 in location 1023 -run/0: instruction interpolate/54 -run/0: loop/10 {name: "", value: -8, type: , properties: ["": ]} -run/0: ingredient 0 is -8 -run/0: jumping to instruction 47 -run/0: instruction interpolate/47 -run/0: {name: "tem-done?", value: 10, type: 3, properties: ["tem-done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 9, type: 1, properties: ["i": "integer"]}, {name: "tem-len", value: 2, type: 1, properties: ["tem-len": "integer"]} -run/0: ingredient 0 is i -mem/0: location 1024 is 4 -run/0: ingredient 1 is tem-len -mem/0: location 1017 is 9 -run/0: product 0 is 0 -mem/0: storing 0 in location 1025 -run/0: instruction interpolate/48 -run/0: break-if/11 {name: "tem-done?", value: 10, type: 3, properties: ["tem-done?": "boolean"]}, {name: "", value: 6, type: , properties: ["": ]} -mem/0: location 1025 is 0 -run/0: ingredient 0 is 0 -run/0: jump-if fell through -run/0: instruction interpolate/49 -run/0: {name: "in", value: 11, type: 4, properties: ["in": "character"]} <- index/26 {name: "template", value: 1, type: 2-5-4, properties: ["template": "address":"array":"character", "deref": ]}, {name: "i", value: 9, type: 1, properties: ["i": "integer"]} -run/0: ingredient 0 is {name: "template", value: 1, type: 2-5-4, properties: ["template": "address":"array":"character", "deref": ]} -mem/0: location 1016 is 1000 -run/0: ingredient 1 is {name: "i", value: 9, type: 1, properties: ["i": "integer"]} -mem/0: location 1024 is 4 -run/0: address to copy is 1005 -run/0: its type is 4 -mem/0: location 1005 is 101 -run/0: product 0 is 101 -mem/0: storing 101 in location 1026 -run/0: instruction interpolate/50 -run/0: {name: "out", value: 13, type: 2-4, properties: ["out": "address":"character"]} <- index-address/27 {name: "result", value: 7, type: 2-5-4, properties: ["result": "address":"array":"character", "deref": ]}, {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} -run/0: ingredient 0 is result -mem/0: location 1022 is 1075 -run/0: ingredient 1 is {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} -mem/0: location 1023 is 6 -run/0: address to copy is 1082 -run/0: product 0 is 1082 -mem/0: storing 1082 in location 1028 -run/0: instruction interpolate/51 -run/0: {name: "out", value: 13, type: 2-4, properties: ["out": "address":"character", "deref": ]} <- copy/1 {name: "in", value: 11, type: 4, properties: ["in": "character"]} -run/0: ingredient 0 is in -mem/0: location 1026 is 101 -mem/0: location 1028 is 1082 -mem/0: storing 101 in location 1082 -run/0: instruction interpolate/52 -run/0: {name: "i", value: 9, type: 1, properties: ["i": "integer"]} <- add/2 {name: "i", value: 9, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is i -mem/0: location 1024 is 4 -run/0: ingredient 1 is 1 -run/0: product 0 is 5 -mem/0: storing 5 in location 1024 -run/0: instruction interpolate/53 -run/0: {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} <- add/2 {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is result-idx -mem/0: location 1023 is 6 -run/0: ingredient 1 is 1 -run/0: product 0 is 7 -mem/0: storing 7 in location 1023 -run/0: instruction interpolate/54 -run/0: loop/10 {name: "", value: -8, type: , properties: ["": ]} -run/0: ingredient 0 is -8 -run/0: jumping to instruction 47 -run/0: instruction interpolate/47 -run/0: {name: "tem-done?", value: 10, type: 3, properties: ["tem-done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 9, type: 1, properties: ["i": "integer"]}, {name: "tem-len", value: 2, type: 1, properties: ["tem-len": "integer"]} -run/0: ingredient 0 is i -mem/0: location 1024 is 5 -run/0: ingredient 1 is tem-len -mem/0: location 1017 is 9 -run/0: product 0 is 0 -mem/0: storing 0 in location 1025 -run/0: instruction interpolate/48 -run/0: break-if/11 {name: "tem-done?", value: 10, type: 3, properties: ["tem-done?": "boolean"]}, {name: "", value: 6, type: , properties: ["": ]} -mem/0: location 1025 is 0 -run/0: ingredient 0 is 0 -run/0: jump-if fell through -run/0: instruction interpolate/49 -run/0: {name: "in", value: 11, type: 4, properties: ["in": "character"]} <- index/26 {name: "template", value: 1, type: 2-5-4, properties: ["template": "address":"array":"character", "deref": ]}, {name: "i", value: 9, type: 1, properties: ["i": "integer"]} -run/0: ingredient 0 is {name: "template", value: 1, type: 2-5-4, properties: ["template": "address":"array":"character", "deref": ]} -mem/0: location 1016 is 1000 -run/0: ingredient 1 is {name: "i", value: 9, type: 1, properties: ["i": "integer"]} -mem/0: location 1024 is 5 -run/0: address to copy is 1006 -run/0: its type is 4 -mem/0: location 1006 is 108 -run/0: product 0 is 108 -mem/0: storing 108 in location 1026 -run/0: instruction interpolate/50 -run/0: {name: "out", value: 13, type: 2-4, properties: ["out": "address":"character"]} <- index-address/27 {name: "result", value: 7, type: 2-5-4, properties: ["result": "address":"array":"character", "deref": ]}, {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} -run/0: ingredient 0 is result -mem/0: location 1022 is 1075 -run/0: ingredient 1 is {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} -mem/0: location 1023 is 7 -run/0: address to copy is 1083 -run/0: product 0 is 1083 -mem/0: storing 1083 in location 1028 -run/0: instruction interpolate/51 -run/0: {name: "out", value: 13, type: 2-4, properties: ["out": "address":"character", "deref": ]} <- copy/1 {name: "in", value: 11, type: 4, properties: ["in": "character"]} -run/0: ingredient 0 is in -mem/0: location 1026 is 108 -mem/0: location 1028 is 1083 -mem/0: storing 108 in location 1083 -run/0: instruction interpolate/52 -run/0: {name: "i", value: 9, type: 1, properties: ["i": "integer"]} <- add/2 {name: "i", value: 9, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is i -mem/0: location 1024 is 5 -run/0: ingredient 1 is 1 -run/0: product 0 is 6 -mem/0: storing 6 in location 1024 -run/0: instruction interpolate/53 -run/0: {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} <- add/2 {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is result-idx -mem/0: location 1023 is 7 -run/0: ingredient 1 is 1 -run/0: product 0 is 8 -mem/0: storing 8 in location 1023 -run/0: instruction interpolate/54 -run/0: loop/10 {name: "", value: -8, type: , properties: ["": ]} -run/0: ingredient 0 is -8 -run/0: jumping to instruction 47 -run/0: instruction interpolate/47 -run/0: {name: "tem-done?", value: 10, type: 3, properties: ["tem-done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 9, type: 1, properties: ["i": "integer"]}, {name: "tem-len", value: 2, type: 1, properties: ["tem-len": "integer"]} -run/0: ingredient 0 is i -mem/0: location 1024 is 6 -run/0: ingredient 1 is tem-len -mem/0: location 1017 is 9 -run/0: product 0 is 0 -mem/0: storing 0 in location 1025 -run/0: instruction interpolate/48 -run/0: break-if/11 {name: "tem-done?", value: 10, type: 3, properties: ["tem-done?": "boolean"]}, {name: "", value: 6, type: , properties: ["": ]} -mem/0: location 1025 is 0 -run/0: ingredient 0 is 0 -run/0: jump-if fell through -run/0: instruction interpolate/49 -run/0: {name: "in", value: 11, type: 4, properties: ["in": "character"]} <- index/26 {name: "template", value: 1, type: 2-5-4, properties: ["template": "address":"array":"character", "deref": ]}, {name: "i", value: 9, type: 1, properties: ["i": "integer"]} -run/0: ingredient 0 is {name: "template", value: 1, type: 2-5-4, properties: ["template": "address":"array":"character", "deref": ]} -mem/0: location 1016 is 1000 -run/0: ingredient 1 is {name: "i", value: 9, type: 1, properties: ["i": "integer"]} -mem/0: location 1024 is 6 -run/0: address to copy is 1007 -run/0: its type is 4 -mem/0: location 1007 is 108 -run/0: product 0 is 108 -mem/0: storing 108 in location 1026 -run/0: instruction interpolate/50 -run/0: {name: "out", value: 13, type: 2-4, properties: ["out": "address":"character"]} <- index-address/27 {name: "result", value: 7, type: 2-5-4, properties: ["result": "address":"array":"character", "deref": ]}, {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} -run/0: ingredient 0 is result -mem/0: location 1022 is 1075 -run/0: ingredient 1 is {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} -mem/0: location 1023 is 8 -run/0: address to copy is 1084 -run/0: product 0 is 1084 -mem/0: storing 1084 in location 1028 -run/0: instruction interpolate/51 -run/0: {name: "out", value: 13, type: 2-4, properties: ["out": "address":"character", "deref": ]} <- copy/1 {name: "in", value: 11, type: 4, properties: ["in": "character"]} -run/0: ingredient 0 is in -mem/0: location 1026 is 108 -mem/0: location 1028 is 1084 -mem/0: storing 108 in location 1084 -run/0: instruction interpolate/52 -run/0: {name: "i", value: 9, type: 1, properties: ["i": "integer"]} <- add/2 {name: "i", value: 9, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is i -mem/0: location 1024 is 6 -run/0: ingredient 1 is 1 -run/0: product 0 is 7 -mem/0: storing 7 in location 1024 -run/0: instruction interpolate/53 -run/0: {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} <- add/2 {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is result-idx -mem/0: location 1023 is 8 -run/0: ingredient 1 is 1 -run/0: product 0 is 9 -mem/0: storing 9 in location 1023 -run/0: instruction interpolate/54 -run/0: loop/10 {name: "", value: -8, type: , properties: ["": ]} -run/0: ingredient 0 is -8 -run/0: jumping to instruction 47 -run/0: instruction interpolate/47 -run/0: {name: "tem-done?", value: 10, type: 3, properties: ["tem-done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 9, type: 1, properties: ["i": "integer"]}, {name: "tem-len", value: 2, type: 1, properties: ["tem-len": "integer"]} -run/0: ingredient 0 is i -mem/0: location 1024 is 7 -run/0: ingredient 1 is tem-len -mem/0: location 1017 is 9 -run/0: product 0 is 0 -mem/0: storing 0 in location 1025 -run/0: instruction interpolate/48 -run/0: break-if/11 {name: "tem-done?", value: 10, type: 3, properties: ["tem-done?": "boolean"]}, {name: "", value: 6, type: , properties: ["": ]} -mem/0: location 1025 is 0 -run/0: ingredient 0 is 0 -run/0: jump-if fell through -run/0: instruction interpolate/49 -run/0: {name: "in", value: 11, type: 4, properties: ["in": "character"]} <- index/26 {name: "template", value: 1, type: 2-5-4, properties: ["template": "address":"array":"character", "deref": ]}, {name: "i", value: 9, type: 1, properties: ["i": "integer"]} -run/0: ingredient 0 is {name: "template", value: 1, type: 2-5-4, properties: ["template": "address":"array":"character", "deref": ]} -mem/0: location 1016 is 1000 -run/0: ingredient 1 is {name: "i", value: 9, type: 1, properties: ["i": "integer"]} -mem/0: location 1024 is 7 -run/0: address to copy is 1008 -run/0: its type is 4 -mem/0: location 1008 is 111 -run/0: product 0 is 111 -mem/0: storing 111 in location 1026 -run/0: instruction interpolate/50 -run/0: {name: "out", value: 13, type: 2-4, properties: ["out": "address":"character"]} <- index-address/27 {name: "result", value: 7, type: 2-5-4, properties: ["result": "address":"array":"character", "deref": ]}, {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} -run/0: ingredient 0 is result -mem/0: location 1022 is 1075 -run/0: ingredient 1 is {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} -mem/0: location 1023 is 9 -run/0: address to copy is 1085 -run/0: product 0 is 1085 -mem/0: storing 1085 in location 1028 -run/0: instruction interpolate/51 -run/0: {name: "out", value: 13, type: 2-4, properties: ["out": "address":"character", "deref": ]} <- copy/1 {name: "in", value: 11, type: 4, properties: ["in": "character"]} -run/0: ingredient 0 is in -mem/0: location 1026 is 111 -mem/0: location 1028 is 1085 -mem/0: storing 111 in location 1085 -run/0: instruction interpolate/52 -run/0: {name: "i", value: 9, type: 1, properties: ["i": "integer"]} <- add/2 {name: "i", value: 9, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is i -mem/0: location 1024 is 7 -run/0: ingredient 1 is 1 -run/0: product 0 is 8 -mem/0: storing 8 in location 1024 -run/0: instruction interpolate/53 -run/0: {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} <- add/2 {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is result-idx -mem/0: location 1023 is 9 -run/0: ingredient 1 is 1 -run/0: product 0 is 10 -mem/0: storing 10 in location 1023 -run/0: instruction interpolate/54 -run/0: loop/10 {name: "", value: -8, type: , properties: ["": ]} -run/0: ingredient 0 is -8 -run/0: jumping to instruction 47 -run/0: instruction interpolate/47 -run/0: {name: "tem-done?", value: 10, type: 3, properties: ["tem-done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 9, type: 1, properties: ["i": "integer"]}, {name: "tem-len", value: 2, type: 1, properties: ["tem-len": "integer"]} -run/0: ingredient 0 is i -mem/0: location 1024 is 8 -run/0: ingredient 1 is tem-len -mem/0: location 1017 is 9 -run/0: product 0 is 0 -mem/0: storing 0 in location 1025 -run/0: instruction interpolate/48 -run/0: break-if/11 {name: "tem-done?", value: 10, type: 3, properties: ["tem-done?": "boolean"]}, {name: "", value: 6, type: , properties: ["": ]} -mem/0: location 1025 is 0 -run/0: ingredient 0 is 0 -run/0: jump-if fell through -run/0: instruction interpolate/49 -run/0: {name: "in", value: 11, type: 4, properties: ["in": "character"]} <- index/26 {name: "template", value: 1, type: 2-5-4, properties: ["template": "address":"array":"character", "deref": ]}, {name: "i", value: 9, type: 1, properties: ["i": "integer"]} -run/0: ingredient 0 is {name: "template", value: 1, type: 2-5-4, properties: ["template": "address":"array":"character", "deref": ]} -mem/0: location 1016 is 1000 -run/0: ingredient 1 is {name: "i", value: 9, type: 1, properties: ["i": "integer"]} -mem/0: location 1024 is 8 -run/0: address to copy is 1009 -run/0: its type is 4 -mem/0: location 1009 is 33 -run/0: product 0 is 33 -mem/0: storing 33 in location 1026 -run/0: instruction interpolate/50 -run/0: {name: "out", value: 13, type: 2-4, properties: ["out": "address":"character"]} <- index-address/27 {name: "result", value: 7, type: 2-5-4, properties: ["result": "address":"array":"character", "deref": ]}, {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} -run/0: ingredient 0 is result -mem/0: location 1022 is 1075 -run/0: ingredient 1 is {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} -mem/0: location 1023 is 10 -run/0: address to copy is 1086 -run/0: product 0 is 1086 -mem/0: storing 1086 in location 1028 -run/0: instruction interpolate/51 -run/0: {name: "out", value: 13, type: 2-4, properties: ["out": "address":"character", "deref": ]} <- copy/1 {name: "in", value: 11, type: 4, properties: ["in": "character"]} -run/0: ingredient 0 is in -mem/0: location 1026 is 33 -mem/0: location 1028 is 1086 -mem/0: storing 33 in location 1086 -run/0: instruction interpolate/52 -run/0: {name: "i", value: 9, type: 1, properties: ["i": "integer"]} <- add/2 {name: "i", value: 9, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is i -mem/0: location 1024 is 8 -run/0: ingredient 1 is 1 -run/0: product 0 is 9 -mem/0: storing 9 in location 1024 -run/0: instruction interpolate/53 -run/0: {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} <- add/2 {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is result-idx -mem/0: location 1023 is 10 -run/0: ingredient 1 is 1 -run/0: product 0 is 11 -mem/0: storing 11 in location 1023 -run/0: instruction interpolate/54 -run/0: loop/10 {name: "", value: -8, type: , properties: ["": ]} -run/0: ingredient 0 is -8 -run/0: jumping to instruction 47 -run/0: instruction interpolate/47 -run/0: {name: "tem-done?", value: 10, type: 3, properties: ["tem-done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 9, type: 1, properties: ["i": "integer"]}, {name: "tem-len", value: 2, type: 1, properties: ["tem-len": "integer"]} -run/0: ingredient 0 is i -mem/0: location 1024 is 9 -run/0: ingredient 1 is tem-len -mem/0: location 1017 is 9 -run/0: product 0 is 1 -mem/0: storing 1 in location 1025 -run/0: instruction interpolate/48 -run/0: break-if/11 {name: "tem-done?", value: 10, type: 3, properties: ["tem-done?": "boolean"]}, {name: "", value: 6, type: , properties: ["": ]} -mem/0: location 1025 is 1 -run/0: ingredient 0 is 1 -run/0: ingredient 1 is -run/0: jumping to instruction 55 -run/0: instruction interpolate/56 -run/0: reply/33 {name: "result", value: 7, type: 2-5-4, properties: ["result": "address":"array":"character"]} -mem/0: location 1022 is 1075 -run/0: result 0 is 1075 -mem/0: storing 1075 in location 3 -run/0: instruction run1001/3 -run/0: {name: "4", value: 4, type: 5-4, properties: ["4": "array":"character", "raw": ]} <- copy/1 {name: "3", value: 3, type: 2-5-4, properties: ["3": "address":"array":"character", "raw": , "deref": ]} -run/0: ingredient 0 is 3 -mem/0: location 3 is 1075 -mem/0: location 1075 is 11 -mem/0: location 1076 is 97 -mem/0: location 1077 is 98 -mem/0: location 1078 is 99 -mem/0: location 1079 is 44 -mem/0: location 1080 is 32 -mem/0: location 1081 is 104 -mem/0: location 1082 is 101 -mem/0: location 1083 is 108 -mem/0: location 1084 is 108 -mem/0: location 1085 is 111 -mem/0: location 1086 is 33 -mem/0: storing 11 in location 4 -mem/0: storing 97 in location 5 -mem/0: storing 98 in location 6 -mem/0: storing 99 in location 7 -mem/0: storing 44 in location 8 -mem/0: storing 32 in location 9 -mem/0: storing 104 in location 10 -mem/0: storing 101 in location 11 -mem/0: storing 108 in location 12 -mem/0: storing 108 in location 13 -mem/0: storing 111 in location 14 -mem/0: storing 33 in location 15 -run/0: instruction interpolate-at-start/1 -run/0: memory-should-contain/46 {name: " - 4:string <- [abc, hello!] - 16 <- 0 # out of bounds - ", value: 0, type: 0, properties: [" - 4:string <- [abc, hello!] - 16 <- 0 # out of bounds - ": "literal-string"]} -run/0: checking string length at 4 -run/0: checking location 5 -run/0: checking location 6 -run/0: checking location 7 -run/0: checking location 8 -run/0: checking location 9 -run/0: checking location 10 -run/0: checking location 11 -run/0: checking location 12 -run/0: checking location 13 -run/0: checking location 14 -run/0: checking location 15 -run/0: checking location 16 diff --git a/cpp/.traces/interpolate-works b/cpp/.traces/interpolate-works deleted file mode 100644 index b9d98164..00000000 --- a/cpp/.traces/interpolate-works +++ /dev/null @@ -1,728 +0,0 @@ -parse/0: instruction: run -parse/0: ingredient: {name: " - 1:address:array:character/raw <- new [abc _] - 2:address:array:character/raw <- new [def] - 3:address:array:character/raw <- interpolate 1:address:array:character/raw, 2:address:array:character/raw - 4:array:character/raw <- copy 3:address:array:character/raw/deref - ", value: 0, type: 0, properties: [" - 1:address:array:character/raw <- new [abc _] - 2:address:array:character/raw <- new [def] - 3:address:array:character/raw <- interpolate 1:address:array:character/raw, 2:address:array:character/raw - 4:array:character/raw <- copy 3:address:array:character/raw/deref - ": "literal-string"]} -parse/0: instruction: memory-should-contain -parse/0: ingredient: {name: " - 4:string <- [abc def] - ", value: 0, type: 0, properties: [" - 4:string <- [abc def] - ": "literal-string"]} -after-brace/0: recipe interpolate-works -after-brace/0: run ... -after-brace/0: memory-should-contain ... -new/0: routine allocated memory from 1000 to 101000 -schedule/0: interpolate-works -run/0: instruction interpolate-works/0 -run/0: run/45 {name: " - 1:address:array:character/raw <- new [abc _] - 2:address:array:character/raw <- new [def] - 3:address:array:character/raw <- interpolate 1:address:array:character/raw, 2:address:array:character/raw - 4:array:character/raw <- copy 3:address:array:character/raw/deref - ", value: 0, type: 0, properties: [" - 1:address:array:character/raw <- new [abc _] - 2:address:array:character/raw <- new [def] - 3:address:array:character/raw <- interpolate 1:address:array:character/raw, 2:address:array:character/raw - 4:array:character/raw <- copy 3:address:array:character/raw/deref - ": "literal-string"]} -parse/0: instruction: new -parse/0: ingredient: {name: "abc _", value: 0, type: 0, properties: ["abc _": "literal-string"]} -parse/0: product: {name: "1", value: 0, type: 2-5-4, properties: ["1": "address":"array":"character", "raw": ]} -parse/0: instruction: new -parse/0: ingredient: {name: "def", value: 0, type: 0, properties: ["def": "literal-string"]} -parse/0: product: {name: "2", value: 0, type: 2-5-4, properties: ["2": "address":"array":"character", "raw": ]} -parse/0: instruction: interpolate -parse/0: ingredient: {name: "1", value: 0, type: 2-5-4, properties: ["1": "address":"array":"character", "raw": ]} -parse/0: ingredient: {name: "2", value: 0, type: 2-5-4, properties: ["2": "address":"array":"character", "raw": ]} -parse/0: product: {name: "3", value: 0, type: 2-5-4, properties: ["3": "address":"array":"character", "raw": ]} -parse/0: instruction: copy -parse/0: ingredient: {name: "3", value: 0, type: 2-5-4, properties: ["3": "address":"array":"character", "raw": , "deref": ]} -parse/0: product: {name: "4", value: 0, type: 5-4, properties: ["4": "array":"character", "raw": ]} -new/0: abc _ -> 0 -new/0: def -> 0 -after-brace/0: recipe run1001 -after-brace/0: new ... -after-brace/0: new ... -after-brace/0: interpolate ... -after-brace/0: copy ... -run/0: instruction run1001/0 -run/0: {name: "1", value: 1, type: 2-5-4, properties: ["1": "address":"array":"character", "raw": ]} <- new/44 {name: "abc _", value: 0, type: 0, properties: ["abc _": "literal-string"]} -mem/0: storing 1000 in location 1 -run/0: instruction run1001/1 -run/0: {name: "2", value: 2, type: 2-5-4, properties: ["2": "address":"array":"character", "raw": ]} <- new/44 {name: "def", value: 0, type: 0, properties: ["def": "literal-string"]} -mem/0: storing 1006 in location 2 -run/0: instruction run1001/2 -run/0: {name: "3", value: 3, type: 2-5-4, properties: ["3": "address":"array":"character", "raw": ]} <- interpolate/107 {name: "1", value: 1, type: 2-5-4, properties: ["1": "address":"array":"character", "raw": ]}, {name: "2", value: 2, type: 2-5-4, properties: ["2": "address":"array":"character", "raw": ]} -mem/0: location 1 is 1000 -mem/0: location 2 is 1006 -run/0: instruction interpolate/0 -run/0: {name: "default-space", value: 0, type: 5-2-1, properties: ["default-space": "array":"address":"location"]} <- new/44 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "60", value: 60, type: 0, properties: ["60": "literal"]} -mem/0: array size is 60 -mem/0: new alloc: 1010 -run/0: instruction interpolate/1 -run/0: {name: "template", value: 1, type: 2-5-4, properties: ["template": "address":"array":"character"]} <- next-ingredient/30 -run/0: product 0 is 1000 -mem/0: storing 1000 in location 1012 -run/0: instruction interpolate/2 -run/0: {name: "tem-len", value: 2, type: 1, properties: ["tem-len": "integer"]} <- length/28 {name: "template", value: 1, type: 2-5-4, properties: ["template": "address":"array":"character", "deref": ]} -mem/0: location 1012 is 1000 -mem/0: storing 5 in location 1013 -run/0: instruction interpolate/3 -run/0: {name: "result-len", value: 3, type: 1, properties: ["result-len": "integer"]} <- copy/1 {name: "tem-len", value: 2, type: 1, properties: ["tem-len": "integer"]} -run/0: ingredient 0 is tem-len -mem/0: location 1013 is 5 -mem/0: storing 5 in location 1014 -run/0: instruction interpolate/5 -run/0: {name: "a", value: 4, type: 2-5-4, properties: ["a": "address":"array":"character"]}, {name: "arg-received?", value: 5, type: 3, properties: ["arg-received?": "boolean"]} <- next-ingredient/30 -run/0: product 0 is 1006 -mem/0: storing 1006 in location 1015 -mem/0: storing 1 in location 1016 -run/0: instruction interpolate/6 -run/0: break-unless/12 {name: "arg-received?", value: 5, type: 3, properties: ["arg-received?": "boolean"]}, {name: "", value: 4, type: , properties: ["": ]} -mem/0: location 1016 is 1 -run/0: ingredient 0 is 1 -run/0: jump-unless fell through -run/0: instruction interpolate/7 -run/0: {name: "a-len", value: 6, type: 1, properties: ["a-len": "integer"]} <- length/28 {name: "a", value: 4, type: 2-5-4, properties: ["a": "address":"array":"character", "deref": ]} -mem/0: location 1015 is 1006 -mem/0: storing 3 in location 1017 -run/0: instruction interpolate/8 -run/0: {name: "result-len", value: 3, type: 1, properties: ["result-len": "integer"]} <- add/2 {name: "result-len", value: 3, type: 1, properties: ["result-len": "integer"]}, {name: "a-len", value: 6, type: 1, properties: ["a-len": "integer"]} -run/0: ingredient 0 is result-len -mem/0: location 1014 is 5 -run/0: ingredient 1 is a-len -mem/0: location 1017 is 3 -run/0: product 0 is 8 -mem/0: storing 8 in location 1014 -run/0: instruction interpolate/9 -run/0: {name: "result-len", value: 3, type: 1, properties: ["result-len": "integer"]} <- subtract/3 {name: "result-len", value: 3, type: 1, properties: ["result-len": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is result-len -mem/0: location 1014 is 8 -run/0: ingredient 1 is 1 -run/0: product 0 is 7 -mem/0: storing 7 in location 1014 -run/0: instruction interpolate/10 -run/0: loop/10 {name: "", value: -6, type: , properties: ["": ]} -run/0: ingredient 0 is -6 -run/0: jumping to instruction 5 -run/0: instruction interpolate/5 -run/0: {name: "a", value: 4, type: 2-5-4, properties: ["a": "address":"array":"character"]}, {name: "arg-received?", value: 5, type: 3, properties: ["arg-received?": "boolean"]} <- next-ingredient/30 -mem/0: storing 0 in location 1016 -run/0: instruction interpolate/6 -run/0: break-unless/12 {name: "arg-received?", value: 5, type: 3, properties: ["arg-received?": "boolean"]}, {name: "", value: 4, type: , properties: ["": ]} -mem/0: location 1016 is 0 -run/0: ingredient 0 is 0 -run/0: ingredient 1 is -run/0: jumping to instruction 11 -run/0: instruction interpolate/12 -run/0: rewind-ingredients/31 -run/0: instruction interpolate/13 -run/0: {name: "_", value: 0, type: 0, properties: ["_": "dummy"]} <- next-ingredient/30 -run/0: product 0 is 1000 -run/0: instruction interpolate/14 -run/0: {name: "result", value: 7, type: 2-5-4, properties: ["result": "address":"array":"character"]} <- new/44 {name: "character", value: 4, type: 0, properties: ["character": "type"]}, {name: "result-len", value: 3, type: 1, properties: ["result-len": "integer"]} -mem/0: location 1014 is 7 -mem/0: array size is 7 -mem/0: new alloc: 1071 -mem/0: storing 1071 in location 1018 -run/0: instruction interpolate/15 -run/0: {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} <- copy/1 {name: "0", value: 0, type: 0, properties: ["0": "literal"]} -run/0: ingredient 0 is 0 -mem/0: storing 0 in location 1019 -run/0: instruction interpolate/16 -run/0: {name: "i", value: 9, type: 1, properties: ["i": "integer"]} <- copy/1 {name: "0", value: 0, type: 0, properties: ["0": "literal"]} -run/0: ingredient 0 is 0 -mem/0: storing 0 in location 1020 -run/0: instruction interpolate/18 -run/0: {name: "a", value: 4, type: 2-5-4, properties: ["a": "address":"array":"character"]}, {name: "arg-received?", value: 5, type: 3, properties: ["arg-received?": "boolean"]} <- next-ingredient/30 -run/0: product 0 is 1006 -mem/0: storing 1006 in location 1015 -mem/0: storing 1 in location 1016 -run/0: instruction interpolate/19 -run/0: break-unless/12 {name: "arg-received?", value: 5, type: 3, properties: ["arg-received?": "boolean"]}, {name: "", value: 25, type: , properties: ["": ]} -mem/0: location 1016 is 1 -run/0: ingredient 0 is 1 -run/0: jump-unless fell through -run/0: instruction interpolate/21 -run/0: {name: "tem-done?", value: 10, type: 3, properties: ["tem-done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 9, type: 1, properties: ["i": "integer"]}, {name: "tem-len", value: 2, type: 1, properties: ["tem-len": "integer"]} -run/0: ingredient 0 is i -mem/0: location 1020 is 0 -run/0: ingredient 1 is tem-len -mem/0: location 1013 is 5 -run/0: product 0 is 0 -mem/0: storing 0 in location 1021 -run/0: instruction interpolate/22 -run/0: break-if/11 {name: "tem-done?", value: 10, type: 3, properties: ["tem-done?": "boolean"]}, {name: "2", value: 2, type: 0, properties: ["2": "blocks"]} -mem/0: location 1021 is 0 -run/0: ingredient 0 is 0 -run/0: jump-if fell through -run/0: instruction interpolate/23 -run/0: {name: "in", value: 11, type: 4, properties: ["in": "character"]} <- index/26 {name: "template", value: 1, type: 2-5-4, properties: ["template": "address":"array":"character", "deref": ]}, {name: "i", value: 9, type: 1, properties: ["i": "integer"]} -run/0: ingredient 0 is {name: "template", value: 1, type: 2-5-4, properties: ["template": "address":"array":"character", "deref": ]} -mem/0: location 1012 is 1000 -run/0: ingredient 1 is {name: "i", value: 9, type: 1, properties: ["i": "integer"]} -mem/0: location 1020 is 0 -run/0: address to copy is 1001 -run/0: its type is 4 -mem/0: location 1001 is 97 -run/0: product 0 is 97 -mem/0: storing 97 in location 1022 -run/0: instruction interpolate/24 -run/0: {name: "underscore?", value: 12, type: 3, properties: ["underscore?": "boolean"]} <- equal/13 {name: "in", value: 11, type: 4, properties: ["in": "character"]}, {name: "95", value: 95, type: 0, properties: ["95": "literal"]} -run/0: ingredient 0 is in -mem/0: location 1022 is 97 -run/0: ingredient 1 is 95 -run/0: product 0 is 0 -mem/0: storing 0 in location 1023 -run/0: instruction interpolate/25 -run/0: break-if/11 {name: "underscore?", value: 12, type: 3, properties: ["underscore?": "boolean"]}, {name: "", value: 5, type: , properties: ["": ]} -mem/0: location 1023 is 0 -run/0: ingredient 0 is 0 -run/0: jump-if fell through -run/0: instruction interpolate/26 -run/0: {name: "out", value: 13, type: 2-4, properties: ["out": "address":"character"]} <- index-address/27 {name: "result", value: 7, type: 2-5-4, properties: ["result": "address":"array":"character", "deref": ]}, {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} -run/0: ingredient 0 is result -mem/0: location 1018 is 1071 -run/0: ingredient 1 is {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} -mem/0: location 1019 is 0 -run/0: address to copy is 1072 -run/0: product 0 is 1072 -mem/0: storing 1072 in location 1024 -run/0: instruction interpolate/27 -run/0: {name: "out", value: 13, type: 2-4, properties: ["out": "address":"character", "deref": ]} <- copy/1 {name: "in", value: 11, type: 4, properties: ["in": "character"]} -run/0: ingredient 0 is in -mem/0: location 1022 is 97 -mem/0: location 1024 is 1072 -mem/0: storing 97 in location 1072 -run/0: instruction interpolate/28 -run/0: {name: "i", value: 9, type: 1, properties: ["i": "integer"]} <- add/2 {name: "i", value: 9, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is i -mem/0: location 1020 is 0 -run/0: ingredient 1 is 1 -run/0: product 0 is 1 -mem/0: storing 1 in location 1020 -run/0: instruction interpolate/29 -run/0: {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} <- add/2 {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is result-idx -mem/0: location 1019 is 0 -run/0: ingredient 1 is 1 -run/0: product 0 is 1 -mem/0: storing 1 in location 1019 -run/0: instruction interpolate/30 -run/0: loop/10 {name: "", value: -10, type: , properties: ["": ]} -run/0: ingredient 0 is -10 -run/0: jumping to instruction 21 -run/0: instruction interpolate/21 -run/0: {name: "tem-done?", value: 10, type: 3, properties: ["tem-done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 9, type: 1, properties: ["i": "integer"]}, {name: "tem-len", value: 2, type: 1, properties: ["tem-len": "integer"]} -run/0: ingredient 0 is i -mem/0: location 1020 is 1 -run/0: ingredient 1 is tem-len -mem/0: location 1013 is 5 -run/0: product 0 is 0 -mem/0: storing 0 in location 1021 -run/0: instruction interpolate/22 -run/0: break-if/11 {name: "tem-done?", value: 10, type: 3, properties: ["tem-done?": "boolean"]}, {name: "2", value: 2, type: 0, properties: ["2": "blocks"]} -mem/0: location 1021 is 0 -run/0: ingredient 0 is 0 -run/0: jump-if fell through -run/0: instruction interpolate/23 -run/0: {name: "in", value: 11, type: 4, properties: ["in": "character"]} <- index/26 {name: "template", value: 1, type: 2-5-4, properties: ["template": "address":"array":"character", "deref": ]}, {name: "i", value: 9, type: 1, properties: ["i": "integer"]} -run/0: ingredient 0 is {name: "template", value: 1, type: 2-5-4, properties: ["template": "address":"array":"character", "deref": ]} -mem/0: location 1012 is 1000 -run/0: ingredient 1 is {name: "i", value: 9, type: 1, properties: ["i": "integer"]} -mem/0: location 1020 is 1 -run/0: address to copy is 1002 -run/0: its type is 4 -mem/0: location 1002 is 98 -run/0: product 0 is 98 -mem/0: storing 98 in location 1022 -run/0: instruction interpolate/24 -run/0: {name: "underscore?", value: 12, type: 3, properties: ["underscore?": "boolean"]} <- equal/13 {name: "in", value: 11, type: 4, properties: ["in": "character"]}, {name: "95", value: 95, type: 0, properties: ["95": "literal"]} -run/0: ingredient 0 is in -mem/0: location 1022 is 98 -run/0: ingredient 1 is 95 -run/0: product 0 is 0 -mem/0: storing 0 in location 1023 -run/0: instruction interpolate/25 -run/0: break-if/11 {name: "underscore?", value: 12, type: 3, properties: ["underscore?": "boolean"]}, {name: "", value: 5, type: , properties: ["": ]} -mem/0: location 1023 is 0 -run/0: ingredient 0 is 0 -run/0: jump-if fell through -run/0: instruction interpolate/26 -run/0: {name: "out", value: 13, type: 2-4, properties: ["out": "address":"character"]} <- index-address/27 {name: "result", value: 7, type: 2-5-4, properties: ["result": "address":"array":"character", "deref": ]}, {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} -run/0: ingredient 0 is result -mem/0: location 1018 is 1071 -run/0: ingredient 1 is {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} -mem/0: location 1019 is 1 -run/0: address to copy is 1073 -run/0: product 0 is 1073 -mem/0: storing 1073 in location 1024 -run/0: instruction interpolate/27 -run/0: {name: "out", value: 13, type: 2-4, properties: ["out": "address":"character", "deref": ]} <- copy/1 {name: "in", value: 11, type: 4, properties: ["in": "character"]} -run/0: ingredient 0 is in -mem/0: location 1022 is 98 -mem/0: location 1024 is 1073 -mem/0: storing 98 in location 1073 -run/0: instruction interpolate/28 -run/0: {name: "i", value: 9, type: 1, properties: ["i": "integer"]} <- add/2 {name: "i", value: 9, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is i -mem/0: location 1020 is 1 -run/0: ingredient 1 is 1 -run/0: product 0 is 2 -mem/0: storing 2 in location 1020 -run/0: instruction interpolate/29 -run/0: {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} <- add/2 {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is result-idx -mem/0: location 1019 is 1 -run/0: ingredient 1 is 1 -run/0: product 0 is 2 -mem/0: storing 2 in location 1019 -run/0: instruction interpolate/30 -run/0: loop/10 {name: "", value: -10, type: , properties: ["": ]} -run/0: ingredient 0 is -10 -run/0: jumping to instruction 21 -run/0: instruction interpolate/21 -run/0: {name: "tem-done?", value: 10, type: 3, properties: ["tem-done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 9, type: 1, properties: ["i": "integer"]}, {name: "tem-len", value: 2, type: 1, properties: ["tem-len": "integer"]} -run/0: ingredient 0 is i -mem/0: location 1020 is 2 -run/0: ingredient 1 is tem-len -mem/0: location 1013 is 5 -run/0: product 0 is 0 -mem/0: storing 0 in location 1021 -run/0: instruction interpolate/22 -run/0: break-if/11 {name: "tem-done?", value: 10, type: 3, properties: ["tem-done?": "boolean"]}, {name: "2", value: 2, type: 0, properties: ["2": "blocks"]} -mem/0: location 1021 is 0 -run/0: ingredient 0 is 0 -run/0: jump-if fell through -run/0: instruction interpolate/23 -run/0: {name: "in", value: 11, type: 4, properties: ["in": "character"]} <- index/26 {name: "template", value: 1, type: 2-5-4, properties: ["template": "address":"array":"character", "deref": ]}, {name: "i", value: 9, type: 1, properties: ["i": "integer"]} -run/0: ingredient 0 is {name: "template", value: 1, type: 2-5-4, properties: ["template": "address":"array":"character", "deref": ]} -mem/0: location 1012 is 1000 -run/0: ingredient 1 is {name: "i", value: 9, type: 1, properties: ["i": "integer"]} -mem/0: location 1020 is 2 -run/0: address to copy is 1003 -run/0: its type is 4 -mem/0: location 1003 is 99 -run/0: product 0 is 99 -mem/0: storing 99 in location 1022 -run/0: instruction interpolate/24 -run/0: {name: "underscore?", value: 12, type: 3, properties: ["underscore?": "boolean"]} <- equal/13 {name: "in", value: 11, type: 4, properties: ["in": "character"]}, {name: "95", value: 95, type: 0, properties: ["95": "literal"]} -run/0: ingredient 0 is in -mem/0: location 1022 is 99 -run/0: ingredient 1 is 95 -run/0: product 0 is 0 -mem/0: storing 0 in location 1023 -run/0: instruction interpolate/25 -run/0: break-if/11 {name: "underscore?", value: 12, type: 3, properties: ["underscore?": "boolean"]}, {name: "", value: 5, type: , properties: ["": ]} -mem/0: location 1023 is 0 -run/0: ingredient 0 is 0 -run/0: jump-if fell through -run/0: instruction interpolate/26 -run/0: {name: "out", value: 13, type: 2-4, properties: ["out": "address":"character"]} <- index-address/27 {name: "result", value: 7, type: 2-5-4, properties: ["result": "address":"array":"character", "deref": ]}, {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} -run/0: ingredient 0 is result -mem/0: location 1018 is 1071 -run/0: ingredient 1 is {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} -mem/0: location 1019 is 2 -run/0: address to copy is 1074 -run/0: product 0 is 1074 -mem/0: storing 1074 in location 1024 -run/0: instruction interpolate/27 -run/0: {name: "out", value: 13, type: 2-4, properties: ["out": "address":"character", "deref": ]} <- copy/1 {name: "in", value: 11, type: 4, properties: ["in": "character"]} -run/0: ingredient 0 is in -mem/0: location 1022 is 99 -mem/0: location 1024 is 1074 -mem/0: storing 99 in location 1074 -run/0: instruction interpolate/28 -run/0: {name: "i", value: 9, type: 1, properties: ["i": "integer"]} <- add/2 {name: "i", value: 9, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is i -mem/0: location 1020 is 2 -run/0: ingredient 1 is 1 -run/0: product 0 is 3 -mem/0: storing 3 in location 1020 -run/0: instruction interpolate/29 -run/0: {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} <- add/2 {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is result-idx -mem/0: location 1019 is 2 -run/0: ingredient 1 is 1 -run/0: product 0 is 3 -mem/0: storing 3 in location 1019 -run/0: instruction interpolate/30 -run/0: loop/10 {name: "", value: -10, type: , properties: ["": ]} -run/0: ingredient 0 is -10 -run/0: jumping to instruction 21 -run/0: instruction interpolate/21 -run/0: {name: "tem-done?", value: 10, type: 3, properties: ["tem-done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 9, type: 1, properties: ["i": "integer"]}, {name: "tem-len", value: 2, type: 1, properties: ["tem-len": "integer"]} -run/0: ingredient 0 is i -mem/0: location 1020 is 3 -run/0: ingredient 1 is tem-len -mem/0: location 1013 is 5 -run/0: product 0 is 0 -mem/0: storing 0 in location 1021 -run/0: instruction interpolate/22 -run/0: break-if/11 {name: "tem-done?", value: 10, type: 3, properties: ["tem-done?": "boolean"]}, {name: "2", value: 2, type: 0, properties: ["2": "blocks"]} -mem/0: location 1021 is 0 -run/0: ingredient 0 is 0 -run/0: jump-if fell through -run/0: instruction interpolate/23 -run/0: {name: "in", value: 11, type: 4, properties: ["in": "character"]} <- index/26 {name: "template", value: 1, type: 2-5-4, properties: ["template": "address":"array":"character", "deref": ]}, {name: "i", value: 9, type: 1, properties: ["i": "integer"]} -run/0: ingredient 0 is {name: "template", value: 1, type: 2-5-4, properties: ["template": "address":"array":"character", "deref": ]} -mem/0: location 1012 is 1000 -run/0: ingredient 1 is {name: "i", value: 9, type: 1, properties: ["i": "integer"]} -mem/0: location 1020 is 3 -run/0: address to copy is 1004 -run/0: its type is 4 -mem/0: location 1004 is 32 -run/0: product 0 is 32 -mem/0: storing 32 in location 1022 -run/0: instruction interpolate/24 -run/0: {name: "underscore?", value: 12, type: 3, properties: ["underscore?": "boolean"]} <- equal/13 {name: "in", value: 11, type: 4, properties: ["in": "character"]}, {name: "95", value: 95, type: 0, properties: ["95": "literal"]} -run/0: ingredient 0 is in -mem/0: location 1022 is 32 -run/0: ingredient 1 is 95 -run/0: product 0 is 0 -mem/0: storing 0 in location 1023 -run/0: instruction interpolate/25 -run/0: break-if/11 {name: "underscore?", value: 12, type: 3, properties: ["underscore?": "boolean"]}, {name: "", value: 5, type: , properties: ["": ]} -mem/0: location 1023 is 0 -run/0: ingredient 0 is 0 -run/0: jump-if fell through -run/0: instruction interpolate/26 -run/0: {name: "out", value: 13, type: 2-4, properties: ["out": "address":"character"]} <- index-address/27 {name: "result", value: 7, type: 2-5-4, properties: ["result": "address":"array":"character", "deref": ]}, {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} -run/0: ingredient 0 is result -mem/0: location 1018 is 1071 -run/0: ingredient 1 is {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} -mem/0: location 1019 is 3 -run/0: address to copy is 1075 -run/0: product 0 is 1075 -mem/0: storing 1075 in location 1024 -run/0: instruction interpolate/27 -run/0: {name: "out", value: 13, type: 2-4, properties: ["out": "address":"character", "deref": ]} <- copy/1 {name: "in", value: 11, type: 4, properties: ["in": "character"]} -run/0: ingredient 0 is in -mem/0: location 1022 is 32 -mem/0: location 1024 is 1075 -mem/0: storing 32 in location 1075 -run/0: instruction interpolate/28 -run/0: {name: "i", value: 9, type: 1, properties: ["i": "integer"]} <- add/2 {name: "i", value: 9, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is i -mem/0: location 1020 is 3 -run/0: ingredient 1 is 1 -run/0: product 0 is 4 -mem/0: storing 4 in location 1020 -run/0: instruction interpolate/29 -run/0: {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} <- add/2 {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is result-idx -mem/0: location 1019 is 3 -run/0: ingredient 1 is 1 -run/0: product 0 is 4 -mem/0: storing 4 in location 1019 -run/0: instruction interpolate/30 -run/0: loop/10 {name: "", value: -10, type: , properties: ["": ]} -run/0: ingredient 0 is -10 -run/0: jumping to instruction 21 -run/0: instruction interpolate/21 -run/0: {name: "tem-done?", value: 10, type: 3, properties: ["tem-done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 9, type: 1, properties: ["i": "integer"]}, {name: "tem-len", value: 2, type: 1, properties: ["tem-len": "integer"]} -run/0: ingredient 0 is i -mem/0: location 1020 is 4 -run/0: ingredient 1 is tem-len -mem/0: location 1013 is 5 -run/0: product 0 is 0 -mem/0: storing 0 in location 1021 -run/0: instruction interpolate/22 -run/0: break-if/11 {name: "tem-done?", value: 10, type: 3, properties: ["tem-done?": "boolean"]}, {name: "2", value: 2, type: 0, properties: ["2": "blocks"]} -mem/0: location 1021 is 0 -run/0: ingredient 0 is 0 -run/0: jump-if fell through -run/0: instruction interpolate/23 -run/0: {name: "in", value: 11, type: 4, properties: ["in": "character"]} <- index/26 {name: "template", value: 1, type: 2-5-4, properties: ["template": "address":"array":"character", "deref": ]}, {name: "i", value: 9, type: 1, properties: ["i": "integer"]} -run/0: ingredient 0 is {name: "template", value: 1, type: 2-5-4, properties: ["template": "address":"array":"character", "deref": ]} -mem/0: location 1012 is 1000 -run/0: ingredient 1 is {name: "i", value: 9, type: 1, properties: ["i": "integer"]} -mem/0: location 1020 is 4 -run/0: address to copy is 1005 -run/0: its type is 4 -mem/0: location 1005 is 95 -run/0: product 0 is 95 -mem/0: storing 95 in location 1022 -run/0: instruction interpolate/24 -run/0: {name: "underscore?", value: 12, type: 3, properties: ["underscore?": "boolean"]} <- equal/13 {name: "in", value: 11, type: 4, properties: ["in": "character"]}, {name: "95", value: 95, type: 0, properties: ["95": "literal"]} -run/0: ingredient 0 is in -mem/0: location 1022 is 95 -run/0: ingredient 1 is 95 -run/0: product 0 is 1 -mem/0: storing 1 in location 1023 -run/0: instruction interpolate/25 -run/0: break-if/11 {name: "underscore?", value: 12, type: 3, properties: ["underscore?": "boolean"]}, {name: "", value: 5, type: , properties: ["": ]} -mem/0: location 1023 is 1 -run/0: ingredient 0 is 1 -run/0: ingredient 1 is -run/0: jumping to instruction 31 -run/0: instruction interpolate/32 -run/0: {name: "j", value: 14, type: 1, properties: ["j": "integer"]} <- copy/1 {name: "0", value: 0, type: 0, properties: ["0": "literal"]} -run/0: ingredient 0 is 0 -mem/0: storing 0 in location 1025 -run/0: instruction interpolate/34 -run/0: {name: "arg-done?", value: 15, type: 3, properties: ["arg-done?": "boolean"]} <- greater-or-equal/16 {name: "j", value: 14, type: 1, properties: ["j": "integer"]}, {name: "a-len", value: 6, type: 1, properties: ["a-len": "integer"]} -run/0: ingredient 0 is j -mem/0: location 1025 is 0 -run/0: ingredient 1 is a-len -mem/0: location 1017 is 3 -run/0: product 0 is 0 -mem/0: storing 0 in location 1026 -run/0: instruction interpolate/35 -run/0: break-if/11 {name: "arg-done?", value: 15, type: 3, properties: ["arg-done?": "boolean"]}, {name: "", value: 6, type: , properties: ["": ]} -mem/0: location 1026 is 0 -run/0: ingredient 0 is 0 -run/0: jump-if fell through -run/0: instruction interpolate/36 -run/0: {name: "in", value: 11, type: 4, properties: ["in": "character"]} <- index/26 {name: "a", value: 4, type: 2-5-4, properties: ["a": "address":"array":"character", "deref": ]}, {name: "j", value: 14, type: 1, properties: ["j": "integer"]} -run/0: ingredient 0 is {name: "a", value: 4, type: 2-5-4, properties: ["a": "address":"array":"character", "deref": ]} -mem/0: location 1015 is 1006 -run/0: ingredient 1 is {name: "j", value: 14, type: 1, properties: ["j": "integer"]} -mem/0: location 1025 is 0 -run/0: address to copy is 1007 -run/0: its type is 4 -mem/0: location 1007 is 100 -run/0: product 0 is 100 -mem/0: storing 100 in location 1022 -run/0: instruction interpolate/37 -run/0: {name: "out", value: 13, type: 2-4, properties: ["out": "address":"character"]} <- index-address/27 {name: "result", value: 7, type: 2-5-4, properties: ["result": "address":"array":"character", "deref": ]}, {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} -run/0: ingredient 0 is result -mem/0: location 1018 is 1071 -run/0: ingredient 1 is {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} -mem/0: location 1019 is 4 -run/0: address to copy is 1076 -run/0: product 0 is 1076 -mem/0: storing 1076 in location 1024 -run/0: instruction interpolate/38 -run/0: {name: "out", value: 13, type: 2-4, properties: ["out": "address":"character", "deref": ]} <- copy/1 {name: "in", value: 11, type: 4, properties: ["in": "character"]} -run/0: ingredient 0 is in -mem/0: location 1022 is 100 -mem/0: location 1024 is 1076 -mem/0: storing 100 in location 1076 -run/0: instruction interpolate/39 -run/0: {name: "j", value: 14, type: 1, properties: ["j": "integer"]} <- add/2 {name: "j", value: 14, type: 1, properties: ["j": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is j -mem/0: location 1025 is 0 -run/0: ingredient 1 is 1 -run/0: product 0 is 1 -mem/0: storing 1 in location 1025 -run/0: instruction interpolate/40 -run/0: {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} <- add/2 {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is result-idx -mem/0: location 1019 is 4 -run/0: ingredient 1 is 1 -run/0: product 0 is 5 -mem/0: storing 5 in location 1019 -run/0: instruction interpolate/41 -run/0: loop/10 {name: "", value: -8, type: , properties: ["": ]} -run/0: ingredient 0 is -8 -run/0: jumping to instruction 34 -run/0: instruction interpolate/34 -run/0: {name: "arg-done?", value: 15, type: 3, properties: ["arg-done?": "boolean"]} <- greater-or-equal/16 {name: "j", value: 14, type: 1, properties: ["j": "integer"]}, {name: "a-len", value: 6, type: 1, properties: ["a-len": "integer"]} -run/0: ingredient 0 is j -mem/0: location 1025 is 1 -run/0: ingredient 1 is a-len -mem/0: location 1017 is 3 -run/0: product 0 is 0 -mem/0: storing 0 in location 1026 -run/0: instruction interpolate/35 -run/0: break-if/11 {name: "arg-done?", value: 15, type: 3, properties: ["arg-done?": "boolean"]}, {name: "", value: 6, type: , properties: ["": ]} -mem/0: location 1026 is 0 -run/0: ingredient 0 is 0 -run/0: jump-if fell through -run/0: instruction interpolate/36 -run/0: {name: "in", value: 11, type: 4, properties: ["in": "character"]} <- index/26 {name: "a", value: 4, type: 2-5-4, properties: ["a": "address":"array":"character", "deref": ]}, {name: "j", value: 14, type: 1, properties: ["j": "integer"]} -run/0: ingredient 0 is {name: "a", value: 4, type: 2-5-4, properties: ["a": "address":"array":"character", "deref": ]} -mem/0: location 1015 is 1006 -run/0: ingredient 1 is {name: "j", value: 14, type: 1, properties: ["j": "integer"]} -mem/0: location 1025 is 1 -run/0: address to copy is 1008 -run/0: its type is 4 -mem/0: location 1008 is 101 -run/0: product 0 is 101 -mem/0: storing 101 in location 1022 -run/0: instruction interpolate/37 -run/0: {name: "out", value: 13, type: 2-4, properties: ["out": "address":"character"]} <- index-address/27 {name: "result", value: 7, type: 2-5-4, properties: ["result": "address":"array":"character", "deref": ]}, {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} -run/0: ingredient 0 is result -mem/0: location 1018 is 1071 -run/0: ingredient 1 is {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} -mem/0: location 1019 is 5 -run/0: address to copy is 1077 -run/0: product 0 is 1077 -mem/0: storing 1077 in location 1024 -run/0: instruction interpolate/38 -run/0: {name: "out", value: 13, type: 2-4, properties: ["out": "address":"character", "deref": ]} <- copy/1 {name: "in", value: 11, type: 4, properties: ["in": "character"]} -run/0: ingredient 0 is in -mem/0: location 1022 is 101 -mem/0: location 1024 is 1077 -mem/0: storing 101 in location 1077 -run/0: instruction interpolate/39 -run/0: {name: "j", value: 14, type: 1, properties: ["j": "integer"]} <- add/2 {name: "j", value: 14, type: 1, properties: ["j": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is j -mem/0: location 1025 is 1 -run/0: ingredient 1 is 1 -run/0: product 0 is 2 -mem/0: storing 2 in location 1025 -run/0: instruction interpolate/40 -run/0: {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} <- add/2 {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is result-idx -mem/0: location 1019 is 5 -run/0: ingredient 1 is 1 -run/0: product 0 is 6 -mem/0: storing 6 in location 1019 -run/0: instruction interpolate/41 -run/0: loop/10 {name: "", value: -8, type: , properties: ["": ]} -run/0: ingredient 0 is -8 -run/0: jumping to instruction 34 -run/0: instruction interpolate/34 -run/0: {name: "arg-done?", value: 15, type: 3, properties: ["arg-done?": "boolean"]} <- greater-or-equal/16 {name: "j", value: 14, type: 1, properties: ["j": "integer"]}, {name: "a-len", value: 6, type: 1, properties: ["a-len": "integer"]} -run/0: ingredient 0 is j -mem/0: location 1025 is 2 -run/0: ingredient 1 is a-len -mem/0: location 1017 is 3 -run/0: product 0 is 0 -mem/0: storing 0 in location 1026 -run/0: instruction interpolate/35 -run/0: break-if/11 {name: "arg-done?", value: 15, type: 3, properties: ["arg-done?": "boolean"]}, {name: "", value: 6, type: , properties: ["": ]} -mem/0: location 1026 is 0 -run/0: ingredient 0 is 0 -run/0: jump-if fell through -run/0: instruction interpolate/36 -run/0: {name: "in", value: 11, type: 4, properties: ["in": "character"]} <- index/26 {name: "a", value: 4, type: 2-5-4, properties: ["a": "address":"array":"character", "deref": ]}, {name: "j", value: 14, type: 1, properties: ["j": "integer"]} -run/0: ingredient 0 is {name: "a", value: 4, type: 2-5-4, properties: ["a": "address":"array":"character", "deref": ]} -mem/0: location 1015 is 1006 -run/0: ingredient 1 is {name: "j", value: 14, type: 1, properties: ["j": "integer"]} -mem/0: location 1025 is 2 -run/0: address to copy is 1009 -run/0: its type is 4 -mem/0: location 1009 is 102 -run/0: product 0 is 102 -mem/0: storing 102 in location 1022 -run/0: instruction interpolate/37 -run/0: {name: "out", value: 13, type: 2-4, properties: ["out": "address":"character"]} <- index-address/27 {name: "result", value: 7, type: 2-5-4, properties: ["result": "address":"array":"character", "deref": ]}, {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} -run/0: ingredient 0 is result -mem/0: location 1018 is 1071 -run/0: ingredient 1 is {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} -mem/0: location 1019 is 6 -run/0: address to copy is 1078 -run/0: product 0 is 1078 -mem/0: storing 1078 in location 1024 -run/0: instruction interpolate/38 -run/0: {name: "out", value: 13, type: 2-4, properties: ["out": "address":"character", "deref": ]} <- copy/1 {name: "in", value: 11, type: 4, properties: ["in": "character"]} -run/0: ingredient 0 is in -mem/0: location 1022 is 102 -mem/0: location 1024 is 1078 -mem/0: storing 102 in location 1078 -run/0: instruction interpolate/39 -run/0: {name: "j", value: 14, type: 1, properties: ["j": "integer"]} <- add/2 {name: "j", value: 14, type: 1, properties: ["j": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is j -mem/0: location 1025 is 2 -run/0: ingredient 1 is 1 -run/0: product 0 is 3 -mem/0: storing 3 in location 1025 -run/0: instruction interpolate/40 -run/0: {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]} <- add/2 {name: "result-idx", value: 8, type: 1, properties: ["result-idx": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is result-idx -mem/0: location 1019 is 6 -run/0: ingredient 1 is 1 -run/0: product 0 is 7 -mem/0: storing 7 in location 1019 -run/0: instruction interpolate/41 -run/0: loop/10 {name: "", value: -8, type: , properties: ["": ]} -run/0: ingredient 0 is -8 -run/0: jumping to instruction 34 -run/0: instruction interpolate/34 -run/0: {name: "arg-done?", value: 15, type: 3, properties: ["arg-done?": "boolean"]} <- greater-or-equal/16 {name: "j", value: 14, type: 1, properties: ["j": "integer"]}, {name: "a-len", value: 6, type: 1, properties: ["a-len": "integer"]} -run/0: ingredient 0 is j -mem/0: location 1025 is 3 -run/0: ingredient 1 is a-len -mem/0: location 1017 is 3 -run/0: product 0 is 1 -mem/0: storing 1 in location 1026 -run/0: instruction interpolate/35 -run/0: break-if/11 {name: "arg-done?", value: 15, type: 3, properties: ["arg-done?": "boolean"]}, {name: "", value: 6, type: , properties: ["": ]} -mem/0: location 1026 is 1 -run/0: ingredient 0 is 1 -run/0: ingredient 1 is -run/0: jumping to instruction 42 -run/0: instruction interpolate/43 -run/0: {name: "i", value: 9, type: 1, properties: ["i": "integer"]} <- add/2 {name: "i", value: 9, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is i -mem/0: location 1020 is 4 -run/0: ingredient 1 is 1 -run/0: product 0 is 5 -mem/0: storing 5 in location 1020 -run/0: instruction interpolate/44 -run/0: loop/10 {name: "", value: -27, type: , properties: ["": ]} -run/0: ingredient 0 is -27 -run/0: jumping to instruction 18 -run/0: instruction interpolate/18 -run/0: {name: "a", value: 4, type: 2-5-4, properties: ["a": "address":"array":"character"]}, {name: "arg-received?", value: 5, type: 3, properties: ["arg-received?": "boolean"]} <- next-ingredient/30 -mem/0: storing 0 in location 1016 -run/0: instruction interpolate/19 -run/0: break-unless/12 {name: "arg-received?", value: 5, type: 3, properties: ["arg-received?": "boolean"]}, {name: "", value: 25, type: , properties: ["": ]} -mem/0: location 1016 is 0 -run/0: ingredient 0 is 0 -run/0: ingredient 1 is -run/0: jumping to instruction 45 -run/0: instruction interpolate/47 -run/0: {name: "tem-done?", value: 10, type: 3, properties: ["tem-done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 9, type: 1, properties: ["i": "integer"]}, {name: "tem-len", value: 2, type: 1, properties: ["tem-len": "integer"]} -run/0: ingredient 0 is i -mem/0: location 1020 is 5 -run/0: ingredient 1 is tem-len -mem/0: location 1013 is 5 -run/0: product 0 is 1 -mem/0: storing 1 in location 1021 -run/0: instruction interpolate/48 -run/0: break-if/11 {name: "tem-done?", value: 10, type: 3, properties: ["tem-done?": "boolean"]}, {name: "", value: 6, type: , properties: ["": ]} -mem/0: location 1021 is 1 -run/0: ingredient 0 is 1 -run/0: ingredient 1 is -run/0: jumping to instruction 55 -run/0: instruction interpolate/56 -run/0: reply/33 {name: "result", value: 7, type: 2-5-4, properties: ["result": "address":"array":"character"]} -mem/0: location 1018 is 1071 -run/0: result 0 is 1071 -mem/0: storing 1071 in location 3 -run/0: instruction run1001/3 -run/0: {name: "4", value: 4, type: 5-4, properties: ["4": "array":"character", "raw": ]} <- copy/1 {name: "3", value: 3, type: 2-5-4, properties: ["3": "address":"array":"character", "raw": , "deref": ]} -run/0: ingredient 0 is 3 -mem/0: location 3 is 1071 -mem/0: location 1071 is 7 -mem/0: location 1072 is 97 -mem/0: location 1073 is 98 -mem/0: location 1074 is 99 -mem/0: location 1075 is 32 -mem/0: location 1076 is 100 -mem/0: location 1077 is 101 -mem/0: location 1078 is 102 -mem/0: storing 7 in location 4 -mem/0: storing 97 in location 5 -mem/0: storing 98 in location 6 -mem/0: storing 99 in location 7 -mem/0: storing 32 in location 8 -mem/0: storing 100 in location 9 -mem/0: storing 101 in location 10 -mem/0: storing 102 in location 11 -run/0: instruction interpolate-works/1 -run/0: memory-should-contain/46 {name: " - 4:string <- [abc def] - ", value: 0, type: 0, properties: [" - 4:string <- [abc def] - ": "literal-string"]} -run/0: checking string length at 4 -run/0: checking location 5 -run/0: checking location 6 -run/0: checking location 7 -run/0: checking location 8 -run/0: checking location 9 -run/0: checking location 10 -run/0: checking location 11 diff --git a/cpp/.traces/jump_backward b/cpp/.traces/jump_backward deleted file mode 100644 index 4c652f4e..00000000 --- a/cpp/.traces/jump_backward +++ /dev/null @@ -1,24 +0,0 @@ -parse/0: instruction: jump -parse/0: ingredient: {name: "1", value: 0, type: 0, properties: ["1": "offset"]} -parse/0: instruction: jump -parse/0: ingredient: {name: "1", value: 0, type: 0, properties: ["1": "offset"]} -parse/0: instruction: jump -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 ... -after-brace/0: jump ... -new/0: routine allocated memory from 1000 to 101000 -schedule/0: main -run/0: instruction main/0 -run/0: jump/10 {name: "1", value: 1, type: 0, properties: ["1": "offset"]} -run/0: ingredient 0 is 1 -run/0: jumping to instruction 2 -run/0: instruction main/2 -run/0: jump/10 {name: "-2", value: -2, type: 0, properties: ["-2": "offset"]} -run/0: ingredient 0 is -2 -run/0: jumping to instruction 1 -run/0: instruction main/1 -run/0: jump/10 {name: "1", value: 1, type: 0, properties: ["1": "offset"]} -run/0: ingredient 0 is 1 -run/0: jumping to instruction 3 diff --git a/cpp/.traces/jump_can_skip_instructions b/cpp/.traces/jump_can_skip_instructions deleted file mode 100644 index ce915fa0..00000000 --- a/cpp/.traces/jump_can_skip_instructions +++ /dev/null @@ -1,14 +0,0 @@ -parse/0: instruction: jump -parse/0: ingredient: {name: "1", value: 0, type: 0, properties: ["1": "offset"]} -parse/0: instruction: copy -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 ... -new/0: routine allocated memory from 1000 to 101000 -schedule/0: main -run/0: instruction main/0 -run/0: jump/10 {name: "1", value: 1, type: 0, properties: ["1": "offset"]} -run/0: ingredient 0 is 1 -run/0: jumping to instruction 2 diff --git a/cpp/.traces/jump_if b/cpp/.traces/jump_if deleted file mode 100644 index cea3c4f8..00000000 --- a/cpp/.traces/jump_if +++ /dev/null @@ -1,16 +0,0 @@ -parse/0: instruction: jump-if -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: copy -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 ... -new/0: routine allocated memory from 1000 to 101000 -schedule/0: main -run/0: instruction main/0 -run/0: jump-if/11 {name: "999", value: 999, type: 0, properties: ["999": "literal"]}, {name: "1", value: 1, type: 0, properties: ["1": "offset"]} -run/0: ingredient 0 is 999 -run/0: ingredient 1 is 1 -run/0: jumping to instruction 2 diff --git a/cpp/.traces/jump_if_fallthrough b/cpp/.traces/jump_if_fallthrough deleted file mode 100644 index c5404292..00000000 --- a/cpp/.traces/jump_if_fallthrough +++ /dev/null @@ -1,19 +0,0 @@ -parse/0: instruction: jump-if -parse/0: ingredient: {name: "0", value: 0, type: 0, properties: ["0": "literal"]} -parse/0: ingredient: {name: "1", value: 0, type: 0, properties: ["1": "offset"]} -parse/0: instruction: copy -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 ... -new/0: routine allocated memory from 1000 to 101000 -schedule/0: main -run/0: instruction main/0 -run/0: jump-if/11 {name: "0", value: 0, type: 0, properties: ["0": "literal"]}, {name: "1", value: 1, type: 0, properties: ["1": "offset"]} -run/0: ingredient 0 is 0 -run/0: jump-if fell through -run/0: instruction main/1 -run/0: {name: "123", value: 123, type: 1, properties: ["123": "integer"]} <- copy/1 {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is 1 -mem/0: storing 1 in location 123 diff --git a/cpp/.traces/jump_unless b/cpp/.traces/jump_unless deleted file mode 100644 index fb015b69..00000000 --- a/cpp/.traces/jump_unless +++ /dev/null @@ -1,16 +0,0 @@ -parse/0: instruction: jump-unless -parse/0: ingredient: {name: "0", value: 0, type: 0, properties: ["0": "literal"]} -parse/0: ingredient: {name: "1", value: 0, type: 0, properties: ["1": "offset"]} -parse/0: instruction: copy -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 ... -new/0: routine allocated memory from 1000 to 101000 -schedule/0: main -run/0: instruction main/0 -run/0: jump-unless/12 {name: "0", value: 0, type: 0, properties: ["0": "literal"]}, {name: "1", value: 1, type: 0, properties: ["1": "offset"]} -run/0: ingredient 0 is 0 -run/0: ingredient 1 is 1 -run/0: jumping to instruction 2 diff --git a/cpp/.traces/jump_unless_fallthrough b/cpp/.traces/jump_unless_fallthrough deleted file mode 100644 index f9c4b840..00000000 --- a/cpp/.traces/jump_unless_fallthrough +++ /dev/null @@ -1,19 +0,0 @@ -parse/0: instruction: jump-unless -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: copy -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 ... -new/0: routine allocated memory from 1000 to 101000 -schedule/0: main -run/0: instruction main/0 -run/0: jump-unless/12 {name: "999", value: 999, type: 0, properties: ["999": "literal"]}, {name: "1", value: 1, type: 0, properties: ["1": "offset"]} -run/0: ingredient 0 is 999 -run/0: jump-unless fell through -run/0: instruction main/1 -run/0: {name: "123", value: 123, type: 1, properties: ["123": "integer"]} <- copy/1 {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is 1 -mem/0: storing 1 in location 123 diff --git a/cpp/.traces/keyboard_in_scenario b/cpp/.traces/keyboard_in_scenario deleted file mode 100644 index f71bfacc..00000000 --- a/cpp/.traces/keyboard_in_scenario +++ /dev/null @@ -1,465 +0,0 @@ -parse/0: instruction: assume-keyboard -parse/0: ingredient: {name: "abc", value: 0, type: 0, properties: ["abc": "literal-string"]} -parse/0: instruction: run -parse/0: ingredient: {name: " - 1:character, 2:boolean, keyboard:address <- read-key keyboard:address - 3:character, 4:boolean, keyboard:address <- read-key keyboard:address - 5:character, 6:boolean, keyboard:address <- read-key keyboard:address - 7:character, 8:boolean, keyboard:address <- read-key keyboard:address - ", value: 0, type: 0, properties: [" - 1:character, 2:boolean, keyboard:address <- read-key keyboard:address - 3:character, 4:boolean, keyboard:address <- read-key keyboard:address - 5:character, 6:boolean, keyboard:address <- read-key keyboard:address - 7:character, 8:boolean, keyboard:address <- read-key keyboard:address - ": "literal-string"]} -parse/0: instruction: memory-should-contain -parse/0: ingredient: {name: " - 1 <- 97 # 'a' - 2 <- 1 # first read-key call found a character - 3 <- 98 # 'b' - 4 <- 1 # second read-key call found a character - 5 <- 99 # 'c' - 6 <- 1 # third read-key call found a character - 7 <- 0 - 8 <- 0 # fourth read-key call didn't find a character - ", value: 0, type: 0, properties: [" - 1 <- 97 # 'a' - 2 <- 1 # first read-key call found a character - 3 <- 98 # 'b' - 4 <- 1 # second read-key call found a character - 5 <- 99 # 'c' - 6 <- 1 # third read-key call found a character - 7 <- 0 - 8 <- 0 # fourth read-key call didn't find a character - ": "literal-string"]} -new/0: abc -> 0 -after-brace/0: recipe keyboard-in-scenario -after-brace/0: assume-keyboard ... -after-brace/0: assume-keyboard ... -after-brace/0: run ... -after-brace/0: memory-should-contain ... -new/0: routine allocated memory from 1000 to 101000 -schedule/0: keyboard-in-scenario -run/0: instruction keyboard-in-scenario/0 -run/0: {name: "keyboard", value: 901, type: 2, properties: ["keyboard": "address"]} <- assume-keyboard/44 {name: "abc", value: 0, type: 0, properties: ["abc": "literal-string"]} -mem/0: storing 1000 in location 901 -run/0: instruction keyboard-in-scenario/1 -run/0: {name: "keyboard", value: 901, type: 2, properties: ["keyboard": "address"]} <- assume-keyboard/125 {name: "keyboard", value: 901, type: 2, properties: ["keyboard": "address"]} -mem/0: location 901 is 1000 -run/0: instruction init-fake-keyboard/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/44 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} -mem/0: array size is 30 -mem/0: new alloc: 1004 -run/0: instruction init-fake-keyboard/1 -run/0: {name: "result", value: 1, type: 2-12, properties: ["result": "address":"keyboard"]} <- new/44 {name: "keyboard", value: 12, type: 0, properties: ["keyboard": "type"]} -mem/0: new alloc: 1035 -mem/0: storing 1035 in location 1006 -run/0: instruction init-fake-keyboard/2 -run/0: {name: "buf", value: 2, type: 2-2-5-4, properties: ["buf": "address":"address":"array":"character"]} <- get-address/25 {name: "result", value: 1, type: 2-12, properties: ["result": "address":"keyboard", "deref": ]}, {name: "data", value: 1, type: 0, properties: ["data": "offset"]} -run/0: ingredient 0 is result -mem/0: location 1006 is 1035 -run/0: ingredient 1 is data -run/0: address to copy is 1036 -run/0: product 0 is 1036 -mem/0: storing 1036 in location 1007 -run/0: instruction init-fake-keyboard/3 -run/0: {name: "buf", value: 2, type: 2-2-5-4, properties: ["buf": "address":"address":"array":"character", "deref": ]} <- next-ingredient/30 -run/0: product 0 is 1000 -mem/0: location 1007 is 1036 -mem/0: storing 1000 in location 1036 -run/0: instruction init-fake-keyboard/4 -run/0: {name: "idx", value: 3, type: 2-1, properties: ["idx": "address":"integer"]} <- get-address/25 {name: "result", value: 1, type: 2-12, properties: ["result": "address":"keyboard", "deref": ]}, {name: "index", value: 0, type: 0, properties: ["index": "offset"]} -run/0: ingredient 0 is result -mem/0: location 1006 is 1035 -run/0: ingredient 1 is index -run/0: address to copy is 1035 -run/0: product 0 is 1035 -mem/0: storing 1035 in location 1008 -run/0: instruction init-fake-keyboard/5 -run/0: {name: "idx", value: 3, type: 2-1, properties: ["idx": "address":"integer", "deref": ]} <- copy/1 {name: "0", value: 0, type: 0, properties: ["0": "literal"]} -run/0: ingredient 0 is 0 -mem/0: location 1008 is 1035 -mem/0: storing 0 in location 1035 -run/0: instruction init-fake-keyboard/6 -run/0: reply/33 {name: "result", value: 1, type: 2-12, properties: ["result": "address":"keyboard"]} -mem/0: location 1006 is 1035 -run/0: result 0 is 1035 -mem/0: storing 1035 in location 901 -run/0: instruction keyboard-in-scenario/2 -run/0: run/45 {name: " - 1:character, 2:boolean, keyboard:address <- read-key keyboard:address - 3:character, 4:boolean, keyboard:address <- read-key keyboard:address - 5:character, 6:boolean, keyboard:address <- read-key keyboard:address - 7:character, 8:boolean, keyboard:address <- read-key keyboard:address - ", value: 0, type: 0, properties: [" - 1:character, 2:boolean, keyboard:address <- read-key keyboard:address - 3:character, 4:boolean, keyboard:address <- read-key keyboard:address - 5:character, 6:boolean, keyboard:address <- read-key keyboard:address - 7:character, 8:boolean, keyboard:address <- read-key keyboard:address - ": "literal-string"]} -parse/0: instruction: read-key -parse/0: ingredient: {name: "keyboard", value: 0, type: 2, properties: ["keyboard": "address"]} -parse/0: product: {name: "1", value: 0, type: 4, properties: ["1": "character"]} -parse/0: product: {name: "2", value: 0, type: 3, properties: ["2": "boolean"]} -parse/0: product: {name: "keyboard", value: 0, type: 2, properties: ["keyboard": "address"]} -parse/0: instruction: read-key -parse/0: ingredient: {name: "keyboard", value: 0, type: 2, properties: ["keyboard": "address"]} -parse/0: product: {name: "3", value: 0, type: 4, properties: ["3": "character"]} -parse/0: product: {name: "4", value: 0, type: 3, properties: ["4": "boolean"]} -parse/0: product: {name: "keyboard", value: 0, type: 2, properties: ["keyboard": "address"]} -parse/0: instruction: read-key -parse/0: ingredient: {name: "keyboard", value: 0, type: 2, properties: ["keyboard": "address"]} -parse/0: product: {name: "5", value: 0, type: 4, properties: ["5": "character"]} -parse/0: product: {name: "6", value: 0, type: 3, properties: ["6": "boolean"]} -parse/0: product: {name: "keyboard", value: 0, type: 2, properties: ["keyboard": "address"]} -parse/0: instruction: read-key -parse/0: ingredient: {name: "keyboard", value: 0, type: 2, properties: ["keyboard": "address"]} -parse/0: product: {name: "7", value: 0, type: 4, properties: ["7": "character"]} -parse/0: product: {name: "8", value: 0, type: 3, properties: ["8": "boolean"]} -parse/0: product: {name: "keyboard", value: 0, type: 2, properties: ["keyboard": "address"]} -after-brace/0: recipe run1002 -after-brace/0: read-key ... -after-brace/0: read-key ... -after-brace/0: read-key ... -after-brace/0: read-key ... -run/0: instruction run1002/0 -run/0: {name: "1", value: 1, type: 4, properties: ["1": "character"]}, {name: "2", value: 2, type: 3, properties: ["2": "boolean"]}, {name: "keyboard", value: 901, type: 2, properties: ["keyboard": "address"]} <- read-key/126 {name: "keyboard", value: 901, type: 2, properties: ["keyboard": "address"]} -mem/0: location 901 is 1035 -run/0: instruction read-key/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/44 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} -mem/0: array size is 30 -mem/0: new alloc: 1037 -run/0: instruction read-key/1 -run/0: {name: "x", value: 1, type: 2-12, properties: ["x": "address":"keyboard"]} <- next-ingredient/30 -run/0: product 0 is 1035 -mem/0: storing 1035 in location 1039 -run/0: instruction read-key/3 -run/0: break-unless/12 {name: "x", value: 1, type: 2-12, properties: ["x": "address":"keyboard"]}, {name: "", value: 11, type: , properties: ["": ]} -mem/0: location 1039 is 1035 -run/0: ingredient 0 is 1035 -run/0: jump-unless fell through -run/0: instruction read-key/4 -run/0: {name: "idx", value: 2, type: 2-1, properties: ["idx": "address":"integer"]} <- get-address/25 {name: "x", value: 1, type: 2-12, properties: ["x": "address":"keyboard", "deref": ]}, {name: "index", value: 0, type: 0, properties: ["index": "offset"]} -run/0: ingredient 0 is x -mem/0: location 1039 is 1035 -run/0: ingredient 1 is index -run/0: address to copy is 1035 -run/0: product 0 is 1035 -mem/0: storing 1035 in location 1040 -run/0: instruction read-key/5 -run/0: {name: "buf", value: 3, type: 2-5-4, properties: ["buf": "address":"array":"character"]} <- get/24 {name: "x", value: 1, type: 2-12, properties: ["x": "address":"keyboard", "deref": ]}, {name: "data", value: 1, type: 0, properties: ["data": "offset"]} -run/0: ingredient 0 is x -mem/0: location 1039 is 1035 -run/0: ingredient 1 is data -run/0: address to copy is 1036 -run/0: its type is 2 -mem/0: location 1036 is 1000 -run/0: product 0 is 1000 -mem/0: storing 1000 in location 1041 -run/0: instruction read-key/6 -run/0: {name: "max", value: 4, type: 1, properties: ["max": "integer"]} <- length/28 {name: "buf", value: 3, type: 2-5-4, properties: ["buf": "address":"array":"character", "deref": ]} -mem/0: location 1041 is 1000 -mem/0: storing 3 in location 1042 -run/0: instruction read-key/8 -run/0: {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]} <- greater-or-equal/16 {name: "idx", value: 2, type: 2-1, properties: ["idx": "address":"integer", "deref": ]}, {name: "max", value: 4, type: 1, properties: ["max": "integer"]} -run/0: ingredient 0 is idx -mem/0: location 1040 is 1035 -mem/0: location 1035 is 0 -run/0: ingredient 1 is max -mem/0: location 1042 is 3 -run/0: product 0 is 0 -mem/0: storing 0 in location 1043 -run/0: instruction read-key/9 -run/0: break-unless/12 {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} -mem/0: location 1043 is 0 -run/0: ingredient 0 is 0 -run/0: ingredient 1 is -run/0: jumping to instruction 11 -run/0: instruction read-key/12 -run/0: {name: "c", value: 6, type: 4, properties: ["c": "character"]} <- index/26 {name: "buf", value: 3, type: 2-5-4, properties: ["buf": "address":"array":"character", "deref": ]}, {name: "idx", value: 2, type: 2-1, properties: ["idx": "address":"integer", "deref": ]} -run/0: ingredient 0 is {name: "buf", value: 3, type: 2-5-4, properties: ["buf": "address":"array":"character", "deref": ]} -mem/0: location 1041 is 1000 -run/0: ingredient 1 is {name: "idx", value: 2, type: 2-1, properties: ["idx": "address":"integer", "deref": ]} -mem/0: location 1040 is 1035 -mem/0: location 1035 is 0 -run/0: address to copy is 1001 -run/0: its type is 4 -mem/0: location 1001 is 97 -run/0: product 0 is 97 -mem/0: storing 97 in location 1044 -run/0: instruction read-key/13 -run/0: {name: "idx", value: 2, type: 2-1, properties: ["idx": "address":"integer", "deref": ]} <- add/2 {name: "idx", value: 2, type: 2-1, properties: ["idx": "address":"integer", "deref": ]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is idx -mem/0: location 1040 is 1035 -mem/0: location 1035 is 0 -run/0: ingredient 1 is 1 -run/0: product 0 is 1 -mem/0: location 1040 is 1035 -mem/0: storing 1 in location 1035 -run/0: instruction read-key/14 -run/0: reply/33 {name: "c", value: 6, type: 4, properties: ["c": "character"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal", "found": ]}, {name: "x", value: 1, type: 2-12, properties: ["x": "address":"keyboard", "same-as-ingredient": "0"]} -mem/0: location 1044 is 97 -mem/0: location 1039 is 1035 -run/0: result 0 is 97 -mem/0: storing 97 in location 1 -run/0: result 1 is 1 -mem/0: storing 1 in location 2 -run/0: result 2 is 1035 -mem/0: storing 1035 in location 901 -run/0: instruction run1002/1 -run/0: {name: "3", value: 3, type: 4, properties: ["3": "character"]}, {name: "4", value: 4, type: 3, properties: ["4": "boolean"]}, {name: "keyboard", value: 901, type: 2, properties: ["keyboard": "address"]} <- read-key/126 {name: "keyboard", value: 901, type: 2, properties: ["keyboard": "address"]} -mem/0: location 901 is 1035 -run/0: instruction read-key/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/44 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} -mem/0: array size is 30 -mem/0: new alloc: 1068 -run/0: instruction read-key/1 -run/0: {name: "x", value: 1, type: 2-12, properties: ["x": "address":"keyboard"]} <- next-ingredient/30 -run/0: product 0 is 1035 -mem/0: storing 1035 in location 1070 -run/0: instruction read-key/3 -run/0: break-unless/12 {name: "x", value: 1, type: 2-12, properties: ["x": "address":"keyboard"]}, {name: "", value: 11, type: , properties: ["": ]} -mem/0: location 1070 is 1035 -run/0: ingredient 0 is 1035 -run/0: jump-unless fell through -run/0: instruction read-key/4 -run/0: {name: "idx", value: 2, type: 2-1, properties: ["idx": "address":"integer"]} <- get-address/25 {name: "x", value: 1, type: 2-12, properties: ["x": "address":"keyboard", "deref": ]}, {name: "index", value: 0, type: 0, properties: ["index": "offset"]} -run/0: ingredient 0 is x -mem/0: location 1070 is 1035 -run/0: ingredient 1 is index -run/0: address to copy is 1035 -run/0: product 0 is 1035 -mem/0: storing 1035 in location 1071 -run/0: instruction read-key/5 -run/0: {name: "buf", value: 3, type: 2-5-4, properties: ["buf": "address":"array":"character"]} <- get/24 {name: "x", value: 1, type: 2-12, properties: ["x": "address":"keyboard", "deref": ]}, {name: "data", value: 1, type: 0, properties: ["data": "offset"]} -run/0: ingredient 0 is x -mem/0: location 1070 is 1035 -run/0: ingredient 1 is data -run/0: address to copy is 1036 -run/0: its type is 2 -mem/0: location 1036 is 1000 -run/0: product 0 is 1000 -mem/0: storing 1000 in location 1072 -run/0: instruction read-key/6 -run/0: {name: "max", value: 4, type: 1, properties: ["max": "integer"]} <- length/28 {name: "buf", value: 3, type: 2-5-4, properties: ["buf": "address":"array":"character", "deref": ]} -mem/0: location 1072 is 1000 -mem/0: storing 3 in location 1073 -run/0: instruction read-key/8 -run/0: {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]} <- greater-or-equal/16 {name: "idx", value: 2, type: 2-1, properties: ["idx": "address":"integer", "deref": ]}, {name: "max", value: 4, type: 1, properties: ["max": "integer"]} -run/0: ingredient 0 is idx -mem/0: location 1071 is 1035 -mem/0: location 1035 is 1 -run/0: ingredient 1 is max -mem/0: location 1073 is 3 -run/0: product 0 is 0 -mem/0: storing 0 in location 1074 -run/0: instruction read-key/9 -run/0: break-unless/12 {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} -mem/0: location 1074 is 0 -run/0: ingredient 0 is 0 -run/0: ingredient 1 is -run/0: jumping to instruction 11 -run/0: instruction read-key/12 -run/0: {name: "c", value: 6, type: 4, properties: ["c": "character"]} <- index/26 {name: "buf", value: 3, type: 2-5-4, properties: ["buf": "address":"array":"character", "deref": ]}, {name: "idx", value: 2, type: 2-1, properties: ["idx": "address":"integer", "deref": ]} -run/0: ingredient 0 is {name: "buf", value: 3, type: 2-5-4, properties: ["buf": "address":"array":"character", "deref": ]} -mem/0: location 1072 is 1000 -run/0: ingredient 1 is {name: "idx", value: 2, type: 2-1, properties: ["idx": "address":"integer", "deref": ]} -mem/0: location 1071 is 1035 -mem/0: location 1035 is 1 -run/0: address to copy is 1002 -run/0: its type is 4 -mem/0: location 1002 is 98 -run/0: product 0 is 98 -mem/0: storing 98 in location 1075 -run/0: instruction read-key/13 -run/0: {name: "idx", value: 2, type: 2-1, properties: ["idx": "address":"integer", "deref": ]} <- add/2 {name: "idx", value: 2, type: 2-1, properties: ["idx": "address":"integer", "deref": ]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is idx -mem/0: location 1071 is 1035 -mem/0: location 1035 is 1 -run/0: ingredient 1 is 1 -run/0: product 0 is 2 -mem/0: location 1071 is 1035 -mem/0: storing 2 in location 1035 -run/0: instruction read-key/14 -run/0: reply/33 {name: "c", value: 6, type: 4, properties: ["c": "character"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal", "found": ]}, {name: "x", value: 1, type: 2-12, properties: ["x": "address":"keyboard", "same-as-ingredient": "0"]} -mem/0: location 1075 is 98 -mem/0: location 1070 is 1035 -run/0: result 0 is 98 -mem/0: storing 98 in location 3 -run/0: result 1 is 1 -mem/0: storing 1 in location 4 -run/0: result 2 is 1035 -mem/0: storing 1035 in location 901 -run/0: instruction run1002/2 -run/0: {name: "5", value: 5, type: 4, properties: ["5": "character"]}, {name: "6", value: 6, type: 3, properties: ["6": "boolean"]}, {name: "keyboard", value: 901, type: 2, properties: ["keyboard": "address"]} <- read-key/126 {name: "keyboard", value: 901, type: 2, properties: ["keyboard": "address"]} -mem/0: location 901 is 1035 -run/0: instruction read-key/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/44 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} -mem/0: array size is 30 -mem/0: new alloc: 1099 -run/0: instruction read-key/1 -run/0: {name: "x", value: 1, type: 2-12, properties: ["x": "address":"keyboard"]} <- next-ingredient/30 -run/0: product 0 is 1035 -mem/0: storing 1035 in location 1101 -run/0: instruction read-key/3 -run/0: break-unless/12 {name: "x", value: 1, type: 2-12, properties: ["x": "address":"keyboard"]}, {name: "", value: 11, type: , properties: ["": ]} -mem/0: location 1101 is 1035 -run/0: ingredient 0 is 1035 -run/0: jump-unless fell through -run/0: instruction read-key/4 -run/0: {name: "idx", value: 2, type: 2-1, properties: ["idx": "address":"integer"]} <- get-address/25 {name: "x", value: 1, type: 2-12, properties: ["x": "address":"keyboard", "deref": ]}, {name: "index", value: 0, type: 0, properties: ["index": "offset"]} -run/0: ingredient 0 is x -mem/0: location 1101 is 1035 -run/0: ingredient 1 is index -run/0: address to copy is 1035 -run/0: product 0 is 1035 -mem/0: storing 1035 in location 1102 -run/0: instruction read-key/5 -run/0: {name: "buf", value: 3, type: 2-5-4, properties: ["buf": "address":"array":"character"]} <- get/24 {name: "x", value: 1, type: 2-12, properties: ["x": "address":"keyboard", "deref": ]}, {name: "data", value: 1, type: 0, properties: ["data": "offset"]} -run/0: ingredient 0 is x -mem/0: location 1101 is 1035 -run/0: ingredient 1 is data -run/0: address to copy is 1036 -run/0: its type is 2 -mem/0: location 1036 is 1000 -run/0: product 0 is 1000 -mem/0: storing 1000 in location 1103 -run/0: instruction read-key/6 -run/0: {name: "max", value: 4, type: 1, properties: ["max": "integer"]} <- length/28 {name: "buf", value: 3, type: 2-5-4, properties: ["buf": "address":"array":"character", "deref": ]} -mem/0: location 1103 is 1000 -mem/0: storing 3 in location 1104 -run/0: instruction read-key/8 -run/0: {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]} <- greater-or-equal/16 {name: "idx", value: 2, type: 2-1, properties: ["idx": "address":"integer", "deref": ]}, {name: "max", value: 4, type: 1, properties: ["max": "integer"]} -run/0: ingredient 0 is idx -mem/0: location 1102 is 1035 -mem/0: location 1035 is 2 -run/0: ingredient 1 is max -mem/0: location 1104 is 3 -run/0: product 0 is 0 -mem/0: storing 0 in location 1105 -run/0: instruction read-key/9 -run/0: break-unless/12 {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} -mem/0: location 1105 is 0 -run/0: ingredient 0 is 0 -run/0: ingredient 1 is -run/0: jumping to instruction 11 -run/0: instruction read-key/12 -run/0: {name: "c", value: 6, type: 4, properties: ["c": "character"]} <- index/26 {name: "buf", value: 3, type: 2-5-4, properties: ["buf": "address":"array":"character", "deref": ]}, {name: "idx", value: 2, type: 2-1, properties: ["idx": "address":"integer", "deref": ]} -run/0: ingredient 0 is {name: "buf", value: 3, type: 2-5-4, properties: ["buf": "address":"array":"character", "deref": ]} -mem/0: location 1103 is 1000 -run/0: ingredient 1 is {name: "idx", value: 2, type: 2-1, properties: ["idx": "address":"integer", "deref": ]} -mem/0: location 1102 is 1035 -mem/0: location 1035 is 2 -run/0: address to copy is 1003 -run/0: its type is 4 -mem/0: location 1003 is 99 -run/0: product 0 is 99 -mem/0: storing 99 in location 1106 -run/0: instruction read-key/13 -run/0: {name: "idx", value: 2, type: 2-1, properties: ["idx": "address":"integer", "deref": ]} <- add/2 {name: "idx", value: 2, type: 2-1, properties: ["idx": "address":"integer", "deref": ]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is idx -mem/0: location 1102 is 1035 -mem/0: location 1035 is 2 -run/0: ingredient 1 is 1 -run/0: product 0 is 3 -mem/0: location 1102 is 1035 -mem/0: storing 3 in location 1035 -run/0: instruction read-key/14 -run/0: reply/33 {name: "c", value: 6, type: 4, properties: ["c": "character"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal", "found": ]}, {name: "x", value: 1, type: 2-12, properties: ["x": "address":"keyboard", "same-as-ingredient": "0"]} -mem/0: location 1106 is 99 -mem/0: location 1101 is 1035 -run/0: result 0 is 99 -mem/0: storing 99 in location 5 -run/0: result 1 is 1 -mem/0: storing 1 in location 6 -run/0: result 2 is 1035 -mem/0: storing 1035 in location 901 -run/0: instruction run1002/3 -run/0: {name: "7", value: 7, type: 4, properties: ["7": "character"]}, {name: "8", value: 8, type: 3, properties: ["8": "boolean"]}, {name: "keyboard", value: 901, type: 2, properties: ["keyboard": "address"]} <- read-key/126 {name: "keyboard", value: 901, type: 2, properties: ["keyboard": "address"]} -mem/0: location 901 is 1035 -run/0: instruction read-key/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/44 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} -mem/0: array size is 30 -mem/0: new alloc: 1130 -run/0: instruction read-key/1 -run/0: {name: "x", value: 1, type: 2-12, properties: ["x": "address":"keyboard"]} <- next-ingredient/30 -run/0: product 0 is 1035 -mem/0: storing 1035 in location 1132 -run/0: instruction read-key/3 -run/0: break-unless/12 {name: "x", value: 1, type: 2-12, properties: ["x": "address":"keyboard"]}, {name: "", value: 11, type: , properties: ["": ]} -mem/0: location 1132 is 1035 -run/0: ingredient 0 is 1035 -run/0: jump-unless fell through -run/0: instruction read-key/4 -run/0: {name: "idx", value: 2, type: 2-1, properties: ["idx": "address":"integer"]} <- get-address/25 {name: "x", value: 1, type: 2-12, properties: ["x": "address":"keyboard", "deref": ]}, {name: "index", value: 0, type: 0, properties: ["index": "offset"]} -run/0: ingredient 0 is x -mem/0: location 1132 is 1035 -run/0: ingredient 1 is index -run/0: address to copy is 1035 -run/0: product 0 is 1035 -mem/0: storing 1035 in location 1133 -run/0: instruction read-key/5 -run/0: {name: "buf", value: 3, type: 2-5-4, properties: ["buf": "address":"array":"character"]} <- get/24 {name: "x", value: 1, type: 2-12, properties: ["x": "address":"keyboard", "deref": ]}, {name: "data", value: 1, type: 0, properties: ["data": "offset"]} -run/0: ingredient 0 is x -mem/0: location 1132 is 1035 -run/0: ingredient 1 is data -run/0: address to copy is 1036 -run/0: its type is 2 -mem/0: location 1036 is 1000 -run/0: product 0 is 1000 -mem/0: storing 1000 in location 1134 -run/0: instruction read-key/6 -run/0: {name: "max", value: 4, type: 1, properties: ["max": "integer"]} <- length/28 {name: "buf", value: 3, type: 2-5-4, properties: ["buf": "address":"array":"character", "deref": ]} -mem/0: location 1134 is 1000 -mem/0: storing 3 in location 1135 -run/0: instruction read-key/8 -run/0: {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]} <- greater-or-equal/16 {name: "idx", value: 2, type: 2-1, properties: ["idx": "address":"integer", "deref": ]}, {name: "max", value: 4, type: 1, properties: ["max": "integer"]} -run/0: ingredient 0 is idx -mem/0: location 1133 is 1035 -mem/0: location 1035 is 3 -run/0: ingredient 1 is max -mem/0: location 1135 is 3 -run/0: product 0 is 1 -mem/0: storing 1 in location 1136 -run/0: instruction read-key/9 -run/0: break-unless/12 {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} -mem/0: location 1136 is 1 -run/0: ingredient 0 is 1 -run/0: jump-unless fell through -run/0: instruction read-key/10 -run/0: reply/33 {name: "0", value: 0, type: 0, properties: ["0": "literal"]}, {name: "0", value: 0, type: 0, properties: ["0": "literal", "done": ]}, {name: "x", value: 1, type: 2-12, properties: ["x": "address":"keyboard", "same-as-ingredient": "0"]} -mem/0: location 1132 is 1035 -run/0: result 0 is 0 -mem/0: storing 0 in location 7 -run/0: result 1 is 0 -mem/0: storing 0 in location 8 -run/0: result 2 is 1035 -mem/0: storing 1035 in location 901 -run/0: instruction keyboard-in-scenario/3 -run/0: memory-should-contain/46 {name: " - 1 <- 97 # 'a' - 2 <- 1 # first read-key call found a character - 3 <- 98 # 'b' - 4 <- 1 # second read-key call found a character - 5 <- 99 # 'c' - 6 <- 1 # third read-key call found a character - 7 <- 0 - 8 <- 0 # fourth read-key call didn't find a character - ", value: 0, type: 0, properties: [" - 1 <- 97 # 'a' - 2 <- 1 # first read-key call found a character - 3 <- 98 # 'b' - 4 <- 1 # second read-key call found a character - 5 <- 99 # 'c' - 6 <- 1 # third read-key call found a character - 7 <- 0 - 8 <- 0 # fourth read-key call didn't find a character - ": "literal-string"]} -run/0: checking location 1 -run/0: checking location 2 -run/0: checking location 3 -run/0: checking location 4 -run/0: checking location 5 -run/0: checking location 6 -run/0: checking location 7 -run/0: checking location 8 diff --git a/cpp/.traces/lesser_or_equal b/cpp/.traces/lesser_or_equal deleted file mode 100644 index ef139323..00000000 --- a/cpp/.traces/lesser_or_equal +++ /dev/null @@ -1,32 +0,0 @@ -parse/0: instruction: copy -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: copy -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: lesser-or-equal -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 ... -after-brace/0: lesser-or-equal ... -new/0: routine allocated memory from 1000 to 101000 -schedule/0: main -run/0: instruction main/0 -run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- copy/1 {name: "32", value: 32, type: 0, properties: ["32": "literal"]} -run/0: ingredient 0 is 32 -mem/0: storing 32 in location 1 -run/0: instruction main/1 -run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- copy/1 {name: "33", value: 33, type: 0, properties: ["33": "literal"]} -run/0: ingredient 0 is 33 -mem/0: storing 33 in location 2 -run/0: instruction main/2 -run/0: {name: "3", value: 3, type: 1, properties: ["3": "integer"]} <- lesser-or-equal/17 {name: "1", value: 1, type: 1, properties: ["1": "integer"]}, {name: "2", value: 2, type: 1, properties: ["2": "integer"]} -run/0: ingredient 0 is 1 -mem/0: location 1 is 32 -run/0: ingredient 1 is 2 -mem/0: location 2 is 33 -run/0: product 0 is 1 -mem/0: storing 1 in location 3 diff --git a/cpp/.traces/lesser_or_equal2 b/cpp/.traces/lesser_or_equal2 deleted file mode 100644 index 3f75857d..00000000 --- a/cpp/.traces/lesser_or_equal2 +++ /dev/null @@ -1,32 +0,0 @@ -parse/0: instruction: copy -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: copy -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: lesser-or-equal -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 ... -after-brace/0: lesser-or-equal ... -new/0: routine allocated memory from 1000 to 101000 -schedule/0: main -run/0: instruction main/0 -run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- copy/1 {name: "33", value: 33, type: 0, properties: ["33": "literal"]} -run/0: ingredient 0 is 33 -mem/0: storing 33 in location 1 -run/0: instruction main/1 -run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- copy/1 {name: "33", value: 33, type: 0, properties: ["33": "literal"]} -run/0: ingredient 0 is 33 -mem/0: storing 33 in location 2 -run/0: instruction main/2 -run/0: {name: "3", value: 3, type: 1, properties: ["3": "integer"]} <- lesser-or-equal/17 {name: "1", value: 1, type: 1, properties: ["1": "integer"]}, {name: "2", value: 2, type: 1, properties: ["2": "integer"]} -run/0: ingredient 0 is 1 -mem/0: location 1 is 33 -run/0: ingredient 1 is 2 -mem/0: location 2 is 33 -run/0: product 0 is 1 -mem/0: storing 1 in location 3 diff --git a/cpp/.traces/lesser_or_equal3 b/cpp/.traces/lesser_or_equal3 deleted file mode 100644 index cc7d8d18..00000000 --- a/cpp/.traces/lesser_or_equal3 +++ /dev/null @@ -1,32 +0,0 @@ -parse/0: instruction: copy -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: copy -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: lesser-or-equal -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 ... -after-brace/0: lesser-or-equal ... -new/0: routine allocated memory from 1000 to 101000 -schedule/0: main -run/0: instruction main/0 -run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- copy/1 {name: "34", value: 34, type: 0, properties: ["34": "literal"]} -run/0: ingredient 0 is 34 -mem/0: storing 34 in location 1 -run/0: instruction main/1 -run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- copy/1 {name: "33", value: 33, type: 0, properties: ["33": "literal"]} -run/0: ingredient 0 is 33 -mem/0: storing 33 in location 2 -run/0: instruction main/2 -run/0: {name: "3", value: 3, type: 1, properties: ["3": "integer"]} <- lesser-or-equal/17 {name: "1", value: 1, type: 1, properties: ["1": "integer"]}, {name: "2", value: 2, type: 1, properties: ["2": "integer"]} -run/0: ingredient 0 is 1 -mem/0: location 1 is 34 -run/0: ingredient 1 is 2 -mem/0: location 2 is 33 -run/0: product 0 is 0 -mem/0: storing 0 in location 3 diff --git a/cpp/.traces/lesser_than b/cpp/.traces/lesser_than deleted file mode 100644 index 8c5a05dc..00000000 --- a/cpp/.traces/lesser_than +++ /dev/null @@ -1,32 +0,0 @@ -parse/0: instruction: copy -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: copy -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: lesser-than -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 ... -after-brace/0: lesser-than ... -new/0: routine allocated memory from 1000 to 101000 -schedule/0: main -run/0: instruction main/0 -run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- copy/1 {name: "32", value: 32, type: 0, properties: ["32": "literal"]} -run/0: ingredient 0 is 32 -mem/0: storing 32 in location 1 -run/0: instruction main/1 -run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- copy/1 {name: "33", value: 33, type: 0, properties: ["33": "literal"]} -run/0: ingredient 0 is 33 -mem/0: storing 33 in location 2 -run/0: instruction main/2 -run/0: {name: "3", value: 3, type: 1, properties: ["3": "integer"]} <- lesser-than/15 {name: "1", value: 1, type: 1, properties: ["1": "integer"]}, {name: "2", value: 2, type: 1, properties: ["2": "integer"]} -run/0: ingredient 0 is 1 -mem/0: location 1 is 32 -run/0: ingredient 1 is 2 -mem/0: location 2 is 33 -run/0: product 0 is 1 -mem/0: storing 1 in location 3 diff --git a/cpp/.traces/lesser_than2 b/cpp/.traces/lesser_than2 deleted file mode 100644 index 27c17708..00000000 --- a/cpp/.traces/lesser_than2 +++ /dev/null @@ -1,32 +0,0 @@ -parse/0: instruction: copy -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: copy -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: lesser-than -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 ... -after-brace/0: lesser-than ... -new/0: routine allocated memory from 1000 to 101000 -schedule/0: main -run/0: instruction main/0 -run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- copy/1 {name: "34", value: 34, type: 0, properties: ["34": "literal"]} -run/0: ingredient 0 is 34 -mem/0: storing 34 in location 1 -run/0: instruction main/1 -run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- copy/1 {name: "33", value: 33, type: 0, properties: ["33": "literal"]} -run/0: ingredient 0 is 33 -mem/0: storing 33 in location 2 -run/0: instruction main/2 -run/0: {name: "3", value: 3, type: 1, properties: ["3": "integer"]} <- lesser-than/15 {name: "1", value: 1, type: 1, properties: ["1": "integer"]}, {name: "2", value: 2, type: 1, properties: ["2": "integer"]} -run/0: ingredient 0 is 1 -mem/0: location 1 is 34 -run/0: ingredient 1 is 2 -mem/0: location 2 is 33 -run/0: product 0 is 0 -mem/0: storing 0 in location 3 diff --git a/cpp/.traces/loop b/cpp/.traces/loop deleted file mode 100644 index b3a25323..00000000 --- a/cpp/.traces/loop +++ /dev/null @@ -1,21 +0,0 @@ -parse/0: instruction: copy -parse/0: ingredient: {name: "0", value: 0, type: 0, properties: ["0": "literal"]} -parse/0: product: {name: "1", value: 0, type: 1, properties: ["1": "integer"]} -parse/0: instruction: copy -parse/0: ingredient: {name: "0", value: 0, type: 0, properties: ["0": "literal"]} -parse/0: product: {name: "2", value: 0, type: 1, properties: ["2": "integer"]} -parse/0: label: { -parse/0: instruction: copy -parse/0: ingredient: {name: "0", value: 0, type: 0, properties: ["0": "literal"]} -parse/0: product: {name: "3", value: 0, type: 1, properties: ["3": "integer"]} -parse/0: instruction: loop -parse/0: label: } -brace/0: 1000: push (open, 2) -brace/0: push (close, 5) -after-brace/0: recipe main -after-brace/0: copy ... -after-brace/0: copy ... -after-brace/0: copy ... -after-brace/0: jump -2:offset -after-brace/0: 4: {name: "", value: -2, type: , properties: ["": ]} -after-brace/0: 4: {name: "", value: -2, type: , properties: ["": ]} diff --git a/cpp/.traces/loop_label b/cpp/.traces/loop_label deleted file mode 100644 index 3d3f36f3..00000000 --- a/cpp/.traces/loop_label +++ /dev/null @@ -1,10 +0,0 @@ -parse/0: instruction: copy -parse/0: ingredient: {name: "0", value: 0, type: 0, properties: ["0": "literal"]} -parse/0: product: {name: "1", value: 0, type: 1, properties: ["1": "integer"]} -parse/0: label: +foo -parse/0: instruction: copy -parse/0: ingredient: {name: "0", value: 0, type: 0, properties: ["0": "literal"]} -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/loop_nested b/cpp/.traces/loop_nested deleted file mode 100644 index ef21f26b..00000000 --- a/cpp/.traces/loop_nested +++ /dev/null @@ -1,28 +0,0 @@ -parse/0: instruction: copy -parse/0: ingredient: {name: "0", value: 0, type: 0, properties: ["0": "literal"]} -parse/0: product: {name: "1", value: 0, type: 1, properties: ["1": "integer"]} -parse/0: label: { -parse/0: instruction: copy -parse/0: ingredient: {name: "0", value: 0, type: 0, properties: ["0": "literal"]} -parse/0: product: {name: "2", value: 0, type: 1, properties: ["2": "integer"]} -parse/0: label: { -parse/0: instruction: copy -parse/0: ingredient: {name: "0", value: 0, type: 0, properties: ["0": "literal"]} -parse/0: product: {name: "3", value: 0, type: 1, properties: ["3": "integer"]} -parse/0: label: } -parse/0: instruction: loop-if -parse/0: ingredient: {name: "4", value: 0, type: 3, properties: ["4": "boolean"]} -parse/0: instruction: copy -parse/0: ingredient: {name: "0", value: 0, type: 0, properties: ["0": "literal"]} -parse/0: product: {name: "5", value: 0, type: 1, properties: ["5": "integer"]} -parse/0: label: } -brace/0: 1000: push (open, 1) -brace/0: 1000: push (open, 3) -brace/0: push (close, 5) -brace/0: push (close, 8) -after-brace/0: recipe main -after-brace/0: copy ... -after-brace/0: copy ... -after-brace/0: copy ... -after-brace/0: jump-if 4, -5:offset -after-brace/0: copy ... diff --git a/cpp/.traces/loop_unless b/cpp/.traces/loop_unless deleted file mode 100644 index d29f272f..00000000 --- a/cpp/.traces/loop_unless +++ /dev/null @@ -1,20 +0,0 @@ -parse/0: instruction: copy -parse/0: ingredient: {name: "0", value: 0, type: 0, properties: ["0": "literal"]} -parse/0: product: {name: "1", value: 0, type: 1, properties: ["1": "integer"]} -parse/0: instruction: copy -parse/0: ingredient: {name: "0", value: 0, type: 0, properties: ["0": "literal"]} -parse/0: product: {name: "2", value: 0, type: 1, properties: ["2": "integer"]} -parse/0: label: { -parse/0: instruction: loop-unless -parse/0: ingredient: {name: "2", value: 0, type: 1, properties: ["2": "integer"]} -parse/0: instruction: copy -parse/0: ingredient: {name: "0", value: 0, type: 0, properties: ["0": "literal"]} -parse/0: product: {name: "3", value: 0, type: 1, properties: ["3": "integer"]} -parse/0: label: } -brace/0: 1000: push (open, 2) -brace/0: push (close, 5) -after-brace/0: recipe main -after-brace/0: copy ... -after-brace/0: copy ... -after-brace/0: jump-unless 2, -1:offset -after-brace/0: copy ... diff --git a/cpp/.traces/maybe_convert b/cpp/.traces/maybe_convert deleted file mode 100644 index 5a90d04c..00000000 --- a/cpp/.traces/maybe_convert +++ /dev/null @@ -1,37 +0,0 @@ -parse/0: instruction: copy -parse/0: ingredient: {name: "1", value: 0, type: 0, properties: ["1": "literal"]} -parse/0: product: {name: "12", value: 0, type: 1, properties: ["12": "integer"]} -parse/0: instruction: copy -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: copy -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: maybe-convert -parse/0: ingredient: {name: "12", value: 0, type: 8, properties: ["12": "integer-or-point"]} -parse/0: ingredient: {name: "1", value: 0, type: 0, properties: ["1": "variant"]} -parse/0: product: {name: "20", value: 0, type: 2-6, properties: ["20": "address":"point"]} -after-brace/0: recipe main -after-brace/0: copy ... -after-brace/0: copy ... -after-brace/0: copy ... -after-brace/0: maybe-convert ... -new/0: routine allocated memory from 1000 to 101000 -schedule/0: main -run/0: instruction main/0 -run/0: {name: "12", value: 12, type: 1, properties: ["12": "integer"]} <- copy/1 {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is 1 -mem/0: storing 1 in location 12 -run/0: instruction main/1 -run/0: {name: "13", value: 13, type: 1, properties: ["13": "integer"]} <- copy/1 {name: "35", value: 35, type: 0, properties: ["35": "literal"]} -run/0: ingredient 0 is 35 -mem/0: storing 35 in location 13 -run/0: instruction main/2 -run/0: {name: "14", value: 14, type: 1, properties: ["14": "integer"]} <- copy/1 {name: "36", value: 36, type: 0, properties: ["36": "literal"]} -run/0: ingredient 0 is 36 -mem/0: storing 36 in location 14 -run/0: instruction main/3 -run/0: {name: "20", value: 20, type: 2-6, properties: ["20": "address":"point"]} <- maybe-convert/29 {name: "12", value: 12, type: 8, properties: ["12": "integer-or-point"]}, {name: "1", value: 1, type: 0, properties: ["1": "variant"]} -run/0: ingredient 0 is 12 -run/0: ingredient 1 is 1 -mem/0: storing 13 in location 20 diff --git a/cpp/.traces/maybe_convert_fail b/cpp/.traces/maybe_convert_fail deleted file mode 100644 index e925f76c..00000000 --- a/cpp/.traces/maybe_convert_fail +++ /dev/null @@ -1,37 +0,0 @@ -parse/0: instruction: copy -parse/0: ingredient: {name: "1", value: 0, type: 0, properties: ["1": "literal"]} -parse/0: product: {name: "12", value: 0, type: 1, properties: ["12": "integer"]} -parse/0: instruction: copy -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: copy -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: maybe-convert -parse/0: ingredient: {name: "12", value: 0, type: 8, properties: ["12": "integer-or-point"]} -parse/0: ingredient: {name: "0", value: 0, type: 0, properties: ["0": "variant"]} -parse/0: product: {name: "20", value: 0, type: 2-6, properties: ["20": "address":"point"]} -after-brace/0: recipe main -after-brace/0: copy ... -after-brace/0: copy ... -after-brace/0: copy ... -after-brace/0: maybe-convert ... -new/0: routine allocated memory from 1000 to 101000 -schedule/0: main -run/0: instruction main/0 -run/0: {name: "12", value: 12, type: 1, properties: ["12": "integer"]} <- copy/1 {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is 1 -mem/0: storing 1 in location 12 -run/0: instruction main/1 -run/0: {name: "13", value: 13, type: 1, properties: ["13": "integer"]} <- copy/1 {name: "35", value: 35, type: 0, properties: ["35": "literal"]} -run/0: ingredient 0 is 35 -mem/0: storing 35 in location 13 -run/0: instruction main/2 -run/0: {name: "14", value: 14, type: 1, properties: ["14": "integer"]} <- copy/1 {name: "36", value: 36, type: 0, properties: ["36": "literal"]} -run/0: ingredient 0 is 36 -mem/0: storing 36 in location 14 -run/0: instruction main/3 -run/0: {name: "20", value: 20, type: 2-6, properties: ["20": "address":"point"]} <- maybe-convert/29 {name: "12", value: 12, type: 8, properties: ["12": "integer-or-point"]}, {name: "0", value: 0, type: 0, properties: ["0": "variant"]} -run/0: ingredient 0 is 12 -run/0: ingredient 1 is 0 -mem/0: storing 0 in location 20 diff --git a/cpp/.traces/maybe_convert_named b/cpp/.traces/maybe_convert_named deleted file mode 100644 index aea23061..00000000 --- a/cpp/.traces/maybe_convert_named +++ /dev/null @@ -1,38 +0,0 @@ -parse/0: instruction: copy -parse/0: ingredient: {name: "1", value: 0, type: 0, properties: ["1": "literal"]} -parse/0: product: {name: "12", value: 0, type: 1, properties: ["12": "integer"]} -parse/0: instruction: copy -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: copy -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: maybe-convert -parse/0: ingredient: {name: "12", value: 0, type: 8, properties: ["12": "integer-or-point"]} -parse/0: ingredient: {name: "p", value: 0, type: 0, properties: ["p": "variant"]} -parse/0: product: {name: "20", value: 0, type: 2-6, properties: ["20": "address":"point"]} -name/0: variant p of type integer-or-point has tag 1 -after-brace/0: recipe main -after-brace/0: copy ... -after-brace/0: copy ... -after-brace/0: copy ... -after-brace/0: maybe-convert ... -new/0: routine allocated memory from 1000 to 101000 -schedule/0: main -run/0: instruction main/0 -run/0: {name: "12", value: 12, type: 1, properties: ["12": "integer"]} <- copy/1 {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is 1 -mem/0: storing 1 in location 12 -run/0: instruction main/1 -run/0: {name: "13", value: 13, type: 1, properties: ["13": "integer"]} <- copy/1 {name: "35", value: 35, type: 0, properties: ["35": "literal"]} -run/0: ingredient 0 is 35 -mem/0: storing 35 in location 13 -run/0: instruction main/2 -run/0: {name: "14", value: 14, type: 1, properties: ["14": "integer"]} <- copy/1 {name: "36", value: 36, type: 0, properties: ["36": "literal"]} -run/0: ingredient 0 is 36 -mem/0: storing 36 in location 14 -run/0: instruction main/3 -run/0: {name: "20", value: 20, type: 2-6, properties: ["20": "address":"point"]} <- maybe-convert/29 {name: "12", value: 12, type: 8, properties: ["12": "integer-or-point"]}, {name: "p", value: 1, type: 0, properties: ["p": "variant"]} -run/0: ingredient 0 is 12 -run/0: ingredient 1 is p -mem/0: storing 13 in location 20 diff --git a/cpp/.traces/memory_check b/cpp/.traces/memory_check deleted file mode 100644 index c87bcc2f..00000000 --- a/cpp/.traces/memory_check +++ /dev/null @@ -1,18 +0,0 @@ -parse/0: instruction: memory-should-contain -parse/0: ingredient: {name: " - 1 <- 13 - ", value: 0, type: 0, properties: [" - 1 <- 13 - ": "literal-string"]} -after-brace/0: recipe main -after-brace/0: memory-should-contain ... -new/0: routine allocated memory from 1000 to 101000 -schedule/0: main -run/0: instruction main/0 -run/0: memory-should-contain/46 {name: " - 1 <- 13 - ", value: 0, type: 0, properties: [" - 1 <- 13 - ": "literal-string"]} -run/0: checking location 1 -warn/0: expected location 1 to contain 13 but saw 0 diff --git a/cpp/.traces/memory_check_multiple b/cpp/.traces/memory_check_multiple deleted file mode 100644 index 50aa0237..00000000 --- a/cpp/.traces/memory_check_multiple +++ /dev/null @@ -1,23 +0,0 @@ -parse/0: instruction: memory-should-contain -parse/0: ingredient: {name: " - 1 <- 0 - 1 <- 0 - ", value: 0, type: 0, properties: [" - 1 <- 0 - 1 <- 0 - ": "literal-string"]} -after-brace/0: recipe main -after-brace/0: memory-should-contain ... -new/0: routine allocated memory from 1000 to 101000 -schedule/0: main -run/0: instruction main/0 -run/0: memory-should-contain/46 {name: " - 1 <- 0 - 1 <- 0 - ", value: 0, type: 0, properties: [" - 1 <- 0 - 1 <- 0 - ": "literal-string"]} -run/0: checking location 1 -warn/0: duplicate expectation for location 1 -run/0: checking location 1 diff --git a/cpp/.traces/memory_check_string b/cpp/.traces/memory_check_string deleted file mode 100644 index 2f47f64f..00000000 --- a/cpp/.traces/memory_check_string +++ /dev/null @@ -1,52 +0,0 @@ -parse/0: instruction: copy -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: copy -parse/0: ingredient: {name: "97", value: 0, type: 0, properties: ["97": "literal"]} -parse/0: product: {name: "2", value: 0, type: 1, properties: ["2": "integer"]} -parse/0: instruction: copy -parse/0: ingredient: {name: "98", value: 0, type: 0, properties: ["98": "literal"]} -parse/0: product: {name: "3", value: 0, type: 1, properties: ["3": "integer"]} -parse/0: instruction: copy -parse/0: ingredient: {name: "99", value: 0, type: 0, properties: ["99": "literal"]} -parse/0: product: {name: "4", value: 0, type: 1, properties: ["4": "integer"]} -parse/0: instruction: memory-should-contain -parse/0: ingredient: {name: " - 1:string <- [abc] - ", value: 0, type: 0, properties: [" - 1:string <- [abc] - ": "literal-string"]} -after-brace/0: recipe main -after-brace/0: copy ... -after-brace/0: copy ... -after-brace/0: copy ... -after-brace/0: copy ... -after-brace/0: memory-should-contain ... -new/0: routine allocated memory from 1000 to 101000 -schedule/0: main -run/0: instruction main/0 -run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- copy/1 {name: "3", value: 3, type: 0, properties: ["3": "literal"]} -run/0: ingredient 0 is 3 -mem/0: storing 3 in location 1 -run/0: instruction main/1 -run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- copy/1 {name: "97", value: 97, type: 0, properties: ["97": "literal"]} -run/0: ingredient 0 is 97 -mem/0: storing 97 in location 2 -run/0: instruction main/2 -run/0: {name: "3", value: 3, type: 1, properties: ["3": "integer"]} <- copy/1 {name: "98", value: 98, type: 0, properties: ["98": "literal"]} -run/0: ingredient 0 is 98 -mem/0: storing 98 in location 3 -run/0: instruction main/3 -run/0: {name: "4", value: 4, type: 1, properties: ["4": "integer"]} <- copy/1 {name: "99", value: 99, type: 0, properties: ["99": "literal"]} -run/0: ingredient 0 is 99 -mem/0: storing 99 in location 4 -run/0: instruction main/4 -run/0: memory-should-contain/46 {name: " - 1:string <- [abc] - ", value: 0, type: 0, properties: [" - 1:string <- [abc] - ": "literal-string"]} -run/0: checking string length at 1 -run/0: checking location 2 -run/0: checking location 3 -run/0: checking location 4 diff --git a/cpp/.traces/memory_check_string_length b/cpp/.traces/memory_check_string_length deleted file mode 100644 index 84fb62e1..00000000 --- a/cpp/.traces/memory_check_string_length +++ /dev/null @@ -1,52 +0,0 @@ -parse/0: instruction: copy -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: copy -parse/0: ingredient: {name: "97", value: 0, type: 0, properties: ["97": "literal"]} -parse/0: product: {name: "2", value: 0, type: 1, properties: ["2": "integer"]} -parse/0: instruction: copy -parse/0: ingredient: {name: "98", value: 0, type: 0, properties: ["98": "literal"]} -parse/0: product: {name: "3", value: 0, type: 1, properties: ["3": "integer"]} -parse/0: instruction: copy -parse/0: ingredient: {name: "99", value: 0, type: 0, properties: ["99": "literal"]} -parse/0: product: {name: "4", value: 0, type: 1, properties: ["4": "integer"]} -parse/0: instruction: memory-should-contain -parse/0: ingredient: {name: " - 1:string <- [ab] - ", value: 0, type: 0, properties: [" - 1:string <- [ab] - ": "literal-string"]} -after-brace/0: recipe main -after-brace/0: copy ... -after-brace/0: copy ... -after-brace/0: copy ... -after-brace/0: copy ... -after-brace/0: memory-should-contain ... -new/0: routine allocated memory from 1000 to 101000 -schedule/0: main -run/0: instruction main/0 -run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- copy/1 {name: "3", value: 3, type: 0, properties: ["3": "literal"]} -run/0: ingredient 0 is 3 -mem/0: storing 3 in location 1 -run/0: instruction main/1 -run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- copy/1 {name: "97", value: 97, type: 0, properties: ["97": "literal"]} -run/0: ingredient 0 is 97 -mem/0: storing 97 in location 2 -run/0: instruction main/2 -run/0: {name: "3", value: 3, type: 1, properties: ["3": "integer"]} <- copy/1 {name: "98", value: 98, type: 0, properties: ["98": "literal"]} -run/0: ingredient 0 is 98 -mem/0: storing 98 in location 3 -run/0: instruction main/3 -run/0: {name: "4", value: 4, type: 1, properties: ["4": "integer"]} <- copy/1 {name: "99", value: 99, type: 0, properties: ["99": "literal"]} -run/0: ingredient 0 is 99 -mem/0: storing 99 in location 4 -run/0: instruction main/4 -run/0: memory-should-contain/46 {name: " - 1:string <- [ab] - ", value: 0, type: 0, properties: [" - 1:string <- [ab] - ": "literal-string"]} -run/0: checking string length at 1 -warn/0: expected location 1 to contain length 2 of string [ab] but saw 3 -run/0: checking location 2 -run/0: checking location 3 diff --git a/cpp/.traces/multiply b/cpp/.traces/multiply deleted file mode 100644 index ceb7be06..00000000 --- a/cpp/.traces/multiply +++ /dev/null @@ -1,33 +0,0 @@ -parse/0: instruction: copy -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: copy -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: multiply -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 ... -after-brace/0: multiply ... -new/0: routine allocated memory from 1000 to 101000 -schedule/0: main -run/0: instruction main/0 -run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- copy/1 {name: "4", value: 4, type: 0, properties: ["4": "literal"]} -run/0: ingredient 0 is 4 -mem/0: storing 4 in location 1 -run/0: instruction main/1 -run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- copy/1 {name: "6", value: 6, type: 0, properties: ["6": "literal"]} -run/0: ingredient 0 is 6 -mem/0: storing 6 in location 2 -run/0: instruction main/2 -run/0: {name: "3", value: 3, type: 1, properties: ["3": "integer"]} <- multiply/4 {name: "1", value: 1, type: 1, properties: ["1": "integer"]}, {name: "2", value: 2, type: 1, properties: ["2": "integer"]} -run/0: ingredient 0 is 1 -mem/0: location 1 is 4 -run/0: ingredient 1 is 2 -mem/0: location 2 is 6 -run/0: ingredient 1 is 6 -run/0: product 0 is 24 -mem/0: storing 24 in location 3 diff --git a/cpp/.traces/multiply_literal b/cpp/.traces/multiply_literal deleted file mode 100644 index 115fb958..00000000 --- a/cpp/.traces/multiply_literal +++ /dev/null @@ -1,15 +0,0 @@ -parse/0: instruction: multiply -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 ... -new/0: routine allocated memory from 1000 to 101000 -schedule/0: main -run/0: instruction main/0 -run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- multiply/4 {name: "2", value: 2, type: 0, properties: ["2": "literal"]}, {name: "3", value: 3, type: 0, properties: ["3": "literal"]} -run/0: ingredient 0 is 2 -run/0: ingredient 1 is 3 -run/0: ingredient 1 is 3 -run/0: product 0 is 6 -mem/0: storing 6 in location 1 diff --git a/cpp/.traces/new b/cpp/.traces/new deleted file mode 100644 index 82e25ee1..00000000 --- a/cpp/.traces/new +++ /dev/null @@ -1,34 +0,0 @@ -parse/0: instruction: new -parse/0: ingredient: {name: "integer", value: 0, type: 0, properties: ["integer": "type"]} -parse/0: product: {name: "1", value: 0, type: 2-1, properties: ["1": "address":"integer", "raw": ]} -parse/0: instruction: new -parse/0: ingredient: {name: "integer", value: 0, type: 0, properties: ["integer": "type"]} -parse/0: product: {name: "2", value: 0, type: 2-1, properties: ["2": "address":"integer", "raw": ]} -parse/0: instruction: equal -parse/0: ingredient: {name: "1", value: 0, type: 2-1, properties: ["1": "address":"integer", "raw": ]} -parse/0: ingredient: {name: "2", value: 0, type: 2-1, properties: ["2": "address":"integer", "raw": ]} -parse/0: product: {name: "3", value: 0, type: 3, properties: ["3": "boolean", "raw": ]} -new/0: integer -> 1 -new/0: integer -> 1 -after-brace/0: recipe main -after-brace/0: new ... -after-brace/0: new ... -after-brace/0: equal ... -new/0: routine allocated memory from 1000 to 101000 -schedule/0: main -run/0: instruction main/0 -run/0: {name: "1", value: 1, type: 2-1, properties: ["1": "address":"integer", "raw": ]} <- new/44 {name: "integer", value: 1, type: 0, properties: ["integer": "type"]} -mem/0: new alloc: 1000 -mem/0: storing 1000 in location 1 -run/0: instruction main/1 -run/0: {name: "2", value: 2, type: 2-1, properties: ["2": "address":"integer", "raw": ]} <- new/44 {name: "integer", value: 1, type: 0, properties: ["integer": "type"]} -mem/0: new alloc: 1001 -mem/0: storing 1001 in location 2 -run/0: instruction main/2 -run/0: {name: "3", value: 3, type: 3, properties: ["3": "boolean", "raw": ]} <- equal/13 {name: "1", value: 1, type: 2-1, properties: ["1": "address":"integer", "raw": ]}, {name: "2", value: 2, type: 2-1, properties: ["2": "address":"integer", "raw": ]} -run/0: ingredient 0 is 1 -mem/0: location 1 is 1000 -run/0: ingredient 1 is 2 -mem/0: location 2 is 1001 -run/0: product 0 is 0 -mem/0: storing 0 in location 3 diff --git a/cpp/.traces/new_array b/cpp/.traces/new_array deleted file mode 100644 index 830d8c00..00000000 --- a/cpp/.traces/new_array +++ /dev/null @@ -1,36 +0,0 @@ -parse/0: instruction: new -parse/0: ingredient: {name: "integer", value: 0, type: 0, properties: ["integer": "type"]} -parse/0: ingredient: {name: "5", value: 0, type: 0, properties: ["5": "literal"]} -parse/0: product: {name: "1", value: 0, type: 2-5-1, properties: ["1": "address":"array":"integer", "raw": ]} -parse/0: instruction: new -parse/0: ingredient: {name: "integer", value: 0, type: 0, properties: ["integer": "type"]} -parse/0: product: {name: "2", value: 0, type: 2-1, properties: ["2": "address":"integer", "raw": ]} -parse/0: instruction: subtract -parse/0: ingredient: {name: "2", value: 0, type: 2-1, properties: ["2": "address":"integer", "raw": ]} -parse/0: ingredient: {name: "1", value: 0, type: 2-5-1, properties: ["1": "address":"array":"integer", "raw": ]} -parse/0: product: {name: "3", value: 0, type: 1, properties: ["3": "integer", "raw": ]} -new/0: integer -> 1 -new/0: integer -> 1 -after-brace/0: recipe main -after-brace/0: new ... -after-brace/0: new ... -after-brace/0: subtract ... -new/0: routine allocated memory from 1000 to 101000 -schedule/0: main -run/0: instruction main/0 -run/0: {name: "1", value: 1, type: 2-5-1, properties: ["1": "address":"array":"integer", "raw": ]} <- new/44 {name: "integer", value: 1, type: 0, properties: ["integer": "type"]}, {name: "5", value: 5, type: 0, properties: ["5": "literal"]} -mem/0: array size is 5 -mem/0: new alloc: 1000 -mem/0: storing 1000 in location 1 -run/0: instruction main/1 -run/0: {name: "2", value: 2, type: 2-1, properties: ["2": "address":"integer", "raw": ]} <- new/44 {name: "integer", value: 1, type: 0, properties: ["integer": "type"]} -mem/0: new alloc: 1006 -mem/0: storing 1006 in location 2 -run/0: instruction main/2 -run/0: {name: "3", value: 3, type: 1, properties: ["3": "integer", "raw": ]} <- subtract/3 {name: "2", value: 2, type: 2-1, properties: ["2": "address":"integer", "raw": ]}, {name: "1", value: 1, type: 2-5-1, properties: ["1": "address":"array":"integer", "raw": ]} -run/0: ingredient 0 is 2 -mem/0: location 2 is 1006 -run/0: ingredient 1 is 1 -mem/0: location 1 is 1000 -run/0: product 0 is 6 -mem/0: storing 6 in location 3 diff --git a/cpp/.traces/new_concurrent b/cpp/.traces/new_concurrent deleted file mode 100644 index f3d2f2c7..00000000 --- a/cpp/.traces/new_concurrent +++ /dev/null @@ -1,43 +0,0 @@ -parse/0: instruction: start-running -parse/0: ingredient: {name: "f2", value: 0, type: 0, properties: ["f2": "recipe"]} -parse/0: instruction: new -parse/0: ingredient: {name: "integer", value: 0, type: 0, properties: ["integer": "type"]} -parse/0: product: {name: "1", value: 0, type: 2-1, properties: ["1": "address":"integer", "raw": ]} -parse/0: instruction: new -parse/0: ingredient: {name: "integer", value: 0, type: 0, properties: ["integer": "type"]} -parse/0: product: {name: "2", value: 0, type: 2-1, properties: ["2": "address":"integer", "raw": ]} -parse/0: instruction: equal -parse/0: ingredient: {name: "1", value: 0, type: 2-1, properties: ["1": "address":"integer", "raw": ]} -parse/0: ingredient: {name: "2", value: 0, type: 2-1, properties: ["2": "address":"integer", "raw": ]} -parse/0: product: {name: "3", value: 0, type: 3, properties: ["3": "boolean", "raw": ]} -new/0: integer -> 1 -new/0: integer -> 1 -after-brace/0: recipe f1 -after-brace/0: start-running ... -after-brace/0: new ... -after-brace/0: recipe f2 -after-brace/0: new ... -after-brace/0: equal ... -new/0: routine allocated memory from 1000 to 101000 -schedule/0: f1 -run/0: instruction f1/0 -run/0: start-running/34 {name: "f2", value: 0, type: 0, properties: ["f2": "recipe"]} -run/0: ingredient 0 is f2 -new/0: routine allocated memory from 101000 to 201000 -run/0: instruction f1/1 -run/0: {name: "1", value: 1, type: 2-1, properties: ["1": "address":"integer", "raw": ]} <- new/44 {name: "integer", value: 1, type: 0, properties: ["integer": "type"]} -mem/0: new alloc: 1000 -mem/0: storing 1000 in location 1 -schedule/0: f2 -run/0: instruction f2/0 -run/0: {name: "2", value: 2, type: 2-1, properties: ["2": "address":"integer", "raw": ]} <- new/44 {name: "integer", value: 1, type: 0, properties: ["integer": "type"]} -mem/0: new alloc: 101000 -mem/0: storing 101000 in location 2 -run/0: instruction f2/1 -run/0: {name: "3", value: 3, type: 3, properties: ["3": "boolean", "raw": ]} <- equal/13 {name: "1", value: 1, type: 2-1, properties: ["1": "address":"integer", "raw": ]}, {name: "2", value: 2, type: 2-1, properties: ["2": "address":"integer", "raw": ]} -run/0: ingredient 0 is 1 -mem/0: location 1 is 1000 -run/0: ingredient 1 is 2 -mem/0: location 2 is 101000 -run/0: product 0 is 0 -mem/0: storing 0 in location 3 diff --git a/cpp/.traces/new_overflow b/cpp/.traces/new_overflow deleted file mode 100644 index a0a54308..00000000 --- a/cpp/.traces/new_overflow +++ /dev/null @@ -1,22 +0,0 @@ -parse/0: instruction: new -parse/0: ingredient: {name: "integer", value: 0, type: 0, properties: ["integer": "type"]} -parse/0: product: {name: "1", value: 0, type: 2-1, properties: ["1": "address":"integer", "raw": ]} -parse/0: instruction: new -parse/0: ingredient: {name: "point", value: 0, type: 0, properties: ["point": "type"]} -parse/0: product: {name: "2", value: 0, type: 2-6, properties: ["2": "address":"point", "raw": ]} -new/0: integer -> 1 -new/0: point -> 6 -after-brace/0: recipe main -after-brace/0: new ... -after-brace/0: new ... -new/0: routine allocated memory from 1000 to 1002 -schedule/0: main -run/0: instruction main/0 -run/0: {name: "1", value: 1, type: 2-1, properties: ["1": "address":"integer", "raw": ]} <- new/44 {name: "integer", value: 1, type: 0, properties: ["integer": "type"]} -mem/0: new alloc: 1000 -mem/0: storing 1000 in location 1 -run/0: instruction main/1 -run/0: {name: "2", value: 2, type: 2-6, properties: ["2": "address":"point", "raw": ]} <- new/44 {name: "point", value: 6, type: 0, properties: ["point": "type"]} -new/0: routine allocated memory from 1002 to 1004 -mem/0: new alloc: 1002 -mem/0: storing 1002 in location 2 diff --git a/cpp/.traces/new_string b/cpp/.traces/new_string deleted file mode 100644 index ed0e8481..00000000 --- a/cpp/.traces/new_string +++ /dev/null @@ -1,26 +0,0 @@ -parse/0: instruction: new -parse/0: ingredient: {name: "abc def", value: 0, type: 0, properties: ["abc def": "literal-string"]} -parse/0: product: {name: "1", value: 0, type: 2-5-4, properties: ["1": "address":"array":"character"]} -parse/0: instruction: index -parse/0: ingredient: {name: "1", value: 0, type: 2-5-4, properties: ["1": "address":"array":"character", "deref": ]} -parse/0: ingredient: {name: "5", value: 0, type: 0, properties: ["5": "literal"]} -parse/0: product: {name: "2", value: 0, type: 4, properties: ["2": "character"]} -new/0: abc def -> 0 -after-brace/0: recipe main -after-brace/0: new ... -after-brace/0: index ... -new/0: routine allocated memory from 1000 to 101000 -schedule/0: main -run/0: instruction main/0 -run/0: {name: "1", value: 1, type: 2-5-4, properties: ["1": "address":"array":"character"]} <- new/44 {name: "abc def", value: 0, type: 0, properties: ["abc def": "literal-string"]} -mem/0: storing 1000 in location 1 -run/0: instruction main/1 -run/0: {name: "2", value: 2, type: 4, properties: ["2": "character"]} <- index/26 {name: "1", value: 1, type: 2-5-4, properties: ["1": "address":"array":"character", "deref": ]}, {name: "5", value: 5, type: 0, properties: ["5": "literal"]} -run/0: ingredient 0 is {name: "1", value: 1, type: 2-5-4, properties: ["1": "address":"array":"character", "deref": ]} -mem/0: location 1 is 1000 -run/0: ingredient 1 is {name: "5", value: 5, type: 0, properties: ["5": "literal"]} -run/0: address to copy is 1006 -run/0: its type is 4 -mem/0: location 1006 is 101 -run/0: product 0 is 101 -mem/0: storing 101 in location 2 diff --git a/cpp/.traces/next_ingredient b/cpp/.traces/next_ingredient deleted file mode 100644 index 34175e45..00000000 --- a/cpp/.traces/next_ingredient +++ /dev/null @@ -1,28 +0,0 @@ -parse/0: instruction: f -parse/0: ingredient: {name: "2", value: 0, type: 0, properties: ["2": "literal"]} -parse/0: instruction: next-ingredient -parse/0: product: {name: "12", value: 0, type: 1, properties: ["12": "integer"]} -parse/0: instruction: add -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 -after-brace/0: next-ingredient ... -after-brace/0: add ... -new/0: routine allocated memory from 1000 to 101000 -schedule/0: main -run/0: instruction main/0 -run/0: f/1001 {name: "2", value: 2, type: 0, properties: ["2": "literal"]} -run/0: instruction f/0 -run/0: {name: "12", value: 12, type: 1, properties: ["12": "integer"]} <- next-ingredient/30 -run/0: product 0 is 2 -mem/0: storing 2 in location 12 -run/0: instruction f/1 -run/0: {name: "13", value: 13, type: 1, properties: ["13": "integer"]} <- add/2 {name: "1", value: 1, type: 0, properties: ["1": "literal"]}, {name: "12", value: 12, type: 1, properties: ["12": "integer"]} -run/0: ingredient 0 is 1 -run/0: ingredient 1 is 12 -mem/0: location 12 is 2 -run/0: product 0 is 3 -mem/0: storing 3 in location 13 diff --git a/cpp/.traces/next_ingredient_missing b/cpp/.traces/next_ingredient_missing deleted file mode 100644 index 8d120e20..00000000 --- a/cpp/.traces/next_ingredient_missing +++ /dev/null @@ -1,15 +0,0 @@ -parse/0: instruction: f -parse/0: instruction: next-ingredient -parse/0: product: {name: "_", value: 0, type: 0, properties: ["_": "dummy"]} -parse/0: product: {name: "12", value: 0, type: 1, properties: ["12": "integer"]} -after-brace/0: recipe main -after-brace/0: f ... -after-brace/0: recipe f -after-brace/0: next-ingredient ... -new/0: routine allocated memory from 1000 to 101000 -schedule/0: main -run/0: instruction main/0 -run/0: f/1001 -run/0: instruction f/0 -run/0: {name: "_", value: 0, type: 0, properties: ["_": "dummy"]}, {name: "12", value: 12, type: 1, properties: ["12": "integer"]} <- next-ingredient/30 -mem/0: storing 0 in location 12 diff --git a/cpp/.traces/not b/cpp/.traces/not deleted file mode 100644 index 5450b050..00000000 --- a/cpp/.traces/not +++ /dev/null @@ -1,21 +0,0 @@ -parse/0: instruction: copy -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: not -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 ... -new/0: routine allocated memory from 1000 to 101000 -schedule/0: main -run/0: instruction main/0 -run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- copy/1 {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is 1 -mem/0: storing 1 in location 1 -run/0: instruction main/1 -run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- not/9 {name: "1", value: 1, type: 1, properties: ["1": "integer"]} -run/0: ingredient 0 is 1 -mem/0: location 1 is 1 -run/0: product 0 is 0 -mem/0: storing 0 in location 2 diff --git a/cpp/.traces/or b/cpp/.traces/or deleted file mode 100644 index 72231ceb..00000000 --- a/cpp/.traces/or +++ /dev/null @@ -1,32 +0,0 @@ -parse/0: instruction: copy -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: copy -parse/0: ingredient: {name: "0", value: 0, type: 0, properties: ["0": "literal"]} -parse/0: product: {name: "2", value: 0, type: 1, properties: ["2": "integer"]} -parse/0: instruction: or -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 ... -after-brace/0: or ... -new/0: routine allocated memory from 1000 to 101000 -schedule/0: main -run/0: instruction main/0 -run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- copy/1 {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is 1 -mem/0: storing 1 in location 1 -run/0: instruction main/1 -run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- copy/1 {name: "0", value: 0, type: 0, properties: ["0": "literal"]} -run/0: ingredient 0 is 0 -mem/0: storing 0 in location 2 -run/0: instruction main/2 -run/0: {name: "3", value: 3, type: 1, properties: ["3": "integer"]} <- or/8 {name: "1", value: 1, type: 1, properties: ["1": "integer"]}, {name: "2", value: 2, type: 1, properties: ["2": "integer"]} -run/0: ingredient 0 is 1 -mem/0: location 1 is 1 -run/0: ingredient 1 is 2 -mem/0: location 2 is 0 -run/0: product 0 is 1 -mem/0: storing 1 in location 3 diff --git a/cpp/.traces/parse_comment_after_instruction b/cpp/.traces/parse_comment_after_instruction deleted file mode 100644 index 5cfc15c8..00000000 --- a/cpp/.traces/parse_comment_after_instruction +++ /dev/null @@ -1,3 +0,0 @@ -parse/0: instruction: copy -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 deleted file mode 100644 index 5cfc15c8..00000000 --- a/cpp/.traces/parse_comment_amongst_instruction +++ /dev/null @@ -1,3 +0,0 @@ -parse/0: instruction: copy -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 deleted file mode 100644 index 5cfc15c8..00000000 --- a/cpp/.traces/parse_comment_amongst_instruction2 +++ /dev/null @@ -1,3 +0,0 @@ -parse/0: instruction: copy -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 deleted file mode 100644 index a00c722c..00000000 --- a/cpp/.traces/parse_comment_amongst_instruction3 +++ /dev/null @@ -1,6 +0,0 @@ -parse/0: instruction: copy -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: copy -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 deleted file mode 100644 index 5cfc15c8..00000000 --- a/cpp/.traces/parse_comment_outside_recipe +++ /dev/null @@ -1,3 +0,0 @@ -parse/0: instruction: copy -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_dollar_as_recipe_name b/cpp/.traces/parse_dollar_as_recipe_name deleted file mode 100644 index a73100d5..00000000 --- a/cpp/.traces/parse_dollar_as_recipe_name +++ /dev/null @@ -1 +0,0 @@ -parse/0: instruction: $foo diff --git a/cpp/.traces/parse_label b/cpp/.traces/parse_label deleted file mode 100644 index e32481af..00000000 --- a/cpp/.traces/parse_label +++ /dev/null @@ -1 +0,0 @@ -parse/0: label: +foo diff --git a/cpp/.traces/parse_multiple_ingredients b/cpp/.traces/parse_multiple_ingredients deleted file mode 100644 index 5a71e510..00000000 --- a/cpp/.traces/parse_multiple_ingredients +++ /dev/null @@ -1,5 +0,0 @@ -parse/0: instruction: copy -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 deleted file mode 100644 index 24bbdb66..00000000 --- a/cpp/.traces/parse_multiple_products +++ /dev/null @@ -1,4 +0,0 @@ -parse/0: instruction: copy -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 deleted file mode 100644 index e3b452e0..00000000 --- a/cpp/.traces/parse_multiple_properties +++ /dev/null @@ -1,3 +0,0 @@ -parse/0: instruction: copy -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 deleted file mode 100644 index 39df838e..00000000 --- a/cpp/.traces/parse_multiple_types +++ /dev/null @@ -1,5 +0,0 @@ -parse/0: instruction: copy -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 deleted file mode 100644 index 65d7890e..00000000 --- a/cpp/.traces/parse_properties +++ /dev/null @@ -1,3 +0,0 @@ -parse/0: instruction: copy -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/print-character-at-top-left b/cpp/.traces/print-character-at-top-left deleted file mode 100644 index ac59b8f4..00000000 --- a/cpp/.traces/print-character-at-top-left +++ /dev/null @@ -1,595 +0,0 @@ -parse/0: instruction: run -parse/0: ingredient: {name: " -#? $start-tracing #? 3 - 1:address:screen <- init-fake-screen 3:literal/width, 2:literal/height - 1:address:screen <- print-character 1:address:screen, 97:literal # 'a' - 2:address:array:character <- get 1:address:screen/deref, data:offset - 3:array:character <- copy 2:address:array:character/deref - ", value: 0, type: 0, properties: [" -#? $start-tracing #? 3 - 1:address:screen <- init-fake-screen 3:literal/width, 2:literal/height - 1:address:screen <- print-character 1:address:screen, 97:literal # 'a' - 2:address:array:character <- get 1:address:screen/deref, data:offset - 3:array:character <- copy 2:address:array:character/deref - ": "literal-string"]} -parse/0: instruction: memory-should-contain -parse/0: ingredient: {name: " - 3 <- 6 # width*height - 4 <- 97 # 'a' - 5 <- 0 - ", value: 0, type: 0, properties: [" - 3 <- 6 # width*height - 4 <- 97 # 'a' - 5 <- 0 - ": "literal-string"]} -after-brace/0: recipe print-character-at-top-left -after-brace/0: run ... -after-brace/0: memory-should-contain ... -new/0: routine allocated memory from 1000 to 101000 -schedule/0: print-character-at-top-left -run/0: instruction print-character-at-top-left/0 -run/0: run/45 {name: " -#? $start-tracing #? 3 - 1:address:screen <- init-fake-screen 3:literal/width, 2:literal/height - 1:address:screen <- print-character 1:address:screen, 97:literal # 'a' - 2:address:array:character <- get 1:address:screen/deref, data:offset - 3:array:character <- copy 2:address:array:character/deref - ", value: 0, type: 0, properties: [" -#? $start-tracing #? 3 - 1:address:screen <- init-fake-screen 3:literal/width, 2:literal/height - 1:address:screen <- print-character 1:address:screen, 97:literal # 'a' - 2:address:array:character <- get 1:address:screen/deref, data:offset - 3:array:character <- copy 2:address:array:character/deref - ": "literal-string"]} -parse/0: instruction: init-fake-screen -parse/0: ingredient: {name: "3", value: 0, type: 0, properties: ["3": "literal", "width": ]} -parse/0: ingredient: {name: "2", value: 0, type: 0, properties: ["2": "literal", "height": ]} -parse/0: product: {name: "1", value: 0, type: 2-11, properties: ["1": "address":"screen"]} -parse/0: instruction: print-character -parse/0: ingredient: {name: "1", value: 0, type: 2-11, properties: ["1": "address":"screen"]} -parse/0: ingredient: {name: "97", value: 0, type: 0, properties: ["97": "literal"]} -parse/0: product: {name: "1", value: 0, type: 2-11, properties: ["1": "address":"screen"]} -parse/0: instruction: get -parse/0: ingredient: {name: "1", value: 0, type: 2-11, properties: ["1": "address":"screen", "deref": ]} -parse/0: ingredient: {name: "data", value: 0, type: 0, properties: ["data": "offset"]} -parse/0: product: {name: "2", value: 0, type: 2-5-4, properties: ["2": "address":"array":"character"]} -parse/0: instruction: copy -parse/0: ingredient: {name: "2", value: 0, type: 2-5-4, properties: ["2": "address":"array":"character", "deref": ]} -parse/0: product: {name: "3", value: 0, type: 5-4, properties: ["3": "array":"character"]} -name/0: element data of type screen is at offset 4 -after-brace/0: recipe run1001 -after-brace/0: init-fake-screen ... -after-brace/0: print-character ... -after-brace/0: get ... -after-brace/0: copy ... -run/0: instruction run1001/0 -run/0: {name: "1", value: 1, type: 2-11, properties: ["1": "address":"screen"]} <- init-fake-screen/115 {name: "3", value: 3, type: 0, properties: ["3": "literal", "width": ]}, {name: "2", value: 2, type: 0, properties: ["2": "literal", "height": ]} -run/0: instruction init-fake-screen/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/44 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal", "capacity": ]} -mem/0: array size is 30 -mem/0: new alloc: 1000 -run/0: instruction init-fake-screen/1 -run/0: {name: "result", value: 1, type: 2-11, properties: ["result": "address":"screen"]} <- new/44 {name: "screen", value: 11, type: 0, properties: ["screen": "type"]} -mem/0: new alloc: 1031 -mem/0: storing 1031 in location 1002 -run/0: instruction init-fake-screen/2 -run/0: {name: "width", value: 2, type: 2-1, properties: ["width": "address":"integer"]} <- get-address/25 {name: "result", value: 1, type: 2-11, properties: ["result": "address":"screen", "deref": ]}, {name: "num-columns", value: 1, type: 0, properties: ["num-columns": "offset"]} -run/0: ingredient 0 is result -mem/0: location 1002 is 1031 -run/0: ingredient 1 is num-columns -run/0: address to copy is 1032 -run/0: product 0 is 1032 -mem/0: storing 1032 in location 1003 -run/0: instruction init-fake-screen/3 -run/0: {name: "width", value: 2, type: 2-1, properties: ["width": "address":"integer", "deref": ]} <- next-ingredient/30 -run/0: product 0 is 3 -mem/0: location 1003 is 1032 -mem/0: storing 3 in location 1032 -run/0: instruction init-fake-screen/4 -run/0: {name: "height", value: 3, type: 2-1, properties: ["height": "address":"integer"]} <- get-address/25 {name: "result", value: 1, type: 2-11, properties: ["result": "address":"screen", "deref": ]}, {name: "num-rows", value: 0, type: 0, properties: ["num-rows": "offset"]} -run/0: ingredient 0 is result -mem/0: location 1002 is 1031 -run/0: ingredient 1 is num-rows -run/0: address to copy is 1031 -run/0: product 0 is 1031 -mem/0: storing 1031 in location 1004 -run/0: instruction init-fake-screen/5 -run/0: {name: "height", value: 3, type: 2-1, properties: ["height": "address":"integer", "deref": ]} <- next-ingredient/30 -run/0: product 0 is 2 -mem/0: location 1004 is 1031 -mem/0: storing 2 in location 1031 -run/0: instruction init-fake-screen/6 -run/0: {name: "row", value: 4, type: 2-1, properties: ["row": "address":"integer"]} <- get-address/25 {name: "result", value: 1, type: 2-11, properties: ["result": "address":"screen", "deref": ]}, {name: "cursor-row", value: 2, type: 0, properties: ["cursor-row": "offset"]} -run/0: ingredient 0 is result -mem/0: location 1002 is 1031 -run/0: ingredient 1 is cursor-row -run/0: address to copy is 1033 -run/0: product 0 is 1033 -mem/0: storing 1033 in location 1005 -run/0: instruction init-fake-screen/7 -run/0: {name: "row", value: 4, type: 2-1, properties: ["row": "address":"integer", "deref": ]} <- copy/1 {name: "0", value: 0, type: 0, properties: ["0": "literal"]} -run/0: ingredient 0 is 0 -mem/0: location 1005 is 1033 -mem/0: storing 0 in location 1033 -run/0: instruction init-fake-screen/8 -run/0: {name: "column", value: 5, type: 2-1, properties: ["column": "address":"integer"]} <- get-address/25 {name: "result", value: 1, type: 2-11, properties: ["result": "address":"screen", "deref": ]}, {name: "cursor-column", value: 3, type: 0, properties: ["cursor-column": "offset"]} -run/0: ingredient 0 is result -mem/0: location 1002 is 1031 -run/0: ingredient 1 is cursor-column -run/0: address to copy is 1034 -run/0: product 0 is 1034 -mem/0: storing 1034 in location 1006 -run/0: instruction init-fake-screen/9 -run/0: {name: "column", value: 5, type: 2-1, properties: ["column": "address":"integer", "deref": ]} <- copy/1 {name: "0", value: 0, type: 0, properties: ["0": "literal"]} -run/0: ingredient 0 is 0 -mem/0: location 1006 is 1034 -mem/0: storing 0 in location 1034 -run/0: instruction init-fake-screen/10 -run/0: {name: "bufsize", value: 6, type: 1, properties: ["bufsize": "integer"]} <- multiply/4 {name: "width", value: 2, type: 2-1, properties: ["width": "address":"integer", "deref": ]}, {name: "height", value: 3, type: 2-1, properties: ["height": "address":"integer", "deref": ]} -run/0: ingredient 0 is width -mem/0: location 1003 is 1032 -mem/0: location 1032 is 3 -run/0: ingredient 1 is height -mem/0: location 1004 is 1031 -mem/0: location 1031 is 2 -run/0: ingredient 1 is 2 -run/0: product 0 is 6 -mem/0: storing 6 in location 1007 -run/0: instruction init-fake-screen/11 -run/0: {name: "buf", value: 7, type: 2-2-5-4, properties: ["buf": "address":"address":"array":"character"]} <- get-address/25 {name: "result", value: 1, type: 2-11, properties: ["result": "address":"screen", "deref": ]}, {name: "data", value: 4, type: 0, properties: ["data": "offset"]} -run/0: ingredient 0 is result -mem/0: location 1002 is 1031 -run/0: ingredient 1 is data -run/0: address to copy is 1035 -run/0: product 0 is 1035 -mem/0: storing 1035 in location 1008 -run/0: instruction init-fake-screen/12 -run/0: {name: "buf", value: 7, type: 2-2-5-4, properties: ["buf": "address":"address":"array":"character", "deref": ]} <- new/44 {name: "character", value: 0, type: 0, properties: ["character": "literal"]}, {name: "bufsize", value: 6, type: 1, properties: ["bufsize": "integer"]} -mem/0: location 1007 is 6 -mem/0: array size is 6 -mem/0: new alloc: 1036 -mem/0: location 1008 is 1035 -mem/0: storing 1036 in location 1035 -run/0: instruction init-fake-screen/13 -run/0: clear-screen/116 {name: "result", value: 1, type: 2-11, properties: ["result": "address":"screen"]} -mem/0: location 1002 is 1031 -run/0: instruction clear-screen/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/44 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} -mem/0: array size is 30 -mem/0: new alloc: 1043 -run/0: instruction clear-screen/1 -run/0: {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen"]} <- next-ingredient/30 -run/0: product 0 is 1031 -mem/0: storing 1031 in location 1045 -run/0: instruction clear-screen/3 -run/0: break-unless/12 {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen"]}, {name: "", value: 12, type: , properties: ["": ]} -mem/0: location 1045 is 1031 -run/0: ingredient 0 is 1031 -run/0: jump-unless fell through -run/0: instruction clear-screen/4 -run/0: {name: "buf", value: 2, type: 2-5-4, properties: ["buf": "address":"array":"character"]} <- get/24 {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen", "deref": ]}, {name: "data", value: 4, type: 0, properties: ["data": "offset"]} -run/0: ingredient 0 is x -mem/0: location 1045 is 1031 -run/0: ingredient 1 is data -run/0: address to copy is 1035 -run/0: its type is 2 -mem/0: location 1035 is 1036 -run/0: product 0 is 1036 -mem/0: storing 1036 in location 1046 -run/0: instruction clear-screen/5 -run/0: {name: "max", value: 3, type: 1, properties: ["max": "integer"]} <- length/28 {name: "buf", value: 2, type: 2-5-4, properties: ["buf": "address":"array":"character", "deref": ]} -mem/0: location 1046 is 1036 -mem/0: storing 6 in location 1047 -run/0: instruction clear-screen/6 -run/0: {name: "i", value: 4, type: 1, properties: ["i": "integer"]} <- copy/1 {name: "0", value: 0, type: 0, properties: ["0": "literal"]} -run/0: ingredient 0 is 0 -mem/0: storing 0 in location 1048 -run/0: instruction clear-screen/8 -run/0: {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "max", value: 3, type: 1, properties: ["max": "integer"]} -run/0: ingredient 0 is i -mem/0: location 1048 is 0 -run/0: ingredient 1 is max -mem/0: location 1047 is 6 -run/0: product 0 is 0 -mem/0: storing 0 in location 1049 -run/0: instruction clear-screen/9 -run/0: break-if/11 {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 4, type: , properties: ["": ]} -mem/0: location 1049 is 0 -run/0: ingredient 0 is 0 -run/0: jump-if fell through -run/0: instruction clear-screen/10 -run/0: {name: "c", value: 6, type: 2-4, properties: ["c": "address":"character"]} <- index-address/27 {name: "buf", value: 2, type: 2-5-4, properties: ["buf": "address":"array":"character", "deref": ]}, {name: "i", value: 4, type: 1, properties: ["i": "integer"]} -run/0: ingredient 0 is buf -mem/0: location 1046 is 1036 -run/0: ingredient 1 is {name: "i", value: 4, type: 1, properties: ["i": "integer"]} -mem/0: location 1048 is 0 -run/0: address to copy is 1037 -run/0: product 0 is 1037 -mem/0: storing 1037 in location 1050 -run/0: instruction clear-screen/11 -run/0: {name: "c", value: 6, type: 2-4, properties: ["c": "address":"character", "deref": ]} <- copy/1 {name: " ", value: 0, type: 0, properties: [" ": "literal-string"]} -run/0: ingredient 0 is -mem/0: location 1050 is 1037 -mem/0: storing 0 in location 1037 -run/0: instruction clear-screen/12 -run/0: {name: "i", value: 4, type: 1, properties: ["i": "integer"]} <- add/2 {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is i -mem/0: location 1048 is 0 -run/0: ingredient 1 is 1 -run/0: product 0 is 1 -mem/0: storing 1 in location 1048 -run/0: instruction clear-screen/13 -run/0: loop/10 {name: "", value: -6, type: , properties: ["": ]} -run/0: ingredient 0 is -6 -run/0: jumping to instruction 8 -run/0: instruction clear-screen/8 -run/0: {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "max", value: 3, type: 1, properties: ["max": "integer"]} -run/0: ingredient 0 is i -mem/0: location 1048 is 1 -run/0: ingredient 1 is max -mem/0: location 1047 is 6 -run/0: product 0 is 0 -mem/0: storing 0 in location 1049 -run/0: instruction clear-screen/9 -run/0: break-if/11 {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 4, type: , properties: ["": ]} -mem/0: location 1049 is 0 -run/0: ingredient 0 is 0 -run/0: jump-if fell through -run/0: instruction clear-screen/10 -run/0: {name: "c", value: 6, type: 2-4, properties: ["c": "address":"character"]} <- index-address/27 {name: "buf", value: 2, type: 2-5-4, properties: ["buf": "address":"array":"character", "deref": ]}, {name: "i", value: 4, type: 1, properties: ["i": "integer"]} -run/0: ingredient 0 is buf -mem/0: location 1046 is 1036 -run/0: ingredient 1 is {name: "i", value: 4, type: 1, properties: ["i": "integer"]} -mem/0: location 1048 is 1 -run/0: address to copy is 1038 -run/0: product 0 is 1038 -mem/0: storing 1038 in location 1050 -run/0: instruction clear-screen/11 -run/0: {name: "c", value: 6, type: 2-4, properties: ["c": "address":"character", "deref": ]} <- copy/1 {name: " ", value: 0, type: 0, properties: [" ": "literal-string"]} -run/0: ingredient 0 is -mem/0: location 1050 is 1038 -mem/0: storing 0 in location 1038 -run/0: instruction clear-screen/12 -run/0: {name: "i", value: 4, type: 1, properties: ["i": "integer"]} <- add/2 {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is i -mem/0: location 1048 is 1 -run/0: ingredient 1 is 1 -run/0: product 0 is 2 -mem/0: storing 2 in location 1048 -run/0: instruction clear-screen/13 -run/0: loop/10 {name: "", value: -6, type: , properties: ["": ]} -run/0: ingredient 0 is -6 -run/0: jumping to instruction 8 -run/0: instruction clear-screen/8 -run/0: {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "max", value: 3, type: 1, properties: ["max": "integer"]} -run/0: ingredient 0 is i -mem/0: location 1048 is 2 -run/0: ingredient 1 is max -mem/0: location 1047 is 6 -run/0: product 0 is 0 -mem/0: storing 0 in location 1049 -run/0: instruction clear-screen/9 -run/0: break-if/11 {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 4, type: , properties: ["": ]} -mem/0: location 1049 is 0 -run/0: ingredient 0 is 0 -run/0: jump-if fell through -run/0: instruction clear-screen/10 -run/0: {name: "c", value: 6, type: 2-4, properties: ["c": "address":"character"]} <- index-address/27 {name: "buf", value: 2, type: 2-5-4, properties: ["buf": "address":"array":"character", "deref": ]}, {name: "i", value: 4, type: 1, properties: ["i": "integer"]} -run/0: ingredient 0 is buf -mem/0: location 1046 is 1036 -run/0: ingredient 1 is {name: "i", value: 4, type: 1, properties: ["i": "integer"]} -mem/0: location 1048 is 2 -run/0: address to copy is 1039 -run/0: product 0 is 1039 -mem/0: storing 1039 in location 1050 -run/0: instruction clear-screen/11 -run/0: {name: "c", value: 6, type: 2-4, properties: ["c": "address":"character", "deref": ]} <- copy/1 {name: " ", value: 0, type: 0, properties: [" ": "literal-string"]} -run/0: ingredient 0 is -mem/0: location 1050 is 1039 -mem/0: storing 0 in location 1039 -run/0: instruction clear-screen/12 -run/0: {name: "i", value: 4, type: 1, properties: ["i": "integer"]} <- add/2 {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is i -mem/0: location 1048 is 2 -run/0: ingredient 1 is 1 -run/0: product 0 is 3 -mem/0: storing 3 in location 1048 -run/0: instruction clear-screen/13 -run/0: loop/10 {name: "", value: -6, type: , properties: ["": ]} -run/0: ingredient 0 is -6 -run/0: jumping to instruction 8 -run/0: instruction clear-screen/8 -run/0: {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "max", value: 3, type: 1, properties: ["max": "integer"]} -run/0: ingredient 0 is i -mem/0: location 1048 is 3 -run/0: ingredient 1 is max -mem/0: location 1047 is 6 -run/0: product 0 is 0 -mem/0: storing 0 in location 1049 -run/0: instruction clear-screen/9 -run/0: break-if/11 {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 4, type: , properties: ["": ]} -mem/0: location 1049 is 0 -run/0: ingredient 0 is 0 -run/0: jump-if fell through -run/0: instruction clear-screen/10 -run/0: {name: "c", value: 6, type: 2-4, properties: ["c": "address":"character"]} <- index-address/27 {name: "buf", value: 2, type: 2-5-4, properties: ["buf": "address":"array":"character", "deref": ]}, {name: "i", value: 4, type: 1, properties: ["i": "integer"]} -run/0: ingredient 0 is buf -mem/0: location 1046 is 1036 -run/0: ingredient 1 is {name: "i", value: 4, type: 1, properties: ["i": "integer"]} -mem/0: location 1048 is 3 -run/0: address to copy is 1040 -run/0: product 0 is 1040 -mem/0: storing 1040 in location 1050 -run/0: instruction clear-screen/11 -run/0: {name: "c", value: 6, type: 2-4, properties: ["c": "address":"character", "deref": ]} <- copy/1 {name: " ", value: 0, type: 0, properties: [" ": "literal-string"]} -run/0: ingredient 0 is -mem/0: location 1050 is 1040 -mem/0: storing 0 in location 1040 -run/0: instruction clear-screen/12 -run/0: {name: "i", value: 4, type: 1, properties: ["i": "integer"]} <- add/2 {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is i -mem/0: location 1048 is 3 -run/0: ingredient 1 is 1 -run/0: product 0 is 4 -mem/0: storing 4 in location 1048 -run/0: instruction clear-screen/13 -run/0: loop/10 {name: "", value: -6, type: , properties: ["": ]} -run/0: ingredient 0 is -6 -run/0: jumping to instruction 8 -run/0: instruction clear-screen/8 -run/0: {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "max", value: 3, type: 1, properties: ["max": "integer"]} -run/0: ingredient 0 is i -mem/0: location 1048 is 4 -run/0: ingredient 1 is max -mem/0: location 1047 is 6 -run/0: product 0 is 0 -mem/0: storing 0 in location 1049 -run/0: instruction clear-screen/9 -run/0: break-if/11 {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 4, type: , properties: ["": ]} -mem/0: location 1049 is 0 -run/0: ingredient 0 is 0 -run/0: jump-if fell through -run/0: instruction clear-screen/10 -run/0: {name: "c", value: 6, type: 2-4, properties: ["c": "address":"character"]} <- index-address/27 {name: "buf", value: 2, type: 2-5-4, properties: ["buf": "address":"array":"character", "deref": ]}, {name: "i", value: 4, type: 1, properties: ["i": "integer"]} -run/0: ingredient 0 is buf -mem/0: location 1046 is 1036 -run/0: ingredient 1 is {name: "i", value: 4, type: 1, properties: ["i": "integer"]} -mem/0: location 1048 is 4 -run/0: address to copy is 1041 -run/0: product 0 is 1041 -mem/0: storing 1041 in location 1050 -run/0: instruction clear-screen/11 -run/0: {name: "c", value: 6, type: 2-4, properties: ["c": "address":"character", "deref": ]} <- copy/1 {name: " ", value: 0, type: 0, properties: [" ": "literal-string"]} -run/0: ingredient 0 is -mem/0: location 1050 is 1041 -mem/0: storing 0 in location 1041 -run/0: instruction clear-screen/12 -run/0: {name: "i", value: 4, type: 1, properties: ["i": "integer"]} <- add/2 {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is i -mem/0: location 1048 is 4 -run/0: ingredient 1 is 1 -run/0: product 0 is 5 -mem/0: storing 5 in location 1048 -run/0: instruction clear-screen/13 -run/0: loop/10 {name: "", value: -6, type: , properties: ["": ]} -run/0: ingredient 0 is -6 -run/0: jumping to instruction 8 -run/0: instruction clear-screen/8 -run/0: {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "max", value: 3, type: 1, properties: ["max": "integer"]} -run/0: ingredient 0 is i -mem/0: location 1048 is 5 -run/0: ingredient 1 is max -mem/0: location 1047 is 6 -run/0: product 0 is 0 -mem/0: storing 0 in location 1049 -run/0: instruction clear-screen/9 -run/0: break-if/11 {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 4, type: , properties: ["": ]} -mem/0: location 1049 is 0 -run/0: ingredient 0 is 0 -run/0: jump-if fell through -run/0: instruction clear-screen/10 -run/0: {name: "c", value: 6, type: 2-4, properties: ["c": "address":"character"]} <- index-address/27 {name: "buf", value: 2, type: 2-5-4, properties: ["buf": "address":"array":"character", "deref": ]}, {name: "i", value: 4, type: 1, properties: ["i": "integer"]} -run/0: ingredient 0 is buf -mem/0: location 1046 is 1036 -run/0: ingredient 1 is {name: "i", value: 4, type: 1, properties: ["i": "integer"]} -mem/0: location 1048 is 5 -run/0: address to copy is 1042 -run/0: product 0 is 1042 -mem/0: storing 1042 in location 1050 -run/0: instruction clear-screen/11 -run/0: {name: "c", value: 6, type: 2-4, properties: ["c": "address":"character", "deref": ]} <- copy/1 {name: " ", value: 0, type: 0, properties: [" ": "literal-string"]} -run/0: ingredient 0 is -mem/0: location 1050 is 1042 -mem/0: storing 0 in location 1042 -run/0: instruction clear-screen/12 -run/0: {name: "i", value: 4, type: 1, properties: ["i": "integer"]} <- add/2 {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is i -mem/0: location 1048 is 5 -run/0: ingredient 1 is 1 -run/0: product 0 is 6 -mem/0: storing 6 in location 1048 -run/0: instruction clear-screen/13 -run/0: loop/10 {name: "", value: -6, type: , properties: ["": ]} -run/0: ingredient 0 is -6 -run/0: jumping to instruction 8 -run/0: instruction clear-screen/8 -run/0: {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "max", value: 3, type: 1, properties: ["max": "integer"]} -run/0: ingredient 0 is i -mem/0: location 1048 is 6 -run/0: ingredient 1 is max -mem/0: location 1047 is 6 -run/0: product 0 is 1 -mem/0: storing 1 in location 1049 -run/0: instruction clear-screen/9 -run/0: break-if/11 {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 4, type: , properties: ["": ]} -mem/0: location 1049 is 1 -run/0: ingredient 0 is 1 -run/0: ingredient 1 is -run/0: jumping to instruction 14 -run/0: instruction clear-screen/15 -run/0: reply/33 {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen", "same-as-ingredient": "0"]} -mem/0: location 1045 is 1031 -run/0: instruction init-fake-screen/14 -run/0: reply/33 {name: "result", value: 1, type: 2-11, properties: ["result": "address":"screen"]} -mem/0: location 1002 is 1031 -run/0: result 0 is 1031 -mem/0: storing 1031 in location 1 -run/0: instruction run1001/1 -run/0: {name: "1", value: 1, type: 2-11, properties: ["1": "address":"screen"]} <- print-character/117 {name: "1", value: 1, type: 2-11, properties: ["1": "address":"screen"]}, {name: "97", value: 97, type: 0, properties: ["97": "literal"]} -mem/0: location 1 is 1031 -run/0: instruction print-character/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/44 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} -mem/0: array size is 30 -mem/0: new alloc: 1074 -run/0: instruction print-character/1 -run/0: {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen"]} <- next-ingredient/30 -run/0: product 0 is 1031 -mem/0: storing 1031 in location 1076 -run/0: instruction print-character/2 -run/0: {name: "c", value: 2, type: 4, properties: ["c": "character"]} <- next-ingredient/30 -run/0: product 0 is 97 -mem/0: storing 97 in location 1077 -run/0: instruction print-character/4 -run/0: break-unless/12 {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen"]}, {name: "", value: 14, type: , properties: ["": ]} -mem/0: location 1076 is 1031 -run/0: ingredient 0 is 1031 -run/0: jump-unless fell through -run/0: instruction print-character/5 -run/0: {name: "row", value: 3, type: 2-1, properties: ["row": "address":"integer"]} <- get-address/25 {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen", "deref": ]}, {name: "cursor-row", value: 2, type: 0, properties: ["cursor-row": "offset"]} -run/0: ingredient 0 is x -mem/0: location 1076 is 1031 -run/0: ingredient 1 is cursor-row -run/0: address to copy is 1033 -run/0: product 0 is 1033 -mem/0: storing 1033 in location 1078 -run/0: instruction print-character/6 -run/0: {name: "column", value: 4, type: 2-1, properties: ["column": "address":"integer"]} <- get-address/25 {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen", "deref": ]}, {name: "cursor-column", value: 3, type: 0, properties: ["cursor-column": "offset"]} -run/0: ingredient 0 is x -mem/0: location 1076 is 1031 -run/0: ingredient 1 is cursor-column -run/0: address to copy is 1034 -run/0: product 0 is 1034 -mem/0: storing 1034 in location 1079 -run/0: instruction print-character/7 -run/0: {name: "width", value: 5, type: 1, properties: ["width": "integer"]} <- get/24 {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen", "deref": ]}, {name: "num-columns", value: 1, type: 0, properties: ["num-columns": "offset"]} -run/0: ingredient 0 is x -mem/0: location 1076 is 1031 -run/0: ingredient 1 is num-columns -run/0: address to copy is 1032 -run/0: its type is 1 -mem/0: location 1032 is 3 -run/0: product 0 is 3 -mem/0: storing 3 in location 1080 -run/0: instruction print-character/8 -run/0: {name: "index", value: 6, type: 1, properties: ["index": "integer"]} <- multiply/4 {name: "row", value: 3, type: 2-1, properties: ["row": "address":"integer", "deref": ]}, {name: "width", value: 5, type: 1, properties: ["width": "integer"]} -run/0: ingredient 0 is row -mem/0: location 1078 is 1033 -mem/0: location 1033 is 0 -run/0: ingredient 1 is width -mem/0: location 1080 is 3 -run/0: ingredient 1 is 3 -run/0: product 0 is 0 -mem/0: storing 0 in location 1081 -run/0: instruction print-character/9 -run/0: {name: "index", value: 6, type: 1, properties: ["index": "integer"]} <- add/2 {name: "index", value: 6, type: 1, properties: ["index": "integer"]}, {name: "column", value: 4, type: 2-1, properties: ["column": "address":"integer", "deref": ]} -run/0: ingredient 0 is index -mem/0: location 1081 is 0 -run/0: ingredient 1 is column -mem/0: location 1079 is 1034 -mem/0: location 1034 is 0 -run/0: product 0 is 0 -mem/0: storing 0 in location 1081 -run/0: instruction print-character/10 -run/0: {name: "buf", value: 7, type: 2-5-4, properties: ["buf": "address":"array":"character"]} <- get/24 {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen", "deref": ]}, {name: "data", value: 4, type: 0, properties: ["data": "offset"]} -run/0: ingredient 0 is x -mem/0: location 1076 is 1031 -run/0: ingredient 1 is data -run/0: address to copy is 1035 -run/0: its type is 2 -mem/0: location 1035 is 1036 -run/0: product 0 is 1036 -mem/0: storing 1036 in location 1082 -run/0: instruction print-character/11 -run/0: {name: "cursor", value: 8, type: 2-4, properties: ["cursor": "address":"character"]} <- index-address/27 {name: "buf", value: 7, type: 2-5-4, properties: ["buf": "address":"array":"character", "deref": ]}, {name: "index", value: 6, type: 1, properties: ["index": "integer"]} -run/0: ingredient 0 is buf -mem/0: location 1082 is 1036 -run/0: ingredient 1 is {name: "index", value: 6, type: 1, properties: ["index": "integer"]} -mem/0: location 1081 is 0 -run/0: address to copy is 1037 -run/0: product 0 is 1037 -mem/0: storing 1037 in location 1083 -run/0: instruction print-character/12 -run/0: {name: "cursor", value: 8, type: 2-4, properties: ["cursor": "address":"character", "deref": ]} <- copy/1 {name: "c", value: 2, type: 4, properties: ["c": "character"]} -run/0: ingredient 0 is c -mem/0: location 1077 is 97 -mem/0: location 1083 is 1037 -mem/0: storing 97 in location 1037 -run/0: instruction print-character/14 -run/0: {name: "at-right?", value: 9, type: 3, properties: ["at-right?": "boolean"]} <- equal/13 {name: "column", value: 4, type: 2-1, properties: ["column": "address":"integer", "deref": ]}, {name: "width", value: 5, type: 1, properties: ["width": "integer"]} -run/0: ingredient 0 is column -mem/0: location 1079 is 1034 -mem/0: location 1034 is 0 -run/0: ingredient 1 is width -mem/0: location 1080 is 3 -run/0: product 0 is 0 -mem/0: storing 0 in location 1084 -run/0: instruction print-character/15 -run/0: break-if/11 {name: "at-right?", value: 9, type: 3, properties: ["at-right?": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} -mem/0: location 1084 is 0 -run/0: ingredient 0 is 0 -run/0: jump-if fell through -run/0: instruction print-character/16 -run/0: {name: "column", value: 4, type: 2-1, properties: ["column": "address":"integer", "deref": ]} <- add/2 {name: "column", value: 4, type: 2-1, properties: ["column": "address":"integer", "deref": ]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is column -mem/0: location 1079 is 1034 -mem/0: location 1034 is 0 -run/0: ingredient 1 is 1 -run/0: product 0 is 1 -mem/0: location 1079 is 1034 -mem/0: storing 1 in location 1034 -run/0: instruction print-character/18 -run/0: reply/33 {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen", "same-as-ingredient": "0"]} -mem/0: location 1076 is 1031 -run/0: result 0 is 1031 -mem/0: storing 1031 in location 1 -run/0: instruction run1001/2 -run/0: {name: "2", value: 2, type: 2-5-4, properties: ["2": "address":"array":"character"]} <- get/24 {name: "1", value: 1, type: 2-11, properties: ["1": "address":"screen", "deref": ]}, {name: "data", value: 4, type: 0, properties: ["data": "offset"]} -run/0: ingredient 0 is 1 -mem/0: location 1 is 1031 -run/0: ingredient 1 is data -run/0: address to copy is 1035 -run/0: its type is 2 -mem/0: location 1035 is 1036 -run/0: product 0 is 1036 -mem/0: storing 1036 in location 2 -run/0: instruction run1001/3 -run/0: {name: "3", value: 3, type: 5-4, properties: ["3": "array":"character"]} <- copy/1 {name: "2", value: 2, type: 2-5-4, properties: ["2": "address":"array":"character", "deref": ]} -run/0: ingredient 0 is 2 -mem/0: location 2 is 1036 -mem/0: location 1036 is 6 -mem/0: location 1037 is 97 -mem/0: location 1038 is 0 -mem/0: location 1039 is 0 -mem/0: location 1040 is 0 -mem/0: location 1041 is 0 -mem/0: location 1042 is 0 -mem/0: storing 6 in location 3 -mem/0: storing 97 in location 4 -mem/0: storing 0 in location 5 -mem/0: storing 0 in location 6 -mem/0: storing 0 in location 7 -mem/0: storing 0 in location 8 -mem/0: storing 0 in location 9 -run/0: instruction print-character-at-top-left/1 -run/0: memory-should-contain/46 {name: " - 3 <- 6 # width*height - 4 <- 97 # 'a' - 5 <- 0 - ", value: 0, type: 0, properties: [" - 3 <- 6 # width*height - 4 <- 97 # 'a' - 5 <- 0 - ": "literal-string"]} -run/0: checking location 3 -run/0: checking location 4 -run/0: checking location 5 diff --git a/cpp/.traces/print-character-at-top-left2 b/cpp/.traces/print-character-at-top-left2 deleted file mode 100644 index 898384e3..00000000 --- a/cpp/.traces/print-character-at-top-left2 +++ /dev/null @@ -1,540 +0,0 @@ -parse/0: instruction: assume-screen -parse/0: ingredient: {name: "3", value: 0, type: 0, properties: ["3": "literal", "width": ]} -parse/0: ingredient: {name: "2", value: 0, type: 0, properties: ["2": "literal", "height": ]} -parse/0: instruction: run -parse/0: ingredient: {name: " - screen:address <- print-character screen:address, 97:literal # 'a' - ", value: 0, type: 0, properties: [" - screen:address <- print-character screen:address, 97:literal # 'a' - ": "literal-string"]} -parse/0: instruction: screen-should-contain -parse/0: ingredient: {name: " - .a . - . . - ", value: 0, type: 0, properties: [" - .a . - . . - ": "literal-string"]} -after-brace/0: recipe print-character-at-top-left2 -after-brace/0: assume-screen ... -after-brace/0: run ... -after-brace/0: screen-should-contain ... -new/0: routine allocated memory from 1000 to 101000 -schedule/0: print-character-at-top-left2 -run/0: instruction print-character-at-top-left2/0 -run/0: {name: "screen", value: 900, type: 2, properties: ["screen": "address"]} <- assume-screen/115 {name: "3", value: 3, type: 0, properties: ["3": "literal", "width": ]}, {name: "2", value: 2, type: 0, properties: ["2": "literal", "height": ]} -run/0: instruction init-fake-screen/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/44 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal", "capacity": ]} -mem/0: array size is 30 -mem/0: new alloc: 1000 -run/0: instruction init-fake-screen/1 -run/0: {name: "result", value: 1, type: 2-11, properties: ["result": "address":"screen"]} <- new/44 {name: "screen", value: 11, type: 0, properties: ["screen": "type"]} -mem/0: new alloc: 1031 -mem/0: storing 1031 in location 1002 -run/0: instruction init-fake-screen/2 -run/0: {name: "width", value: 2, type: 2-1, properties: ["width": "address":"integer"]} <- get-address/25 {name: "result", value: 1, type: 2-11, properties: ["result": "address":"screen", "deref": ]}, {name: "num-columns", value: 1, type: 0, properties: ["num-columns": "offset"]} -run/0: ingredient 0 is result -mem/0: location 1002 is 1031 -run/0: ingredient 1 is num-columns -run/0: address to copy is 1032 -run/0: product 0 is 1032 -mem/0: storing 1032 in location 1003 -run/0: instruction init-fake-screen/3 -run/0: {name: "width", value: 2, type: 2-1, properties: ["width": "address":"integer", "deref": ]} <- next-ingredient/30 -run/0: product 0 is 3 -mem/0: location 1003 is 1032 -mem/0: storing 3 in location 1032 -run/0: instruction init-fake-screen/4 -run/0: {name: "height", value: 3, type: 2-1, properties: ["height": "address":"integer"]} <- get-address/25 {name: "result", value: 1, type: 2-11, properties: ["result": "address":"screen", "deref": ]}, {name: "num-rows", value: 0, type: 0, properties: ["num-rows": "offset"]} -run/0: ingredient 0 is result -mem/0: location 1002 is 1031 -run/0: ingredient 1 is num-rows -run/0: address to copy is 1031 -run/0: product 0 is 1031 -mem/0: storing 1031 in location 1004 -run/0: instruction init-fake-screen/5 -run/0: {name: "height", value: 3, type: 2-1, properties: ["height": "address":"integer", "deref": ]} <- next-ingredient/30 -run/0: product 0 is 2 -mem/0: location 1004 is 1031 -mem/0: storing 2 in location 1031 -run/0: instruction init-fake-screen/6 -run/0: {name: "row", value: 4, type: 2-1, properties: ["row": "address":"integer"]} <- get-address/25 {name: "result", value: 1, type: 2-11, properties: ["result": "address":"screen", "deref": ]}, {name: "cursor-row", value: 2, type: 0, properties: ["cursor-row": "offset"]} -run/0: ingredient 0 is result -mem/0: location 1002 is 1031 -run/0: ingredient 1 is cursor-row -run/0: address to copy is 1033 -run/0: product 0 is 1033 -mem/0: storing 1033 in location 1005 -run/0: instruction init-fake-screen/7 -run/0: {name: "row", value: 4, type: 2-1, properties: ["row": "address":"integer", "deref": ]} <- copy/1 {name: "0", value: 0, type: 0, properties: ["0": "literal"]} -run/0: ingredient 0 is 0 -mem/0: location 1005 is 1033 -mem/0: storing 0 in location 1033 -run/0: instruction init-fake-screen/8 -run/0: {name: "column", value: 5, type: 2-1, properties: ["column": "address":"integer"]} <- get-address/25 {name: "result", value: 1, type: 2-11, properties: ["result": "address":"screen", "deref": ]}, {name: "cursor-column", value: 3, type: 0, properties: ["cursor-column": "offset"]} -run/0: ingredient 0 is result -mem/0: location 1002 is 1031 -run/0: ingredient 1 is cursor-column -run/0: address to copy is 1034 -run/0: product 0 is 1034 -mem/0: storing 1034 in location 1006 -run/0: instruction init-fake-screen/9 -run/0: {name: "column", value: 5, type: 2-1, properties: ["column": "address":"integer", "deref": ]} <- copy/1 {name: "0", value: 0, type: 0, properties: ["0": "literal"]} -run/0: ingredient 0 is 0 -mem/0: location 1006 is 1034 -mem/0: storing 0 in location 1034 -run/0: instruction init-fake-screen/10 -run/0: {name: "bufsize", value: 6, type: 1, properties: ["bufsize": "integer"]} <- multiply/4 {name: "width", value: 2, type: 2-1, properties: ["width": "address":"integer", "deref": ]}, {name: "height", value: 3, type: 2-1, properties: ["height": "address":"integer", "deref": ]} -run/0: ingredient 0 is width -mem/0: location 1003 is 1032 -mem/0: location 1032 is 3 -run/0: ingredient 1 is height -mem/0: location 1004 is 1031 -mem/0: location 1031 is 2 -run/0: ingredient 1 is 2 -run/0: product 0 is 6 -mem/0: storing 6 in location 1007 -run/0: instruction init-fake-screen/11 -run/0: {name: "buf", value: 7, type: 2-2-5-4, properties: ["buf": "address":"address":"array":"character"]} <- get-address/25 {name: "result", value: 1, type: 2-11, properties: ["result": "address":"screen", "deref": ]}, {name: "data", value: 4, type: 0, properties: ["data": "offset"]} -run/0: ingredient 0 is result -mem/0: location 1002 is 1031 -run/0: ingredient 1 is data -run/0: address to copy is 1035 -run/0: product 0 is 1035 -mem/0: storing 1035 in location 1008 -run/0: instruction init-fake-screen/12 -run/0: {name: "buf", value: 7, type: 2-2-5-4, properties: ["buf": "address":"address":"array":"character", "deref": ]} <- new/44 {name: "character", value: 0, type: 0, properties: ["character": "literal"]}, {name: "bufsize", value: 6, type: 1, properties: ["bufsize": "integer"]} -mem/0: location 1007 is 6 -mem/0: array size is 6 -mem/0: new alloc: 1036 -mem/0: location 1008 is 1035 -mem/0: storing 1036 in location 1035 -run/0: instruction init-fake-screen/13 -run/0: clear-screen/116 {name: "result", value: 1, type: 2-11, properties: ["result": "address":"screen"]} -mem/0: location 1002 is 1031 -run/0: instruction clear-screen/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/44 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} -mem/0: array size is 30 -mem/0: new alloc: 1043 -run/0: instruction clear-screen/1 -run/0: {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen"]} <- next-ingredient/30 -run/0: product 0 is 1031 -mem/0: storing 1031 in location 1045 -run/0: instruction clear-screen/3 -run/0: break-unless/12 {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen"]}, {name: "", value: 12, type: , properties: ["": ]} -mem/0: location 1045 is 1031 -run/0: ingredient 0 is 1031 -run/0: jump-unless fell through -run/0: instruction clear-screen/4 -run/0: {name: "buf", value: 2, type: 2-5-4, properties: ["buf": "address":"array":"character"]} <- get/24 {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen", "deref": ]}, {name: "data", value: 4, type: 0, properties: ["data": "offset"]} -run/0: ingredient 0 is x -mem/0: location 1045 is 1031 -run/0: ingredient 1 is data -run/0: address to copy is 1035 -run/0: its type is 2 -mem/0: location 1035 is 1036 -run/0: product 0 is 1036 -mem/0: storing 1036 in location 1046 -run/0: instruction clear-screen/5 -run/0: {name: "max", value: 3, type: 1, properties: ["max": "integer"]} <- length/28 {name: "buf", value: 2, type: 2-5-4, properties: ["buf": "address":"array":"character", "deref": ]} -mem/0: location 1046 is 1036 -mem/0: storing 6 in location 1047 -run/0: instruction clear-screen/6 -run/0: {name: "i", value: 4, type: 1, properties: ["i": "integer"]} <- copy/1 {name: "0", value: 0, type: 0, properties: ["0": "literal"]} -run/0: ingredient 0 is 0 -mem/0: storing 0 in location 1048 -run/0: instruction clear-screen/8 -run/0: {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "max", value: 3, type: 1, properties: ["max": "integer"]} -run/0: ingredient 0 is i -mem/0: location 1048 is 0 -run/0: ingredient 1 is max -mem/0: location 1047 is 6 -run/0: product 0 is 0 -mem/0: storing 0 in location 1049 -run/0: instruction clear-screen/9 -run/0: break-if/11 {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 4, type: , properties: ["": ]} -mem/0: location 1049 is 0 -run/0: ingredient 0 is 0 -run/0: jump-if fell through -run/0: instruction clear-screen/10 -run/0: {name: "c", value: 6, type: 2-4, properties: ["c": "address":"character"]} <- index-address/27 {name: "buf", value: 2, type: 2-5-4, properties: ["buf": "address":"array":"character", "deref": ]}, {name: "i", value: 4, type: 1, properties: ["i": "integer"]} -run/0: ingredient 0 is buf -mem/0: location 1046 is 1036 -run/0: ingredient 1 is {name: "i", value: 4, type: 1, properties: ["i": "integer"]} -mem/0: location 1048 is 0 -run/0: address to copy is 1037 -run/0: product 0 is 1037 -mem/0: storing 1037 in location 1050 -run/0: instruction clear-screen/11 -run/0: {name: "c", value: 6, type: 2-4, properties: ["c": "address":"character", "deref": ]} <- copy/1 {name: " ", value: 0, type: 0, properties: [" ": "literal-string"]} -run/0: ingredient 0 is -mem/0: location 1050 is 1037 -mem/0: storing 0 in location 1037 -run/0: instruction clear-screen/12 -run/0: {name: "i", value: 4, type: 1, properties: ["i": "integer"]} <- add/2 {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is i -mem/0: location 1048 is 0 -run/0: ingredient 1 is 1 -run/0: product 0 is 1 -mem/0: storing 1 in location 1048 -run/0: instruction clear-screen/13 -run/0: loop/10 {name: "", value: -6, type: , properties: ["": ]} -run/0: ingredient 0 is -6 -run/0: jumping to instruction 8 -run/0: instruction clear-screen/8 -run/0: {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "max", value: 3, type: 1, properties: ["max": "integer"]} -run/0: ingredient 0 is i -mem/0: location 1048 is 1 -run/0: ingredient 1 is max -mem/0: location 1047 is 6 -run/0: product 0 is 0 -mem/0: storing 0 in location 1049 -run/0: instruction clear-screen/9 -run/0: break-if/11 {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 4, type: , properties: ["": ]} -mem/0: location 1049 is 0 -run/0: ingredient 0 is 0 -run/0: jump-if fell through -run/0: instruction clear-screen/10 -run/0: {name: "c", value: 6, type: 2-4, properties: ["c": "address":"character"]} <- index-address/27 {name: "buf", value: 2, type: 2-5-4, properties: ["buf": "address":"array":"character", "deref": ]}, {name: "i", value: 4, type: 1, properties: ["i": "integer"]} -run/0: ingredient 0 is buf -mem/0: location 1046 is 1036 -run/0: ingredient 1 is {name: "i", value: 4, type: 1, properties: ["i": "integer"]} -mem/0: location 1048 is 1 -run/0: address to copy is 1038 -run/0: product 0 is 1038 -mem/0: storing 1038 in location 1050 -run/0: instruction clear-screen/11 -run/0: {name: "c", value: 6, type: 2-4, properties: ["c": "address":"character", "deref": ]} <- copy/1 {name: " ", value: 0, type: 0, properties: [" ": "literal-string"]} -run/0: ingredient 0 is -mem/0: location 1050 is 1038 -mem/0: storing 0 in location 1038 -run/0: instruction clear-screen/12 -run/0: {name: "i", value: 4, type: 1, properties: ["i": "integer"]} <- add/2 {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is i -mem/0: location 1048 is 1 -run/0: ingredient 1 is 1 -run/0: product 0 is 2 -mem/0: storing 2 in location 1048 -run/0: instruction clear-screen/13 -run/0: loop/10 {name: "", value: -6, type: , properties: ["": ]} -run/0: ingredient 0 is -6 -run/0: jumping to instruction 8 -run/0: instruction clear-screen/8 -run/0: {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "max", value: 3, type: 1, properties: ["max": "integer"]} -run/0: ingredient 0 is i -mem/0: location 1048 is 2 -run/0: ingredient 1 is max -mem/0: location 1047 is 6 -run/0: product 0 is 0 -mem/0: storing 0 in location 1049 -run/0: instruction clear-screen/9 -run/0: break-if/11 {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 4, type: , properties: ["": ]} -mem/0: location 1049 is 0 -run/0: ingredient 0 is 0 -run/0: jump-if fell through -run/0: instruction clear-screen/10 -run/0: {name: "c", value: 6, type: 2-4, properties: ["c": "address":"character"]} <- index-address/27 {name: "buf", value: 2, type: 2-5-4, properties: ["buf": "address":"array":"character", "deref": ]}, {name: "i", value: 4, type: 1, properties: ["i": "integer"]} -run/0: ingredient 0 is buf -mem/0: location 1046 is 1036 -run/0: ingredient 1 is {name: "i", value: 4, type: 1, properties: ["i": "integer"]} -mem/0: location 1048 is 2 -run/0: address to copy is 1039 -run/0: product 0 is 1039 -mem/0: storing 1039 in location 1050 -run/0: instruction clear-screen/11 -run/0: {name: "c", value: 6, type: 2-4, properties: ["c": "address":"character", "deref": ]} <- copy/1 {name: " ", value: 0, type: 0, properties: [" ": "literal-string"]} -run/0: ingredient 0 is -mem/0: location 1050 is 1039 -mem/0: storing 0 in location 1039 -run/0: instruction clear-screen/12 -run/0: {name: "i", value: 4, type: 1, properties: ["i": "integer"]} <- add/2 {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is i -mem/0: location 1048 is 2 -run/0: ingredient 1 is 1 -run/0: product 0 is 3 -mem/0: storing 3 in location 1048 -run/0: instruction clear-screen/13 -run/0: loop/10 {name: "", value: -6, type: , properties: ["": ]} -run/0: ingredient 0 is -6 -run/0: jumping to instruction 8 -run/0: instruction clear-screen/8 -run/0: {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "max", value: 3, type: 1, properties: ["max": "integer"]} -run/0: ingredient 0 is i -mem/0: location 1048 is 3 -run/0: ingredient 1 is max -mem/0: location 1047 is 6 -run/0: product 0 is 0 -mem/0: storing 0 in location 1049 -run/0: instruction clear-screen/9 -run/0: break-if/11 {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 4, type: , properties: ["": ]} -mem/0: location 1049 is 0 -run/0: ingredient 0 is 0 -run/0: jump-if fell through -run/0: instruction clear-screen/10 -run/0: {name: "c", value: 6, type: 2-4, properties: ["c": "address":"character"]} <- index-address/27 {name: "buf", value: 2, type: 2-5-4, properties: ["buf": "address":"array":"character", "deref": ]}, {name: "i", value: 4, type: 1, properties: ["i": "integer"]} -run/0: ingredient 0 is buf -mem/0: location 1046 is 1036 -run/0: ingredient 1 is {name: "i", value: 4, type: 1, properties: ["i": "integer"]} -mem/0: location 1048 is 3 -run/0: address to copy is 1040 -run/0: product 0 is 1040 -mem/0: storing 1040 in location 1050 -run/0: instruction clear-screen/11 -run/0: {name: "c", value: 6, type: 2-4, properties: ["c": "address":"character", "deref": ]} <- copy/1 {name: " ", value: 0, type: 0, properties: [" ": "literal-string"]} -run/0: ingredient 0 is -mem/0: location 1050 is 1040 -mem/0: storing 0 in location 1040 -run/0: instruction clear-screen/12 -run/0: {name: "i", value: 4, type: 1, properties: ["i": "integer"]} <- add/2 {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is i -mem/0: location 1048 is 3 -run/0: ingredient 1 is 1 -run/0: product 0 is 4 -mem/0: storing 4 in location 1048 -run/0: instruction clear-screen/13 -run/0: loop/10 {name: "", value: -6, type: , properties: ["": ]} -run/0: ingredient 0 is -6 -run/0: jumping to instruction 8 -run/0: instruction clear-screen/8 -run/0: {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "max", value: 3, type: 1, properties: ["max": "integer"]} -run/0: ingredient 0 is i -mem/0: location 1048 is 4 -run/0: ingredient 1 is max -mem/0: location 1047 is 6 -run/0: product 0 is 0 -mem/0: storing 0 in location 1049 -run/0: instruction clear-screen/9 -run/0: break-if/11 {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 4, type: , properties: ["": ]} -mem/0: location 1049 is 0 -run/0: ingredient 0 is 0 -run/0: jump-if fell through -run/0: instruction clear-screen/10 -run/0: {name: "c", value: 6, type: 2-4, properties: ["c": "address":"character"]} <- index-address/27 {name: "buf", value: 2, type: 2-5-4, properties: ["buf": "address":"array":"character", "deref": ]}, {name: "i", value: 4, type: 1, properties: ["i": "integer"]} -run/0: ingredient 0 is buf -mem/0: location 1046 is 1036 -run/0: ingredient 1 is {name: "i", value: 4, type: 1, properties: ["i": "integer"]} -mem/0: location 1048 is 4 -run/0: address to copy is 1041 -run/0: product 0 is 1041 -mem/0: storing 1041 in location 1050 -run/0: instruction clear-screen/11 -run/0: {name: "c", value: 6, type: 2-4, properties: ["c": "address":"character", "deref": ]} <- copy/1 {name: " ", value: 0, type: 0, properties: [" ": "literal-string"]} -run/0: ingredient 0 is -mem/0: location 1050 is 1041 -mem/0: storing 0 in location 1041 -run/0: instruction clear-screen/12 -run/0: {name: "i", value: 4, type: 1, properties: ["i": "integer"]} <- add/2 {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is i -mem/0: location 1048 is 4 -run/0: ingredient 1 is 1 -run/0: product 0 is 5 -mem/0: storing 5 in location 1048 -run/0: instruction clear-screen/13 -run/0: loop/10 {name: "", value: -6, type: , properties: ["": ]} -run/0: ingredient 0 is -6 -run/0: jumping to instruction 8 -run/0: instruction clear-screen/8 -run/0: {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "max", value: 3, type: 1, properties: ["max": "integer"]} -run/0: ingredient 0 is i -mem/0: location 1048 is 5 -run/0: ingredient 1 is max -mem/0: location 1047 is 6 -run/0: product 0 is 0 -mem/0: storing 0 in location 1049 -run/0: instruction clear-screen/9 -run/0: break-if/11 {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 4, type: , properties: ["": ]} -mem/0: location 1049 is 0 -run/0: ingredient 0 is 0 -run/0: jump-if fell through -run/0: instruction clear-screen/10 -run/0: {name: "c", value: 6, type: 2-4, properties: ["c": "address":"character"]} <- index-address/27 {name: "buf", value: 2, type: 2-5-4, properties: ["buf": "address":"array":"character", "deref": ]}, {name: "i", value: 4, type: 1, properties: ["i": "integer"]} -run/0: ingredient 0 is buf -mem/0: location 1046 is 1036 -run/0: ingredient 1 is {name: "i", value: 4, type: 1, properties: ["i": "integer"]} -mem/0: location 1048 is 5 -run/0: address to copy is 1042 -run/0: product 0 is 1042 -mem/0: storing 1042 in location 1050 -run/0: instruction clear-screen/11 -run/0: {name: "c", value: 6, type: 2-4, properties: ["c": "address":"character", "deref": ]} <- copy/1 {name: " ", value: 0, type: 0, properties: [" ": "literal-string"]} -run/0: ingredient 0 is -mem/0: location 1050 is 1042 -mem/0: storing 0 in location 1042 -run/0: instruction clear-screen/12 -run/0: {name: "i", value: 4, type: 1, properties: ["i": "integer"]} <- add/2 {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is i -mem/0: location 1048 is 5 -run/0: ingredient 1 is 1 -run/0: product 0 is 6 -mem/0: storing 6 in location 1048 -run/0: instruction clear-screen/13 -run/0: loop/10 {name: "", value: -6, type: , properties: ["": ]} -run/0: ingredient 0 is -6 -run/0: jumping to instruction 8 -run/0: instruction clear-screen/8 -run/0: {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "max", value: 3, type: 1, properties: ["max": "integer"]} -run/0: ingredient 0 is i -mem/0: location 1048 is 6 -run/0: ingredient 1 is max -mem/0: location 1047 is 6 -run/0: product 0 is 1 -mem/0: storing 1 in location 1049 -run/0: instruction clear-screen/9 -run/0: break-if/11 {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 4, type: , properties: ["": ]} -mem/0: location 1049 is 1 -run/0: ingredient 0 is 1 -run/0: ingredient 1 is -run/0: jumping to instruction 14 -run/0: instruction clear-screen/15 -run/0: reply/33 {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen", "same-as-ingredient": "0"]} -mem/0: location 1045 is 1031 -run/0: instruction init-fake-screen/14 -run/0: reply/33 {name: "result", value: 1, type: 2-11, properties: ["result": "address":"screen"]} -mem/0: location 1002 is 1031 -run/0: result 0 is 1031 -mem/0: storing 1031 in location 900 -run/0: instruction print-character-at-top-left2/1 -run/0: run/45 {name: " - screen:address <- print-character screen:address, 97:literal # 'a' - ", value: 0, type: 0, properties: [" - screen:address <- print-character screen:address, 97:literal # 'a' - ": "literal-string"]} -parse/0: instruction: print-character -parse/0: ingredient: {name: "screen", value: 0, type: 2, properties: ["screen": "address"]} -parse/0: ingredient: {name: "97", value: 0, type: 0, properties: ["97": "literal"]} -parse/0: product: {name: "screen", value: 0, type: 2, properties: ["screen": "address"]} -after-brace/0: recipe run1001 -after-brace/0: print-character ... -run/0: instruction run1001/0 -run/0: {name: "screen", value: 900, type: 2, properties: ["screen": "address"]} <- print-character/117 {name: "screen", value: 900, type: 2, properties: ["screen": "address"]}, {name: "97", value: 97, type: 0, properties: ["97": "literal"]} -mem/0: location 900 is 1031 -run/0: instruction print-character/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/44 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} -mem/0: array size is 30 -mem/0: new alloc: 1074 -run/0: instruction print-character/1 -run/0: {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen"]} <- next-ingredient/30 -run/0: product 0 is 1031 -mem/0: storing 1031 in location 1076 -run/0: instruction print-character/2 -run/0: {name: "c", value: 2, type: 4, properties: ["c": "character"]} <- next-ingredient/30 -run/0: product 0 is 97 -mem/0: storing 97 in location 1077 -run/0: instruction print-character/4 -run/0: break-unless/12 {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen"]}, {name: "", value: 14, type: , properties: ["": ]} -mem/0: location 1076 is 1031 -run/0: ingredient 0 is 1031 -run/0: jump-unless fell through -run/0: instruction print-character/5 -run/0: {name: "row", value: 3, type: 2-1, properties: ["row": "address":"integer"]} <- get-address/25 {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen", "deref": ]}, {name: "cursor-row", value: 2, type: 0, properties: ["cursor-row": "offset"]} -run/0: ingredient 0 is x -mem/0: location 1076 is 1031 -run/0: ingredient 1 is cursor-row -run/0: address to copy is 1033 -run/0: product 0 is 1033 -mem/0: storing 1033 in location 1078 -run/0: instruction print-character/6 -run/0: {name: "column", value: 4, type: 2-1, properties: ["column": "address":"integer"]} <- get-address/25 {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen", "deref": ]}, {name: "cursor-column", value: 3, type: 0, properties: ["cursor-column": "offset"]} -run/0: ingredient 0 is x -mem/0: location 1076 is 1031 -run/0: ingredient 1 is cursor-column -run/0: address to copy is 1034 -run/0: product 0 is 1034 -mem/0: storing 1034 in location 1079 -run/0: instruction print-character/7 -run/0: {name: "width", value: 5, type: 1, properties: ["width": "integer"]} <- get/24 {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen", "deref": ]}, {name: "num-columns", value: 1, type: 0, properties: ["num-columns": "offset"]} -run/0: ingredient 0 is x -mem/0: location 1076 is 1031 -run/0: ingredient 1 is num-columns -run/0: address to copy is 1032 -run/0: its type is 1 -mem/0: location 1032 is 3 -run/0: product 0 is 3 -mem/0: storing 3 in location 1080 -run/0: instruction print-character/8 -run/0: {name: "index", value: 6, type: 1, properties: ["index": "integer"]} <- multiply/4 {name: "row", value: 3, type: 2-1, properties: ["row": "address":"integer", "deref": ]}, {name: "width", value: 5, type: 1, properties: ["width": "integer"]} -run/0: ingredient 0 is row -mem/0: location 1078 is 1033 -mem/0: location 1033 is 0 -run/0: ingredient 1 is width -mem/0: location 1080 is 3 -run/0: ingredient 1 is 3 -run/0: product 0 is 0 -mem/0: storing 0 in location 1081 -run/0: instruction print-character/9 -run/0: {name: "index", value: 6, type: 1, properties: ["index": "integer"]} <- add/2 {name: "index", value: 6, type: 1, properties: ["index": "integer"]}, {name: "column", value: 4, type: 2-1, properties: ["column": "address":"integer", "deref": ]} -run/0: ingredient 0 is index -mem/0: location 1081 is 0 -run/0: ingredient 1 is column -mem/0: location 1079 is 1034 -mem/0: location 1034 is 0 -run/0: product 0 is 0 -mem/0: storing 0 in location 1081 -run/0: instruction print-character/10 -run/0: {name: "buf", value: 7, type: 2-5-4, properties: ["buf": "address":"array":"character"]} <- get/24 {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen", "deref": ]}, {name: "data", value: 4, type: 0, properties: ["data": "offset"]} -run/0: ingredient 0 is x -mem/0: location 1076 is 1031 -run/0: ingredient 1 is data -run/0: address to copy is 1035 -run/0: its type is 2 -mem/0: location 1035 is 1036 -run/0: product 0 is 1036 -mem/0: storing 1036 in location 1082 -run/0: instruction print-character/11 -run/0: {name: "cursor", value: 8, type: 2-4, properties: ["cursor": "address":"character"]} <- index-address/27 {name: "buf", value: 7, type: 2-5-4, properties: ["buf": "address":"array":"character", "deref": ]}, {name: "index", value: 6, type: 1, properties: ["index": "integer"]} -run/0: ingredient 0 is buf -mem/0: location 1082 is 1036 -run/0: ingredient 1 is {name: "index", value: 6, type: 1, properties: ["index": "integer"]} -mem/0: location 1081 is 0 -run/0: address to copy is 1037 -run/0: product 0 is 1037 -mem/0: storing 1037 in location 1083 -run/0: instruction print-character/12 -run/0: {name: "cursor", value: 8, type: 2-4, properties: ["cursor": "address":"character", "deref": ]} <- copy/1 {name: "c", value: 2, type: 4, properties: ["c": "character"]} -run/0: ingredient 0 is c -mem/0: location 1077 is 97 -mem/0: location 1083 is 1037 -mem/0: storing 97 in location 1037 -run/0: instruction print-character/14 -run/0: {name: "at-right?", value: 9, type: 3, properties: ["at-right?": "boolean"]} <- equal/13 {name: "column", value: 4, type: 2-1, properties: ["column": "address":"integer", "deref": ]}, {name: "width", value: 5, type: 1, properties: ["width": "integer"]} -run/0: ingredient 0 is column -mem/0: location 1079 is 1034 -mem/0: location 1034 is 0 -run/0: ingredient 1 is width -mem/0: location 1080 is 3 -run/0: product 0 is 0 -mem/0: storing 0 in location 1084 -run/0: instruction print-character/15 -run/0: break-if/11 {name: "at-right?", value: 9, type: 3, properties: ["at-right?": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} -mem/0: location 1084 is 0 -run/0: ingredient 0 is 0 -run/0: jump-if fell through -run/0: instruction print-character/16 -run/0: {name: "column", value: 4, type: 2-1, properties: ["column": "address":"integer", "deref": ]} <- add/2 {name: "column", value: 4, type: 2-1, properties: ["column": "address":"integer", "deref": ]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is column -mem/0: location 1079 is 1034 -mem/0: location 1034 is 0 -run/0: ingredient 1 is 1 -run/0: product 0 is 1 -mem/0: location 1079 is 1034 -mem/0: storing 1 in location 1034 -run/0: instruction print-character/18 -run/0: reply/33 {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen", "same-as-ingredient": "0"]} -mem/0: location 1076 is 1031 -run/0: result 0 is 1031 -mem/0: storing 1031 in location 900 -run/0: instruction print-character-at-top-left2/2 -run/0: screen-should-contain/62 {name: " - .a . - . . - ", value: 0, type: 0, properties: [" - .a . - . . - ": "literal-string"]} -run/0: checking screen size at 1036 -run/0: checking location 1037 -run/0: checking location 1038 -run/0: checking location 1039 -run/0: checking location 1040 -run/0: checking location 1041 -run/0: checking location 1042 diff --git a/cpp/.traces/read-key-in-mu b/cpp/.traces/read-key-in-mu deleted file mode 100644 index c1b0b274..00000000 --- a/cpp/.traces/read-key-in-mu +++ /dev/null @@ -1,465 +0,0 @@ -parse/0: instruction: assume-keyboard -parse/0: ingredient: {name: "abc", value: 0, type: 0, properties: ["abc": "literal-string"]} -parse/0: instruction: run -parse/0: ingredient: {name: " - 1:character, 2:boolean, keyboard:address <- read-key keyboard:address - 3:character, 4:boolean, keyboard:address <- read-key keyboard:address - 5:character, 6:boolean, keyboard:address <- read-key keyboard:address - 7:character, 8:boolean, keyboard:address <- read-key keyboard:address - ", value: 0, type: 0, properties: [" - 1:character, 2:boolean, keyboard:address <- read-key keyboard:address - 3:character, 4:boolean, keyboard:address <- read-key keyboard:address - 5:character, 6:boolean, keyboard:address <- read-key keyboard:address - 7:character, 8:boolean, keyboard:address <- read-key keyboard:address - ": "literal-string"]} -parse/0: instruction: memory-should-contain -parse/0: ingredient: {name: " - 1 <- 97 # 'a' - 2 <- 1 # first read-key call found a character - 3 <- 98 # 'b' - 4 <- 1 # second read-key call found a character - 5 <- 99 # 'c' - 6 <- 1 # third read-key call found a character - 7 <- 0 - 8 <- 0 # fourth read-key call didn't find a character - ", value: 0, type: 0, properties: [" - 1 <- 97 # 'a' - 2 <- 1 # first read-key call found a character - 3 <- 98 # 'b' - 4 <- 1 # second read-key call found a character - 5 <- 99 # 'c' - 6 <- 1 # third read-key call found a character - 7 <- 0 - 8 <- 0 # fourth read-key call didn't find a character - ": "literal-string"]} -new/0: abc -> 0 -after-brace/0: recipe read-key-in-mu -after-brace/0: assume-keyboard ... -after-brace/0: assume-keyboard ... -after-brace/0: run ... -after-brace/0: memory-should-contain ... -new/0: routine allocated memory from 1000 to 101000 -schedule/0: read-key-in-mu -run/0: instruction read-key-in-mu/0 -run/0: {name: "keyboard", value: 901, type: 2, properties: ["keyboard": "address"]} <- assume-keyboard/44 {name: "abc", value: 0, type: 0, properties: ["abc": "literal-string"]} -mem/0: storing 1000 in location 901 -run/0: instruction read-key-in-mu/1 -run/0: {name: "keyboard", value: 901, type: 2, properties: ["keyboard": "address"]} <- assume-keyboard/125 {name: "keyboard", value: 901, type: 2, properties: ["keyboard": "address"]} -mem/0: location 901 is 1000 -run/0: instruction init-fake-keyboard/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/44 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} -mem/0: array size is 30 -mem/0: new alloc: 1004 -run/0: instruction init-fake-keyboard/1 -run/0: {name: "result", value: 1, type: 2-12, properties: ["result": "address":"keyboard"]} <- new/44 {name: "keyboard", value: 12, type: 0, properties: ["keyboard": "type"]} -mem/0: new alloc: 1035 -mem/0: storing 1035 in location 1006 -run/0: instruction init-fake-keyboard/2 -run/0: {name: "buf", value: 2, type: 2-2-5-4, properties: ["buf": "address":"address":"array":"character"]} <- get-address/25 {name: "result", value: 1, type: 2-12, properties: ["result": "address":"keyboard", "deref": ]}, {name: "data", value: 1, type: 0, properties: ["data": "offset"]} -run/0: ingredient 0 is result -mem/0: location 1006 is 1035 -run/0: ingredient 1 is data -run/0: address to copy is 1036 -run/0: product 0 is 1036 -mem/0: storing 1036 in location 1007 -run/0: instruction init-fake-keyboard/3 -run/0: {name: "buf", value: 2, type: 2-2-5-4, properties: ["buf": "address":"address":"array":"character", "deref": ]} <- next-ingredient/30 -run/0: product 0 is 1000 -mem/0: location 1007 is 1036 -mem/0: storing 1000 in location 1036 -run/0: instruction init-fake-keyboard/4 -run/0: {name: "idx", value: 3, type: 2-1, properties: ["idx": "address":"integer"]} <- get-address/25 {name: "result", value: 1, type: 2-12, properties: ["result": "address":"keyboard", "deref": ]}, {name: "index", value: 0, type: 0, properties: ["index": "offset"]} -run/0: ingredient 0 is result -mem/0: location 1006 is 1035 -run/0: ingredient 1 is index -run/0: address to copy is 1035 -run/0: product 0 is 1035 -mem/0: storing 1035 in location 1008 -run/0: instruction init-fake-keyboard/5 -run/0: {name: "idx", value: 3, type: 2-1, properties: ["idx": "address":"integer", "deref": ]} <- copy/1 {name: "0", value: 0, type: 0, properties: ["0": "literal"]} -run/0: ingredient 0 is 0 -mem/0: location 1008 is 1035 -mem/0: storing 0 in location 1035 -run/0: instruction init-fake-keyboard/6 -run/0: reply/33 {name: "result", value: 1, type: 2-12, properties: ["result": "address":"keyboard"]} -mem/0: location 1006 is 1035 -run/0: result 0 is 1035 -mem/0: storing 1035 in location 901 -run/0: instruction read-key-in-mu/2 -run/0: run/45 {name: " - 1:character, 2:boolean, keyboard:address <- read-key keyboard:address - 3:character, 4:boolean, keyboard:address <- read-key keyboard:address - 5:character, 6:boolean, keyboard:address <- read-key keyboard:address - 7:character, 8:boolean, keyboard:address <- read-key keyboard:address - ", value: 0, type: 0, properties: [" - 1:character, 2:boolean, keyboard:address <- read-key keyboard:address - 3:character, 4:boolean, keyboard:address <- read-key keyboard:address - 5:character, 6:boolean, keyboard:address <- read-key keyboard:address - 7:character, 8:boolean, keyboard:address <- read-key keyboard:address - ": "literal-string"]} -parse/0: instruction: read-key -parse/0: ingredient: {name: "keyboard", value: 0, type: 2, properties: ["keyboard": "address"]} -parse/0: product: {name: "1", value: 0, type: 4, properties: ["1": "character"]} -parse/0: product: {name: "2", value: 0, type: 3, properties: ["2": "boolean"]} -parse/0: product: {name: "keyboard", value: 0, type: 2, properties: ["keyboard": "address"]} -parse/0: instruction: read-key -parse/0: ingredient: {name: "keyboard", value: 0, type: 2, properties: ["keyboard": "address"]} -parse/0: product: {name: "3", value: 0, type: 4, properties: ["3": "character"]} -parse/0: product: {name: "4", value: 0, type: 3, properties: ["4": "boolean"]} -parse/0: product: {name: "keyboard", value: 0, type: 2, properties: ["keyboard": "address"]} -parse/0: instruction: read-key -parse/0: ingredient: {name: "keyboard", value: 0, type: 2, properties: ["keyboard": "address"]} -parse/0: product: {name: "5", value: 0, type: 4, properties: ["5": "character"]} -parse/0: product: {name: "6", value: 0, type: 3, properties: ["6": "boolean"]} -parse/0: product: {name: "keyboard", value: 0, type: 2, properties: ["keyboard": "address"]} -parse/0: instruction: read-key -parse/0: ingredient: {name: "keyboard", value: 0, type: 2, properties: ["keyboard": "address"]} -parse/0: product: {name: "7", value: 0, type: 4, properties: ["7": "character"]} -parse/0: product: {name: "8", value: 0, type: 3, properties: ["8": "boolean"]} -parse/0: product: {name: "keyboard", value: 0, type: 2, properties: ["keyboard": "address"]} -after-brace/0: recipe run1001 -after-brace/0: read-key ... -after-brace/0: read-key ... -after-brace/0: read-key ... -after-brace/0: read-key ... -run/0: instruction run1001/0 -run/0: {name: "1", value: 1, type: 4, properties: ["1": "character"]}, {name: "2", value: 2, type: 3, properties: ["2": "boolean"]}, {name: "keyboard", value: 901, type: 2, properties: ["keyboard": "address"]} <- read-key/126 {name: "keyboard", value: 901, type: 2, properties: ["keyboard": "address"]} -mem/0: location 901 is 1035 -run/0: instruction read-key/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/44 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} -mem/0: array size is 30 -mem/0: new alloc: 1037 -run/0: instruction read-key/1 -run/0: {name: "x", value: 1, type: 2-12, properties: ["x": "address":"keyboard"]} <- next-ingredient/30 -run/0: product 0 is 1035 -mem/0: storing 1035 in location 1039 -run/0: instruction read-key/3 -run/0: break-unless/12 {name: "x", value: 1, type: 2-12, properties: ["x": "address":"keyboard"]}, {name: "", value: 11, type: , properties: ["": ]} -mem/0: location 1039 is 1035 -run/0: ingredient 0 is 1035 -run/0: jump-unless fell through -run/0: instruction read-key/4 -run/0: {name: "idx", value: 2, type: 2-1, properties: ["idx": "address":"integer"]} <- get-address/25 {name: "x", value: 1, type: 2-12, properties: ["x": "address":"keyboard", "deref": ]}, {name: "index", value: 0, type: 0, properties: ["index": "offset"]} -run/0: ingredient 0 is x -mem/0: location 1039 is 1035 -run/0: ingredient 1 is index -run/0: address to copy is 1035 -run/0: product 0 is 1035 -mem/0: storing 1035 in location 1040 -run/0: instruction read-key/5 -run/0: {name: "buf", value: 3, type: 2-5-4, properties: ["buf": "address":"array":"character"]} <- get/24 {name: "x", value: 1, type: 2-12, properties: ["x": "address":"keyboard", "deref": ]}, {name: "data", value: 1, type: 0, properties: ["data": "offset"]} -run/0: ingredient 0 is x -mem/0: location 1039 is 1035 -run/0: ingredient 1 is data -run/0: address to copy is 1036 -run/0: its type is 2 -mem/0: location 1036 is 1000 -run/0: product 0 is 1000 -mem/0: storing 1000 in location 1041 -run/0: instruction read-key/6 -run/0: {name: "max", value: 4, type: 1, properties: ["max": "integer"]} <- length/28 {name: "buf", value: 3, type: 2-5-4, properties: ["buf": "address":"array":"character", "deref": ]} -mem/0: location 1041 is 1000 -mem/0: storing 3 in location 1042 -run/0: instruction read-key/8 -run/0: {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]} <- greater-or-equal/16 {name: "idx", value: 2, type: 2-1, properties: ["idx": "address":"integer", "deref": ]}, {name: "max", value: 4, type: 1, properties: ["max": "integer"]} -run/0: ingredient 0 is idx -mem/0: location 1040 is 1035 -mem/0: location 1035 is 0 -run/0: ingredient 1 is max -mem/0: location 1042 is 3 -run/0: product 0 is 0 -mem/0: storing 0 in location 1043 -run/0: instruction read-key/9 -run/0: break-unless/12 {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} -mem/0: location 1043 is 0 -run/0: ingredient 0 is 0 -run/0: ingredient 1 is -run/0: jumping to instruction 11 -run/0: instruction read-key/12 -run/0: {name: "c", value: 6, type: 4, properties: ["c": "character"]} <- index/26 {name: "buf", value: 3, type: 2-5-4, properties: ["buf": "address":"array":"character", "deref": ]}, {name: "idx", value: 2, type: 2-1, properties: ["idx": "address":"integer", "deref": ]} -run/0: ingredient 0 is {name: "buf", value: 3, type: 2-5-4, properties: ["buf": "address":"array":"character", "deref": ]} -mem/0: location 1041 is 1000 -run/0: ingredient 1 is {name: "idx", value: 2, type: 2-1, properties: ["idx": "address":"integer", "deref": ]} -mem/0: location 1040 is 1035 -mem/0: location 1035 is 0 -run/0: address to copy is 1001 -run/0: its type is 4 -mem/0: location 1001 is 97 -run/0: product 0 is 97 -mem/0: storing 97 in location 1044 -run/0: instruction read-key/13 -run/0: {name: "idx", value: 2, type: 2-1, properties: ["idx": "address":"integer", "deref": ]} <- add/2 {name: "idx", value: 2, type: 2-1, properties: ["idx": "address":"integer", "deref": ]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is idx -mem/0: location 1040 is 1035 -mem/0: location 1035 is 0 -run/0: ingredient 1 is 1 -run/0: product 0 is 1 -mem/0: location 1040 is 1035 -mem/0: storing 1 in location 1035 -run/0: instruction read-key/14 -run/0: reply/33 {name: "c", value: 6, type: 4, properties: ["c": "character"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal", "found": ]}, {name: "x", value: 1, type: 2-12, properties: ["x": "address":"keyboard", "same-as-ingredient": "0"]} -mem/0: location 1044 is 97 -mem/0: location 1039 is 1035 -run/0: result 0 is 97 -mem/0: storing 97 in location 1 -run/0: result 1 is 1 -mem/0: storing 1 in location 2 -run/0: result 2 is 1035 -mem/0: storing 1035 in location 901 -run/0: instruction run1001/1 -run/0: {name: "3", value: 3, type: 4, properties: ["3": "character"]}, {name: "4", value: 4, type: 3, properties: ["4": "boolean"]}, {name: "keyboard", value: 901, type: 2, properties: ["keyboard": "address"]} <- read-key/126 {name: "keyboard", value: 901, type: 2, properties: ["keyboard": "address"]} -mem/0: location 901 is 1035 -run/0: instruction read-key/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/44 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} -mem/0: array size is 30 -mem/0: new alloc: 1068 -run/0: instruction read-key/1 -run/0: {name: "x", value: 1, type: 2-12, properties: ["x": "address":"keyboard"]} <- next-ingredient/30 -run/0: product 0 is 1035 -mem/0: storing 1035 in location 1070 -run/0: instruction read-key/3 -run/0: break-unless/12 {name: "x", value: 1, type: 2-12, properties: ["x": "address":"keyboard"]}, {name: "", value: 11, type: , properties: ["": ]} -mem/0: location 1070 is 1035 -run/0: ingredient 0 is 1035 -run/0: jump-unless fell through -run/0: instruction read-key/4 -run/0: {name: "idx", value: 2, type: 2-1, properties: ["idx": "address":"integer"]} <- get-address/25 {name: "x", value: 1, type: 2-12, properties: ["x": "address":"keyboard", "deref": ]}, {name: "index", value: 0, type: 0, properties: ["index": "offset"]} -run/0: ingredient 0 is x -mem/0: location 1070 is 1035 -run/0: ingredient 1 is index -run/0: address to copy is 1035 -run/0: product 0 is 1035 -mem/0: storing 1035 in location 1071 -run/0: instruction read-key/5 -run/0: {name: "buf", value: 3, type: 2-5-4, properties: ["buf": "address":"array":"character"]} <- get/24 {name: "x", value: 1, type: 2-12, properties: ["x": "address":"keyboard", "deref": ]}, {name: "data", value: 1, type: 0, properties: ["data": "offset"]} -run/0: ingredient 0 is x -mem/0: location 1070 is 1035 -run/0: ingredient 1 is data -run/0: address to copy is 1036 -run/0: its type is 2 -mem/0: location 1036 is 1000 -run/0: product 0 is 1000 -mem/0: storing 1000 in location 1072 -run/0: instruction read-key/6 -run/0: {name: "max", value: 4, type: 1, properties: ["max": "integer"]} <- length/28 {name: "buf", value: 3, type: 2-5-4, properties: ["buf": "address":"array":"character", "deref": ]} -mem/0: location 1072 is 1000 -mem/0: storing 3 in location 1073 -run/0: instruction read-key/8 -run/0: {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]} <- greater-or-equal/16 {name: "idx", value: 2, type: 2-1, properties: ["idx": "address":"integer", "deref": ]}, {name: "max", value: 4, type: 1, properties: ["max": "integer"]} -run/0: ingredient 0 is idx -mem/0: location 1071 is 1035 -mem/0: location 1035 is 1 -run/0: ingredient 1 is max -mem/0: location 1073 is 3 -run/0: product 0 is 0 -mem/0: storing 0 in location 1074 -run/0: instruction read-key/9 -run/0: break-unless/12 {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} -mem/0: location 1074 is 0 -run/0: ingredient 0 is 0 -run/0: ingredient 1 is -run/0: jumping to instruction 11 -run/0: instruction read-key/12 -run/0: {name: "c", value: 6, type: 4, properties: ["c": "character"]} <- index/26 {name: "buf", value: 3, type: 2-5-4, properties: ["buf": "address":"array":"character", "deref": ]}, {name: "idx", value: 2, type: 2-1, properties: ["idx": "address":"integer", "deref": ]} -run/0: ingredient 0 is {name: "buf", value: 3, type: 2-5-4, properties: ["buf": "address":"array":"character", "deref": ]} -mem/0: location 1072 is 1000 -run/0: ingredient 1 is {name: "idx", value: 2, type: 2-1, properties: ["idx": "address":"integer", "deref": ]} -mem/0: location 1071 is 1035 -mem/0: location 1035 is 1 -run/0: address to copy is 1002 -run/0: its type is 4 -mem/0: location 1002 is 98 -run/0: product 0 is 98 -mem/0: storing 98 in location 1075 -run/0: instruction read-key/13 -run/0: {name: "idx", value: 2, type: 2-1, properties: ["idx": "address":"integer", "deref": ]} <- add/2 {name: "idx", value: 2, type: 2-1, properties: ["idx": "address":"integer", "deref": ]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is idx -mem/0: location 1071 is 1035 -mem/0: location 1035 is 1 -run/0: ingredient 1 is 1 -run/0: product 0 is 2 -mem/0: location 1071 is 1035 -mem/0: storing 2 in location 1035 -run/0: instruction read-key/14 -run/0: reply/33 {name: "c", value: 6, type: 4, properties: ["c": "character"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal", "found": ]}, {name: "x", value: 1, type: 2-12, properties: ["x": "address":"keyboard", "same-as-ingredient": "0"]} -mem/0: location 1075 is 98 -mem/0: location 1070 is 1035 -run/0: result 0 is 98 -mem/0: storing 98 in location 3 -run/0: result 1 is 1 -mem/0: storing 1 in location 4 -run/0: result 2 is 1035 -mem/0: storing 1035 in location 901 -run/0: instruction run1001/2 -run/0: {name: "5", value: 5, type: 4, properties: ["5": "character"]}, {name: "6", value: 6, type: 3, properties: ["6": "boolean"]}, {name: "keyboard", value: 901, type: 2, properties: ["keyboard": "address"]} <- read-key/126 {name: "keyboard", value: 901, type: 2, properties: ["keyboard": "address"]} -mem/0: location 901 is 1035 -run/0: instruction read-key/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/44 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} -mem/0: array size is 30 -mem/0: new alloc: 1099 -run/0: instruction read-key/1 -run/0: {name: "x", value: 1, type: 2-12, properties: ["x": "address":"keyboard"]} <- next-ingredient/30 -run/0: product 0 is 1035 -mem/0: storing 1035 in location 1101 -run/0: instruction read-key/3 -run/0: break-unless/12 {name: "x", value: 1, type: 2-12, properties: ["x": "address":"keyboard"]}, {name: "", value: 11, type: , properties: ["": ]} -mem/0: location 1101 is 1035 -run/0: ingredient 0 is 1035 -run/0: jump-unless fell through -run/0: instruction read-key/4 -run/0: {name: "idx", value: 2, type: 2-1, properties: ["idx": "address":"integer"]} <- get-address/25 {name: "x", value: 1, type: 2-12, properties: ["x": "address":"keyboard", "deref": ]}, {name: "index", value: 0, type: 0, properties: ["index": "offset"]} -run/0: ingredient 0 is x -mem/0: location 1101 is 1035 -run/0: ingredient 1 is index -run/0: address to copy is 1035 -run/0: product 0 is 1035 -mem/0: storing 1035 in location 1102 -run/0: instruction read-key/5 -run/0: {name: "buf", value: 3, type: 2-5-4, properties: ["buf": "address":"array":"character"]} <- get/24 {name: "x", value: 1, type: 2-12, properties: ["x": "address":"keyboard", "deref": ]}, {name: "data", value: 1, type: 0, properties: ["data": "offset"]} -run/0: ingredient 0 is x -mem/0: location 1101 is 1035 -run/0: ingredient 1 is data -run/0: address to copy is 1036 -run/0: its type is 2 -mem/0: location 1036 is 1000 -run/0: product 0 is 1000 -mem/0: storing 1000 in location 1103 -run/0: instruction read-key/6 -run/0: {name: "max", value: 4, type: 1, properties: ["max": "integer"]} <- length/28 {name: "buf", value: 3, type: 2-5-4, properties: ["buf": "address":"array":"character", "deref": ]} -mem/0: location 1103 is 1000 -mem/0: storing 3 in location 1104 -run/0: instruction read-key/8 -run/0: {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]} <- greater-or-equal/16 {name: "idx", value: 2, type: 2-1, properties: ["idx": "address":"integer", "deref": ]}, {name: "max", value: 4, type: 1, properties: ["max": "integer"]} -run/0: ingredient 0 is idx -mem/0: location 1102 is 1035 -mem/0: location 1035 is 2 -run/0: ingredient 1 is max -mem/0: location 1104 is 3 -run/0: product 0 is 0 -mem/0: storing 0 in location 1105 -run/0: instruction read-key/9 -run/0: break-unless/12 {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} -mem/0: location 1105 is 0 -run/0: ingredient 0 is 0 -run/0: ingredient 1 is -run/0: jumping to instruction 11 -run/0: instruction read-key/12 -run/0: {name: "c", value: 6, type: 4, properties: ["c": "character"]} <- index/26 {name: "buf", value: 3, type: 2-5-4, properties: ["buf": "address":"array":"character", "deref": ]}, {name: "idx", value: 2, type: 2-1, properties: ["idx": "address":"integer", "deref": ]} -run/0: ingredient 0 is {name: "buf", value: 3, type: 2-5-4, properties: ["buf": "address":"array":"character", "deref": ]} -mem/0: location 1103 is 1000 -run/0: ingredient 1 is {name: "idx", value: 2, type: 2-1, properties: ["idx": "address":"integer", "deref": ]} -mem/0: location 1102 is 1035 -mem/0: location 1035 is 2 -run/0: address to copy is 1003 -run/0: its type is 4 -mem/0: location 1003 is 99 -run/0: product 0 is 99 -mem/0: storing 99 in location 1106 -run/0: instruction read-key/13 -run/0: {name: "idx", value: 2, type: 2-1, properties: ["idx": "address":"integer", "deref": ]} <- add/2 {name: "idx", value: 2, type: 2-1, properties: ["idx": "address":"integer", "deref": ]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is idx -mem/0: location 1102 is 1035 -mem/0: location 1035 is 2 -run/0: ingredient 1 is 1 -run/0: product 0 is 3 -mem/0: location 1102 is 1035 -mem/0: storing 3 in location 1035 -run/0: instruction read-key/14 -run/0: reply/33 {name: "c", value: 6, type: 4, properties: ["c": "character"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal", "found": ]}, {name: "x", value: 1, type: 2-12, properties: ["x": "address":"keyboard", "same-as-ingredient": "0"]} -mem/0: location 1106 is 99 -mem/0: location 1101 is 1035 -run/0: result 0 is 99 -mem/0: storing 99 in location 5 -run/0: result 1 is 1 -mem/0: storing 1 in location 6 -run/0: result 2 is 1035 -mem/0: storing 1035 in location 901 -run/0: instruction run1001/3 -run/0: {name: "7", value: 7, type: 4, properties: ["7": "character"]}, {name: "8", value: 8, type: 3, properties: ["8": "boolean"]}, {name: "keyboard", value: 901, type: 2, properties: ["keyboard": "address"]} <- read-key/126 {name: "keyboard", value: 901, type: 2, properties: ["keyboard": "address"]} -mem/0: location 901 is 1035 -run/0: instruction read-key/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/44 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} -mem/0: array size is 30 -mem/0: new alloc: 1130 -run/0: instruction read-key/1 -run/0: {name: "x", value: 1, type: 2-12, properties: ["x": "address":"keyboard"]} <- next-ingredient/30 -run/0: product 0 is 1035 -mem/0: storing 1035 in location 1132 -run/0: instruction read-key/3 -run/0: break-unless/12 {name: "x", value: 1, type: 2-12, properties: ["x": "address":"keyboard"]}, {name: "", value: 11, type: , properties: ["": ]} -mem/0: location 1132 is 1035 -run/0: ingredient 0 is 1035 -run/0: jump-unless fell through -run/0: instruction read-key/4 -run/0: {name: "idx", value: 2, type: 2-1, properties: ["idx": "address":"integer"]} <- get-address/25 {name: "x", value: 1, type: 2-12, properties: ["x": "address":"keyboard", "deref": ]}, {name: "index", value: 0, type: 0, properties: ["index": "offset"]} -run/0: ingredient 0 is x -mem/0: location 1132 is 1035 -run/0: ingredient 1 is index -run/0: address to copy is 1035 -run/0: product 0 is 1035 -mem/0: storing 1035 in location 1133 -run/0: instruction read-key/5 -run/0: {name: "buf", value: 3, type: 2-5-4, properties: ["buf": "address":"array":"character"]} <- get/24 {name: "x", value: 1, type: 2-12, properties: ["x": "address":"keyboard", "deref": ]}, {name: "data", value: 1, type: 0, properties: ["data": "offset"]} -run/0: ingredient 0 is x -mem/0: location 1132 is 1035 -run/0: ingredient 1 is data -run/0: address to copy is 1036 -run/0: its type is 2 -mem/0: location 1036 is 1000 -run/0: product 0 is 1000 -mem/0: storing 1000 in location 1134 -run/0: instruction read-key/6 -run/0: {name: "max", value: 4, type: 1, properties: ["max": "integer"]} <- length/28 {name: "buf", value: 3, type: 2-5-4, properties: ["buf": "address":"array":"character", "deref": ]} -mem/0: location 1134 is 1000 -mem/0: storing 3 in location 1135 -run/0: instruction read-key/8 -run/0: {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]} <- greater-or-equal/16 {name: "idx", value: 2, type: 2-1, properties: ["idx": "address":"integer", "deref": ]}, {name: "max", value: 4, type: 1, properties: ["max": "integer"]} -run/0: ingredient 0 is idx -mem/0: location 1133 is 1035 -mem/0: location 1035 is 3 -run/0: ingredient 1 is max -mem/0: location 1135 is 3 -run/0: product 0 is 1 -mem/0: storing 1 in location 1136 -run/0: instruction read-key/9 -run/0: break-unless/12 {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} -mem/0: location 1136 is 1 -run/0: ingredient 0 is 1 -run/0: jump-unless fell through -run/0: instruction read-key/10 -run/0: reply/33 {name: "0", value: 0, type: 0, properties: ["0": "literal"]}, {name: "0", value: 0, type: 0, properties: ["0": "literal", "done": ]}, {name: "x", value: 1, type: 2-12, properties: ["x": "address":"keyboard", "same-as-ingredient": "0"]} -mem/0: location 1132 is 1035 -run/0: result 0 is 0 -mem/0: storing 0 in location 7 -run/0: result 1 is 0 -mem/0: storing 0 in location 8 -run/0: result 2 is 1035 -mem/0: storing 1035 in location 901 -run/0: instruction read-key-in-mu/3 -run/0: memory-should-contain/46 {name: " - 1 <- 97 # 'a' - 2 <- 1 # first read-key call found a character - 3 <- 98 # 'b' - 4 <- 1 # second read-key call found a character - 5 <- 99 # 'c' - 6 <- 1 # third read-key call found a character - 7 <- 0 - 8 <- 0 # fourth read-key call didn't find a character - ", value: 0, type: 0, properties: [" - 1 <- 97 # 'a' - 2 <- 1 # first read-key call found a character - 3 <- 98 # 'b' - 4 <- 1 # second read-key call found a character - 5 <- 99 # 'c' - 6 <- 1 # third read-key call found a character - 7 <- 0 - 8 <- 0 # fourth read-key call didn't find a character - ": "literal-string"]} -run/0: checking location 1 -run/0: checking location 2 -run/0: checking location 3 -run/0: checking location 4 -run/0: checking location 5 -run/0: checking location 6 -run/0: checking location 7 -run/0: checking location 8 diff --git a/cpp/.traces/reply b/cpp/.traces/reply deleted file mode 100644 index 6ac4c162..00000000 --- a/cpp/.traces/reply +++ /dev/null @@ -1,42 +0,0 @@ -parse/0: instruction: f -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: next-ingredient -parse/0: product: {name: "12", value: 0, type: 1, properties: ["12": "integer"]} -parse/0: instruction: add -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: reply -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 -after-brace/0: next-ingredient ... -after-brace/0: add ... -after-brace/0: reply ... -new/0: routine allocated memory from 1000 to 101000 -schedule/0: main -run/0: instruction main/0 -run/0: {name: "3", value: 3, type: 1, properties: ["3": "integer"]}, {name: "4", value: 4, type: 1, properties: ["4": "integer"]} <- f/1001 {name: "2", value: 2, type: 0, properties: ["2": "literal"]} -run/0: instruction f/0 -run/0: {name: "12", value: 12, type: 1, properties: ["12": "integer"]} <- next-ingredient/30 -run/0: product 0 is 2 -mem/0: storing 2 in location 12 -run/0: instruction f/1 -run/0: {name: "13", value: 13, type: 1, properties: ["13": "integer"]} <- add/2 {name: "1", value: 1, type: 0, properties: ["1": "literal"]}, {name: "12", value: 12, type: 1, properties: ["12": "integer"]} -run/0: ingredient 0 is 1 -run/0: ingredient 1 is 12 -mem/0: location 12 is 2 -run/0: product 0 is 3 -mem/0: storing 3 in location 13 -run/0: instruction f/2 -run/0: reply/33 {name: "12", value: 12, type: 1, properties: ["12": "integer"]}, {name: "13", value: 13, type: 1, properties: ["13": "integer"]} -mem/0: location 12 is 2 -mem/0: location 13 is 3 -run/0: result 0 is 2 -mem/0: storing 2 in location 3 -run/0: result 1 is 3 -mem/0: storing 3 in location 4 diff --git a/cpp/.traces/reply_container b/cpp/.traces/reply_container deleted file mode 100644 index 693f984d..00000000 --- a/cpp/.traces/reply_container +++ /dev/null @@ -1,35 +0,0 @@ -parse/0: instruction: f -parse/0: ingredient: {name: "2", value: 0, type: 0, properties: ["2": "literal"]} -parse/0: product: {name: "3", value: 0, type: 6, properties: ["3": "point"]} -parse/0: instruction: next-ingredient -parse/0: product: {name: "12", value: 0, type: 1, properties: ["12": "integer"]} -parse/0: instruction: copy -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: reply -parse/0: ingredient: {name: "12", value: 0, type: 6, properties: ["12": "point"]} -after-brace/0: recipe main -after-brace/0: f ... -after-brace/0: recipe f -after-brace/0: next-ingredient ... -after-brace/0: copy ... -after-brace/0: reply ... -new/0: routine allocated memory from 1000 to 101000 -schedule/0: main -run/0: instruction main/0 -run/0: {name: "3", value: 3, type: 6, properties: ["3": "point"]} <- f/1001 {name: "2", value: 2, type: 0, properties: ["2": "literal"]} -run/0: instruction f/0 -run/0: {name: "12", value: 12, type: 1, properties: ["12": "integer"]} <- next-ingredient/30 -run/0: product 0 is 2 -mem/0: storing 2 in location 12 -run/0: instruction f/1 -run/0: {name: "13", value: 13, type: 1, properties: ["13": "integer"]} <- copy/1 {name: "35", value: 35, type: 0, properties: ["35": "literal"]} -run/0: ingredient 0 is 35 -mem/0: storing 35 in location 13 -run/0: instruction f/2 -run/0: reply/33 {name: "12", value: 12, type: 6, properties: ["12": "point"]} -mem/0: location 12 is 2 -mem/0: location 13 is 35 -run/0: result 0 is [2, 35] -mem/0: storing 2 in location 3 -mem/0: storing 35 in location 4 diff --git a/cpp/.traces/reply_same_as_ingredient b/cpp/.traces/reply_same_as_ingredient deleted file mode 100644 index 0ac3ce16..00000000 --- a/cpp/.traces/reply_same_as_ingredient +++ /dev/null @@ -1,36 +0,0 @@ -parse/0: instruction: new -parse/0: ingredient: {name: "integer", value: 0, type: 0, properties: ["integer": "type"]} -parse/0: product: {name: "1", value: 0, type: 2-1, properties: ["1": "address":"integer"]} -parse/0: instruction: test1 -parse/0: ingredient: {name: "1", value: 0, type: 2-1, properties: ["1": "address":"integer"]} -parse/0: product: {name: "2", value: 0, type: 2-1, properties: ["2": "address":"integer"]} -parse/0: instruction: next-ingredient -parse/0: product: {name: "10", value: 0, type: 2-1, properties: ["10": "address":"integer"]} -parse/0: instruction: reply -parse/0: ingredient: {name: "10", value: 0, type: 2-1, properties: ["10": "address":"integer", "same-as-ingredient": "0"]} -new/0: integer -> 1 -after-brace/0: recipe main -after-brace/0: new ... -after-brace/0: test1 ... -after-brace/0: recipe test1 -after-brace/0: next-ingredient ... -after-brace/0: reply ... -new/0: routine allocated memory from 1000 to 101000 -schedule/0: main -run/0: instruction main/0 -run/0: {name: "1", value: 1, type: 2-1, properties: ["1": "address":"integer"]} <- new/44 {name: "integer", value: 1, type: 0, properties: ["integer": "type"]} -mem/0: new alloc: 1000 -mem/0: storing 1000 in location 1 -run/0: instruction main/1 -run/0: {name: "2", value: 2, type: 2-1, properties: ["2": "address":"integer"]} <- test1/1001 {name: "1", value: 1, type: 2-1, properties: ["1": "address":"integer"]} -mem/0: location 1 is 1000 -run/0: instruction test1/0 -run/0: {name: "10", value: 10, type: 2-1, properties: ["10": "address":"integer"]} <- next-ingredient/30 -run/0: product 0 is 1000 -mem/0: storing 1000 in location 10 -run/0: instruction test1/1 -run/0: reply/33 {name: "10", value: 10, type: 2-1, properties: ["10": "address":"integer", "same-as-ingredient": "0"]} -mem/0: location 10 is 1000 -run/0: result 0 is 1000 -warn/0: 'same-as-ingredient' result 2 must be location 1 -mem/0: storing 1000 in location 2 diff --git a/cpp/.traces/return_on_fallthrough b/cpp/.traces/return_on_fallthrough deleted file mode 100644 index 01d38444..00000000 --- a/cpp/.traces/return_on_fallthrough +++ /dev/null @@ -1,48 +0,0 @@ -parse/0: instruction: f -parse/0: instruction: copy -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: copy -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: copy -parse/0: ingredient: {name: "34", value: 0, type: 0, properties: ["34": "literal"]} -parse/0: product: {name: "3", value: 0, type: 1, properties: ["3": "integer"]} -parse/0: instruction: copy -parse/0: ingredient: {name: "34", value: 0, type: 0, properties: ["34": "literal"]} -parse/0: product: {name: "4", value: 0, type: 1, properties: ["4": "integer"]} -parse/0: instruction: copy -parse/0: ingredient: {name: "34", value: 0, type: 0, properties: ["34": "literal"]} -parse/0: product: {name: "5", value: 0, type: 1, properties: ["5": "integer"]} -after-brace/0: recipe main -after-brace/0: f ... -after-brace/0: copy ... -after-brace/0: copy ... -after-brace/0: copy ... -after-brace/0: recipe f -after-brace/0: copy ... -after-brace/0: copy ... -new/0: routine allocated memory from 1000 to 101000 -schedule/0: main -run/0: instruction main/0 -run/0: f/1001 -run/0: instruction f/0 -run/0: {name: "4", value: 4, type: 1, properties: ["4": "integer"]} <- copy/1 {name: "34", value: 34, type: 0, properties: ["34": "literal"]} -run/0: ingredient 0 is 34 -mem/0: storing 34 in location 4 -run/0: instruction f/1 -run/0: {name: "5", value: 5, type: 1, properties: ["5": "integer"]} <- copy/1 {name: "34", value: 34, type: 0, properties: ["34": "literal"]} -run/0: ingredient 0 is 34 -mem/0: storing 34 in location 5 -run/0: instruction main/1 -run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- copy/1 {name: "34", value: 34, type: 0, properties: ["34": "literal"]} -run/0: ingredient 0 is 34 -mem/0: storing 34 in location 1 -run/0: instruction main/2 -run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- copy/1 {name: "34", value: 34, type: 0, properties: ["34": "literal"]} -run/0: ingredient 0 is 34 -mem/0: storing 34 in location 2 -run/0: instruction main/3 -run/0: {name: "3", value: 3, type: 1, properties: ["3": "integer"]} <- copy/1 {name: "34", value: 34, type: 0, properties: ["34": "literal"]} -run/0: ingredient 0 is 34 -mem/0: storing 34 in location 3 diff --git a/cpp/.traces/rewind_ingredients b/cpp/.traces/rewind_ingredients deleted file mode 100644 index 4c7b4159..00000000 --- a/cpp/.traces/rewind_ingredients +++ /dev/null @@ -1,36 +0,0 @@ -parse/0: instruction: f -parse/0: ingredient: {name: "2", value: 0, type: 0, properties: ["2": "literal"]} -parse/0: instruction: next-ingredient -parse/0: product: {name: "12", value: 0, type: 1, properties: ["12": "integer"]} -parse/0: instruction: next-ingredient -parse/0: product: {name: "_", value: 0, type: 0, properties: ["_": "dummy"]} -parse/0: product: {name: "1", value: 0, type: 3, properties: ["1": "boolean"]} -parse/0: instruction: rewind-ingredients -parse/0: instruction: next-ingredient -parse/0: product: {name: "13", value: 0, type: 1, properties: ["13": "integer"]} -parse/0: product: {name: "2", value: 0, type: 3, properties: ["2": "boolean"]} -after-brace/0: recipe main -after-brace/0: f ... -after-brace/0: recipe f -after-brace/0: next-ingredient ... -after-brace/0: next-ingredient ... -after-brace/0: rewind-ingredients ... -after-brace/0: next-ingredient ... -new/0: routine allocated memory from 1000 to 101000 -schedule/0: main -run/0: instruction main/0 -run/0: f/1001 {name: "2", value: 2, type: 0, properties: ["2": "literal"]} -run/0: instruction f/0 -run/0: {name: "12", value: 12, type: 1, properties: ["12": "integer"]} <- next-ingredient/30 -run/0: product 0 is 2 -mem/0: storing 2 in location 12 -run/0: instruction f/1 -run/0: {name: "_", value: 0, type: 0, properties: ["_": "dummy"]}, {name: "1", value: 1, type: 3, properties: ["1": "boolean"]} <- next-ingredient/30 -mem/0: storing 0 in location 1 -run/0: instruction f/2 -run/0: rewind-ingredients/31 -run/0: instruction f/3 -run/0: {name: "13", value: 13, type: 1, properties: ["13": "integer"]}, {name: "2", value: 2, type: 3, properties: ["2": "boolean"]} <- next-ingredient/30 -run/0: product 0 is 2 -mem/0: storing 2 in location 13 -mem/0: storing 1 in location 2 diff --git a/cpp/.traces/routine_state_test b/cpp/.traces/routine_state_test deleted file mode 100644 index 9616c23c..00000000 --- a/cpp/.traces/routine_state_test +++ /dev/null @@ -1,39 +0,0 @@ -parse/0: instruction: start-running -parse/0: ingredient: {name: "f2", value: 0, type: 0, properties: ["f2": "recipe"]} -parse/0: product: {name: "1", value: 0, type: 1, properties: ["1": "integer", "child-id": ]} -parse/0: instruction: copy -parse/0: ingredient: {name: "0", value: 0, type: 0, properties: ["0": "literal"]} -parse/0: product: {name: "12", value: 0, type: 1, properties: ["12": "integer"]} -parse/0: instruction: routine-state -parse/0: ingredient: {name: "1", value: 0, type: 1, properties: ["1": "integer", "child-id": ]} -parse/0: product: {name: "2", value: 0, type: 1, properties: ["2": "integer", "state": ]} -parse/0: instruction: copy -parse/0: ingredient: {name: "0", value: 0, type: 0, properties: ["0": "literal"]} -parse/0: product: {name: "12", value: 0, type: 1, properties: ["12": "integer"]} -after-brace/0: recipe f1 -after-brace/0: start-running ... -after-brace/0: copy ... -after-brace/0: routine-state ... -after-brace/0: recipe f2 -after-brace/0: copy ... -new/0: routine allocated memory from 1000 to 101000 -schedule/0: f1 -run/0: instruction f1/0 -run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer", "child-id": ]} <- start-running/34 {name: "f2", value: 0, type: 0, properties: ["f2": "recipe"]} -run/0: ingredient 0 is f2 -new/0: routine allocated memory from 101000 to 201000 -mem/0: storing 2 in location 1 -run/0: instruction f1/1 -run/0: {name: "12", value: 12, type: 1, properties: ["12": "integer"]} <- copy/1 {name: "0", value: 0, type: 0, properties: ["0": "literal"]} -run/0: ingredient 0 is 0 -mem/0: storing 0 in location 12 -schedule/0: f2 -run/0: instruction f2/0 -run/0: {name: "12", value: 12, type: 1, properties: ["12": "integer"]} <- copy/1 {name: "0", value: 0, type: 0, properties: ["0": "literal"]} -run/0: ingredient 0 is 0 -mem/0: storing 0 in location 12 -schedule/0: f1 -run/0: instruction f1/2 -run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer", "state": ]} <- routine-state/35 {name: "1", value: 1, type: 1, properties: ["1": "integer", "child-id": ]} -mem/0: location 1 is 2 -mem/0: storing 1 in location 2 diff --git a/cpp/.traces/run b/cpp/.traces/run deleted file mode 100644 index 1cda2c08..00000000 --- a/cpp/.traces/run +++ /dev/null @@ -1,25 +0,0 @@ -parse/0: instruction: run -parse/0: ingredient: {name: " - 1:integer <- copy 13:literal - ", value: 0, type: 0, properties: [" - 1:integer <- copy 13:literal - ": "literal-string"]} -after-brace/0: recipe main -after-brace/0: run ... -new/0: routine allocated memory from 1000 to 101000 -schedule/0: main -run/0: instruction main/0 -run/0: run/45 {name: " - 1:integer <- copy 13:literal - ", value: 0, type: 0, properties: [" - 1:integer <- copy 13:literal - ": "literal-string"]} -parse/0: instruction: copy -parse/0: ingredient: {name: "13", value: 0, type: 0, properties: ["13": "literal"]} -parse/0: product: {name: "1", value: 0, type: 1, properties: ["1": "integer"]} -after-brace/0: recipe run1001 -after-brace/0: copy ... -run/0: instruction run1001/0 -run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- copy/1 {name: "13", value: 13, type: 0, properties: ["13": "literal"]} -run/0: ingredient 0 is 13 -mem/0: storing 13 in location 1 diff --git a/cpp/.traces/run_dummy b/cpp/.traces/run_dummy deleted file mode 100644 index 0cd9cdf3..00000000 --- a/cpp/.traces/run_dummy +++ /dev/null @@ -1,10 +0,0 @@ -parse/0: instruction: copy -parse/0: ingredient: {name: "0", value: 0, type: 0, properties: ["0": "literal"]} -parse/0: product: {name: "_", value: 0, type: 0, properties: ["_": "dummy"]} -after-brace/0: recipe main -after-brace/0: copy ... -new/0: routine allocated memory from 1000 to 101000 -schedule/0: main -run/0: instruction main/0 -run/0: {name: "_", value: 0, type: 0, properties: ["_": "dummy"]} <- copy/1 {name: "0", value: 0, type: 0, properties: ["0": "literal"]} -run/0: ingredient 0 is 0 diff --git a/cpp/.traces/run_label b/cpp/.traces/run_label deleted file mode 100644 index f9f2fce7..00000000 --- a/cpp/.traces/run_label +++ /dev/null @@ -1,21 +0,0 @@ -parse/0: label: +foo -parse/0: instruction: copy -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: copy -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 ... -new/0: routine allocated memory from 1000 to 101000 -schedule/0: main -run/0: instruction main/1 -run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- copy/1 {name: "23", value: 23, type: 0, properties: ["23": "literal"]} -run/0: ingredient 0 is 23 -mem/0: storing 23 in location 1 -run/0: instruction main/2 -run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- copy/1 {name: "1", value: 1, type: 1, properties: ["1": "integer"]} -run/0: ingredient 0 is 1 -mem/0: location 1 is 23 -mem/0: storing 23 in location 2 diff --git a/cpp/.traces/run_multiple b/cpp/.traces/run_multiple deleted file mode 100644 index fcb204d5..00000000 --- a/cpp/.traces/run_multiple +++ /dev/null @@ -1,47 +0,0 @@ -parse/0: instruction: run -parse/0: ingredient: {name: " - 1:integer <- copy 13:literal - ", value: 0, type: 0, properties: [" - 1:integer <- copy 13:literal - ": "literal-string"]} -parse/0: instruction: run -parse/0: ingredient: {name: " - 2:integer <- copy 13:literal - ", value: 0, type: 0, properties: [" - 2:integer <- copy 13:literal - ": "literal-string"]} -after-brace/0: recipe main -after-brace/0: run ... -after-brace/0: run ... -new/0: routine allocated memory from 1000 to 101000 -schedule/0: main -run/0: instruction main/0 -run/0: run/45 {name: " - 1:integer <- copy 13:literal - ", value: 0, type: 0, properties: [" - 1:integer <- copy 13:literal - ": "literal-string"]} -parse/0: instruction: copy -parse/0: ingredient: {name: "13", value: 0, type: 0, properties: ["13": "literal"]} -parse/0: product: {name: "1", value: 0, type: 1, properties: ["1": "integer"]} -after-brace/0: recipe run1001 -after-brace/0: copy ... -run/0: instruction run1001/0 -run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- copy/1 {name: "13", value: 13, type: 0, properties: ["13": "literal"]} -run/0: ingredient 0 is 13 -mem/0: storing 13 in location 1 -run/0: instruction main/1 -run/0: run/45 {name: " - 2:integer <- copy 13:literal - ", value: 0, type: 0, properties: [" - 2:integer <- copy 13:literal - ": "literal-string"]} -parse/0: instruction: copy -parse/0: ingredient: {name: "13", value: 0, type: 0, properties: ["13": "literal"]} -parse/0: product: {name: "2", value: 0, type: 1, properties: ["2": "integer"]} -after-brace/0: recipe run1002 -after-brace/0: copy ... -run/0: instruction run1002/0 -run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- copy/1 {name: "13", value: 13, type: 0, properties: ["13": "literal"]} -run/0: ingredient 0 is 13 -mem/0: storing 13 in location 2 diff --git a/cpp/.traces/scenario_block b/cpp/.traces/scenario_block deleted file mode 100644 index cf2290ad..00000000 --- a/cpp/.traces/scenario_block +++ /dev/null @@ -1,39 +0,0 @@ -parse/0: instruction: run -parse/0: ingredient: {name: " - 1:integer <- copy 13:literal - ", value: 0, type: 0, properties: [" - 1:integer <- copy 13:literal - ": "literal-string"]} -parse/0: instruction: memory-should-contain -parse/0: ingredient: {name: " - 1 <- 13 - ", value: 0, type: 0, properties: [" - 1 <- 13 - ": "literal-string"]} -after-brace/0: recipe foo -after-brace/0: run ... -after-brace/0: memory-should-contain ... -new/0: routine allocated memory from 1000 to 101000 -schedule/0: foo -run/0: instruction foo/0 -run/0: run/45 {name: " - 1:integer <- copy 13:literal - ", value: 0, type: 0, properties: [" - 1:integer <- copy 13:literal - ": "literal-string"]} -parse/0: instruction: copy -parse/0: ingredient: {name: "13", value: 0, type: 0, properties: ["13": "literal"]} -parse/0: product: {name: "1", value: 0, type: 1, properties: ["1": "integer"]} -after-brace/0: recipe run1001 -after-brace/0: copy ... -run/0: instruction run1001/0 -run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- copy/1 {name: "13", value: 13, type: 0, properties: ["13": "literal"]} -run/0: ingredient 0 is 13 -mem/0: storing 13 in location 1 -run/0: instruction foo/1 -run/0: memory-should-contain/46 {name: " - 1 <- 13 - ", value: 0, type: 0, properties: [" - 1 <- 13 - ": "literal-string"]} -run/0: checking location 1 diff --git a/cpp/.traces/scenario_check_memory_and_trace b/cpp/.traces/scenario_check_memory_and_trace deleted file mode 100644 index 1b1f6185..00000000 --- a/cpp/.traces/scenario_check_memory_and_trace +++ /dev/null @@ -1,76 +0,0 @@ -parse/0: instruction: run -parse/0: ingredient: {name: " - 1:integer <- copy 13:literal - trace [a], [a b c] - ", value: 0, type: 0, properties: [" - 1:integer <- copy 13:literal - trace [a], [a b c] - ": "literal-string"]} -parse/0: instruction: memory-should-contain -parse/0: ingredient: {name: " - 1 <- 13 - ", value: 0, type: 0, properties: [" - 1 <- 13 - ": "literal-string"]} -parse/0: instruction: trace-should-contain -parse/0: ingredient: {name: " - a: a b c - ", value: 0, type: 0, properties: [" - a: a b c - ": "literal-string"]} -parse/0: instruction: trace-should-not-contain -parse/0: ingredient: {name: " - a: x y z - ", value: 0, type: 0, properties: [" - a: x y z - ": "literal-string"]} -after-brace/0: recipe foo -after-brace/0: run ... -after-brace/0: memory-should-contain ... -after-brace/0: trace-should-contain ... -after-brace/0: trace-should-not-contain ... -new/0: routine allocated memory from 1000 to 101000 -schedule/0: foo -run/0: instruction foo/0 -run/0: run/45 {name: " - 1:integer <- copy 13:literal - trace [a], [a b c] - ", value: 0, type: 0, properties: [" - 1:integer <- copy 13:literal - trace [a], [a b c] - ": "literal-string"]} -parse/0: instruction: copy -parse/0: ingredient: {name: "13", value: 0, type: 0, properties: ["13": "literal"]} -parse/0: product: {name: "1", value: 0, type: 1, properties: ["1": "integer"]} -parse/0: instruction: trace -parse/0: ingredient: {name: "a", value: 0, type: 0, properties: ["a": "literal-string"]} -parse/0: ingredient: {name: "a b c", value: 0, type: 0, properties: ["a b c": "literal-string"]} -after-brace/0: recipe run1001 -after-brace/0: copy ... -after-brace/0: trace ... -run/0: instruction run1001/0 -run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- copy/1 {name: "13", value: 13, type: 0, properties: ["13": "literal"]} -run/0: ingredient 0 is 13 -mem/0: storing 13 in location 1 -run/0: instruction run1001/1 -run/0: trace/18 {name: "a", value: 0, type: 0, properties: ["a": "literal-string"]}, {name: "a b c", value: 0, type: 0, properties: ["a b c": "literal-string"]} -a/0: a b c -run/0: instruction foo/1 -run/0: memory-should-contain/46 {name: " - 1 <- 13 - ", value: 0, type: 0, properties: [" - 1 <- 13 - ": "literal-string"]} -run/0: checking location 1 -run/0: instruction foo/2 -run/0: trace-should-contain/47 {name: " - a: a b c - ", value: 0, type: 0, properties: [" - a: a b c - ": "literal-string"]} -run/0: instruction foo/3 -run/0: trace-should-not-contain/48 {name: " - a: x y z - ", value: 0, type: 0, properties: [" - a: x y z - ": "literal-string"]} diff --git a/cpp/.traces/scenario_multiple_blocks b/cpp/.traces/scenario_multiple_blocks deleted file mode 100644 index 2a2b57cc..00000000 --- a/cpp/.traces/scenario_multiple_blocks +++ /dev/null @@ -1,80 +0,0 @@ -parse/0: instruction: run -parse/0: ingredient: {name: " - 1:integer <- copy 13:literal - ", value: 0, type: 0, properties: [" - 1:integer <- copy 13:literal - ": "literal-string"]} -parse/0: instruction: memory-should-contain -parse/0: ingredient: {name: " - 1 <- 13 - ", value: 0, type: 0, properties: [" - 1 <- 13 - ": "literal-string"]} -parse/0: instruction: run -parse/0: ingredient: {name: " - 2:integer <- copy 13:literal - ", value: 0, type: 0, properties: [" - 2:integer <- copy 13:literal - ": "literal-string"]} -parse/0: instruction: memory-should-contain -parse/0: ingredient: {name: " - 1 <- 13 - 2 <- 13 - ", value: 0, type: 0, properties: [" - 1 <- 13 - 2 <- 13 - ": "literal-string"]} -after-brace/0: recipe foo -after-brace/0: run ... -after-brace/0: memory-should-contain ... -after-brace/0: run ... -after-brace/0: memory-should-contain ... -new/0: routine allocated memory from 1000 to 101000 -schedule/0: foo -run/0: instruction foo/0 -run/0: run/45 {name: " - 1:integer <- copy 13:literal - ", value: 0, type: 0, properties: [" - 1:integer <- copy 13:literal - ": "literal-string"]} -parse/0: instruction: copy -parse/0: ingredient: {name: "13", value: 0, type: 0, properties: ["13": "literal"]} -parse/0: product: {name: "1", value: 0, type: 1, properties: ["1": "integer"]} -after-brace/0: recipe run1001 -after-brace/0: copy ... -run/0: instruction run1001/0 -run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- copy/1 {name: "13", value: 13, type: 0, properties: ["13": "literal"]} -run/0: ingredient 0 is 13 -mem/0: storing 13 in location 1 -run/0: instruction foo/1 -run/0: memory-should-contain/46 {name: " - 1 <- 13 - ", value: 0, type: 0, properties: [" - 1 <- 13 - ": "literal-string"]} -run/0: checking location 1 -run/0: instruction foo/2 -run/0: run/45 {name: " - 2:integer <- copy 13:literal - ", value: 0, type: 0, properties: [" - 2:integer <- copy 13:literal - ": "literal-string"]} -parse/0: instruction: copy -parse/0: ingredient: {name: "13", value: 0, type: 0, properties: ["13": "literal"]} -parse/0: product: {name: "2", value: 0, type: 1, properties: ["2": "integer"]} -after-brace/0: recipe run1002 -after-brace/0: copy ... -run/0: instruction run1002/0 -run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- copy/1 {name: "13", value: 13, type: 0, properties: ["13": "literal"]} -run/0: ingredient 0 is 13 -mem/0: storing 13 in location 2 -run/0: instruction foo/3 -run/0: memory-should-contain/46 {name: " - 1 <- 13 - 2 <- 13 - ", value: 0, type: 0, properties: [" - 1 <- 13 - 2 <- 13 - ": "literal-string"]} -run/0: checking location 1 -run/0: checking location 2 diff --git a/cpp/.traces/scenario_with_comment_in_mu b/cpp/.traces/scenario_with_comment_in_mu deleted file mode 100644 index ef0c74cc..00000000 --- a/cpp/.traces/scenario_with_comment_in_mu +++ /dev/null @@ -1,46 +0,0 @@ -parse/0: instruction: run -parse/0: ingredient: {name: " - # comment - 1:integer <- add 2:literal, 2:literal - ", value: 0, type: 0, properties: [" - # comment - 1:integer <- add 2:literal, 2:literal - ": "literal-string"]} -parse/0: instruction: memory-should-contain -parse/0: ingredient: {name: " - 1 <- 4 - ", value: 0, type: 0, properties: [" - 1 <- 4 - ": "literal-string"]} -after-brace/0: recipe scenario_with_comment_in_mu -after-brace/0: run ... -after-brace/0: memory-should-contain ... -new/0: routine allocated memory from 1000 to 101000 -schedule/0: scenario_with_comment_in_mu -run/0: instruction scenario_with_comment_in_mu/0 -run/0: run/45 {name: " - # comment - 1:integer <- add 2:literal, 2:literal - ", value: 0, type: 0, properties: [" - # comment - 1:integer <- add 2:literal, 2:literal - ": "literal-string"]} -parse/0: instruction: add -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: "1", value: 0, type: 1, properties: ["1": "integer"]} -after-brace/0: recipe run1001 -after-brace/0: add ... -run/0: instruction run1001/0 -run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- add/2 {name: "2", value: 2, type: 0, properties: ["2": "literal"]}, {name: "2", value: 2, type: 0, properties: ["2": "literal"]} -run/0: ingredient 0 is 2 -run/0: ingredient 1 is 2 -run/0: product 0 is 4 -mem/0: storing 4 in location 1 -run/0: instruction scenario_with_comment_in_mu/1 -run/0: memory-should-contain/46 {name: " - 1 <- 4 - ", value: 0, type: 0, properties: [" - 1 <- 4 - ": "literal-string"]} -run/0: checking location 1 diff --git a/cpp/.traces/scenario_with_multiple_comments_in_mu b/cpp/.traces/scenario_with_multiple_comments_in_mu deleted file mode 100644 index 80ad06dc..00000000 --- a/cpp/.traces/scenario_with_multiple_comments_in_mu +++ /dev/null @@ -1,50 +0,0 @@ -parse/0: instruction: run -parse/0: ingredient: {name: " - # comment1 - # comment2 - 1:integer <- add 2:literal, 2:literal - ", value: 0, type: 0, properties: [" - # comment1 - # comment2 - 1:integer <- add 2:literal, 2:literal - ": "literal-string"]} -parse/0: instruction: memory-should-contain -parse/0: ingredient: {name: " - 1 <- 4 - ", value: 0, type: 0, properties: [" - 1 <- 4 - ": "literal-string"]} -after-brace/0: recipe scenario_with_multiple_comments_in_mu -after-brace/0: run ... -after-brace/0: memory-should-contain ... -new/0: routine allocated memory from 1000 to 101000 -schedule/0: scenario_with_multiple_comments_in_mu -run/0: instruction scenario_with_multiple_comments_in_mu/0 -run/0: run/45 {name: " - # comment1 - # comment2 - 1:integer <- add 2:literal, 2:literal - ", value: 0, type: 0, properties: [" - # comment1 - # comment2 - 1:integer <- add 2:literal, 2:literal - ": "literal-string"]} -parse/0: instruction: add -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: "1", value: 0, type: 1, properties: ["1": "integer"]} -after-brace/0: recipe run1001 -after-brace/0: add ... -run/0: instruction run1001/0 -run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- add/2 {name: "2", value: 2, type: 0, properties: ["2": "literal"]}, {name: "2", value: 2, type: 0, properties: ["2": "literal"]} -run/0: ingredient 0 is 2 -run/0: ingredient 1 is 2 -run/0: product 0 is 4 -mem/0: storing 4 in location 1 -run/0: instruction scenario_with_multiple_comments_in_mu/1 -run/0: memory-should-contain/46 {name: " - 1 <- 4 - ", value: 0, type: 0, properties: [" - 1 <- 4 - ": "literal-string"]} -run/0: checking location 1 diff --git a/cpp/.traces/scheduler b/cpp/.traces/scheduler deleted file mode 100644 index 4f1f0a31..00000000 --- a/cpp/.traces/scheduler +++ /dev/null @@ -1,28 +0,0 @@ -parse/0: instruction: start-running -parse/0: ingredient: {name: "f2", value: 0, type: 0, properties: ["f2": "recipe"]} -parse/0: instruction: copy -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: copy -parse/0: ingredient: {name: "4", value: 0, type: 0, properties: ["4": "literal"]} -parse/0: product: {name: "2", value: 0, type: 1, properties: ["2": "integer"]} -after-brace/0: recipe f1 -after-brace/0: start-running ... -after-brace/0: copy ... -after-brace/0: recipe f2 -after-brace/0: copy ... -new/0: routine allocated memory from 1000 to 101000 -schedule/0: f1 -run/0: instruction f1/0 -run/0: start-running/34 {name: "f2", value: 0, type: 0, properties: ["f2": "recipe"]} -run/0: ingredient 0 is f2 -new/0: routine allocated memory from 101000 to 201000 -run/0: instruction f1/1 -run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- copy/1 {name: "3", value: 3, type: 0, properties: ["3": "literal"]} -run/0: ingredient 0 is 3 -mem/0: storing 3 in location 1 -schedule/0: f2 -run/0: instruction f2/0 -run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- copy/1 {name: "4", value: 4, type: 0, properties: ["4": "literal"]} -run/0: ingredient 0 is 4 -mem/0: storing 4 in location 2 diff --git a/cpp/.traces/scheduler_interleaves_routines b/cpp/.traces/scheduler_interleaves_routines deleted file mode 100644 index a9d4a4fb..00000000 --- a/cpp/.traces/scheduler_interleaves_routines +++ /dev/null @@ -1,49 +0,0 @@ -parse/0: instruction: start-running -parse/0: ingredient: {name: "f2", value: 0, type: 0, properties: ["f2": "recipe"]} -parse/0: instruction: copy -parse/0: ingredient: {name: "0", value: 0, type: 0, properties: ["0": "literal"]} -parse/0: product: {name: "1", value: 0, type: 1, properties: ["1": "integer"]} -parse/0: instruction: copy -parse/0: ingredient: {name: "0", value: 0, type: 0, properties: ["0": "literal"]} -parse/0: product: {name: "2", value: 0, type: 1, properties: ["2": "integer"]} -parse/0: instruction: copy -parse/0: ingredient: {name: "4", value: 0, type: 0, properties: ["4": "literal"]} -parse/0: product: {name: "3", value: 0, type: 1, properties: ["3": "integer"]} -parse/0: instruction: copy -parse/0: ingredient: {name: "4", value: 0, type: 0, properties: ["4": "literal"]} -parse/0: product: {name: "4", value: 0, type: 1, properties: ["4": "integer"]} -after-brace/0: recipe f1 -after-brace/0: start-running ... -after-brace/0: copy ... -after-brace/0: copy ... -after-brace/0: recipe f2 -after-brace/0: copy ... -after-brace/0: copy ... -new/0: routine allocated memory from 1000 to 101000 -schedule/0: f1 -run/0: instruction f1/0 -run/0: start-running/34 {name: "f2", value: 0, type: 0, properties: ["f2": "recipe"]} -run/0: ingredient 0 is f2 -new/0: routine allocated memory from 101000 to 201000 -schedule/0: f2 -run/0: instruction f2/0 -run/0: {name: "3", value: 3, type: 1, properties: ["3": "integer"]} <- copy/1 {name: "4", value: 4, type: 0, properties: ["4": "literal"]} -run/0: ingredient 0 is 4 -mem/0: storing 4 in location 3 -schedule/0: f1 -run/0: instruction f1/1 -run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- copy/1 {name: "0", value: 0, type: 0, properties: ["0": "literal"]} -run/0: ingredient 0 is 0 -mem/0: storing 0 in location 1 -schedule/0: f2 -run/0: instruction f2/1 -run/0: {name: "4", value: 4, type: 1, properties: ["4": "integer"]} <- copy/1 {name: "4", value: 4, type: 0, properties: ["4": "literal"]} -run/0: ingredient 0 is 4 -mem/0: storing 4 in location 4 -schedule/0: f1 -run/0: instruction f1/2 -run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- copy/1 {name: "0", value: 0, type: 0, properties: ["0": "literal"]} -run/0: ingredient 0 is 0 -mem/0: storing 0 in location 2 -schedule/0: f2 -schedule/0: f1 diff --git a/cpp/.traces/scheduler_runs_single_routine b/cpp/.traces/scheduler_runs_single_routine deleted file mode 100644 index 2847f47c..00000000 --- a/cpp/.traces/scheduler_runs_single_routine +++ /dev/null @@ -1,21 +0,0 @@ -parse/0: instruction: copy -parse/0: ingredient: {name: "0", value: 0, type: 0, properties: ["0": "literal"]} -parse/0: product: {name: "1", value: 0, type: 1, properties: ["1": "integer"]} -parse/0: instruction: copy -parse/0: ingredient: {name: "0", value: 0, type: 0, properties: ["0": "literal"]} -parse/0: product: {name: "2", value: 0, type: 1, properties: ["2": "integer"]} -after-brace/0: recipe f1 -after-brace/0: copy ... -after-brace/0: copy ... -new/0: routine allocated memory from 1000 to 101000 -schedule/0: f1 -run/0: instruction f1/0 -run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- copy/1 {name: "0", value: 0, type: 0, properties: ["0": "literal"]} -run/0: ingredient 0 is 0 -mem/0: storing 0 in location 1 -schedule/0: f1 -run/0: instruction f1/1 -run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- copy/1 {name: "0", value: 0, type: 0, properties: ["0": "literal"]} -run/0: ingredient 0 is 0 -mem/0: storing 0 in location 2 -schedule/0: f1 diff --git a/cpp/.traces/scheduler_skips_completed_routines b/cpp/.traces/scheduler_skips_completed_routines deleted file mode 100644 index b8ed33a9..00000000 --- a/cpp/.traces/scheduler_skips_completed_routines +++ /dev/null @@ -1,28 +0,0 @@ -parse/0: instruction: copy -parse/0: ingredient: {name: "0", value: 0, type: 0, properties: ["0": "literal"]} -parse/0: product: {name: "1", value: 0, type: 1, properties: ["1": "integer"]} -parse/0: instruction: copy -parse/0: ingredient: {name: "0", value: 0, type: 0, properties: ["0": "literal"]} -parse/0: product: {name: "2", value: 0, type: 1, properties: ["2": "integer"]} -new/0: routine allocated memory from 1000 to 101000 -new/0: routine allocated memory from 101000 to 201000 -parse/0: instruction: copy -parse/0: ingredient: {name: "0", value: 0, type: 0, properties: ["0": "literal"]} -parse/0: product: {name: "3", value: 0, type: 1, properties: ["3": "integer"]} -after-brace/0: recipe f1 -after-brace/0: copy ... -after-brace/0: recipe f2 -after-brace/0: copy ... -after-brace/0: recipe f3 -after-brace/0: copy ... -new/0: routine allocated memory from 201000 to 301000 -schedule/0: f3 -run/0: instruction f3/0 -run/0: {name: "3", value: 3, type: 1, properties: ["3": "integer"]} <- copy/1 {name: "0", value: 0, type: 0, properties: ["0": "literal"]} -run/0: ingredient 0 is 0 -mem/0: storing 0 in location 3 -schedule/0: f1 -run/0: instruction f1/0 -run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- copy/1 {name: "0", value: 0, type: 0, properties: ["0": "literal"]} -run/0: ingredient 0 is 0 -mem/0: storing 0 in location 1 diff --git a/cpp/.traces/scheduler_starts_at_middle_of_routines b/cpp/.traces/scheduler_starts_at_middle_of_routines deleted file mode 100644 index c51216fb..00000000 --- a/cpp/.traces/scheduler_starts_at_middle_of_routines +++ /dev/null @@ -1,20 +0,0 @@ -new/0: routine allocated memory from 1000 to 101000 -parse/0: instruction: copy -parse/0: ingredient: {name: "0", value: 0, type: 0, properties: ["0": "literal"]} -parse/0: product: {name: "1", value: 0, type: 1, properties: ["1": "integer"]} -parse/0: instruction: copy -parse/0: ingredient: {name: "0", value: 0, type: 0, properties: ["0": "literal"]} -parse/0: product: {name: "2", value: 0, type: 1, properties: ["2": "integer"]} -after-brace/0: recipe f1 -after-brace/0: copy ... -after-brace/0: copy ... -new/0: routine allocated memory from 101000 to 201000 -schedule/0: f1 -run/0: instruction f1/0 -run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- copy/1 {name: "0", value: 0, type: 0, properties: ["0": "literal"]} -run/0: ingredient 0 is 0 -mem/0: storing 0 in location 1 -run/0: instruction f1/1 -run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- copy/1 {name: "0", value: 0, type: 0, properties: ["0": "literal"]} -run/0: ingredient 0 is 0 -mem/0: storing 0 in location 2 diff --git a/cpp/.traces/screen_in_scenario b/cpp/.traces/screen_in_scenario deleted file mode 100644 index 528d495b..00000000 --- a/cpp/.traces/screen_in_scenario +++ /dev/null @@ -1,899 +0,0 @@ -parse/0: instruction: assume-screen -parse/0: ingredient: {name: "5", value: 0, type: 0, properties: ["5": "literal", "width": ]} -parse/0: ingredient: {name: "3", value: 0, type: 0, properties: ["3": "literal", "height": ]} -parse/0: instruction: run -parse/0: ingredient: {name: " - screen:address <- print-character screen:address, 97:literal # 'a' - ", value: 0, type: 0, properties: [" - screen:address <- print-character screen:address, 97:literal # 'a' - ": "literal-string"]} -parse/0: instruction: screen-should-contain -parse/0: ingredient: {name: " - # 01234 - .a . - . . - . . - ", value: 0, type: 0, properties: [" - # 01234 - .a . - . . - . . - ": "literal-string"]} -after-brace/0: recipe screen-in-scenario -after-brace/0: assume-screen ... -after-brace/0: run ... -after-brace/0: screen-should-contain ... -new/0: routine allocated memory from 1000 to 101000 -schedule/0: screen-in-scenario -run/0: instruction screen-in-scenario/0 -run/0: {name: "screen", value: 900, type: 2, properties: ["screen": "address"]} <- assume-screen/115 {name: "5", value: 5, type: 0, properties: ["5": "literal", "width": ]}, {name: "3", value: 3, type: 0, properties: ["3": "literal", "height": ]} -run/0: instruction init-fake-screen/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/44 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal", "capacity": ]} -mem/0: array size is 30 -mem/0: new alloc: 1000 -run/0: instruction init-fake-screen/1 -run/0: {name: "result", value: 1, type: 2-11, properties: ["result": "address":"screen"]} <- new/44 {name: "screen", value: 11, type: 0, properties: ["screen": "type"]} -mem/0: new alloc: 1031 -mem/0: storing 1031 in location 1002 -run/0: instruction init-fake-screen/2 -run/0: {name: "width", value: 2, type: 2-1, properties: ["width": "address":"integer"]} <- get-address/25 {name: "result", value: 1, type: 2-11, properties: ["result": "address":"screen", "deref": ]}, {name: "num-columns", value: 1, type: 0, properties: ["num-columns": "offset"]} -run/0: ingredient 0 is result -mem/0: location 1002 is 1031 -run/0: ingredient 1 is num-columns -run/0: address to copy is 1032 -run/0: product 0 is 1032 -mem/0: storing 1032 in location 1003 -run/0: instruction init-fake-screen/3 -run/0: {name: "width", value: 2, type: 2-1, properties: ["width": "address":"integer", "deref": ]} <- next-ingredient/30 -run/0: product 0 is 5 -mem/0: location 1003 is 1032 -mem/0: storing 5 in location 1032 -run/0: instruction init-fake-screen/4 -run/0: {name: "height", value: 3, type: 2-1, properties: ["height": "address":"integer"]} <- get-address/25 {name: "result", value: 1, type: 2-11, properties: ["result": "address":"screen", "deref": ]}, {name: "num-rows", value: 0, type: 0, properties: ["num-rows": "offset"]} -run/0: ingredient 0 is result -mem/0: location 1002 is 1031 -run/0: ingredient 1 is num-rows -run/0: address to copy is 1031 -run/0: product 0 is 1031 -mem/0: storing 1031 in location 1004 -run/0: instruction init-fake-screen/5 -run/0: {name: "height", value: 3, type: 2-1, properties: ["height": "address":"integer", "deref": ]} <- next-ingredient/30 -run/0: product 0 is 3 -mem/0: location 1004 is 1031 -mem/0: storing 3 in location 1031 -run/0: instruction init-fake-screen/6 -run/0: {name: "row", value: 4, type: 2-1, properties: ["row": "address":"integer"]} <- get-address/25 {name: "result", value: 1, type: 2-11, properties: ["result": "address":"screen", "deref": ]}, {name: "cursor-row", value: 2, type: 0, properties: ["cursor-row": "offset"]} -run/0: ingredient 0 is result -mem/0: location 1002 is 1031 -run/0: ingredient 1 is cursor-row -run/0: address to copy is 1033 -run/0: product 0 is 1033 -mem/0: storing 1033 in location 1005 -run/0: instruction init-fake-screen/7 -run/0: {name: "row", value: 4, type: 2-1, properties: ["row": "address":"integer", "deref": ]} <- copy/1 {name: "0", value: 0, type: 0, properties: ["0": "literal"]} -run/0: ingredient 0 is 0 -mem/0: location 1005 is 1033 -mem/0: storing 0 in location 1033 -run/0: instruction init-fake-screen/8 -run/0: {name: "column", value: 5, type: 2-1, properties: ["column": "address":"integer"]} <- get-address/25 {name: "result", value: 1, type: 2-11, properties: ["result": "address":"screen", "deref": ]}, {name: "cursor-column", value: 3, type: 0, properties: ["cursor-column": "offset"]} -run/0: ingredient 0 is result -mem/0: location 1002 is 1031 -run/0: ingredient 1 is cursor-column -run/0: address to copy is 1034 -run/0: product 0 is 1034 -mem/0: storing 1034 in location 1006 -run/0: instruction init-fake-screen/9 -run/0: {name: "column", value: 5, type: 2-1, properties: ["column": "address":"integer", "deref": ]} <- copy/1 {name: "0", value: 0, type: 0, properties: ["0": "literal"]} -run/0: ingredient 0 is 0 -mem/0: location 1006 is 1034 -mem/0: storing 0 in location 1034 -run/0: instruction init-fake-screen/10 -run/0: {name: "bufsize", value: 6, type: 1, properties: ["bufsize": "integer"]} <- multiply/4 {name: "width", value: 2, type: 2-1, properties: ["width": "address":"integer", "deref": ]}, {name: "height", value: 3, type: 2-1, properties: ["height": "address":"integer", "deref": ]} -run/0: ingredient 0 is width -mem/0: location 1003 is 1032 -mem/0: location 1032 is 5 -run/0: ingredient 1 is height -mem/0: location 1004 is 1031 -mem/0: location 1031 is 3 -run/0: ingredient 1 is 3 -run/0: product 0 is 15 -mem/0: storing 15 in location 1007 -run/0: instruction init-fake-screen/11 -run/0: {name: "buf", value: 7, type: 2-2-5-4, properties: ["buf": "address":"address":"array":"character"]} <- get-address/25 {name: "result", value: 1, type: 2-11, properties: ["result": "address":"screen", "deref": ]}, {name: "data", value: 4, type: 0, properties: ["data": "offset"]} -run/0: ingredient 0 is result -mem/0: location 1002 is 1031 -run/0: ingredient 1 is data -run/0: address to copy is 1035 -run/0: product 0 is 1035 -mem/0: storing 1035 in location 1008 -run/0: instruction init-fake-screen/12 -run/0: {name: "buf", value: 7, type: 2-2-5-4, properties: ["buf": "address":"address":"array":"character", "deref": ]} <- new/44 {name: "character", value: 0, type: 0, properties: ["character": "literal"]}, {name: "bufsize", value: 6, type: 1, properties: ["bufsize": "integer"]} -mem/0: location 1007 is 15 -mem/0: array size is 15 -mem/0: new alloc: 1036 -mem/0: location 1008 is 1035 -mem/0: storing 1036 in location 1035 -run/0: instruction init-fake-screen/13 -run/0: clear-screen/116 {name: "result", value: 1, type: 2-11, properties: ["result": "address":"screen"]} -mem/0: location 1002 is 1031 -run/0: instruction clear-screen/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/44 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} -mem/0: array size is 30 -mem/0: new alloc: 1052 -run/0: instruction clear-screen/1 -run/0: {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen"]} <- next-ingredient/30 -run/0: product 0 is 1031 -mem/0: storing 1031 in location 1054 -run/0: instruction clear-screen/3 -run/0: break-unless/12 {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen"]}, {name: "", value: 12, type: , properties: ["": ]} -mem/0: location 1054 is 1031 -run/0: ingredient 0 is 1031 -run/0: jump-unless fell through -run/0: instruction clear-screen/4 -run/0: {name: "buf", value: 2, type: 2-5-4, properties: ["buf": "address":"array":"character"]} <- get/24 {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen", "deref": ]}, {name: "data", value: 4, type: 0, properties: ["data": "offset"]} -run/0: ingredient 0 is x -mem/0: location 1054 is 1031 -run/0: ingredient 1 is data -run/0: address to copy is 1035 -run/0: its type is 2 -mem/0: location 1035 is 1036 -run/0: product 0 is 1036 -mem/0: storing 1036 in location 1055 -run/0: instruction clear-screen/5 -run/0: {name: "max", value: 3, type: 1, properties: ["max": "integer"]} <- length/28 {name: "buf", value: 2, type: 2-5-4, properties: ["buf": "address":"array":"character", "deref": ]} -mem/0: location 1055 is 1036 -mem/0: storing 15 in location 1056 -run/0: instruction clear-screen/6 -run/0: {name: "i", value: 4, type: 1, properties: ["i": "integer"]} <- copy/1 {name: "0", value: 0, type: 0, properties: ["0": "literal"]} -run/0: ingredient 0 is 0 -mem/0: storing 0 in location 1057 -run/0: instruction clear-screen/8 -run/0: {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "max", value: 3, type: 1, properties: ["max": "integer"]} -run/0: ingredient 0 is i -mem/0: location 1057 is 0 -run/0: ingredient 1 is max -mem/0: location 1056 is 15 -run/0: product 0 is 0 -mem/0: storing 0 in location 1058 -run/0: instruction clear-screen/9 -run/0: break-if/11 {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 4, type: , properties: ["": ]} -mem/0: location 1058 is 0 -run/0: ingredient 0 is 0 -run/0: jump-if fell through -run/0: instruction clear-screen/10 -run/0: {name: "c", value: 6, type: 2-4, properties: ["c": "address":"character"]} <- index-address/27 {name: "buf", value: 2, type: 2-5-4, properties: ["buf": "address":"array":"character", "deref": ]}, {name: "i", value: 4, type: 1, properties: ["i": "integer"]} -run/0: ingredient 0 is buf -mem/0: location 1055 is 1036 -run/0: ingredient 1 is {name: "i", value: 4, type: 1, properties: ["i": "integer"]} -mem/0: location 1057 is 0 -run/0: address to copy is 1037 -run/0: product 0 is 1037 -mem/0: storing 1037 in location 1059 -run/0: instruction clear-screen/11 -run/0: {name: "c", value: 6, type: 2-4, properties: ["c": "address":"character", "deref": ]} <- copy/1 {name: " ", value: 0, type: 0, properties: [" ": "literal-string"]} -run/0: ingredient 0 is -mem/0: location 1059 is 1037 -mem/0: storing 0 in location 1037 -run/0: instruction clear-screen/12 -run/0: {name: "i", value: 4, type: 1, properties: ["i": "integer"]} <- add/2 {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is i -mem/0: location 1057 is 0 -run/0: ingredient 1 is 1 -run/0: product 0 is 1 -mem/0: storing 1 in location 1057 -run/0: instruction clear-screen/13 -run/0: loop/10 {name: "", value: -6, type: , properties: ["": ]} -run/0: ingredient 0 is -6 -run/0: jumping to instruction 8 -run/0: instruction clear-screen/8 -run/0: {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "max", value: 3, type: 1, properties: ["max": "integer"]} -run/0: ingredient 0 is i -mem/0: location 1057 is 1 -run/0: ingredient 1 is max -mem/0: location 1056 is 15 -run/0: product 0 is 0 -mem/0: storing 0 in location 1058 -run/0: instruction clear-screen/9 -run/0: break-if/11 {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 4, type: , properties: ["": ]} -mem/0: location 1058 is 0 -run/0: ingredient 0 is 0 -run/0: jump-if fell through -run/0: instruction clear-screen/10 -run/0: {name: "c", value: 6, type: 2-4, properties: ["c": "address":"character"]} <- index-address/27 {name: "buf", value: 2, type: 2-5-4, properties: ["buf": "address":"array":"character", "deref": ]}, {name: "i", value: 4, type: 1, properties: ["i": "integer"]} -run/0: ingredient 0 is buf -mem/0: location 1055 is 1036 -run/0: ingredient 1 is {name: "i", value: 4, type: 1, properties: ["i": "integer"]} -mem/0: location 1057 is 1 -run/0: address to copy is 1038 -run/0: product 0 is 1038 -mem/0: storing 1038 in location 1059 -run/0: instruction clear-screen/11 -run/0: {name: "c", value: 6, type: 2-4, properties: ["c": "address":"character", "deref": ]} <- copy/1 {name: " ", value: 0, type: 0, properties: [" ": "literal-string"]} -run/0: ingredient 0 is -mem/0: location 1059 is 1038 -mem/0: storing 0 in location 1038 -run/0: instruction clear-screen/12 -run/0: {name: "i", value: 4, type: 1, properties: ["i": "integer"]} <- add/2 {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is i -mem/0: location 1057 is 1 -run/0: ingredient 1 is 1 -run/0: product 0 is 2 -mem/0: storing 2 in location 1057 -run/0: instruction clear-screen/13 -run/0: loop/10 {name: "", value: -6, type: , properties: ["": ]} -run/0: ingredient 0 is -6 -run/0: jumping to instruction 8 -run/0: instruction clear-screen/8 -run/0: {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "max", value: 3, type: 1, properties: ["max": "integer"]} -run/0: ingredient 0 is i -mem/0: location 1057 is 2 -run/0: ingredient 1 is max -mem/0: location 1056 is 15 -run/0: product 0 is 0 -mem/0: storing 0 in location 1058 -run/0: instruction clear-screen/9 -run/0: break-if/11 {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 4, type: , properties: ["": ]} -mem/0: location 1058 is 0 -run/0: ingredient 0 is 0 -run/0: jump-if fell through -run/0: instruction clear-screen/10 -run/0: {name: "c", value: 6, type: 2-4, properties: ["c": "address":"character"]} <- index-address/27 {name: "buf", value: 2, type: 2-5-4, properties: ["buf": "address":"array":"character", "deref": ]}, {name: "i", value: 4, type: 1, properties: ["i": "integer"]} -run/0: ingredient 0 is buf -mem/0: location 1055 is 1036 -run/0: ingredient 1 is {name: "i", value: 4, type: 1, properties: ["i": "integer"]} -mem/0: location 1057 is 2 -run/0: address to copy is 1039 -run/0: product 0 is 1039 -mem/0: storing 1039 in location 1059 -run/0: instruction clear-screen/11 -run/0: {name: "c", value: 6, type: 2-4, properties: ["c": "address":"character", "deref": ]} <- copy/1 {name: " ", value: 0, type: 0, properties: [" ": "literal-string"]} -run/0: ingredient 0 is -mem/0: location 1059 is 1039 -mem/0: storing 0 in location 1039 -run/0: instruction clear-screen/12 -run/0: {name: "i", value: 4, type: 1, properties: ["i": "integer"]} <- add/2 {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is i -mem/0: location 1057 is 2 -run/0: ingredient 1 is 1 -run/0: product 0 is 3 -mem/0: storing 3 in location 1057 -run/0: instruction clear-screen/13 -run/0: loop/10 {name: "", value: -6, type: , properties: ["": ]} -run/0: ingredient 0 is -6 -run/0: jumping to instruction 8 -run/0: instruction clear-screen/8 -run/0: {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "max", value: 3, type: 1, properties: ["max": "integer"]} -run/0: ingredient 0 is i -mem/0: location 1057 is 3 -run/0: ingredient 1 is max -mem/0: location 1056 is 15 -run/0: product 0 is 0 -mem/0: storing 0 in location 1058 -run/0: instruction clear-screen/9 -run/0: break-if/11 {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 4, type: , properties: ["": ]} -mem/0: location 1058 is 0 -run/0: ingredient 0 is 0 -run/0: jump-if fell through -run/0: instruction clear-screen/10 -run/0: {name: "c", value: 6, type: 2-4, properties: ["c": "address":"character"]} <- index-address/27 {name: "buf", value: 2, type: 2-5-4, properties: ["buf": "address":"array":"character", "deref": ]}, {name: "i", value: 4, type: 1, properties: ["i": "integer"]} -run/0: ingredient 0 is buf -mem/0: location 1055 is 1036 -run/0: ingredient 1 is {name: "i", value: 4, type: 1, properties: ["i": "integer"]} -mem/0: location 1057 is 3 -run/0: address to copy is 1040 -run/0: product 0 is 1040 -mem/0: storing 1040 in location 1059 -run/0: instruction clear-screen/11 -run/0: {name: "c", value: 6, type: 2-4, properties: ["c": "address":"character", "deref": ]} <- copy/1 {name: " ", value: 0, type: 0, properties: [" ": "literal-string"]} -run/0: ingredient 0 is -mem/0: location 1059 is 1040 -mem/0: storing 0 in location 1040 -run/0: instruction clear-screen/12 -run/0: {name: "i", value: 4, type: 1, properties: ["i": "integer"]} <- add/2 {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is i -mem/0: location 1057 is 3 -run/0: ingredient 1 is 1 -run/0: product 0 is 4 -mem/0: storing 4 in location 1057 -run/0: instruction clear-screen/13 -run/0: loop/10 {name: "", value: -6, type: , properties: ["": ]} -run/0: ingredient 0 is -6 -run/0: jumping to instruction 8 -run/0: instruction clear-screen/8 -run/0: {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "max", value: 3, type: 1, properties: ["max": "integer"]} -run/0: ingredient 0 is i -mem/0: location 1057 is 4 -run/0: ingredient 1 is max -mem/0: location 1056 is 15 -run/0: product 0 is 0 -mem/0: storing 0 in location 1058 -run/0: instruction clear-screen/9 -run/0: break-if/11 {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 4, type: , properties: ["": ]} -mem/0: location 1058 is 0 -run/0: ingredient 0 is 0 -run/0: jump-if fell through -run/0: instruction clear-screen/10 -run/0: {name: "c", value: 6, type: 2-4, properties: ["c": "address":"character"]} <- index-address/27 {name: "buf", value: 2, type: 2-5-4, properties: ["buf": "address":"array":"character", "deref": ]}, {name: "i", value: 4, type: 1, properties: ["i": "integer"]} -run/0: ingredient 0 is buf -mem/0: location 1055 is 1036 -run/0: ingredient 1 is {name: "i", value: 4, type: 1, properties: ["i": "integer"]} -mem/0: location 1057 is 4 -run/0: address to copy is 1041 -run/0: product 0 is 1041 -mem/0: storing 1041 in location 1059 -run/0: instruction clear-screen/11 -run/0: {name: "c", value: 6, type: 2-4, properties: ["c": "address":"character", "deref": ]} <- copy/1 {name: " ", value: 0, type: 0, properties: [" ": "literal-string"]} -run/0: ingredient 0 is -mem/0: location 1059 is 1041 -mem/0: storing 0 in location 1041 -run/0: instruction clear-screen/12 -run/0: {name: "i", value: 4, type: 1, properties: ["i": "integer"]} <- add/2 {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is i -mem/0: location 1057 is 4 -run/0: ingredient 1 is 1 -run/0: product 0 is 5 -mem/0: storing 5 in location 1057 -run/0: instruction clear-screen/13 -run/0: loop/10 {name: "", value: -6, type: , properties: ["": ]} -run/0: ingredient 0 is -6 -run/0: jumping to instruction 8 -run/0: instruction clear-screen/8 -run/0: {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "max", value: 3, type: 1, properties: ["max": "integer"]} -run/0: ingredient 0 is i -mem/0: location 1057 is 5 -run/0: ingredient 1 is max -mem/0: location 1056 is 15 -run/0: product 0 is 0 -mem/0: storing 0 in location 1058 -run/0: instruction clear-screen/9 -run/0: break-if/11 {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 4, type: , properties: ["": ]} -mem/0: location 1058 is 0 -run/0: ingredient 0 is 0 -run/0: jump-if fell through -run/0: instruction clear-screen/10 -run/0: {name: "c", value: 6, type: 2-4, properties: ["c": "address":"character"]} <- index-address/27 {name: "buf", value: 2, type: 2-5-4, properties: ["buf": "address":"array":"character", "deref": ]}, {name: "i", value: 4, type: 1, properties: ["i": "integer"]} -run/0: ingredient 0 is buf -mem/0: location 1055 is 1036 -run/0: ingredient 1 is {name: "i", value: 4, type: 1, properties: ["i": "integer"]} -mem/0: location 1057 is 5 -run/0: address to copy is 1042 -run/0: product 0 is 1042 -mem/0: storing 1042 in location 1059 -run/0: instruction clear-screen/11 -run/0: {name: "c", value: 6, type: 2-4, properties: ["c": "address":"character", "deref": ]} <- copy/1 {name: " ", value: 0, type: 0, properties: [" ": "literal-string"]} -run/0: ingredient 0 is -mem/0: location 1059 is 1042 -mem/0: storing 0 in location 1042 -run/0: instruction clear-screen/12 -run/0: {name: "i", value: 4, type: 1, properties: ["i": "integer"]} <- add/2 {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is i -mem/0: location 1057 is 5 -run/0: ingredient 1 is 1 -run/0: product 0 is 6 -mem/0: storing 6 in location 1057 -run/0: instruction clear-screen/13 -run/0: loop/10 {name: "", value: -6, type: , properties: ["": ]} -run/0: ingredient 0 is -6 -run/0: jumping to instruction 8 -run/0: instruction clear-screen/8 -run/0: {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "max", value: 3, type: 1, properties: ["max": "integer"]} -run/0: ingredient 0 is i -mem/0: location 1057 is 6 -run/0: ingredient 1 is max -mem/0: location 1056 is 15 -run/0: product 0 is 0 -mem/0: storing 0 in location 1058 -run/0: instruction clear-screen/9 -run/0: break-if/11 {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 4, type: , properties: ["": ]} -mem/0: location 1058 is 0 -run/0: ingredient 0 is 0 -run/0: jump-if fell through -run/0: instruction clear-screen/10 -run/0: {name: "c", value: 6, type: 2-4, properties: ["c": "address":"character"]} <- index-address/27 {name: "buf", value: 2, type: 2-5-4, properties: ["buf": "address":"array":"character", "deref": ]}, {name: "i", value: 4, type: 1, properties: ["i": "integer"]} -run/0: ingredient 0 is buf -mem/0: location 1055 is 1036 -run/0: ingredient 1 is {name: "i", value: 4, type: 1, properties: ["i": "integer"]} -mem/0: location 1057 is 6 -run/0: address to copy is 1043 -run/0: product 0 is 1043 -mem/0: storing 1043 in location 1059 -run/0: instruction clear-screen/11 -run/0: {name: "c", value: 6, type: 2-4, properties: ["c": "address":"character", "deref": ]} <- copy/1 {name: " ", value: 0, type: 0, properties: [" ": "literal-string"]} -run/0: ingredient 0 is -mem/0: location 1059 is 1043 -mem/0: storing 0 in location 1043 -run/0: instruction clear-screen/12 -run/0: {name: "i", value: 4, type: 1, properties: ["i": "integer"]} <- add/2 {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is i -mem/0: location 1057 is 6 -run/0: ingredient 1 is 1 -run/0: product 0 is 7 -mem/0: storing 7 in location 1057 -run/0: instruction clear-screen/13 -run/0: loop/10 {name: "", value: -6, type: , properties: ["": ]} -run/0: ingredient 0 is -6 -run/0: jumping to instruction 8 -run/0: instruction clear-screen/8 -run/0: {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "max", value: 3, type: 1, properties: ["max": "integer"]} -run/0: ingredient 0 is i -mem/0: location 1057 is 7 -run/0: ingredient 1 is max -mem/0: location 1056 is 15 -run/0: product 0 is 0 -mem/0: storing 0 in location 1058 -run/0: instruction clear-screen/9 -run/0: break-if/11 {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 4, type: , properties: ["": ]} -mem/0: location 1058 is 0 -run/0: ingredient 0 is 0 -run/0: jump-if fell through -run/0: instruction clear-screen/10 -run/0: {name: "c", value: 6, type: 2-4, properties: ["c": "address":"character"]} <- index-address/27 {name: "buf", value: 2, type: 2-5-4, properties: ["buf": "address":"array":"character", "deref": ]}, {name: "i", value: 4, type: 1, properties: ["i": "integer"]} -run/0: ingredient 0 is buf -mem/0: location 1055 is 1036 -run/0: ingredient 1 is {name: "i", value: 4, type: 1, properties: ["i": "integer"]} -mem/0: location 1057 is 7 -run/0: address to copy is 1044 -run/0: product 0 is 1044 -mem/0: storing 1044 in location 1059 -run/0: instruction clear-screen/11 -run/0: {name: "c", value: 6, type: 2-4, properties: ["c": "address":"character", "deref": ]} <- copy/1 {name: " ", value: 0, type: 0, properties: [" ": "literal-string"]} -run/0: ingredient 0 is -mem/0: location 1059 is 1044 -mem/0: storing 0 in location 1044 -run/0: instruction clear-screen/12 -run/0: {name: "i", value: 4, type: 1, properties: ["i": "integer"]} <- add/2 {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is i -mem/0: location 1057 is 7 -run/0: ingredient 1 is 1 -run/0: product 0 is 8 -mem/0: storing 8 in location 1057 -run/0: instruction clear-screen/13 -run/0: loop/10 {name: "", value: -6, type: , properties: ["": ]} -run/0: ingredient 0 is -6 -run/0: jumping to instruction 8 -run/0: instruction clear-screen/8 -run/0: {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "max", value: 3, type: 1, properties: ["max": "integer"]} -run/0: ingredient 0 is i -mem/0: location 1057 is 8 -run/0: ingredient 1 is max -mem/0: location 1056 is 15 -run/0: product 0 is 0 -mem/0: storing 0 in location 1058 -run/0: instruction clear-screen/9 -run/0: break-if/11 {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 4, type: , properties: ["": ]} -mem/0: location 1058 is 0 -run/0: ingredient 0 is 0 -run/0: jump-if fell through -run/0: instruction clear-screen/10 -run/0: {name: "c", value: 6, type: 2-4, properties: ["c": "address":"character"]} <- index-address/27 {name: "buf", value: 2, type: 2-5-4, properties: ["buf": "address":"array":"character", "deref": ]}, {name: "i", value: 4, type: 1, properties: ["i": "integer"]} -run/0: ingredient 0 is buf -mem/0: location 1055 is 1036 -run/0: ingredient 1 is {name: "i", value: 4, type: 1, properties: ["i": "integer"]} -mem/0: location 1057 is 8 -run/0: address to copy is 1045 -run/0: product 0 is 1045 -mem/0: storing 1045 in location 1059 -run/0: instruction clear-screen/11 -run/0: {name: "c", value: 6, type: 2-4, properties: ["c": "address":"character", "deref": ]} <- copy/1 {name: " ", value: 0, type: 0, properties: [" ": "literal-string"]} -run/0: ingredient 0 is -mem/0: location 1059 is 1045 -mem/0: storing 0 in location 1045 -run/0: instruction clear-screen/12 -run/0: {name: "i", value: 4, type: 1, properties: ["i": "integer"]} <- add/2 {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is i -mem/0: location 1057 is 8 -run/0: ingredient 1 is 1 -run/0: product 0 is 9 -mem/0: storing 9 in location 1057 -run/0: instruction clear-screen/13 -run/0: loop/10 {name: "", value: -6, type: , properties: ["": ]} -run/0: ingredient 0 is -6 -run/0: jumping to instruction 8 -run/0: instruction clear-screen/8 -run/0: {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "max", value: 3, type: 1, properties: ["max": "integer"]} -run/0: ingredient 0 is i -mem/0: location 1057 is 9 -run/0: ingredient 1 is max -mem/0: location 1056 is 15 -run/0: product 0 is 0 -mem/0: storing 0 in location 1058 -run/0: instruction clear-screen/9 -run/0: break-if/11 {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 4, type: , properties: ["": ]} -mem/0: location 1058 is 0 -run/0: ingredient 0 is 0 -run/0: jump-if fell through -run/0: instruction clear-screen/10 -run/0: {name: "c", value: 6, type: 2-4, properties: ["c": "address":"character"]} <- index-address/27 {name: "buf", value: 2, type: 2-5-4, properties: ["buf": "address":"array":"character", "deref": ]}, {name: "i", value: 4, type: 1, properties: ["i": "integer"]} -run/0: ingredient 0 is buf -mem/0: location 1055 is 1036 -run/0: ingredient 1 is {name: "i", value: 4, type: 1, properties: ["i": "integer"]} -mem/0: location 1057 is 9 -run/0: address to copy is 1046 -run/0: product 0 is 1046 -mem/0: storing 1046 in location 1059 -run/0: instruction clear-screen/11 -run/0: {name: "c", value: 6, type: 2-4, properties: ["c": "address":"character", "deref": ]} <- copy/1 {name: " ", value: 0, type: 0, properties: [" ": "literal-string"]} -run/0: ingredient 0 is -mem/0: location 1059 is 1046 -mem/0: storing 0 in location 1046 -run/0: instruction clear-screen/12 -run/0: {name: "i", value: 4, type: 1, properties: ["i": "integer"]} <- add/2 {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is i -mem/0: location 1057 is 9 -run/0: ingredient 1 is 1 -run/0: product 0 is 10 -mem/0: storing 10 in location 1057 -run/0: instruction clear-screen/13 -run/0: loop/10 {name: "", value: -6, type: , properties: ["": ]} -run/0: ingredient 0 is -6 -run/0: jumping to instruction 8 -run/0: instruction clear-screen/8 -run/0: {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "max", value: 3, type: 1, properties: ["max": "integer"]} -run/0: ingredient 0 is i -mem/0: location 1057 is 10 -run/0: ingredient 1 is max -mem/0: location 1056 is 15 -run/0: product 0 is 0 -mem/0: storing 0 in location 1058 -run/0: instruction clear-screen/9 -run/0: break-if/11 {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 4, type: , properties: ["": ]} -mem/0: location 1058 is 0 -run/0: ingredient 0 is 0 -run/0: jump-if fell through -run/0: instruction clear-screen/10 -run/0: {name: "c", value: 6, type: 2-4, properties: ["c": "address":"character"]} <- index-address/27 {name: "buf", value: 2, type: 2-5-4, properties: ["buf": "address":"array":"character", "deref": ]}, {name: "i", value: 4, type: 1, properties: ["i": "integer"]} -run/0: ingredient 0 is buf -mem/0: location 1055 is 1036 -run/0: ingredient 1 is {name: "i", value: 4, type: 1, properties: ["i": "integer"]} -mem/0: location 1057 is 10 -run/0: address to copy is 1047 -run/0: product 0 is 1047 -mem/0: storing 1047 in location 1059 -run/0: instruction clear-screen/11 -run/0: {name: "c", value: 6, type: 2-4, properties: ["c": "address":"character", "deref": ]} <- copy/1 {name: " ", value: 0, type: 0, properties: [" ": "literal-string"]} -run/0: ingredient 0 is -mem/0: location 1059 is 1047 -mem/0: storing 0 in location 1047 -run/0: instruction clear-screen/12 -run/0: {name: "i", value: 4, type: 1, properties: ["i": "integer"]} <- add/2 {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is i -mem/0: location 1057 is 10 -run/0: ingredient 1 is 1 -run/0: product 0 is 11 -mem/0: storing 11 in location 1057 -run/0: instruction clear-screen/13 -run/0: loop/10 {name: "", value: -6, type: , properties: ["": ]} -run/0: ingredient 0 is -6 -run/0: jumping to instruction 8 -run/0: instruction clear-screen/8 -run/0: {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "max", value: 3, type: 1, properties: ["max": "integer"]} -run/0: ingredient 0 is i -mem/0: location 1057 is 11 -run/0: ingredient 1 is max -mem/0: location 1056 is 15 -run/0: product 0 is 0 -mem/0: storing 0 in location 1058 -run/0: instruction clear-screen/9 -run/0: break-if/11 {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 4, type: , properties: ["": ]} -mem/0: location 1058 is 0 -run/0: ingredient 0 is 0 -run/0: jump-if fell through -run/0: instruction clear-screen/10 -run/0: {name: "c", value: 6, type: 2-4, properties: ["c": "address":"character"]} <- index-address/27 {name: "buf", value: 2, type: 2-5-4, properties: ["buf": "address":"array":"character", "deref": ]}, {name: "i", value: 4, type: 1, properties: ["i": "integer"]} -run/0: ingredient 0 is buf -mem/0: location 1055 is 1036 -run/0: ingredient 1 is {name: "i", value: 4, type: 1, properties: ["i": "integer"]} -mem/0: location 1057 is 11 -run/0: address to copy is 1048 -run/0: product 0 is 1048 -mem/0: storing 1048 in location 1059 -run/0: instruction clear-screen/11 -run/0: {name: "c", value: 6, type: 2-4, properties: ["c": "address":"character", "deref": ]} <- copy/1 {name: " ", value: 0, type: 0, properties: [" ": "literal-string"]} -run/0: ingredient 0 is -mem/0: location 1059 is 1048 -mem/0: storing 0 in location 1048 -run/0: instruction clear-screen/12 -run/0: {name: "i", value: 4, type: 1, properties: ["i": "integer"]} <- add/2 {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is i -mem/0: location 1057 is 11 -run/0: ingredient 1 is 1 -run/0: product 0 is 12 -mem/0: storing 12 in location 1057 -run/0: instruction clear-screen/13 -run/0: loop/10 {name: "", value: -6, type: , properties: ["": ]} -run/0: ingredient 0 is -6 -run/0: jumping to instruction 8 -run/0: instruction clear-screen/8 -run/0: {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "max", value: 3, type: 1, properties: ["max": "integer"]} -run/0: ingredient 0 is i -mem/0: location 1057 is 12 -run/0: ingredient 1 is max -mem/0: location 1056 is 15 -run/0: product 0 is 0 -mem/0: storing 0 in location 1058 -run/0: instruction clear-screen/9 -run/0: break-if/11 {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 4, type: , properties: ["": ]} -mem/0: location 1058 is 0 -run/0: ingredient 0 is 0 -run/0: jump-if fell through -run/0: instruction clear-screen/10 -run/0: {name: "c", value: 6, type: 2-4, properties: ["c": "address":"character"]} <- index-address/27 {name: "buf", value: 2, type: 2-5-4, properties: ["buf": "address":"array":"character", "deref": ]}, {name: "i", value: 4, type: 1, properties: ["i": "integer"]} -run/0: ingredient 0 is buf -mem/0: location 1055 is 1036 -run/0: ingredient 1 is {name: "i", value: 4, type: 1, properties: ["i": "integer"]} -mem/0: location 1057 is 12 -run/0: address to copy is 1049 -run/0: product 0 is 1049 -mem/0: storing 1049 in location 1059 -run/0: instruction clear-screen/11 -run/0: {name: "c", value: 6, type: 2-4, properties: ["c": "address":"character", "deref": ]} <- copy/1 {name: " ", value: 0, type: 0, properties: [" ": "literal-string"]} -run/0: ingredient 0 is -mem/0: location 1059 is 1049 -mem/0: storing 0 in location 1049 -run/0: instruction clear-screen/12 -run/0: {name: "i", value: 4, type: 1, properties: ["i": "integer"]} <- add/2 {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is i -mem/0: location 1057 is 12 -run/0: ingredient 1 is 1 -run/0: product 0 is 13 -mem/0: storing 13 in location 1057 -run/0: instruction clear-screen/13 -run/0: loop/10 {name: "", value: -6, type: , properties: ["": ]} -run/0: ingredient 0 is -6 -run/0: jumping to instruction 8 -run/0: instruction clear-screen/8 -run/0: {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "max", value: 3, type: 1, properties: ["max": "integer"]} -run/0: ingredient 0 is i -mem/0: location 1057 is 13 -run/0: ingredient 1 is max -mem/0: location 1056 is 15 -run/0: product 0 is 0 -mem/0: storing 0 in location 1058 -run/0: instruction clear-screen/9 -run/0: break-if/11 {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 4, type: , properties: ["": ]} -mem/0: location 1058 is 0 -run/0: ingredient 0 is 0 -run/0: jump-if fell through -run/0: instruction clear-screen/10 -run/0: {name: "c", value: 6, type: 2-4, properties: ["c": "address":"character"]} <- index-address/27 {name: "buf", value: 2, type: 2-5-4, properties: ["buf": "address":"array":"character", "deref": ]}, {name: "i", value: 4, type: 1, properties: ["i": "integer"]} -run/0: ingredient 0 is buf -mem/0: location 1055 is 1036 -run/0: ingredient 1 is {name: "i", value: 4, type: 1, properties: ["i": "integer"]} -mem/0: location 1057 is 13 -run/0: address to copy is 1050 -run/0: product 0 is 1050 -mem/0: storing 1050 in location 1059 -run/0: instruction clear-screen/11 -run/0: {name: "c", value: 6, type: 2-4, properties: ["c": "address":"character", "deref": ]} <- copy/1 {name: " ", value: 0, type: 0, properties: [" ": "literal-string"]} -run/0: ingredient 0 is -mem/0: location 1059 is 1050 -mem/0: storing 0 in location 1050 -run/0: instruction clear-screen/12 -run/0: {name: "i", value: 4, type: 1, properties: ["i": "integer"]} <- add/2 {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is i -mem/0: location 1057 is 13 -run/0: ingredient 1 is 1 -run/0: product 0 is 14 -mem/0: storing 14 in location 1057 -run/0: instruction clear-screen/13 -run/0: loop/10 {name: "", value: -6, type: , properties: ["": ]} -run/0: ingredient 0 is -6 -run/0: jumping to instruction 8 -run/0: instruction clear-screen/8 -run/0: {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "max", value: 3, type: 1, properties: ["max": "integer"]} -run/0: ingredient 0 is i -mem/0: location 1057 is 14 -run/0: ingredient 1 is max -mem/0: location 1056 is 15 -run/0: product 0 is 0 -mem/0: storing 0 in location 1058 -run/0: instruction clear-screen/9 -run/0: break-if/11 {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 4, type: , properties: ["": ]} -mem/0: location 1058 is 0 -run/0: ingredient 0 is 0 -run/0: jump-if fell through -run/0: instruction clear-screen/10 -run/0: {name: "c", value: 6, type: 2-4, properties: ["c": "address":"character"]} <- index-address/27 {name: "buf", value: 2, type: 2-5-4, properties: ["buf": "address":"array":"character", "deref": ]}, {name: "i", value: 4, type: 1, properties: ["i": "integer"]} -run/0: ingredient 0 is buf -mem/0: location 1055 is 1036 -run/0: ingredient 1 is {name: "i", value: 4, type: 1, properties: ["i": "integer"]} -mem/0: location 1057 is 14 -run/0: address to copy is 1051 -run/0: product 0 is 1051 -mem/0: storing 1051 in location 1059 -run/0: instruction clear-screen/11 -run/0: {name: "c", value: 6, type: 2-4, properties: ["c": "address":"character", "deref": ]} <- copy/1 {name: " ", value: 0, type: 0, properties: [" ": "literal-string"]} -run/0: ingredient 0 is -mem/0: location 1059 is 1051 -mem/0: storing 0 in location 1051 -run/0: instruction clear-screen/12 -run/0: {name: "i", value: 4, type: 1, properties: ["i": "integer"]} <- add/2 {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is i -mem/0: location 1057 is 14 -run/0: ingredient 1 is 1 -run/0: product 0 is 15 -mem/0: storing 15 in location 1057 -run/0: instruction clear-screen/13 -run/0: loop/10 {name: "", value: -6, type: , properties: ["": ]} -run/0: ingredient 0 is -6 -run/0: jumping to instruction 8 -run/0: instruction clear-screen/8 -run/0: {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "max", value: 3, type: 1, properties: ["max": "integer"]} -run/0: ingredient 0 is i -mem/0: location 1057 is 15 -run/0: ingredient 1 is max -mem/0: location 1056 is 15 -run/0: product 0 is 1 -mem/0: storing 1 in location 1058 -run/0: instruction clear-screen/9 -run/0: break-if/11 {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 4, type: , properties: ["": ]} -mem/0: location 1058 is 1 -run/0: ingredient 0 is 1 -run/0: ingredient 1 is -run/0: jumping to instruction 14 -run/0: instruction clear-screen/15 -run/0: reply/33 {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen", "same-as-ingredient": "0"]} -mem/0: location 1054 is 1031 -run/0: instruction init-fake-screen/14 -run/0: reply/33 {name: "result", value: 1, type: 2-11, properties: ["result": "address":"screen"]} -mem/0: location 1002 is 1031 -run/0: result 0 is 1031 -mem/0: storing 1031 in location 900 -run/0: instruction screen-in-scenario/1 -run/0: run/45 {name: " - screen:address <- print-character screen:address, 97:literal # 'a' - ", value: 0, type: 0, properties: [" - screen:address <- print-character screen:address, 97:literal # 'a' - ": "literal-string"]} -parse/0: instruction: print-character -parse/0: ingredient: {name: "screen", value: 0, type: 2, properties: ["screen": "address"]} -parse/0: ingredient: {name: "97", value: 0, type: 0, properties: ["97": "literal"]} -parse/0: product: {name: "screen", value: 0, type: 2, properties: ["screen": "address"]} -after-brace/0: recipe run1002 -after-brace/0: print-character ... -run/0: instruction run1002/0 -run/0: {name: "screen", value: 900, type: 2, properties: ["screen": "address"]} <- print-character/117 {name: "screen", value: 900, type: 2, properties: ["screen": "address"]}, {name: "97", value: 97, type: 0, properties: ["97": "literal"]} -mem/0: location 900 is 1031 -run/0: instruction print-character/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/44 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} -mem/0: array size is 30 -mem/0: new alloc: 1083 -run/0: instruction print-character/1 -run/0: {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen"]} <- next-ingredient/30 -run/0: product 0 is 1031 -mem/0: storing 1031 in location 1085 -run/0: instruction print-character/2 -run/0: {name: "c", value: 2, type: 4, properties: ["c": "character"]} <- next-ingredient/30 -run/0: product 0 is 97 -mem/0: storing 97 in location 1086 -run/0: instruction print-character/4 -run/0: break-unless/12 {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen"]}, {name: "", value: 14, type: , properties: ["": ]} -mem/0: location 1085 is 1031 -run/0: ingredient 0 is 1031 -run/0: jump-unless fell through -run/0: instruction print-character/5 -run/0: {name: "row", value: 3, type: 2-1, properties: ["row": "address":"integer"]} <- get-address/25 {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen", "deref": ]}, {name: "cursor-row", value: 2, type: 0, properties: ["cursor-row": "offset"]} -run/0: ingredient 0 is x -mem/0: location 1085 is 1031 -run/0: ingredient 1 is cursor-row -run/0: address to copy is 1033 -run/0: product 0 is 1033 -mem/0: storing 1033 in location 1087 -run/0: instruction print-character/6 -run/0: {name: "column", value: 4, type: 2-1, properties: ["column": "address":"integer"]} <- get-address/25 {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen", "deref": ]}, {name: "cursor-column", value: 3, type: 0, properties: ["cursor-column": "offset"]} -run/0: ingredient 0 is x -mem/0: location 1085 is 1031 -run/0: ingredient 1 is cursor-column -run/0: address to copy is 1034 -run/0: product 0 is 1034 -mem/0: storing 1034 in location 1088 -run/0: instruction print-character/7 -run/0: {name: "width", value: 5, type: 1, properties: ["width": "integer"]} <- get/24 {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen", "deref": ]}, {name: "num-columns", value: 1, type: 0, properties: ["num-columns": "offset"]} -run/0: ingredient 0 is x -mem/0: location 1085 is 1031 -run/0: ingredient 1 is num-columns -run/0: address to copy is 1032 -run/0: its type is 1 -mem/0: location 1032 is 5 -run/0: product 0 is 5 -mem/0: storing 5 in location 1089 -run/0: instruction print-character/8 -run/0: {name: "index", value: 6, type: 1, properties: ["index": "integer"]} <- multiply/4 {name: "row", value: 3, type: 2-1, properties: ["row": "address":"integer", "deref": ]}, {name: "width", value: 5, type: 1, properties: ["width": "integer"]} -run/0: ingredient 0 is row -mem/0: location 1087 is 1033 -mem/0: location 1033 is 0 -run/0: ingredient 1 is width -mem/0: location 1089 is 5 -run/0: ingredient 1 is 5 -run/0: product 0 is 0 -mem/0: storing 0 in location 1090 -run/0: instruction print-character/9 -run/0: {name: "index", value: 6, type: 1, properties: ["index": "integer"]} <- add/2 {name: "index", value: 6, type: 1, properties: ["index": "integer"]}, {name: "column", value: 4, type: 2-1, properties: ["column": "address":"integer", "deref": ]} -run/0: ingredient 0 is index -mem/0: location 1090 is 0 -run/0: ingredient 1 is column -mem/0: location 1088 is 1034 -mem/0: location 1034 is 0 -run/0: product 0 is 0 -mem/0: storing 0 in location 1090 -run/0: instruction print-character/10 -run/0: {name: "buf", value: 7, type: 2-5-4, properties: ["buf": "address":"array":"character"]} <- get/24 {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen", "deref": ]}, {name: "data", value: 4, type: 0, properties: ["data": "offset"]} -run/0: ingredient 0 is x -mem/0: location 1085 is 1031 -run/0: ingredient 1 is data -run/0: address to copy is 1035 -run/0: its type is 2 -mem/0: location 1035 is 1036 -run/0: product 0 is 1036 -mem/0: storing 1036 in location 1091 -run/0: instruction print-character/11 -run/0: {name: "cursor", value: 8, type: 2-4, properties: ["cursor": "address":"character"]} <- index-address/27 {name: "buf", value: 7, type: 2-5-4, properties: ["buf": "address":"array":"character", "deref": ]}, {name: "index", value: 6, type: 1, properties: ["index": "integer"]} -run/0: ingredient 0 is buf -mem/0: location 1091 is 1036 -run/0: ingredient 1 is {name: "index", value: 6, type: 1, properties: ["index": "integer"]} -mem/0: location 1090 is 0 -run/0: address to copy is 1037 -run/0: product 0 is 1037 -mem/0: storing 1037 in location 1092 -run/0: instruction print-character/12 -run/0: {name: "cursor", value: 8, type: 2-4, properties: ["cursor": "address":"character", "deref": ]} <- copy/1 {name: "c", value: 2, type: 4, properties: ["c": "character"]} -run/0: ingredient 0 is c -mem/0: location 1086 is 97 -mem/0: location 1092 is 1037 -mem/0: storing 97 in location 1037 -run/0: instruction print-character/14 -run/0: {name: "at-right?", value: 9, type: 3, properties: ["at-right?": "boolean"]} <- equal/13 {name: "column", value: 4, type: 2-1, properties: ["column": "address":"integer", "deref": ]}, {name: "width", value: 5, type: 1, properties: ["width": "integer"]} -run/0: ingredient 0 is column -mem/0: location 1088 is 1034 -mem/0: location 1034 is 0 -run/0: ingredient 1 is width -mem/0: location 1089 is 5 -run/0: product 0 is 0 -mem/0: storing 0 in location 1093 -run/0: instruction print-character/15 -run/0: break-if/11 {name: "at-right?", value: 9, type: 3, properties: ["at-right?": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} -mem/0: location 1093 is 0 -run/0: ingredient 0 is 0 -run/0: jump-if fell through -run/0: instruction print-character/16 -run/0: {name: "column", value: 4, type: 2-1, properties: ["column": "address":"integer", "deref": ]} <- add/2 {name: "column", value: 4, type: 2-1, properties: ["column": "address":"integer", "deref": ]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is column -mem/0: location 1088 is 1034 -mem/0: location 1034 is 0 -run/0: ingredient 1 is 1 -run/0: product 0 is 1 -mem/0: location 1088 is 1034 -mem/0: storing 1 in location 1034 -run/0: instruction print-character/18 -run/0: reply/33 {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen", "same-as-ingredient": "0"]} -mem/0: location 1085 is 1031 -run/0: result 0 is 1031 -mem/0: storing 1031 in location 900 -run/0: instruction screen-in-scenario/2 -run/0: screen-should-contain/62 {name: " - # 01234 - .a . - . . - . . - ", value: 0, type: 0, properties: [" - # 01234 - .a . - . . - . . - ": "literal-string"]} -run/0: checking screen size at 1036 -run/0: checking location 1037 -run/0: checking location 1038 -run/0: checking location 1039 -run/0: checking location 1040 -run/0: checking location 1041 -run/0: checking location 1042 -run/0: checking location 1043 -run/0: checking location 1044 -run/0: checking location 1045 -run/0: checking location 1046 -run/0: checking location 1047 -run/0: checking location 1048 -run/0: checking location 1049 -run/0: checking location 1050 -run/0: checking location 1051 diff --git a/cpp/.traces/screen_in_scenario_error b/cpp/.traces/screen_in_scenario_error deleted file mode 100644 index 218d5f40..00000000 --- a/cpp/.traces/screen_in_scenario_error +++ /dev/null @@ -1,886 +0,0 @@ -parse/0: instruction: assume-screen -parse/0: ingredient: {name: "5", value: 0, type: 0, properties: ["5": "literal", "width": ]} -parse/0: ingredient: {name: "3", value: 0, type: 0, properties: ["3": "literal", "height": ]} -parse/0: instruction: run -parse/0: ingredient: {name: " - screen:address <- print-character screen:address, 97:literal # 'a' - ", value: 0, type: 0, properties: [" - screen:address <- print-character screen:address, 97:literal # 'a' - ": "literal-string"]} -parse/0: instruction: screen-should-contain -parse/0: ingredient: {name: " - # 01234 - .b . - . . - . . - ", value: 0, type: 0, properties: [" - # 01234 - .b . - . . - . . - ": "literal-string"]} -after-brace/0: recipe screen-in-scenario-error -after-brace/0: assume-screen ... -after-brace/0: run ... -after-brace/0: screen-should-contain ... -new/0: routine allocated memory from 1000 to 101000 -schedule/0: screen-in-scenario-error -run/0: instruction screen-in-scenario-error/0 -run/0: {name: "screen", value: 900, type: 2, properties: ["screen": "address"]} <- assume-screen/115 {name: "5", value: 5, type: 0, properties: ["5": "literal", "width": ]}, {name: "3", value: 3, type: 0, properties: ["3": "literal", "height": ]} -run/0: instruction init-fake-screen/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/44 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal", "capacity": ]} -mem/0: array size is 30 -mem/0: new alloc: 1000 -run/0: instruction init-fake-screen/1 -run/0: {name: "result", value: 1, type: 2-11, properties: ["result": "address":"screen"]} <- new/44 {name: "screen", value: 11, type: 0, properties: ["screen": "type"]} -mem/0: new alloc: 1031 -mem/0: storing 1031 in location 1002 -run/0: instruction init-fake-screen/2 -run/0: {name: "width", value: 2, type: 2-1, properties: ["width": "address":"integer"]} <- get-address/25 {name: "result", value: 1, type: 2-11, properties: ["result": "address":"screen", "deref": ]}, {name: "num-columns", value: 1, type: 0, properties: ["num-columns": "offset"]} -run/0: ingredient 0 is result -mem/0: location 1002 is 1031 -run/0: ingredient 1 is num-columns -run/0: address to copy is 1032 -run/0: product 0 is 1032 -mem/0: storing 1032 in location 1003 -run/0: instruction init-fake-screen/3 -run/0: {name: "width", value: 2, type: 2-1, properties: ["width": "address":"integer", "deref": ]} <- next-ingredient/30 -run/0: product 0 is 5 -mem/0: location 1003 is 1032 -mem/0: storing 5 in location 1032 -run/0: instruction init-fake-screen/4 -run/0: {name: "height", value: 3, type: 2-1, properties: ["height": "address":"integer"]} <- get-address/25 {name: "result", value: 1, type: 2-11, properties: ["result": "address":"screen", "deref": ]}, {name: "num-rows", value: 0, type: 0, properties: ["num-rows": "offset"]} -run/0: ingredient 0 is result -mem/0: location 1002 is 1031 -run/0: ingredient 1 is num-rows -run/0: address to copy is 1031 -run/0: product 0 is 1031 -mem/0: storing 1031 in location 1004 -run/0: instruction init-fake-screen/5 -run/0: {name: "height", value: 3, type: 2-1, properties: ["height": "address":"integer", "deref": ]} <- next-ingredient/30 -run/0: product 0 is 3 -mem/0: location 1004 is 1031 -mem/0: storing 3 in location 1031 -run/0: instruction init-fake-screen/6 -run/0: {name: "row", value: 4, type: 2-1, properties: ["row": "address":"integer"]} <- get-address/25 {name: "result", value: 1, type: 2-11, properties: ["result": "address":"screen", "deref": ]}, {name: "cursor-row", value: 2, type: 0, properties: ["cursor-row": "offset"]} -run/0: ingredient 0 is result -mem/0: location 1002 is 1031 -run/0: ingredient 1 is cursor-row -run/0: address to copy is 1033 -run/0: product 0 is 1033 -mem/0: storing 1033 in location 1005 -run/0: instruction init-fake-screen/7 -run/0: {name: "row", value: 4, type: 2-1, properties: ["row": "address":"integer", "deref": ]} <- copy/1 {name: "0", value: 0, type: 0, properties: ["0": "literal"]} -run/0: ingredient 0 is 0 -mem/0: location 1005 is 1033 -mem/0: storing 0 in location 1033 -run/0: instruction init-fake-screen/8 -run/0: {name: "column", value: 5, type: 2-1, properties: ["column": "address":"integer"]} <- get-address/25 {name: "result", value: 1, type: 2-11, properties: ["result": "address":"screen", "deref": ]}, {name: "cursor-column", value: 3, type: 0, properties: ["cursor-column": "offset"]} -run/0: ingredient 0 is result -mem/0: location 1002 is 1031 -run/0: ingredient 1 is cursor-column -run/0: address to copy is 1034 -run/0: product 0 is 1034 -mem/0: storing 1034 in location 1006 -run/0: instruction init-fake-screen/9 -run/0: {name: "column", value: 5, type: 2-1, properties: ["column": "address":"integer", "deref": ]} <- copy/1 {name: "0", value: 0, type: 0, properties: ["0": "literal"]} -run/0: ingredient 0 is 0 -mem/0: location 1006 is 1034 -mem/0: storing 0 in location 1034 -run/0: instruction init-fake-screen/10 -run/0: {name: "bufsize", value: 6, type: 1, properties: ["bufsize": "integer"]} <- multiply/4 {name: "width", value: 2, type: 2-1, properties: ["width": "address":"integer", "deref": ]}, {name: "height", value: 3, type: 2-1, properties: ["height": "address":"integer", "deref": ]} -run/0: ingredient 0 is width -mem/0: location 1003 is 1032 -mem/0: location 1032 is 5 -run/0: ingredient 1 is height -mem/0: location 1004 is 1031 -mem/0: location 1031 is 3 -run/0: ingredient 1 is 3 -run/0: product 0 is 15 -mem/0: storing 15 in location 1007 -run/0: instruction init-fake-screen/11 -run/0: {name: "buf", value: 7, type: 2-2-5-4, properties: ["buf": "address":"address":"array":"character"]} <- get-address/25 {name: "result", value: 1, type: 2-11, properties: ["result": "address":"screen", "deref": ]}, {name: "data", value: 4, type: 0, properties: ["data": "offset"]} -run/0: ingredient 0 is result -mem/0: location 1002 is 1031 -run/0: ingredient 1 is data -run/0: address to copy is 1035 -run/0: product 0 is 1035 -mem/0: storing 1035 in location 1008 -run/0: instruction init-fake-screen/12 -run/0: {name: "buf", value: 7, type: 2-2-5-4, properties: ["buf": "address":"address":"array":"character", "deref": ]} <- new/44 {name: "character", value: 0, type: 0, properties: ["character": "literal"]}, {name: "bufsize", value: 6, type: 1, properties: ["bufsize": "integer"]} -mem/0: location 1007 is 15 -mem/0: array size is 15 -mem/0: new alloc: 1036 -mem/0: location 1008 is 1035 -mem/0: storing 1036 in location 1035 -run/0: instruction init-fake-screen/13 -run/0: clear-screen/116 {name: "result", value: 1, type: 2-11, properties: ["result": "address":"screen"]} -mem/0: location 1002 is 1031 -run/0: instruction clear-screen/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/44 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} -mem/0: array size is 30 -mem/0: new alloc: 1052 -run/0: instruction clear-screen/1 -run/0: {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen"]} <- next-ingredient/30 -run/0: product 0 is 1031 -mem/0: storing 1031 in location 1054 -run/0: instruction clear-screen/3 -run/0: break-unless/12 {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen"]}, {name: "", value: 12, type: , properties: ["": ]} -mem/0: location 1054 is 1031 -run/0: ingredient 0 is 1031 -run/0: jump-unless fell through -run/0: instruction clear-screen/4 -run/0: {name: "buf", value: 2, type: 2-5-4, properties: ["buf": "address":"array":"character"]} <- get/24 {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen", "deref": ]}, {name: "data", value: 4, type: 0, properties: ["data": "offset"]} -run/0: ingredient 0 is x -mem/0: location 1054 is 1031 -run/0: ingredient 1 is data -run/0: address to copy is 1035 -run/0: its type is 2 -mem/0: location 1035 is 1036 -run/0: product 0 is 1036 -mem/0: storing 1036 in location 1055 -run/0: instruction clear-screen/5 -run/0: {name: "max", value: 3, type: 1, properties: ["max": "integer"]} <- length/28 {name: "buf", value: 2, type: 2-5-4, properties: ["buf": "address":"array":"character", "deref": ]} -mem/0: location 1055 is 1036 -mem/0: storing 15 in location 1056 -run/0: instruction clear-screen/6 -run/0: {name: "i", value: 4, type: 1, properties: ["i": "integer"]} <- copy/1 {name: "0", value: 0, type: 0, properties: ["0": "literal"]} -run/0: ingredient 0 is 0 -mem/0: storing 0 in location 1057 -run/0: instruction clear-screen/8 -run/0: {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "max", value: 3, type: 1, properties: ["max": "integer"]} -run/0: ingredient 0 is i -mem/0: location 1057 is 0 -run/0: ingredient 1 is max -mem/0: location 1056 is 15 -run/0: product 0 is 0 -mem/0: storing 0 in location 1058 -run/0: instruction clear-screen/9 -run/0: break-if/11 {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 4, type: , properties: ["": ]} -mem/0: location 1058 is 0 -run/0: ingredient 0 is 0 -run/0: jump-if fell through -run/0: instruction clear-screen/10 -run/0: {name: "c", value: 6, type: 2-4, properties: ["c": "address":"character"]} <- index-address/27 {name: "buf", value: 2, type: 2-5-4, properties: ["buf": "address":"array":"character", "deref": ]}, {name: "i", value: 4, type: 1, properties: ["i": "integer"]} -run/0: ingredient 0 is buf -mem/0: location 1055 is 1036 -run/0: ingredient 1 is {name: "i", value: 4, type: 1, properties: ["i": "integer"]} -mem/0: location 1057 is 0 -run/0: address to copy is 1037 -run/0: product 0 is 1037 -mem/0: storing 1037 in location 1059 -run/0: instruction clear-screen/11 -run/0: {name: "c", value: 6, type: 2-4, properties: ["c": "address":"character", "deref": ]} <- copy/1 {name: " ", value: 0, type: 0, properties: [" ": "literal-string"]} -run/0: ingredient 0 is -mem/0: location 1059 is 1037 -mem/0: storing 0 in location 1037 -run/0: instruction clear-screen/12 -run/0: {name: "i", value: 4, type: 1, properties: ["i": "integer"]} <- add/2 {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is i -mem/0: location 1057 is 0 -run/0: ingredient 1 is 1 -run/0: product 0 is 1 -mem/0: storing 1 in location 1057 -run/0: instruction clear-screen/13 -run/0: loop/10 {name: "", value: -6, type: , properties: ["": ]} -run/0: ingredient 0 is -6 -run/0: jumping to instruction 8 -run/0: instruction clear-screen/8 -run/0: {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "max", value: 3, type: 1, properties: ["max": "integer"]} -run/0: ingredient 0 is i -mem/0: location 1057 is 1 -run/0: ingredient 1 is max -mem/0: location 1056 is 15 -run/0: product 0 is 0 -mem/0: storing 0 in location 1058 -run/0: instruction clear-screen/9 -run/0: break-if/11 {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 4, type: , properties: ["": ]} -mem/0: location 1058 is 0 -run/0: ingredient 0 is 0 -run/0: jump-if fell through -run/0: instruction clear-screen/10 -run/0: {name: "c", value: 6, type: 2-4, properties: ["c": "address":"character"]} <- index-address/27 {name: "buf", value: 2, type: 2-5-4, properties: ["buf": "address":"array":"character", "deref": ]}, {name: "i", value: 4, type: 1, properties: ["i": "integer"]} -run/0: ingredient 0 is buf -mem/0: location 1055 is 1036 -run/0: ingredient 1 is {name: "i", value: 4, type: 1, properties: ["i": "integer"]} -mem/0: location 1057 is 1 -run/0: address to copy is 1038 -run/0: product 0 is 1038 -mem/0: storing 1038 in location 1059 -run/0: instruction clear-screen/11 -run/0: {name: "c", value: 6, type: 2-4, properties: ["c": "address":"character", "deref": ]} <- copy/1 {name: " ", value: 0, type: 0, properties: [" ": "literal-string"]} -run/0: ingredient 0 is -mem/0: location 1059 is 1038 -mem/0: storing 0 in location 1038 -run/0: instruction clear-screen/12 -run/0: {name: "i", value: 4, type: 1, properties: ["i": "integer"]} <- add/2 {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is i -mem/0: location 1057 is 1 -run/0: ingredient 1 is 1 -run/0: product 0 is 2 -mem/0: storing 2 in location 1057 -run/0: instruction clear-screen/13 -run/0: loop/10 {name: "", value: -6, type: , properties: ["": ]} -run/0: ingredient 0 is -6 -run/0: jumping to instruction 8 -run/0: instruction clear-screen/8 -run/0: {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "max", value: 3, type: 1, properties: ["max": "integer"]} -run/0: ingredient 0 is i -mem/0: location 1057 is 2 -run/0: ingredient 1 is max -mem/0: location 1056 is 15 -run/0: product 0 is 0 -mem/0: storing 0 in location 1058 -run/0: instruction clear-screen/9 -run/0: break-if/11 {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 4, type: , properties: ["": ]} -mem/0: location 1058 is 0 -run/0: ingredient 0 is 0 -run/0: jump-if fell through -run/0: instruction clear-screen/10 -run/0: {name: "c", value: 6, type: 2-4, properties: ["c": "address":"character"]} <- index-address/27 {name: "buf", value: 2, type: 2-5-4, properties: ["buf": "address":"array":"character", "deref": ]}, {name: "i", value: 4, type: 1, properties: ["i": "integer"]} -run/0: ingredient 0 is buf -mem/0: location 1055 is 1036 -run/0: ingredient 1 is {name: "i", value: 4, type: 1, properties: ["i": "integer"]} -mem/0: location 1057 is 2 -run/0: address to copy is 1039 -run/0: product 0 is 1039 -mem/0: storing 1039 in location 1059 -run/0: instruction clear-screen/11 -run/0: {name: "c", value: 6, type: 2-4, properties: ["c": "address":"character", "deref": ]} <- copy/1 {name: " ", value: 0, type: 0, properties: [" ": "literal-string"]} -run/0: ingredient 0 is -mem/0: location 1059 is 1039 -mem/0: storing 0 in location 1039 -run/0: instruction clear-screen/12 -run/0: {name: "i", value: 4, type: 1, properties: ["i": "integer"]} <- add/2 {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is i -mem/0: location 1057 is 2 -run/0: ingredient 1 is 1 -run/0: product 0 is 3 -mem/0: storing 3 in location 1057 -run/0: instruction clear-screen/13 -run/0: loop/10 {name: "", value: -6, type: , properties: ["": ]} -run/0: ingredient 0 is -6 -run/0: jumping to instruction 8 -run/0: instruction clear-screen/8 -run/0: {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "max", value: 3, type: 1, properties: ["max": "integer"]} -run/0: ingredient 0 is i -mem/0: location 1057 is 3 -run/0: ingredient 1 is max -mem/0: location 1056 is 15 -run/0: product 0 is 0 -mem/0: storing 0 in location 1058 -run/0: instruction clear-screen/9 -run/0: break-if/11 {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 4, type: , properties: ["": ]} -mem/0: location 1058 is 0 -run/0: ingredient 0 is 0 -run/0: jump-if fell through -run/0: instruction clear-screen/10 -run/0: {name: "c", value: 6, type: 2-4, properties: ["c": "address":"character"]} <- index-address/27 {name: "buf", value: 2, type: 2-5-4, properties: ["buf": "address":"array":"character", "deref": ]}, {name: "i", value: 4, type: 1, properties: ["i": "integer"]} -run/0: ingredient 0 is buf -mem/0: location 1055 is 1036 -run/0: ingredient 1 is {name: "i", value: 4, type: 1, properties: ["i": "integer"]} -mem/0: location 1057 is 3 -run/0: address to copy is 1040 -run/0: product 0 is 1040 -mem/0: storing 1040 in location 1059 -run/0: instruction clear-screen/11 -run/0: {name: "c", value: 6, type: 2-4, properties: ["c": "address":"character", "deref": ]} <- copy/1 {name: " ", value: 0, type: 0, properties: [" ": "literal-string"]} -run/0: ingredient 0 is -mem/0: location 1059 is 1040 -mem/0: storing 0 in location 1040 -run/0: instruction clear-screen/12 -run/0: {name: "i", value: 4, type: 1, properties: ["i": "integer"]} <- add/2 {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is i -mem/0: location 1057 is 3 -run/0: ingredient 1 is 1 -run/0: product 0 is 4 -mem/0: storing 4 in location 1057 -run/0: instruction clear-screen/13 -run/0: loop/10 {name: "", value: -6, type: , properties: ["": ]} -run/0: ingredient 0 is -6 -run/0: jumping to instruction 8 -run/0: instruction clear-screen/8 -run/0: {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "max", value: 3, type: 1, properties: ["max": "integer"]} -run/0: ingredient 0 is i -mem/0: location 1057 is 4 -run/0: ingredient 1 is max -mem/0: location 1056 is 15 -run/0: product 0 is 0 -mem/0: storing 0 in location 1058 -run/0: instruction clear-screen/9 -run/0: break-if/11 {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 4, type: , properties: ["": ]} -mem/0: location 1058 is 0 -run/0: ingredient 0 is 0 -run/0: jump-if fell through -run/0: instruction clear-screen/10 -run/0: {name: "c", value: 6, type: 2-4, properties: ["c": "address":"character"]} <- index-address/27 {name: "buf", value: 2, type: 2-5-4, properties: ["buf": "address":"array":"character", "deref": ]}, {name: "i", value: 4, type: 1, properties: ["i": "integer"]} -run/0: ingredient 0 is buf -mem/0: location 1055 is 1036 -run/0: ingredient 1 is {name: "i", value: 4, type: 1, properties: ["i": "integer"]} -mem/0: location 1057 is 4 -run/0: address to copy is 1041 -run/0: product 0 is 1041 -mem/0: storing 1041 in location 1059 -run/0: instruction clear-screen/11 -run/0: {name: "c", value: 6, type: 2-4, properties: ["c": "address":"character", "deref": ]} <- copy/1 {name: " ", value: 0, type: 0, properties: [" ": "literal-string"]} -run/0: ingredient 0 is -mem/0: location 1059 is 1041 -mem/0: storing 0 in location 1041 -run/0: instruction clear-screen/12 -run/0: {name: "i", value: 4, type: 1, properties: ["i": "integer"]} <- add/2 {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is i -mem/0: location 1057 is 4 -run/0: ingredient 1 is 1 -run/0: product 0 is 5 -mem/0: storing 5 in location 1057 -run/0: instruction clear-screen/13 -run/0: loop/10 {name: "", value: -6, type: , properties: ["": ]} -run/0: ingredient 0 is -6 -run/0: jumping to instruction 8 -run/0: instruction clear-screen/8 -run/0: {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "max", value: 3, type: 1, properties: ["max": "integer"]} -run/0: ingredient 0 is i -mem/0: location 1057 is 5 -run/0: ingredient 1 is max -mem/0: location 1056 is 15 -run/0: product 0 is 0 -mem/0: storing 0 in location 1058 -run/0: instruction clear-screen/9 -run/0: break-if/11 {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 4, type: , properties: ["": ]} -mem/0: location 1058 is 0 -run/0: ingredient 0 is 0 -run/0: jump-if fell through -run/0: instruction clear-screen/10 -run/0: {name: "c", value: 6, type: 2-4, properties: ["c": "address":"character"]} <- index-address/27 {name: "buf", value: 2, type: 2-5-4, properties: ["buf": "address":"array":"character", "deref": ]}, {name: "i", value: 4, type: 1, properties: ["i": "integer"]} -run/0: ingredient 0 is buf -mem/0: location 1055 is 1036 -run/0: ingredient 1 is {name: "i", value: 4, type: 1, properties: ["i": "integer"]} -mem/0: location 1057 is 5 -run/0: address to copy is 1042 -run/0: product 0 is 1042 -mem/0: storing 1042 in location 1059 -run/0: instruction clear-screen/11 -run/0: {name: "c", value: 6, type: 2-4, properties: ["c": "address":"character", "deref": ]} <- copy/1 {name: " ", value: 0, type: 0, properties: [" ": "literal-string"]} -run/0: ingredient 0 is -mem/0: location 1059 is 1042 -mem/0: storing 0 in location 1042 -run/0: instruction clear-screen/12 -run/0: {name: "i", value: 4, type: 1, properties: ["i": "integer"]} <- add/2 {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is i -mem/0: location 1057 is 5 -run/0: ingredient 1 is 1 -run/0: product 0 is 6 -mem/0: storing 6 in location 1057 -run/0: instruction clear-screen/13 -run/0: loop/10 {name: "", value: -6, type: , properties: ["": ]} -run/0: ingredient 0 is -6 -run/0: jumping to instruction 8 -run/0: instruction clear-screen/8 -run/0: {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "max", value: 3, type: 1, properties: ["max": "integer"]} -run/0: ingredient 0 is i -mem/0: location 1057 is 6 -run/0: ingredient 1 is max -mem/0: location 1056 is 15 -run/0: product 0 is 0 -mem/0: storing 0 in location 1058 -run/0: instruction clear-screen/9 -run/0: break-if/11 {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 4, type: , properties: ["": ]} -mem/0: location 1058 is 0 -run/0: ingredient 0 is 0 -run/0: jump-if fell through -run/0: instruction clear-screen/10 -run/0: {name: "c", value: 6, type: 2-4, properties: ["c": "address":"character"]} <- index-address/27 {name: "buf", value: 2, type: 2-5-4, properties: ["buf": "address":"array":"character", "deref": ]}, {name: "i", value: 4, type: 1, properties: ["i": "integer"]} -run/0: ingredient 0 is buf -mem/0: location 1055 is 1036 -run/0: ingredient 1 is {name: "i", value: 4, type: 1, properties: ["i": "integer"]} -mem/0: location 1057 is 6 -run/0: address to copy is 1043 -run/0: product 0 is 1043 -mem/0: storing 1043 in location 1059 -run/0: instruction clear-screen/11 -run/0: {name: "c", value: 6, type: 2-4, properties: ["c": "address":"character", "deref": ]} <- copy/1 {name: " ", value: 0, type: 0, properties: [" ": "literal-string"]} -run/0: ingredient 0 is -mem/0: location 1059 is 1043 -mem/0: storing 0 in location 1043 -run/0: instruction clear-screen/12 -run/0: {name: "i", value: 4, type: 1, properties: ["i": "integer"]} <- add/2 {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is i -mem/0: location 1057 is 6 -run/0: ingredient 1 is 1 -run/0: product 0 is 7 -mem/0: storing 7 in location 1057 -run/0: instruction clear-screen/13 -run/0: loop/10 {name: "", value: -6, type: , properties: ["": ]} -run/0: ingredient 0 is -6 -run/0: jumping to instruction 8 -run/0: instruction clear-screen/8 -run/0: {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "max", value: 3, type: 1, properties: ["max": "integer"]} -run/0: ingredient 0 is i -mem/0: location 1057 is 7 -run/0: ingredient 1 is max -mem/0: location 1056 is 15 -run/0: product 0 is 0 -mem/0: storing 0 in location 1058 -run/0: instruction clear-screen/9 -run/0: break-if/11 {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 4, type: , properties: ["": ]} -mem/0: location 1058 is 0 -run/0: ingredient 0 is 0 -run/0: jump-if fell through -run/0: instruction clear-screen/10 -run/0: {name: "c", value: 6, type: 2-4, properties: ["c": "address":"character"]} <- index-address/27 {name: "buf", value: 2, type: 2-5-4, properties: ["buf": "address":"array":"character", "deref": ]}, {name: "i", value: 4, type: 1, properties: ["i": "integer"]} -run/0: ingredient 0 is buf -mem/0: location 1055 is 1036 -run/0: ingredient 1 is {name: "i", value: 4, type: 1, properties: ["i": "integer"]} -mem/0: location 1057 is 7 -run/0: address to copy is 1044 -run/0: product 0 is 1044 -mem/0: storing 1044 in location 1059 -run/0: instruction clear-screen/11 -run/0: {name: "c", value: 6, type: 2-4, properties: ["c": "address":"character", "deref": ]} <- copy/1 {name: " ", value: 0, type: 0, properties: [" ": "literal-string"]} -run/0: ingredient 0 is -mem/0: location 1059 is 1044 -mem/0: storing 0 in location 1044 -run/0: instruction clear-screen/12 -run/0: {name: "i", value: 4, type: 1, properties: ["i": "integer"]} <- add/2 {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is i -mem/0: location 1057 is 7 -run/0: ingredient 1 is 1 -run/0: product 0 is 8 -mem/0: storing 8 in location 1057 -run/0: instruction clear-screen/13 -run/0: loop/10 {name: "", value: -6, type: , properties: ["": ]} -run/0: ingredient 0 is -6 -run/0: jumping to instruction 8 -run/0: instruction clear-screen/8 -run/0: {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "max", value: 3, type: 1, properties: ["max": "integer"]} -run/0: ingredient 0 is i -mem/0: location 1057 is 8 -run/0: ingredient 1 is max -mem/0: location 1056 is 15 -run/0: product 0 is 0 -mem/0: storing 0 in location 1058 -run/0: instruction clear-screen/9 -run/0: break-if/11 {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 4, type: , properties: ["": ]} -mem/0: location 1058 is 0 -run/0: ingredient 0 is 0 -run/0: jump-if fell through -run/0: instruction clear-screen/10 -run/0: {name: "c", value: 6, type: 2-4, properties: ["c": "address":"character"]} <- index-address/27 {name: "buf", value: 2, type: 2-5-4, properties: ["buf": "address":"array":"character", "deref": ]}, {name: "i", value: 4, type: 1, properties: ["i": "integer"]} -run/0: ingredient 0 is buf -mem/0: location 1055 is 1036 -run/0: ingredient 1 is {name: "i", value: 4, type: 1, properties: ["i": "integer"]} -mem/0: location 1057 is 8 -run/0: address to copy is 1045 -run/0: product 0 is 1045 -mem/0: storing 1045 in location 1059 -run/0: instruction clear-screen/11 -run/0: {name: "c", value: 6, type: 2-4, properties: ["c": "address":"character", "deref": ]} <- copy/1 {name: " ", value: 0, type: 0, properties: [" ": "literal-string"]} -run/0: ingredient 0 is -mem/0: location 1059 is 1045 -mem/0: storing 0 in location 1045 -run/0: instruction clear-screen/12 -run/0: {name: "i", value: 4, type: 1, properties: ["i": "integer"]} <- add/2 {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is i -mem/0: location 1057 is 8 -run/0: ingredient 1 is 1 -run/0: product 0 is 9 -mem/0: storing 9 in location 1057 -run/0: instruction clear-screen/13 -run/0: loop/10 {name: "", value: -6, type: , properties: ["": ]} -run/0: ingredient 0 is -6 -run/0: jumping to instruction 8 -run/0: instruction clear-screen/8 -run/0: {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "max", value: 3, type: 1, properties: ["max": "integer"]} -run/0: ingredient 0 is i -mem/0: location 1057 is 9 -run/0: ingredient 1 is max -mem/0: location 1056 is 15 -run/0: product 0 is 0 -mem/0: storing 0 in location 1058 -run/0: instruction clear-screen/9 -run/0: break-if/11 {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 4, type: , properties: ["": ]} -mem/0: location 1058 is 0 -run/0: ingredient 0 is 0 -run/0: jump-if fell through -run/0: instruction clear-screen/10 -run/0: {name: "c", value: 6, type: 2-4, properties: ["c": "address":"character"]} <- index-address/27 {name: "buf", value: 2, type: 2-5-4, properties: ["buf": "address":"array":"character", "deref": ]}, {name: "i", value: 4, type: 1, properties: ["i": "integer"]} -run/0: ingredient 0 is buf -mem/0: location 1055 is 1036 -run/0: ingredient 1 is {name: "i", value: 4, type: 1, properties: ["i": "integer"]} -mem/0: location 1057 is 9 -run/0: address to copy is 1046 -run/0: product 0 is 1046 -mem/0: storing 1046 in location 1059 -run/0: instruction clear-screen/11 -run/0: {name: "c", value: 6, type: 2-4, properties: ["c": "address":"character", "deref": ]} <- copy/1 {name: " ", value: 0, type: 0, properties: [" ": "literal-string"]} -run/0: ingredient 0 is -mem/0: location 1059 is 1046 -mem/0: storing 0 in location 1046 -run/0: instruction clear-screen/12 -run/0: {name: "i", value: 4, type: 1, properties: ["i": "integer"]} <- add/2 {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is i -mem/0: location 1057 is 9 -run/0: ingredient 1 is 1 -run/0: product 0 is 10 -mem/0: storing 10 in location 1057 -run/0: instruction clear-screen/13 -run/0: loop/10 {name: "", value: -6, type: , properties: ["": ]} -run/0: ingredient 0 is -6 -run/0: jumping to instruction 8 -run/0: instruction clear-screen/8 -run/0: {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "max", value: 3, type: 1, properties: ["max": "integer"]} -run/0: ingredient 0 is i -mem/0: location 1057 is 10 -run/0: ingredient 1 is max -mem/0: location 1056 is 15 -run/0: product 0 is 0 -mem/0: storing 0 in location 1058 -run/0: instruction clear-screen/9 -run/0: break-if/11 {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 4, type: , properties: ["": ]} -mem/0: location 1058 is 0 -run/0: ingredient 0 is 0 -run/0: jump-if fell through -run/0: instruction clear-screen/10 -run/0: {name: "c", value: 6, type: 2-4, properties: ["c": "address":"character"]} <- index-address/27 {name: "buf", value: 2, type: 2-5-4, properties: ["buf": "address":"array":"character", "deref": ]}, {name: "i", value: 4, type: 1, properties: ["i": "integer"]} -run/0: ingredient 0 is buf -mem/0: location 1055 is 1036 -run/0: ingredient 1 is {name: "i", value: 4, type: 1, properties: ["i": "integer"]} -mem/0: location 1057 is 10 -run/0: address to copy is 1047 -run/0: product 0 is 1047 -mem/0: storing 1047 in location 1059 -run/0: instruction clear-screen/11 -run/0: {name: "c", value: 6, type: 2-4, properties: ["c": "address":"character", "deref": ]} <- copy/1 {name: " ", value: 0, type: 0, properties: [" ": "literal-string"]} -run/0: ingredient 0 is -mem/0: location 1059 is 1047 -mem/0: storing 0 in location 1047 -run/0: instruction clear-screen/12 -run/0: {name: "i", value: 4, type: 1, properties: ["i": "integer"]} <- add/2 {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is i -mem/0: location 1057 is 10 -run/0: ingredient 1 is 1 -run/0: product 0 is 11 -mem/0: storing 11 in location 1057 -run/0: instruction clear-screen/13 -run/0: loop/10 {name: "", value: -6, type: , properties: ["": ]} -run/0: ingredient 0 is -6 -run/0: jumping to instruction 8 -run/0: instruction clear-screen/8 -run/0: {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "max", value: 3, type: 1, properties: ["max": "integer"]} -run/0: ingredient 0 is i -mem/0: location 1057 is 11 -run/0: ingredient 1 is max -mem/0: location 1056 is 15 -run/0: product 0 is 0 -mem/0: storing 0 in location 1058 -run/0: instruction clear-screen/9 -run/0: break-if/11 {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 4, type: , properties: ["": ]} -mem/0: location 1058 is 0 -run/0: ingredient 0 is 0 -run/0: jump-if fell through -run/0: instruction clear-screen/10 -run/0: {name: "c", value: 6, type: 2-4, properties: ["c": "address":"character"]} <- index-address/27 {name: "buf", value: 2, type: 2-5-4, properties: ["buf": "address":"array":"character", "deref": ]}, {name: "i", value: 4, type: 1, properties: ["i": "integer"]} -run/0: ingredient 0 is buf -mem/0: location 1055 is 1036 -run/0: ingredient 1 is {name: "i", value: 4, type: 1, properties: ["i": "integer"]} -mem/0: location 1057 is 11 -run/0: address to copy is 1048 -run/0: product 0 is 1048 -mem/0: storing 1048 in location 1059 -run/0: instruction clear-screen/11 -run/0: {name: "c", value: 6, type: 2-4, properties: ["c": "address":"character", "deref": ]} <- copy/1 {name: " ", value: 0, type: 0, properties: [" ": "literal-string"]} -run/0: ingredient 0 is -mem/0: location 1059 is 1048 -mem/0: storing 0 in location 1048 -run/0: instruction clear-screen/12 -run/0: {name: "i", value: 4, type: 1, properties: ["i": "integer"]} <- add/2 {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is i -mem/0: location 1057 is 11 -run/0: ingredient 1 is 1 -run/0: product 0 is 12 -mem/0: storing 12 in location 1057 -run/0: instruction clear-screen/13 -run/0: loop/10 {name: "", value: -6, type: , properties: ["": ]} -run/0: ingredient 0 is -6 -run/0: jumping to instruction 8 -run/0: instruction clear-screen/8 -run/0: {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "max", value: 3, type: 1, properties: ["max": "integer"]} -run/0: ingredient 0 is i -mem/0: location 1057 is 12 -run/0: ingredient 1 is max -mem/0: location 1056 is 15 -run/0: product 0 is 0 -mem/0: storing 0 in location 1058 -run/0: instruction clear-screen/9 -run/0: break-if/11 {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 4, type: , properties: ["": ]} -mem/0: location 1058 is 0 -run/0: ingredient 0 is 0 -run/0: jump-if fell through -run/0: instruction clear-screen/10 -run/0: {name: "c", value: 6, type: 2-4, properties: ["c": "address":"character"]} <- index-address/27 {name: "buf", value: 2, type: 2-5-4, properties: ["buf": "address":"array":"character", "deref": ]}, {name: "i", value: 4, type: 1, properties: ["i": "integer"]} -run/0: ingredient 0 is buf -mem/0: location 1055 is 1036 -run/0: ingredient 1 is {name: "i", value: 4, type: 1, properties: ["i": "integer"]} -mem/0: location 1057 is 12 -run/0: address to copy is 1049 -run/0: product 0 is 1049 -mem/0: storing 1049 in location 1059 -run/0: instruction clear-screen/11 -run/0: {name: "c", value: 6, type: 2-4, properties: ["c": "address":"character", "deref": ]} <- copy/1 {name: " ", value: 0, type: 0, properties: [" ": "literal-string"]} -run/0: ingredient 0 is -mem/0: location 1059 is 1049 -mem/0: storing 0 in location 1049 -run/0: instruction clear-screen/12 -run/0: {name: "i", value: 4, type: 1, properties: ["i": "integer"]} <- add/2 {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is i -mem/0: location 1057 is 12 -run/0: ingredient 1 is 1 -run/0: product 0 is 13 -mem/0: storing 13 in location 1057 -run/0: instruction clear-screen/13 -run/0: loop/10 {name: "", value: -6, type: , properties: ["": ]} -run/0: ingredient 0 is -6 -run/0: jumping to instruction 8 -run/0: instruction clear-screen/8 -run/0: {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "max", value: 3, type: 1, properties: ["max": "integer"]} -run/0: ingredient 0 is i -mem/0: location 1057 is 13 -run/0: ingredient 1 is max -mem/0: location 1056 is 15 -run/0: product 0 is 0 -mem/0: storing 0 in location 1058 -run/0: instruction clear-screen/9 -run/0: break-if/11 {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 4, type: , properties: ["": ]} -mem/0: location 1058 is 0 -run/0: ingredient 0 is 0 -run/0: jump-if fell through -run/0: instruction clear-screen/10 -run/0: {name: "c", value: 6, type: 2-4, properties: ["c": "address":"character"]} <- index-address/27 {name: "buf", value: 2, type: 2-5-4, properties: ["buf": "address":"array":"character", "deref": ]}, {name: "i", value: 4, type: 1, properties: ["i": "integer"]} -run/0: ingredient 0 is buf -mem/0: location 1055 is 1036 -run/0: ingredient 1 is {name: "i", value: 4, type: 1, properties: ["i": "integer"]} -mem/0: location 1057 is 13 -run/0: address to copy is 1050 -run/0: product 0 is 1050 -mem/0: storing 1050 in location 1059 -run/0: instruction clear-screen/11 -run/0: {name: "c", value: 6, type: 2-4, properties: ["c": "address":"character", "deref": ]} <- copy/1 {name: " ", value: 0, type: 0, properties: [" ": "literal-string"]} -run/0: ingredient 0 is -mem/0: location 1059 is 1050 -mem/0: storing 0 in location 1050 -run/0: instruction clear-screen/12 -run/0: {name: "i", value: 4, type: 1, properties: ["i": "integer"]} <- add/2 {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is i -mem/0: location 1057 is 13 -run/0: ingredient 1 is 1 -run/0: product 0 is 14 -mem/0: storing 14 in location 1057 -run/0: instruction clear-screen/13 -run/0: loop/10 {name: "", value: -6, type: , properties: ["": ]} -run/0: ingredient 0 is -6 -run/0: jumping to instruction 8 -run/0: instruction clear-screen/8 -run/0: {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "max", value: 3, type: 1, properties: ["max": "integer"]} -run/0: ingredient 0 is i -mem/0: location 1057 is 14 -run/0: ingredient 1 is max -mem/0: location 1056 is 15 -run/0: product 0 is 0 -mem/0: storing 0 in location 1058 -run/0: instruction clear-screen/9 -run/0: break-if/11 {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 4, type: , properties: ["": ]} -mem/0: location 1058 is 0 -run/0: ingredient 0 is 0 -run/0: jump-if fell through -run/0: instruction clear-screen/10 -run/0: {name: "c", value: 6, type: 2-4, properties: ["c": "address":"character"]} <- index-address/27 {name: "buf", value: 2, type: 2-5-4, properties: ["buf": "address":"array":"character", "deref": ]}, {name: "i", value: 4, type: 1, properties: ["i": "integer"]} -run/0: ingredient 0 is buf -mem/0: location 1055 is 1036 -run/0: ingredient 1 is {name: "i", value: 4, type: 1, properties: ["i": "integer"]} -mem/0: location 1057 is 14 -run/0: address to copy is 1051 -run/0: product 0 is 1051 -mem/0: storing 1051 in location 1059 -run/0: instruction clear-screen/11 -run/0: {name: "c", value: 6, type: 2-4, properties: ["c": "address":"character", "deref": ]} <- copy/1 {name: " ", value: 0, type: 0, properties: [" ": "literal-string"]} -run/0: ingredient 0 is -mem/0: location 1059 is 1051 -mem/0: storing 0 in location 1051 -run/0: instruction clear-screen/12 -run/0: {name: "i", value: 4, type: 1, properties: ["i": "integer"]} <- add/2 {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is i -mem/0: location 1057 is 14 -run/0: ingredient 1 is 1 -run/0: product 0 is 15 -mem/0: storing 15 in location 1057 -run/0: instruction clear-screen/13 -run/0: loop/10 {name: "", value: -6, type: , properties: ["": ]} -run/0: ingredient 0 is -6 -run/0: jumping to instruction 8 -run/0: instruction clear-screen/8 -run/0: {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 4, type: 1, properties: ["i": "integer"]}, {name: "max", value: 3, type: 1, properties: ["max": "integer"]} -run/0: ingredient 0 is i -mem/0: location 1057 is 15 -run/0: ingredient 1 is max -mem/0: location 1056 is 15 -run/0: product 0 is 1 -mem/0: storing 1 in location 1058 -run/0: instruction clear-screen/9 -run/0: break-if/11 {name: "done?", value: 5, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 4, type: , properties: ["": ]} -mem/0: location 1058 is 1 -run/0: ingredient 0 is 1 -run/0: ingredient 1 is -run/0: jumping to instruction 14 -run/0: instruction clear-screen/15 -run/0: reply/33 {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen", "same-as-ingredient": "0"]} -mem/0: location 1054 is 1031 -run/0: instruction init-fake-screen/14 -run/0: reply/33 {name: "result", value: 1, type: 2-11, properties: ["result": "address":"screen"]} -mem/0: location 1002 is 1031 -run/0: result 0 is 1031 -mem/0: storing 1031 in location 900 -run/0: instruction screen-in-scenario-error/1 -run/0: run/45 {name: " - screen:address <- print-character screen:address, 97:literal # 'a' - ", value: 0, type: 0, properties: [" - screen:address <- print-character screen:address, 97:literal # 'a' - ": "literal-string"]} -parse/0: instruction: print-character -parse/0: ingredient: {name: "screen", value: 0, type: 2, properties: ["screen": "address"]} -parse/0: ingredient: {name: "97", value: 0, type: 0, properties: ["97": "literal"]} -parse/0: product: {name: "screen", value: 0, type: 2, properties: ["screen": "address"]} -after-brace/0: recipe run1001 -after-brace/0: print-character ... -run/0: instruction run1001/0 -run/0: {name: "screen", value: 900, type: 2, properties: ["screen": "address"]} <- print-character/117 {name: "screen", value: 900, type: 2, properties: ["screen": "address"]}, {name: "97", value: 97, type: 0, properties: ["97": "literal"]} -mem/0: location 900 is 1031 -run/0: instruction print-character/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/44 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} -mem/0: array size is 30 -mem/0: new alloc: 1083 -run/0: instruction print-character/1 -run/0: {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen"]} <- next-ingredient/30 -run/0: product 0 is 1031 -mem/0: storing 1031 in location 1085 -run/0: instruction print-character/2 -run/0: {name: "c", value: 2, type: 4, properties: ["c": "character"]} <- next-ingredient/30 -run/0: product 0 is 97 -mem/0: storing 97 in location 1086 -run/0: instruction print-character/4 -run/0: break-unless/12 {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen"]}, {name: "", value: 14, type: , properties: ["": ]} -mem/0: location 1085 is 1031 -run/0: ingredient 0 is 1031 -run/0: jump-unless fell through -run/0: instruction print-character/5 -run/0: {name: "row", value: 3, type: 2-1, properties: ["row": "address":"integer"]} <- get-address/25 {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen", "deref": ]}, {name: "cursor-row", value: 2, type: 0, properties: ["cursor-row": "offset"]} -run/0: ingredient 0 is x -mem/0: location 1085 is 1031 -run/0: ingredient 1 is cursor-row -run/0: address to copy is 1033 -run/0: product 0 is 1033 -mem/0: storing 1033 in location 1087 -run/0: instruction print-character/6 -run/0: {name: "column", value: 4, type: 2-1, properties: ["column": "address":"integer"]} <- get-address/25 {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen", "deref": ]}, {name: "cursor-column", value: 3, type: 0, properties: ["cursor-column": "offset"]} -run/0: ingredient 0 is x -mem/0: location 1085 is 1031 -run/0: ingredient 1 is cursor-column -run/0: address to copy is 1034 -run/0: product 0 is 1034 -mem/0: storing 1034 in location 1088 -run/0: instruction print-character/7 -run/0: {name: "width", value: 5, type: 1, properties: ["width": "integer"]} <- get/24 {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen", "deref": ]}, {name: "num-columns", value: 1, type: 0, properties: ["num-columns": "offset"]} -run/0: ingredient 0 is x -mem/0: location 1085 is 1031 -run/0: ingredient 1 is num-columns -run/0: address to copy is 1032 -run/0: its type is 1 -mem/0: location 1032 is 5 -run/0: product 0 is 5 -mem/0: storing 5 in location 1089 -run/0: instruction print-character/8 -run/0: {name: "index", value: 6, type: 1, properties: ["index": "integer"]} <- multiply/4 {name: "row", value: 3, type: 2-1, properties: ["row": "address":"integer", "deref": ]}, {name: "width", value: 5, type: 1, properties: ["width": "integer"]} -run/0: ingredient 0 is row -mem/0: location 1087 is 1033 -mem/0: location 1033 is 0 -run/0: ingredient 1 is width -mem/0: location 1089 is 5 -run/0: ingredient 1 is 5 -run/0: product 0 is 0 -mem/0: storing 0 in location 1090 -run/0: instruction print-character/9 -run/0: {name: "index", value: 6, type: 1, properties: ["index": "integer"]} <- add/2 {name: "index", value: 6, type: 1, properties: ["index": "integer"]}, {name: "column", value: 4, type: 2-1, properties: ["column": "address":"integer", "deref": ]} -run/0: ingredient 0 is index -mem/0: location 1090 is 0 -run/0: ingredient 1 is column -mem/0: location 1088 is 1034 -mem/0: location 1034 is 0 -run/0: product 0 is 0 -mem/0: storing 0 in location 1090 -run/0: instruction print-character/10 -run/0: {name: "buf", value: 7, type: 2-5-4, properties: ["buf": "address":"array":"character"]} <- get/24 {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen", "deref": ]}, {name: "data", value: 4, type: 0, properties: ["data": "offset"]} -run/0: ingredient 0 is x -mem/0: location 1085 is 1031 -run/0: ingredient 1 is data -run/0: address to copy is 1035 -run/0: its type is 2 -mem/0: location 1035 is 1036 -run/0: product 0 is 1036 -mem/0: storing 1036 in location 1091 -run/0: instruction print-character/11 -run/0: {name: "cursor", value: 8, type: 2-4, properties: ["cursor": "address":"character"]} <- index-address/27 {name: "buf", value: 7, type: 2-5-4, properties: ["buf": "address":"array":"character", "deref": ]}, {name: "index", value: 6, type: 1, properties: ["index": "integer"]} -run/0: ingredient 0 is buf -mem/0: location 1091 is 1036 -run/0: ingredient 1 is {name: "index", value: 6, type: 1, properties: ["index": "integer"]} -mem/0: location 1090 is 0 -run/0: address to copy is 1037 -run/0: product 0 is 1037 -mem/0: storing 1037 in location 1092 -run/0: instruction print-character/12 -run/0: {name: "cursor", value: 8, type: 2-4, properties: ["cursor": "address":"character", "deref": ]} <- copy/1 {name: "c", value: 2, type: 4, properties: ["c": "character"]} -run/0: ingredient 0 is c -mem/0: location 1086 is 97 -mem/0: location 1092 is 1037 -mem/0: storing 97 in location 1037 -run/0: instruction print-character/14 -run/0: {name: "at-right?", value: 9, type: 3, properties: ["at-right?": "boolean"]} <- equal/13 {name: "column", value: 4, type: 2-1, properties: ["column": "address":"integer", "deref": ]}, {name: "width", value: 5, type: 1, properties: ["width": "integer"]} -run/0: ingredient 0 is column -mem/0: location 1088 is 1034 -mem/0: location 1034 is 0 -run/0: ingredient 1 is width -mem/0: location 1089 is 5 -run/0: product 0 is 0 -mem/0: storing 0 in location 1093 -run/0: instruction print-character/15 -run/0: break-if/11 {name: "at-right?", value: 9, type: 3, properties: ["at-right?": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} -mem/0: location 1093 is 0 -run/0: ingredient 0 is 0 -run/0: jump-if fell through -run/0: instruction print-character/16 -run/0: {name: "column", value: 4, type: 2-1, properties: ["column": "address":"integer", "deref": ]} <- add/2 {name: "column", value: 4, type: 2-1, properties: ["column": "address":"integer", "deref": ]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is column -mem/0: location 1088 is 1034 -mem/0: location 1034 is 0 -run/0: ingredient 1 is 1 -run/0: product 0 is 1 -mem/0: location 1088 is 1034 -mem/0: storing 1 in location 1034 -run/0: instruction print-character/18 -run/0: reply/33 {name: "x", value: 1, type: 2-11, properties: ["x": "address":"screen", "same-as-ingredient": "0"]} -mem/0: location 1085 is 1031 -run/0: result 0 is 1031 -mem/0: storing 1031 in location 900 -run/0: instruction screen-in-scenario-error/2 -run/0: screen-should-contain/62 {name: " - # 01234 - .b . - . . - . . - ", value: 0, type: 0, properties: [" - # 01234 - .b . - . . - . . - ": "literal-string"]} -run/0: checking screen size at 1036 -run/0: checking location 1037 -warn/0: expected screen location (0, 0) to contain 'b' instead of 'a' diff --git a/cpp/.traces/set_default_space b/cpp/.traces/set_default_space deleted file mode 100644 index b26649b0..00000000 --- a/cpp/.traces/set_default_space +++ /dev/null @@ -1,26 +0,0 @@ -parse/0: instruction: copy -parse/0: ingredient: {name: "5", value: 0, type: 0, properties: ["5": "literal"]} -parse/0: product: {name: "10", value: 0, type: 1, properties: ["10": "integer"]} -parse/0: instruction: copy -parse/0: ingredient: {name: "10", value: 0, type: 0, properties: ["10": "literal"]} -parse/0: product: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} -parse/0: instruction: copy -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 ... -after-brace/0: copy ... -after-brace/0: copy ... -new/0: routine allocated memory from 1000 to 101000 -schedule/0: main -run/0: instruction main/0 -run/0: {name: "10", value: 10, type: 1, properties: ["10": "integer"]} <- copy/1 {name: "5", value: 5, type: 0, properties: ["5": "literal"]} -run/0: ingredient 0 is 5 -mem/0: storing 5 in location 10 -run/0: instruction main/1 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- copy/1 {name: "10", value: 10, type: 0, properties: ["10": "literal"]} -run/0: ingredient 0 is 10 -run/0: instruction main/2 -run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- copy/1 {name: "23", value: 23, type: 0, properties: ["23": "literal"]} -run/0: ingredient 0 is 23 -mem/0: storing 23 in location 12 diff --git a/cpp/.traces/start_running_returns_routine_id b/cpp/.traces/start_running_returns_routine_id deleted file mode 100644 index dde9fca2..00000000 --- a/cpp/.traces/start_running_returns_routine_id +++ /dev/null @@ -1,22 +0,0 @@ -parse/0: instruction: start-running -parse/0: ingredient: {name: "f2", value: 0, type: 0, properties: ["f2": "recipe"]} -parse/0: product: {name: "1", value: 0, type: 1, properties: ["1": "integer"]} -parse/0: instruction: copy -parse/0: ingredient: {name: "44", value: 0, type: 0, properties: ["44": "literal"]} -parse/0: product: {name: "12", value: 0, type: 1, properties: ["12": "integer"]} -after-brace/0: recipe f1 -after-brace/0: start-running ... -after-brace/0: recipe f2 -after-brace/0: copy ... -new/0: routine allocated memory from 1000 to 101000 -schedule/0: f1 -run/0: instruction f1/0 -run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- start-running/34 {name: "f2", value: 0, type: 0, properties: ["f2": "recipe"]} -run/0: ingredient 0 is f2 -new/0: routine allocated memory from 101000 to 201000 -mem/0: storing 2 in location 1 -schedule/0: f2 -run/0: instruction f2/0 -run/0: {name: "12", value: 12, type: 1, properties: ["12": "integer"]} <- copy/1 {name: "44", value: 44, type: 0, properties: ["44": "literal"]} -run/0: ingredient 0 is 44 -mem/0: storing 44 in location 12 diff --git a/cpp/.traces/start_running_takes_args b/cpp/.traces/start_running_takes_args deleted file mode 100644 index 062c7371..00000000 --- a/cpp/.traces/start_running_takes_args +++ /dev/null @@ -1,32 +0,0 @@ -parse/0: instruction: start-running -parse/0: ingredient: {name: "f2", value: 0, type: 0, properties: ["f2": "recipe"]} -parse/0: ingredient: {name: "3", value: 0, type: 0, properties: ["3": "literal"]} -parse/0: instruction: next-ingredient -parse/0: product: {name: "1", value: 0, type: 1, properties: ["1": "integer"]} -parse/0: instruction: add -parse/0: ingredient: {name: "1", value: 0, type: 1, properties: ["1": "integer"]} -parse/0: ingredient: {name: "1", value: 0, type: 0, properties: ["1": "literal"]} -parse/0: product: {name: "2", value: 0, type: 1, properties: ["2": "integer"]} -after-brace/0: recipe f1 -after-brace/0: start-running ... -after-brace/0: recipe f2 -after-brace/0: next-ingredient ... -after-brace/0: add ... -new/0: routine allocated memory from 1000 to 101000 -schedule/0: f1 -run/0: instruction f1/0 -run/0: start-running/34 {name: "f2", value: 0, type: 0, properties: ["f2": "recipe"]}, {name: "3", value: 3, type: 0, properties: ["3": "literal"]} -run/0: ingredient 0 is f2 -new/0: routine allocated memory from 101000 to 201000 -schedule/0: f2 -run/0: instruction f2/0 -run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- next-ingredient/30 -run/0: product 0 is 3 -mem/0: storing 3 in location 1 -run/0: instruction f2/1 -run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- add/2 {name: "1", value: 1, type: 1, properties: ["1": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is 1 -mem/0: location 1 is 3 -run/0: ingredient 1 is 1 -run/0: product 0 is 4 -mem/0: storing 4 in location 2 diff --git a/cpp/.traces/store_indirect b/cpp/.traces/store_indirect deleted file mode 100644 index 7fec6492..00000000 --- a/cpp/.traces/store_indirect +++ /dev/null @@ -1,20 +0,0 @@ -parse/0: instruction: copy -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: copy -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 ... -new/0: routine allocated memory from 1000 to 101000 -schedule/0: main -run/0: instruction main/0 -run/0: {name: "1", value: 1, type: 2-1, properties: ["1": "address":"integer"]} <- copy/1 {name: "2", value: 2, type: 0, properties: ["2": "literal"]} -run/0: ingredient 0 is 2 -mem/0: storing 2 in location 1 -run/0: instruction main/1 -run/0: {name: "1", value: 1, type: 2-1, properties: ["1": "address":"integer", "deref": ]} <- copy/1 {name: "34", value: 34, type: 0, properties: ["34": "literal"]} -run/0: ingredient 0 is 34 -mem/0: location 1 is 2 -mem/0: storing 34 in location 2 diff --git a/cpp/.traces/string-append-1 b/cpp/.traces/string-append-1 deleted file mode 100644 index 933e2d37..00000000 --- a/cpp/.traces/string-append-1 +++ /dev/null @@ -1,937 +0,0 @@ -parse/0: instruction: run -parse/0: ingredient: {name: " - 1:address:array:character/raw <- new [hello,] - 2:address:array:character/raw <- new [ world!] - 3:address:array:character/raw <- string-append 1:address:array:character/raw, 2:address:array:character/raw - 4:array:character/raw <- copy 3:address:array:character/raw/deref - ", value: 0, type: 0, properties: [" - 1:address:array:character/raw <- new [hello,] - 2:address:array:character/raw <- new [ world!] - 3:address:array:character/raw <- string-append 1:address:array:character/raw, 2:address:array:character/raw - 4:array:character/raw <- copy 3:address:array:character/raw/deref - ": "literal-string"]} -parse/0: instruction: memory-should-contain -parse/0: ingredient: {name: " - 4:string <- [hello, world!] - ", value: 0, type: 0, properties: [" - 4:string <- [hello, world!] - ": "literal-string"]} -after-brace/0: recipe string-append-1 -after-brace/0: run ... -after-brace/0: memory-should-contain ... -new/0: routine allocated memory from 1000 to 101000 -schedule/0: string-append-1 -run/0: instruction string-append-1/0 -run/0: run/45 {name: " - 1:address:array:character/raw <- new [hello,] - 2:address:array:character/raw <- new [ world!] - 3:address:array:character/raw <- string-append 1:address:array:character/raw, 2:address:array:character/raw - 4:array:character/raw <- copy 3:address:array:character/raw/deref - ", value: 0, type: 0, properties: [" - 1:address:array:character/raw <- new [hello,] - 2:address:array:character/raw <- new [ world!] - 3:address:array:character/raw <- string-append 1:address:array:character/raw, 2:address:array:character/raw - 4:array:character/raw <- copy 3:address:array:character/raw/deref - ": "literal-string"]} -parse/0: instruction: new -parse/0: ingredient: {name: "hello,", value: 0, type: 0, properties: ["hello,": "literal-string"]} -parse/0: product: {name: "1", value: 0, type: 2-5-4, properties: ["1": "address":"array":"character", "raw": ]} -parse/0: instruction: new -parse/0: ingredient: {name: " world!", value: 0, type: 0, properties: [" world!": "literal-string"]} -parse/0: product: {name: "2", value: 0, type: 2-5-4, properties: ["2": "address":"array":"character", "raw": ]} -parse/0: instruction: string-append -parse/0: ingredient: {name: "1", value: 0, type: 2-5-4, properties: ["1": "address":"array":"character", "raw": ]} -parse/0: ingredient: {name: "2", value: 0, type: 2-5-4, properties: ["2": "address":"array":"character", "raw": ]} -parse/0: product: {name: "3", value: 0, type: 2-5-4, properties: ["3": "address":"array":"character", "raw": ]} -parse/0: instruction: copy -parse/0: ingredient: {name: "3", value: 0, type: 2-5-4, properties: ["3": "address":"array":"character", "raw": , "deref": ]} -parse/0: product: {name: "4", value: 0, type: 5-4, properties: ["4": "array":"character", "raw": ]} -new/0: hello, -> 0 -new/0: world! -> 0 -after-brace/0: recipe run1001 -after-brace/0: new ... -after-brace/0: new ... -after-brace/0: string-append ... -after-brace/0: copy ... -run/0: instruction run1001/0 -run/0: {name: "1", value: 1, type: 2-5-4, properties: ["1": "address":"array":"character", "raw": ]} <- new/44 {name: "hello,", value: 0, type: 0, properties: ["hello,": "literal-string"]} -mem/0: storing 1000 in location 1 -run/0: instruction run1001/1 -run/0: {name: "2", value: 2, type: 2-5-4, properties: ["2": "address":"array":"character", "raw": ]} <- new/44 {name: " world!", value: 0, type: 0, properties: [" world!": "literal-string"]} -mem/0: storing 1007 in location 2 -run/0: instruction run1001/2 -run/0: {name: "3", value: 3, type: 2-5-4, properties: ["3": "address":"array":"character", "raw": ]} <- string-append/106 {name: "1", value: 1, type: 2-5-4, properties: ["1": "address":"array":"character", "raw": ]}, {name: "2", value: 2, type: 2-5-4, properties: ["2": "address":"array":"character", "raw": ]} -mem/0: location 1 is 1000 -mem/0: location 2 is 1007 -run/0: instruction string-append/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/44 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} -mem/0: array size is 30 -mem/0: new alloc: 1015 -run/0: instruction string-append/1 -run/0: {name: "a", value: 1, type: 2-5-4, properties: ["a": "address":"array":"character"]} <- next-ingredient/30 -run/0: product 0 is 1000 -mem/0: storing 1000 in location 1017 -run/0: instruction string-append/2 -run/0: {name: "a-len", value: 2, type: 1, properties: ["a-len": "integer"]} <- length/28 {name: "a", value: 1, type: 2-5-4, properties: ["a": "address":"array":"character", "deref": ]} -mem/0: location 1017 is 1000 -mem/0: storing 6 in location 1018 -run/0: instruction string-append/3 -run/0: {name: "b", value: 3, type: 2-5-4, properties: ["b": "address":"array":"character"]} <- next-ingredient/30 -run/0: product 0 is 1007 -mem/0: storing 1007 in location 1019 -run/0: instruction string-append/4 -run/0: {name: "b-len", value: 4, type: 1, properties: ["b-len": "integer"]} <- length/28 {name: "b", value: 3, type: 2-5-4, properties: ["b": "address":"array":"character", "deref": ]} -mem/0: location 1019 is 1007 -mem/0: storing 7 in location 1020 -run/0: instruction string-append/5 -run/0: {name: "result-len", value: 5, type: 1, properties: ["result-len": "integer"]} <- add/2 {name: "a-len", value: 2, type: 1, properties: ["a-len": "integer"]}, {name: "b-len", value: 4, type: 1, properties: ["b-len": "integer"]} -run/0: ingredient 0 is a-len -mem/0: location 1018 is 6 -run/0: ingredient 1 is b-len -mem/0: location 1020 is 7 -run/0: product 0 is 13 -mem/0: storing 13 in location 1021 -run/0: instruction string-append/6 -run/0: {name: "result", value: 6, type: 2-5-4, properties: ["result": "address":"array":"character"]} <- new/44 {name: "character", value: 4, type: 0, properties: ["character": "type"]}, {name: "result-len", value: 5, type: 1, properties: ["result-len": "integer"]} -mem/0: location 1021 is 13 -mem/0: array size is 13 -mem/0: new alloc: 1046 -mem/0: storing 1046 in location 1022 -run/0: instruction string-append/7 -run/0: {name: "result-idx", value: 7, type: 1, properties: ["result-idx": "integer"]} <- copy/1 {name: "0", value: 0, type: 0, properties: ["0": "literal"]} -run/0: ingredient 0 is 0 -mem/0: storing 0 in location 1023 -run/0: instruction string-append/8 -run/0: {name: "i", value: 8, type: 1, properties: ["i": "integer"]} <- copy/1 {name: "0", value: 0, type: 0, properties: ["0": "literal"]} -run/0: ingredient 0 is 0 -mem/0: storing 0 in location 1024 -run/0: instruction string-append/10 -run/0: {name: "a-done?", value: 9, type: 3, properties: ["a-done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 8, type: 1, properties: ["i": "integer"]}, {name: "a-len", value: 2, type: 1, properties: ["a-len": "integer"]} -run/0: ingredient 0 is i -mem/0: location 1024 is 0 -run/0: ingredient 1 is a-len -mem/0: location 1018 is 6 -run/0: product 0 is 0 -mem/0: storing 0 in location 1025 -run/0: instruction string-append/11 -run/0: break-if/11 {name: "a-done?", value: 9, type: 3, properties: ["a-done?": "boolean"]}, {name: "", value: 6, type: , properties: ["": ]} -mem/0: location 1025 is 0 -run/0: ingredient 0 is 0 -run/0: jump-if fell through -run/0: instruction string-append/12 -run/0: {name: "out", value: 10, type: 2-4, properties: ["out": "address":"character"]} <- index-address/27 {name: "result", value: 6, type: 2-5-4, properties: ["result": "address":"array":"character", "deref": ]}, {name: "result-idx", value: 7, type: 1, properties: ["result-idx": "integer"]} -run/0: ingredient 0 is result -mem/0: location 1022 is 1046 -run/0: ingredient 1 is {name: "result-idx", value: 7, type: 1, properties: ["result-idx": "integer"]} -mem/0: location 1023 is 0 -run/0: address to copy is 1047 -run/0: product 0 is 1047 -mem/0: storing 1047 in location 1026 -run/0: instruction string-append/13 -run/0: {name: "in", value: 11, type: 4, properties: ["in": "character"]} <- index/26 {name: "a", value: 1, type: 2-5-4, properties: ["a": "address":"array":"character", "deref": ]}, {name: "i", value: 8, type: 1, properties: ["i": "integer"]} -run/0: ingredient 0 is {name: "a", value: 1, type: 2-5-4, properties: ["a": "address":"array":"character", "deref": ]} -mem/0: location 1017 is 1000 -run/0: ingredient 1 is {name: "i", value: 8, type: 1, properties: ["i": "integer"]} -mem/0: location 1024 is 0 -run/0: address to copy is 1001 -run/0: its type is 4 -mem/0: location 1001 is 104 -run/0: product 0 is 104 -mem/0: storing 104 in location 1027 -run/0: instruction string-append/14 -run/0: {name: "out", value: 10, type: 2-4, properties: ["out": "address":"character", "deref": ]} <- copy/1 {name: "in", value: 11, type: 4, properties: ["in": "character"]} -run/0: ingredient 0 is in -mem/0: location 1027 is 104 -mem/0: location 1026 is 1047 -mem/0: storing 104 in location 1047 -run/0: instruction string-append/15 -run/0: {name: "i", value: 8, type: 1, properties: ["i": "integer"]} <- add/2 {name: "i", value: 8, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is i -mem/0: location 1024 is 0 -run/0: ingredient 1 is 1 -run/0: product 0 is 1 -mem/0: storing 1 in location 1024 -run/0: instruction string-append/16 -run/0: {name: "result-idx", value: 7, type: 1, properties: ["result-idx": "integer"]} <- add/2 {name: "result-idx", value: 7, type: 1, properties: ["result-idx": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is result-idx -mem/0: location 1023 is 0 -run/0: ingredient 1 is 1 -run/0: product 0 is 1 -mem/0: storing 1 in location 1023 -run/0: instruction string-append/17 -run/0: loop/10 {name: "", value: -8, type: , properties: ["": ]} -run/0: ingredient 0 is -8 -run/0: jumping to instruction 10 -run/0: instruction string-append/10 -run/0: {name: "a-done?", value: 9, type: 3, properties: ["a-done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 8, type: 1, properties: ["i": "integer"]}, {name: "a-len", value: 2, type: 1, properties: ["a-len": "integer"]} -run/0: ingredient 0 is i -mem/0: location 1024 is 1 -run/0: ingredient 1 is a-len -mem/0: location 1018 is 6 -run/0: product 0 is 0 -mem/0: storing 0 in location 1025 -run/0: instruction string-append/11 -run/0: break-if/11 {name: "a-done?", value: 9, type: 3, properties: ["a-done?": "boolean"]}, {name: "", value: 6, type: , properties: ["": ]} -mem/0: location 1025 is 0 -run/0: ingredient 0 is 0 -run/0: jump-if fell through -run/0: instruction string-append/12 -run/0: {name: "out", value: 10, type: 2-4, properties: ["out": "address":"character"]} <- index-address/27 {name: "result", value: 6, type: 2-5-4, properties: ["result": "address":"array":"character", "deref": ]}, {name: "result-idx", value: 7, type: 1, properties: ["result-idx": "integer"]} -run/0: ingredient 0 is result -mem/0: location 1022 is 1046 -run/0: ingredient 1 is {name: "result-idx", value: 7, type: 1, properties: ["result-idx": "integer"]} -mem/0: location 1023 is 1 -run/0: address to copy is 1048 -run/0: product 0 is 1048 -mem/0: storing 1048 in location 1026 -run/0: instruction string-append/13 -run/0: {name: "in", value: 11, type: 4, properties: ["in": "character"]} <- index/26 {name: "a", value: 1, type: 2-5-4, properties: ["a": "address":"array":"character", "deref": ]}, {name: "i", value: 8, type: 1, properties: ["i": "integer"]} -run/0: ingredient 0 is {name: "a", value: 1, type: 2-5-4, properties: ["a": "address":"array":"character", "deref": ]} -mem/0: location 1017 is 1000 -run/0: ingredient 1 is {name: "i", value: 8, type: 1, properties: ["i": "integer"]} -mem/0: location 1024 is 1 -run/0: address to copy is 1002 -run/0: its type is 4 -mem/0: location 1002 is 101 -run/0: product 0 is 101 -mem/0: storing 101 in location 1027 -run/0: instruction string-append/14 -run/0: {name: "out", value: 10, type: 2-4, properties: ["out": "address":"character", "deref": ]} <- copy/1 {name: "in", value: 11, type: 4, properties: ["in": "character"]} -run/0: ingredient 0 is in -mem/0: location 1027 is 101 -mem/0: location 1026 is 1048 -mem/0: storing 101 in location 1048 -run/0: instruction string-append/15 -run/0: {name: "i", value: 8, type: 1, properties: ["i": "integer"]} <- add/2 {name: "i", value: 8, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is i -mem/0: location 1024 is 1 -run/0: ingredient 1 is 1 -run/0: product 0 is 2 -mem/0: storing 2 in location 1024 -run/0: instruction string-append/16 -run/0: {name: "result-idx", value: 7, type: 1, properties: ["result-idx": "integer"]} <- add/2 {name: "result-idx", value: 7, type: 1, properties: ["result-idx": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is result-idx -mem/0: location 1023 is 1 -run/0: ingredient 1 is 1 -run/0: product 0 is 2 -mem/0: storing 2 in location 1023 -run/0: instruction string-append/17 -run/0: loop/10 {name: "", value: -8, type: , properties: ["": ]} -run/0: ingredient 0 is -8 -run/0: jumping to instruction 10 -run/0: instruction string-append/10 -run/0: {name: "a-done?", value: 9, type: 3, properties: ["a-done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 8, type: 1, properties: ["i": "integer"]}, {name: "a-len", value: 2, type: 1, properties: ["a-len": "integer"]} -run/0: ingredient 0 is i -mem/0: location 1024 is 2 -run/0: ingredient 1 is a-len -mem/0: location 1018 is 6 -run/0: product 0 is 0 -mem/0: storing 0 in location 1025 -run/0: instruction string-append/11 -run/0: break-if/11 {name: "a-done?", value: 9, type: 3, properties: ["a-done?": "boolean"]}, {name: "", value: 6, type: , properties: ["": ]} -mem/0: location 1025 is 0 -run/0: ingredient 0 is 0 -run/0: jump-if fell through -run/0: instruction string-append/12 -run/0: {name: "out", value: 10, type: 2-4, properties: ["out": "address":"character"]} <- index-address/27 {name: "result", value: 6, type: 2-5-4, properties: ["result": "address":"array":"character", "deref": ]}, {name: "result-idx", value: 7, type: 1, properties: ["result-idx": "integer"]} -run/0: ingredient 0 is result -mem/0: location 1022 is 1046 -run/0: ingredient 1 is {name: "result-idx", value: 7, type: 1, properties: ["result-idx": "integer"]} -mem/0: location 1023 is 2 -run/0: address to copy is 1049 -run/0: product 0 is 1049 -mem/0: storing 1049 in location 1026 -run/0: instruction string-append/13 -run/0: {name: "in", value: 11, type: 4, properties: ["in": "character"]} <- index/26 {name: "a", value: 1, type: 2-5-4, properties: ["a": "address":"array":"character", "deref": ]}, {name: "i", value: 8, type: 1, properties: ["i": "integer"]} -run/0: ingredient 0 is {name: "a", value: 1, type: 2-5-4, properties: ["a": "address":"array":"character", "deref": ]} -mem/0: location 1017 is 1000 -run/0: ingredient 1 is {name: "i", value: 8, type: 1, properties: ["i": "integer"]} -mem/0: location 1024 is 2 -run/0: address to copy is 1003 -run/0: its type is 4 -mem/0: location 1003 is 108 -run/0: product 0 is 108 -mem/0: storing 108 in location 1027 -run/0: instruction string-append/14 -run/0: {name: "out", value: 10, type: 2-4, properties: ["out": "address":"character", "deref": ]} <- copy/1 {name: "in", value: 11, type: 4, properties: ["in": "character"]} -run/0: ingredient 0 is in -mem/0: location 1027 is 108 -mem/0: location 1026 is 1049 -mem/0: storing 108 in location 1049 -run/0: instruction string-append/15 -run/0: {name: "i", value: 8, type: 1, properties: ["i": "integer"]} <- add/2 {name: "i", value: 8, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is i -mem/0: location 1024 is 2 -run/0: ingredient 1 is 1 -run/0: product 0 is 3 -mem/0: storing 3 in location 1024 -run/0: instruction string-append/16 -run/0: {name: "result-idx", value: 7, type: 1, properties: ["result-idx": "integer"]} <- add/2 {name: "result-idx", value: 7, type: 1, properties: ["result-idx": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is result-idx -mem/0: location 1023 is 2 -run/0: ingredient 1 is 1 -run/0: product 0 is 3 -mem/0: storing 3 in location 1023 -run/0: instruction string-append/17 -run/0: loop/10 {name: "", value: -8, type: , properties: ["": ]} -run/0: ingredient 0 is -8 -run/0: jumping to instruction 10 -run/0: instruction string-append/10 -run/0: {name: "a-done?", value: 9, type: 3, properties: ["a-done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 8, type: 1, properties: ["i": "integer"]}, {name: "a-len", value: 2, type: 1, properties: ["a-len": "integer"]} -run/0: ingredient 0 is i -mem/0: location 1024 is 3 -run/0: ingredient 1 is a-len -mem/0: location 1018 is 6 -run/0: product 0 is 0 -mem/0: storing 0 in location 1025 -run/0: instruction string-append/11 -run/0: break-if/11 {name: "a-done?", value: 9, type: 3, properties: ["a-done?": "boolean"]}, {name: "", value: 6, type: , properties: ["": ]} -mem/0: location 1025 is 0 -run/0: ingredient 0 is 0 -run/0: jump-if fell through -run/0: instruction string-append/12 -run/0: {name: "out", value: 10, type: 2-4, properties: ["out": "address":"character"]} <- index-address/27 {name: "result", value: 6, type: 2-5-4, properties: ["result": "address":"array":"character", "deref": ]}, {name: "result-idx", value: 7, type: 1, properties: ["result-idx": "integer"]} -run/0: ingredient 0 is result -mem/0: location 1022 is 1046 -run/0: ingredient 1 is {name: "result-idx", value: 7, type: 1, properties: ["result-idx": "integer"]} -mem/0: location 1023 is 3 -run/0: address to copy is 1050 -run/0: product 0 is 1050 -mem/0: storing 1050 in location 1026 -run/0: instruction string-append/13 -run/0: {name: "in", value: 11, type: 4, properties: ["in": "character"]} <- index/26 {name: "a", value: 1, type: 2-5-4, properties: ["a": "address":"array":"character", "deref": ]}, {name: "i", value: 8, type: 1, properties: ["i": "integer"]} -run/0: ingredient 0 is {name: "a", value: 1, type: 2-5-4, properties: ["a": "address":"array":"character", "deref": ]} -mem/0: location 1017 is 1000 -run/0: ingredient 1 is {name: "i", value: 8, type: 1, properties: ["i": "integer"]} -mem/0: location 1024 is 3 -run/0: address to copy is 1004 -run/0: its type is 4 -mem/0: location 1004 is 108 -run/0: product 0 is 108 -mem/0: storing 108 in location 1027 -run/0: instruction string-append/14 -run/0: {name: "out", value: 10, type: 2-4, properties: ["out": "address":"character", "deref": ]} <- copy/1 {name: "in", value: 11, type: 4, properties: ["in": "character"]} -run/0: ingredient 0 is in -mem/0: location 1027 is 108 -mem/0: location 1026 is 1050 -mem/0: storing 108 in location 1050 -run/0: instruction string-append/15 -run/0: {name: "i", value: 8, type: 1, properties: ["i": "integer"]} <- add/2 {name: "i", value: 8, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is i -mem/0: location 1024 is 3 -run/0: ingredient 1 is 1 -run/0: product 0 is 4 -mem/0: storing 4 in location 1024 -run/0: instruction string-append/16 -run/0: {name: "result-idx", value: 7, type: 1, properties: ["result-idx": "integer"]} <- add/2 {name: "result-idx", value: 7, type: 1, properties: ["result-idx": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is result-idx -mem/0: location 1023 is 3 -run/0: ingredient 1 is 1 -run/0: product 0 is 4 -mem/0: storing 4 in location 1023 -run/0: instruction string-append/17 -run/0: loop/10 {name: "", value: -8, type: , properties: ["": ]} -run/0: ingredient 0 is -8 -run/0: jumping to instruction 10 -run/0: instruction string-append/10 -run/0: {name: "a-done?", value: 9, type: 3, properties: ["a-done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 8, type: 1, properties: ["i": "integer"]}, {name: "a-len", value: 2, type: 1, properties: ["a-len": "integer"]} -run/0: ingredient 0 is i -mem/0: location 1024 is 4 -run/0: ingredient 1 is a-len -mem/0: location 1018 is 6 -run/0: product 0 is 0 -mem/0: storing 0 in location 1025 -run/0: instruction string-append/11 -run/0: break-if/11 {name: "a-done?", value: 9, type: 3, properties: ["a-done?": "boolean"]}, {name: "", value: 6, type: , properties: ["": ]} -mem/0: location 1025 is 0 -run/0: ingredient 0 is 0 -run/0: jump-if fell through -run/0: instruction string-append/12 -run/0: {name: "out", value: 10, type: 2-4, properties: ["out": "address":"character"]} <- index-address/27 {name: "result", value: 6, type: 2-5-4, properties: ["result": "address":"array":"character", "deref": ]}, {name: "result-idx", value: 7, type: 1, properties: ["result-idx": "integer"]} -run/0: ingredient 0 is result -mem/0: location 1022 is 1046 -run/0: ingredient 1 is {name: "result-idx", value: 7, type: 1, properties: ["result-idx": "integer"]} -mem/0: location 1023 is 4 -run/0: address to copy is 1051 -run/0: product 0 is 1051 -mem/0: storing 1051 in location 1026 -run/0: instruction string-append/13 -run/0: {name: "in", value: 11, type: 4, properties: ["in": "character"]} <- index/26 {name: "a", value: 1, type: 2-5-4, properties: ["a": "address":"array":"character", "deref": ]}, {name: "i", value: 8, type: 1, properties: ["i": "integer"]} -run/0: ingredient 0 is {name: "a", value: 1, type: 2-5-4, properties: ["a": "address":"array":"character", "deref": ]} -mem/0: location 1017 is 1000 -run/0: ingredient 1 is {name: "i", value: 8, type: 1, properties: ["i": "integer"]} -mem/0: location 1024 is 4 -run/0: address to copy is 1005 -run/0: its type is 4 -mem/0: location 1005 is 111 -run/0: product 0 is 111 -mem/0: storing 111 in location 1027 -run/0: instruction string-append/14 -run/0: {name: "out", value: 10, type: 2-4, properties: ["out": "address":"character", "deref": ]} <- copy/1 {name: "in", value: 11, type: 4, properties: ["in": "character"]} -run/0: ingredient 0 is in -mem/0: location 1027 is 111 -mem/0: location 1026 is 1051 -mem/0: storing 111 in location 1051 -run/0: instruction string-append/15 -run/0: {name: "i", value: 8, type: 1, properties: ["i": "integer"]} <- add/2 {name: "i", value: 8, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is i -mem/0: location 1024 is 4 -run/0: ingredient 1 is 1 -run/0: product 0 is 5 -mem/0: storing 5 in location 1024 -run/0: instruction string-append/16 -run/0: {name: "result-idx", value: 7, type: 1, properties: ["result-idx": "integer"]} <- add/2 {name: "result-idx", value: 7, type: 1, properties: ["result-idx": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is result-idx -mem/0: location 1023 is 4 -run/0: ingredient 1 is 1 -run/0: product 0 is 5 -mem/0: storing 5 in location 1023 -run/0: instruction string-append/17 -run/0: loop/10 {name: "", value: -8, type: , properties: ["": ]} -run/0: ingredient 0 is -8 -run/0: jumping to instruction 10 -run/0: instruction string-append/10 -run/0: {name: "a-done?", value: 9, type: 3, properties: ["a-done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 8, type: 1, properties: ["i": "integer"]}, {name: "a-len", value: 2, type: 1, properties: ["a-len": "integer"]} -run/0: ingredient 0 is i -mem/0: location 1024 is 5 -run/0: ingredient 1 is a-len -mem/0: location 1018 is 6 -run/0: product 0 is 0 -mem/0: storing 0 in location 1025 -run/0: instruction string-append/11 -run/0: break-if/11 {name: "a-done?", value: 9, type: 3, properties: ["a-done?": "boolean"]}, {name: "", value: 6, type: , properties: ["": ]} -mem/0: location 1025 is 0 -run/0: ingredient 0 is 0 -run/0: jump-if fell through -run/0: instruction string-append/12 -run/0: {name: "out", value: 10, type: 2-4, properties: ["out": "address":"character"]} <- index-address/27 {name: "result", value: 6, type: 2-5-4, properties: ["result": "address":"array":"character", "deref": ]}, {name: "result-idx", value: 7, type: 1, properties: ["result-idx": "integer"]} -run/0: ingredient 0 is result -mem/0: location 1022 is 1046 -run/0: ingredient 1 is {name: "result-idx", value: 7, type: 1, properties: ["result-idx": "integer"]} -mem/0: location 1023 is 5 -run/0: address to copy is 1052 -run/0: product 0 is 1052 -mem/0: storing 1052 in location 1026 -run/0: instruction string-append/13 -run/0: {name: "in", value: 11, type: 4, properties: ["in": "character"]} <- index/26 {name: "a", value: 1, type: 2-5-4, properties: ["a": "address":"array":"character", "deref": ]}, {name: "i", value: 8, type: 1, properties: ["i": "integer"]} -run/0: ingredient 0 is {name: "a", value: 1, type: 2-5-4, properties: ["a": "address":"array":"character", "deref": ]} -mem/0: location 1017 is 1000 -run/0: ingredient 1 is {name: "i", value: 8, type: 1, properties: ["i": "integer"]} -mem/0: location 1024 is 5 -run/0: address to copy is 1006 -run/0: its type is 4 -mem/0: location 1006 is 44 -run/0: product 0 is 44 -mem/0: storing 44 in location 1027 -run/0: instruction string-append/14 -run/0: {name: "out", value: 10, type: 2-4, properties: ["out": "address":"character", "deref": ]} <- copy/1 {name: "in", value: 11, type: 4, properties: ["in": "character"]} -run/0: ingredient 0 is in -mem/0: location 1027 is 44 -mem/0: location 1026 is 1052 -mem/0: storing 44 in location 1052 -run/0: instruction string-append/15 -run/0: {name: "i", value: 8, type: 1, properties: ["i": "integer"]} <- add/2 {name: "i", value: 8, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is i -mem/0: location 1024 is 5 -run/0: ingredient 1 is 1 -run/0: product 0 is 6 -mem/0: storing 6 in location 1024 -run/0: instruction string-append/16 -run/0: {name: "result-idx", value: 7, type: 1, properties: ["result-idx": "integer"]} <- add/2 {name: "result-idx", value: 7, type: 1, properties: ["result-idx": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is result-idx -mem/0: location 1023 is 5 -run/0: ingredient 1 is 1 -run/0: product 0 is 6 -mem/0: storing 6 in location 1023 -run/0: instruction string-append/17 -run/0: loop/10 {name: "", value: -8, type: , properties: ["": ]} -run/0: ingredient 0 is -8 -run/0: jumping to instruction 10 -run/0: instruction string-append/10 -run/0: {name: "a-done?", value: 9, type: 3, properties: ["a-done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 8, type: 1, properties: ["i": "integer"]}, {name: "a-len", value: 2, type: 1, properties: ["a-len": "integer"]} -run/0: ingredient 0 is i -mem/0: location 1024 is 6 -run/0: ingredient 1 is a-len -mem/0: location 1018 is 6 -run/0: product 0 is 1 -mem/0: storing 1 in location 1025 -run/0: instruction string-append/11 -run/0: break-if/11 {name: "a-done?", value: 9, type: 3, properties: ["a-done?": "boolean"]}, {name: "", value: 6, type: , properties: ["": ]} -mem/0: location 1025 is 1 -run/0: ingredient 0 is 1 -run/0: ingredient 1 is -run/0: jumping to instruction 18 -run/0: instruction string-append/19 -run/0: {name: "i", value: 8, type: 1, properties: ["i": "integer"]} <- copy/1 {name: "0", value: 0, type: 0, properties: ["0": "literal"]} -run/0: ingredient 0 is 0 -mem/0: storing 0 in location 1024 -run/0: instruction string-append/21 -run/0: {name: "b-done?", value: 12, type: 3, properties: ["b-done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 8, type: 1, properties: ["i": "integer"]}, {name: "b-len", value: 4, type: 1, properties: ["b-len": "integer"]} -run/0: ingredient 0 is i -mem/0: location 1024 is 0 -run/0: ingredient 1 is b-len -mem/0: location 1020 is 7 -run/0: product 0 is 0 -mem/0: storing 0 in location 1028 -run/0: instruction string-append/22 -run/0: break-if/11 {name: "b-done?", value: 12, type: 3, properties: ["b-done?": "boolean"]}, {name: "", value: 6, type: , properties: ["": ]} -mem/0: location 1028 is 0 -run/0: ingredient 0 is 0 -run/0: jump-if fell through -run/0: instruction string-append/23 -run/0: {name: "out", value: 10, type: 2-4, properties: ["out": "address":"character"]} <- index-address/27 {name: "result", value: 6, type: 2-5-4, properties: ["result": "address":"array":"character", "deref": ]}, {name: "result-idx", value: 7, type: 1, properties: ["result-idx": "integer"]} -run/0: ingredient 0 is result -mem/0: location 1022 is 1046 -run/0: ingredient 1 is {name: "result-idx", value: 7, type: 1, properties: ["result-idx": "integer"]} -mem/0: location 1023 is 6 -run/0: address to copy is 1053 -run/0: product 0 is 1053 -mem/0: storing 1053 in location 1026 -run/0: instruction string-append/24 -run/0: {name: "in", value: 11, type: 4, properties: ["in": "character"]} <- index/26 {name: "b", value: 3, type: 2-5-4, properties: ["b": "address":"array":"character", "deref": ]}, {name: "i", value: 8, type: 1, properties: ["i": "integer"]} -run/0: ingredient 0 is {name: "b", value: 3, type: 2-5-4, properties: ["b": "address":"array":"character", "deref": ]} -mem/0: location 1019 is 1007 -run/0: ingredient 1 is {name: "i", value: 8, type: 1, properties: ["i": "integer"]} -mem/0: location 1024 is 0 -run/0: address to copy is 1008 -run/0: its type is 4 -mem/0: location 1008 is 32 -run/0: product 0 is 32 -mem/0: storing 32 in location 1027 -run/0: instruction string-append/25 -run/0: {name: "out", value: 10, type: 2-4, properties: ["out": "address":"character", "deref": ]} <- copy/1 {name: "in", value: 11, type: 4, properties: ["in": "character"]} -run/0: ingredient 0 is in -mem/0: location 1027 is 32 -mem/0: location 1026 is 1053 -mem/0: storing 32 in location 1053 -run/0: instruction string-append/26 -run/0: {name: "i", value: 8, type: 1, properties: ["i": "integer"]} <- add/2 {name: "i", value: 8, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is i -mem/0: location 1024 is 0 -run/0: ingredient 1 is 1 -run/0: product 0 is 1 -mem/0: storing 1 in location 1024 -run/0: instruction string-append/27 -run/0: {name: "result-idx", value: 7, type: 1, properties: ["result-idx": "integer"]} <- add/2 {name: "result-idx", value: 7, type: 1, properties: ["result-idx": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is result-idx -mem/0: location 1023 is 6 -run/0: ingredient 1 is 1 -run/0: product 0 is 7 -mem/0: storing 7 in location 1023 -run/0: instruction string-append/28 -run/0: loop/10 {name: "", value: -8, type: , properties: ["": ]} -run/0: ingredient 0 is -8 -run/0: jumping to instruction 21 -run/0: instruction string-append/21 -run/0: {name: "b-done?", value: 12, type: 3, properties: ["b-done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 8, type: 1, properties: ["i": "integer"]}, {name: "b-len", value: 4, type: 1, properties: ["b-len": "integer"]} -run/0: ingredient 0 is i -mem/0: location 1024 is 1 -run/0: ingredient 1 is b-len -mem/0: location 1020 is 7 -run/0: product 0 is 0 -mem/0: storing 0 in location 1028 -run/0: instruction string-append/22 -run/0: break-if/11 {name: "b-done?", value: 12, type: 3, properties: ["b-done?": "boolean"]}, {name: "", value: 6, type: , properties: ["": ]} -mem/0: location 1028 is 0 -run/0: ingredient 0 is 0 -run/0: jump-if fell through -run/0: instruction string-append/23 -run/0: {name: "out", value: 10, type: 2-4, properties: ["out": "address":"character"]} <- index-address/27 {name: "result", value: 6, type: 2-5-4, properties: ["result": "address":"array":"character", "deref": ]}, {name: "result-idx", value: 7, type: 1, properties: ["result-idx": "integer"]} -run/0: ingredient 0 is result -mem/0: location 1022 is 1046 -run/0: ingredient 1 is {name: "result-idx", value: 7, type: 1, properties: ["result-idx": "integer"]} -mem/0: location 1023 is 7 -run/0: address to copy is 1054 -run/0: product 0 is 1054 -mem/0: storing 1054 in location 1026 -run/0: instruction string-append/24 -run/0: {name: "in", value: 11, type: 4, properties: ["in": "character"]} <- index/26 {name: "b", value: 3, type: 2-5-4, properties: ["b": "address":"array":"character", "deref": ]}, {name: "i", value: 8, type: 1, properties: ["i": "integer"]} -run/0: ingredient 0 is {name: "b", value: 3, type: 2-5-4, properties: ["b": "address":"array":"character", "deref": ]} -mem/0: location 1019 is 1007 -run/0: ingredient 1 is {name: "i", value: 8, type: 1, properties: ["i": "integer"]} -mem/0: location 1024 is 1 -run/0: address to copy is 1009 -run/0: its type is 4 -mem/0: location 1009 is 119 -run/0: product 0 is 119 -mem/0: storing 119 in location 1027 -run/0: instruction string-append/25 -run/0: {name: "out", value: 10, type: 2-4, properties: ["out": "address":"character", "deref": ]} <- copy/1 {name: "in", value: 11, type: 4, properties: ["in": "character"]} -run/0: ingredient 0 is in -mem/0: location 1027 is 119 -mem/0: location 1026 is 1054 -mem/0: storing 119 in location 1054 -run/0: instruction string-append/26 -run/0: {name: "i", value: 8, type: 1, properties: ["i": "integer"]} <- add/2 {name: "i", value: 8, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is i -mem/0: location 1024 is 1 -run/0: ingredient 1 is 1 -run/0: product 0 is 2 -mem/0: storing 2 in location 1024 -run/0: instruction string-append/27 -run/0: {name: "result-idx", value: 7, type: 1, properties: ["result-idx": "integer"]} <- add/2 {name: "result-idx", value: 7, type: 1, properties: ["result-idx": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is result-idx -mem/0: location 1023 is 7 -run/0: ingredient 1 is 1 -run/0: product 0 is 8 -mem/0: storing 8 in location 1023 -run/0: instruction string-append/28 -run/0: loop/10 {name: "", value: -8, type: , properties: ["": ]} -run/0: ingredient 0 is -8 -run/0: jumping to instruction 21 -run/0: instruction string-append/21 -run/0: {name: "b-done?", value: 12, type: 3, properties: ["b-done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 8, type: 1, properties: ["i": "integer"]}, {name: "b-len", value: 4, type: 1, properties: ["b-len": "integer"]} -run/0: ingredient 0 is i -mem/0: location 1024 is 2 -run/0: ingredient 1 is b-len -mem/0: location 1020 is 7 -run/0: product 0 is 0 -mem/0: storing 0 in location 1028 -run/0: instruction string-append/22 -run/0: break-if/11 {name: "b-done?", value: 12, type: 3, properties: ["b-done?": "boolean"]}, {name: "", value: 6, type: , properties: ["": ]} -mem/0: location 1028 is 0 -run/0: ingredient 0 is 0 -run/0: jump-if fell through -run/0: instruction string-append/23 -run/0: {name: "out", value: 10, type: 2-4, properties: ["out": "address":"character"]} <- index-address/27 {name: "result", value: 6, type: 2-5-4, properties: ["result": "address":"array":"character", "deref": ]}, {name: "result-idx", value: 7, type: 1, properties: ["result-idx": "integer"]} -run/0: ingredient 0 is result -mem/0: location 1022 is 1046 -run/0: ingredient 1 is {name: "result-idx", value: 7, type: 1, properties: ["result-idx": "integer"]} -mem/0: location 1023 is 8 -run/0: address to copy is 1055 -run/0: product 0 is 1055 -mem/0: storing 1055 in location 1026 -run/0: instruction string-append/24 -run/0: {name: "in", value: 11, type: 4, properties: ["in": "character"]} <- index/26 {name: "b", value: 3, type: 2-5-4, properties: ["b": "address":"array":"character", "deref": ]}, {name: "i", value: 8, type: 1, properties: ["i": "integer"]} -run/0: ingredient 0 is {name: "b", value: 3, type: 2-5-4, properties: ["b": "address":"array":"character", "deref": ]} -mem/0: location 1019 is 1007 -run/0: ingredient 1 is {name: "i", value: 8, type: 1, properties: ["i": "integer"]} -mem/0: location 1024 is 2 -run/0: address to copy is 1010 -run/0: its type is 4 -mem/0: location 1010 is 111 -run/0: product 0 is 111 -mem/0: storing 111 in location 1027 -run/0: instruction string-append/25 -run/0: {name: "out", value: 10, type: 2-4, properties: ["out": "address":"character", "deref": ]} <- copy/1 {name: "in", value: 11, type: 4, properties: ["in": "character"]} -run/0: ingredient 0 is in -mem/0: location 1027 is 111 -mem/0: location 1026 is 1055 -mem/0: storing 111 in location 1055 -run/0: instruction string-append/26 -run/0: {name: "i", value: 8, type: 1, properties: ["i": "integer"]} <- add/2 {name: "i", value: 8, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is i -mem/0: location 1024 is 2 -run/0: ingredient 1 is 1 -run/0: product 0 is 3 -mem/0: storing 3 in location 1024 -run/0: instruction string-append/27 -run/0: {name: "result-idx", value: 7, type: 1, properties: ["result-idx": "integer"]} <- add/2 {name: "result-idx", value: 7, type: 1, properties: ["result-idx": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is result-idx -mem/0: location 1023 is 8 -run/0: ingredient 1 is 1 -run/0: product 0 is 9 -mem/0: storing 9 in location 1023 -run/0: instruction string-append/28 -run/0: loop/10 {name: "", value: -8, type: , properties: ["": ]} -run/0: ingredient 0 is -8 -run/0: jumping to instruction 21 -run/0: instruction string-append/21 -run/0: {name: "b-done?", value: 12, type: 3, properties: ["b-done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 8, type: 1, properties: ["i": "integer"]}, {name: "b-len", value: 4, type: 1, properties: ["b-len": "integer"]} -run/0: ingredient 0 is i -mem/0: location 1024 is 3 -run/0: ingredient 1 is b-len -mem/0: location 1020 is 7 -run/0: product 0 is 0 -mem/0: storing 0 in location 1028 -run/0: instruction string-append/22 -run/0: break-if/11 {name: "b-done?", value: 12, type: 3, properties: ["b-done?": "boolean"]}, {name: "", value: 6, type: , properties: ["": ]} -mem/0: location 1028 is 0 -run/0: ingredient 0 is 0 -run/0: jump-if fell through -run/0: instruction string-append/23 -run/0: {name: "out", value: 10, type: 2-4, properties: ["out": "address":"character"]} <- index-address/27 {name: "result", value: 6, type: 2-5-4, properties: ["result": "address":"array":"character", "deref": ]}, {name: "result-idx", value: 7, type: 1, properties: ["result-idx": "integer"]} -run/0: ingredient 0 is result -mem/0: location 1022 is 1046 -run/0: ingredient 1 is {name: "result-idx", value: 7, type: 1, properties: ["result-idx": "integer"]} -mem/0: location 1023 is 9 -run/0: address to copy is 1056 -run/0: product 0 is 1056 -mem/0: storing 1056 in location 1026 -run/0: instruction string-append/24 -run/0: {name: "in", value: 11, type: 4, properties: ["in": "character"]} <- index/26 {name: "b", value: 3, type: 2-5-4, properties: ["b": "address":"array":"character", "deref": ]}, {name: "i", value: 8, type: 1, properties: ["i": "integer"]} -run/0: ingredient 0 is {name: "b", value: 3, type: 2-5-4, properties: ["b": "address":"array":"character", "deref": ]} -mem/0: location 1019 is 1007 -run/0: ingredient 1 is {name: "i", value: 8, type: 1, properties: ["i": "integer"]} -mem/0: location 1024 is 3 -run/0: address to copy is 1011 -run/0: its type is 4 -mem/0: location 1011 is 114 -run/0: product 0 is 114 -mem/0: storing 114 in location 1027 -run/0: instruction string-append/25 -run/0: {name: "out", value: 10, type: 2-4, properties: ["out": "address":"character", "deref": ]} <- copy/1 {name: "in", value: 11, type: 4, properties: ["in": "character"]} -run/0: ingredient 0 is in -mem/0: location 1027 is 114 -mem/0: location 1026 is 1056 -mem/0: storing 114 in location 1056 -run/0: instruction string-append/26 -run/0: {name: "i", value: 8, type: 1, properties: ["i": "integer"]} <- add/2 {name: "i", value: 8, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is i -mem/0: location 1024 is 3 -run/0: ingredient 1 is 1 -run/0: product 0 is 4 -mem/0: storing 4 in location 1024 -run/0: instruction string-append/27 -run/0: {name: "result-idx", value: 7, type: 1, properties: ["result-idx": "integer"]} <- add/2 {name: "result-idx", value: 7, type: 1, properties: ["result-idx": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is result-idx -mem/0: location 1023 is 9 -run/0: ingredient 1 is 1 -run/0: product 0 is 10 -mem/0: storing 10 in location 1023 -run/0: instruction string-append/28 -run/0: loop/10 {name: "", value: -8, type: , properties: ["": ]} -run/0: ingredient 0 is -8 -run/0: jumping to instruction 21 -run/0: instruction string-append/21 -run/0: {name: "b-done?", value: 12, type: 3, properties: ["b-done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 8, type: 1, properties: ["i": "integer"]}, {name: "b-len", value: 4, type: 1, properties: ["b-len": "integer"]} -run/0: ingredient 0 is i -mem/0: location 1024 is 4 -run/0: ingredient 1 is b-len -mem/0: location 1020 is 7 -run/0: product 0 is 0 -mem/0: storing 0 in location 1028 -run/0: instruction string-append/22 -run/0: break-if/11 {name: "b-done?", value: 12, type: 3, properties: ["b-done?": "boolean"]}, {name: "", value: 6, type: , properties: ["": ]} -mem/0: location 1028 is 0 -run/0: ingredient 0 is 0 -run/0: jump-if fell through -run/0: instruction string-append/23 -run/0: {name: "out", value: 10, type: 2-4, properties: ["out": "address":"character"]} <- index-address/27 {name: "result", value: 6, type: 2-5-4, properties: ["result": "address":"array":"character", "deref": ]}, {name: "result-idx", value: 7, type: 1, properties: ["result-idx": "integer"]} -run/0: ingredient 0 is result -mem/0: location 1022 is 1046 -run/0: ingredient 1 is {name: "result-idx", value: 7, type: 1, properties: ["result-idx": "integer"]} -mem/0: location 1023 is 10 -run/0: address to copy is 1057 -run/0: product 0 is 1057 -mem/0: storing 1057 in location 1026 -run/0: instruction string-append/24 -run/0: {name: "in", value: 11, type: 4, properties: ["in": "character"]} <- index/26 {name: "b", value: 3, type: 2-5-4, properties: ["b": "address":"array":"character", "deref": ]}, {name: "i", value: 8, type: 1, properties: ["i": "integer"]} -run/0: ingredient 0 is {name: "b", value: 3, type: 2-5-4, properties: ["b": "address":"array":"character", "deref": ]} -mem/0: location 1019 is 1007 -run/0: ingredient 1 is {name: "i", value: 8, type: 1, properties: ["i": "integer"]} -mem/0: location 1024 is 4 -run/0: address to copy is 1012 -run/0: its type is 4 -mem/0: location 1012 is 108 -run/0: product 0 is 108 -mem/0: storing 108 in location 1027 -run/0: instruction string-append/25 -run/0: {name: "out", value: 10, type: 2-4, properties: ["out": "address":"character", "deref": ]} <- copy/1 {name: "in", value: 11, type: 4, properties: ["in": "character"]} -run/0: ingredient 0 is in -mem/0: location 1027 is 108 -mem/0: location 1026 is 1057 -mem/0: storing 108 in location 1057 -run/0: instruction string-append/26 -run/0: {name: "i", value: 8, type: 1, properties: ["i": "integer"]} <- add/2 {name: "i", value: 8, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is i -mem/0: location 1024 is 4 -run/0: ingredient 1 is 1 -run/0: product 0 is 5 -mem/0: storing 5 in location 1024 -run/0: instruction string-append/27 -run/0: {name: "result-idx", value: 7, type: 1, properties: ["result-idx": "integer"]} <- add/2 {name: "result-idx", value: 7, type: 1, properties: ["result-idx": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is result-idx -mem/0: location 1023 is 10 -run/0: ingredient 1 is 1 -run/0: product 0 is 11 -mem/0: storing 11 in location 1023 -run/0: instruction string-append/28 -run/0: loop/10 {name: "", value: -8, type: , properties: ["": ]} -run/0: ingredient 0 is -8 -run/0: jumping to instruction 21 -run/0: instruction string-append/21 -run/0: {name: "b-done?", value: 12, type: 3, properties: ["b-done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 8, type: 1, properties: ["i": "integer"]}, {name: "b-len", value: 4, type: 1, properties: ["b-len": "integer"]} -run/0: ingredient 0 is i -mem/0: location 1024 is 5 -run/0: ingredient 1 is b-len -mem/0: location 1020 is 7 -run/0: product 0 is 0 -mem/0: storing 0 in location 1028 -run/0: instruction string-append/22 -run/0: break-if/11 {name: "b-done?", value: 12, type: 3, properties: ["b-done?": "boolean"]}, {name: "", value: 6, type: , properties: ["": ]} -mem/0: location 1028 is 0 -run/0: ingredient 0 is 0 -run/0: jump-if fell through -run/0: instruction string-append/23 -run/0: {name: "out", value: 10, type: 2-4, properties: ["out": "address":"character"]} <- index-address/27 {name: "result", value: 6, type: 2-5-4, properties: ["result": "address":"array":"character", "deref": ]}, {name: "result-idx", value: 7, type: 1, properties: ["result-idx": "integer"]} -run/0: ingredient 0 is result -mem/0: location 1022 is 1046 -run/0: ingredient 1 is {name: "result-idx", value: 7, type: 1, properties: ["result-idx": "integer"]} -mem/0: location 1023 is 11 -run/0: address to copy is 1058 -run/0: product 0 is 1058 -mem/0: storing 1058 in location 1026 -run/0: instruction string-append/24 -run/0: {name: "in", value: 11, type: 4, properties: ["in": "character"]} <- index/26 {name: "b", value: 3, type: 2-5-4, properties: ["b": "address":"array":"character", "deref": ]}, {name: "i", value: 8, type: 1, properties: ["i": "integer"]} -run/0: ingredient 0 is {name: "b", value: 3, type: 2-5-4, properties: ["b": "address":"array":"character", "deref": ]} -mem/0: location 1019 is 1007 -run/0: ingredient 1 is {name: "i", value: 8, type: 1, properties: ["i": "integer"]} -mem/0: location 1024 is 5 -run/0: address to copy is 1013 -run/0: its type is 4 -mem/0: location 1013 is 100 -run/0: product 0 is 100 -mem/0: storing 100 in location 1027 -run/0: instruction string-append/25 -run/0: {name: "out", value: 10, type: 2-4, properties: ["out": "address":"character", "deref": ]} <- copy/1 {name: "in", value: 11, type: 4, properties: ["in": "character"]} -run/0: ingredient 0 is in -mem/0: location 1027 is 100 -mem/0: location 1026 is 1058 -mem/0: storing 100 in location 1058 -run/0: instruction string-append/26 -run/0: {name: "i", value: 8, type: 1, properties: ["i": "integer"]} <- add/2 {name: "i", value: 8, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is i -mem/0: location 1024 is 5 -run/0: ingredient 1 is 1 -run/0: product 0 is 6 -mem/0: storing 6 in location 1024 -run/0: instruction string-append/27 -run/0: {name: "result-idx", value: 7, type: 1, properties: ["result-idx": "integer"]} <- add/2 {name: "result-idx", value: 7, type: 1, properties: ["result-idx": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is result-idx -mem/0: location 1023 is 11 -run/0: ingredient 1 is 1 -run/0: product 0 is 12 -mem/0: storing 12 in location 1023 -run/0: instruction string-append/28 -run/0: loop/10 {name: "", value: -8, type: , properties: ["": ]} -run/0: ingredient 0 is -8 -run/0: jumping to instruction 21 -run/0: instruction string-append/21 -run/0: {name: "b-done?", value: 12, type: 3, properties: ["b-done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 8, type: 1, properties: ["i": "integer"]}, {name: "b-len", value: 4, type: 1, properties: ["b-len": "integer"]} -run/0: ingredient 0 is i -mem/0: location 1024 is 6 -run/0: ingredient 1 is b-len -mem/0: location 1020 is 7 -run/0: product 0 is 0 -mem/0: storing 0 in location 1028 -run/0: instruction string-append/22 -run/0: break-if/11 {name: "b-done?", value: 12, type: 3, properties: ["b-done?": "boolean"]}, {name: "", value: 6, type: , properties: ["": ]} -mem/0: location 1028 is 0 -run/0: ingredient 0 is 0 -run/0: jump-if fell through -run/0: instruction string-append/23 -run/0: {name: "out", value: 10, type: 2-4, properties: ["out": "address":"character"]} <- index-address/27 {name: "result", value: 6, type: 2-5-4, properties: ["result": "address":"array":"character", "deref": ]}, {name: "result-idx", value: 7, type: 1, properties: ["result-idx": "integer"]} -run/0: ingredient 0 is result -mem/0: location 1022 is 1046 -run/0: ingredient 1 is {name: "result-idx", value: 7, type: 1, properties: ["result-idx": "integer"]} -mem/0: location 1023 is 12 -run/0: address to copy is 1059 -run/0: product 0 is 1059 -mem/0: storing 1059 in location 1026 -run/0: instruction string-append/24 -run/0: {name: "in", value: 11, type: 4, properties: ["in": "character"]} <- index/26 {name: "b", value: 3, type: 2-5-4, properties: ["b": "address":"array":"character", "deref": ]}, {name: "i", value: 8, type: 1, properties: ["i": "integer"]} -run/0: ingredient 0 is {name: "b", value: 3, type: 2-5-4, properties: ["b": "address":"array":"character", "deref": ]} -mem/0: location 1019 is 1007 -run/0: ingredient 1 is {name: "i", value: 8, type: 1, properties: ["i": "integer"]} -mem/0: location 1024 is 6 -run/0: address to copy is 1014 -run/0: its type is 4 -mem/0: location 1014 is 33 -run/0: product 0 is 33 -mem/0: storing 33 in location 1027 -run/0: instruction string-append/25 -run/0: {name: "out", value: 10, type: 2-4, properties: ["out": "address":"character", "deref": ]} <- copy/1 {name: "in", value: 11, type: 4, properties: ["in": "character"]} -run/0: ingredient 0 is in -mem/0: location 1027 is 33 -mem/0: location 1026 is 1059 -mem/0: storing 33 in location 1059 -run/0: instruction string-append/26 -run/0: {name: "i", value: 8, type: 1, properties: ["i": "integer"]} <- add/2 {name: "i", value: 8, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is i -mem/0: location 1024 is 6 -run/0: ingredient 1 is 1 -run/0: product 0 is 7 -mem/0: storing 7 in location 1024 -run/0: instruction string-append/27 -run/0: {name: "result-idx", value: 7, type: 1, properties: ["result-idx": "integer"]} <- add/2 {name: "result-idx", value: 7, type: 1, properties: ["result-idx": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is result-idx -mem/0: location 1023 is 12 -run/0: ingredient 1 is 1 -run/0: product 0 is 13 -mem/0: storing 13 in location 1023 -run/0: instruction string-append/28 -run/0: loop/10 {name: "", value: -8, type: , properties: ["": ]} -run/0: ingredient 0 is -8 -run/0: jumping to instruction 21 -run/0: instruction string-append/21 -run/0: {name: "b-done?", value: 12, type: 3, properties: ["b-done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 8, type: 1, properties: ["i": "integer"]}, {name: "b-len", value: 4, type: 1, properties: ["b-len": "integer"]} -run/0: ingredient 0 is i -mem/0: location 1024 is 7 -run/0: ingredient 1 is b-len -mem/0: location 1020 is 7 -run/0: product 0 is 1 -mem/0: storing 1 in location 1028 -run/0: instruction string-append/22 -run/0: break-if/11 {name: "b-done?", value: 12, type: 3, properties: ["b-done?": "boolean"]}, {name: "", value: 6, type: , properties: ["": ]} -mem/0: location 1028 is 1 -run/0: ingredient 0 is 1 -run/0: ingredient 1 is -run/0: jumping to instruction 29 -run/0: instruction string-append/30 -run/0: reply/33 {name: "result", value: 6, type: 2-5-4, properties: ["result": "address":"array":"character"]} -mem/0: location 1022 is 1046 -run/0: result 0 is 1046 -mem/0: storing 1046 in location 3 -run/0: instruction run1001/3 -run/0: {name: "4", value: 4, type: 5-4, properties: ["4": "array":"character", "raw": ]} <- copy/1 {name: "3", value: 3, type: 2-5-4, properties: ["3": "address":"array":"character", "raw": , "deref": ]} -run/0: ingredient 0 is 3 -mem/0: location 3 is 1046 -mem/0: location 1046 is 13 -mem/0: location 1047 is 104 -mem/0: location 1048 is 101 -mem/0: location 1049 is 108 -mem/0: location 1050 is 108 -mem/0: location 1051 is 111 -mem/0: location 1052 is 44 -mem/0: location 1053 is 32 -mem/0: location 1054 is 119 -mem/0: location 1055 is 111 -mem/0: location 1056 is 114 -mem/0: location 1057 is 108 -mem/0: location 1058 is 100 -mem/0: location 1059 is 33 -mem/0: storing 13 in location 4 -mem/0: storing 104 in location 5 -mem/0: storing 101 in location 6 -mem/0: storing 108 in location 7 -mem/0: storing 108 in location 8 -mem/0: storing 111 in location 9 -mem/0: storing 44 in location 10 -mem/0: storing 32 in location 11 -mem/0: storing 119 in location 12 -mem/0: storing 111 in location 13 -mem/0: storing 114 in location 14 -mem/0: storing 108 in location 15 -mem/0: storing 100 in location 16 -mem/0: storing 33 in location 17 -run/0: instruction string-append-1/1 -run/0: memory-should-contain/46 {name: " - 4:string <- [hello, world!] - ", value: 0, type: 0, properties: [" - 4:string <- [hello, world!] - ": "literal-string"]} -run/0: checking string length at 4 -run/0: checking location 5 -run/0: checking location 6 -run/0: checking location 7 -run/0: checking location 8 -run/0: checking location 9 -run/0: checking location 10 -run/0: checking location 11 -run/0: checking location 12 -run/0: checking location 13 -run/0: checking location 14 -run/0: checking location 15 -run/0: checking location 16 -run/0: checking location 17 diff --git a/cpp/.traces/string-equal-common-lengths-but-distinct b/cpp/.traces/string-equal-common-lengths-but-distinct deleted file mode 100644 index 4af26a30..00000000 --- a/cpp/.traces/string-equal-common-lengths-but-distinct +++ /dev/null @@ -1,296 +0,0 @@ -parse/0: instruction: run -parse/0: ingredient: {name: " - default-space:address:array:location <- new location:type, 30:literal - x:address:array:character <- new [abc] - y:address:array:character <- new [abd] - 3:boolean/raw <- string-equal x:address:array:character, y:address:array:character - ", value: 0, type: 0, properties: [" - default-space:address:array:location <- new location:type, 30:literal - x:address:array:character <- new [abc] - y:address:array:character <- new [abd] - 3:boolean/raw <- string-equal x:address:array:character, y:address:array:character - ": "literal-string"]} -parse/0: instruction: memory-should-contain -parse/0: ingredient: {name: " - 3 <- 0 # abc != abd - ", value: 0, type: 0, properties: [" - 3 <- 0 # abc != abd - ": "literal-string"]} -after-brace/0: recipe string-equal-common-lengths-but-distinct -after-brace/0: run ... -after-brace/0: memory-should-contain ... -new/0: routine allocated memory from 1000 to 101000 -schedule/0: string-equal-common-lengths-but-distinct -run/0: instruction string-equal-common-lengths-but-distinct/0 -run/0: run/45 {name: " - default-space:address:array:location <- new location:type, 30:literal - x:address:array:character <- new [abc] - y:address:array:character <- new [abd] - 3:boolean/raw <- string-equal x:address:array:character, y:address:array:character - ", value: 0, type: 0, properties: [" - default-space:address:array:location <- new location:type, 30:literal - x:address:array:character <- new [abc] - y:address:array:character <- new [abd] - 3:boolean/raw <- string-equal x:address:array:character, y:address:array:character - ": "literal-string"]} -parse/0: instruction: new -parse/0: ingredient: {name: "location", value: 0, type: 0, properties: ["location": "type"]} -parse/0: ingredient: {name: "30", value: 0, type: 0, properties: ["30": "literal"]} -parse/0: product: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} -parse/0: instruction: new -parse/0: ingredient: {name: "abc", value: 0, type: 0, properties: ["abc": "literal-string"]} -parse/0: product: {name: "x", value: 0, type: 2-5-4, properties: ["x": "address":"array":"character"]} -parse/0: instruction: new -parse/0: ingredient: {name: "abd", value: 0, type: 0, properties: ["abd": "literal-string"]} -parse/0: product: {name: "y", value: 0, type: 2-5-4, properties: ["y": "address":"array":"character"]} -parse/0: instruction: string-equal -parse/0: ingredient: {name: "x", value: 0, type: 2-5-4, properties: ["x": "address":"array":"character"]} -parse/0: ingredient: {name: "y", value: 0, type: 2-5-4, properties: ["y": "address":"array":"character"]} -parse/0: product: {name: "3", value: 0, type: 3, properties: ["3": "boolean", "raw": ]} -new/0: location -> 1 -new/0: abc -> 0 -name/0: assign x 1 -new/0: abd -> 0 -name/0: assign y 2 -after-brace/0: recipe run1001 -after-brace/0: new ... -after-brace/0: new ... -after-brace/0: new ... -after-brace/0: string-equal ... -run/0: instruction run1001/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/44 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} -mem/0: array size is 30 -mem/0: new alloc: 1000 -run/0: instruction run1001/1 -run/0: {name: "x", value: 1, type: 2-5-4, properties: ["x": "address":"array":"character"]} <- new/44 {name: "abc", value: 0, type: 0, properties: ["abc": "literal-string"]} -mem/0: storing 1031 in location 1002 -run/0: instruction run1001/2 -run/0: {name: "y", value: 2, type: 2-5-4, properties: ["y": "address":"array":"character"]} <- new/44 {name: "abd", value: 0, type: 0, properties: ["abd": "literal-string"]} -mem/0: storing 1035 in location 1003 -run/0: instruction run1001/3 -run/0: {name: "3", value: 3, type: 3, properties: ["3": "boolean", "raw": ]} <- string-equal/100 {name: "x", value: 1, type: 2-5-4, properties: ["x": "address":"array":"character"]}, {name: "y", value: 2, type: 2-5-4, properties: ["y": "address":"array":"character"]} -mem/0: location 1002 is 1031 -mem/0: location 1003 is 1035 -run/0: instruction string-equal/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/44 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} -mem/0: array size is 30 -mem/0: new alloc: 1039 -run/0: instruction string-equal/1 -run/0: {name: "a", value: 1, type: 2-5-4, properties: ["a": "address":"array":"character"]} <- next-ingredient/30 -run/0: product 0 is 1031 -mem/0: storing 1031 in location 1041 -run/0: instruction string-equal/2 -run/0: {name: "a-len", value: 2, type: 1, properties: ["a-len": "integer"]} <- length/28 {name: "a", value: 1, type: 2-5-4, properties: ["a": "address":"array":"character", "deref": ]} -mem/0: location 1041 is 1031 -mem/0: storing 3 in location 1042 -run/0: instruction string-equal/3 -run/0: {name: "b", value: 3, type: 2-5-4, properties: ["b": "address":"array":"character"]} <- next-ingredient/30 -run/0: product 0 is 1035 -mem/0: storing 1035 in location 1043 -run/0: instruction string-equal/4 -run/0: {name: "b-len", value: 4, type: 1, properties: ["b-len": "integer"]} <- length/28 {name: "b", value: 3, type: 2-5-4, properties: ["b": "address":"array":"character", "deref": ]} -mem/0: location 1043 is 1035 -mem/0: storing 3 in location 1044 -run/0: instruction string-equal/6 -run/0: trace/18 {name: "string-equal", value: 0, type: 0, properties: ["string-equal": "literal-string"]}, {name: "comparing lengths", value: 0, type: 0, properties: ["comparing lengths": "literal-string"]} -string-equal/0: comparing lengths -run/0: instruction string-equal/7 -run/0: {name: "length-equal?", value: 5, type: 3, properties: ["length-equal?": "boolean"]} <- equal/13 {name: "a-len", value: 2, type: 1, properties: ["a-len": "integer"]}, {name: "b-len", value: 4, type: 1, properties: ["b-len": "integer"]} -run/0: ingredient 0 is a-len -mem/0: location 1042 is 3 -run/0: ingredient 1 is b-len -mem/0: location 1044 is 3 -run/0: product 0 is 1 -mem/0: storing 1 in location 1045 -run/0: instruction string-equal/8 -run/0: break-if/11 {name: "length-equal?", value: 5, type: 3, properties: ["length-equal?": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} -mem/0: location 1045 is 1 -run/0: ingredient 0 is 1 -run/0: ingredient 1 is -run/0: jumping to instruction 10 -run/0: instruction string-equal/11 -run/0: trace/18 {name: "string-equal", value: 0, type: 0, properties: ["string-equal": "literal-string"]}, {name: "comparing characters", value: 0, type: 0, properties: ["comparing characters": "literal-string"]} -string-equal/0: comparing characters -run/0: instruction string-equal/12 -run/0: {name: "i", value: 6, type: 1, properties: ["i": "integer"]} <- copy/1 {name: "0", value: 0, type: 0, properties: ["0": "literal"]} -run/0: ingredient 0 is 0 -mem/0: storing 0 in location 1046 -run/0: instruction string-equal/14 -run/0: {name: "done?", value: 7, type: 3, properties: ["done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 6, type: 1, properties: ["i": "integer"]}, {name: "a-len", value: 2, type: 1, properties: ["a-len": "integer"]} -run/0: ingredient 0 is i -mem/0: location 1046 is 0 -run/0: ingredient 1 is a-len -mem/0: location 1042 is 3 -run/0: product 0 is 0 -mem/0: storing 0 in location 1047 -run/0: instruction string-equal/15 -run/0: break-if/11 {name: "done?", value: 7, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 9, type: , properties: ["": ]} -mem/0: location 1047 is 0 -run/0: ingredient 0 is 0 -run/0: jump-if fell through -run/0: instruction string-equal/16 -run/0: {name: "a2", value: 8, type: 4, properties: ["a2": "character"]} <- index/26 {name: "a", value: 1, type: 2-5-4, properties: ["a": "address":"array":"character", "deref": ]}, {name: "i", value: 6, type: 1, properties: ["i": "integer"]} -run/0: ingredient 0 is {name: "a", value: 1, type: 2-5-4, properties: ["a": "address":"array":"character", "deref": ]} -mem/0: location 1041 is 1031 -run/0: ingredient 1 is {name: "i", value: 6, type: 1, properties: ["i": "integer"]} -mem/0: location 1046 is 0 -run/0: address to copy is 1032 -run/0: its type is 4 -mem/0: location 1032 is 97 -run/0: product 0 is 97 -mem/0: storing 97 in location 1048 -run/0: instruction string-equal/17 -run/0: {name: "b2", value: 9, type: 4, properties: ["b2": "character"]} <- index/26 {name: "b", value: 3, type: 2-5-4, properties: ["b": "address":"array":"character", "deref": ]}, {name: "i", value: 6, type: 1, properties: ["i": "integer"]} -run/0: ingredient 0 is {name: "b", value: 3, type: 2-5-4, properties: ["b": "address":"array":"character", "deref": ]} -mem/0: location 1043 is 1035 -run/0: ingredient 1 is {name: "i", value: 6, type: 1, properties: ["i": "integer"]} -mem/0: location 1046 is 0 -run/0: address to copy is 1036 -run/0: its type is 4 -mem/0: location 1036 is 97 -run/0: product 0 is 97 -mem/0: storing 97 in location 1049 -run/0: instruction string-equal/19 -run/0: {name: "chars-match?", value: 10, type: 3, properties: ["chars-match?": "boolean"]} <- equal/13 {name: "a2", value: 8, type: 4, properties: ["a2": "character"]}, {name: "b2", value: 9, type: 4, properties: ["b2": "character"]} -run/0: ingredient 0 is a2 -mem/0: location 1048 is 97 -run/0: ingredient 1 is b2 -mem/0: location 1049 is 97 -run/0: product 0 is 1 -mem/0: storing 1 in location 1050 -run/0: instruction string-equal/20 -run/0: break-if/11 {name: "chars-match?", value: 10, type: 3, properties: ["chars-match?": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} -mem/0: location 1050 is 1 -run/0: ingredient 0 is 1 -run/0: ingredient 1 is -run/0: jumping to instruction 22 -run/0: instruction string-equal/23 -run/0: {name: "i", value: 6, type: 1, properties: ["i": "integer"]} <- add/2 {name: "i", value: 6, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is i -mem/0: location 1046 is 0 -run/0: ingredient 1 is 1 -run/0: product 0 is 1 -mem/0: storing 1 in location 1046 -run/0: instruction string-equal/24 -run/0: loop/10 {name: "", value: -11, type: , properties: ["": ]} -run/0: ingredient 0 is -11 -run/0: jumping to instruction 14 -run/0: instruction string-equal/14 -run/0: {name: "done?", value: 7, type: 3, properties: ["done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 6, type: 1, properties: ["i": "integer"]}, {name: "a-len", value: 2, type: 1, properties: ["a-len": "integer"]} -run/0: ingredient 0 is i -mem/0: location 1046 is 1 -run/0: ingredient 1 is a-len -mem/0: location 1042 is 3 -run/0: product 0 is 0 -mem/0: storing 0 in location 1047 -run/0: instruction string-equal/15 -run/0: break-if/11 {name: "done?", value: 7, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 9, type: , properties: ["": ]} -mem/0: location 1047 is 0 -run/0: ingredient 0 is 0 -run/0: jump-if fell through -run/0: instruction string-equal/16 -run/0: {name: "a2", value: 8, type: 4, properties: ["a2": "character"]} <- index/26 {name: "a", value: 1, type: 2-5-4, properties: ["a": "address":"array":"character", "deref": ]}, {name: "i", value: 6, type: 1, properties: ["i": "integer"]} -run/0: ingredient 0 is {name: "a", value: 1, type: 2-5-4, properties: ["a": "address":"array":"character", "deref": ]} -mem/0: location 1041 is 1031 -run/0: ingredient 1 is {name: "i", value: 6, type: 1, properties: ["i": "integer"]} -mem/0: location 1046 is 1 -run/0: address to copy is 1033 -run/0: its type is 4 -mem/0: location 1033 is 98 -run/0: product 0 is 98 -mem/0: storing 98 in location 1048 -run/0: instruction string-equal/17 -run/0: {name: "b2", value: 9, type: 4, properties: ["b2": "character"]} <- index/26 {name: "b", value: 3, type: 2-5-4, properties: ["b": "address":"array":"character", "deref": ]}, {name: "i", value: 6, type: 1, properties: ["i": "integer"]} -run/0: ingredient 0 is {name: "b", value: 3, type: 2-5-4, properties: ["b": "address":"array":"character", "deref": ]} -mem/0: location 1043 is 1035 -run/0: ingredient 1 is {name: "i", value: 6, type: 1, properties: ["i": "integer"]} -mem/0: location 1046 is 1 -run/0: address to copy is 1037 -run/0: its type is 4 -mem/0: location 1037 is 98 -run/0: product 0 is 98 -mem/0: storing 98 in location 1049 -run/0: instruction string-equal/19 -run/0: {name: "chars-match?", value: 10, type: 3, properties: ["chars-match?": "boolean"]} <- equal/13 {name: "a2", value: 8, type: 4, properties: ["a2": "character"]}, {name: "b2", value: 9, type: 4, properties: ["b2": "character"]} -run/0: ingredient 0 is a2 -mem/0: location 1048 is 98 -run/0: ingredient 1 is b2 -mem/0: location 1049 is 98 -run/0: product 0 is 1 -mem/0: storing 1 in location 1050 -run/0: instruction string-equal/20 -run/0: break-if/11 {name: "chars-match?", value: 10, type: 3, properties: ["chars-match?": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} -mem/0: location 1050 is 1 -run/0: ingredient 0 is 1 -run/0: ingredient 1 is -run/0: jumping to instruction 22 -run/0: instruction string-equal/23 -run/0: {name: "i", value: 6, type: 1, properties: ["i": "integer"]} <- add/2 {name: "i", value: 6, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is i -mem/0: location 1046 is 1 -run/0: ingredient 1 is 1 -run/0: product 0 is 2 -mem/0: storing 2 in location 1046 -run/0: instruction string-equal/24 -run/0: loop/10 {name: "", value: -11, type: , properties: ["": ]} -run/0: ingredient 0 is -11 -run/0: jumping to instruction 14 -run/0: instruction string-equal/14 -run/0: {name: "done?", value: 7, type: 3, properties: ["done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 6, type: 1, properties: ["i": "integer"]}, {name: "a-len", value: 2, type: 1, properties: ["a-len": "integer"]} -run/0: ingredient 0 is i -mem/0: location 1046 is 2 -run/0: ingredient 1 is a-len -mem/0: location 1042 is 3 -run/0: product 0 is 0 -mem/0: storing 0 in location 1047 -run/0: instruction string-equal/15 -run/0: break-if/11 {name: "done?", value: 7, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 9, type: , properties: ["": ]} -mem/0: location 1047 is 0 -run/0: ingredient 0 is 0 -run/0: jump-if fell through -run/0: instruction string-equal/16 -run/0: {name: "a2", value: 8, type: 4, properties: ["a2": "character"]} <- index/26 {name: "a", value: 1, type: 2-5-4, properties: ["a": "address":"array":"character", "deref": ]}, {name: "i", value: 6, type: 1, properties: ["i": "integer"]} -run/0: ingredient 0 is {name: "a", value: 1, type: 2-5-4, properties: ["a": "address":"array":"character", "deref": ]} -mem/0: location 1041 is 1031 -run/0: ingredient 1 is {name: "i", value: 6, type: 1, properties: ["i": "integer"]} -mem/0: location 1046 is 2 -run/0: address to copy is 1034 -run/0: its type is 4 -mem/0: location 1034 is 99 -run/0: product 0 is 99 -mem/0: storing 99 in location 1048 -run/0: instruction string-equal/17 -run/0: {name: "b2", value: 9, type: 4, properties: ["b2": "character"]} <- index/26 {name: "b", value: 3, type: 2-5-4, properties: ["b": "address":"array":"character", "deref": ]}, {name: "i", value: 6, type: 1, properties: ["i": "integer"]} -run/0: ingredient 0 is {name: "b", value: 3, type: 2-5-4, properties: ["b": "address":"array":"character", "deref": ]} -mem/0: location 1043 is 1035 -run/0: ingredient 1 is {name: "i", value: 6, type: 1, properties: ["i": "integer"]} -mem/0: location 1046 is 2 -run/0: address to copy is 1038 -run/0: its type is 4 -mem/0: location 1038 is 100 -run/0: product 0 is 100 -mem/0: storing 100 in location 1049 -run/0: instruction string-equal/19 -run/0: {name: "chars-match?", value: 10, type: 3, properties: ["chars-match?": "boolean"]} <- equal/13 {name: "a2", value: 8, type: 4, properties: ["a2": "character"]}, {name: "b2", value: 9, type: 4, properties: ["b2": "character"]} -run/0: ingredient 0 is a2 -mem/0: location 1048 is 99 -run/0: ingredient 1 is b2 -mem/0: location 1049 is 100 -run/0: product 0 is 0 -mem/0: storing 0 in location 1050 -run/0: instruction string-equal/20 -run/0: break-if/11 {name: "chars-match?", value: 10, type: 3, properties: ["chars-match?": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} -mem/0: location 1050 is 0 -run/0: ingredient 0 is 0 -run/0: jump-if fell through -run/0: instruction string-equal/21 -run/0: reply/33 {name: "0", value: 0, type: 0, properties: ["0": "literal"]} -run/0: result 0 is 0 -mem/0: storing 0 in location 3 -run/0: instruction string-equal-common-lengths-but-distinct/1 -run/0: memory-should-contain/46 {name: " - 3 <- 0 # abc != abd - ", value: 0, type: 0, properties: [" - 3 <- 0 # abc != abd - ": "literal-string"]} -run/0: checking location 3 diff --git a/cpp/.traces/string-equal-distinct-lengths b/cpp/.traces/string-equal-distinct-lengths deleted file mode 100644 index 3a92b204..00000000 --- a/cpp/.traces/string-equal-distinct-lengths +++ /dev/null @@ -1,146 +0,0 @@ -parse/0: instruction: run -parse/0: ingredient: {name: " - default-space:address:array:location <- new location:type, 30:literal - x:address:array:character <- new [abc] - y:address:array:character <- new [abcd] - 3:boolean/raw <- string-equal x:address:array:character, y:address:array:character - ", value: 0, type: 0, properties: [" - default-space:address:array:location <- new location:type, 30:literal - x:address:array:character <- new [abc] - y:address:array:character <- new [abcd] - 3:boolean/raw <- string-equal x:address:array:character, y:address:array:character - ": "literal-string"]} -parse/0: instruction: memory-should-contain -parse/0: ingredient: {name: " - 3 <- 0 # abc != abcd - ", value: 0, type: 0, properties: [" - 3 <- 0 # abc != abcd - ": "literal-string"]} -parse/0: instruction: trace-should-contain -parse/0: ingredient: {name: " - string-equal: comparing lengths - ", value: 0, type: 0, properties: [" - string-equal: comparing lengths - ": "literal-string"]} -parse/0: instruction: trace-should-not-contain -parse/0: ingredient: {name: " - string-equal: comparing characters - ", value: 0, type: 0, properties: [" - string-equal: comparing characters - ": "literal-string"]} -after-brace/0: recipe string-equal-distinct-lengths -after-brace/0: run ... -after-brace/0: memory-should-contain ... -after-brace/0: trace-should-contain ... -after-brace/0: trace-should-not-contain ... -new/0: routine allocated memory from 1000 to 101000 -schedule/0: string-equal-distinct-lengths -run/0: instruction string-equal-distinct-lengths/0 -run/0: run/45 {name: " - default-space:address:array:location <- new location:type, 30:literal - x:address:array:character <- new [abc] - y:address:array:character <- new [abcd] - 3:boolean/raw <- string-equal x:address:array:character, y:address:array:character - ", value: 0, type: 0, properties: [" - default-space:address:array:location <- new location:type, 30:literal - x:address:array:character <- new [abc] - y:address:array:character <- new [abcd] - 3:boolean/raw <- string-equal x:address:array:character, y:address:array:character - ": "literal-string"]} -parse/0: instruction: new -parse/0: ingredient: {name: "location", value: 0, type: 0, properties: ["location": "type"]} -parse/0: ingredient: {name: "30", value: 0, type: 0, properties: ["30": "literal"]} -parse/0: product: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} -parse/0: instruction: new -parse/0: ingredient: {name: "abc", value: 0, type: 0, properties: ["abc": "literal-string"]} -parse/0: product: {name: "x", value: 0, type: 2-5-4, properties: ["x": "address":"array":"character"]} -parse/0: instruction: new -parse/0: ingredient: {name: "abcd", value: 0, type: 0, properties: ["abcd": "literal-string"]} -parse/0: product: {name: "y", value: 0, type: 2-5-4, properties: ["y": "address":"array":"character"]} -parse/0: instruction: string-equal -parse/0: ingredient: {name: "x", value: 0, type: 2-5-4, properties: ["x": "address":"array":"character"]} -parse/0: ingredient: {name: "y", value: 0, type: 2-5-4, properties: ["y": "address":"array":"character"]} -parse/0: product: {name: "3", value: 0, type: 3, properties: ["3": "boolean", "raw": ]} -new/0: location -> 1 -new/0: abc -> 0 -name/0: assign x 1 -new/0: abcd -> 0 -name/0: assign y 2 -after-brace/0: recipe run1001 -after-brace/0: new ... -after-brace/0: new ... -after-brace/0: new ... -after-brace/0: string-equal ... -run/0: instruction run1001/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/44 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} -mem/0: array size is 30 -mem/0: new alloc: 1000 -run/0: instruction run1001/1 -run/0: {name: "x", value: 1, type: 2-5-4, properties: ["x": "address":"array":"character"]} <- new/44 {name: "abc", value: 0, type: 0, properties: ["abc": "literal-string"]} -mem/0: storing 1031 in location 1002 -run/0: instruction run1001/2 -run/0: {name: "y", value: 2, type: 2-5-4, properties: ["y": "address":"array":"character"]} <- new/44 {name: "abcd", value: 0, type: 0, properties: ["abcd": "literal-string"]} -mem/0: storing 1035 in location 1003 -run/0: instruction run1001/3 -run/0: {name: "3", value: 3, type: 3, properties: ["3": "boolean", "raw": ]} <- string-equal/100 {name: "x", value: 1, type: 2-5-4, properties: ["x": "address":"array":"character"]}, {name: "y", value: 2, type: 2-5-4, properties: ["y": "address":"array":"character"]} -mem/0: location 1002 is 1031 -mem/0: location 1003 is 1035 -run/0: instruction string-equal/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/44 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} -mem/0: array size is 30 -mem/0: new alloc: 1040 -run/0: instruction string-equal/1 -run/0: {name: "a", value: 1, type: 2-5-4, properties: ["a": "address":"array":"character"]} <- next-ingredient/30 -run/0: product 0 is 1031 -mem/0: storing 1031 in location 1042 -run/0: instruction string-equal/2 -run/0: {name: "a-len", value: 2, type: 1, properties: ["a-len": "integer"]} <- length/28 {name: "a", value: 1, type: 2-5-4, properties: ["a": "address":"array":"character", "deref": ]} -mem/0: location 1042 is 1031 -mem/0: storing 3 in location 1043 -run/0: instruction string-equal/3 -run/0: {name: "b", value: 3, type: 2-5-4, properties: ["b": "address":"array":"character"]} <- next-ingredient/30 -run/0: product 0 is 1035 -mem/0: storing 1035 in location 1044 -run/0: instruction string-equal/4 -run/0: {name: "b-len", value: 4, type: 1, properties: ["b-len": "integer"]} <- length/28 {name: "b", value: 3, type: 2-5-4, properties: ["b": "address":"array":"character", "deref": ]} -mem/0: location 1044 is 1035 -mem/0: storing 4 in location 1045 -run/0: instruction string-equal/6 -run/0: trace/18 {name: "string-equal", value: 0, type: 0, properties: ["string-equal": "literal-string"]}, {name: "comparing lengths", value: 0, type: 0, properties: ["comparing lengths": "literal-string"]} -string-equal/0: comparing lengths -run/0: instruction string-equal/7 -run/0: {name: "length-equal?", value: 5, type: 3, properties: ["length-equal?": "boolean"]} <- equal/13 {name: "a-len", value: 2, type: 1, properties: ["a-len": "integer"]}, {name: "b-len", value: 4, type: 1, properties: ["b-len": "integer"]} -run/0: ingredient 0 is a-len -mem/0: location 1043 is 3 -run/0: ingredient 1 is b-len -mem/0: location 1045 is 4 -run/0: product 0 is 0 -mem/0: storing 0 in location 1046 -run/0: instruction string-equal/8 -run/0: break-if/11 {name: "length-equal?", value: 5, type: 3, properties: ["length-equal?": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} -mem/0: location 1046 is 0 -run/0: ingredient 0 is 0 -run/0: jump-if fell through -run/0: instruction string-equal/9 -run/0: reply/33 {name: "0", value: 0, type: 0, properties: ["0": "literal"]} -run/0: result 0 is 0 -mem/0: storing 0 in location 3 -run/0: instruction string-equal-distinct-lengths/1 -run/0: memory-should-contain/46 {name: " - 3 <- 0 # abc != abcd - ", value: 0, type: 0, properties: [" - 3 <- 0 # abc != abcd - ": "literal-string"]} -run/0: checking location 3 -run/0: instruction string-equal-distinct-lengths/2 -run/0: trace-should-contain/47 {name: " - string-equal: comparing lengths - ", value: 0, type: 0, properties: [" - string-equal: comparing lengths - ": "literal-string"]} -run/0: instruction string-equal-distinct-lengths/3 -run/0: trace-should-not-contain/48 {name: " - string-equal: comparing characters - ", value: 0, type: 0, properties: [" - string-equal: comparing characters - ": "literal-string"]} diff --git a/cpp/.traces/string-equal-identical b/cpp/.traces/string-equal-identical deleted file mode 100644 index 53d32465..00000000 --- a/cpp/.traces/string-equal-identical +++ /dev/null @@ -1,322 +0,0 @@ -parse/0: instruction: run -parse/0: ingredient: {name: " - default-space:address:array:location <- new location:type, 30:literal - x:address:array:character <- new [abc] - y:address:array:character <- new [abc] - 3:boolean/raw <- string-equal x:address:array:character, y:address:array:character - ", value: 0, type: 0, properties: [" - default-space:address:array:location <- new location:type, 30:literal - x:address:array:character <- new [abc] - y:address:array:character <- new [abc] - 3:boolean/raw <- string-equal x:address:array:character, y:address:array:character - ": "literal-string"]} -parse/0: instruction: memory-should-contain -parse/0: ingredient: {name: " - 3 <- 1 # abc == abc - ", value: 0, type: 0, properties: [" - 3 <- 1 # abc == abc - ": "literal-string"]} -after-brace/0: recipe string-equal-identical -after-brace/0: run ... -after-brace/0: memory-should-contain ... -new/0: routine allocated memory from 1000 to 101000 -schedule/0: string-equal-identical -run/0: instruction string-equal-identical/0 -run/0: run/45 {name: " - default-space:address:array:location <- new location:type, 30:literal - x:address:array:character <- new [abc] - y:address:array:character <- new [abc] - 3:boolean/raw <- string-equal x:address:array:character, y:address:array:character - ", value: 0, type: 0, properties: [" - default-space:address:array:location <- new location:type, 30:literal - x:address:array:character <- new [abc] - y:address:array:character <- new [abc] - 3:boolean/raw <- string-equal x:address:array:character, y:address:array:character - ": "literal-string"]} -parse/0: instruction: new -parse/0: ingredient: {name: "location", value: 0, type: 0, properties: ["location": "type"]} -parse/0: ingredient: {name: "30", value: 0, type: 0, properties: ["30": "literal"]} -parse/0: product: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} -parse/0: instruction: new -parse/0: ingredient: {name: "abc", value: 0, type: 0, properties: ["abc": "literal-string"]} -parse/0: product: {name: "x", value: 0, type: 2-5-4, properties: ["x": "address":"array":"character"]} -parse/0: instruction: new -parse/0: ingredient: {name: "abc", value: 0, type: 0, properties: ["abc": "literal-string"]} -parse/0: product: {name: "y", value: 0, type: 2-5-4, properties: ["y": "address":"array":"character"]} -parse/0: instruction: string-equal -parse/0: ingredient: {name: "x", value: 0, type: 2-5-4, properties: ["x": "address":"array":"character"]} -parse/0: ingredient: {name: "y", value: 0, type: 2-5-4, properties: ["y": "address":"array":"character"]} -parse/0: product: {name: "3", value: 0, type: 3, properties: ["3": "boolean", "raw": ]} -new/0: location -> 1 -new/0: abc -> 0 -name/0: assign x 1 -new/0: abc -> 0 -name/0: assign y 2 -after-brace/0: recipe run1001 -after-brace/0: new ... -after-brace/0: new ... -after-brace/0: new ... -after-brace/0: string-equal ... -run/0: instruction run1001/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/44 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} -mem/0: array size is 30 -mem/0: new alloc: 1000 -run/0: instruction run1001/1 -run/0: {name: "x", value: 1, type: 2-5-4, properties: ["x": "address":"array":"character"]} <- new/44 {name: "abc", value: 0, type: 0, properties: ["abc": "literal-string"]} -mem/0: storing 1031 in location 1002 -run/0: instruction run1001/2 -run/0: {name: "y", value: 2, type: 2-5-4, properties: ["y": "address":"array":"character"]} <- new/44 {name: "abc", value: 0, type: 0, properties: ["abc": "literal-string"]} -mem/0: storing 1035 in location 1003 -run/0: instruction run1001/3 -run/0: {name: "3", value: 3, type: 3, properties: ["3": "boolean", "raw": ]} <- string-equal/100 {name: "x", value: 1, type: 2-5-4, properties: ["x": "address":"array":"character"]}, {name: "y", value: 2, type: 2-5-4, properties: ["y": "address":"array":"character"]} -mem/0: location 1002 is 1031 -mem/0: location 1003 is 1035 -run/0: instruction string-equal/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/44 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} -mem/0: array size is 30 -mem/0: new alloc: 1039 -run/0: instruction string-equal/1 -run/0: {name: "a", value: 1, type: 2-5-4, properties: ["a": "address":"array":"character"]} <- next-ingredient/30 -run/0: product 0 is 1031 -mem/0: storing 1031 in location 1041 -run/0: instruction string-equal/2 -run/0: {name: "a-len", value: 2, type: 1, properties: ["a-len": "integer"]} <- length/28 {name: "a", value: 1, type: 2-5-4, properties: ["a": "address":"array":"character", "deref": ]} -mem/0: location 1041 is 1031 -mem/0: storing 3 in location 1042 -run/0: instruction string-equal/3 -run/0: {name: "b", value: 3, type: 2-5-4, properties: ["b": "address":"array":"character"]} <- next-ingredient/30 -run/0: product 0 is 1035 -mem/0: storing 1035 in location 1043 -run/0: instruction string-equal/4 -run/0: {name: "b-len", value: 4, type: 1, properties: ["b-len": "integer"]} <- length/28 {name: "b", value: 3, type: 2-5-4, properties: ["b": "address":"array":"character", "deref": ]} -mem/0: location 1043 is 1035 -mem/0: storing 3 in location 1044 -run/0: instruction string-equal/6 -run/0: trace/18 {name: "string-equal", value: 0, type: 0, properties: ["string-equal": "literal-string"]}, {name: "comparing lengths", value: 0, type: 0, properties: ["comparing lengths": "literal-string"]} -string-equal/0: comparing lengths -run/0: instruction string-equal/7 -run/0: {name: "length-equal?", value: 5, type: 3, properties: ["length-equal?": "boolean"]} <- equal/13 {name: "a-len", value: 2, type: 1, properties: ["a-len": "integer"]}, {name: "b-len", value: 4, type: 1, properties: ["b-len": "integer"]} -run/0: ingredient 0 is a-len -mem/0: location 1042 is 3 -run/0: ingredient 1 is b-len -mem/0: location 1044 is 3 -run/0: product 0 is 1 -mem/0: storing 1 in location 1045 -run/0: instruction string-equal/8 -run/0: break-if/11 {name: "length-equal?", value: 5, type: 3, properties: ["length-equal?": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} -mem/0: location 1045 is 1 -run/0: ingredient 0 is 1 -run/0: ingredient 1 is -run/0: jumping to instruction 10 -run/0: instruction string-equal/11 -run/0: trace/18 {name: "string-equal", value: 0, type: 0, properties: ["string-equal": "literal-string"]}, {name: "comparing characters", value: 0, type: 0, properties: ["comparing characters": "literal-string"]} -string-equal/0: comparing characters -run/0: instruction string-equal/12 -run/0: {name: "i", value: 6, type: 1, properties: ["i": "integer"]} <- copy/1 {name: "0", value: 0, type: 0, properties: ["0": "literal"]} -run/0: ingredient 0 is 0 -mem/0: storing 0 in location 1046 -run/0: instruction string-equal/14 -run/0: {name: "done?", value: 7, type: 3, properties: ["done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 6, type: 1, properties: ["i": "integer"]}, {name: "a-len", value: 2, type: 1, properties: ["a-len": "integer"]} -run/0: ingredient 0 is i -mem/0: location 1046 is 0 -run/0: ingredient 1 is a-len -mem/0: location 1042 is 3 -run/0: product 0 is 0 -mem/0: storing 0 in location 1047 -run/0: instruction string-equal/15 -run/0: break-if/11 {name: "done?", value: 7, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 9, type: , properties: ["": ]} -mem/0: location 1047 is 0 -run/0: ingredient 0 is 0 -run/0: jump-if fell through -run/0: instruction string-equal/16 -run/0: {name: "a2", value: 8, type: 4, properties: ["a2": "character"]} <- index/26 {name: "a", value: 1, type: 2-5-4, properties: ["a": "address":"array":"character", "deref": ]}, {name: "i", value: 6, type: 1, properties: ["i": "integer"]} -run/0: ingredient 0 is {name: "a", value: 1, type: 2-5-4, properties: ["a": "address":"array":"character", "deref": ]} -mem/0: location 1041 is 1031 -run/0: ingredient 1 is {name: "i", value: 6, type: 1, properties: ["i": "integer"]} -mem/0: location 1046 is 0 -run/0: address to copy is 1032 -run/0: its type is 4 -mem/0: location 1032 is 97 -run/0: product 0 is 97 -mem/0: storing 97 in location 1048 -run/0: instruction string-equal/17 -run/0: {name: "b2", value: 9, type: 4, properties: ["b2": "character"]} <- index/26 {name: "b", value: 3, type: 2-5-4, properties: ["b": "address":"array":"character", "deref": ]}, {name: "i", value: 6, type: 1, properties: ["i": "integer"]} -run/0: ingredient 0 is {name: "b", value: 3, type: 2-5-4, properties: ["b": "address":"array":"character", "deref": ]} -mem/0: location 1043 is 1035 -run/0: ingredient 1 is {name: "i", value: 6, type: 1, properties: ["i": "integer"]} -mem/0: location 1046 is 0 -run/0: address to copy is 1036 -run/0: its type is 4 -mem/0: location 1036 is 97 -run/0: product 0 is 97 -mem/0: storing 97 in location 1049 -run/0: instruction string-equal/19 -run/0: {name: "chars-match?", value: 10, type: 3, properties: ["chars-match?": "boolean"]} <- equal/13 {name: "a2", value: 8, type: 4, properties: ["a2": "character"]}, {name: "b2", value: 9, type: 4, properties: ["b2": "character"]} -run/0: ingredient 0 is a2 -mem/0: location 1048 is 97 -run/0: ingredient 1 is b2 -mem/0: location 1049 is 97 -run/0: product 0 is 1 -mem/0: storing 1 in location 1050 -run/0: instruction string-equal/20 -run/0: break-if/11 {name: "chars-match?", value: 10, type: 3, properties: ["chars-match?": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} -mem/0: location 1050 is 1 -run/0: ingredient 0 is 1 -run/0: ingredient 1 is -run/0: jumping to instruction 22 -run/0: instruction string-equal/23 -run/0: {name: "i", value: 6, type: 1, properties: ["i": "integer"]} <- add/2 {name: "i", value: 6, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is i -mem/0: location 1046 is 0 -run/0: ingredient 1 is 1 -run/0: product 0 is 1 -mem/0: storing 1 in location 1046 -run/0: instruction string-equal/24 -run/0: loop/10 {name: "", value: -11, type: , properties: ["": ]} -run/0: ingredient 0 is -11 -run/0: jumping to instruction 14 -run/0: instruction string-equal/14 -run/0: {name: "done?", value: 7, type: 3, properties: ["done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 6, type: 1, properties: ["i": "integer"]}, {name: "a-len", value: 2, type: 1, properties: ["a-len": "integer"]} -run/0: ingredient 0 is i -mem/0: location 1046 is 1 -run/0: ingredient 1 is a-len -mem/0: location 1042 is 3 -run/0: product 0 is 0 -mem/0: storing 0 in location 1047 -run/0: instruction string-equal/15 -run/0: break-if/11 {name: "done?", value: 7, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 9, type: , properties: ["": ]} -mem/0: location 1047 is 0 -run/0: ingredient 0 is 0 -run/0: jump-if fell through -run/0: instruction string-equal/16 -run/0: {name: "a2", value: 8, type: 4, properties: ["a2": "character"]} <- index/26 {name: "a", value: 1, type: 2-5-4, properties: ["a": "address":"array":"character", "deref": ]}, {name: "i", value: 6, type: 1, properties: ["i": "integer"]} -run/0: ingredient 0 is {name: "a", value: 1, type: 2-5-4, properties: ["a": "address":"array":"character", "deref": ]} -mem/0: location 1041 is 1031 -run/0: ingredient 1 is {name: "i", value: 6, type: 1, properties: ["i": "integer"]} -mem/0: location 1046 is 1 -run/0: address to copy is 1033 -run/0: its type is 4 -mem/0: location 1033 is 98 -run/0: product 0 is 98 -mem/0: storing 98 in location 1048 -run/0: instruction string-equal/17 -run/0: {name: "b2", value: 9, type: 4, properties: ["b2": "character"]} <- index/26 {name: "b", value: 3, type: 2-5-4, properties: ["b": "address":"array":"character", "deref": ]}, {name: "i", value: 6, type: 1, properties: ["i": "integer"]} -run/0: ingredient 0 is {name: "b", value: 3, type: 2-5-4, properties: ["b": "address":"array":"character", "deref": ]} -mem/0: location 1043 is 1035 -run/0: ingredient 1 is {name: "i", value: 6, type: 1, properties: ["i": "integer"]} -mem/0: location 1046 is 1 -run/0: address to copy is 1037 -run/0: its type is 4 -mem/0: location 1037 is 98 -run/0: product 0 is 98 -mem/0: storing 98 in location 1049 -run/0: instruction string-equal/19 -run/0: {name: "chars-match?", value: 10, type: 3, properties: ["chars-match?": "boolean"]} <- equal/13 {name: "a2", value: 8, type: 4, properties: ["a2": "character"]}, {name: "b2", value: 9, type: 4, properties: ["b2": "character"]} -run/0: ingredient 0 is a2 -mem/0: location 1048 is 98 -run/0: ingredient 1 is b2 -mem/0: location 1049 is 98 -run/0: product 0 is 1 -mem/0: storing 1 in location 1050 -run/0: instruction string-equal/20 -run/0: break-if/11 {name: "chars-match?", value: 10, type: 3, properties: ["chars-match?": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} -mem/0: location 1050 is 1 -run/0: ingredient 0 is 1 -run/0: ingredient 1 is -run/0: jumping to instruction 22 -run/0: instruction string-equal/23 -run/0: {name: "i", value: 6, type: 1, properties: ["i": "integer"]} <- add/2 {name: "i", value: 6, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is i -mem/0: location 1046 is 1 -run/0: ingredient 1 is 1 -run/0: product 0 is 2 -mem/0: storing 2 in location 1046 -run/0: instruction string-equal/24 -run/0: loop/10 {name: "", value: -11, type: , properties: ["": ]} -run/0: ingredient 0 is -11 -run/0: jumping to instruction 14 -run/0: instruction string-equal/14 -run/0: {name: "done?", value: 7, type: 3, properties: ["done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 6, type: 1, properties: ["i": "integer"]}, {name: "a-len", value: 2, type: 1, properties: ["a-len": "integer"]} -run/0: ingredient 0 is i -mem/0: location 1046 is 2 -run/0: ingredient 1 is a-len -mem/0: location 1042 is 3 -run/0: product 0 is 0 -mem/0: storing 0 in location 1047 -run/0: instruction string-equal/15 -run/0: break-if/11 {name: "done?", value: 7, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 9, type: , properties: ["": ]} -mem/0: location 1047 is 0 -run/0: ingredient 0 is 0 -run/0: jump-if fell through -run/0: instruction string-equal/16 -run/0: {name: "a2", value: 8, type: 4, properties: ["a2": "character"]} <- index/26 {name: "a", value: 1, type: 2-5-4, properties: ["a": "address":"array":"character", "deref": ]}, {name: "i", value: 6, type: 1, properties: ["i": "integer"]} -run/0: ingredient 0 is {name: "a", value: 1, type: 2-5-4, properties: ["a": "address":"array":"character", "deref": ]} -mem/0: location 1041 is 1031 -run/0: ingredient 1 is {name: "i", value: 6, type: 1, properties: ["i": "integer"]} -mem/0: location 1046 is 2 -run/0: address to copy is 1034 -run/0: its type is 4 -mem/0: location 1034 is 99 -run/0: product 0 is 99 -mem/0: storing 99 in location 1048 -run/0: instruction string-equal/17 -run/0: {name: "b2", value: 9, type: 4, properties: ["b2": "character"]} <- index/26 {name: "b", value: 3, type: 2-5-4, properties: ["b": "address":"array":"character", "deref": ]}, {name: "i", value: 6, type: 1, properties: ["i": "integer"]} -run/0: ingredient 0 is {name: "b", value: 3, type: 2-5-4, properties: ["b": "address":"array":"character", "deref": ]} -mem/0: location 1043 is 1035 -run/0: ingredient 1 is {name: "i", value: 6, type: 1, properties: ["i": "integer"]} -mem/0: location 1046 is 2 -run/0: address to copy is 1038 -run/0: its type is 4 -mem/0: location 1038 is 99 -run/0: product 0 is 99 -mem/0: storing 99 in location 1049 -run/0: instruction string-equal/19 -run/0: {name: "chars-match?", value: 10, type: 3, properties: ["chars-match?": "boolean"]} <- equal/13 {name: "a2", value: 8, type: 4, properties: ["a2": "character"]}, {name: "b2", value: 9, type: 4, properties: ["b2": "character"]} -run/0: ingredient 0 is a2 -mem/0: location 1048 is 99 -run/0: ingredient 1 is b2 -mem/0: location 1049 is 99 -run/0: product 0 is 1 -mem/0: storing 1 in location 1050 -run/0: instruction string-equal/20 -run/0: break-if/11 {name: "chars-match?", value: 10, type: 3, properties: ["chars-match?": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} -mem/0: location 1050 is 1 -run/0: ingredient 0 is 1 -run/0: ingredient 1 is -run/0: jumping to instruction 22 -run/0: instruction string-equal/23 -run/0: {name: "i", value: 6, type: 1, properties: ["i": "integer"]} <- add/2 {name: "i", value: 6, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is i -mem/0: location 1046 is 2 -run/0: ingredient 1 is 1 -run/0: product 0 is 3 -mem/0: storing 3 in location 1046 -run/0: instruction string-equal/24 -run/0: loop/10 {name: "", value: -11, type: , properties: ["": ]} -run/0: ingredient 0 is -11 -run/0: jumping to instruction 14 -run/0: instruction string-equal/14 -run/0: {name: "done?", value: 7, type: 3, properties: ["done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 6, type: 1, properties: ["i": "integer"]}, {name: "a-len", value: 2, type: 1, properties: ["a-len": "integer"]} -run/0: ingredient 0 is i -mem/0: location 1046 is 3 -run/0: ingredient 1 is a-len -mem/0: location 1042 is 3 -run/0: product 0 is 1 -mem/0: storing 1 in location 1047 -run/0: instruction string-equal/15 -run/0: break-if/11 {name: "done?", value: 7, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 9, type: , properties: ["": ]} -mem/0: location 1047 is 1 -run/0: ingredient 0 is 1 -run/0: ingredient 1 is -run/0: jumping to instruction 25 -run/0: instruction string-equal/26 -run/0: reply/33 {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: result 0 is 1 -mem/0: storing 1 in location 3 -run/0: instruction string-equal-identical/1 -run/0: memory-should-contain/46 {name: " - 3 <- 1 # abc == abc - ", value: 0, type: 0, properties: [" - 3 <- 1 # abc == abc - ": "literal-string"]} -run/0: checking location 3 diff --git a/cpp/.traces/string-equal-reflexive b/cpp/.traces/string-equal-reflexive deleted file mode 100644 index f7127192..00000000 --- a/cpp/.traces/string-equal-reflexive +++ /dev/null @@ -1,309 +0,0 @@ -parse/0: instruction: run -parse/0: ingredient: {name: " - default-space:address:array:location <- new location:type, 30:literal - x:address:array:character <- new [abc] - 3:boolean/raw <- string-equal x:address:array:character, x:address:array:character - ", value: 0, type: 0, properties: [" - default-space:address:array:location <- new location:type, 30:literal - x:address:array:character <- new [abc] - 3:boolean/raw <- string-equal x:address:array:character, x:address:array:character - ": "literal-string"]} -parse/0: instruction: memory-should-contain -parse/0: ingredient: {name: " - 3 <- 1 # x == x for all x - ", value: 0, type: 0, properties: [" - 3 <- 1 # x == x for all x - ": "literal-string"]} -after-brace/0: recipe string-equal-reflexive -after-brace/0: run ... -after-brace/0: memory-should-contain ... -new/0: routine allocated memory from 1000 to 101000 -schedule/0: string-equal-reflexive -run/0: instruction string-equal-reflexive/0 -run/0: run/45 {name: " - default-space:address:array:location <- new location:type, 30:literal - x:address:array:character <- new [abc] - 3:boolean/raw <- string-equal x:address:array:character, x:address:array:character - ", value: 0, type: 0, properties: [" - default-space:address:array:location <- new location:type, 30:literal - x:address:array:character <- new [abc] - 3:boolean/raw <- string-equal x:address:array:character, x:address:array:character - ": "literal-string"]} -parse/0: instruction: new -parse/0: ingredient: {name: "location", value: 0, type: 0, properties: ["location": "type"]} -parse/0: ingredient: {name: "30", value: 0, type: 0, properties: ["30": "literal"]} -parse/0: product: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} -parse/0: instruction: new -parse/0: ingredient: {name: "abc", value: 0, type: 0, properties: ["abc": "literal-string"]} -parse/0: product: {name: "x", value: 0, type: 2-5-4, properties: ["x": "address":"array":"character"]} -parse/0: instruction: string-equal -parse/0: ingredient: {name: "x", value: 0, type: 2-5-4, properties: ["x": "address":"array":"character"]} -parse/0: ingredient: {name: "x", value: 0, type: 2-5-4, properties: ["x": "address":"array":"character"]} -parse/0: product: {name: "3", value: 0, type: 3, properties: ["3": "boolean", "raw": ]} -new/0: location -> 1 -new/0: abc -> 0 -name/0: assign x 1 -after-brace/0: recipe run1001 -after-brace/0: new ... -after-brace/0: new ... -after-brace/0: string-equal ... -run/0: instruction run1001/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/44 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} -mem/0: array size is 30 -mem/0: new alloc: 1000 -run/0: instruction run1001/1 -run/0: {name: "x", value: 1, type: 2-5-4, properties: ["x": "address":"array":"character"]} <- new/44 {name: "abc", value: 0, type: 0, properties: ["abc": "literal-string"]} -mem/0: storing 1031 in location 1002 -run/0: instruction run1001/2 -run/0: {name: "3", value: 3, type: 3, properties: ["3": "boolean", "raw": ]} <- string-equal/100 {name: "x", value: 1, type: 2-5-4, properties: ["x": "address":"array":"character"]}, {name: "x", value: 1, type: 2-5-4, properties: ["x": "address":"array":"character"]} -mem/0: location 1002 is 1031 -mem/0: location 1002 is 1031 -run/0: instruction string-equal/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/44 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} -mem/0: array size is 30 -mem/0: new alloc: 1035 -run/0: instruction string-equal/1 -run/0: {name: "a", value: 1, type: 2-5-4, properties: ["a": "address":"array":"character"]} <- next-ingredient/30 -run/0: product 0 is 1031 -mem/0: storing 1031 in location 1037 -run/0: instruction string-equal/2 -run/0: {name: "a-len", value: 2, type: 1, properties: ["a-len": "integer"]} <- length/28 {name: "a", value: 1, type: 2-5-4, properties: ["a": "address":"array":"character", "deref": ]} -mem/0: location 1037 is 1031 -mem/0: storing 3 in location 1038 -run/0: instruction string-equal/3 -run/0: {name: "b", value: 3, type: 2-5-4, properties: ["b": "address":"array":"character"]} <- next-ingredient/30 -run/0: product 0 is 1031 -mem/0: storing 1031 in location 1039 -run/0: instruction string-equal/4 -run/0: {name: "b-len", value: 4, type: 1, properties: ["b-len": "integer"]} <- length/28 {name: "b", value: 3, type: 2-5-4, properties: ["b": "address":"array":"character", "deref": ]} -mem/0: location 1039 is 1031 -mem/0: storing 3 in location 1040 -run/0: instruction string-equal/6 -run/0: trace/18 {name: "string-equal", value: 0, type: 0, properties: ["string-equal": "literal-string"]}, {name: "comparing lengths", value: 0, type: 0, properties: ["comparing lengths": "literal-string"]} -string-equal/0: comparing lengths -run/0: instruction string-equal/7 -run/0: {name: "length-equal?", value: 5, type: 3, properties: ["length-equal?": "boolean"]} <- equal/13 {name: "a-len", value: 2, type: 1, properties: ["a-len": "integer"]}, {name: "b-len", value: 4, type: 1, properties: ["b-len": "integer"]} -run/0: ingredient 0 is a-len -mem/0: location 1038 is 3 -run/0: ingredient 1 is b-len -mem/0: location 1040 is 3 -run/0: product 0 is 1 -mem/0: storing 1 in location 1041 -run/0: instruction string-equal/8 -run/0: break-if/11 {name: "length-equal?", value: 5, type: 3, properties: ["length-equal?": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} -mem/0: location 1041 is 1 -run/0: ingredient 0 is 1 -run/0: ingredient 1 is -run/0: jumping to instruction 10 -run/0: instruction string-equal/11 -run/0: trace/18 {name: "string-equal", value: 0, type: 0, properties: ["string-equal": "literal-string"]}, {name: "comparing characters", value: 0, type: 0, properties: ["comparing characters": "literal-string"]} -string-equal/0: comparing characters -run/0: instruction string-equal/12 -run/0: {name: "i", value: 6, type: 1, properties: ["i": "integer"]} <- copy/1 {name: "0", value: 0, type: 0, properties: ["0": "literal"]} -run/0: ingredient 0 is 0 -mem/0: storing 0 in location 1042 -run/0: instruction string-equal/14 -run/0: {name: "done?", value: 7, type: 3, properties: ["done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 6, type: 1, properties: ["i": "integer"]}, {name: "a-len", value: 2, type: 1, properties: ["a-len": "integer"]} -run/0: ingredient 0 is i -mem/0: location 1042 is 0 -run/0: ingredient 1 is a-len -mem/0: location 1038 is 3 -run/0: product 0 is 0 -mem/0: storing 0 in location 1043 -run/0: instruction string-equal/15 -run/0: break-if/11 {name: "done?", value: 7, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 9, type: , properties: ["": ]} -mem/0: location 1043 is 0 -run/0: ingredient 0 is 0 -run/0: jump-if fell through -run/0: instruction string-equal/16 -run/0: {name: "a2", value: 8, type: 4, properties: ["a2": "character"]} <- index/26 {name: "a", value: 1, type: 2-5-4, properties: ["a": "address":"array":"character", "deref": ]}, {name: "i", value: 6, type: 1, properties: ["i": "integer"]} -run/0: ingredient 0 is {name: "a", value: 1, type: 2-5-4, properties: ["a": "address":"array":"character", "deref": ]} -mem/0: location 1037 is 1031 -run/0: ingredient 1 is {name: "i", value: 6, type: 1, properties: ["i": "integer"]} -mem/0: location 1042 is 0 -run/0: address to copy is 1032 -run/0: its type is 4 -mem/0: location 1032 is 97 -run/0: product 0 is 97 -mem/0: storing 97 in location 1044 -run/0: instruction string-equal/17 -run/0: {name: "b2", value: 9, type: 4, properties: ["b2": "character"]} <- index/26 {name: "b", value: 3, type: 2-5-4, properties: ["b": "address":"array":"character", "deref": ]}, {name: "i", value: 6, type: 1, properties: ["i": "integer"]} -run/0: ingredient 0 is {name: "b", value: 3, type: 2-5-4, properties: ["b": "address":"array":"character", "deref": ]} -mem/0: location 1039 is 1031 -run/0: ingredient 1 is {name: "i", value: 6, type: 1, properties: ["i": "integer"]} -mem/0: location 1042 is 0 -run/0: address to copy is 1032 -run/0: its type is 4 -mem/0: location 1032 is 97 -run/0: product 0 is 97 -mem/0: storing 97 in location 1045 -run/0: instruction string-equal/19 -run/0: {name: "chars-match?", value: 10, type: 3, properties: ["chars-match?": "boolean"]} <- equal/13 {name: "a2", value: 8, type: 4, properties: ["a2": "character"]}, {name: "b2", value: 9, type: 4, properties: ["b2": "character"]} -run/0: ingredient 0 is a2 -mem/0: location 1044 is 97 -run/0: ingredient 1 is b2 -mem/0: location 1045 is 97 -run/0: product 0 is 1 -mem/0: storing 1 in location 1046 -run/0: instruction string-equal/20 -run/0: break-if/11 {name: "chars-match?", value: 10, type: 3, properties: ["chars-match?": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} -mem/0: location 1046 is 1 -run/0: ingredient 0 is 1 -run/0: ingredient 1 is -run/0: jumping to instruction 22 -run/0: instruction string-equal/23 -run/0: {name: "i", value: 6, type: 1, properties: ["i": "integer"]} <- add/2 {name: "i", value: 6, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is i -mem/0: location 1042 is 0 -run/0: ingredient 1 is 1 -run/0: product 0 is 1 -mem/0: storing 1 in location 1042 -run/0: instruction string-equal/24 -run/0: loop/10 {name: "", value: -11, type: , properties: ["": ]} -run/0: ingredient 0 is -11 -run/0: jumping to instruction 14 -run/0: instruction string-equal/14 -run/0: {name: "done?", value: 7, type: 3, properties: ["done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 6, type: 1, properties: ["i": "integer"]}, {name: "a-len", value: 2, type: 1, properties: ["a-len": "integer"]} -run/0: ingredient 0 is i -mem/0: location 1042 is 1 -run/0: ingredient 1 is a-len -mem/0: location 1038 is 3 -run/0: product 0 is 0 -mem/0: storing 0 in location 1043 -run/0: instruction string-equal/15 -run/0: break-if/11 {name: "done?", value: 7, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 9, type: , properties: ["": ]} -mem/0: location 1043 is 0 -run/0: ingredient 0 is 0 -run/0: jump-if fell through -run/0: instruction string-equal/16 -run/0: {name: "a2", value: 8, type: 4, properties: ["a2": "character"]} <- index/26 {name: "a", value: 1, type: 2-5-4, properties: ["a": "address":"array":"character", "deref": ]}, {name: "i", value: 6, type: 1, properties: ["i": "integer"]} -run/0: ingredient 0 is {name: "a", value: 1, type: 2-5-4, properties: ["a": "address":"array":"character", "deref": ]} -mem/0: location 1037 is 1031 -run/0: ingredient 1 is {name: "i", value: 6, type: 1, properties: ["i": "integer"]} -mem/0: location 1042 is 1 -run/0: address to copy is 1033 -run/0: its type is 4 -mem/0: location 1033 is 98 -run/0: product 0 is 98 -mem/0: storing 98 in location 1044 -run/0: instruction string-equal/17 -run/0: {name: "b2", value: 9, type: 4, properties: ["b2": "character"]} <- index/26 {name: "b", value: 3, type: 2-5-4, properties: ["b": "address":"array":"character", "deref": ]}, {name: "i", value: 6, type: 1, properties: ["i": "integer"]} -run/0: ingredient 0 is {name: "b", value: 3, type: 2-5-4, properties: ["b": "address":"array":"character", "deref": ]} -mem/0: location 1039 is 1031 -run/0: ingredient 1 is {name: "i", value: 6, type: 1, properties: ["i": "integer"]} -mem/0: location 1042 is 1 -run/0: address to copy is 1033 -run/0: its type is 4 -mem/0: location 1033 is 98 -run/0: product 0 is 98 -mem/0: storing 98 in location 1045 -run/0: instruction string-equal/19 -run/0: {name: "chars-match?", value: 10, type: 3, properties: ["chars-match?": "boolean"]} <- equal/13 {name: "a2", value: 8, type: 4, properties: ["a2": "character"]}, {name: "b2", value: 9, type: 4, properties: ["b2": "character"]} -run/0: ingredient 0 is a2 -mem/0: location 1044 is 98 -run/0: ingredient 1 is b2 -mem/0: location 1045 is 98 -run/0: product 0 is 1 -mem/0: storing 1 in location 1046 -run/0: instruction string-equal/20 -run/0: break-if/11 {name: "chars-match?", value: 10, type: 3, properties: ["chars-match?": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} -mem/0: location 1046 is 1 -run/0: ingredient 0 is 1 -run/0: ingredient 1 is -run/0: jumping to instruction 22 -run/0: instruction string-equal/23 -run/0: {name: "i", value: 6, type: 1, properties: ["i": "integer"]} <- add/2 {name: "i", value: 6, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is i -mem/0: location 1042 is 1 -run/0: ingredient 1 is 1 -run/0: product 0 is 2 -mem/0: storing 2 in location 1042 -run/0: instruction string-equal/24 -run/0: loop/10 {name: "", value: -11, type: , properties: ["": ]} -run/0: ingredient 0 is -11 -run/0: jumping to instruction 14 -run/0: instruction string-equal/14 -run/0: {name: "done?", value: 7, type: 3, properties: ["done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 6, type: 1, properties: ["i": "integer"]}, {name: "a-len", value: 2, type: 1, properties: ["a-len": "integer"]} -run/0: ingredient 0 is i -mem/0: location 1042 is 2 -run/0: ingredient 1 is a-len -mem/0: location 1038 is 3 -run/0: product 0 is 0 -mem/0: storing 0 in location 1043 -run/0: instruction string-equal/15 -run/0: break-if/11 {name: "done?", value: 7, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 9, type: , properties: ["": ]} -mem/0: location 1043 is 0 -run/0: ingredient 0 is 0 -run/0: jump-if fell through -run/0: instruction string-equal/16 -run/0: {name: "a2", value: 8, type: 4, properties: ["a2": "character"]} <- index/26 {name: "a", value: 1, type: 2-5-4, properties: ["a": "address":"array":"character", "deref": ]}, {name: "i", value: 6, type: 1, properties: ["i": "integer"]} -run/0: ingredient 0 is {name: "a", value: 1, type: 2-5-4, properties: ["a": "address":"array":"character", "deref": ]} -mem/0: location 1037 is 1031 -run/0: ingredient 1 is {name: "i", value: 6, type: 1, properties: ["i": "integer"]} -mem/0: location 1042 is 2 -run/0: address to copy is 1034 -run/0: its type is 4 -mem/0: location 1034 is 99 -run/0: product 0 is 99 -mem/0: storing 99 in location 1044 -run/0: instruction string-equal/17 -run/0: {name: "b2", value: 9, type: 4, properties: ["b2": "character"]} <- index/26 {name: "b", value: 3, type: 2-5-4, properties: ["b": "address":"array":"character", "deref": ]}, {name: "i", value: 6, type: 1, properties: ["i": "integer"]} -run/0: ingredient 0 is {name: "b", value: 3, type: 2-5-4, properties: ["b": "address":"array":"character", "deref": ]} -mem/0: location 1039 is 1031 -run/0: ingredient 1 is {name: "i", value: 6, type: 1, properties: ["i": "integer"]} -mem/0: location 1042 is 2 -run/0: address to copy is 1034 -run/0: its type is 4 -mem/0: location 1034 is 99 -run/0: product 0 is 99 -mem/0: storing 99 in location 1045 -run/0: instruction string-equal/19 -run/0: {name: "chars-match?", value: 10, type: 3, properties: ["chars-match?": "boolean"]} <- equal/13 {name: "a2", value: 8, type: 4, properties: ["a2": "character"]}, {name: "b2", value: 9, type: 4, properties: ["b2": "character"]} -run/0: ingredient 0 is a2 -mem/0: location 1044 is 99 -run/0: ingredient 1 is b2 -mem/0: location 1045 is 99 -run/0: product 0 is 1 -mem/0: storing 1 in location 1046 -run/0: instruction string-equal/20 -run/0: break-if/11 {name: "chars-match?", value: 10, type: 3, properties: ["chars-match?": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} -mem/0: location 1046 is 1 -run/0: ingredient 0 is 1 -run/0: ingredient 1 is -run/0: jumping to instruction 22 -run/0: instruction string-equal/23 -run/0: {name: "i", value: 6, type: 1, properties: ["i": "integer"]} <- add/2 {name: "i", value: 6, type: 1, properties: ["i": "integer"]}, {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: ingredient 0 is i -mem/0: location 1042 is 2 -run/0: ingredient 1 is 1 -run/0: product 0 is 3 -mem/0: storing 3 in location 1042 -run/0: instruction string-equal/24 -run/0: loop/10 {name: "", value: -11, type: , properties: ["": ]} -run/0: ingredient 0 is -11 -run/0: jumping to instruction 14 -run/0: instruction string-equal/14 -run/0: {name: "done?", value: 7, type: 3, properties: ["done?": "boolean"]} <- greater-or-equal/16 {name: "i", value: 6, type: 1, properties: ["i": "integer"]}, {name: "a-len", value: 2, type: 1, properties: ["a-len": "integer"]} -run/0: ingredient 0 is i -mem/0: location 1042 is 3 -run/0: ingredient 1 is a-len -mem/0: location 1038 is 3 -run/0: product 0 is 1 -mem/0: storing 1 in location 1043 -run/0: instruction string-equal/15 -run/0: break-if/11 {name: "done?", value: 7, type: 3, properties: ["done?": "boolean"]}, {name: "", value: 9, type: , properties: ["": ]} -mem/0: location 1043 is 1 -run/0: ingredient 0 is 1 -run/0: ingredient 1 is -run/0: jumping to instruction 25 -run/0: instruction string-equal/26 -run/0: reply/33 {name: "1", value: 1, type: 0, properties: ["1": "literal"]} -run/0: result 0 is 1 -mem/0: storing 1 in location 3 -run/0: instruction string-equal-reflexive/1 -run/0: memory-should-contain/46 {name: " - 3 <- 1 # x == x for all x - ", value: 0, type: 0, properties: [" - 3 <- 1 # x == x for all x - ": "literal-string"]} -run/0: checking location 3 diff --git a/cpp/.traces/string-equal-with-empty b/cpp/.traces/string-equal-with-empty deleted file mode 100644 index 71fb6770..00000000 --- a/cpp/.traces/string-equal-with-empty +++ /dev/null @@ -1,120 +0,0 @@ -parse/0: instruction: run -parse/0: ingredient: {name: " - default-space:address:array:location <- new location:type, 30:literal - x:address:array:character <- new [] - y:address:array:character <- new [abcd] - 3:boolean/raw <- string-equal x:address:array:character, y:address:array:character - ", value: 0, type: 0, properties: [" - default-space:address:array:location <- new location:type, 30:literal - x:address:array:character <- new [] - y:address:array:character <- new [abcd] - 3:boolean/raw <- string-equal x:address:array:character, y:address:array:character - ": "literal-string"]} -parse/0: instruction: memory-should-contain -parse/0: ingredient: {name: " - 3 <- 0 # "" != abcd - ", value: 0, type: 0, properties: [" - 3 <- 0 # "" != abcd - ": "literal-string"]} -after-brace/0: recipe string-equal-with-empty -after-brace/0: run ... -after-brace/0: memory-should-contain ... -new/0: routine allocated memory from 1000 to 101000 -schedule/0: string-equal-with-empty -run/0: instruction string-equal-with-empty/0 -run/0: run/45 {name: " - default-space:address:array:location <- new location:type, 30:literal - x:address:array:character <- new [] - y:address:array:character <- new [abcd] - 3:boolean/raw <- string-equal x:address:array:character, y:address:array:character - ", value: 0, type: 0, properties: [" - default-space:address:array:location <- new location:type, 30:literal - x:address:array:character <- new [] - y:address:array:character <- new [abcd] - 3:boolean/raw <- string-equal x:address:array:character, y:address:array:character - ": "literal-string"]} -parse/0: instruction: new -parse/0: ingredient: {name: "location", value: 0, type: 0, properties: ["location": "type"]} -parse/0: ingredient: {name: "30", value: 0, type: 0, properties: ["30": "literal"]} -parse/0: product: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} -parse/0: instruction: new -parse/0: ingredient: {name: "", value: 0, type: 0, properties: ["": "literal-string"]} -parse/0: product: {name: "x", value: 0, type: 2-5-4, properties: ["x": "address":"array":"character"]} -parse/0: instruction: new -parse/0: ingredient: {name: "abcd", value: 0, type: 0, properties: ["abcd": "literal-string"]} -parse/0: product: {name: "y", value: 0, type: 2-5-4, properties: ["y": "address":"array":"character"]} -parse/0: instruction: string-equal -parse/0: ingredient: {name: "x", value: 0, type: 2-5-4, properties: ["x": "address":"array":"character"]} -parse/0: ingredient: {name: "y", value: 0, type: 2-5-4, properties: ["y": "address":"array":"character"]} -parse/0: product: {name: "3", value: 0, type: 3, properties: ["3": "boolean", "raw": ]} -new/0: location -> 1 -new/0: -> 0 -name/0: assign x 1 -new/0: abcd -> 0 -name/0: assign y 2 -after-brace/0: recipe run1001 -after-brace/0: new ... -after-brace/0: new ... -after-brace/0: new ... -after-brace/0: string-equal ... -run/0: instruction run1001/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/44 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} -mem/0: array size is 30 -mem/0: new alloc: 1000 -run/0: instruction run1001/1 -run/0: {name: "x", value: 1, type: 2-5-4, properties: ["x": "address":"array":"character"]} <- new/44 {name: "", value: 0, type: 0, properties: ["": "literal-string"]} -mem/0: storing 1031 in location 1002 -run/0: instruction run1001/2 -run/0: {name: "y", value: 2, type: 2-5-4, properties: ["y": "address":"array":"character"]} <- new/44 {name: "abcd", value: 0, type: 0, properties: ["abcd": "literal-string"]} -mem/0: storing 1032 in location 1003 -run/0: instruction run1001/3 -run/0: {name: "3", value: 3, type: 3, properties: ["3": "boolean", "raw": ]} <- string-equal/100 {name: "x", value: 1, type: 2-5-4, properties: ["x": "address":"array":"character"]}, {name: "y", value: 2, type: 2-5-4, properties: ["y": "address":"array":"character"]} -mem/0: location 1002 is 1031 -mem/0: location 1003 is 1032 -run/0: instruction string-equal/0 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- new/44 {name: "location", value: 1, type: 0, properties: ["location": "type"]}, {name: "30", value: 30, type: 0, properties: ["30": "literal"]} -mem/0: array size is 30 -mem/0: new alloc: 1037 -run/0: instruction string-equal/1 -run/0: {name: "a", value: 1, type: 2-5-4, properties: ["a": "address":"array":"character"]} <- next-ingredient/30 -run/0: product 0 is 1031 -mem/0: storing 1031 in location 1039 -run/0: instruction string-equal/2 -run/0: {name: "a-len", value: 2, type: 1, properties: ["a-len": "integer"]} <- length/28 {name: "a", value: 1, type: 2-5-4, properties: ["a": "address":"array":"character", "deref": ]} -mem/0: location 1039 is 1031 -mem/0: storing 0 in location 1040 -run/0: instruction string-equal/3 -run/0: {name: "b", value: 3, type: 2-5-4, properties: ["b": "address":"array":"character"]} <- next-ingredient/30 -run/0: product 0 is 1032 -mem/0: storing 1032 in location 1041 -run/0: instruction string-equal/4 -run/0: {name: "b-len", value: 4, type: 1, properties: ["b-len": "integer"]} <- length/28 {name: "b", value: 3, type: 2-5-4, properties: ["b": "address":"array":"character", "deref": ]} -mem/0: location 1041 is 1032 -mem/0: storing 4 in location 1042 -run/0: instruction string-equal/6 -run/0: trace/18 {name: "string-equal", value: 0, type: 0, properties: ["string-equal": "literal-string"]}, {name: "comparing lengths", value: 0, type: 0, properties: ["comparing lengths": "literal-string"]} -string-equal/0: comparing lengths -run/0: instruction string-equal/7 -run/0: {name: "length-equal?", value: 5, type: 3, properties: ["length-equal?": "boolean"]} <- equal/13 {name: "a-len", value: 2, type: 1, properties: ["a-len": "integer"]}, {name: "b-len", value: 4, type: 1, properties: ["b-len": "integer"]} -run/0: ingredient 0 is a-len -mem/0: location 1040 is 0 -run/0: ingredient 1 is b-len -mem/0: location 1042 is 4 -run/0: product 0 is 0 -mem/0: storing 0 in location 1043 -run/0: instruction string-equal/8 -run/0: break-if/11 {name: "length-equal?", value: 5, type: 3, properties: ["length-equal?": "boolean"]}, {name: "", value: 1, type: , properties: ["": ]} -mem/0: location 1043 is 0 -run/0: ingredient 0 is 0 -run/0: jump-if fell through -run/0: instruction string-equal/9 -run/0: reply/33 {name: "0", value: 0, type: 0, properties: ["0": "literal"]} -run/0: result 0 is 0 -mem/0: storing 0 in location 3 -run/0: instruction string-equal-with-empty/1 -run/0: memory-should-contain/46 {name: " - 3 <- 0 # "" != abcd - ", value: 0, type: 0, properties: [" - 3 <- 0 # "" != abcd - ": "literal-string"]} -run/0: checking location 3 diff --git a/cpp/.traces/string_literal b/cpp/.traces/string_literal deleted file mode 100644 index 991095f5..00000000 --- a/cpp/.traces/string_literal +++ /dev/null @@ -1,3 +0,0 @@ -parse/0: instruction: copy -parse/0: ingredient: {name: "abc def", value: 0, type: 0, properties: ["abc def": "literal-string"]} -parse/0: product: {name: "1", value: 0, type: 2-5-4, properties: ["1": "address":"array":"character"]} diff --git a/cpp/.traces/string_literal_and_comment b/cpp/.traces/string_literal_and_comment deleted file mode 100644 index 6df4c4d6..00000000 --- a/cpp/.traces/string_literal_and_comment +++ /dev/null @@ -1,3 +0,0 @@ -parse/0: instruction: copy -parse/0: ingredient: {name: "abc", value: 0, type: 0, properties: ["abc": "literal-string"]} -parse/0: product: {name: "1", value: 0, type: 2-5-4, properties: ["1": "address":"array":"character"]} diff --git a/cpp/.traces/string_literal_nested b/cpp/.traces/string_literal_nested deleted file mode 100644 index 96a6e7b5..00000000 --- a/cpp/.traces/string_literal_nested +++ /dev/null @@ -1,3 +0,0 @@ -parse/0: instruction: copy -parse/0: ingredient: {name: "abc [def]", value: 0, type: 0, properties: ["abc [def]": "literal-string"]} -parse/0: product: {name: "1", value: 0, type: 2-5-4, properties: ["1": "address":"array":"character"]} diff --git a/cpp/.traces/string_literal_with_colons b/cpp/.traces/string_literal_with_colons deleted file mode 100644 index 98e7d604..00000000 --- a/cpp/.traces/string_literal_with_colons +++ /dev/null @@ -1,3 +0,0 @@ -parse/0: instruction: copy -parse/0: ingredient: {name: "abc:def/ghi", value: 0, type: 0, properties: ["abc:def/ghi": "literal-string"]} -parse/0: product: {name: "1", value: 0, type: 2-5-4, properties: ["1": "address":"array":"character"]} diff --git a/cpp/.traces/subtract b/cpp/.traces/subtract deleted file mode 100644 index aeec0887..00000000 --- a/cpp/.traces/subtract +++ /dev/null @@ -1,32 +0,0 @@ -parse/0: instruction: copy -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: copy -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: subtract -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 ... -after-brace/0: subtract ... -new/0: routine allocated memory from 1000 to 101000 -schedule/0: main -run/0: instruction main/0 -run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- copy/1 {name: "23", value: 23, type: 0, properties: ["23": "literal"]} -run/0: ingredient 0 is 23 -mem/0: storing 23 in location 1 -run/0: instruction main/1 -run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- copy/1 {name: "34", value: 34, type: 0, properties: ["34": "literal"]} -run/0: ingredient 0 is 34 -mem/0: storing 34 in location 2 -run/0: instruction main/2 -run/0: {name: "3", value: 3, type: 1, properties: ["3": "integer"]} <- subtract/3 {name: "1", value: 1, type: 1, properties: ["1": "integer"]}, {name: "2", value: 2, type: 1, properties: ["2": "integer"]} -run/0: ingredient 0 is 1 -mem/0: location 1 is 23 -run/0: ingredient 1 is 2 -mem/0: location 2 is 34 -run/0: product 0 is -11 -mem/0: storing -11 in location 3 diff --git a/cpp/.traces/subtract_literal b/cpp/.traces/subtract_literal deleted file mode 100644 index 9d8202ca..00000000 --- a/cpp/.traces/subtract_literal +++ /dev/null @@ -1,14 +0,0 @@ -parse/0: instruction: subtract -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 ... -new/0: routine allocated memory from 1000 to 101000 -schedule/0: main -run/0: instruction main/0 -run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- subtract/3 {name: "5", value: 5, type: 0, properties: ["5": "literal"]}, {name: "2", value: 2, type: 0, properties: ["2": "literal"]} -run/0: ingredient 0 is 5 -run/0: ingredient 1 is 2 -run/0: product 0 is 3 -mem/0: storing 3 in location 1 diff --git a/cpp/.traces/surrounding_space b/cpp/.traces/surrounding_space deleted file mode 100644 index aeddde25..00000000 --- a/cpp/.traces/surrounding_space +++ /dev/null @@ -1,51 +0,0 @@ -parse/0: instruction: copy -parse/0: ingredient: {name: "5", value: 0, type: 0, properties: ["5": "literal"]} -parse/0: product: {name: "10", value: 0, type: 1, properties: ["10": "integer"]} -parse/0: instruction: copy -parse/0: ingredient: {name: "5", value: 0, type: 0, properties: ["5": "literal"]} -parse/0: product: {name: "20", value: 0, type: 1, properties: ["20": "integer"]} -parse/0: instruction: copy -parse/0: ingredient: {name: "10", value: 0, type: 0, properties: ["10": "literal"]} -parse/0: product: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} -parse/0: instruction: copy -parse/0: ingredient: {name: "20", value: 0, type: 0, properties: ["20": "literal"]} -parse/0: product: {name: "0", value: 0, type: 2-5-1, properties: ["0": "address":"array":"location", "names": "dummy"]} -parse/0: instruction: copy -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: copy -parse/0: ingredient: {name: "33", value: 0, type: 0, properties: ["33": "literal"]} -parse/0: product: {name: "1", value: 0, type: 1, properties: ["1": "integer", "space": "1"]} -name/0: recipe main is surrounded by dummy -after-brace/0: recipe main -after-brace/0: copy ... -after-brace/0: copy ... -after-brace/0: copy ... -after-brace/0: copy ... -after-brace/0: copy ... -after-brace/0: copy ... -new/0: routine allocated memory from 1000 to 101000 -schedule/0: main -run/0: instruction main/0 -run/0: {name: "10", value: 10, type: 1, properties: ["10": "integer"]} <- copy/1 {name: "5", value: 5, type: 0, properties: ["5": "literal"]} -run/0: ingredient 0 is 5 -mem/0: storing 5 in location 10 -run/0: instruction main/1 -run/0: {name: "20", value: 20, type: 1, properties: ["20": "integer"]} <- copy/1 {name: "5", value: 5, type: 0, properties: ["5": "literal"]} -run/0: ingredient 0 is 5 -mem/0: storing 5 in location 20 -run/0: instruction main/2 -run/0: {name: "default-space", value: 0, type: 2-5-1, properties: ["default-space": "address":"array":"location"]} <- copy/1 {name: "10", value: 10, type: 0, properties: ["10": "literal"]} -run/0: ingredient 0 is 10 -run/0: instruction main/3 -run/0: {name: "0", value: 0, type: 2-5-1, properties: ["0": "address":"array":"location", "names": "dummy"]} <- copy/1 {name: "20", value: 20, type: 0, properties: ["20": "literal"]} -run/0: ingredient 0 is 20 -mem/0: storing 20 in location 11 -run/0: instruction main/4 -run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- copy/1 {name: "32", value: 32, type: 0, properties: ["32": "literal"]} -run/0: ingredient 0 is 32 -mem/0: storing 32 in location 12 -run/0: instruction main/5 -run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer", "space": "1"]} <- copy/1 {name: "33", value: 33, type: 0, properties: ["33": "literal"]} -run/0: ingredient 0 is 33 -mem/0: storing 33 in location 22 diff --git a/cpp/.traces/trace b/cpp/.traces/trace deleted file mode 100644 index f2c6721b..00000000 --- a/cpp/.traces/trace +++ /dev/null @@ -1,10 +0,0 @@ -parse/0: instruction: trace -parse/0: ingredient: {name: "foo", value: 0, type: 0, properties: ["foo": "literal-string"]} -parse/0: ingredient: {name: "this is a trace in mu", value: 0, type: 0, properties: ["this is a trace in mu": "literal-string"]} -after-brace/0: recipe main -after-brace/0: trace ... -new/0: routine allocated memory from 1000 to 101000 -schedule/0: main -run/0: instruction main/0 -run/0: trace/18 {name: "foo", value: 0, type: 0, properties: ["foo": "literal-string"]}, {name: "this is a trace in mu", value: 0, type: 0, properties: ["this is a trace in mu": "literal-string"]} -foo/0: this is a trace in mu diff --git a/cpp/.traces/trace_check_passes_silently b/cpp/.traces/trace_check_passes_silently deleted file mode 100644 index c5a73e5d..00000000 --- a/cpp/.traces/trace_check_passes_silently +++ /dev/null @@ -1,37 +0,0 @@ -parse/0: instruction: run -parse/0: ingredient: {name: " - trace [a], [b] - ", value: 0, type: 0, properties: [" - trace [a], [b] - ": "literal-string"]} -parse/0: instruction: trace-should-contain -parse/0: ingredient: {name: " - a: b - ", value: 0, type: 0, properties: [" - a: b - ": "literal-string"]} -after-brace/0: recipe main -after-brace/0: run ... -after-brace/0: trace-should-contain ... -new/0: routine allocated memory from 1000 to 101000 -schedule/0: main -run/0: instruction main/0 -run/0: run/45 {name: " - trace [a], [b] - ", value: 0, type: 0, properties: [" - trace [a], [b] - ": "literal-string"]} -parse/0: instruction: trace -parse/0: ingredient: {name: "a", value: 0, type: 0, properties: ["a": "literal-string"]} -parse/0: ingredient: {name: "b", value: 0, type: 0, properties: ["b": "literal-string"]} -after-brace/0: recipe run1001 -after-brace/0: trace ... -run/0: instruction run1001/0 -run/0: trace/18 {name: "a", value: 0, type: 0, properties: ["a": "literal-string"]}, {name: "b", value: 0, type: 0, properties: ["b": "literal-string"]} -a/0: b -run/0: instruction main/1 -run/0: trace-should-contain/47 {name: " - a: b - ", value: 0, type: 0, properties: [" - a: b - ": "literal-string"]} diff --git a/cpp/.traces/trace_check_warns_on_failure b/cpp/.traces/trace_check_warns_on_failure deleted file mode 100644 index 7911d5ae..00000000 --- a/cpp/.traces/trace_check_warns_on_failure +++ /dev/null @@ -1,21 +0,0 @@ -parse/0: instruction: trace-should-contain -parse/0: ingredient: {name: " - a: b - a: d - ", value: 0, type: 0, properties: [" - a: b - a: d - ": "literal-string"]} -after-brace/0: recipe main -after-brace/0: trace-should-contain ... -new/0: routine allocated memory from 1000 to 101000 -schedule/0: main -run/0: instruction main/0 -run/0: trace-should-contain/47 {name: " - a: b - a: d - ", value: 0, type: 0, properties: [" - a: b - a: d - ": "literal-string"]} -warn/0: missing [b] in trace layer a diff --git a/cpp/.traces/trace_check_warns_on_failure_in_later_line b/cpp/.traces/trace_check_warns_on_failure_in_later_line deleted file mode 100644 index adf98716..00000000 --- a/cpp/.traces/trace_check_warns_on_failure_in_later_line +++ /dev/null @@ -1,42 +0,0 @@ -parse/0: instruction: run -parse/0: ingredient: {name: " - trace [a], [b] - ", value: 0, type: 0, properties: [" - trace [a], [b] - ": "literal-string"]} -parse/0: instruction: trace-should-contain -parse/0: ingredient: {name: " - a: b - a: d - ", value: 0, type: 0, properties: [" - a: b - a: d - ": "literal-string"]} -after-brace/0: recipe main -after-brace/0: run ... -after-brace/0: trace-should-contain ... -new/0: routine allocated memory from 1000 to 101000 -schedule/0: main -run/0: instruction main/0 -run/0: run/45 {name: " - trace [a], [b] - ", value: 0, type: 0, properties: [" - trace [a], [b] - ": "literal-string"]} -parse/0: instruction: trace -parse/0: ingredient: {name: "a", value: 0, type: 0, properties: ["a": "literal-string"]} -parse/0: ingredient: {name: "b", value: 0, type: 0, properties: ["b": "literal-string"]} -after-brace/0: recipe run1001 -after-brace/0: trace ... -run/0: instruction run1001/0 -run/0: trace/18 {name: "a", value: 0, type: 0, properties: ["a": "literal-string"]}, {name: "b", value: 0, type: 0, properties: ["b": "literal-string"]} -a/0: b -run/0: instruction main/1 -run/0: trace-should-contain/47 {name: " - a: b - a: d - ", value: 0, type: 0, properties: [" - a: b - a: d - ": "literal-string"]} -warn/0: missing [d] in trace layer a diff --git a/cpp/.traces/trace_negative_check_passes_silently b/cpp/.traces/trace_negative_check_passes_silently deleted file mode 100644 index e433c340..00000000 --- a/cpp/.traces/trace_negative_check_passes_silently +++ /dev/null @@ -1,16 +0,0 @@ -parse/0: instruction: trace-should-not-contain -parse/0: ingredient: {name: " - a: b - ", value: 0, type: 0, properties: [" - a: b - ": "literal-string"]} -after-brace/0: recipe main -after-brace/0: trace-should-not-contain ... -new/0: routine allocated memory from 1000 to 101000 -schedule/0: main -run/0: instruction main/0 -run/0: trace-should-not-contain/48 {name: " - a: b - ", value: 0, type: 0, properties: [" - a: b - ": "literal-string"]} diff --git a/cpp/.traces/trace_negative_check_warns_on_any_unexpected_line b/cpp/.traces/trace_negative_check_warns_on_any_unexpected_line deleted file mode 100644 index daa52d8e..00000000 --- a/cpp/.traces/trace_negative_check_warns_on_any_unexpected_line +++ /dev/null @@ -1,42 +0,0 @@ -parse/0: instruction: run -parse/0: ingredient: {name: " - trace [a], [d] - ", value: 0, type: 0, properties: [" - trace [a], [d] - ": "literal-string"]} -parse/0: instruction: trace-should-not-contain -parse/0: ingredient: {name: " - a: b - a: d - ", value: 0, type: 0, properties: [" - a: b - a: d - ": "literal-string"]} -after-brace/0: recipe main -after-brace/0: run ... -after-brace/0: trace-should-not-contain ... -new/0: routine allocated memory from 1000 to 101000 -schedule/0: main -run/0: instruction main/0 -run/0: run/45 {name: " - trace [a], [d] - ", value: 0, type: 0, properties: [" - trace [a], [d] - ": "literal-string"]} -parse/0: instruction: trace -parse/0: ingredient: {name: "a", value: 0, type: 0, properties: ["a": "literal-string"]} -parse/0: ingredient: {name: "d", value: 0, type: 0, properties: ["d": "literal-string"]} -after-brace/0: recipe run1001 -after-brace/0: trace ... -run/0: instruction run1001/0 -run/0: trace/18 {name: "a", value: 0, type: 0, properties: ["a": "literal-string"]}, {name: "d", value: 0, type: 0, properties: ["d": "literal-string"]} -a/0: d -run/0: instruction main/1 -run/0: trace-should-not-contain/48 {name: " - a: b - a: d - ", value: 0, type: 0, properties: [" - a: b - a: d - ": "literal-string"]} -warn/0: unexpected [d] in trace layer a diff --git a/cpp/.traces/trace_negative_check_warns_on_failure b/cpp/.traces/trace_negative_check_warns_on_failure deleted file mode 100644 index a236464f..00000000 --- a/cpp/.traces/trace_negative_check_warns_on_failure +++ /dev/null @@ -1,38 +0,0 @@ -parse/0: instruction: run -parse/0: ingredient: {name: " - trace [a], [b] - ", value: 0, type: 0, properties: [" - trace [a], [b] - ": "literal-string"]} -parse/0: instruction: trace-should-not-contain -parse/0: ingredient: {name: " - a: b - ", value: 0, type: 0, properties: [" - a: b - ": "literal-string"]} -after-brace/0: recipe main -after-brace/0: run ... -after-brace/0: trace-should-not-contain ... -new/0: routine allocated memory from 1000 to 101000 -schedule/0: main -run/0: instruction main/0 -run/0: run/45 {name: " - trace [a], [b] - ", value: 0, type: 0, properties: [" - trace [a], [b] - ": "literal-string"]} -parse/0: instruction: trace -parse/0: ingredient: {name: "a", value: 0, type: 0, properties: ["a": "literal-string"]} -parse/0: ingredient: {name: "b", value: 0, type: 0, properties: ["b": "literal-string"]} -after-brace/0: recipe run1001 -after-brace/0: trace ... -run/0: instruction run1001/0 -run/0: trace/18 {name: "a", value: 0, type: 0, properties: ["a": "literal-string"]}, {name: "b", value: 0, type: 0, properties: ["b": "literal-string"]} -a/0: b -run/0: instruction main/1 -run/0: trace-should-not-contain/48 {name: " - a: b - ", value: 0, type: 0, properties: [" - a: b - ": "literal-string"]} -warn/0: unexpected [b] in trace layer a diff --git a/cpp/.traces/wait_for_location b/cpp/.traces/wait_for_location deleted file mode 100644 index ca8b9424..00000000 --- a/cpp/.traces/wait_for_location +++ /dev/null @@ -1,45 +0,0 @@ -parse/0: instruction: copy -parse/0: ingredient: {name: "0", value: 0, type: 0, properties: ["0": "literal"]} -parse/0: product: {name: "1", value: 0, type: 1, properties: ["1": "integer"]} -parse/0: instruction: start-running -parse/0: ingredient: {name: "f2", value: 0, type: 0, properties: ["f2": "recipe"]} -parse/0: instruction: wait-for-location -parse/0: ingredient: {name: "1", value: 0, type: 1, properties: ["1": "integer"]} -parse/0: instruction: copy -parse/0: ingredient: {name: "1", value: 0, type: 1, properties: ["1": "integer"]} -parse/0: product: {name: "2", value: 0, type: 1, properties: ["2": "integer"]} -parse/0: instruction: copy -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 f1 -after-brace/0: copy ... -after-brace/0: start-running ... -after-brace/0: wait-for-location ... -after-brace/0: copy ... -after-brace/0: recipe f2 -after-brace/0: copy ... -new/0: routine allocated memory from 1000 to 101000 -schedule/0: f1 -run/0: instruction f1/0 -run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- copy/1 {name: "0", value: 0, type: 0, properties: ["0": "literal"]} -run/0: ingredient 0 is 0 -mem/0: storing 0 in location 1 -run/0: instruction f1/1 -run/0: start-running/34 {name: "f2", value: 0, type: 0, properties: ["f2": "recipe"]} -run/0: ingredient 0 is f2 -new/0: routine allocated memory from 101000 to 201000 -run/0: instruction f1/2 -run/0: wait-for-location/36 {name: "1", value: 1, type: 1, properties: ["1": "integer"]} -run/0: waiting for location 1 to change from 0 -schedule/0: f2 -run/0: instruction f2/0 -run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- copy/1 {name: "34", value: 34, type: 0, properties: ["34": "literal"]} -run/0: ingredient 0 is 34 -mem/0: storing 34 in location 1 -schedule/0: waking up routine -schedule/0: f1 -run/0: instruction f1/3 -run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer"]} <- copy/1 {name: "1", value: 1, type: 1, properties: ["1": "integer"]} -run/0: ingredient 0 is 1 -mem/0: location 1 is 34 -mem/0: storing 34 in location 2 diff --git a/cpp/.traces/wait_for_routine b/cpp/.traces/wait_for_routine deleted file mode 100644 index b3efbb97..00000000 --- a/cpp/.traces/wait_for_routine +++ /dev/null @@ -1,47 +0,0 @@ -parse/0: instruction: copy -parse/0: ingredient: {name: "0", value: 0, type: 0, properties: ["0": "literal"]} -parse/0: product: {name: "1", value: 0, type: 1, properties: ["1": "integer"]} -parse/0: instruction: start-running -parse/0: ingredient: {name: "f2", value: 0, type: 0, properties: ["f2": "recipe"]} -parse/0: product: {name: "2", value: 0, type: 1, properties: ["2": "integer", "routine": ]} -parse/0: instruction: wait-for-routine -parse/0: ingredient: {name: "2", value: 0, type: 1, properties: ["2": "integer", "routine": ]} -parse/0: instruction: copy -parse/0: ingredient: {name: "1", value: 0, type: 1, properties: ["1": "integer"]} -parse/0: product: {name: "3", value: 0, type: 1, properties: ["3": "integer"]} -parse/0: instruction: copy -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 f1 -after-brace/0: copy ... -after-brace/0: start-running ... -after-brace/0: wait-for-routine ... -after-brace/0: copy ... -after-brace/0: recipe f2 -after-brace/0: copy ... -new/0: routine allocated memory from 1000 to 101000 -schedule/0: f1 -run/0: instruction f1/0 -run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- copy/1 {name: "0", value: 0, type: 0, properties: ["0": "literal"]} -run/0: ingredient 0 is 0 -mem/0: storing 0 in location 1 -run/0: instruction f1/1 -run/0: {name: "2", value: 2, type: 1, properties: ["2": "integer", "routine": ]} <- start-running/34 {name: "f2", value: 0, type: 0, properties: ["f2": "recipe"]} -run/0: ingredient 0 is f2 -new/0: routine allocated memory from 101000 to 201000 -mem/0: storing 2 in location 2 -run/0: instruction f1/2 -run/0: wait-for-routine/37 {name: "2", value: 2, type: 1, properties: ["2": "integer", "routine": ]} -run/0: waiting for routine 2 -schedule/0: waking up routine -schedule/0: f2 -run/0: instruction f2/0 -run/0: {name: "1", value: 1, type: 1, properties: ["1": "integer"]} <- copy/1 {name: "34", value: 34, type: 0, properties: ["34": "literal"]} -run/0: ingredient 0 is 34 -mem/0: storing 34 in location 1 -schedule/0: f1 -run/0: instruction f1/3 -run/0: {name: "3", value: 3, type: 1, properties: ["3": "integer"]} <- copy/1 {name: "1", value: 1, type: 1, properties: ["1": "integer"]} -run/0: ingredient 0 is 1 -mem/0: location 1 is 34 -mem/0: storing 34 in location 3 |