about summary refs log tree commit diff stats
path: root/cpp/.traces
diff options
context:
space:
mode:
authorKartik K. Agaram <vc@akkartik.com>2015-03-16 22:52:04 -0700
committerKartik K. Agaram <vc@akkartik.com>2015-03-16 22:52:04 -0700
commita4ef18b194a24710847be59554e51a1fd618228d (patch)
tree2c717ae73346922b4ecdc2ac108ed0cb73da1d79 /cpp/.traces
parent100157d1a83ccb02d82af21c5767ecda3d7cb1c2 (diff)
downloadmu-a4ef18b194a24710847be59554e51a1fd618228d.tar.gz
940 - c++: some changes to instruction model
Diffstat (limited to 'cpp/.traces')
-rw-r--r--cpp/.traces/add14
-rw-r--r--cpp/.traces/add_literal6
-rw-r--r--cpp/.traces/and14
-rw-r--r--cpp/.traces/calling_recipe6
-rw-r--r--cpp/.traces/copy8
-rw-r--r--cpp/.traces/copy_array20
-rw-r--r--cpp/.traces/copy_indirect12
-rw-r--r--cpp/.traces/copy_literal4
-rw-r--r--cpp/.traces/copy_multiple_locations12
-rw-r--r--cpp/.traces/divide14
-rw-r--r--cpp/.traces/divide_literal6
-rw-r--r--cpp/.traces/divide_with_remainder16
-rw-r--r--cpp/.traces/divide_with_remainder_literal8
-rw-r--r--cpp/.traces/equal14
-rw-r--r--cpp/.traces/equal214
-rw-r--r--cpp/.traces/first_recipe4
-rw-r--r--cpp/.traces/get14
-rw-r--r--cpp/.traces/get_address14
-rw-r--r--cpp/.traces/get_address_indirect18
-rw-r--r--cpp/.traces/get_handles_record_fields18
-rw-r--r--cpp/.traces/get_indirect18
-rw-r--r--cpp/.traces/greater_or_equal14
-rw-r--r--cpp/.traces/greater_or_equal214
-rw-r--r--cpp/.traces/greater_or_equal314
-rw-r--r--cpp/.traces/greater_than14
-rw-r--r--cpp/.traces/greater_than214
-rw-r--r--cpp/.traces/index22
-rw-r--r--cpp/.traces/index_address22
-rw-r--r--cpp/.traces/jump_backward6
-rw-r--r--cpp/.traces/jump_can_skip_instructions6
-rw-r--r--cpp/.traces/jump_if8
-rw-r--r--cpp/.traces/jump_if_fallthrough8
-rw-r--r--cpp/.traces/jump_unless8
-rw-r--r--cpp/.traces/jump_unless_fallthrough8
-rw-r--r--cpp/.traces/lesser_or_equal14
-rw-r--r--cpp/.traces/lesser_or_equal214
-rw-r--r--cpp/.traces/lesser_or_equal314
-rw-r--r--cpp/.traces/lesser_than14
-rw-r--r--cpp/.traces/lesser_than214
-rw-r--r--cpp/.traces/multiply14
-rw-r--r--cpp/.traces/multiply_literal6
-rw-r--r--cpp/.traces/next_ingredient10
-rw-r--r--cpp/.traces/not8
-rw-r--r--cpp/.traces/or14
-rw-r--r--cpp/.traces/parse_comment_after_instruction4
-rw-r--r--cpp/.traces/parse_comment_amongst_instruction4
-rw-r--r--cpp/.traces/parse_comment_amongst_instruction24
-rw-r--r--cpp/.traces/parse_comment_amongst_instruction38
-rw-r--r--cpp/.traces/parse_comment_outside_recipe4
-rw-r--r--cpp/.traces/parse_multiple_ingredients8
-rw-r--r--cpp/.traces/parse_multiple_products6
-rw-r--r--cpp/.traces/parse_multiple_types8
-rw-r--r--cpp/.traces/parse_properties4
-rw-r--r--cpp/.traces/reply18
-rw-r--r--cpp/.traces/store_indirect8
-rw-r--r--cpp/.traces/subtract14
-rw-r--r--cpp/.traces/subtract_literal6
57 files changed, 315 insertions, 315 deletions
diff --git a/cpp/.traces/add b/cpp/.traces/add
index eaa94f85..c831e62a 100644
--- a/cpp/.traces/add
+++ b/cpp/.traces/add
@@ -1,13 +1,13 @@
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "23", type: 0}
-parse/0:   product: {name: "1", type: 1}
+parse/0:   ingredient: {name: "23", value: 23, type: 0, properties: [23: literal]}
+parse/0:   product: {name: "1", value: 1, type: 1, properties: [1: integer]}
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "34", type: 0}
-parse/0:   product: {name: "2", type: 1}
+parse/0:   ingredient: {name: "34", value: 34, type: 0, properties: [34: literal]}
+parse/0:   product: {name: "2", value: 2, type: 1, properties: [2: integer]}
 parse/0: instruction: 2
-parse/0:   ingredient: {name: "1", type: 1}
-parse/0:   ingredient: {name: "2", type: 1}
-parse/0:   product: {name: "3", type: 1}
+parse/0:   ingredient: {name: "1", value: 1, type: 1, properties: [1: integer]}
+parse/0:   ingredient: {name: "2", value: 2, type: 1, properties: [2: integer]}
+parse/0:   product: {name: "3", value: 3, type: 1, properties: [3: integer]}
 run/0: instruction main/0
 run/0: ingredient 0 is 23
 mem/0: storing in location 1
diff --git a/cpp/.traces/add_literal b/cpp/.traces/add_literal
index e695a9a0..b9879031 100644
--- a/cpp/.traces/add_literal
+++ b/cpp/.traces/add_literal
@@ -1,7 +1,7 @@
 parse/0: instruction: 2
-parse/0:   ingredient: {name: "23", type: 0}
-parse/0:   ingredient: {name: "34", type: 0}
-parse/0:   product: {name: "1", type: 1}
+parse/0:   ingredient: {name: "23", value: 23, type: 0, properties: [23: literal]}
+parse/0:   ingredient: {name: "34", value: 34, type: 0, properties: [34: literal]}
+parse/0:   product: {name: "1", value: 1, type: 1, properties: [1: integer]}
 run/0: instruction main/0
 run/0: ingredient 0 is 23
 run/0: ingredient 1 is 34
diff --git a/cpp/.traces/and b/cpp/.traces/and
index 4bbf11c3..b487c4e4 100644
--- a/cpp/.traces/and
+++ b/cpp/.traces/and
@@ -1,13 +1,13 @@
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "1", type: 0}
-parse/0:   product: {name: "1", type: 1}
+parse/0:   ingredient: {name: "1", value: 1, type: 0, properties: [1: literal]}
+parse/0:   product: {name: "1", value: 1, type: 1, properties: [1: integer]}
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "0", type: 0}
-parse/0:   product: {name: "2", type: 1}
+parse/0:   ingredient: {name: "0", value: 0, type: 0, properties: [0: literal]}
+parse/0:   product: {name: "2", value: 2, type: 1, properties: [2: integer]}
 parse/0: instruction: 7
-parse/0:   ingredient: {name: "1", type: 1}
-parse/0:   ingredient: {name: "2", type: 1}
-parse/0:   product: {name: "3", type: 1}
+parse/0:   ingredient: {name: "1", value: 1, type: 1, properties: [1: integer]}
+parse/0:   ingredient: {name: "2", value: 2, type: 1, properties: [2: integer]}
+parse/0:   product: {name: "3", value: 3, type: 1, properties: [3: integer]}
 run/0: instruction main/0
 run/0: ingredient 0 is 1
 mem/0: storing in location 1
diff --git a/cpp/.traces/calling_recipe b/cpp/.traces/calling_recipe
index 3c220e09..e8e3f1f3 100644
--- a/cpp/.traces/calling_recipe
+++ b/cpp/.traces/calling_recipe
@@ -1,8 +1,8 @@
 parse/0: instruction: 25
 parse/0: instruction: 2
-parse/0:   ingredient: {name: "2", type: 0}
-parse/0:   ingredient: {name: "2", type: 0}
-parse/0:   product: {name: "3", type: 1}
+parse/0:   ingredient: {name: "2", value: 2, type: 0, properties: [2: literal]}
+parse/0:   ingredient: {name: "2", value: 2, type: 0, properties: [2: literal]}
+parse/0:   product: {name: "3", value: 3, type: 1, properties: [3: integer]}
 run/0: instruction main/0
 run/0: instruction f/0
 run/0: ingredient 0 is 2
