tree-sitter-tony
Version:
Tony grammar for tree-sitter
1,438 lines (1,436 loc) • 34 kB
JSON
{
"name": "dtn",
"word": "_identifier_without_operators",
"rules": {
"program": {
"type": "SEQ",
"members": [
{
"type": "REPEAT",
"content": {
"type": "FIELD",
"name": "import",
"content": {
"type": "SYMBOL",
"name": "import"
}
}
},
{
"type": "FIELD",
"name": "declaration",
"content": {
"type": "SYMBOL",
"name": "declaration"
}
}
]
},
"comment": {
"type": "TOKEN",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "#"
},
{
"type": "PATTERN",
"value": ".*"
}
]
}
},
"declaration": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "declare"
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "raw_string"
}
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_newline"
},
{
"type": "SYMBOL",
"name": "_indent"
},
{
"type": "REPEAT1",
"content": {
"type": "FIELD",
"name": "member",
"content": {
"type": "SYMBOL",
"name": "declaration_member"
}
}
},
{
"type": "SYMBOL",
"name": "_dedent"
}
]
}
]
},
"declaration_member": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "name",
"content": {
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "identifier"
},
"named": true,
"value": "identifier_pattern_name"
}
},
{
"type": "STRING",
"value": "::"
},
{
"type": "FIELD",
"name": "type",
"content": {
"type": "SYMBOL",
"name": "_type"
}
}
]
},
"import": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "import"
},
{
"type": "SYMBOL",
"name": "_import_body"
}
]
},
"_import_body": {
"type": "PREC_LEFT",
"value": 17,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "{"
},
{
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "import",
"content": {
"type": "SYMBOL",
"name": "import_type"
}
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "FIELD",
"name": "import",
"content": {
"type": "SYMBOL",
"name": "import_type"
}
}
]
}
}
]
},
{
"type": "STRING",
"value": "}"
},
{
"type": "STRING",
"value": "from"
},
{
"type": "FIELD",
"name": "source",
"content": {
"type": "SYMBOL",
"name": "raw_string"
}
}
]
}
},
"import_type": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "type"
}
},
{
"type": "STRING",
"value": "as"
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "FIELD",
"name": "as",
"content": {
"type": "SYMBOL",
"name": "type"
}
}
]
},
"_identifier_without_operators": {
"type": "PATTERN",
"value": "_?[a-z][a-z0-9_]*(\\?|!)?"
},
"_operator": {
"type": "PATTERN",
"value": "(==|[!@$%^&*|<>~*\\\\\\-+/.])[!@$%^&*|<>~*\\\\\\-+/.=?]*"
},
"identifier": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_operator"
},
{
"type": "SYMBOL",
"name": "_identifier_without_operators"
}
]
},
"type_variable_declaration": {
"type": "PREC_LEFT",
"value": 0,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "name",
"content": {
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "identifier"
},
"named": true,
"value": "type_variable_declaration_name"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "<:"
},
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "constraint",
"content": {
"type": "SYMBOL",
"name": "_type"
}
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "constraint",
"content": {
"type": "SYMBOL",
"name": "_type"
}
},
{
"type": "REPEAT1",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ";"
},
{
"type": "FIELD",
"name": "constraint",
"content": {
"type": "SYMBOL",
"name": "_type"
}
}
]
}
}
]
},
{
"type": "STRING",
"value": ")"
}
]
}
]
}
]
},
{
"type": "BLANK"
}
]
}
]
}
},
"_type": {
"type": "PREC_LEFT",
"value": 0,
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "parametric_type"
},
{
"type": "SYMBOL",
"name": "curried_type"
},
{
"type": "SYMBOL",
"name": "intersection_type"
},
{
"type": "SYMBOL",
"name": "union_type"
},
{
"type": "SYMBOL",
"name": "subtraction_type"
},
{
"type": "SYMBOL",
"name": "conditional_type"
},
{
"type": "SYMBOL",
"name": "struct_type"
},
{
"type": "SYMBOL",
"name": "map_type"
},
{
"type": "SYMBOL",
"name": "tuple_type"
},
{
"type": "SYMBOL",
"name": "list_type"
},
{
"type": "SYMBOL",
"name": "tagged_type"
},
{
"type": "SYMBOL",
"name": "keyof"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "identifier"
},
"named": true,
"value": "type_variable"
},
{
"type": "SYMBOL",
"name": "type_group"
}
]
}
},
"parametric_type": {
"type": "PREC_RIGHT",
"value": 0,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "type"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "<"
},
{
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "argument",
"content": {
"type": "SYMBOL",
"name": "_type"
}
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "FIELD",
"name": "argument",
"content": {
"type": "SYMBOL",
"name": "_type"
}
}
]
}
}
]
},
{
"type": "STRING",
"value": ">"
}
]
},
{
"type": "BLANK"
}
]
}
]
}
},
"curried_type": {
"type": "PREC_RIGHT",
"value": 1,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "from",
"content": {
"type": "SYMBOL",
"name": "_type"
}
},
{
"type": "STRING",
"value": "->"
},
{
"type": "FIELD",
"name": "to",
"content": {
"type": "SYMBOL",
"name": "_type"
}
}
]
}
},
"intersection_type": {
"type": "PREC_RIGHT",
"value": 1,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "left",
"content": {
"type": "SYMBOL",
"name": "_type"
}
},
{
"type": "STRING",
"value": "&"
},
{
"type": "FIELD",
"name": "right",
"content": {
"type": "SYMBOL",
"name": "_type"
}
}
]
}
},
"union_type": {
"type": "PREC_RIGHT",
"value": 0,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "left",
"content": {
"type": "SYMBOL",
"name": "_type"
}
},
{
"type": "STRING",
"value": "|"
},
{
"type": "FIELD",
"name": "right",
"content": {
"type": "SYMBOL",
"name": "_type"
}
}
]
}
},
"subtraction_type": {
"type": "PREC_RIGHT",
"value": -1,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "left",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "parametric_type"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "identifier"
},
"named": true,
"value": "type_variable"
},
{
"type": "SYMBOL",
"name": "union_type"
}
]
}
},
{
"type": "STRING",
"value": "\\"
},
{
"type": "FIELD",
"name": "right",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "parametric_type"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "identifier"
},
"named": true,
"value": "type_variable"
},
{
"type": "SYMBOL",
"name": "union_type"
}
]
}
}
]
}
},
"conditional_type": {
"type": "PREC_RIGHT",
"value": 0,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "if"
},
{
"type": "FIELD",
"name": "type",
"content": {
"type": "SYMBOL",
"name": "_type"
}
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "<:"
},
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "constraint",
"content": {
"type": "SYMBOL",
"name": "_type"
}
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "constraint",
"content": {
"type": "SYMBOL",
"name": "_type"
}
},
{
"type": "REPEAT1",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ";"
},
{
"type": "FIELD",
"name": "constraint",
"content": {
"type": "SYMBOL",
"name": "_type"
}
}
]
}
}
]
},
{
"type": "STRING",
"value": ")"
}
]
}
]
}
]
},
{
"type": "STRING",
"value": "then"
},
{
"type": "FIELD",
"name": "consequence",
"content": {
"type": "SYMBOL",
"name": "_type"
}
},
{
"type": "STRING",
"value": "else"
},
{
"type": "FIELD",
"name": "alternative",
"content": {
"type": "SYMBOL",
"name": "_type"
}
}
]
}
},
"struct_type": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "{"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "member",
"content": {
"type": "SYMBOL",
"name": "member_type"
}
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "FIELD",
"name": "member",
"content": {
"type": "SYMBOL",
"name": "member_type"
}
}
]
}
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "}"
}
]
},
"member_type": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "key",
"content": {
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "identifier"
},
"named": true,
"value": "shorthand_member_identifier"
}
},
{
"type": "STRING",
"value": ":"
},
{
"type": "FIELD",
"name": "value",
"content": {
"type": "SYMBOL",
"name": "_type"
}
}
]
},
"map_type": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "{"
},
{
"type": "STRING",
"value": "["
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "property",
"content": {
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "identifier"
},
"named": true,
"value": "type_variable_declaration_name"
}
},
{
"type": "STRING",
"value": "in"
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "FIELD",
"name": "key",
"content": {
"type": "SYMBOL",
"name": "_type"
}
},
{
"type": "STRING",
"value": "]"
},
{
"type": "STRING",
"value": ":"
},
{
"type": "FIELD",
"name": "value",
"content": {
"type": "SYMBOL",
"name": "_type"
}
},
{
"type": "STRING",
"value": "}"
}
]
},
"tuple_type": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "()"
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "element",
"content": {
"type": "SYMBOL",
"name": "_type"
}
},
{
"type": "REPEAT1",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "FIELD",
"name": "element",
"content": {
"type": "SYMBOL",
"name": "_type"
}
}
]
}
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ")"
}
]
}
]
},
"list_type": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "["
},
{
"type": "FIELD",
"name": "element",
"content": {
"type": "SYMBOL",
"name": "_type"
}
},
{
"type": "STRING",
"value": "]"
}
]
},
"tagged_type": {
"type": "PREC_RIGHT",
"value": 17,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "<"
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "STRING",
"value": ">"
},
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "type",
"content": {
"type": "SYMBOL",
"name": "_type"
}
},
{
"type": "BLANK"
}
]
}
]
}
},
"keyof": {
"type": "PREC_RIGHT",
"value": 0,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "keyof"
},
{
"type": "FIELD",
"name": "type",
"content": {
"type": "SYMBOL",
"name": "_type"
}
}
]
}
},
"type_group": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "FIELD",
"name": "type",
"content": {
"type": "SYMBOL",
"name": "_type"
}
},
{
"type": "STRING",
"value": ")"
}
]
},
"type": {
"type": "PATTERN",
"value": "[A-Z][a-zA-Z0-9]*"
},
"boolean": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "false"
},
{
"type": "STRING",
"value": "true"
}
]
},
"_decimal": {
"type": "TOKEN",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "REPEAT1",
"content": {
"type": "PATTERN",
"value": "_?[0-9]+"
}
},
{
"type": "STRING",
"value": "."
},
{
"type": "REPEAT1",
"content": {
"type": "PATTERN",
"value": "_?[0-9]+"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "PATTERN",
"value": "e-?"
},
{
"type": "REPEAT1",
"content": {
"type": "PATTERN",
"value": "_?[0-9]+"
}
}
]
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "REPEAT1",
"content": {
"type": "PATTERN",
"value": "_?[0-9]+"
}
},
{
"type": "SEQ",
"members": [
{
"type": "PATTERN",
"value": "e-?"
},
{
"type": "REPEAT1",
"content": {
"type": "PATTERN",
"value": "_?[0-9]+"
}
}
]
}
]
}
]
}
},
"_integer": {
"type": "TOKEN",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "0x"
},
{
"type": "REPEAT1",
"content": {
"type": "PATTERN",
"value": "_?[A-Fa-f0-9]+"
}
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "0o"
},
{
"type": "REPEAT1",
"content": {
"type": "PATTERN",
"value": "_?[0-7]+"
}
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "0b"
},
{
"type": "REPEAT1",
"content": {
"type": "PATTERN",
"value": "_?[0-1]+"
}
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "REPEAT1",
"content": {
"type": "PATTERN",
"value": "_?[0-9]+"
}
}
]
}
]
}
},
"number": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_decimal"
},
{
"type": "SYMBOL",
"name": "_integer"
}
]
},
"raw_string": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_string_start"
},
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_string_content"
}
]
}
},
{
"type": "SYMBOL",
"name": "_string_end"
}
]
},
"regex": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "r/"
},
{
"type": "FIELD",
"name": "pattern",
"content": {
"type": "SYMBOL",
"name": "regex_pattern"
}
},
{
"type": "STRING",
"value": "/"
},
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "flags",
"content": {
"type": "SYMBOL",
"name": "regex_flags"
}
},
{
"type": "BLANK"
}
]
}
]
},
"regex_pattern": {
"type": "IMMEDIATE_TOKEN",
"content": {
"type": "REPEAT1",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "["
},
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "\\"
},
{
"type": "PATTERN",
"value": "."
}
]
},
{
"type": "PATTERN",
"value": "[^\\]\\n\\\\]"
}
]
}
},
{
"type": "STRING",
"value": "]"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "\\"
},
{
"type": "PATTERN",
"value": "."
}
]
},
{
"type": "PATTERN",
"value": "[^/\\\\\\[\\n]"
}
]
}
}
},
"regex_flags": {
"type": "IMMEDIATE_TOKEN",
"content": {
"type": "PATTERN",
"value": "[a-z]+"
}
}
},
"extras": [
{
"type": "SYMBOL",
"name": "comment"
},
{
"type": "PATTERN",
"value": "\\s+"
}
],
"conflicts": [],
"externals": [
{
"type": "SYMBOL",
"name": "_newline"
},
{
"type": "SYMBOL",
"name": "_indent"
},
{
"type": "SYMBOL",
"name": "_dedent"
},
{
"type": "SYMBOL",
"name": "_string_start"
},
{
"type": "SYMBOL",
"name": "_string_content"
},
{
"type": "SYMBOL",
"name": "_string_end"
}
],
"inline": [],
"supertypes": []
}