{
"$schema": "https://tree-sitter.github.io/tree-sitter/assets/schemas/grammar.schema.json",
"name": "vim_map_side",
"rules": {
"map_side": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "expression"
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_not_keycode"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_range_s_command"
},
{
"type": "SYMBOL",
"name": "_vimgrep"
}
]
}
]
},
{
"type": "REPEAT1",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "keycode"
},
{
"type": "SYMBOL",
"name": "_cmd_rhs"
},
{
"type": "SYMBOL",
"name": "_colon_rhs"
},
{
"type": "SYMBOL",
"name": "_not_keycode"
},
{
"type": "SYMBOL",
"name": "_lua_cur_line"
}
]
}
}
]
},
"keycode": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "<"
},
{
"type": "PATTERN",
"value": "[^>\\r\\n]+"
},
{
"type": "STRING",
"value": ">"
}
]
},
"_not_keycode": {
"type": "PATTERN",
"value": "[^<:(\"\\r\\n]+"
},
"_range_s_command": {
"type": "SEQ",
"members": [
{
"type": "ALIAS",
"content": {
"type": "STRING",
"value": ":%"
},
"named": true,
"value": "command"
},
{
"type": "ALIAS",
"content": {
"type": "PATTERN",
"value": "s[^\\r\\n]+"
},
"named": true,
"value": "command"
}
]
},
"_vimgrep": {
"type": "ALIAS",
"content": {
"type": "PATTERN",
"value": ":vimgrep[^\\r\\n]+"
},
"named": true,
"value": "command"
},
"_lua_cur_line": {
"type": "SEQ",
"members": [
{
"type": "ALIAS",
"content": {
"type": "STRING",
"value": ":."
},
"named": true,
"value": "command"
},
{
"type": "ALIAS",
"content": {
"type": "STRING",
"value": "lua"
},
"named": true,
"value": "command"
},
{
"type": "SYMBOL",
"name": "_cr"
}
]
},
"_cmd_rhs": {
"type": "SEQ",
"members": [
{
"type": "ALIAS",
"content": {
"type": "PATTERN",
"value": "<[Cc][Mm][Dd]>"
},
"named": true,
"value": "keycode"
},
{
"type": "SYMBOL",
"name": "command"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_pipe"
},
{
"type": "SYMBOL",
"name": "command"
}
]
}
},
{
"type": "SYMBOL",
"name": "_cr"
}
]
},
"_colon_rhs": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ":"
},
{
"type": "ALIAS",
"content": {
"type": "PATTERN",
"value": "<[Cc]-[Uu]>"
},
"named": true,
"value": "keycode"
},
{
"type": "SYMBOL",
"name": "command"
}
]
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_first_command"
},
"named": true,
"value": "command"
}
]
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_pipe"
},
{
"type": "SYMBOL",
"name": "command"
}
]
}
},
{
"type": "SYMBOL",
"name": "_cr"
}
]
},
"_first_command": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ":"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_range"
},
{
"type": "BLANK"
}
]
},
{
"type": "PATTERN",
"value": "[^<|\\\\]+"
}
]
},
"_range": {
"type": "STRING",
"value": "'<,'>"
},
"command": {
"type": "PATTERN",
"value": "[^<|\\\\]+"
},
"_cr": {
"type": "ALIAS",
"content": {
"type": "PATTERN",
"value": "<[Cc][Rr]>"
},
"named": true,
"value": "keycode"
},
"_pipe": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "\\|"
},
{
"type": "STRING",
"value": "|"
},
{
"type": "ALIAS",
"content": {
"type": "PATTERN",
"value": "<[Bb][Aa][Rr]>"
},
"named": true,
"value": "bar"
}
]
},
"expression": {
"type": "SYMBOL",
"name": "printf"
},
"printf": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "printf"
},
{
"type": "STRING",
"value": "("
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "string"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "_argument"
}
]
}
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ")"
}
]
},
"string": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "'"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "string_content"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "'"
}
]
},
"string_content": {
"type": "PATTERN",
"value": "[^']+"
},
"_argument": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "scoped_identifier"
}
]
},
"scoped_identifier": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "scope"
},
{
"type": "SYMBOL",
"name": "identifier"
}
]
},
"scope": {
"type": "PATTERN",
"value": "[glv]:"
},
"identifier": {
"type": "PATTERN",
"value": "[a-zA-Z_][a-zA-Z0-9_]+"
},
"comment": {
"type": "PATTERN",
"value": "\"[^\\r\\n]*"
},
"_blank": {
"type": "PATTERN",
"value": "\\s+"
}
},
"extras": [
{
"type": "SYMBOL",
"name": "comment"
},
{
"type": "SYMBOL",
"name": "_blank"
}
],
"conflicts": [],
"precedences": [],
"externals": [],
"inline": [],
"supertypes": [],
"reserved": {}
}