UNPKG

tree-sitter-paradox

Version:
599 lines 12 kB
{ "$schema": "https://tree-sitter.github.io/tree-sitter/assets/schemas/grammar.schema.json", "name": "paradox", "rules": { "source_file": { "type": "REPEAT", "content": { "type": "FIELD", "name": "top_level_statement", "content": { "type": "SYMBOL", "name": "statement" } } }, "assignment": { "type": "SEQ", "members": [ { "type": "FIELD", "name": "key", "content": { "type": "CHOICE", "members": [ { "type": "SYMBOL", "name": "identifier" }, { "type": "SYMBOL", "name": "number" }, { "type": "SYMBOL", "name": "variable" }, { "type": "SYMBOL", "name": "variable_embedded_identifier" }, { "type": "SYMBOL", "name": "template_string" }, { "type": "SYMBOL", "name": "string" } ] } }, { "type": "STRING", "value": "=" }, { "type": "FIELD", "name": "value", "content": { "type": "CHOICE", "members": [ { "type": "SYMBOL", "name": "simple_value" }, { "type": "SYMBOL", "name": "array" }, { "type": "SYMBOL", "name": "map" }, { "type": "SYMBOL", "name": "variable" }, { "type": "SYMBOL", "name": "variable_embedded_identifier" } ] } } ] }, "map": { "type": "SEQ", "members": [ { "type": "STRING", "value": "{" }, { "type": "REPEAT", "content": { "type": "SYMBOL", "name": "statement" } }, { "type": "STRING", "value": "}" } ] }, "statement": { "type": "CHOICE", "members": [ { "type": "SYMBOL", "name": "macro_map" }, { "type": "SYMBOL", "name": "assignment" }, { "type": "SYMBOL", "name": "condition_statement" }, { "type": "SYMBOL", "name": "logical_statement" }, { "type": "SYMBOL", "name": "variable" }, { "type": "SYMBOL", "name": "variable_embedded_identifier" }, { "type": "SYMBOL", "name": "simple_value" } ] }, "array": { "type": "SEQ", "members": [ { "type": "STRING", "value": "{" }, { "type": "REPEAT", "content": { "type": "CHOICE", "members": [ { "type": "SYMBOL", "name": "simple_value" }, { "type": "SYMBOL", "name": "variable" }, { "type": "SYMBOL", "name": "variable_embedded_identifier" } ] } }, { "type": "STRING", "value": "}" } ] }, "simple_value": { "type": "CHOICE", "members": [ { "type": "SYMBOL", "name": "string" }, { "type": "SYMBOL", "name": "number" }, { "type": "SYMBOL", "name": "boolean" }, { "type": "SYMBOL", "name": "identifier" } ] }, "condition_statement": { "type": "CHOICE", "members": [ { "type": "STRING", "value": "if" }, { "type": "STRING", "value": "=" }, { "type": "SYMBOL", "name": "map" }, { "type": "STRING", "value": "limit" }, { "type": "STRING", "value": "=" }, { "type": "SYMBOL", "name": "map" }, { "type": "STRING", "value": "trigger" }, { "type": "STRING", "value": "=" }, { "type": "SYMBOL", "name": "map" }, { "type": "STRING", "value": "potential" }, { "type": "STRING", "value": "=" }, { "type": "SYMBOL", "name": "map" } ] }, "logical_statement": { "type": "CHOICE", "members": [ { "type": "SEQ", "members": [ { "type": "STRING", "value": "AND" }, { "type": "STRING", "value": "=" }, { "type": "SYMBOL", "name": "map" } ] }, { "type": "SEQ", "members": [ { "type": "STRING", "value": "OR" }, { "type": "STRING", "value": "=" }, { "type": "SYMBOL", "name": "map" } ] }, { "type": "SEQ", "members": [ { "type": "STRING", "value": "NOT" }, { "type": "STRING", "value": "=" }, { "type": "SYMBOL", "name": "map" } ] } ] }, "macro_map": { "type": "SEQ", "members": [ { "type": "STRING", "value": "[[" }, { "type": "FIELD", "name": "key", "content": { "type": "SYMBOL", "name": "identifier" } }, { "type": "STRING", "value": "]" }, { "type": "REPEAT", "content": { "type": "SYMBOL", "name": "statement" } }, { "type": "STRING", "value": "]" } ] }, "template_string": { "type": "TOKEN", "content": { "type": "SEQ", "members": [ { "type": "STRING", "value": "\"" }, { "type": "PATTERN", "value": "[^\"#\\\\]*" }, { "type": "STRING", "value": "#" }, { "type": "PATTERN", "value": "[0-9]+" }, { "type": "PATTERN", "value": "[^\"\\\\]*" }, { "type": "STRING", "value": "\"" } ] } }, "string": { "type": "TOKEN", "content": { "type": "SEQ", "members": [ { "type": "STRING", "value": "\"" }, { "type": "REPEAT", "content": { "type": "CHOICE", "members": [ { "type": "PATTERN", "value": "[^\"\\\\]" }, { "type": "PATTERN", "value": "\\\\." } ] } }, { "type": "STRING", "value": "\"" } ] } }, "number": { "type": "PATTERN", "value": "-?(?:\\d+\\.\\d+|\\d+|\\.\\d+)(?:[eE][+-]?\\d+)?" }, "boolean": { "type": "CHOICE", "members": [ { "type": "STRING", "value": "yes" }, { "type": "STRING", "value": "no" }, { "type": "STRING", "value": "true" }, { "type": "STRING", "value": "false" } ] }, "variable": { "type": "SEQ", "members": [ { "type": "STRING", "value": "$" }, { "type": "SYMBOL", "name": "identifier" }, { "type": "STRING", "value": "$" } ] }, "identifier": { "type": "PATTERN", "value": "[^\\s\"={}\\[\\]#$]+" }, "variable_embedded_identifier": { "type": "CHOICE", "members": [ { "type": "SEQ", "members": [ { "type": "CHOICE", "members": [ { "type": "SYMBOL", "name": "number" }, { "type": "SYMBOL", "name": "identifier" } ] }, { "type": "SYMBOL", "name": "variable" } ] }, { "type": "SEQ", "members": [ { "type": "SYMBOL", "name": "variable" }, { "type": "CHOICE", "members": [ { "type": "SYMBOL", "name": "number" }, { "type": "SYMBOL", "name": "identifier" } ] } ] }, { "type": "SEQ", "members": [ { "type": "CHOICE", "members": [ { "type": "SYMBOL", "name": "number" }, { "type": "SYMBOL", "name": "identifier" } ] }, { "type": "SYMBOL", "name": "variable" }, { "type": "CHOICE", "members": [ { "type": "SYMBOL", "name": "number" }, { "type": "SYMBOL", "name": "identifier" } ] } ] } ] }, "comment": { "type": "TOKEN", "content": { "type": "SEQ", "members": [ { "type": "STRING", "value": "#" }, { "type": "PATTERN", "value": ".*" } ] } } }, "extras": [ { "type": "PATTERN", "value": "\\s" }, { "type": "SYMBOL", "name": "comment" } ], "conflicts": [ [ "map", "array" ], [ "assignment", "variable_embedded_identifier" ], [ "simple_value", "variable_embedded_identifier" ], [ "variable_embedded_identifier" ], [ "assignment", "statement" ], [ "variable_embedded_identifier", "statement" ], [ "array", "statement" ], [ "array", "statement", "variable_embedded_identifier" ], [ "assignment", "simple_value" ] ], "precedences": [], "externals": [], "inline": [], "supertypes": [], "reserved": {} }