diff --git a/cpp/.traces/copy b/cpp/.traces/copy
index 507bf92a..9a52d9d6 100644
--- a/cpp/.traces/copy
+++ b/cpp/.traces/copy
@@ -1,9 +1,9 @@
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "23", type: 0}
-parse/0:   product: {name: "1", type: 1}
+parse/0:   ingredient: {name: "23", value: 23, type: 0, properties: [23: literal]}
+parse/0:   product: {name: "1", value: 1, type: 1, properties: [1: integer]}
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "1", type: 1}
-parse/0:   product: {name: "2", type: 1}
+parse/0:   ingredient: {name: "1", value: 1, type: 1, properties: [1: integer]}
+parse/0:   product: {name: "2", value: 2, type: 1, properties: [2: integer]}
 run/0: instruction main/0
 run/0: ingredient 0 is 23
 mem/0: storing in location 1
diff --git a/cpp/.traces/copy_array b/cpp/.traces/copy_array
index 7350b04e..967a9ed9 100644
--- a/cpp/.traces/copy_array
+++ b/cpp/.traces/copy_array
@@ -1,18 +1,18 @@
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "3", type: 0}
-parse/0:   product: {name: "1", type: 1}
+parse/0:   ingredient: {name: "3", value: 3, type: 0, properties: [3: literal]}
+parse/0:   product: {name: "1", value: 1, type: 1, properties: [1: integer]}
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "14", type: 0}
-parse/0:   product: {name: "2", type: 1}
+parse/0:   ingredient: {name: "14", value: 14, type: 0, properties: [14: literal]}
+parse/0:   product: {name: "2", value: 2, type: 1, properties: [2: integer]}
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "15", type: 0}
-parse/0:   product: {name: "3", type: 1}
+parse/0:   ingredient: {name: "15", value: 15, type: 0, properties: [15: literal]}
+parse/0:   product: {name: "3", value: 3, type: 1, properties: [3: integer]}
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "16", type: 0}
-parse/0:   product: {name: "4", type: 1}
+parse/0:   ingredient: {name: "16", value: 16, type: 0, properties: [16: literal]}
+parse/0:   product: {name: "4", value: 4, type: 1, properties: [4: integer]}
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "1", type: 6}
-parse/0:   product: {name: "5", type: 6}
+parse/0:   ingredient: {name: "1", value: 1, type: 6, properties: [1: integer-array]}
+parse/0:   product: {name: "5", value: 5, type: 6, properties: [5: integer-array]}
 run/0: instruction main/0
 run/0: ingredient 0 is 3
 mem/0: storing in location 1
diff --git a/cpp/.traces/copy_indirect b/cpp/.traces/copy_indirect
index 357d1498..e55c5c42 100644
--- a/cpp/.traces/copy_indirect
+++ b/cpp/.traces/copy_indirect
@@ -1,12 +1,12 @@
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "2", type: 0}
-parse/0:   product: {name: "1", type: 2-1}
+parse/0:   ingredient: {name: "2", value: 2, type: 0, properties: [2: literal]}
+parse/0:   product: {name: "1", value: 1, type: 2-1, properties: [1: address:integer]}
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "34", type: 0}
-parse/0:   product: {name: "2", type: 1}
+parse/0:   ingredient: {name: "34", value: 34, type: 0, properties: [34: literal]}
+parse/0:   product: {name: "2", value: 2, type: 1, properties: [2: integer]}
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "1", type: 2-1, property: deref:}
-parse/0:   product: {name: "3", type: 1}
+parse/0:   ingredient: {name: "1", value: 1, type: 2-1, properties: [1: address:integer, deref: ]}
+parse/0:   product: {name: "3", value: 3, type: 1, properties: [3: integer]}
 run/0: instruction main/0
 run/0: ingredient 0 is 2
 mem/0: storing in location 1
diff --git a/cpp/.traces/copy_literal b/cpp/.traces/copy_literal
index 06a6b997..cbb53fbc 100644
--- a/cpp/.traces/copy_literal
+++ b/cpp/.traces/copy_literal
@@ -1,6 +1,6 @@
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "23", type: 0}
-parse/0:   product: {name: "1", type: 1}
+parse/0:   ingredient: {name: "23", value: 23, type: 0, properties: [23: literal]}
+parse/0:   product: {name: "1", value: 1, type: 1, properties: [1: integer]}
 run/0: instruction main/0
 run/0: ingredient 0 is 23
 mem/0: storing in location 1
diff --git a/cpp/.traces/copy_multiple_locations b/cpp/.traces/copy_multiple_locations
index 4ba0d565..f03d3573 100644
--- a/cpp/.traces/copy_multiple_locations
+++ b/cpp/.traces/copy_multiple_locations
@@ -1,12 +1,12 @@
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "34", type: 0}
-parse/0:   product: {name: "1", type: 1}
+parse/0:   ingredient: {name: "34", value: 34, type: 0, properties: [34: literal]}
+parse/0:   product: {name: "1", value: 1, type: 1, properties: [1: integer]}
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "35", type: 0}
-parse/0:   product: {name: "2", type: 1}
+parse/0:   ingredient: {name: "35", value: 35, type: 0, properties: [35: literal]}
+parse/0:   product: {name: "2", value: 2, type: 1, properties: [2: integer]}
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "1", type: 4}
-parse/0:   product: {name: "3", type: 4}
+parse/0:   ingredient: {name: "1", value: 1, type: 4, properties: [1: point]}
+parse/0:   product: {name: "3", value: 3, type: 4, properties: [3: point]}
 run/0: instruction main/0
 run/0: ingredient 0 is 34
 mem/0: storing in location 1
diff --git a/cpp/.traces/divide b/cpp/.traces/divide
index 4cd49db4..0bfb1741 100644
--- a/cpp/.traces/divide
+++ b/cpp/.traces/divide
@@ -1,13 +1,13 @@
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "27", type: 0}
-parse/0:   product: {name: "1", type: 1}
+parse/0:   ingredient: {name: "27", value: 27, type: 0, properties: [27: literal]}
+parse/0:   product: {name: "1", value: 1, type: 1, properties: [1: integer]}
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "3", type: 0}
-parse/0:   product: {name: "2", type: 1}
+parse/0:   ingredient: {name: "3", value: 3, type: 0, properties: [3: literal]}
+parse/0:   product: {name: "2", value: 2, type: 1, properties: [2: integer]}
 parse/0: instruction: 5
-parse/0:   ingredient: {name: "1", type: 1}
-parse/0:   ingredient: {name: "2", type: 1}
-parse/0:   product: {name: "3", type: 1}
+parse/0:   ingredient: {name: "1", value: 1, type: 1, properties: [1: integer]}
+parse/0:   ingredient: {name: "2", value: 2, type: 1, properties: [2: integer]}
+parse/0:   product: {name: "3", value: 3, type: 1, properties: [3: integer]}
 run/0: instruction main/0
 run/0: ingredient 0 is 27
 mem/0: storing in location 1
diff --git a/cpp/.traces/divide_literal b/cpp/.traces/divide_literal
index 3d29139b..41552683 100644
--- a/cpp/.traces/divide_literal
+++ b/cpp/.traces/divide_literal
@@ -1,7 +1,7 @@
 parse/0: instruction: 5
-parse/0:   ingredient: {name: "8", type: 0}
-parse/0:   ingredient: {name: "2", type: 0}
-parse/0:   product: {name: "1", type: 1}
+parse/0:   ingredient: {name: "8", value: 8, type: 0, properties: [8: literal]}
+parse/0:   ingredient: {name: "2", value: 2, type: 0, properties: [2: literal]}
+parse/0:   product: {name: "1", value: 1, type: 1, properties: [1: integer]}
 run/0: instruction main/0
 run/0: ingredient 0 is 8
 run/0: ingredient 1 is 2
diff --git a/cpp/.traces/divide_with_remainder b/cpp/.traces/divide_with_remainder
index 62993a82..a9f36a48 100644
--- a/cpp/.traces/divide_with_remainder
+++ b/cpp/.traces/divide_with_remainder
@@ -1,14 +1,14 @@
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "27", type: 0}
-parse/0:   product: {name: "1", type: 1}
+parse/0:   ingredient: {name: "27", value: 27, type: 0, properties: [27: literal]}
+parse/0:   product: {name: "1", value: 1, type: 1, properties: [1: integer]}
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "11", type: 0}
-parse/0:   product: {name: "2", type: 1}
+parse/0:   ingredient: {name: "11", value: 11, type: 0, properties: [11: literal]}
+parse/0:   product: {name: "2", value: 2, type: 1, properties: [2: integer]}
 parse/0: instruction: 6
-parse/0:   ingredient: {name: "1", type: 1}
-parse/0:   ingredient: {name: "2", type: 1}
-parse/0:   product: {name: "3", type: 1}
-parse/0:   product: {name: "4", type: 1}
+parse/0:   ingredient: {name: "1", value: 1, type: 1, properties: [1: integer]}
+parse/0:   ingredient: {name: "2", value: 2, type: 1, properties: [2: integer]}
+parse/0:   product: {name: "3", value: 3, type: 1, properties: [3: integer]}
+parse/0:   product: {name: "4", value: 4, type: 1, properties: [4: integer]}
 run/0: instruction main/0
 run/0: ingredient 0 is 27
 mem/0: storing in location 1
