{ "$schema": "https://tree-sitter.github.io/tree-sitter/assets/schemas/grammar.schema.json", "name": "wmap", "rules": { "source_file": { "type": "REPEAT", "content": { "type": "CHOICE", "members": [ { "type": "SEQ", "members": [ { "type": "SYMBOL", "name": "entity" }, { "type": "SYMBOL", "name": "_line_ending" } ] }, { "type": "SYMBOL", "name": "_line_ending" } ] } }, "entity": { "type": "CHOICE", "members": [ { "type": "SYMBOL", "name": "component" }, { "type": "SYMBOL", "name": "dependency" }, { "type": "SYMBOL", "name": "note" }, { "type": "SYMBOL", "name": "stage" }, { "type": "SYMBOL", "name": "group" }, { "type": "SYMBOL", "name": "inertia" }, { "type": "SYMBOL", "name": "evolution" } ] }, "component": { "type": "SEQ", "members": [ { "type": "FIELD", "name": "label", "content": { "type": "SYMBOL", "name": "component_label" } }, { "type": "FIELD", "name": "position", "content": { "type": "SYMBOL", "name": "position" } }, { "type": "CHOICE", "members": [ { "type": "FIELD", "name": "shape", "content": { "type": "SYMBOL", "name": "shape" } }, { "type": "BLANK" } ] } ] }, "dependency": { "type": "SEQ", "members": [ { "type": "FIELD", "name": "from", "content": { "type": "SYMBOL", "name": "component_label" } }, { "type": "FIELD", "name": "type", "content": { "type": "SYMBOL", "name": "dependency_type" } }, { "type": "FIELD", "name": "to", "content": { "type": "SYMBOL", "name": "component_label" } } ] }, "note": { "type": "SEQ", "members": [ { "type": "ALIAS", "content": { "type": "SYMBOL", "name": "_note_keyword" }, "named": false, "value": "keyword" }, { "type": "FIELD", "name": "position", "content": { "type": "SYMBOL", "name": "position" } }, { "type": "FIELD", "name": "text", "content": { "type": "SYMBOL", "name": "text" } } ] }, "stage": { "type": "SEQ", "members": [ { "type": "STRING", "value": "[" }, { "type": "FIELD", "name": "number", "content": { "type": "SYMBOL", "name": "stage_number" } }, { "type": "STRING", "value": "]" }, { "type": "FIELD", "name": "value", "content": { "type": "SYMBOL", "name": "real_number" } } ] }, "group": { "type": "SEQ", "members": [ { "type": "ALIAS", "content": { "type": "SYMBOL", "name": "_group_keyword" }, "named": false, "value": "keyword" }, { "type": "FIELD", "name": "component", "content": { "type": "SYMBOL", "name": "component_label" } }, { "type": "REPEAT", "content": { "type": "SEQ", "members": [ { "type": "STRING", "value": "," }, { "type": "FIELD", "name": "component", "content": { "type": "SYMBOL", "name": "component_label" } } ] } } ] }, "inertia": { "type": "SEQ", "members": [ { "type": "ALIAS", "content": { "type": "SYMBOL", "name": "_inertia_keyword" }, "named": false, "value": "keyword" }, { "type": "FIELD", "name": "component", "content": { "type": "SYMBOL", "name": "component_label" } } ] }, "evolution": { "type": "SEQ", "members": [ { "type": "ALIAS", "content": { "type": "SYMBOL", "name": "_evolution_keyword" }, "named": false, "value": "keyword" }, { "type": "FIELD", "name": "component", "content": { "type": "SYMBOL", "name": "component_label" } }, { "type": "FIELD", "name": "sign", "content": { "type": "SYMBOL", "name": "sign" } }, { "type": "FIELD", "name": "value", "content": { "type": "SYMBOL", "name": "real_number" } } ] }, "position": { "type": "SEQ", "members": [ { "type": "STRING", "value": "(" }, { "type": "FIELD", "name": "x", "content": { "type": "SYMBOL", "name": "real_number" } }, { "type": "STRING", "value": "," }, { "type": "FIELD", "name": "y", "content": { "type": "SYMBOL", "name": "real_number" } }, { "type": "STRING", "value": ")" } ] }, "shape": { "type": "SEQ", "members": [ { "type": "STRING", "value": "[" }, { "type": "SYMBOL", "name": "shape_label" }, { "type": "STRING", "value": "]" } ] }, "dependency_type": { "type": "CHOICE", "members": [ { "type": "STRING", "value": "--" }, { "type": "STRING", "value": "->" } ] }, "sign": { "type": "CHOICE", "members": [ { "type": "STRING", "value": "+" }, { "type": "STRING", "value": "-" } ] }, "component_label": { "type": "PATTERN", "value": "[^\\-+,\\[\\]()\\n\\r]+" }, "text": { "type": "PATTERN", "value": "[^\\n\\r]+" }, "real_number": { "type": "CHOICE", "members": [ { "type": "PATTERN", "value": "[0-9]+\\.[0-9]*" }, { "type": "PATTERN", "value": "[0-9]+" }, { "type": "PATTERN", "value": "\\.[0-9]+" } ] }, "stage_number": { "type": "CHOICE", "members": [ { "type": "PATTERN", "value": "[Ii][Vv]" }, { "type": "PATTERN", "value": "[Ii][Ii][Ii]" }, { "type": "PATTERN", "value": "[Ii][Ii]" }, { "type": "PATTERN", "value": "[Ii]" } ] }, "shape_label": { "type": "CHOICE", "members": [ { "type": "PATTERN", "value": "[Xx]" }, { "type": "PATTERN", "value": "[Ss][Qq][Uu][Aa][Rr][Ee]" }, { "type": "PATTERN", "value": "[Tt][Rr][Ii][Aa][Nn][Gg][Ll][Ee]" }, { "type": "PATTERN", "value": "[Cc][Ii][Rr][Cc][Ll][Ee]" } ] }, "_note_keyword": { "type": "PATTERN", "value": "\\[[Nn][Oo][Tt][Ee]\\]" }, "_group_keyword": { "type": "PATTERN", "value": "\\[[Gg][Rr][Oo][Uu][Pp]\\]" }, "_inertia_keyword": { "type": "PATTERN", "value": "\\[[Ii][Nn][Ee][Rr][Tt][Ii][Aa]\\]" }, "_evolution_keyword": { "type": "PATTERN", "value": "\\[[Ee][Vv][Oo][Ll][Uu][Tt][Ii][Oo][Nn]\\]" }, "_line_ending": { "type": "CHOICE", "members": [ { "type": "STRING", "value": "\n" }, { "type": "STRING", "value": "\r\n" }, { "type": "STRING", "value": "\r" } ] } }, "extras": [ { "type": "PATTERN", "value": "[ \\t]" } ], "conflicts": [], "precedences": [], "externals": [], "inline": [], "supertypes": [], "reserved": {} }