diff options
Diffstat (limited to 'src/grammar.json')
| -rw-r--r-- | src/grammar.json | 479 |
1 files changed, 479 insertions, 0 deletions
diff --git a/src/grammar.json b/src/grammar.json new file mode 100644 index 0000000..de08260 --- /dev/null +++ b/src/grammar.json @@ -0,0 +1,479 @@ +{ + "$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": {} +}
\ No newline at end of file |