diff --git a/cpp/.traces/divide_with_remainder_literal b/cpp/.traces/divide_with_remainder_literal
index bcc2451b..4d3a3784 100644
--- a/cpp/.traces/divide_with_remainder_literal
+++ b/cpp/.traces/divide_with_remainder_literal
@@ -1,8 +1,8 @@
 parse/0: instruction: 6
-parse/0:   ingredient: {name: "9", type: 0}
-parse/0:   ingredient: {name: "2", type: 0}
-parse/0:   product: {name: "1", type: 1}
-parse/0:   product: {name: "2", type: 1}
+parse/0:   ingredient: {name: "9", value: 9, type: 0, properties: [9: literal]}
+parse/0:   ingredient: {name: "2", value: 2, type: 0, properties: [2: literal]}
+parse/0:   product: {name: "1", value: 1, type: 1, properties: [1: integer]}
+parse/0:   product: {name: "2", value: 2, type: 1, properties: [2: integer]}
 run/0: instruction main/0
 run/0: ingredient 0 is 9
 run/0: ingredient 1 is 2
diff --git a/cpp/.traces/equal b/cpp/.traces/equal
index 9abcdde6..4d445657 100644
--- a/cpp/.traces/equal
+++ b/cpp/.traces/equal
@@ -1,13 +1,13 @@
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "34", type: 0}
-parse/0:   product: {name: "1", type: 1}
+parse/0:   ingredient: {name: "34", value: 34, type: 0, properties: [34: literal]}
+parse/0:   product: {name: "1", value: 1, type: 1, properties: [1: integer]}
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "33", type: 0}
-parse/0:   product: {name: "2", type: 1}
+parse/0:   ingredient: {name: "33", value: 33, type: 0, properties: [33: literal]}
+parse/0:   product: {name: "2", value: 2, type: 1, properties: [2: integer]}
 parse/0: instruction: 13
-parse/0:   ingredient: {name: "1", type: 1}
-parse/0:   ingredient: {name: "2", type: 1}
-parse/0:   product: {name: "3", type: 1}
+parse/0:   ingredient: {name: "1", value: 1, type: 1, properties: [1: integer]}
+parse/0:   ingredient: {name: "2", value: 2, type: 1, properties: [2: integer]}
+parse/0:   product: {name: "3", value: 3, type: 1, properties: [3: integer]}
 run/0: instruction main/0
 run/0: ingredient 0 is 34
 mem/0: storing in location 1
diff --git a/cpp/.traces/equal2 b/cpp/.traces/equal2
index b1d02785..ce3b54b5 100644
--- a/cpp/.traces/equal2
+++ b/cpp/.traces/equal2
@@ -1,13 +1,13 @@
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "34", type: 0}
-parse/0:   product: {name: "1", type: 1}
+parse/0:   ingredient: {name: "34", value: 34, type: 0, properties: [34: literal]}
+parse/0:   product: {name: "1", value: 1, type: 1, properties: [1: integer]}
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "34", type: 0}
-parse/0:   product: {name: "2", type: 1}
+parse/0:   ingredient: {name: "34", value: 34, type: 0, properties: [34: literal]}
+parse/0:   product: {name: "2", value: 2, type: 1, properties: [2: integer]}
 parse/0: instruction: 13
-parse/0:   ingredient: {name: "1", type: 1}
-parse/0:   ingredient: {name: "2", type: 1}
-parse/0:   product: {name: "3", type: 1}
+parse/0:   ingredient: {name: "1", value: 1, type: 1, properties: [1: integer]}
+parse/0:   ingredient: {name: "2", value: 2, type: 1, properties: [2: integer]}
+parse/0:   product: {name: "3", value: 3, type: 1, properties: [3: integer]}
 run/0: instruction main/0
 run/0: ingredient 0 is 34
 mem/0: storing in location 1
diff --git a/cpp/.traces/first_recipe b/cpp/.traces/first_recipe
index d20319d2..2d13cf1d 100644
--- a/cpp/.traces/first_recipe
+++ b/cpp/.traces/first_recipe
@@ -1,3 +1,3 @@
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "23", type: 0}
-parse/0:   product: {name: "1", type: 1}
+parse/0:   ingredient: {name: "23", value: 23, type: 0, properties: [23: literal]}
+parse/0:   product: {name: "1", value: 1, type: 1, properties: [1: integer]}
diff --git a/cpp/.traces/get b/cpp/.traces/get
index fed4a487..ff2c96b8 100644
--- a/cpp/.traces/get
+++ b/cpp/.traces/get
@@ -1,13 +1,13 @@
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "34", type: 0}
-parse/0:   product: {name: "12", type: 1}
+parse/0:   ingredient: {name: "34", value: 34, type: 0, properties: [34: literal]}
+parse/0:   product: {name: "12", value: 12, type: 1, properties: [12: integer]}
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "35", type: 0}
-parse/0:   product: {name: "13", type: 1}
+parse/0:   ingredient: {name: "35", value: 35, type: 0, properties: [35: literal]}
+parse/0:   product: {name: "13", value: 13, type: 1, properties: [13: integer]}
 parse/0: instruction: 18
-parse/0:   ingredient: {name: "12", type: 4}
-parse/0:   ingredient: {name: "1", type: 0}
-parse/0:   product: {name: "15", type: 1}
+parse/0:   ingredient: {name: "12", value: 12, type: 4, properties: [12: point]}
+parse/0:   ingredient: {name: "1", value: 1, type: 0, properties: [1: offset]}
+parse/0:   product: {name: "15", value: 15, type: 1, properties: [15: integer]}
 run/0: instruction main/0
 run/0: ingredient 0 is 34
 mem/0: storing in location 12
diff --git a/cpp/.traces/get_address b/cpp/.traces/get_address
index 59da3a6d..1156f7cd 100644
--- a/cpp/.traces/get_address
+++ b/cpp/.traces/get_address
@@ -1,13 +1,13 @@
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "34", type: 0}
-parse/0:   product: {name: "12", type: 1}
+parse/0:   ingredient: {name: "34", value: 34, type: 0, properties: [34: literal]}
+parse/0:   product: {name: "12", value: 12, type: 1, properties: [12: integer]}
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "35", type: 0}
-parse/0:   product: {name: "13", type: 1}
+parse/0:   ingredient: {name: "35", value: 35, type: 0, properties: [35: literal]}
+parse/0:   product: {name: "13", value: 13, type: 1, properties: [13: integer]}
 parse/0: instruction: 19
-parse/0:   ingredient: {name: "12", type: 4}
-parse/0:   ingredient: {name: "1", type: 0}
-parse/0:   product: {name: "15", type: 2-1}
+parse/0:   ingredient: {name: "12", value: 12, type: 4, properties: [12: point]}
+parse/0:   ingredient: {name: "1", value: 1, type: 0, properties: [1: offset]}
+parse/0:   product: {name: "15", value: 15, type: 2-1, properties: [15: address:integer]}
 run/0: instruction main/0
 run/0: ingredient 0 is 34
 mem/0: storing in location 12
diff --git a/cpp/.traces/get_address_indirect b/cpp/.traces/get_address_indirect
index 27591476..16f3f56a 100644
--- a/cpp/.traces/get_address_indirect
+++ b/cpp/.traces/get_address_indirect
@@ -1,16 +1,16 @@
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "2", type: 0}
-parse/0:   product: {name: "1", type: 1}
+parse/0:   ingredient: {name: "2", value: 2, type: 0, properties: [2: literal]}
+parse/0:   product: {name: "1", value: 1, type: 1, properties: [1: integer]}
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "34", type: 0}
-parse/0:   product: {name: "2", type: 1}
+parse/0:   ingredient: {name: "34", value: 34, type: 0, properties: [34: literal]}
+parse/0:   product: {name: "2", value: 2, type: 1, properties: [2: integer]}
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "35", type: 0}
-parse/0:   product: {name: "3", type: 1}
+parse/0:   ingredient: {name: "35", value: 35, type: 0, properties: [35: literal]}
+parse/0:   product: {name: "3", value: 3, type: 1, properties: [3: integer]}
 parse/0: instruction: 19
-parse/0:   ingredient: {name: "1", type: 2-4, property: deref:}
-parse/0:   ingredient: {name: "0", type: 0}
-parse/0:   product: {name: "4", type: 1}
+parse/0:   ingredient: {name: "1", value: 1, type: 2-4, properties: [1: address:point, deref: ]}
+parse/0:   ingredient: {name: "0", value: 0, type: 0, properties: [0: offset]}
+parse/0:   product: {name: "4", value: 4, type: 1, properties: [4: integer]}
 run/0: instruction main/0
 run/0: ingredient 0 is 2
 mem/0: storing in location 1
