parse/0: instruction: 1 parse/0: ingredient: {name: "5", value: 0, type: 0, properties: ["5": "literal"]} parse/0: product: {name: "1", value: 0, type: 1, properties: ["1": "integer"]} parse/0: instruction: 1 parse/0: ingredient: {name: "1", value: 0, type: 0, properties: ["1": "literal"]} parse/0: product: {name: "2", value: 0, type: 1, properties: ["2": "integer"]} parse/0: label: { parse/0: instruction: 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: 32 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"]} parse/0: ingredient: {name: "1", value: 0, type: 1, properties: ["1": "integer"]} parse/0: product: {name: "2", value: 0, type: 1, properties: ["2": "integer"]} parse/0: instruction: 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: 34 parse/0: label: } parse/0: instruction: 1 parse/0: ingredient: {name: "2", value: 0, type: 1, properties: ["2": "integer"]} parse/0: product: {name: "4", value: 0, type: 1, properties: ["4": "integer"]} brace/0: 1000: push (open, 2) brace/0: push (close, 8) after-brace/0: recipe test-factorial after-brace/0: copy ... after-brace/0: copy ... after-brace/0: equal ... after-brace/0: jump-if 3, 3:offset after-brace/0: multiply ... after-brace/0: subtract ... after-brace/0: jump -5:offset after-brace/0: 7: {name: "", value: -5, type: , properties: ["": ]} after-brace/0: 7: {name: "", value: -5, type: , properties: ["": ]} after-brace/0: copy ... new/0: routine allocated memory from 1000 to 101000 schedule/0: test-factorial run/0: instruction test-factorial/0 run/0: ingredient 0 is 5 mem/0: storing 5 in location 1 run/0: instruction test-factorial/1 run/0: ingredient 0 is 1 mem/0: storing 1 in location 2 run/0: instruction test-factorial/3 run/0: ingredient 0 is 1 mem/0: location 1 is 5 run/0: ingredient 1 is 1 run/0: product 0 is 0 mem/0: storing 0 in location 3 run/0: instruction test-factorial/4 mem/0: location 3 is 0 run/0: ingredient 0 is 0 run/0: jump-if fell through run/0: instruction test-factorial/5 run/0: ingredient 0 is 2 mem/0: location 2 is 1 run/0: ingredient 1 is 1 mem/0: location 1 is 5 run/0: ingredient 1 is 5 run/0: product 0 is 5 mem/0: storing 5 in location 2 run/0: instruction test-factorial/6 run/0: ingredient 0 is 1 mem/0: location 1 is 5 run/0: ingredient 1 is 1 run/0: product 0 is 4 mem/0: storing 4 in location 1 run/0: instruction test-factorial/7 run/0: ingredient 0 is -5 run/0: jumping to instruction 3 run/0: instruction test-factorial/3 run/0: ingredient 0 is 1 mem/0: location 1 is 4 run/0: ingredient 1 is 1 run/0: product 0 is 0 mem/0: storing 0 in location 3 run/0: instruction test-factorial/4 mem/0: location 3 is 0 run/0: ingredient 0 is 0 run/0: jump-if fell through run/0: instruction test-factorial/5 run/0: ingredient 0 is 2 mem/0: location 2 is 5 run/0: ingredient 1 is 1 mem/0: location 1 is 4 run/0: ingredient 1 is 4 run/0: product 0 is 20 mem/0: storing 20 in location 2 run/0: instruction test-factorial/6 run/0: ingredient 0 is 1 mem/0: location 1 is 4 run/0: ingredient 1 is 1 run/0: product 0 is 3 mem/0: storing 3 in location 1 run/0: instruction test-factorial/7 run/0: ingredient 0 is -5 run/0: jumping to instruction 3 run/0: instruction test-factorial/3 run/0: ingredient 0 is 1 mem/0: location 1 is 3 run/0: ingredient 1 is 1 run/0: product 0 is 0 mem/0: storing 0 in location 3 run/0: instruction test-factorial/4 mem/0: location 3 is 0 run/0: ingredient 0 is 0 run/0: jump-if fell through run/0: instruction test-factorial/5 run/0: ingredient 0 is 2 mem/0: location 2 is 20 run/0: ingredient 1 is 1 mem/0: location 1 is 3 run/0: ingredient 1 is 3 run/0: product 0 is 60 mem/0: storing 60 in location 2 run/0: instruction test-factorial/6 run/0: ingredient 0 is 1 mem/0: location 1 is 3 run/0: ingredient 1 is 1 run/0: product 0 is 2 mem/0: storing 2 in location 1 run/0: instruction test-factorial/7 run/0: ingredient 0 is -5 run/0: jumping to instruction 3 run/0: instruction test-factorial/3 run/0: ingredient 0 is 1 mem/0: location 1 is 2 run/0: ingredient 1 is 1 run/0: product 0 is 0 mem/0: storing 0 in location 3 run/0: instruction test-factorial/4 mem/0: location 3 is 0 run/0: ingredient 0 is 0 run/0: jump-if fell through run/0: instruction test-factorial/5 run/0: ingredient 0 is 2 mem/0: location 2 is 60 run/0: ingredient 1 is 1 mem/0: location 1 is 2 run/0: ingredient 1 is 2 run/0: product 0 is 120 mem/0: storing 120 in location 2 run/0: instruction test-factorial/6 run/0: ingredient 0 is 1 mem/0: location 1 is 2 run/0: ingredient 1 is 1 run/0: product 0 is 1 mem/0: storing 1 in location 1 run/0: instruction test-factorial/7 run/0: ingredient 0 is -5 run/0: jumping to instruction 3 run/0: instruction test-factorial/3 run/0: ingredient 0 is 1 mem/0: location 1 is 1 run/0: ingredient 1 is 1 run/0: product 0 is 1 mem/0: storing 1 in location 3 run/0: instruction test-factorial/4 mem/0: location 3 is 1 run/0: ingredient 0 is 1 run/0: ingredient 1 is run/0: jumping to instruction 8 run/0: instruction test-factorial/9 run/0: ingredient 0 is 2 mem/0: location 2 is 120 mem/0: storing 120 in location 4