diff options
Diffstat (limited to 'cpp')
-rw-r--r-- | cpp/.traces/array_length | 2 | ||||
-rw-r--r-- | cpp/.traces/brace_conversion | 2 | ||||
-rw-r--r-- | cpp/.traces/break_cascading | 4 | ||||
-rw-r--r-- | cpp/.traces/break_cascading2 | 4 | ||||
-rw-r--r-- | cpp/.traces/break_empty_block | 2 | ||||
-rw-r--r-- | cpp/.traces/break_if | 4 | ||||
-rw-r--r-- | cpp/.traces/break_label | 2 | ||||
-rw-r--r-- | cpp/.traces/break_nested | 2 | ||||
-rw-r--r-- | cpp/.traces/break_nested_degenerate | 2 | ||||
-rw-r--r-- | cpp/.traces/break_nested_degenerate2 | 2 | ||||
-rw-r--r-- | cpp/.traces/break_unless | 2 | ||||
-rw-r--r-- | cpp/.traces/closure | 12 | ||||
-rw-r--r-- | cpp/.traces/convert_names_transforms_container_elements | 4 | ||||
-rw-r--r-- | cpp/.traces/factorial | 4 | ||||
-rw-r--r-- | cpp/.traces/get | 2 | ||||
-rw-r--r-- | cpp/.traces/get_address | 2 | ||||
-rw-r--r-- | cpp/.traces/get_address_indirect | 2 | ||||
-rw-r--r-- | cpp/.traces/get_handles_nested_container_elements | 2 | ||||
-rw-r--r-- | cpp/.traces/get_indirect | 2 | ||||
-rw-r--r-- | cpp/.traces/include_nonderef_properties | 2 | ||||
-rw-r--r-- | cpp/.traces/index | 2 | ||||
-rw-r--r-- | cpp/.traces/index_address | 2 | ||||
-rw-r--r-- | cpp/.traces/index_direct_offset | 2 | ||||
-rw-r--r-- | cpp/.traces/index_indirect | 2 | ||||
-rw-r--r-- | cpp/.traces/loop | 2 | ||||
-rw-r--r-- | cpp/.traces/loop_nested | 2 | ||||
-rw-r--r-- | cpp/.traces/loop_unless | 2 | ||||
-rw-r--r-- | cpp/.traces/new | 4 | ||||
-rw-r--r-- | cpp/.traces/new_array | 4 | ||||
-rw-r--r-- | cpp/.traces/new_string | 14 | ||||
-rw-r--r-- | cpp/.traces/next_ingredient | 2 | ||||
-rw-r--r-- | cpp/.traces/reply | 4 | ||||
-rw-r--r-- | cpp/.traces/reply_container | 4 | ||||
-rw-r--r-- | cpp/.traces/string-equal-common-lengths-but-distinct | 38 | ||||
-rw-r--r-- | cpp/.traces/string-equal-distinct-lengths | 14 | ||||
-rw-r--r-- | cpp/.traces/string-equal-identical | 38 | ||||
-rw-r--r-- | cpp/.traces/string-equal-reflexive | 34 | ||||
-rw-r--r-- | cpp/.traces/string-equal-with-empty | 14 | ||||
-rw-r--r-- | cpp/.traces/string_literal | 9 | ||||
-rw-r--r-- | cpp/.traces/string_literal_nested | 9 | ||||
-rw-r--r-- | cpp/.traces/string_literal_with_colons | 9 | ||||
-rw-r--r-- | cpp/.traces/trace | 2 | ||||
-rw-r--r-- | cpp/.traces/trace_in_mu | 2 | ||||
-rw-r--r-- | cpp/013literal_string (renamed from cpp/035literal_string) | 28 | ||||
-rw-r--r-- | cpp/020run (renamed from cpp/013run) | 0 | ||||
-rw-r--r-- | cpp/021arithmetic (renamed from cpp/014arithmetic) | 0 | ||||
-rw-r--r-- | cpp/022boolean (renamed from cpp/015boolean) | 0 | ||||
-rw-r--r-- | cpp/023jump (renamed from cpp/016jump) | 0 | ||||
-rw-r--r-- | cpp/024compare (renamed from cpp/017compare) | 0 | ||||
-rw-r--r-- | cpp/025trace (renamed from cpp/042trace) | 0 | ||||
-rw-r--r-- | cpp/030container (renamed from cpp/020container) | 0 | ||||
-rw-r--r-- | cpp/031address (renamed from cpp/021address) | 0 | ||||
-rw-r--r-- | cpp/032array (renamed from cpp/022array) | 0 | ||||
-rw-r--r-- | cpp/033length (renamed from cpp/023length) | 0 | ||||
-rw-r--r-- | cpp/035call (renamed from cpp/025call) | 0 | ||||
-rw-r--r-- | cpp/036call_ingredient (renamed from cpp/026call_ingredient) | 0 | ||||
-rw-r--r-- | cpp/037call_reply (renamed from cpp/027call_reply) | 0 | ||||
-rw-r--r-- | cpp/040brace (renamed from cpp/030brace) | 0 | ||||
-rw-r--r-- | cpp/041name (renamed from cpp/031name) | 0 | ||||
-rw-r--r-- | cpp/042new (renamed from cpp/032new) | 28 | ||||
-rw-r--r-- | cpp/043space (renamed from cpp/033space) | 0 | ||||
-rw-r--r-- | cpp/044space_surround (renamed from cpp/034space_surround) | 0 | ||||
-rw-r--r-- | cpp/050scenario (renamed from cpp/040scenario) | 0 | ||||
-rw-r--r-- | cpp/051scenario_test.mu (renamed from cpp/041scenario_test.mu) | 0 | ||||
-rw-r--r-- | cpp/052scenario_trace (renamed from cpp/043scenario_trace) | 0 | ||||
-rw-r--r-- | cpp/053scenario_trace_test.mu (renamed from cpp/044scenario_trace_test.mu) | 0 | ||||
-rw-r--r-- | cpp/054closure_name (renamed from cpp/045closure_name) | 0 | ||||
-rw-r--r-- | cpp/060string.mu (renamed from cpp/050string.mu) | 0 |
68 files changed, 157 insertions, 174 deletions
diff --git a/cpp/.traces/array_length b/cpp/.traces/array_length index 65ae6484..5484570d 100644 --- a/cpp/.traces/array_length +++ b/cpp/.traces/array_length @@ -10,7 +10,7 @@ parse/0: product: {name: "3", value: 0, type: 1, properties: ["3": "integer"]} parse/0: instruction: 1 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: 22 +parse/0: instruction: 23 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 diff --git a/cpp/.traces/brace_conversion b/cpp/.traces/brace_conversion index c9444a7c..6920866e 100644 --- a/cpp/.traces/brace_conversion +++ b/cpp/.traces/brace_conversion @@ -1,5 +1,5 @@ parse/0: label: { -parse/0: instruction: 25 +parse/0: instruction: 26 parse/0: instruction: 1 parse/0: ingredient: {name: "0", value: 0, type: 0, properties: ["0": "literal"]} parse/0: product: {name: "1", value: 0, type: 1, properties: ["1": "integer"]} diff --git a/cpp/.traces/break_cascading b/cpp/.traces/break_cascading index 06127e3d..1a516b99 100644 --- a/cpp/.traces/break_cascading +++ b/cpp/.traces/break_cascading @@ -2,10 +2,10 @@ parse/0: instruction: 1 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: 25 +parse/0: instruction: 26 parse/0: label: } parse/0: label: { -parse/0: instruction: 25 +parse/0: instruction: 26 parse/0: label: } brace/0: 1000: push (open, 1) brace/0: push (close, 3) diff --git a/cpp/.traces/break_cascading2 b/cpp/.traces/break_cascading2 index 2cd8aea6..327e3ec3 100644 --- a/cpp/.traces/break_cascading2 +++ b/cpp/.traces/break_cascading2 @@ -5,13 +5,13 @@ parse/0: instruction: 1 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: 25 +parse/0: instruction: 26 parse/0: instruction: 1 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: 25 +parse/0: instruction: 26 parse/0: label: } brace/0: 1000: push (open, 2) brace/0: push (close, 5) diff --git a/cpp/.traces/break_empty_block b/cpp/.traces/break_empty_block index 3605ac83..2771f904 100644 --- a/cpp/.traces/break_empty_block +++ b/cpp/.traces/break_empty_block @@ -2,7 +2,7 @@ parse/0: instruction: 1 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: 25 +parse/0: instruction: 26 parse/0: label: } brace/0: 1000: push (open, 1) brace/0: push (close, 3) diff --git a/cpp/.traces/break_if b/cpp/.traces/break_if index d5f5d0e9..3ea882a3 100644 --- a/cpp/.traces/break_if +++ b/cpp/.traces/break_if @@ -5,14 +5,14 @@ parse/0: instruction: 1 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: 26 +parse/0: instruction: 27 parse/0: ingredient: {name: "2", value: 0, type: 1, properties: ["2": "integer"]} parse/0: instruction: 1 parse/0: ingredient: {name: "0", value: 0, type: 0, properties: ["0": "literal"]} parse/0: product: {name: "3", value: 0, type: 1, properties: ["3": "integer"]} parse/0: label: } parse/0: label: { -parse/0: instruction: 25 +parse/0: instruction: 26 parse/0: label: } brace/0: 1000: push (open, 2) brace/0: push (close, 5) diff --git a/cpp/.traces/break_label b/cpp/.traces/break_label index fe03e6c2..c73d8678 100644 --- a/cpp/.traces/break_label +++ b/cpp/.traces/break_label @@ -2,7 +2,7 @@ parse/0: instruction: 1 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: 25 +parse/0: instruction: 26 parse/0: ingredient: {name: "+foo", value: 0, type: 0, properties: ["+foo": "offset"]} parse/0: label: } brace/0: 1000: push (open, 1) diff --git a/cpp/.traces/break_nested b/cpp/.traces/break_nested index ac8c5a30..ef268b47 100644 --- a/cpp/.traces/break_nested +++ b/cpp/.traces/break_nested @@ -5,7 +5,7 @@ parse/0: label: { parse/0: instruction: 1 parse/0: ingredient: {name: "0", value: 0, type: 0, properties: ["0": "literal"]} parse/0: product: {name: "2", value: 0, type: 1, properties: ["2": "integer"]} -parse/0: instruction: 25 +parse/0: instruction: 26 parse/0: label: { parse/0: instruction: 1 parse/0: ingredient: {name: "0", value: 0, type: 0, properties: ["0": "literal"]} diff --git a/cpp/.traces/break_nested_degenerate b/cpp/.traces/break_nested_degenerate index c2c5d1a2..6540bc51 100644 --- a/cpp/.traces/break_nested_degenerate +++ b/cpp/.traces/break_nested_degenerate @@ -5,7 +5,7 @@ parse/0: label: { parse/0: instruction: 1 parse/0: ingredient: {name: "0", value: 0, type: 0, properties: ["0": "literal"]} parse/0: product: {name: "2", value: 0, type: 1, properties: ["2": "integer"]} -parse/0: instruction: 25 +parse/0: instruction: 26 parse/0: label: { parse/0: label: } parse/0: instruction: 1 diff --git a/cpp/.traces/break_nested_degenerate2 b/cpp/.traces/break_nested_degenerate2 index dcbe62ad..a1ee2035 100644 --- a/cpp/.traces/break_nested_degenerate2 +++ b/cpp/.traces/break_nested_degenerate2 @@ -5,7 +5,7 @@ parse/0: label: { parse/0: instruction: 1 parse/0: ingredient: {name: "0", value: 0, type: 0, properties: ["0": "literal"]} parse/0: product: {name: "2", value: 0, type: 1, properties: ["2": "integer"]} -parse/0: instruction: 25 +parse/0: instruction: 26 parse/0: label: { parse/0: label: } parse/0: label: } diff --git a/cpp/.traces/break_unless b/cpp/.traces/break_unless index 03fd8a90..7d61dded 100644 --- a/cpp/.traces/break_unless +++ b/cpp/.traces/break_unless @@ -5,7 +5,7 @@ parse/0: instruction: 1 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: 27 +parse/0: instruction: 28 parse/0: ingredient: {name: "2", value: 0, type: 1, properties: ["2": "integer"]} parse/0: instruction: 1 parse/0: ingredient: {name: "0", value: 0, type: 0, properties: ["0": "literal"]} diff --git a/cpp/.traces/closure b/cpp/.traces/closure index f5a41ee9..0f5d2161 100644 --- a/cpp/.traces/closure +++ b/cpp/.traces/closure @@ -1,4 +1,4 @@ -parse/0: instruction: 31 +parse/0: instruction: 32 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-0, properties: ["default-space": "address":"space"]} @@ -10,7 +10,7 @@ parse/0: product: {name: "2", value: 0, type: 1, properties: ["2": "integer", parse/0: instruction: 1002 parse/0: ingredient: {name: "1", value: 0, type: 2-0, properties: ["1": "address":"space", "names": "init-counter"]} parse/0: product: {name: "3", value: 0, type: 1, properties: ["3": "integer", "raw": ]} -parse/0: instruction: 31 +parse/0: instruction: 32 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-0, properties: ["default-space": "address":"space"]} @@ -20,13 +20,13 @@ parse/0: product: {name: "x", value: 0, type: 1, properties: ["x": "integer"]} parse/0: instruction: 1 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: 24 +parse/0: instruction: 25 parse/0: ingredient: {name: "default-space", value: 0, type: 2-0, properties: ["default-space": "address":"space"]} -parse/0: instruction: 31 +parse/0: instruction: 32 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-0, properties: ["default-space": "address":"space"]} -parse/0: instruction: 23 +parse/0: instruction: 24 parse/0: product: {name: "0", value: 0, type: 2-0, properties: ["0": "address":"space", "names": "init-counter"]} parse/0: instruction: 2 parse/0: ingredient: {name: "y", value: 0, type: 1, properties: ["y": "integer", "space": "1"]} @@ -35,7 +35,7 @@ parse/0: product: {name: "y", value: 0, type: 1, properties: ["y": "integer", parse/0: instruction: 1 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: 24 +parse/0: instruction: 25 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 diff --git a/cpp/.traces/convert_names_transforms_container_elements b/cpp/.traces/convert_names_transforms_container_elements index 0dd4f7e8..c86b6d2d 100644 --- a/cpp/.traces/convert_names_transforms_container_elements +++ b/cpp/.traces/convert_names_transforms_container_elements @@ -1,8 +1,8 @@ -parse/0: instruction: 18 +parse/0: instruction: 19 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: 18 +parse/0: instruction: 19 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"]} diff --git a/cpp/.traces/factorial b/cpp/.traces/factorial index 9a7f261e..d4ea095b 100644 --- a/cpp/.traces/factorial +++ b/cpp/.traces/factorial @@ -9,7 +9,7 @@ parse/0: instruction: 13 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: 26 +parse/0: instruction: 27 parse/0: ingredient: {name: "3", value: 0, type: 3, properties: ["3": "boolean"]} parse/0: instruction: 4 parse/0: ingredient: {name: "2", value: 0, type: 1, properties: ["2": "integer"]} @@ -19,7 +19,7 @@ parse/0: instruction: 3 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: 28 +parse/0: instruction: 29 parse/0: label: } parse/0: instruction: 1 parse/0: ingredient: {name: "2", value: 0, type: 1, properties: ["2": "integer"]} diff --git a/cpp/.traces/get b/cpp/.traces/get index 39778dbf..60d738da 100644 --- a/cpp/.traces/get +++ b/cpp/.traces/get @@ -4,7 +4,7 @@ parse/0: product: {name: "12", value: 0, type: 1, properties: ["12": "integer" parse/0: instruction: 1 parse/0: ingredient: {name: "35", value: 0, type: 0, properties: ["35": "literal"]} parse/0: product: {name: "13", value: 0, type: 1, properties: ["13": "integer"]} -parse/0: instruction: 18 +parse/0: instruction: 19 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"]} diff --git a/cpp/.traces/get_address b/cpp/.traces/get_address index 1a37c192..f36d4b05 100644 --- a/cpp/.traces/get_address +++ b/cpp/.traces/get_address @@ -4,7 +4,7 @@ parse/0: product: {name: "12", value: 0, type: 1, properties: ["12": "integer" parse/0: instruction: 1 parse/0: ingredient: {name: "35", value: 0, type: 0, properties: ["35": "literal"]} parse/0: product: {name: "13", value: 0, type: 1, properties: ["13": "integer"]} -parse/0: instruction: 19 +parse/0: instruction: 20 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"]} diff --git a/cpp/.traces/get_address_indirect b/cpp/.traces/get_address_indirect index 2f2af58b..bb74ab61 100644 --- a/cpp/.traces/get_address_indirect +++ b/cpp/.traces/get_address_indirect @@ -7,7 +7,7 @@ parse/0: product: {name: "2", value: 0, type: 1, properties: ["2": "integer"]} parse/0: instruction: 1 parse/0: ingredient: {name: "35", value: 0, type: 0, properties: ["35": "literal"]} parse/0: product: {name: "3", value: 0, type: 1, properties: ["3": "integer"]} -parse/0: instruction: 19 +parse/0: instruction: 20 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"]} diff --git a/cpp/.traces/get_handles_nested_container_elements b/cpp/.traces/get_handles_nested_container_elements index 4334fc26..5997b167 100644 --- a/cpp/.traces/get_handles_nested_container_elements +++ b/cpp/.traces/get_handles_nested_container_elements @@ -7,7 +7,7 @@ parse/0: product: {name: "13", value: 0, type: 1, properties: ["13": "integer" parse/0: instruction: 1 parse/0: ingredient: {name: "36", value: 0, type: 0, properties: ["36": "literal"]} parse/0: product: {name: "14", value: 0, type: 1, properties: ["14": "integer"]} -parse/0: instruction: 18 +parse/0: instruction: 19 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"]} diff --git a/cpp/.traces/get_indirect b/cpp/.traces/get_indirect index 98e9d9c6..b9328f71 100644 --- a/cpp/.traces/get_indirect +++ b/cpp/.traces/get_indirect @@ -7,7 +7,7 @@ parse/0: product: {name: "2", value: 0, type: 1, properties: ["2": "integer"]} parse/0: instruction: 1 parse/0: ingredient: {name: "35", value: 0, type: 0, properties: ["35": "literal"]} parse/0: product: {name: "3", value: 0, type: 1, properties: ["3": "integer"]} -parse/0: instruction: 18 +parse/0: instruction: 19 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"]} diff --git a/cpp/.traces/include_nonderef_properties b/cpp/.traces/include_nonderef_properties index 835c973a..b7f103fc 100644 --- a/cpp/.traces/include_nonderef_properties +++ b/cpp/.traces/include_nonderef_properties @@ -7,7 +7,7 @@ parse/0: product: {name: "2", value: 0, type: 1, properties: ["2": "integer"]} parse/0: instruction: 1 parse/0: ingredient: {name: "35", value: 0, type: 0, properties: ["35": "literal"]} parse/0: product: {name: "3", value: 0, type: 1, properties: ["3": "integer"]} -parse/0: instruction: 18 +parse/0: instruction: 19 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"]} diff --git a/cpp/.traces/index b/cpp/.traces/index index e9f3dd08..c5114af2 100644 --- a/cpp/.traces/index +++ b/cpp/.traces/index @@ -10,7 +10,7 @@ parse/0: product: {name: "3", value: 0, type: 1, properties: ["3": "integer"]} parse/0: instruction: 1 parse/0: ingredient: {name: "16", value: 0, type: 0, properties: ["16": "literal"]} parse/0: product: {name: "4", value: 0, type: 1, properties: ["4": "integer"]} -parse/0: instruction: 20 +parse/0: instruction: 21 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"]} diff --git a/cpp/.traces/index_address b/cpp/.traces/index_address index ca503f99..464a4565 100644 --- a/cpp/.traces/index_address +++ b/cpp/.traces/index_address @@ -10,7 +10,7 @@ parse/0: product: {name: "3", value: 0, type: 1, properties: ["3": "integer"]} parse/0: instruction: 1 parse/0: ingredient: {name: "16", value: 0, type: 0, properties: ["16": "literal"]} parse/0: product: {name: "4", value: 0, type: 1, properties: ["4": "integer"]} -parse/0: instruction: 21 +parse/0: instruction: 22 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"]} diff --git a/cpp/.traces/index_direct_offset b/cpp/.traces/index_direct_offset index 67bbbde6..021f8452 100644 --- a/cpp/.traces/index_direct_offset +++ b/cpp/.traces/index_direct_offset @@ -13,7 +13,7 @@ parse/0: product: {name: "4", value: 0, type: 1, properties: ["4": "integer"]} parse/0: instruction: 1 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: 20 +parse/0: instruction: 21 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"]} diff --git a/cpp/.traces/index_indirect b/cpp/.traces/index_indirect index 0b3bb283..e1f6c191 100644 --- a/cpp/.traces/index_indirect +++ b/cpp/.traces/index_indirect @@ -13,7 +13,7 @@ parse/0: product: {name: "4", value: 0, type: 1, properties: ["4": "integer"]} parse/0: instruction: 1 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: 20 +parse/0: instruction: 21 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"]} diff --git a/cpp/.traces/loop b/cpp/.traces/loop index cf494543..ba71abf6 100644 --- a/cpp/.traces/loop +++ b/cpp/.traces/loop @@ -8,7 +8,7 @@ parse/0: label: { parse/0: instruction: 1 parse/0: ingredient: {name: "0", value: 0, type: 0, properties: ["0": "literal"]} parse/0: product: {name: "3", value: 0, type: 1, properties: ["3": "integer"]} -parse/0: instruction: 28 +parse/0: instruction: 29 parse/0: label: } brace/0: 1000: push (open, 2) brace/0: push (close, 5) diff --git a/cpp/.traces/loop_nested b/cpp/.traces/loop_nested index d6d78346..3b9fb46f 100644 --- a/cpp/.traces/loop_nested +++ b/cpp/.traces/loop_nested @@ -10,7 +10,7 @@ parse/0: instruction: 1 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: 29 +parse/0: instruction: 30 parse/0: ingredient: {name: "4", value: 0, type: 3, properties: ["4": "boolean"]} parse/0: instruction: 1 parse/0: ingredient: {name: "0", value: 0, type: 0, properties: ["0": "literal"]} diff --git a/cpp/.traces/loop_unless b/cpp/.traces/loop_unless index 9d5f5892..b26ad4c5 100644 --- a/cpp/.traces/loop_unless +++ b/cpp/.traces/loop_unless @@ -5,7 +5,7 @@ parse/0: instruction: 1 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: 30 +parse/0: instruction: 31 parse/0: ingredient: {name: "2", value: 0, type: 1, properties: ["2": "integer"]} parse/0: instruction: 1 parse/0: ingredient: {name: "0", value: 0, type: 0, properties: ["0": "literal"]} diff --git a/cpp/.traces/new b/cpp/.traces/new index 5e148caf..965d0333 100644 --- a/cpp/.traces/new +++ b/cpp/.traces/new @@ -1,7 +1,7 @@ -parse/0: instruction: 31 +parse/0: instruction: 32 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: 31 +parse/0: instruction: 32 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: 13 diff --git a/cpp/.traces/new_array b/cpp/.traces/new_array index a480b46d..d41cc26b 100644 --- a/cpp/.traces/new_array +++ b/cpp/.traces/new_array @@ -1,8 +1,8 @@ -parse/0: instruction: 31 +parse/0: instruction: 32 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: 31 +parse/0: instruction: 32 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: 3 diff --git a/cpp/.traces/new_string b/cpp/.traces/new_string index fe4fe3e8..525602e3 100644 --- a/cpp/.traces/new_string +++ b/cpp/.traces/new_string @@ -1,10 +1,10 @@ -parse/0: instruction: 31 +parse/0: instruction: 32 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-8, properties: ["1": "address":"array":"character"]} -parse/0: instruction: 20 -parse/0: ingredient: {name: "1", value: 0, type: 2-5-8, properties: ["1": "address":"array":"character", "deref": ]} +parse/0: product: {name: "1", value: 0, type: 2-5-4, properties: ["1": "address":"array":"character"]} +parse/0: instruction: 21 +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: 8, properties: ["2": "character"]} +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 ... @@ -12,11 +12,11 @@ after-brace/0: index ... run/0: instruction main/0 mem/0: storing 1000 in location 1 run/0: instruction main/1 -run/0: ingredient 0 is {name: "1", value: 1, type: 2-5-8, properties: ["1": "address":"array":"character", "deref": ]} +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 8 +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 index a296bd69..6f9da074 100644 --- a/cpp/.traces/next_ingredient +++ b/cpp/.traces/next_ingredient @@ -1,6 +1,6 @@ parse/0: instruction: 1001 parse/0: ingredient: {name: "2", value: 0, type: 0, properties: ["2": "literal"]} -parse/0: instruction: 23 +parse/0: instruction: 24 parse/0: product: {name: "12", value: 0, type: 1, properties: ["12": "integer"]} parse/0: instruction: 2 parse/0: ingredient: {name: "1", value: 0, type: 0, properties: ["1": "literal"]} diff --git a/cpp/.traces/reply b/cpp/.traces/reply index 1dde3540..b83e094f 100644 --- a/cpp/.traces/reply +++ b/cpp/.traces/reply @@ -2,13 +2,13 @@ parse/0: instruction: 1001 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: 23 +parse/0: instruction: 24 parse/0: product: {name: "12", value: 0, type: 1, properties: ["12": "integer"]} parse/0: instruction: 2 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: 24 +parse/0: instruction: 25 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 f diff --git a/cpp/.traces/reply_container b/cpp/.traces/reply_container index 1b491677..144b9b07 100644 --- a/cpp/.traces/reply_container +++ b/cpp/.traces/reply_container @@ -1,12 +1,12 @@ parse/0: instruction: 1001 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: 23 +parse/0: instruction: 24 parse/0: product: {name: "12", value: 0, type: 1, properties: ["12": "integer"]} parse/0: instruction: 1 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: 24 +parse/0: instruction: 25 parse/0: ingredient: {name: "12", value: 0, type: 6, properties: ["12": "point"]} after-brace/0: recipe f after-brace/0: next-ingredient ... diff --git a/cpp/.traces/string-equal-common-lengths-but-distinct b/cpp/.traces/string-equal-common-lengths-but-distinct index 22b9eed7..ee87a24a 100644 --- a/cpp/.traces/string-equal-common-lengths-but-distinct +++ b/cpp/.traces/string-equal-common-lengths-but-distinct @@ -1,16 +1,16 @@ -parse/0: instruction: 31 +parse/0: instruction: 32 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-0, properties: ["default-space": "address":"space"]} -parse/0: instruction: 31 +parse/0: instruction: 32 parse/0: ingredient: {name: "abc", value: 0, type: 0, properties: ["abc": "literal-string"]} -parse/0: product: {name: "x", value: 0, type: 2-5-8, properties: ["x": "address":"array":"character"]} -parse/0: instruction: 31 +parse/0: product: {name: "x", value: 0, type: 2-5-4, properties: ["x": "address":"array":"character"]} +parse/0: instruction: 32 parse/0: ingredient: {name: "abd", value: 0, type: 0, properties: ["abd": "literal-string"]} -parse/0: product: {name: "y", value: 0, type: 2-5-8, properties: ["y": "address":"array":"character"]} +parse/0: product: {name: "y", value: 0, type: 2-5-4, properties: ["y": "address":"array":"character"]} parse/0: instruction: 100 -parse/0: ingredient: {name: "x", value: 0, type: 2-5-8, properties: ["x": "address":"array":"character"]} -parse/0: ingredient: {name: "y", value: 0, type: 2-5-8, properties: ["y": "address":"array":"character"]} +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 @@ -78,22 +78,22 @@ mem/0: location 1046 is 0 run/0: ingredient 0 is 0 run/0: jump-if fell through run/0: instruction string-equal/16 -run/0: ingredient 0 is {name: "a", value: 1, type: 2-5-8, properties: ["a": "address":"array":"character", "deref": ]} +run/0: ingredient 0 is {name: "a", value: 1, type: 2-5-4, properties: ["a": "address":"array":"character", "deref": ]} mem/0: location 1040 is 1030 run/0: ingredient 1 is {name: "i", value: 6, type: 1, properties: ["i": "integer"]} mem/0: location 1045 is 0 run/0: address to copy is 1031 -run/0: its type is 8 +run/0: its type is 4 mem/0: location 1031 is 97 run/0: product 0 is 97 mem/0: storing 97 in location 1047 run/0: instruction string-equal/17 -run/0: ingredient 0 is {name: "b", value: 3, type: 2-5-8, properties: ["b": "address":"array":"character", "deref": ]} +run/0: ingredient 0 is {name: "b", value: 3, type: 2-5-4, properties: ["b": "address":"array":"character", "deref": ]} mem/0: location 1042 is 1034 run/0: ingredient 1 is {name: "i", value: 6, type: 1, properties: ["i": "integer"]} mem/0: location 1045 is 0 run/0: address to copy is 1035 -run/0: its type is 8 +run/0: its type is 4 mem/0: location 1035 is 97 run/0: product 0 is 97 mem/0: storing 97 in location 1048 @@ -130,22 +130,22 @@ mem/0: location 1046 is 0 run/0: ingredient 0 is 0 run/0: jump-if fell through run/0: instruction string-equal/16 -run/0: ingredient 0 is {name: "a", value: 1, type: 2-5-8, properties: ["a": "address":"array":"character", "deref": ]} +run/0: ingredient 0 is {name: "a", value: 1, type: 2-5-4, properties: ["a": "address":"array":"character", "deref": ]} mem/0: location 1040 is 1030 run/0: ingredient 1 is {name: "i", value: 6, type: 1, properties: ["i": "integer"]} mem/0: location 1045 is 1 run/0: address to copy is 1032 -run/0: its type is 8 +run/0: its type is 4 mem/0: location 1032 is 98 run/0: product 0 is 98 mem/0: storing 98 in location 1047 run/0: instruction string-equal/17 -run/0: ingredient 0 is {name: "b", value: 3, type: 2-5-8, properties: ["b": "address":"array":"character", "deref": ]} +run/0: ingredient 0 is {name: "b", value: 3, type: 2-5-4, properties: ["b": "address":"array":"character", "deref": ]} mem/0: location 1042 is 1034 run/0: ingredient 1 is {name: "i", value: 6, type: 1, properties: ["i": "integer"]} mem/0: location 1045 is 1 run/0: address to copy is 1036 -run/0: its type is 8 +run/0: its type is 4 mem/0: location 1036 is 98 run/0: product 0 is 98 mem/0: storing 98 in location 1048 @@ -182,22 +182,22 @@ mem/0: location 1046 is 0 run/0: ingredient 0 is 0 run/0: jump-if fell through run/0: instruction string-equal/16 -run/0: ingredient 0 is {name: "a", value: 1, type: 2-5-8, properties: ["a": "address":"array":"character", "deref": ]} +run/0: ingredient 0 is {name: "a", value: 1, type: 2-5-4, properties: ["a": "address":"array":"character", "deref": ]} mem/0: location 1040 is 1030 run/0: ingredient 1 is {name: "i", value: 6, type: 1, properties: ["i": "integer"]} mem/0: location 1045 is 2 run/0: address to copy is 1033 -run/0: its type is 8 +run/0: its type is 4 mem/0: location 1033 is 99 run/0: product 0 is 99 mem/0: storing 99 in location 1047 run/0: instruction string-equal/17 -run/0: ingredient 0 is {name: "b", value: 3, type: 2-5-8, properties: ["b": "address":"array":"character", "deref": ]} +run/0: ingredient 0 is {name: "b", value: 3, type: 2-5-4, properties: ["b": "address":"array":"character", "deref": ]} mem/0: location 1042 is 1034 run/0: ingredient 1 is {name: "i", value: 6, type: 1, properties: ["i": "integer"]} mem/0: location 1045 is 2 run/0: address to copy is 1037 -run/0: its type is 8 +run/0: its type is 4 mem/0: location 1037 is 100 run/0: product 0 is 100 mem/0: storing 100 in location 1048 diff --git a/cpp/.traces/string-equal-distinct-lengths b/cpp/.traces/string-equal-distinct-lengths index 0c69eb1a..834292fe 100644 --- a/cpp/.traces/string-equal-distinct-lengths +++ b/cpp/.traces/string-equal-distinct-lengths @@ -1,16 +1,16 @@ -parse/0: instruction: 31 +parse/0: instruction: 32 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-0, properties: ["default-space": "address":"space"]} -parse/0: instruction: 31 +parse/0: instruction: 32 parse/0: ingredient: {name: "abc", value: 0, type: 0, properties: ["abc": "literal-string"]} -parse/0: product: {name: "x", value: 0, type: 2-5-8, properties: ["x": "address":"array":"character"]} -parse/0: instruction: 31 +parse/0: product: {name: "x", value: 0, type: 2-5-4, properties: ["x": "address":"array":"character"]} +parse/0: instruction: 32 parse/0: ingredient: {name: "abcd", value: 0, type: 0, properties: ["abcd": "literal-string"]} -parse/0: product: {name: "y", value: 0, type: 2-5-8, properties: ["y": "address":"array":"character"]} +parse/0: product: {name: "y", value: 0, type: 2-5-4, properties: ["y": "address":"array":"character"]} parse/0: instruction: 100 -parse/0: ingredient: {name: "x", value: 0, type: 2-5-8, properties: ["x": "address":"array":"character"]} -parse/0: ingredient: {name: "y", value: 0, type: 2-5-8, properties: ["y": "address":"array":"character"]} +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 diff --git a/cpp/.traces/string-equal-identical b/cpp/.traces/string-equal-identical index 164582af..3e16bee4 100644 --- a/cpp/.traces/string-equal-identical +++ b/cpp/.traces/string-equal-identical @@ -1,16 +1,16 @@ -parse/0: instruction: 31 +parse/0: instruction: 32 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-0, properties: ["default-space": "address":"space"]} -parse/0: instruction: 31 +parse/0: instruction: 32 parse/0: ingredient: {name: "abc", value: 0, type: 0, properties: ["abc": "literal-string"]} -parse/0: product: {name: "x", value: 0, type: 2-5-8, properties: ["x": "address":"array":"character"]} -parse/0: instruction: 31 +parse/0: product: {name: "x", value: 0, type: 2-5-4, properties: ["x": "address":"array":"character"]} +parse/0: instruction: 32 parse/0: ingredient: {name: "abc", value: 0, type: 0, properties: ["abc": "literal-string"]} -parse/0: product: {name: "y", value: 0, type: 2-5-8, properties: ["y": "address":"array":"character"]} +parse/0: product: {name: "y", value: 0, type: 2-5-4, properties: ["y": "address":"array":"character"]} parse/0: instruction: 100 -parse/0: ingredient: {name: "x", value: 0, type: 2-5-8, properties: ["x": "address":"array":"character"]} -parse/0: ingredient: {name: "y", value: 0, type: 2-5-8, properties: ["y": "address":"array":"character"]} +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 @@ -78,22 +78,22 @@ mem/0: location 1046 is 0 run/0: ingredient 0 is 0 run/0: jump-if fell through run/0: instruction string-equal/16 -run/0: ingredient 0 is {name: "a", value: 1, type: 2-5-8, properties: ["a": "address":"array":"character", "deref": ]} +run/0: ingredient 0 is {name: "a", value: 1, type: 2-5-4, properties: ["a": "address":"array":"character", "deref": ]} mem/0: location 1040 is 1030 run/0: ingredient 1 is {name: "i", value: 6, type: 1, properties: ["i": "integer"]} mem/0: location 1045 is 0 run/0: address to copy is 1031 -run/0: its type is 8 +run/0: its type is 4 mem/0: location 1031 is 97 run/0: product 0 is 97 mem/0: storing 97 in location 1047 run/0: instruction string-equal/17 -run/0: ingredient 0 is {name: "b", value: 3, type: 2-5-8, properties: ["b": "address":"array":"character", "deref": ]} +run/0: ingredient 0 is {name: "b", value: 3, type: 2-5-4, properties: ["b": "address":"array":"character", "deref": ]} mem/0: location 1042 is 1034 run/0: ingredient 1 is {name: "i", value: 6, type: 1, properties: ["i": "integer"]} mem/0: location 1045 is 0 run/0: address to copy is 1035 -run/0: its type is 8 +run/0: its type is 4 mem/0: location 1035 is 97 run/0: product 0 is 97 mem/0: storing 97 in location 1048 @@ -130,22 +130,22 @@ mem/0: location 1046 is 0 run/0: ingredient 0 is 0 run/0: jump-if fell through run/0: instruction string-equal/16 -run/0: ingredient 0 is {name: "a", value: 1, type: 2-5-8, properties: ["a": "address":"array":"character", "deref": ]} +run/0: ingredient 0 is {name: "a", value: 1, type: 2-5-4, properties: ["a": "address":"array":"character", "deref": ]} mem/0: location 1040 is 1030 run/0: ingredient 1 is {name: "i", value: 6, type: 1, properties: ["i": "integer"]} mem/0: location 1045 is 1 run/0: address to copy is 1032 -run/0: its type is 8 +run/0: its type is 4 mem/0: location 1032 is 98 run/0: product 0 is 98 mem/0: storing 98 in location 1047 run/0: instruction string-equal/17 -run/0: ingredient 0 is {name: "b", value: 3, type: 2-5-8, properties: ["b": "address":"array":"character", "deref": ]} +run/0: ingredient 0 is {name: "b", value: 3, type: 2-5-4, properties: ["b": "address":"array":"character", "deref": ]} mem/0: location 1042 is 1034 run/0: ingredient 1 is {name: "i", value: 6, type: 1, properties: ["i": "integer"]} mem/0: location 1045 is 1 run/0: address to copy is 1036 -run/0: its type is 8 +run/0: its type is 4 mem/0: location 1036 is 98 run/0: product 0 is 98 mem/0: storing 98 in location 1048 @@ -182,22 +182,22 @@ mem/0: location 1046 is 0 run/0: ingredient 0 is 0 run/0: jump-if fell through run/0: instruction string-equal/16 -run/0: ingredient 0 is {name: "a", value: 1, type: 2-5-8, properties: ["a": "address":"array":"character", "deref": ]} +run/0: ingredient 0 is {name: "a", value: 1, type: 2-5-4, properties: ["a": "address":"array":"character", "deref": ]} mem/0: location 1040 is 1030 run/0: ingredient 1 is {name: "i", value: 6, type: 1, properties: ["i": "integer"]} mem/0: location 1045 is 2 run/0: address to copy is 1033 -run/0: its type is 8 +run/0: its type is 4 mem/0: location 1033 is 99 run/0: product 0 is 99 mem/0: storing 99 in location 1047 run/0: instruction string-equal/17 -run/0: ingredient 0 is {name: "b", value: 3, type: 2-5-8, properties: ["b": "address":"array":"character", "deref": ]} +run/0: ingredient 0 is {name: "b", value: 3, type: 2-5-4, properties: ["b": "address":"array":"character", "deref": ]} mem/0: location 1042 is 1034 run/0: ingredient 1 is {name: "i", value: 6, type: 1, properties: ["i": "integer"]} mem/0: location 1045 is 2 run/0: address to copy is 1037 -run/0: its type is 8 +run/0: its type is 4 mem/0: location 1037 is 99 run/0: product 0 is 99 mem/0: storing 99 in location 1048 diff --git a/cpp/.traces/string-equal-reflexive b/cpp/.traces/string-equal-reflexive index 2a629bbb..3b478725 100644 --- a/cpp/.traces/string-equal-reflexive +++ b/cpp/.traces/string-equal-reflexive @@ -1,13 +1,13 @@ -parse/0: instruction: 31 +parse/0: instruction: 32 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-0, properties: ["default-space": "address":"space"]} -parse/0: instruction: 31 +parse/0: instruction: 32 parse/0: ingredient: {name: "abc", value: 0, type: 0, properties: ["abc": "literal-string"]} -parse/0: product: {name: "x", value: 0, type: 2-5-8, properties: ["x": "address":"array":"character"]} +parse/0: product: {name: "x", value: 0, type: 2-5-4, properties: ["x": "address":"array":"character"]} parse/0: instruction: 100 -parse/0: ingredient: {name: "x", value: 0, type: 2-5-8, properties: ["x": "address":"array":"character"]} -parse/0: ingredient: {name: "x", value: 0, type: 2-5-8, properties: ["x": "address":"array":"character"]} +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 @@ -70,22 +70,22 @@ mem/0: location 1042 is 0 run/0: ingredient 0 is 0 run/0: jump-if fell through run/0: instruction string-equal/16 -run/0: ingredient 0 is {name: "a", value: 1, type: 2-5-8, properties: ["a": "address":"array":"character", "deref": ]} +run/0: ingredient 0 is {name: "a", value: 1, type: 2-5-4, properties: ["a": "address":"array":"character", "deref": ]} mem/0: location 1036 is 1030 run/0: ingredient 1 is {name: "i", value: 6, type: 1, properties: ["i": "integer"]} mem/0: location 1041 is 0 run/0: address to copy is 1031 -run/0: its type is 8 +run/0: its type is 4 mem/0: location 1031 is 97 run/0: product 0 is 97 mem/0: storing 97 in location 1043 run/0: instruction string-equal/17 -run/0: ingredient 0 is {name: "b", value: 3, type: 2-5-8, properties: ["b": "address":"array":"character", "deref": ]} +run/0: ingredient 0 is {name: "b", value: 3, type: 2-5-4, properties: ["b": "address":"array":"character", "deref": ]} mem/0: location 1038 is 1030 run/0: ingredient 1 is {name: "i", value: 6, type: 1, properties: ["i": "integer"]} mem/0: location 1041 is 0 run/0: address to copy is 1031 -run/0: its type is 8 +run/0: its type is 4 mem/0: location 1031 is 97 run/0: product 0 is 97 mem/0: storing 97 in location 1044 @@ -122,22 +122,22 @@ mem/0: location 1042 is 0 run/0: ingredient 0 is 0 run/0: jump-if fell through run/0: instruction string-equal/16 -run/0: ingredient 0 is {name: "a", value: 1, type: 2-5-8, properties: ["a": "address":"array":"character", "deref": ]} +run/0: ingredient 0 is {name: "a", value: 1, type: 2-5-4, properties: ["a": "address":"array":"character", "deref": ]} mem/0: location 1036 is 1030 run/0: ingredient 1 is {name: "i", value: 6, type: 1, properties: ["i": "integer"]} mem/0: location 1041 is 1 run/0: address to copy is 1032 -run/0: its type is 8 +run/0: its type is 4 mem/0: location 1032 is 98 run/0: product 0 is 98 mem/0: storing 98 in location 1043 run/0: instruction string-equal/17 -run/0: ingredient 0 is {name: "b", value: 3, type: 2-5-8, properties: ["b": "address":"array":"character", "deref": ]} +run/0: ingredient 0 is {name: "b", value: 3, type: 2-5-4, properties: ["b": "address":"array":"character", "deref": ]} mem/0: location 1038 is 1030 run/0: ingredient 1 is {name: "i", value: 6, type: 1, properties: ["i": "integer"]} mem/0: location 1041 is 1 run/0: address to copy is 1032 -run/0: its type is 8 +run/0: its type is 4 mem/0: location 1032 is 98 run/0: product 0 is 98 mem/0: storing 98 in location 1044 @@ -174,22 +174,22 @@ mem/0: location 1042 is 0 run/0: ingredient 0 is 0 run/0: jump-if fell through run/0: instruction string-equal/16 -run/0: ingredient 0 is {name: "a", value: 1, type: 2-5-8, properties: ["a": "address":"array":"character", "deref": ]} +run/0: ingredient 0 is {name: "a", value: 1, type: 2-5-4, properties: ["a": "address":"array":"character", "deref": ]} mem/0: location 1036 is 1030 run/0: ingredient 1 is {name: "i", value: 6, type: 1, properties: ["i": "integer"]} mem/0: location 1041 is 2 run/0: address to copy is 1033 -run/0: its type is 8 +run/0: its type is 4 mem/0: location 1033 is 99 run/0: product 0 is 99 mem/0: storing 99 in location 1043 run/0: instruction string-equal/17 -run/0: ingredient 0 is {name: "b", value: 3, type: 2-5-8, properties: ["b": "address":"array":"character", "deref": ]} +run/0: ingredient 0 is {name: "b", value: 3, type: 2-5-4, properties: ["b": "address":"array":"character", "deref": ]} mem/0: location 1038 is 1030 run/0: ingredient 1 is {name: "i", value: 6, type: 1, properties: ["i": "integer"]} mem/0: location 1041 is 2 run/0: address to copy is 1033 -run/0: its type is 8 +run/0: its type is 4 mem/0: location 1033 is 99 run/0: product 0 is 99 mem/0: storing 99 in location 1044 diff --git a/cpp/.traces/string-equal-with-empty b/cpp/.traces/string-equal-with-empty index 803e017b..2d10802e 100644 --- a/cpp/.traces/string-equal-with-empty +++ b/cpp/.traces/string-equal-with-empty @@ -1,16 +1,16 @@ -parse/0: instruction: 31 +parse/0: instruction: 32 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-0, properties: ["default-space": "address":"space"]} -parse/0: instruction: 31 +parse/0: instruction: 32 parse/0: ingredient: {name: "", value: 0, type: 0, properties: ["": "literal-string"]} -parse/0: product: {name: "x", value: 0, type: 2-5-8, properties: ["x": "address":"array":"character"]} -parse/0: instruction: 31 +parse/0: product: {name: "x", value: 0, type: 2-5-4, properties: ["x": "address":"array":"character"]} +parse/0: instruction: 32 parse/0: ingredient: {name: "abcd", value: 0, type: 0, properties: ["abcd": "literal-string"]} -parse/0: product: {name: "y", value: 0, type: 2-5-8, properties: ["y": "address":"array":"character"]} +parse/0: product: {name: "y", value: 0, type: 2-5-4, properties: ["y": "address":"array":"character"]} parse/0: instruction: 100 -parse/0: ingredient: {name: "x", value: 0, type: 2-5-8, properties: ["x": "address":"array":"character"]} -parse/0: ingredient: {name: "y", value: 0, type: 2-5-8, properties: ["y": "address":"array":"character"]} +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 diff --git a/cpp/.traces/string_literal b/cpp/.traces/string_literal index 0562305b..bca008a9 100644 --- a/cpp/.traces/string_literal +++ b/cpp/.traces/string_literal @@ -1,8 +1,3 @@ -parse/0: instruction: 31 +parse/0: instruction: 32 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-8, properties: ["1": "address":"array":"character"]} -new/0: abc def -> 0 -after-brace/0: recipe main -after-brace/0: new ... -run/0: instruction main/0 -mem/0: storing 1000 in location 1 +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 index d91739ec..aad3dc98 100644 --- a/cpp/.traces/string_literal_nested +++ b/cpp/.traces/string_literal_nested @@ -1,8 +1,3 @@ -parse/0: instruction: 31 +parse/0: instruction: 32 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-8, properties: ["1": "address":"array":"character"]} -new/0: abc [def] -> 0 -after-brace/0: recipe main -after-brace/0: new ... -run/0: instruction main/0 -mem/0: storing 1000 in location 1 +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 index cf30be82..65a458fe 100644 --- a/cpp/.traces/string_literal_with_colons +++ b/cpp/.traces/string_literal_with_colons @@ -1,8 +1,3 @@ -parse/0: instruction: 31 +parse/0: instruction: 32 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-8, properties: ["1": "address":"array":"character"]} -new/0: abc:def/ghi -> 0 -after-brace/0: recipe main -after-brace/0: new ... -run/0: instruction main/0 -mem/0: storing 1000 in location 1 +parse/0: product: {name: "1", value: 0, type: 2-5-4, properties: ["1": "address":"array":"character"]} diff --git a/cpp/.traces/trace b/cpp/.traces/trace index fb4fd081..2ef6ce77 100644 --- a/cpp/.traces/trace +++ b/cpp/.traces/trace @@ -1,4 +1,4 @@ -parse/0: instruction: 32 +parse/0: instruction: 18 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 diff --git a/cpp/.traces/trace_in_mu b/cpp/.traces/trace_in_mu index dc7d8d8a..1d0be2b2 100644 --- a/cpp/.traces/trace_in_mu +++ b/cpp/.traces/trace_in_mu @@ -1,4 +1,4 @@ -parse/0: instruction: 32 +parse/0: instruction: 18 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 test-trace_in_mu diff --git a/cpp/035literal_string b/cpp/013literal_string index 9ca09115..f56cb928 100644 --- a/cpp/035literal_string +++ b/cpp/013literal_string @@ -61,31 +61,3 @@ recipe main [ 1:address:array:character <- new [abc [def]] ] +parse: ingredient: {name: "abc [def]", value: 0, type: 0, properties: ["abc [def]": "literal-string"]} - -//: Next, extend 'new' to handle a string literal argument. -:(scenario "new_string") -recipe main [ - 1:address:array:character <- new [abc def] - 2:character <- index 1:address:array:character/deref, 5:literal -] -# integer code for 'e' -+mem: storing 101 in location 2 - -:(before "End Mu Types Initialization") -Type_number["character"] = Next_type_number++; - -:(after "case NEW" following "Primitive Recipe Implementations") -if (instructions[pc].ingredients[0].properties[0].second[0] == "literal-string") { - // allocate an array just large enough for it - vector<int> result; - result.push_back(Current_routine->alloc); - write_memory(instructions[pc].products[0], result); - // assume that all characters fit in a single location -//? cout << "new string literal: " << instructions[pc].ingredients[0].name << '\n'; //? 1 - Memory[Current_routine->alloc++] = instructions[pc].ingredients[0].name.size(); - for (size_t i = 0; i < instructions[pc].ingredients[0].name.size(); ++i) { - Memory[Current_routine->alloc++] = instructions[pc].ingredients[0].name[i]; - } - // mu strings are not null-terminated in memory - break; -} diff --git a/cpp/013run b/cpp/020run index 91e242a7..91e242a7 100644 --- a/cpp/013run +++ b/cpp/020run diff --git a/cpp/014arithmetic b/cpp/021arithmetic index 08647cbc..08647cbc 100644 --- a/cpp/014arithmetic +++ b/cpp/021arithmetic diff --git a/cpp/015boolean b/cpp/022boolean index 6c677f7e..6c677f7e 100644 --- a/cpp/015boolean +++ b/cpp/022boolean diff --git a/cpp/016jump b/cpp/023jump index 669c7258..669c7258 100644 --- a/cpp/016jump +++ b/cpp/023jump diff --git a/cpp/017compare b/cpp/024compare index 145feaa2..145feaa2 100644 --- a/cpp/017compare +++ b/cpp/024compare diff --git a/cpp/042trace b/cpp/025trace index bd05d848..bd05d848 100644 --- a/cpp/042trace +++ b/cpp/025trace diff --git a/cpp/020container b/cpp/030container index fcdd82f9..fcdd82f9 100644 --- a/cpp/020container +++ b/cpp/030container diff --git a/cpp/021address b/cpp/031address index 22355fc6..22355fc6 100644 --- a/cpp/021address +++ b/cpp/031address diff --git a/cpp/022array b/cpp/032array index 3bdfe95e..3bdfe95e 100644 --- a/cpp/022array +++ b/cpp/032array diff --git a/cpp/023length b/cpp/033length index 9d3bb714..9d3bb714 100644 --- a/cpp/023length +++ b/cpp/033length diff --git a/cpp/025call b/cpp/035call index 3683db12..3683db12 100644 --- a/cpp/025call +++ b/cpp/035call diff --git a/cpp/026call_ingredient b/cpp/036call_ingredient index ecf53539..ecf53539 100644 --- a/cpp/026call_ingredient +++ b/cpp/036call_ingredient diff --git a/cpp/027call_reply b/cpp/037call_reply index b44552cc..b44552cc 100644 --- a/cpp/027call_reply +++ b/cpp/037call_reply diff --git a/cpp/030brace b/cpp/040brace index d01fe359..d01fe359 100644 --- a/cpp/030brace +++ b/cpp/040brace diff --git a/cpp/031name b/cpp/041name index 375f9854..375f9854 100644 --- a/cpp/031name +++ b/cpp/041name diff --git a/cpp/032new b/cpp/042new index e0460170..0d7742f8 100644 --- a/cpp/032new +++ b/cpp/042new @@ -19,7 +19,7 @@ size_t alloc; calls.push(call(r)); } -//: first handle 'type' operands +//: First handle 'type' operands :(before "End Mu Types Initialization") Type_number["type"] = 0; :(after "Per-recipe Transforms") @@ -35,6 +35,7 @@ if (inst.operation == Recipe_number["new"]) { trace("new") << inst.ingredients[0].name << " -> " << inst.ingredients[0].value; } +//: Now implement the primitive recipe. :(before "End Primitive Recipe Declarations") NEW, :(before "End Primitive Recipe Numbers") @@ -73,4 +74,29 @@ recipe main [ +run: instruction main/2 +mem: storing 5 in location 3 +//: Next, extend 'new' to handle a string literal argument. +:(scenario "new_string") +recipe main [ + 1:address:array:character <- new [abc def] + 2:character <- index 1:address:array:character/deref, 5:literal +] +# integer code for 'e' ++mem: storing 101 in location 2 + +:(after "case NEW" following "Primitive Recipe Implementations") +if (instructions[pc].ingredients[0].properties[0].second[0] == "literal-string") { + // allocate an array just large enough for it + vector<int> result; + result.push_back(Current_routine->alloc); + write_memory(instructions[pc].products[0], result); + // assume that all characters fit in a single location +//? cout << "new string literal: " << instructions[pc].ingredients[0].name << '\n'; //? 1 + Memory[Current_routine->alloc++] = instructions[pc].ingredients[0].name.size(); + for (size_t i = 0; i < instructions[pc].ingredients[0].name.size(); ++i) { + Memory[Current_routine->alloc++] = instructions[pc].ingredients[0].name[i]; + } + // mu strings are not null-terminated in memory + break; +} + //: vim: ft=cpp diff --git a/cpp/033space b/cpp/043space index 1bb91b8e..1bb91b8e 100644 --- a/cpp/033space +++ b/cpp/043space diff --git a/cpp/034space_surround b/cpp/044space_surround index 76cd5807..76cd5807 100644 --- a/cpp/034space_surround +++ b/cpp/044space_surround diff --git a/cpp/040scenario b/cpp/050scenario index c595ce82..c595ce82 100644 --- a/cpp/040scenario +++ b/cpp/050scenario diff --git a/cpp/041scenario_test.mu b/cpp/051scenario_test.mu index bf30ce8f..bf30ce8f 100644 --- a/cpp/041scenario_test.mu +++ b/cpp/051scenario_test.mu diff --git a/cpp/043scenario_trace b/cpp/052scenario_trace index 90dab204..90dab204 100644 --- a/cpp/043scenario_trace +++ b/cpp/052scenario_trace diff --git a/cpp/044scenario_trace_test.mu b/cpp/053scenario_trace_test.mu index abf0ef9a..abf0ef9a 100644 --- a/cpp/044scenario_trace_test.mu +++ b/cpp/053scenario_trace_test.mu diff --git a/cpp/045closure_name b/cpp/054closure_name index 76a1bdd7..76a1bdd7 100644 --- a/cpp/045closure_name +++ b/cpp/054closure_name diff --git a/cpp/050string.mu b/cpp/060string.mu index e85dc083..e85dc083 100644 --- a/cpp/050string.mu +++ b/cpp/060string.mu |