diff --git a/cpp/.traces/get_handles_record_fields b/cpp/.traces/get_handles_record_fields
index 0c1eb7d9..85fdec38 100644
--- a/cpp/.traces/get_handles_record_fields
+++ b/cpp/.traces/get_handles_record_fields
@@ -1,16 +1,16 @@
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "34", type: 0}
-parse/0:   product: {name: "12", type: 1}
+parse/0:   ingredient: {name: "34", value: 34, type: 0, properties: [34: literal]}
+parse/0:   product: {name: "12", value: 12, type: 1, properties: [12: integer]}
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "35", type: 0}
-parse/0:   product: {name: "13", type: 1}
+parse/0:   ingredient: {name: "35", value: 35, type: 0, properties: [35: literal]}
+parse/0:   product: {name: "13", value: 13, type: 1, properties: [13: integer]}
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "36", type: 0}
-parse/0:   product: {name: "14", type: 1}
+parse/0:   ingredient: {name: "36", value: 36, type: 0, properties: [36: literal]}
+parse/0:   product: {name: "14", value: 14, type: 1, properties: [14: integer]}
 parse/0: instruction: 18
-parse/0:   ingredient: {name: "12", type: 5}
-parse/0:   ingredient: {name: "1", type: 0}
-parse/0:   product: {name: "15", type: 1}
+parse/0:   ingredient: {name: "12", value: 12, type: 5, properties: [12: point-integer]}
+parse/0:   ingredient: {name: "1", value: 1, type: 0, properties: [1: offset]}
+parse/0:   product: {name: "15", value: 15, type: 1, properties: [15: integer]}
 run/0: instruction main/0
 run/0: ingredient 0 is 34
 mem/0: storing in location 12
diff --git a/cpp/.traces/get_indirect b/cpp/.traces/get_indirect
index 6aaf660d..a3daab86 100644
--- a/cpp/.traces/get_indirect
+++ b/cpp/.traces/get_indirect
@@ -1,16 +1,16 @@
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "2", type: 0}
-parse/0:   product: {name: "1", type: 1}
+parse/0:   ingredient: {name: "2", value: 2, type: 0, properties: [2: literal]}
+parse/0:   product: {name: "1", value: 1, type: 1, properties: [1: integer]}
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "34", type: 0}
-parse/0:   product: {name: "2", type: 1}
+parse/0:   ingredient: {name: "34", value: 34, type: 0, properties: [34: literal]}
+parse/0:   product: {name: "2", value: 2, type: 1, properties: [2: integer]}
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "35", type: 0}
-parse/0:   product: {name: "3", type: 1}
+parse/0:   ingredient: {name: "35", value: 35, type: 0, properties: [35: literal]}
+parse/0:   product: {name: "3", value: 3, type: 1, properties: [3: integer]}
 parse/0: instruction: 18
-parse/0:   ingredient: {name: "1", type: 2-4, property: deref:}
-parse/0:   ingredient: {name: "0", type: 0}
-parse/0:   product: {name: "4", type: 1}
+parse/0:   ingredient: {name: "1", value: 1, type: 2-4, properties: [1: address:point, deref: ]}
+parse/0:   ingredient: {name: "0", value: 0, type: 0, properties: [0: offset]}
+parse/0:   product: {name: "4", value: 4, type: 1, properties: [4: integer]}
 run/0: instruction main/0
 run/0: ingredient 0 is 2
 mem/0: storing in location 1
diff --git a/cpp/.traces/greater_or_equal b/cpp/.traces/greater_or_equal
index d347b751..f9065713 100644
--- a/cpp/.traces/greater_or_equal
+++ b/cpp/.traces/greater_or_equal
@@ -1,13 +1,13 @@
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "34", type: 0}
-parse/0:   product: {name: "1", type: 1}
+parse/0:   ingredient: {name: "34", value: 34, type: 0, properties: [34: literal]}
+parse/0:   product: {name: "1", value: 1, type: 1, properties: [1: integer]}
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "33", type: 0}
-parse/0:   product: {name: "2", type: 1}
+parse/0:   ingredient: {name: "33", value: 33, type: 0, properties: [33: literal]}
+parse/0:   product: {name: "2", value: 2, type: 1, properties: [2: integer]}
 parse/0: instruction: 16
-parse/0:   ingredient: {name: "1", type: 1}
-parse/0:   ingredient: {name: "2", type: 1}
-parse/0:   product: {name: "3", type: 1}
+parse/0:   ingredient: {name: "1", value: 1, type: 1, properties: [1: integer]}
+parse/0:   ingredient: {name: "2", value: 2, type: 1, properties: [2: integer]}
+parse/0:   product: {name: "3", value: 3, type: 1, properties: [3: integer]}
 run/0: instruction main/0
 run/0: ingredient 0 is 34
 mem/0: storing in location 1
diff --git a/cpp/.traces/greater_or_equal2 b/cpp/.traces/greater_or_equal2
index 4777cecc..00ff6059 100644
--- a/cpp/.traces/greater_or_equal2
+++ b/cpp/.traces/greater_or_equal2
@@ -1,13 +1,13 @@
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "34", type: 0}
-parse/0:   product: {name: "1", type: 1}
+parse/0:   ingredient: {name: "34", value: 34, type: 0, properties: [34: literal]}
+parse/0:   product: {name: "1", value: 1, type: 1, properties: [1: integer]}
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "34", type: 0}
-parse/0:   product: {name: "2", type: 1}
+parse/0:   ingredient: {name: "34", value: 34, type: 0, properties: [34: literal]}
+parse/0:   product: {name: "2", value: 2, type: 1, properties: [2: integer]}
 parse/0: instruction: 16
-parse/0:   ingredient: {name: "1", type: 1}
-parse/0:   ingredient: {name: "2", type: 1}
-parse/0:   product: {name: "3", type: 1}
+parse/0:   ingredient: {name: "1", value: 1, type: 1, properties: [1: integer]}
+parse/0:   ingredient: {name: "2", value: 2, type: 1, properties: [2: integer]}
+parse/0:   product: {name: "3", value: 3, type: 1, properties: [3: integer]}
 run/0: instruction main/0
 run/0: ingredient 0 is 34
 mem/0: storing in location 1
diff --git a/cpp/.traces/greater_or_equal3 b/cpp/.traces/greater_or_equal3
index 4e5986ec..8795fd99 100644
--- a/cpp/.traces/greater_or_equal3
+++ b/cpp/.traces/greater_or_equal3
@@ -1,13 +1,13 @@
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "34", type: 0}
-parse/0:   product: {name: "1", type: 1}
+parse/0:   ingredient: {name: "34", value: 34, type: 0, properties: [34: literal]}
+parse/0:   product: {name: "1", value: 1, type: 1, properties: [1: integer]}
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "35", type: 0}
-parse/0:   product: {name: "2", type: 1}
+parse/0:   ingredient: {name: "35", value: 35, type: 0, properties: [35: literal]}
+parse/0:   product: {name: "2", value: 2, type: 1, properties: [2: integer]}
 parse/0: instruction: 16
-parse/0:   ingredient: {name: "1", type: 1}
-parse/0:   ingredient: {name: "2", type: 1}
-parse/0:   product: {name: "3", type: 1}
+parse/0:   ingredient: {name: "1", value: 1, type: 1, properties: [1: integer]}
+parse/0:   ingredient: {name: "2", value: 2, type: 1, properties: [2: integer]}
+parse/0:   product: {name: "3", value: 3, type: 1, properties: [3: integer]}
 run/0: instruction main/0
 run/0: ingredient 0 is 34
 mem/0: storing in location 1
diff --git a/cpp/.traces/greater_than b/cpp/.traces/greater_than
index 58654c92..ce7c3e5c 100644
--- a/cpp/.traces/greater_than
+++ b/cpp/.traces/greater_than
@@ -1,13 +1,13 @@
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "34", type: 0}
-parse/0:   product: {name: "1", type: 1}
+parse/0:   ingredient: {name: "34", value: 34, type: 0, properties: [34: literal]}
+parse/0:   product: {name: "1", value: 1, type: 1, properties: [1: integer]}
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "33", type: 0}
-parse/0:   product: {name: "2", type: 1}
+parse/0:   ingredient: {name: "33", value: 33, type: 0, properties: [33: literal]}
+parse/0:   product: {name: "2", value: 2, type: 1, properties: [2: integer]}
 parse/0: instruction: 14
