{
"$schema": "https://tree-sitter.github.io/tree-sitter/assets/schemas/grammar.schema.json",
"name": "jinja",
"word": "identifier",
"rules": {
"source_file": {
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_node"
}
},
"_node": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "statement"
},
{
"type": "SYMBOL",
"name": "output"
},
{
"type": "SYMBOL",
"name": "comment"
},
{
"type": "SYMBOL",
"name": "text"
}
]
},
"text": {
"type": "PATTERN",
"value": "([^{]|\\{[^{%#])+"
},
"output": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_output_start"
},
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "SYMBOL",
"name": "_output_end"
}
]
},
"_output_start": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "{{"
},
{
"type": "STRING",
"value": "{{-"
},
{
"type": "STRING",
"value": "{{~"
}
]
},
"_output_end": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "}}"
},
{
"type": "STRING",
"value": "-}}"
},
{
"type": "STRING",
"value": "~}}"
}
]
},
"comment": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_comment_start"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "comment_content"
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "_comment_end"
}
]
},
"_comment_start": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "{#"
},
{
"type": "STRING",
"value": "{#-"
},
{
"type": "STRING",
"value": "{#~"
}
]
},
"_comment_end": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "#}"
},
{
"type": "STRING",
"value": "-#}"
},
{
"type": "STRING",
"value": "~#}"
}
]
},
"statement": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "if_statement"
},
{
"type": "SYMBOL",
"name": "for_statement"
},
{
"type": "SYMBOL",
"name": "block_statement"
},
{
"type": "SYMBOL",
"name": "macro_statement"
},
{
"type": "SYMBOL",
"name": "call_statement"
},
{
"type": "SYMBOL",
"name": "filter_statement"
},
{
"type": "SYMBOL",
"name": "raw_statement"
},
{
"type": "SYMBOL",
"name": "with_statement"
},
{
"type": "SYMBOL",
"name": "autoescape_statement"
},
{
"type": "SYMBOL",
"name": "set_statement"
},
{
"type": "SYMBOL",
"name": "extends_statement"
},
{
"type": "SYMBOL",
"name": "include_statement"
},
{
"type": "SYMBOL",
"name": "import_statement"
},
{
"type": "SYMBOL",
"name": "from_statement"
},
{
"type": "SYMBOL",
"name": "do_statement"
},
{
"type": "SYMBOL",
"name": "generic_tag"
},
{
"type": "SYMBOL",
"name": "_unpaired_tag"
}
]
},
"generic_tag": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_statement_start"
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
},
{
"type": "SYMBOL",
"name": "_statement_end"
}
]
},
"_unpaired_tag": {
"type": "PREC",
"value": -10,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_statement_start"
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "endif"
},
{
"type": "STRING",
"value": "endfor"
},
{
"type": "STRING",
"value": "endblock"
},
{
"type": "STRING",
"value": "endmacro"
},
{
"type": "STRING",
"value": "endcall"
},
{
"type": "STRING",
"value": "endfilter"
},
{
"type": "STRING",
"value": "endwith"
},
{
"type": "STRING",
"value": "endautoescape"
},
{
"type": "STRING",
"value": "endset"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "_statement_end"
}
]
}
},
"_statement_start": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "{%"
},
{
"type": "STRING",
"value": "{%-"
},
{
"type": "STRING",
"value": "{%~"
}
]
},
"_statement_end": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "%}"
},
{
"type": "STRING",
"value": "-%}"
},
{
"type": "STRING",
"value": "~%}"
}
]
},
"if_statement": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_statement_start"
},
{
"type": "STRING",
"value": "if"
},
{
"type": "FIELD",
"name": "condition",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
},
{
"type": "SYMBOL",
"name": "_statement_end"
},
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_node"
},
{
"type": "SYMBOL",
"name": "elseif_clause"
},
{
"type": "SYMBOL",
"name": "else_clause"
}
]
}
},
{
"type": "SYMBOL",
"name": "_statement_start"
},
{
"type": "STRING",
"value": "endif"
},
{
"type": "SYMBOL",
"name": "_statement_end"
}
]
},
"elseif_clause": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_statement_start"
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "elif"
},
{
"type": "STRING",
"value": "elseif"
}
]
},
{
"type": "FIELD",
"name": "condition",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
},
{
"type": "SYMBOL",
"name": "_statement_end"
}
]
},
"else_clause": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_statement_start"
},
{
"type": "STRING",
"value": "else"
},
{
"type": "SYMBOL",
"name": "_statement_end"
}
]
},
"for_statement": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_statement_start"
},
{
"type": "STRING",
"value": "for"
},
{
"type": "FIELD",
"name": "variable",
"content": {
"type": "SYMBOL",
"name": "_identifier_list"
}
},
{
"type": "STRING",
"value": "in"
},
{
"type": "FIELD",
"name": "iterable",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "for_condition"
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "recursive"
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "_statement_end"
},
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_node"
},
{
"type": "SYMBOL",
"name": "else_clause"
}
]
}
},
{
"type": "SYMBOL",
"name": "_statement_start"
},
{
"type": "STRING",
"value": "endfor"
},
{
"type": "SYMBOL",
"name": "_statement_end"
}
]
},
"for_condition": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "if"
},
{
"type": "SYMBOL",
"name": "_expression"
}
]
},
"block_statement": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_statement_start"
},
{
"type": "STRING",
"value": "block"
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "scoped"
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "_statement_end"
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_node"
}
},
{
"type": "SYMBOL",
"name": "_statement_start"
},
{
"type": "STRING",
"value": "endblock"
},
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "end_name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "_statement_end"
}
]
},
"macro_statement": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_statement_start"
},
{
"type": "STRING",
"value": "macro"
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "SYMBOL",
"name": "argument_list"
},
{
"type": "SYMBOL",
"name": "_statement_end"
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_node"
}
},
{
"type": "SYMBOL",
"name": "_statement_start"
},
{
"type": "STRING",
"value": "endmacro"
},
{
"type": "SYMBOL",
"name": "_statement_end"
}
]
},
"call_statement": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_statement_start"
},
{
"type": "STRING",
"value": "call"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "argument_list"
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "SYMBOL",
"name": "_statement_end"
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_node"
}
},
{
"type": "SYMBOL",
"name": "_statement_start"
},
{
"type": "STRING",
"value": "endcall"
},
{
"type": "SYMBOL",
"name": "_statement_end"
}
]
},
"filter_statement": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_statement_start"
},
{
"type": "STRING",
"value": "filter"
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "argument_list"
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "_statement_end"
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_node"
}
},
{
"type": "SYMBOL",
"name": "_statement_start"
},
{
"type": "STRING",
"value": "endfilter"
},
{
"type": "SYMBOL",
"name": "_statement_end"
}
]
},
"raw_statement": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_statement_start"
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "raw"
},
{
"type": "STRING",
"value": "verbatim"
}
]
},
{
"type": "SYMBOL",
"name": "_statement_end"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "raw_text"
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "_statement_start"
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "endraw"
},
{
"type": "STRING",
"value": "endverbatim"
}
]
},
{
"type": "SYMBOL",
"name": "_statement_end"
}
]
},
"with_statement": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_statement_start"
},
{
"type": "STRING",
"value": "with"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "assignment_list"
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "_statement_end"
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_node"
}
},
{
"type": "SYMBOL",
"name": "_statement_start"
},
{
"type": "STRING",
"value": "endwith"
},
{
"type": "SYMBOL",
"name": "_statement_end"
}
]
},
"autoescape_statement": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_statement_start"
},
{
"type": "STRING",
"value": "autoescape"
},
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "SYMBOL",
"name": "_statement_end"
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_node"
}
},
{
"type": "SYMBOL",
"name": "_statement_start"
},
{
"type": "STRING",
"value": "endautoescape"
},
{
"type": "SYMBOL",
"name": "_statement_end"
}
]
},
"set_statement": {
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_statement_start"
},
{
"type": "STRING",
"value": "set"
},
{
"type": "FIELD",
"name": "variable",
"content": {
"type": "SYMBOL",
"name": "_identifier_list"
}
},
{
"type": "STRING",
"value": "="
},
{
"type": "FIELD",
"name": "value",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
},
{
"type": "SYMBOL",
"name": "_statement_end"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_statement_start"
},
{
"type": "STRING",
"value": "set"
},
{
"type": "FIELD",
"name": "variable",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "SYMBOL",
"name": "_statement_end"
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_node"
}
},
{
"type": "SYMBOL",
"name": "_statement_start"
},
{
"type": "STRING",
"value": "endset"
},
{
"type": "SYMBOL",
"name": "_statement_end"
}
]
}
]
},
"extends_statement": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_statement_start"
},
{
"type": "STRING",
"value": "extends"
},
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "SYMBOL",
"name": "_statement_end"
}
]
},
"include_statement": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_statement_start"
},
{
"type": "STRING",
"value": "include"
},
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "CHOICE",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "with"
},
{
"type": "STRING",
"value": "context"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "without"
},
{
"type": "STRING",
"value": "context"
}
]
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "ignore"
},
{
"type": "STRING",
"value": "missing"
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "_statement_end"
}
]
},
"import_statement": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_statement_start"
},
{
"type": "STRING",
"value": "import"
},
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "STRING",
"value": "as"
},
{
"type": "FIELD",
"name": "alias",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "with"
},
{
"type": "STRING",
"value": "context"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "without"
},
{
"type": "STRING",
"value": "context"
}
]
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "_statement_end"
}
]
},
"from_statement": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_statement_start"
},
{
"type": "STRING",
"value": "from"
},
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "STRING",
"value": "import"
},
{
"type": "SYMBOL",
"name": "import_list"
},
{
"type": "CHOICE",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "with"
},
{
"type": "STRING",
"value": "context"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "without"
},
{
"type": "STRING",
"value": "context"
}
]
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "_statement_end"
}
]
},
"do_statement": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_statement_start"
},
{
"type": "STRING",
"value": "do"
},
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "SYMBOL",
"name": "_statement_end"
}
]
},
"_identifier_list": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "SYMBOL",
"name": "identifier_list"
}
]
},
"identifier_list": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "REPEAT1",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "identifier"
}
]
}
}
]
},
"import_list": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "import_name"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "import_name"
}
]
}
}
]
},
"import_name": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "as"
},
{
"type": "FIELD",
"name": "alias",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
}
]
},
{
"type": "BLANK"
}
]
}
]
},
"assignment_list": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "assignment"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "assignment"
}
]
}
}
]
},
"assignment": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "STRING",
"value": "="
},
{
"type": "SYMBOL",
"name": "_expression"
}
]
},
"_expression": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "conditional_expression"
},
{
"type": "SYMBOL",
"name": "binary_expression"
},
{
"type": "SYMBOL",
"name": "unary_expression"
},
{
"type": "SYMBOL",
"name": "filter_expression"
},
{
"type": "SYMBOL",
"name": "test_expression"
},
{
"type": "SYMBOL",
"name": "member_expression"
},
{
"type": "SYMBOL",
"name": "subscript_expression"
},
{
"type": "SYMBOL",
"name": "call_expression"
},
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "SYMBOL",
"name": "string"
},
{
"type": "SYMBOL",
"name": "integer"
},
{
"type": "SYMBOL",
"name": "float"
},
{
"type": "SYMBOL",
"name": "boolean"
},
{
"type": "SYMBOL",
"name": "none"
},
{
"type": "SYMBOL",
"name": "list"
},
{
"type": "SYMBOL",
"name": "tuple"
},
{
"type": "SYMBOL",
"name": "dict"
},
{
"type": "SYMBOL",
"name": "parenthesized_expression"
}
]
},
"conditional_expression": {
"type": "CHOICE",
"members": [
{
"type": "PREC_RIGHT",
"value": 1,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "value",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
},
{
"type": "STRING",
"value": "if"
},
{
"type": "FIELD",
"name": "condition",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
},
{
"type": "STRING",
"value": "else"
},
{
"type": "FIELD",
"name": "alternative",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
}
]
}
},
{
"type": "PREC_RIGHT",
"value": 1,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "condition",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
},
{
"type": "STRING",
"value": "?"
},
{
"type": "FIELD",
"name": "consequence",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
},
{
"type": "STRING",
"value": ":"
},
{
"type": "FIELD",
"name": "alternative",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
}
]
}
}
]
},
"binary_expression": {
"type": "CHOICE",
"members": [
{
"type": "PREC_LEFT",
"value": 2,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "left",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
},
{
"type": "STRING",
"value": "or"
},
{
"type": "FIELD",
"name": "right",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
}
]
}
},
{
"type": "PREC_LEFT",
"value": 3,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "left",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
},
{
"type": "STRING",
"value": "and"
},
{
"type": "FIELD",
"name": "right",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
}
]
}
},
{
"type": "PREC_LEFT",
"value": 5,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "left",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
},
{
"type": "STRING",
"value": "in"
},
{
"type": "FIELD",
"name": "right",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
}
]
}
},
{
"type": "PREC_LEFT",
"value": 5,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "left",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
},
{
"type": "STRING",
"value": "not"
},
{
"type": "STRING",
"value": "in"
},
{
"type": "FIELD",
"name": "right",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
}
]
}
},
{
"type": "PREC_LEFT",
"value": 6,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "left",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
},
{
"type": "FIELD",
"name": "operator",
"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": "==="
},
{
"type": "STRING",
"value": "!=="
}
]
}
},
{
"type": "FIELD",
"name": "right",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
}
]
}
},
{
"type": "PREC_LEFT",
"value": 7,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "left",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
},
{
"type": "STRING",
"value": "~"
},
{
"type": "FIELD",
"name": "right",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
}
]
}
},
{
"type": "PREC_LEFT",
"value": 8,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "left",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
},
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "+"
},
{
"type": "STRING",
"value": "-"
}
]
}
},
{
"type": "FIELD",
"name": "right",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
}
]
}
},
{
"type": "PREC_LEFT",
"value": 9,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "left",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
},
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "*"
},
{
"type": "STRING",
"value": "/"
},
{
"type": "STRING",
"value": "//"
},
{
"type": "STRING",
"value": "%"
}
]
}
},
{
"type": "FIELD",
"name": "right",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
}
]
}
},
{
"type": "PREC_RIGHT",
"value": 11,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "left",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
},
{
"type": "STRING",
"value": "**"
},
{
"type": "FIELD",
"name": "right",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
}
]
}
},
{
"type": "PREC_LEFT",
"value": 2,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "left",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
},
{
"type": "STRING",
"value": "??"
},
{
"type": "FIELD",
"name": "right",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
}
]
}
},
{
"type": "PREC_LEFT",
"value": 4,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "left",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
},
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "b-and"
},
{
"type": "STRING",
"value": "b-or"
},
{
"type": "STRING",
"value": "b-xor"
}
]
}
},
{
"type": "FIELD",
"name": "right",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
}
]
}
}
]
},
"unary_expression": {
"type": "PREC_RIGHT",
"value": 10,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "not"
},
{
"type": "STRING",
"value": "+"
},
{
"type": "STRING",
"value": "-"
}
]
}
},
{
"type": "FIELD",
"name": "operand",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
}
]
}
},
"filter_expression": {
"type": "PREC_LEFT",
"value": 12,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "STRING",
"value": "|"
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "argument_list"
},
{
"type": "BLANK"
}
]
}
]
}
},
"test_expression": {
"type": "PREC_LEFT",
"value": 4,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "STRING",
"value": "is"
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "not"
},
{
"type": "BLANK"
}
]
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "argument_list"
},
{
"type": "BLANK"
}
]
}
]
}
},
"member_expression": {
"type": "PREC_LEFT",
"value": 13,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "object",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "."
},
{
"type": "STRING",
"value": "?."
}
]
},
{
"type": "FIELD",
"name": "property",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
}
]
}
},
"subscript_expression": {
"type": "PREC_LEFT",
"value": 13,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "object",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
},
{
"type": "STRING",
"value": "["
},
{
"type": "FIELD",
"name": "index",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
},
{
"type": "STRING",
"value": "]"
}
]
}
},
"call_expression": {
"type": "PREC_LEFT",
"value": 13,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "function",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
},
{
"type": "SYMBOL",
"name": "argument_list"
}
]
}
},
"parenthesized_expression": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "STRING",
"value": ")"
}
]
},
"argument_list": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_argument"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "_argument"
}
]
}
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ")"
}
]
},
"_argument": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "SYMBOL",
"name": "keyword_argument"
},
{
"type": "SYMBOL",
"name": "spread_argument"
}
]
},
"keyword_argument": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "key",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "="
},
{
"type": "STRING",
"value": ":"
}
]
},
{
"type": "FIELD",
"name": "value",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
}
]
},
"spread_argument": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "**"
},
{
"type": "SYMBOL",
"name": "_expression"
}
]
},
"identifier": {
"type": "PATTERN",
"value": "[a-zA-Z_][a-zA-Z0-9_]*"
},
"string": {
"type": "TOKEN",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "\""
},
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "PATTERN",
"value": "[^\"\\\\]"
},
{
"type": "PATTERN",
"value": "\\\\."
}
]
}
},
{
"type": "STRING",
"value": "\""
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "'"
},
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "PATTERN",
"value": "[^'\\\\]"
},
{
"type": "PATTERN",
"value": "\\\\."
}
]
}
},
{
"type": "STRING",
"value": "'"
}
]
}
]
}
},
"integer": {
"type": "TOKEN",
"content": {
"type": "CHOICE",
"members": [
{
"type": "PATTERN",
"value": "0[xX][0-9a-fA-F]+"
},
{
"type": "PATTERN",
"value": "0[oO][0-7]+"
},
{
"type": "PATTERN",
"value": "0[bB][01]+"
},
{
"type": "PATTERN",
"value": "[0-9]+"
}
]
}
},
"float": {
"type": "TOKEN",
"content": {
"type": "CHOICE",
"members": [
{
"type": "PATTERN",
"value": "[0-9]+\\.[0-9]+([eE][+-]?[0-9]+)?"
},
{
"type": "PATTERN",
"value": "[0-9]+[eE][+-]?[0-9]+"
},
{
"type": "PATTERN",
"value": "\\.[0-9]+([eE][+-]?[0-9]+)?"
}
]
}
},
"boolean": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "true"
},
{
"type": "STRING",
"value": "false"
},
{
"type": "STRING",
"value": "True"
},
{
"type": "STRING",
"value": "False"
}
]
},
"none": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "none"
},
{
"type": "STRING",
"value": "null"
},
{
"type": "STRING",
"value": "None"
}
]
},
"list": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "["
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "_expression"
}
]
}
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "]"
}
]
},
"tuple": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "STRING",
"value": ","
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "_expression"
}
]
}
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ")"
}
]
},
"dict": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "{"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "pair"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "pair"
}
]
}
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "}"
}
]
},
"pair": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "key",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ":"
},
{
"type": "STRING",
"value": "="
}
]
},
{
"type": "FIELD",
"name": "value",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
}
]
}
},
"extras": [
{
"type": "PATTERN",
"value": "\\s"
}
],
"conflicts": [
[
"_argument",
"tuple"
],
[
"_argument",
"parenthesized_expression"
]
],
"precedences": [],
"externals": [
{
"type": "SYMBOL",
"name": "raw_text"
},
{
"type": "SYMBOL",
"name": "comment_content"
}
],
"inline": [],
"supertypes": [],
"reserved": {}
}