{ "send-receive": { "input": "SYSTEM: task_a = send*;\nSYSTEM: task_b = receive*;\nINTERACTION: task_a:send -> task_b:receive;", "expected": { "systems": { "task_a": { "type": "System", "id": "task_a", "body": [{ "type": "Sequence", "body": [{ "type": "Behavior", "id": "send", "scope": { "min": 0, "max": null } }], "scope": { "min": 1, "max": 1 } }], "refs": [ "send" ], "properties": {}, "scope": { "min": 1, "max": 1 } }, "task_b": { "type": "System", "id": "task_b", "body": [{ "type": "Sequence", "body": [{ "type": "Behavior", "id": "receive", "scope": { "min": 0, "max": null } }], "scope": { "min": 1, "max": 1 } }], "refs": [ "receive" ], "properties": {}, "scope": { "min": 1, "max": 1 } } }, "behaviors": { "send": { "type": "Behavior", "id": "send", "body": [], "refs": [], "properties": {} }, "receive": { "type": "Behavior", "id": "receive", "body": [], "refs": [], "properties": {} } }, "interactions": [{ "type": "Then", "body": [{ "type": "Selector", "system": "task_a", "pattern": [{ "type": "Sequence", "body": [{ "type": "Behavior", "id": "send", "scope": { "min": 1, "max": 1 } }], "scope": { "min": 1, "max": 1 } }], "pre": null, "post": null }, { "type": "Selector", "system": "task_b", "pattern": [{ "type": "Sequence", "body": [{ "type": "Behavior", "id": "receive", "scope": { "min": 1, "max": 1 } }], "scope": { "min": 1, "max": 1 } }], "pre": null, "post": null }] }], "triggers": [], "init": [], "ast": [{ "type": "System", "id": "task_a", "body": [{ "type": "Sequence", "body": [{ "type": "Behavior", "id": "send", "scope": { "min": 0, "max": null } }], "scope": { "min": 1, "max": 1 } }], "refs": [ "send" ], "properties": {}, "scope": { "min": 1, "max": 1 } }, { "type": "System", "id": "task_b", "body": [{ "type": "Sequence", "body": [{ "type": "Behavior", "id": "receive", "scope": { "min": 0, "max": null } }], "scope": { "min": 1, "max": 1 } }], "refs": [ "receive" ], "properties": {}, "scope": { "min": 1, "max": 1 } }, { "type": "Then", "body": [{ "type": "Selector", "system": "task_a", "pattern": [{ "type": "Sequence", "body": [{ "type": "Behavior", "id": "send", "scope": { "min": 1, "max": 1 } }], "scope": { "min": 1, "max": 1 } }], "pre": null, "post": null }, { "type": "Selector", "system": "task_b", "pattern": [{ "type": "Sequence", "body": [{ "type": "Behavior", "id": "receive", "scope": { "min": 1, "max": 1 } }], "scope": { "min": 1, "max": 1 } }], "pre": null, "post": null }] }], "errors": [] } }, "kruskal": { "input": "SYSTEM: kruskal = make_set* find_edges* return;\nBEHAVIOR: find_edges = found_edge | found_no_edge;\nBEHAVIOR: found_edge = union_vertices add_edge_to_forest;\nWHEN: kruskal:make_set { count++ };\nWHEN: kruskal:find_edges { count--; if (count == 0) return false; };", "expected": { "systems": { "kruskal": { "type": "System", "id": "kruskal", "body": [{ "type": "Sequence", "body": [{ "type": "Behavior", "id": "make_set", "scope": { "min": 0, "max": null } }, { "type": "Behavior", "id": "find_edges", "scope": { "min": 0, "max": null } }, { "type": "Behavior", "id": "return", "scope": { "min": 1, "max": 1 } }], "scope": { "min": 1, "max": 1 } }], "refs": [ "make_set", "find_edges", "return" ], "properties": {}, "scope": { "min": 1, "max": 1 } } }, "behaviors": { "find_edges": { "type": "Behavior", "id": "find_edges", "body": [{ "type": "Alternation", "body": [{ "type": "Behavior", "id": "found_edge", "scope": { "min": 1, "max": 1 } }, { "type": "Behavior", "id": "found_no_edge", "scope": { "min": 1, "max": 1 } }], "scope": { "min": 1, "max": 1 } }], "refs": [ "found_edge", "found_no_edge" ], "properties": {} }, "found_edge": { "type": "Behavior", "id": "found_edge", "body": [{ "type": "Sequence", "body": [{ "type": "Behavior", "id": "union_vertices", "scope": { "min": 1, "max": 1 } }, { "type": "Behavior", "id": "add_edge_to_forest", "scope": { "min": 1, "max": 1 } }], "scope": { "min": 1, "max": 1 } }], "refs": [ "union_vertices", "add_edge_to_forest" ], "properties": {} }, "make_set": { "type": "Behavior", "id": "make_set", "body": [], "refs": [], "properties": {} }, "return": { "type": "Behavior", "id": "return", "body": [], "refs": [], "properties": {} }, "found_no_edge": { "type": "Behavior", "id": "found_no_edge", "body": [], "refs": [], "properties": {} }, "union_vertices": { "type": "Behavior", "id": "union_vertices", "body": [], "refs": [], "properties": {} }, "add_edge_to_forest": { "type": "Behavior", "id": "add_edge_to_forest", "body": [], "refs": [], "properties": {} } }, "interactions": [], "triggers": [{ "type": "Trigger", "on": { "type": "Selector", "system": "kruskal", "pattern": [{ "type": "Sequence", "body": [{ "type": "Behavior", "id": "make_set", "scope": { "min": 1, "max": 1 } }], "scope": { "min": 1, "max": 1 } }], "pre": null, "post": null }, "do": "count++" }, { "type": "Trigger", "on": { "type": "Selector", "system": "kruskal", "pattern": [{ "type": "Sequence", "body": [{ "type": "Behavior", "id": "find_edges", "scope": { "min": 1, "max": 1 } }], "scope": { "min": 1, "max": 1 } }], "pre": null, "post": null }, "do": "count--; if (count == 0) return false;" }], "init": [], "ast": [{ "type": "System", "id": "kruskal", "body": [{ "type": "Sequence", "body": [{ "type": "Behavior", "id": "make_set", "scope": { "min": 0, "max": null } }, { "type": "Behavior", "id": "find_edges", "scope": { "min": 0, "max": null } }, { "type": "Behavior", "id": "return", "scope": { "min": 1, "max": 1 } }], "scope": { "min": 1, "max": 1 } }], "refs": [ "make_set", "find_edges", "return" ], "properties": {}, "scope": { "min": 1, "max": 1 } }, { "type": "Behavior", "id": "find_edges", "body": [{ "type": "Alternation", "body": [{ "type": "Behavior", "id": "found_edge", "scope": { "min": 1, "max": 1 } }, { "type": "Behavior", "id": "found_no_edge", "scope": { "min": 1, "max": 1 } }], "scope": { "min": 1, "max": 1 } }], "refs": [ "found_edge", "found_no_edge" ], "properties": {} }, { "type": "Behavior", "id": "found_edge", "body": [{ "type": "Sequence", "body": [{ "type": "Behavior", "id": "union_vertices", "scope": { "min": 1, "max": 1 } }, { "type": "Behavior", "id": "add_edge_to_forest", "scope": { "min": 1, "max": 1 } }], "scope": { "min": 1, "max": 1 } }], "refs": [ "union_vertices", "add_edge_to_forest" ], "properties": {} }, { "type": "Trigger", "on": { "type": "Selector", "system": "kruskal", "pattern": [{ "type": "Sequence", "body": [{ "type": "Behavior", "id": "make_set", "scope": { "min": 1, "max": 1 } }], "scope": { "min": 1, "max": 1 } }], "pre": null, "post": null }, "do": "count++" }, { "type": "Trigger", "on": { "type": "Selector", "system": "kruskal", "pattern": [{ "type": "Sequence", "body": [{ "type": "Behavior", "id": "find_edges", "scope": { "min": 1, "max": 1 } }], "scope": { "min": 1, "max": 1 } }], "pre": null, "post": null }, "do": "count--; if (count == 0) return false;" }], "errors": [] } } }