-parse/0:   ingredient: {name: "1", type: 1}
-parse/0:   ingredient: {name: "2", type: 1}
-parse/0:   product: {name: "3", type: 1}
+parse/0:   ingredient: {name: "1", value: 1, type: 1, properties: [1: integer]}
+parse/0:   ingredient: {name: "2", value: 2, type: 1, properties: [2: integer]}
+parse/0:   product: {name: "3", value: 3, type: 1, properties: [3: integer]}
 run/0: instruction main/0
 run/0: ingredient 0 is 34
 mem/0: storing in location 1
diff --git a/cpp/.traces/greater_than2 b/cpp/.traces/greater_than2
index cc0494ee..17f6c6fa 100644
--- a/cpp/.traces/greater_than2
+++ b/cpp/.traces/greater_than2
@@ -1,13 +1,13 @@
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "34", type: 0}
-parse/0:   product: {name: "1", type: 1}
+parse/0:   ingredient: {name: "34", value: 34, type: 0, properties: [34: literal]}
+parse/0:   product: {name: "1", value: 1, type: 1, properties: [1: integer]}
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "34", type: 0}
-parse/0:   product: {name: "2", type: 1}
+parse/0:   ingredient: {name: "34", value: 34, type: 0, properties: [34: literal]}
+parse/0:   product: {name: "2", value: 2, type: 1, properties: [2: integer]}
 parse/0: instruction: 14
-parse/0:   ingredient: {name: "1", type: 1}
-parse/0:   ingredient: {name: "2", type: 1}
-parse/0:   product: {name: "3", type: 1}
+parse/0:   ingredient: {name: "1", value: 1, type: 1, properties: [1: integer]}
+parse/0:   ingredient: {name: "2", value: 2, type: 1, properties: [2: integer]}
+parse/0:   product: {name: "3", value: 3, type: 1, properties: [3: integer]}
 run/0: instruction main/0
 run/0: ingredient 0 is 34
 mem/0: storing in location 1
diff --git a/cpp/.traces/index b/cpp/.traces/index
index 9809b808..0e60606f 100644
--- a/cpp/.traces/index
+++ b/cpp/.traces/index
@@ -1,19 +1,19 @@
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "3", type: 0}
-parse/0:   product: {name: "1", type: 1}
+parse/0:   ingredient: {name: "3", value: 3, type: 0, properties: [3: literal]}
+parse/0:   product: {name: "1", value: 1, type: 1, properties: [1: integer]}
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "14", type: 0}
-parse/0:   product: {name: "2", type: 1}
+parse/0:   ingredient: {name: "14", value: 14, type: 0, properties: [14: literal]}
+parse/0:   product: {name: "2", value: 2, type: 1, properties: [2: integer]}
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "15", type: 0}
-parse/0:   product: {name: "3", type: 1}
+parse/0:   ingredient: {name: "15", value: 15, type: 0, properties: [15: literal]}
+parse/0:   product: {name: "3", value: 3, type: 1, properties: [3: integer]}
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "16", type: 0}
-parse/0:   product: {name: "4", type: 1}
+parse/0:   ingredient: {name: "16", value: 16, type: 0, properties: [16: literal]}
+parse/0:   product: {name: "4", value: 4, type: 1, properties: [4: integer]}
 parse/0: instruction: 20
-parse/0:   ingredient: {name: "1", type: 6}
-parse/0:   ingredient: {name: "0", type: 0}
-parse/0:   product: {name: "5", type: 1}
+parse/0:   ingredient: {name: "1", value: 1, type: 6, properties: [1: integer-array]}
+parse/0:   ingredient: {name: "0", value: 0, type: 0, properties: [0: literal]}
+parse/0:   product: {name: "5", value: 5, type: 1, properties: [5: integer]}
 run/0: instruction main/0
 run/0: ingredient 0 is 3
 mem/0: storing in location 1
diff --git a/cpp/.traces/index_address b/cpp/.traces/index_address
index 76b99827..297fcfc9 100644
--- a/cpp/.traces/index_address
+++ b/cpp/.traces/index_address
@@ -1,19 +1,19 @@
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "3", type: 0}
-parse/0:   product: {name: "1", type: 1}
+parse/0:   ingredient: {name: "3", value: 3, type: 0, properties: [3: literal]}
+parse/0:   product: {name: "1", value: 1, type: 1, properties: [1: integer]}
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "14", type: 0}
-parse/0:   product: {name: "2", type: 1}
+parse/0:   ingredient: {name: "14", value: 14, type: 0, properties: [14: literal]}
+parse/0:   product: {name: "2", value: 2, type: 1, properties: [2: integer]}
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "15", type: 0}
-parse/0:   product: {name: "3", type: 1}
+parse/0:   ingredient: {name: "15", value: 15, type: 0, properties: [15: literal]}
+parse/0:   product: {name: "3", value: 3, type: 1, properties: [3: integer]}
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "16", type: 0}
-parse/0:   product: {name: "4", type: 1}
+parse/0:   ingredient: {name: "16", value: 16, type: 0, properties: [16: literal]}
+parse/0:   product: {name: "4", value: 4, type: 1, properties: [4: integer]}
 parse/0: instruction: 21
-parse/0:   ingredient: {name: "1", type: 6}
-parse/0:   ingredient: {name: "0", type: 0}
-parse/0:   product: {name: "5", type: 1}
+parse/0:   ingredient: {name: "1", value: 1, type: 6, properties: [1: integer-array]}
+parse/0:   ingredient: {name: "0", value: 0, type: 0, properties: [0: literal]}
+parse/0:   product: {name: "5", value: 5, type: 1, properties: [5: integer]}
 run/0: instruction main/0
 run/0: ingredient 0 is 3
 mem/0: storing in location 1
diff --git a/cpp/.traces/jump_backward b/cpp/.traces/jump_backward
index 48164312..e592f74c 100644
--- a/cpp/.traces/jump_backward
+++ b/cpp/.traces/jump_backward
@@ -1,9 +1,9 @@
 parse/0: instruction: 10
-parse/0:   ingredient: {name: "1", type: 0}
+parse/0:   ingredient: {name: "1", value: 1, type: 0, properties: [1: offset]}
 parse/0: instruction: 10
-parse/0:   ingredient: {name: "1", type: 0}
+parse/0:   ingredient: {name: "1", value: 1, type: 0, properties: [1: offset]}
 parse/0: instruction: 10
-parse/0:   ingredient: {name: "-2", type: 0}
+parse/0:   ingredient: {name: "-2", value: -2, type: 0, properties: [-2: offset]}
 run/0: instruction main/0
 run/0: ingredient 0 is 1
 run/0: instruction main/2
diff --git a/cpp/.traces/jump_can_skip_instructions b/cpp/.traces/jump_can_skip_instructions
index b8bc85e9..8372bbdb 100644
--- a/cpp/.traces/jump_can_skip_instructions
+++ b/cpp/.traces/jump_can_skip_instructions
@@ -1,7 +1,7 @@
 parse/0: instruction: 10
-parse/0:   ingredient: {name: "1", type: 0}
+parse/0:   ingredient: {name: "1", value: 1, type: 0, properties: [1: offset]}
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "1", type: 0}
-parse/0:   product: {name: "1", type: 1}
+parse/0:   ingredient: {name: "1", value: 1, type: 0, properties: [1: literal]}
+parse/0:   product: {name: "1", value: 1, type: 1, properties: [1: integer]}
 run/0: instruction main/0
 run/0: ingredient 0 is 1
diff --git a/cpp/.traces/jump_if b/cpp/.traces/jump_if
index 707dfd81..d126aa33 100644
--- a/cpp/.traces/jump_if
+++ b/cpp/.traces/jump_if
@@ -1,9 +1,9 @@
 parse/0: instruction: 11
-parse/0:   ingredient: {name: "999", type: 0}
-parse/0:   ingredient: {name: "1", type: 0}
+parse/0:   ingredient: {name: "999", value: 999, type: 0, properties: [999: literal]}
+parse/0:   ingredient: {name: "1", value: 1, type: 0, properties: [1: offset]}
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "1", type: 0}
-parse/0:   product: {name: "1", type: 1}
+parse/0:   ingredient: {name: "1", value: 1, type: 0, properties: [1: literal]}
+parse/0:   product: {name: "1", value: 1, type: 1, properties: [1: integer]}
 run/0: instruction main/0
 run/0: ingredient 0 is 999
 run/0: ingredient 1 is 1
diff --git a/cpp/.traces/jump_if_fallthrough b/cpp/.traces/jump_if_fallthrough
index f95c99bb..056b67d8 100644
--- a/cpp/.traces/jump_if_fallthrough
+++ b/cpp/.traces/jump_if_fallthrough
@@ -1,9 +1,9 @@
 parse/0: instruction: 11
