aboutsummaryrefslogtreecommitdiff
path: root/src/grammar.json
diff options
context:
space:
mode:
Diffstat (limited to 'src/grammar.json')
-rw-r--r--src/grammar.json479
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