{
"$schema": "https://tree-sitter.github.io/tree-sitter/assets/schemas/grammar.schema.json",
"name": "ktav",
"word": "_key_segment",
"rules": {
"source_file": {
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_line"
}
},
"_line": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "comment"
},
{
"type": "SYMBOL",
"name": "blank_line"
},
{
"type": "SYMBOL",
"name": "object_pair"
},
{
"type": "SYMBOL",
"name": "top_array_item"
}
]
},
"blank_line": {
"type": "SYMBOL",
"name": "_newline"
},
"_newline": {
"type": "PATTERN",
"value": "\\r?\\n"
},
"comment": {
"type": "TOKEN",
"content": {
"type": "PREC",
"value": 1,
"content": {
"type": "PATTERN",
"value": "##[^\\r\\n]*\\r?\\n"
}
}
},
"object_pair": {
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "key",
"content": {
"type": "SYMBOL",
"name": "key"
}
},
{
"type": "FIELD",
"name": "separator",
"content": {
"type": "SYMBOL",
"name": "sep_raw"
}
},
{
"type": "SYMBOL",
"name": "_marker_ws"
},
{
"type": "FIELD",
"name": "value",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "empty_value"
},
{
"type": "SYMBOL",
"name": "raw_scalar"
}
]
}
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "key",
"content": {
"type": "SYMBOL",
"name": "key"
}
},
{
"type": "FIELD",
"name": "separator",
"content": {
"type": "SYMBOL",
"name": "sep_string"
}
},
{
"type": "SYMBOL",
"name": "_marker_ws"
},
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "value",
"content": {
"type": "SYMBOL",
"name": "empty_value"
}
},
{
"type": "FIELD",
"name": "value",
"content": {
"type": "SYMBOL",
"name": "_value_line"
}
}
]
}
]
}
]
},
"sep_raw": {
"type": "TOKEN",
"content": {
"type": "PREC",
"value": 3,
"content": {
"type": "STRING",
"value": "::"
}
}
},
"sep_string": {
"type": "TOKEN",
"content": {
"type": "PREC",
"value": 1,
"content": {
"type": "STRING",
"value": ":"
}
}
},
"key": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_spaced_key"
},
{
"type": "SYMBOL",
"name": "dotted_key"
}
]
},
"_spaced_key": {
"type": "PREC_LEFT",
"value": 0,
"content": {
"type": "REPEAT1",
"content": {
"type": "SYMBOL",
"name": "_key_segment"
}
}
},
"dotted_key": {
"type": "PREC_LEFT",
"value": 0,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_key_segment"
},
{
"type": "REPEAT1",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "."
},
{
"type": "SYMBOL",
"name": "_key_segment"
}
]
}
}
]
}
},
"_key_segment": {
"type": "PATTERN",
"value": "([^\\s\\[\\]\\{\\}\\(\\):#,.\\r\\n\\\\]|\\\\[\\\\,\\}\\]\\{\\[nr.:])+"
},
"_value_line": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "compound_object"
},
{
"type": "SYMBOL",
"name": "compound_array"
},
{
"type": "SYMBOL",
"name": "multiline_stripped"
},
{
"type": "SYMBOL",
"name": "multiline_verbatim"
},
{
"type": "SYMBOL",
"name": "empty_object"
},
{
"type": "SYMBOL",
"name": "empty_array"
},
{
"type": "SYMBOL",
"name": "empty_paren"
},
{
"type": "SYMBOL",
"name": "empty_double_paren"
},
{
"type": "SYMBOL",
"name": "inline_object"
},
{
"type": "SYMBOL",
"name": "inline_array"
},
{
"type": "SYMBOL",
"name": "keyword"
},
{
"type": "SYMBOL",
"name": "integer"
},
{
"type": "SYMBOL",
"name": "float"
},
{
"type": "SYMBOL",
"name": "scalar"
}
]
},
"empty_value": {
"type": "SYMBOL",
"name": "_newline"
},
"empty_object": {
"type": "SEQ",
"members": [
{
"type": "TOKEN",
"content": {
"type": "PREC",
"value": 5,
"content": {
"type": "STRING",
"value": "{}"
}
}
},
{
"type": "SYMBOL",
"name": "_newline"
}
]
},
"empty_array": {
"type": "SEQ",
"members": [
{
"type": "TOKEN",
"content": {
"type": "PREC",
"value": 5,
"content": {
"type": "STRING",
"value": "[]"
}
}
},
{
"type": "SYMBOL",
"name": "_newline"
}
]
},
"empty_paren": {
"type": "SEQ",
"members": [
{
"type": "TOKEN",
"content": {
"type": "PREC",
"value": 5,
"content": {
"type": "STRING",
"value": "()"
}
}
},
{
"type": "SYMBOL",
"name": "_newline"
}
]
},
"empty_double_paren": {
"type": "SEQ",
"members": [
{
"type": "TOKEN",
"content": {
"type": "PREC",
"value": 5,
"content": {
"type": "STRING",
"value": "(())"
}
}
},
{
"type": "SYMBOL",
"name": "_newline"
}
]
},
"open_brace": {
"type": "TOKEN",
"content": {
"type": "PREC",
"value": 4,
"content": {
"type": "PATTERN",
"value": "\\{[ \\t]*\\r?\\n"
}
}
},
"close_brace": {
"type": "SEQ",
"members": [
{
"type": "TOKEN",
"content": {
"type": "PREC",
"value": 4,
"content": {
"type": "STRING",
"value": "}"
}
}
},
{
"type": "SYMBOL",
"name": "_strict_eol"
}
]
},
"open_bracket": {
"type": "TOKEN",
"content": {
"type": "PREC",
"value": 4,
"content": {
"type": "PATTERN",
"value": "\\[[ \\t]*\\r?\\n"
}
}
},
"close_bracket": {
"type": "SEQ",
"members": [
{
"type": "TOKEN",
"content": {
"type": "PREC",
"value": 4,
"content": {
"type": "STRING",
"value": "]"
}
}
},
{
"type": "SYMBOL",
"name": "_strict_eol"
}
]
},
"open_paren": {
"type": "TOKEN",
"content": {
"type": "PREC",
"value": 4,
"content": {
"type": "PATTERN",
"value": "\\([ \\t]*\\r?\\n"
}
}
},
"open_dparen": {
"type": "TOKEN",
"content": {
"type": "PREC",
"value": 5,
"content": {
"type": "PATTERN",
"value": "\\(\\([ \\t]*\\r?\\n"
}
}
},
"close_paren": {
"type": "SYMBOL",
"name": "_stripped_close"
},
"close_dparen": {
"type": "SYMBOL",
"name": "_verbatim_close"
},
"compound_object": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "open_brace"
},
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "comment"
},
{
"type": "SYMBOL",
"name": "blank_line"
},
{
"type": "SYMBOL",
"name": "object_pair"
}
]
}
},
{
"type": "SYMBOL",
"name": "close_brace"
}
]
},
"compound_array": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "open_bracket"
},
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "comment"
},
{
"type": "SYMBOL",
"name": "blank_line"
},
{
"type": "SYMBOL",
"name": "array_item"
}
]
}
},
{
"type": "SYMBOL",
"name": "close_bracket"
}
]
},
"inline_object": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "{"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_inline_pair_list"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "}"
},
{
"type": "SYMBOL",
"name": "_newline"
}
]
},
"inline_array": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "["
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_inline_item_list"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "]"
},
{
"type": "SYMBOL",
"name": "_newline"
}
]
},
"_inline_pair_list": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "inline_pair"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "inline_pair"
}
]
}
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "BLANK"
}
]
}
]
},
"inline_pair": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "key",
"content": {
"type": "SYMBOL",
"name": "key"
}
},
{
"type": "FIELD",
"name": "separator",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "sep_raw"
},
{
"type": "SYMBOL",
"name": "sep_string"
}
]
}
},
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "value",
"content": {
"type": "SYMBOL",
"name": "inline_value"
}
},
{
"type": "BLANK"
}
]
}
]
},
"_inline_item_list": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "inline_value"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "inline_value"
}
]
}
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "BLANK"
}
]
}
]
},
"inline_value": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "nested_inline_object"
},
{
"type": "SYMBOL",
"name": "nested_inline_array"
},
{
"type": "SYMBOL",
"name": "inline_scalar"
}
]
},
"nested_inline_object": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "{"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_inline_pair_list"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "}"
}
]
},
"nested_inline_array": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "["
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_inline_item_list"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "]"
}
]
},
"inline_scalar": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "escape_sequence"
},
{
"type": "SYMBOL",
"name": "_inline_scalar_head"
}
]
},
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "escape_sequence"
},
{
"type": "SYMBOL",
"name": "_inline_scalar_text"
}
]
}
}
]
},
"escape_sequence": {
"type": "TOKEN",
"content": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "\\\\"
},
{
"type": "STRING",
"value": "\\,"
},
{
"type": "STRING",
"value": "\\}"
},
{
"type": "STRING",
"value": "\\]"
},
{
"type": "STRING",
"value": "\\{"
},
{
"type": "STRING",
"value": "\\["
},
{
"type": "STRING",
"value": "\\n"
},
{
"type": "STRING",
"value": "\\r"
},
{
"type": "STRING",
"value": "\\."
},
{
"type": "STRING",
"value": "\\:"
}
]
}
},
"_inline_scalar_head": {
"type": "TOKEN",
"content": {
"type": "PATTERN",
"value": "[^\\s\\\\,\\{\\[\\}\\]\\r\\n][^\\\\,\\}\\]\\r\\n]*"
}
},
"_inline_scalar_text": {
"type": "TOKEN",
"content": {
"type": "PATTERN",
"value": "[^\\\\,\\}\\]\\r\\n]+"
}
},
"array_item": {
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "marker",
"content": {
"type": "SYMBOL",
"name": "sep_raw"
}
},
{
"type": "SYMBOL",
"name": "_marker_ws"
},
{
"type": "FIELD",
"name": "value",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "empty_value"
},
{
"type": "SYMBOL",
"name": "raw_scalar"
}
]
}
}
]
},
{
"type": "FIELD",
"name": "value",
"content": {
"type": "SYMBOL",
"name": "_value_line"
}
}
]
},
"top_array_item": {
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "marker",
"content": {
"type": "SYMBOL",
"name": "sep_raw"
}
},
{
"type": "SYMBOL",
"name": "_marker_ws"
},
{
"type": "FIELD",
"name": "value",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "empty_value"
},
{
"type": "SYMBOL",
"name": "raw_scalar"
}
]
}
}
]
},
{
"type": "FIELD",
"name": "value",
"content": {
"type": "SYMBOL",
"name": "compound_object"
}
},
{
"type": "FIELD",
"name": "value",
"content": {
"type": "SYMBOL",
"name": "compound_array"
}
},
{
"type": "FIELD",
"name": "value",
"content": {
"type": "SYMBOL",
"name": "multiline_stripped"
}
},
{
"type": "FIELD",
"name": "value",
"content": {
"type": "SYMBOL",
"name": "multiline_verbatim"
}
},
{
"type": "FIELD",
"name": "value",
"content": {
"type": "SYMBOL",
"name": "empty_object"
}
},
{
"type": "FIELD",
"name": "value",
"content": {
"type": "SYMBOL",
"name": "empty_array"
}
},
{
"type": "FIELD",
"name": "value",
"content": {
"type": "SYMBOL",
"name": "empty_paren"
}
},
{
"type": "FIELD",
"name": "value",
"content": {
"type": "SYMBOL",
"name": "empty_double_paren"
}
},
{
"type": "FIELD",
"name": "value",
"content": {
"type": "SYMBOL",
"name": "inline_object"
}
},
{
"type": "FIELD",
"name": "value",
"content": {
"type": "SYMBOL",
"name": "inline_array"
}
},
{
"type": "FIELD",
"name": "value",
"content": {
"type": "SYMBOL",
"name": "keyword"
}
},
{
"type": "FIELD",
"name": "value",
"content": {
"type": "SYMBOL",
"name": "integer"
}
},
{
"type": "FIELD",
"name": "value",
"content": {
"type": "SYMBOL",
"name": "float"
}
},
{
"type": "FIELD",
"name": "value",
"content": {
"type": "SYMBOL",
"name": "top_scalar"
}
}
]
},
"top_scalar": {
"type": "SYMBOL",
"name": "_top_scalar_text"
},
"_top_scalar_text": {
"type": "TOKEN",
"content": {
"type": "PATTERN",
"value": "[^\\s:\\{\\[\\(\\r\\n][^:\\r\\n]*\\r?\\n"
}
},
"multiline_stripped": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "open_paren"
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "multiline_content_line"
}
},
{
"type": "SYMBOL",
"name": "close_paren"
}
]
},
"multiline_verbatim": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "open_dparen"
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "multiline_content_line"
}
},
{
"type": "SYMBOL",
"name": "close_dparen"
}
]
},
"multiline_content_line": {
"type": "TOKEN",
"content": {
"type": "PREC",
"value": -1,
"content": {
"type": "PATTERN",
"value": "[^\\r\\n]*\\r?\\n"
}
}
},
"scalar": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_scalar_text"
},
{
"type": "SYMBOL",
"name": "_newline"
}
]
},
"raw_scalar": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_raw_scalar_text"
},
{
"type": "SYMBOL",
"name": "_newline"
}
]
},
"_raw_scalar_text": {
"type": "PATTERN",
"value": "[^\\s\\r\\n][^\\r\\n]*"
},
"_scalar_text": {
"type": "PATTERN",
"value": "[^\\s\\{\\[\\(\\r\\n][^\\r\\n]*"
},
"integer": {
"type": "TOKEN",
"content": {
"type": "PREC",
"value": 2,
"content": {
"type": "PATTERN",
"value": "[+-]?(0x[0-9a-fA-F]([_]?[0-9a-fA-F])*|0o[0-7]([_]?[0-7])*|0b[01]([_]?[01])*|[0-9]([_]?[0-9])*)[ \\t]*\\r?\\n"
}
}
},
"float": {
"type": "TOKEN",
"content": {
"type": "PREC",
"value": 3,
"content": {
"type": "PATTERN",
"value": "([+-]?[0-9]([_]?[0-9])*\\.[0-9]([_]?[0-9])*([eE][+-]?[0-9]([_]?[0-9])*)?|[+-]?[0-9]([_]?[0-9])*[eE][+-]?[0-9]([_]?[0-9])*)[ \\t]*\\r?\\n"
}
}
},
"keyword": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "kw_null"
},
{
"type": "SYMBOL",
"name": "kw_true"
},
{
"type": "SYMBOL",
"name": "kw_false"
}
]
},
{
"type": "SYMBOL",
"name": "_newline"
}
]
},
"kw_null": {
"type": "TOKEN",
"content": {
"type": "PREC",
"value": 3,
"content": {
"type": "STRING",
"value": "null"
}
}
},
"kw_true": {
"type": "TOKEN",
"content": {
"type": "PREC",
"value": 3,
"content": {
"type": "STRING",
"value": "true"
}
}
},
"kw_false": {
"type": "TOKEN",
"content": {
"type": "PREC",
"value": 3,
"content": {
"type": "STRING",
"value": "false"
}
}
}
},
"extras": [
{
"type": "PATTERN",
"value": "[ \\t]+"
}
],
"conflicts": [],
"precedences": [],
"externals": [
{
"type": "SYMBOL",
"name": "_marker_ws"
},
{
"type": "SYMBOL",
"name": "_strict_eol"
},
{
"type": "SYMBOL",
"name": "_stripped_close"
},
{
"type": "SYMBOL",
"name": "_verbatim_close"
}
],
"inline": [],
"supertypes": [],
"reserved": {}
}