-parse/0:   ingredient: {name: "0", type: 0}
-parse/0:   ingredient: {name: "1", type: 0}
+parse/0:   ingredient: {name: "0", value: 0, type: 0, properties: [0: literal]}
+parse/0:   ingredient: {name: "1", value: 1, type: 0, properties: [1: offset]}
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "1", type: 0}
-parse/0:   product: {name: "123", type: 1}
+parse/0:   ingredient: {name: "1", value: 1, type: 0, properties: [1: literal]}
+parse/0:   product: {name: "123", value: 123, type: 1, properties: [123: integer]}
 run/0: instruction main/0
 run/0: ingredient 0 is 0
 run/0: jump-if fell through
diff --git a/cpp/.traces/jump_unless b/cpp/.traces/jump_unless
index a0978ed4..d294faa3 100644
--- a/cpp/.traces/jump_unless
+++ b/cpp/.traces/jump_unless
@@ -1,9 +1,9 @@
 parse/0: instruction: 12
-parse/0:   ingredient: {name: "0", type: 0}
-parse/0:   ingredient: {name: "1", type: 0}
+parse/0:   ingredient: {name: "0", value: 0, type: 0, properties: [0: literal]}
+parse/0:   ingredient: {name: "1", value: 1, type: 0, properties: [1: offset]}
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "1", type: 0}
-parse/0:   product: {name: "1", type: 1}
+parse/0:   ingredient: {name: "1", value: 1, type: 0, properties: [1: literal]}
+parse/0:   product: {name: "1", value: 1, type: 1, properties: [1: integer]}
 run/0: instruction main/0
 run/0: ingredient 0 is 0
 run/0: ingredient 1 is 1
diff --git a/cpp/.traces/jump_unless_fallthrough b/cpp/.traces/jump_unless_fallthrough
index c1981cd7..59e87f18 100644
--- a/cpp/.traces/jump_unless_fallthrough
+++ b/cpp/.traces/jump_unless_fallthrough
@@ -1,9 +1,9 @@
 parse/0: instruction: 12
-parse/0:   ingredient: {name: "999", type: 0}
-parse/0:   ingredient: {name: "1", type: 0}
+parse/0:   ingredient: {name: "999", value: 999, type: 0, properties: [999: literal]}
+parse/0:   ingredient: {name: "1", value: 1, type: 0, properties: [1: offset]}
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "1", type: 0}
-parse/0:   product: {name: "123", type: 1}
+parse/0:   ingredient: {name: "1", value: 1, type: 0, properties: [1: literal]}
+parse/0:   product: {name: "123", value: 123, type: 1, properties: [123: integer]}
 run/0: instruction main/0
 run/0: ingredient 0 is 999
 run/0: jump-unless fell through
diff --git a/cpp/.traces/lesser_or_equal b/cpp/.traces/lesser_or_equal
index cfd78e25..aadc8a0c 100644
--- a/cpp/.traces/lesser_or_equal
+++ b/cpp/.traces/lesser_or_equal
@@ -1,13 +1,13 @@
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "32", type: 0}
-parse/0:   product: {name: "1", type: 1}
+parse/0:   ingredient: {name: "32", value: 32, type: 0, properties: [32: literal]}
+parse/0:   product: {name: "1", value: 1, type: 1, properties: [1: integer]}
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "33", type: 0}
-parse/0:   product: {name: "2", type: 1}
+parse/0:   ingredient: {name: "33", value: 33, type: 0, properties: [33: literal]}
+parse/0:   product: {name: "2", value: 2, type: 1, properties: [2: integer]}
 parse/0: instruction: 17
-parse/0:   ingredient: {name: "1", type: 1}
-parse/0:   ingredient: {name: "2", type: 1}
-parse/0:   product: {name: "3", type: 1}
+parse/0:   ingredient: {name: "1", value: 1, type: 1, properties: [1: integer]}
+parse/0:   ingredient: {name: "2", value: 2, type: 1, properties: [2: integer]}
+parse/0:   product: {name: "3", value: 3, type: 1, properties: [3: integer]}
 run/0: instruction main/0
 run/0: ingredient 0 is 32
 mem/0: storing in location 1
diff --git a/cpp/.traces/lesser_or_equal2 b/cpp/.traces/lesser_or_equal2
index 02874d2f..1beafca9 100644
--- a/cpp/.traces/lesser_or_equal2
+++ b/cpp/.traces/lesser_or_equal2
@@ -1,13 +1,13 @@
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "33", type: 0}
-parse/0:   product: {name: "1", type: 1}
+parse/0:   ingredient: {name: "33", value: 33, type: 0, properties: [33: literal]}
+parse/0:   product: {name: "1", value: 1, type: 1, properties: [1: integer]}
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "33", type: 0}
-parse/0:   product: {name: "2", type: 1}
+parse/0:   ingredient: {name: "33", value: 33, type: 0, properties: [33: literal]}
+parse/0:   product: {name: "2", value: 2, type: 1, properties: [2: integer]}
 parse/0: instruction: 17
-parse/0:   ingredient: {name: "1", type: 1}
-parse/0:   ingredient: {name: "2", type: 1}
-parse/0:   product: {name: "3", type: 1}
+parse/0:   ingredient: {name: "1", value: 1, type: 1, properties: [1: integer]}
+parse/0:   ingredient: {name: "2", value: 2, type: 1, properties: [2: integer]}
+parse/0:   product: {name: "3", value: 3, type: 1, properties: [3: integer]}
 run/0: instruction main/0
 run/0: ingredient 0 is 33
 mem/0: storing in location 1
diff --git a/cpp/.traces/lesser_or_equal3 b/cpp/.traces/lesser_or_equal3
index cc6828fc..9dcb4092 100644
--- a/cpp/.traces/lesser_or_equal3
+++ b/cpp/.traces/lesser_or_equal3
@@ -1,13 +1,13 @@
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "34", type: 0}
-parse/0:   product: {name: "1", type: 1}
+parse/0:   ingredient: {name: "34", value: 34, type: 0, properties: [34: literal]}
+parse/0:   product: {name: "1", value: 1, type: 1, properties: [1: integer]}
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "33", type: 0}
-parse/0:   product: {name: "2", type: 1}
+parse/0:   ingredient: {name: "33", value: 33, type: 0, properties: [33: literal]}
+parse/0:   product: {name: "2", value: 2, type: 1, properties: [2: integer]}
 parse/0: instruction: 17
-parse/0:   ingredient: {name: "1", type: 1}
-parse/0:   ingredient: {name: "2", type: 1}
-parse/0:   product: {name: "3", type: 1}
+parse/0:   ingredient: {name: "1", value: 1, type: 1, properties: [1: integer]}
+parse/0:   ingredient: {name: "2", value: 2, type: 1, properties: [2: integer]}
+parse/0:   product: {name: "3", value: 3, type: 1, properties: [3: integer]}
 run/0: instruction main/0
 run/0: ingredient 0 is 34
 mem/0: storing in location 1
diff --git a/cpp/.traces/lesser_than b/cpp/.traces/lesser_than
index d1d02a6d..2b7b2763 100644
--- a/cpp/.traces/lesser_than
+++ b/cpp/.traces/lesser_than
@@ -1,13 +1,13 @@
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "32", type: 0}
-parse/0:   product: {name: "1", type: 1}
+parse/0:   ingredient: {name: "32", value: 32, type: 0, properties: [32: literal]}
+parse/0:   product: {name: "1", value: 1, type: 1, properties: [1: integer]}
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "33", type: 0}
-parse/0:   product: {name: "2", type: 1}
+parse/0:   ingredient: {name: "33", value: 33, type: 0, properties: [33: literal]}
+parse/0:   product: {name: "2", value: 2, type: 1, properties: [2: integer]}
 parse/0: instruction: 15
-parse/0:   ingredient: {name: "1", type: 1}
-parse/0:   ingredient: {name: "2", type: 1}
-parse/0:   product: {name: "3", type: 1}
+parse/0:   ingredient: {name: "1", value: 1, type: 1, properties: [1: integer]}
+parse/0:   ingredient: {name: "2", value: 2, type: 1, properties: [2: integer]}
+parse/0:   product: {name: "3", value: 3, type: 1, properties: [3: integer]}
 run/0: instruction main/0
 run/0: ingredient 0 is 32
 mem/0: storing in location 1
diff --git a/cpp/.traces/lesser_than2 b/cpp/.traces/lesser_than2
index f0a593f5..6ee339a9 100644
--- a/cpp/.traces/lesser_than2
+++ b/cpp/.traces/lesser_than2
@@ -1,13 +1,13 @@
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "34", type: 0}
-parse/0:   product: {name: "1", type: 1}
+parse/0:   ingredient: {name: "34", value: 34, type: 0, properties: [34: literal]}
+parse/0:   product: {name: "1", value: 1, type: 1, properties: [1: integer]}
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "33", type: 0}
-parse/0:   product: {name: "2", type: 1}
+parse/0:   ingredient: {name: "33", value: 33, type: 0, properties: [33: literal]}
+parse/0:   product: {name: "2", value: 2, type: 1, properties: [2: integer]}
 parse/0: instruction: 15
