{ "$schema": "https://tree-sitter.github.io/tree-sitter/assets/schemas/grammar.schema.json", "name": "dql", "rules": { "source_file": { "type": "REPEAT", "content": { "type": "SYMBOL", "name": "_definition" } }, "_definition": { "type": "CHOICE", "members": [ { "type": "SYMBOL", "name": "block" }, { "type": "SYMBOL", "name": "identifier" }, { "type": "SYMBOL", "name": "string" }, { "type": "SYMBOL", "name": "number" } ] }, "block": { "type": "PREC", "value": 1, "content": { "type": "SEQ", "members": [ { "type": "CHOICE", "members": [ { "type": "FIELD", "name": "name", "content": { "type": "SYMBOL", "name": "identifier" } }, { "type": "BLANK" } ] }, { "type": "STRING", "value": "{" }, { "type": "REPEAT", "content": { "type": "SYMBOL", "name": "_definition" } }, { "type": "STRING", "value": "}" } ] } }, "comment": { "type": "TOKEN", "content": { "type": "SEQ", "members": [ { "type": "STRING", "value": "#" }, { "type": "PATTERN", "value": ".*" } ] } }, "string": { "type": "TOKEN", "content": { "type": "SEQ", "members": [ { "type": "STRING", "value": "\"" }, { "type": "REPEAT", "content": { "type": "CHOICE", "members": [ { "type": "PATTERN", "value": "[^\"\\\\]" }, { "type": "SEQ", "members": [ { "type": "STRING", "value": "\\" }, { "type": "PATTERN", "value": "." } ] } ] } }, { "type": "STRING", "value": "\"" } ] } }, "number": { "type": "TOKEN", "content": { "type": "CHOICE", "members": [ { "type": "PATTERN", "value": "\\d+\\.\\d+" }, { "type": "PATTERN", "value": "\\d+" } ] } }, "identifier": { "type": "TOKEN", "content": { "type": "CHOICE", "members": [ { "type": "SEQ", "members": [ { "type": "STRING", "value": "@" }, { "type": "PATTERN", "value": "[a-zA-Z_][a-zA-Z0-9_.:]*" } ] }, { "type": "SEQ", "members": [ { "type": "STRING", "value": "$" }, { "type": "PATTERN", "value": "[a-zA-Z_][a-zA-Z0-9_]*" } ] }, { "type": "PATTERN", "value": "[a-zA-Z_][a-zA-Z0-9_.:]*" } ] } } }, "extras": [ { "type": "PATTERN", "value": "\\s" }, { "type": "SYMBOL", "name": "comment" } ], "conflicts": [], "precedences": [], "externals": [], "inline": [], "supertypes": [], "reserved": {} }