-parse/0:   ingredient: {name: "1", type: 1}
-parse/0:   ingredient: {name: "2", type: 1}
-parse/0:   product: {name: "3", type: 1}
+parse/0:   ingredient: {name: "1", value: 1, type: 1, properties: [1: integer]}
+parse/0:   ingredient: {name: "2", value: 2, type: 1, properties: [2: integer]}
+parse/0:   product: {name: "3", value: 3, type: 1, properties: [3: integer]}
 run/0: instruction main/0
 run/0: ingredient 0 is 34
 mem/0: storing in location 1
diff --git a/cpp/.traces/multiply b/cpp/.traces/multiply
index d73c18ae..24ad673f 100644
--- a/cpp/.traces/multiply
+++ b/cpp/.traces/multiply
@@ -1,13 +1,13 @@
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "4", type: 0}
-parse/0:   product: {name: "1", type: 1}
+parse/0:   ingredient: {name: "4", value: 4, type: 0, properties: [4: literal]}
+parse/0:   product: {name: "1", value: 1, type: 1, properties: [1: integer]}
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "6", type: 0}
-parse/0:   product: {name: "2", type: 1}
+parse/0:   ingredient: {name: "6", value: 6, type: 0, properties: [6: literal]}
+parse/0:   product: {name: "2", value: 2, type: 1, properties: [2: integer]}
 parse/0: instruction: 4
-parse/0:   ingredient: {name: "1", type: 1}
-parse/0:   ingredient: {name: "2", type: 1}
-parse/0:   product: {name: "3", type: 1}
+parse/0:   ingredient: {name: "1", value: 1, type: 1, properties: [1: integer]}
+parse/0:   ingredient: {name: "2", value: 2, type: 1, properties: [2: integer]}
+parse/0:   product: {name: "3", value: 3, type: 1, properties: [3: integer]}
 run/0: instruction main/0
 run/0: ingredient 0 is 4
 mem/0: storing in location 1
diff --git a/cpp/.traces/multiply_literal b/cpp/.traces/multiply_literal
index 25449167..c190e1ef 100644
--- a/cpp/.traces/multiply_literal
+++ b/cpp/.traces/multiply_literal
@@ -1,7 +1,7 @@
 parse/0: instruction: 4
-parse/0:   ingredient: {name: "2", type: 0}
-parse/0:   ingredient: {name: "3", type: 0}
-parse/0:   product: {name: "1", type: 1}
+parse/0:   ingredient: {name: "2", value: 2, type: 0, properties: [2: literal]}
+parse/0:   ingredient: {name: "3", value: 3, type: 0, properties: [3: literal]}
+parse/0:   product: {name: "1", value: 1, type: 1, properties: [1: integer]}
 run/0: instruction main/0
 run/0: ingredient 0 is 2
 run/0: ingredient 1 is 3
diff --git a/cpp/.traces/next_ingredient b/cpp/.traces/next_ingredient
index 8ded3d51..ac0de44c 100644
--- a/cpp/.traces/next_ingredient
+++ b/cpp/.traces/next_ingredient
@@ -1,11 +1,11 @@
 parse/0: instruction: 25
-parse/0:   ingredient: {name: "2", type: 0}
+parse/0:   ingredient: {name: "2", value: 2, type: 0, properties: [2: literal]}
 parse/0: instruction: 22
-parse/0:   product: {name: "12", type: 1}
+parse/0:   product: {name: "12", value: 12, type: 1, properties: [12: integer]}
 parse/0: instruction: 2
-parse/0:   ingredient: {name: "1", type: 0}
-parse/0:   ingredient: {name: "12", type: 1}
-parse/0:   product: {name: "13", type: 1}
+parse/0:   ingredient: {name: "1", value: 1, type: 0, properties: [1: literal]}
+parse/0:   ingredient: {name: "12", value: 12, type: 1, properties: [12: integer]}
+parse/0:   product: {name: "13", value: 13, type: 1, properties: [13: integer]}
 run/0: instruction main/0
 run/0: instruction f/0
 run/0: product 0 is 2
diff --git a/cpp/.traces/not b/cpp/.traces/not
index 30f2b4b9..a5196acc 100644
--- a/cpp/.traces/not
+++ b/cpp/.traces/not
@@ -1,9 +1,9 @@
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "1", type: 0}
-parse/0:   product: {name: "1", type: 1}
+parse/0:   ingredient: {name: "1", value: 1, type: 0, properties: [1: literal]}
+parse/0:   product: {name: "1", value: 1, type: 1, properties: [1: integer]}
 parse/0: instruction: 9
-parse/0:   ingredient: {name: "1", type: 1}
-parse/0:   product: {name: "2", type: 1}
+parse/0:   ingredient: {name: "1", value: 1, type: 1, properties: [1: integer]}
+parse/0:   product: {name: "2", value: 2, type: 1, properties: [2: integer]}
 run/0: instruction main/0
 run/0: ingredient 0 is 1
 mem/0: storing in location 1
diff --git a/cpp/.traces/or b/cpp/.traces/or
index 3f266ea0..b9b9c0cf 100644
--- a/cpp/.traces/or
+++ b/cpp/.traces/or
@@ -1,13 +1,13 @@
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "1", type: 0}
-parse/0:   product: {name: "1", type: 1}
+parse/0:   ingredient: {name: "1", value: 1, type: 0, properties: [1: literal]}
+parse/0:   product: {name: "1", value: 1, type: 1, properties: [1: integer]}
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "0", type: 0}
-parse/0:   product: {name: "2", type: 1}
+parse/0:   ingredient: {name: "0", value: 0, type: 0, properties: [0: literal]}
+parse/0:   product: {name: "2", value: 2, type: 1, properties: [2: integer]}
 parse/0: instruction: 8
-parse/0:   ingredient: {name: "1", type: 1}
-parse/0:   ingredient: {name: "2", type: 1}
-parse/0:   product: {name: "3", type: 1}
+parse/0:   ingredient: {name: "1", value: 1, type: 1, properties: [1: integer]}
+parse/0:   ingredient: {name: "2", value: 2, type: 1, properties: [2: integer]}
+parse/0:   product: {name: "3", value: 3, type: 1, properties: [3: integer]}
 run/0: instruction main/0
 run/0: ingredient 0 is 1
 mem/0: storing in location 1
diff --git a/cpp/.traces/parse_comment_after_instruction b/cpp/.traces/parse_comment_after_instruction
index d20319d2..2d13cf1d 100644
--- a/cpp/.traces/parse_comment_after_instruction
+++ b/cpp/.traces/parse_comment_after_instruction
@@ -1,3 +1,3 @@
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "23", type: 0}
-parse/0:   product: {name: "1", type: 1}
+parse/0:   ingredient: {name: "23", value: 23, type: 0, properties: [23: literal]}
+parse/0:   product: {name: "1", value: 1, type: 1, properties: [1: integer]}
diff --git a/cpp/.traces/parse_comment_amongst_instruction b/cpp/.traces/parse_comment_amongst_instruction
index d20319d2..2d13cf1d 100644
--- a/cpp/.traces/parse_comment_amongst_instruction
+++ b/cpp/.traces/parse_comment_amongst_instruction
@@ -1,3 +1,3 @@
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "23", type: 0}
-parse/0:   product: {name: "1", type: 1}
+parse/0:   ingredient: {name: "23", value: 23, type: 0, properties: [23: literal]}
+parse/0:   product: {name: "1", value: 1, type: 1, properties: [1: integer]}
diff --git a/cpp/.traces/parse_comment_amongst_instruction2 b/cpp/.traces/parse_comment_amongst_instruction2
index d20319d2..2d13cf1d 100644
--- a/cpp/.traces/parse_comment_amongst_instruction2
+++ b/cpp/.traces/parse_comment_amongst_instruction2
@@ -1,3 +1,3 @@
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "23", type: 0}
-parse/0:   product: {name: "1", type: 1}
+parse/0:   ingredient: {name: "23", value: 23, type: 0, properties: [23: literal]}
+parse/0:   product: {name: "1", value: 1, type: 1, properties: [1: integer]}
diff --git a/cpp/.traces/parse_comment_amongst_instruction3 b/cpp/.traces/parse_comment_amongst_instruction3
index 7b755615..6f7f2dce 100644
--- a/cpp/.traces/parse_comment_amongst_instruction3
+++ b/cpp/.traces/parse_comment_amongst_instruction3
@@ -1,6 +1,6 @@
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "23", type: 0}
-parse/0:   product: {name: "1", type: 1}
+parse/0:   ingredient: {name: "23", value: 23, type: 0, properties: [23: literal]}
+parse/0:   product: {name: "1", value: 1, type: 1, properties: [1: integer]}
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "23", type: 0}
-parse/0:   product: {name: "2", type: 1}
+parse/0:   ingredient: {name: "23", value: 23, type: 0, properties: [23: literal]}
+parse/0:   product: {name: "2", value: 2, type: 1, properties: [2: integer]}
diff --git a/cpp/.traces/parse_comment_outside_recipe b/cpp/.traces/parse_comment_outside_recipe
index d20319d2..2d13cf1d 100644
--- a/cpp/.traces/parse_comment_outside_recipe
+++ b/cpp/.traces/parse_comment_outside_recipe
@@ -1,3 +1,3 @@
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "23", type: 0}
-parse/0:   product: {name: "1", type: 1}
+parse/0:   ingredient: {name: "23", value: 23, type: 0, properties: [23: literal]}
+parse/0:   product: {name: "1", value: 1, type: 1, properties: [1: integer]}
diff --git a/cpp/.traces/parse_multiple_ingredients b/cpp/.traces/parse_multiple_ingredients
index ee0c09ba..e40fb659 100644
--- a/cpp/.traces/parse_multiple_ingredients
+++ b/cpp/.traces/parse_multiple_ingredients
@@ -1,5 +1,5 @@
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "23", type: 0}
-parse/0:   ingredient: {name: "4", type: 1}
-parse/0:   product: {name: "1", type: 1}
-parse/0:   product: {name: "2", type: 1}
+parse/0:   ingredient: {name: "23", value: 23, type: 0, properties: [23: literal]}
+parse/0:   ingredient: {name: "4", value: 4, type: 1, properties: [4: integer]}
+parse/0:   product: {name: "1", value: 1, type: 1, properties: [1: integer]}
+parse/0:   product: {name: "2", value: 2, type: 1, properties: [2: integer]}
diff --git a/cpp/.traces/parse_multiple_products b/cpp/.traces/parse_multiple_products
index f8d5050e..47be43c4 100644
--- a/cpp/.traces/parse_multiple_products
+++ b/cpp/.traces/parse_multiple_products
@@ -1,4 +1,4 @@
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "23", type: 0}
-parse/0:   product: {name: "1", type: 1}
-parse/0:   product: {name: "2", type: 1}
+parse/0:   ingredient: {name: "23", value: 23, type: 0, properties: [23: literal]}
+parse/0:   product: {name: "1", value: 1, type: 1, properties: [1: integer]}
+parse/0:   product: {name: "2", value: 2, type: 1, properties: [2: integer]}
diff --git a/cpp/.traces/parse_multiple_types b/cpp/.traces/parse_multiple_types
index 319aad1f..1b6903cd 100644
--- a/cpp/.traces/parse_multiple_types
+++ b/cpp/.traces/parse_multiple_types
@@ -1,5 +1,5 @@
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "23", type: 0}
-parse/0:   ingredient: {name: "4", type: 1}
-parse/0:   product: {name: "1", type: 1}
-parse/0:   product: {name: "2", type: 2-1}
+parse/0:   ingredient: {name: "23", value: 23, type: 0, properties: [23: literal]}
+parse/0:   ingredient: {name: "4", value: 4, type: 1, properties: [4: integer]}
+parse/0:   product: {name: "1", value: 1, type: 1, properties: [1: integer]}
+parse/0:   product: {name: "2", value: 2, type: 2-1, properties: [2: address:integer]}
diff --git a/cpp/.traces/parse_properties b/cpp/.traces/parse_properties
index c8c059b4..01bfb40a 100644
--- a/cpp/.traces/parse_properties
+++ b/cpp/.traces/parse_properties
@@ -1,3 +1,3 @@
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "23", type: 0}
-parse/0:   product: {name: "1", type: 1-2, property: deref:}
+parse/0:   ingredient: {name: "23", value: 23, type: 0, properties: [23: literal]}
+parse/0:   product: {name: "1", value: 1, type: 1-2, properties: [1: integer:address, deref: ]}
diff --git a/cpp/.traces/reply b/cpp/.traces/reply
index 6b7b7417..170c4dcf 100644
--- a/cpp/.traces/reply
+++ b/cpp/.traces/reply
@@ -1,16 +1,16 @@
 parse/0: instruction: 25
-parse/0:   ingredient: {name: "2", type: 0}
-parse/0:   product: {name: "3", type: 1}
-parse/0:   product: {name: "4", type: 1}
+parse/0:   ingredient: {name: "2", value: 2, type: 0, properties: [2: literal]}
+parse/0:   product: {name: "3", value: 3, type: 1, properties: [3: integer]}
+parse/0:   product: {name: "4", value: 4, type: 1, properties: [4: integer]}
 parse/0: instruction: 22
-parse/0:   product: {name: "12", type: 1}
+parse/0:   product: {name: "12", value: 12, type: 1, properties: [12: integer]}
 parse/0: instruction: 2
-parse/0:   ingredient: {name: "1", type: 0}
-parse/0:   ingredient: {name: "12", type: 1}
-parse/0:   product: {name: "13", type: 1}
+parse/0:   ingredient: {name: "1", value: 1, type: 0, properties: [1: literal]}
+parse/0:   ingredient: {name: "12", value: 12, type: 1, properties: [12: integer]}
+parse/0:   product: {name: "13", value: 13, type: 1, properties: [13: integer]}
 parse/0: instruction: 23
-parse/0:   ingredient: {name: "12", type: 1}
-parse/0:   ingredient: {name: "13", type: 1}
+parse/0:   ingredient: {name: "12", value: 12, type: 1, properties: [12: integer]}
+parse/0:   ingredient: {name: "13", value: 13, type: 1, properties: [13: integer]}
 run/0: instruction main/0
 run/0: instruction f/0
 run/0: product 0 is 2
diff --git a/cpp/.traces/store_indirect b/cpp/.traces/store_indirect
index da8f4aff..97ba5164 100644
--- a/cpp/.traces/store_indirect
+++ b/cpp/.traces/store_indirect
@@ -1,9 +1,9 @@
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "2", type: 0}
-parse/0:   product: {name: "1", type: 2-1}
+parse/0:   ingredient: {name: "2", value: 2, type: 0, properties: [2: literal]}
+parse/0:   product: {name: "1", value: 1, type: 2-1, properties: [1: address:integer]}
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "34", type: 0}
-parse/0:   product: {name: "1", type: 2-1, property: deref:}
+parse/0:   ingredient: {name: "34", value: 34, type: 0, properties: [34: literal]}
+parse/0:   product: {name: "1", value: 1, type: 2-1, properties: [1: address:integer, deref: ]}
 run/0: instruction main/0
 run/0: ingredient 0 is 2
 mem/0: storing in location 1
diff --git a/cpp/.traces/subtract b/cpp/.traces/subtract
index 72497a6e..5f1a946a 100644
--- a/cpp/.traces/subtract
+++ b/cpp/.traces/subtract
@@ -1,13 +1,13 @@
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "23", type: 0}
-parse/0:   product: {name: "1", type: 1}
+parse/0:   ingredient: {name: "23", value: 23, type: 0, properties: [23: literal]}
+parse/0:   product: {name: "1", value: 1, type: 1, properties: [1: integer]}
 parse/0: instruction: 1
-parse/0:   ingredient: {name: "34", type: 0}
-parse/0:   product: {name: "2", type: 1}
+parse/0:   ingredient: {name: "34", value: 34, type: 0, properties: [34: literal]}
+parse/0:   product: {name: "2", value: 2, type: 1, properties: [2: integer]}
 parse/0: instruction: 3
-parse/0:   ingredient: {name: "1", type: 1}
-parse/0:   ingredient: {name: "2", type: 1}
-parse/0:   product: {name: "3", type: 1}
+parse/0:   ingredient: {name: "1", value: 1, type: 1, properties: [1: integer]}
+parse/0:   ingredient: {name: "2", value: 2, type: 1, properties: [2: integer]}
+parse/0:   product: {name: "3", value: 3, type: 1, properties: [3: integer]}
 run/0: instruction main/0
 run/0: ingredient 0 is 23
 mem/0: storing in location 1
diff --git a/cpp/.traces/subtract_literal b/cpp/.traces/subtract_literal
index c4981839..48c3866a 100644
--- a/cpp/.traces/subtract_literal
+++ b/cpp/.traces/subtract_literal
@@ -1,7 +1,7 @@
 parse/0: instruction: 3
-parse/0:   ingredient: {name: "5", type: 0}
-parse/0:   ingredient: {name: "2", type: 0}
-parse/0:   product: {name: "1", type: 1}
+parse/0:   ingredient: {name: "5", value: 5, type: 0, properties: [5: literal]}
+parse/0:   ingredient: {name: "2", value: 2, type: 0, properties: [2: literal]}
+parse/0:   product: {name: "1", value: 1, type: 1, properties: [1: integer]}
 run/0: instruction main/0
 run/0: ingredient 0 is 5
 run/0: ingredient 1 is 2