{
"$schema": "https://tree-sitter.github.io/tree-sitter/assets/schemas/grammar.schema.json",
"name": "ruby",
"word": "identifier",
"rules": {
"program": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_statements"
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "PATTERN",
"value": "__END__"
},
{
"type": "SYMBOL",
"name": "uninterpreted"
}
]
}
]
},
{
"type": "BLANK"
}
]
}
]
},
"uninterpreted": {
"type": "PATTERN",
"value": "(.|\\s)*"
},
"block_body": {
"type": "SYMBOL",
"name": "_statements"
},
"_statements": {
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "REPEAT1",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_statement"
},
{
"type": "SYMBOL",
"name": "_terminator"
}
]
},
{
"type": "SYMBOL",
"name": "empty_statement"
}
]
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_statement"
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "SYMBOL",
"name": "_statement"
}
]
},
"begin_block": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "BEGIN"
},
{
"type": "STRING",
"value": "{"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_statements"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "}"
}
]
},
"end_block": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "END"
},
{
"type": "STRING",
"value": "{"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_statements"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "}"
}
]
},
"_statement": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "undef"
},
{
"type": "SYMBOL",
"name": "alias"
},
{
"type": "SYMBOL",
"name": "if_modifier"
},
{
"type": "SYMBOL",
"name": "unless_modifier"
},
{
"type": "SYMBOL",
"name": "while_modifier"
},
{
"type": "SYMBOL",
"name": "until_modifier"
},
{
"type": "SYMBOL",
"name": "rescue_modifier"
},
{
"type": "SYMBOL",
"name": "begin_block"
},
{
"type": "SYMBOL",
"name": "end_block"
},
{
"type": "SYMBOL",
"name": "_expression"
}
]
},
"method": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "def"
},
{
"type": "SYMBOL",
"name": "_method_rest"
}
]
},
"singleton_method": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "def"
},
{
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "object",
"content": {
"type": "SYMBOL",
"name": "_variable"
}
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "FIELD",
"name": "object",
"content": {
"type": "SYMBOL",
"name": "_arg"
}
},
{
"type": "STRING",
"value": ")"
}
]
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "."
},
{
"type": "STRING",
"value": "::"
}
]
}
]
},
{
"type": "SYMBOL",
"name": "_method_rest"
}
]
},
"_method_rest": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "_method_name"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_body_expr"
},
{
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "parameters",
"content": {
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "parameters"
},
"named": true,
"value": "method_parameters"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_terminator"
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "body",
"content": {
"type": "SYMBOL",
"name": "body_statement"
}
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "end"
}
]
},
{
"type": "SYMBOL",
"name": "_body_expr"
}
]
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "parameters",
"content": {
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "bare_parameters"
},
"named": true,
"value": "method_parameters"
}
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "_terminator"
},
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "body",
"content": {
"type": "SYMBOL",
"name": "body_statement"
}
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "end"
}
]
}
]
}
]
},
"rescue_modifier_arg": {
"type": "PREC",
"value": 16,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "body",
"content": {
"type": "SYMBOL",
"name": "_arg"
}
},
{
"type": "STRING",
"value": "rescue"
},
{
"type": "FIELD",
"name": "handler",
"content": {
"type": "SYMBOL",
"name": "_arg"
}
}
]
}
},
"rescue_modifier_expression": {
"type": "PREC",
"value": 16,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "body",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
},
{
"type": "STRING",
"value": "rescue"
},
{
"type": "FIELD",
"name": "handler",
"content": {
"type": "SYMBOL",
"name": "_arg"
}
}
]
}
},
"_body_expr": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "="
},
{
"type": "FIELD",
"name": "body",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_arg"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "rescue_modifier_arg"
},
"named": true,
"value": "rescue_modifier"
}
]
}
}
]
},
"parameters": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_formal_parameter"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "_formal_parameter"
}
]
}
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ")"
}
]
},
"bare_parameters": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_simple_formal_parameter"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "_formal_parameter"
}
]
}
}
]
},
"block_parameters": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "|"
},
{
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_formal_parameter"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "_formal_parameter"
}
]
}
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ";"
},
{
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "locals",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "FIELD",
"name": "locals",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
}
]
}
}
]
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "|"
}
]
},
"_formal_parameter": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_simple_formal_parameter"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "parameters"
},
"named": true,
"value": "destructured_parameter"
}
]
},
"_simple_formal_parameter": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "SYMBOL",
"name": "splat_parameter"
},
{
"type": "SYMBOL",
"name": "hash_splat_parameter"
},
{
"type": "SYMBOL",
"name": "hash_splat_nil"
},
{
"type": "SYMBOL",
"name": "forward_parameter"
},
{
"type": "SYMBOL",
"name": "block_parameter"
},
{
"type": "SYMBOL",
"name": "keyword_parameter"
},
{
"type": "SYMBOL",
"name": "optional_parameter"
}
]
},
"forward_parameter": {
"type": "STRING",
"value": "..."
},
"splat_parameter": {
"type": "PREC_RIGHT",
"value": -2,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "*"
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "BLANK"
}
]
}
}
]
}
},
"hash_splat_parameter": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "**"
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "BLANK"
}
]
}
}
]
},
"hash_splat_nil": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "**"
},
{
"type": "STRING",
"value": "nil"
}
]
},
"block_parameter": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "&"
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "BLANK"
}
]
}
}
]
},
"keyword_parameter": {
"type": "PREC_RIGHT",
"value": 51,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "IMMEDIATE_TOKEN",
"content": {
"type": "STRING",
"value": ":"
}
},
{
"type": "FIELD",
"name": "value",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_arg"
},
{
"type": "BLANK"
}
]
}
}
]
}
},
"optional_parameter": {
"type": "PREC",
"value": 51,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "STRING",
"value": "="
},
{
"type": "FIELD",
"name": "value",
"content": {
"type": "SYMBOL",
"name": "_arg"
}
}
]
}
},
"class": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "class"
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "constant"
},
{
"type": "SYMBOL",
"name": "scope_resolution"
}
]
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "superclass",
"content": {
"type": "SYMBOL",
"name": "superclass"
}
},
{
"type": "SYMBOL",
"name": "_terminator"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_terminator"
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "body",
"content": {
"type": "SYMBOL",
"name": "body_statement"
}
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "end"
}
]
},
"superclass": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "<"
},
{
"type": "SYMBOL",
"name": "_expression"
}
]
},
"singleton_class": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "class"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_singleton_class_left_angle_left_langle"
},
"named": false,
"value": "<<"
},
{
"type": "FIELD",
"name": "value",
"content": {
"type": "SYMBOL",
"name": "_arg"
}
},
{
"type": "SYMBOL",
"name": "_terminator"
},
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "body",
"content": {
"type": "SYMBOL",
"name": "body_statement"
}
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "end"
}
]
},
"module": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "module"
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "constant"
},
{
"type": "SYMBOL",
"name": "scope_resolution"
}
]
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_terminator"
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "body",
"content": {
"type": "SYMBOL",
"name": "body_statement"
}
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "end"
}
]
},
"return_command": {
"type": "PREC_LEFT",
"value": 0,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "return"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "command_argument_list"
},
"named": true,
"value": "argument_list"
}
]
}
},
"yield_command": {
"type": "PREC_LEFT",
"value": 0,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "yield"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "command_argument_list"
},
"named": true,
"value": "argument_list"
}
]
}
},
"break_command": {
"type": "PREC_LEFT",
"value": 0,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "break"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "command_argument_list"
},
"named": true,
"value": "argument_list"
}
]
}
},
"next_command": {
"type": "PREC_LEFT",
"value": 0,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "next"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "command_argument_list"
},
"named": true,
"value": "argument_list"
}
]
}
},
"return": {
"type": "PREC_LEFT",
"value": 0,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "return"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "argument_list"
},
{
"type": "BLANK"
}
]
}
]
}
},
"yield": {
"type": "PREC_LEFT",
"value": 0,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "yield"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "argument_list"
},
{
"type": "BLANK"
}
]
}
]
}
},
"break": {
"type": "PREC_LEFT",
"value": 0,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "break"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "argument_list"
},
{
"type": "BLANK"
}
]
}
]
}
},
"next": {
"type": "PREC_LEFT",
"value": 0,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "next"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "argument_list"
},
{
"type": "BLANK"
}
]
}
]
}
},
"redo": {
"type": "PREC_LEFT",
"value": 0,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "redo"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "argument_list"
},
{
"type": "BLANK"
}
]
}
]
}
},
"retry": {
"type": "PREC_LEFT",
"value": 0,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "retry"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "argument_list"
},
{
"type": "BLANK"
}
]
}
]
}
},
"if_modifier": {
"type": "PREC",
"value": 16,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "body",
"content": {
"type": "SYMBOL",
"name": "_statement"
}
},
{
"type": "STRING",
"value": "if"
},
{
"type": "FIELD",
"name": "condition",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
}
]
}
},
"unless_modifier": {
"type": "PREC",
"value": 16,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "body",
"content": {
"type": "SYMBOL",
"name": "_statement"
}
},
{
"type": "STRING",
"value": "unless"
},
{
"type": "FIELD",
"name": "condition",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
}
]
}
},
"while_modifier": {
"type": "PREC",
"value": 16,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "body",
"content": {
"type": "SYMBOL",
"name": "_statement"
}
},
{
"type": "STRING",
"value": "while"
},
{
"type": "FIELD",
"name": "condition",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
}
]
}
},
"until_modifier": {
"type": "PREC",
"value": 16,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "body",
"content": {
"type": "SYMBOL",
"name": "_statement"
}
},
{
"type": "STRING",
"value": "until"
},
{
"type": "FIELD",
"name": "condition",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
}
]
}
},
"rescue_modifier": {
"type": "PREC",
"value": 16,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "body",
"content": {
"type": "SYMBOL",
"name": "_statement"
}
},
{
"type": "STRING",
"value": "rescue"
},
{
"type": "FIELD",
"name": "handler",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
}
]
}
},
"while": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "while"
},
{
"type": "FIELD",
"name": "condition",
"content": {
"type": "SYMBOL",
"name": "_statement"
}
},
{
"type": "FIELD",
"name": "body",
"content": {
"type": "SYMBOL",
"name": "do"
}
}
]
},
"until": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "until"
},
{
"type": "FIELD",
"name": "condition",
"content": {
"type": "SYMBOL",
"name": "_statement"
}
},
{
"type": "FIELD",
"name": "body",
"content": {
"type": "SYMBOL",
"name": "do"
}
}
]
},
"for": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "for"
},
{
"type": "FIELD",
"name": "pattern",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_lhs"
},
{
"type": "SYMBOL",
"name": "left_assignment_list"
}
]
}
},
{
"type": "FIELD",
"name": "value",
"content": {
"type": "SYMBOL",
"name": "in"
}
},
{
"type": "FIELD",
"name": "body",
"content": {
"type": "SYMBOL",
"name": "do"
}
}
]
},
"in": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "in"
},
{
"type": "SYMBOL",
"name": "_arg"
}
]
},
"do": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "do"
},
{
"type": "SYMBOL",
"name": "_terminator"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_statements"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "end"
}
]
},
"case": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "case"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_line_break"
},
{
"type": "BLANK"
}
]
},
{
"type": "FIELD",
"name": "value",
"content": {
"type": "SYMBOL",
"name": "_statement"
}
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_terminator"
},
{
"type": "BLANK"
}
]
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "when"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "else"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "end"
}
]
},
"case_match": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "case"
},
{
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_line_break"
},
{
"type": "BLANK"
}
]
},
{
"type": "FIELD",
"name": "value",
"content": {
"type": "SYMBOL",
"name": "_statement"
}
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_terminator"
},
{
"type": "BLANK"
}
]
},
{
"type": "REPEAT1",
"content": {
"type": "FIELD",
"name": "clauses",
"content": {
"type": "SYMBOL",
"name": "in_clause"
}
}
},
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "else",
"content": {
"type": "SYMBOL",
"name": "else"
}
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "end"
}
]
},
"when": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "when"
},
{
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "pattern",
"content": {
"type": "SYMBOL",
"name": "pattern"
}
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "FIELD",
"name": "pattern",
"content": {
"type": "SYMBOL",
"name": "pattern"
}
}
]
}
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_terminator"
},
{
"type": "FIELD",
"name": "body",
"content": {
"type": "SYMBOL",
"name": "then"
}
}
]
}
]
},
"in_clause": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "in"
},
{
"type": "FIELD",
"name": "pattern",
"content": {
"type": "SYMBOL",
"name": "_pattern_top_expr_body"
}
},
{
"type": "FIELD",
"name": "guard",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_guard"
},
{
"type": "BLANK"
}
]
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_terminator"
},
{
"type": "FIELD",
"name": "body",
"content": {
"type": "SYMBOL",
"name": "then"
}
}
]
}
]
},
"pattern": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_arg"
},
{
"type": "SYMBOL",
"name": "splat_argument"
}
]
},
"_guard": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "if_guard"
},
{
"type": "SYMBOL",
"name": "unless_guard"
}
]
},
"if_guard": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "if"
},
{
"type": "FIELD",
"name": "condition",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
}
]
},
"unless_guard": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "unless"
},
{
"type": "FIELD",
"name": "condition",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
}
]
},
"_pattern_top_expr_body": {
"type": "PREC",
"value": -1,
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_pattern_expr"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_array_pattern_n"
},
"named": true,
"value": "array_pattern"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_find_pattern_body"
},
"named": true,
"value": "find_pattern"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_hash_pattern_body"
},
"named": true,
"value": "hash_pattern"
}
]
}
},
"_array_pattern_n": {
"type": "PREC_RIGHT",
"value": 0,
"content": {
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_pattern_expr"
},
{
"type": "ALIAS",
"content": {
"type": "STRING",
"value": ","
},
"named": true,
"value": "splat_parameter"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_pattern_expr"
},
{
"type": "STRING",
"value": ","
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_pattern_expr"
},
{
"type": "SYMBOL",
"name": "_array_pattern_n"
}
]
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "splat_parameter"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "_pattern_expr"
}
]
}
}
]
}
]
}
},
"_pattern_expr": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "as_pattern"
},
{
"type": "SYMBOL",
"name": "_pattern_expr_alt"
}
]
},
"as_pattern": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "value",
"content": {
"type": "SYMBOL",
"name": "_pattern_expr"
}
},
{
"type": "STRING",
"value": "=>"
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
}
]
},
"_pattern_expr_alt": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "alternative_pattern"
},
{
"type": "SYMBOL",
"name": "_pattern_expr_basic"
}
]
},
"alternative_pattern": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "alternatives",
"content": {
"type": "SYMBOL",
"name": "_pattern_expr_basic"
}
},
{
"type": "REPEAT1",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "|"
},
{
"type": "FIELD",
"name": "alternatives",
"content": {
"type": "SYMBOL",
"name": "_pattern_expr_basic"
}
}
]
}
}
]
},
"_array_pattern_body": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_pattern_expr"
},
{
"type": "SYMBOL",
"name": "_array_pattern_n"
}
]
},
"array_pattern": {
"type": "PREC_RIGHT",
"value": -1,
"content": {
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "["
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_array_pattern_body"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "]"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "class",
"content": {
"type": "SYMBOL",
"name": "_pattern_constant"
}
},
{
"type": "IMMEDIATE_TOKEN",
"content": {
"type": "STRING",
"value": "["
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_array_pattern_body"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "]"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "class",
"content": {
"type": "SYMBOL",
"name": "_pattern_constant"
}
},
{
"type": "IMMEDIATE_TOKEN",
"content": {
"type": "STRING",
"value": "("
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_array_pattern_body"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ")"
}
]
}
]
}
},
"_find_pattern_body": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "splat_parameter"
},
{
"type": "REPEAT1",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "_pattern_expr"
}
]
}
},
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "splat_parameter"
}
]
},
"find_pattern": {
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "["
},
{
"type": "SYMBOL",
"name": "_find_pattern_body"
},
{
"type": "STRING",
"value": "]"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "class",
"content": {
"type": "SYMBOL",
"name": "_pattern_constant"
}
},
{
"type": "IMMEDIATE_TOKEN",
"content": {
"type": "STRING",
"value": "["
}
},
{
"type": "SYMBOL",
"name": "_find_pattern_body"
},
{
"type": "STRING",
"value": "]"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "class",
"content": {
"type": "SYMBOL",
"name": "_pattern_constant"
}
},
{
"type": "IMMEDIATE_TOKEN",
"content": {
"type": "STRING",
"value": "("
}
},
{
"type": "SYMBOL",
"name": "_find_pattern_body"
},
{
"type": "STRING",
"value": ")"
}
]
}
]
},
"_hash_pattern_body": {
"type": "PREC_RIGHT",
"value": 0,
"content": {
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "keyword_pattern"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "keyword_pattern"
}
]
}
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "keyword_pattern"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "keyword_pattern"
}
]
}
}
]
},
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "_hash_pattern_any_rest"
}
]
},
{
"type": "SYMBOL",
"name": "_hash_pattern_any_rest"
}
]
}
},
"keyword_pattern": {
"type": "PREC_RIGHT",
"value": -1,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "key",
"content": {
"type": "CHOICE",
"members": [
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "identifier"
},
"named": true,
"value": "hash_key_symbol"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "constant"
},
"named": true,
"value": "hash_key_symbol"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "identifier_suffix"
},
"named": true,
"value": "hash_key_symbol"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "constant_suffix"
},
"named": true,
"value": "hash_key_symbol"
},
{
"type": "SYMBOL",
"name": "string"
}
]
}
},
{
"type": "IMMEDIATE_TOKEN",
"content": {
"type": "STRING",
"value": ":"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "value",
"content": {
"type": "SYMBOL",
"name": "_pattern_expr"
}
},
{
"type": "BLANK"
}
]
}
]
}
},
"_hash_pattern_any_rest": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "hash_splat_parameter"
},
{
"type": "SYMBOL",
"name": "hash_splat_nil"
}
]
},
"hash_pattern": {
"type": "PREC_RIGHT",
"value": -1,
"content": {
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "{"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_hash_pattern_body"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "}"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "class",
"content": {
"type": "SYMBOL",
"name": "_pattern_constant"
}
},
{
"type": "IMMEDIATE_TOKEN",
"content": {
"type": "STRING",
"value": "["
}
},
{
"type": "SYMBOL",
"name": "_hash_pattern_body"
},
{
"type": "STRING",
"value": "]"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "class",
"content": {
"type": "SYMBOL",
"name": "_pattern_constant"
}
},
{
"type": "IMMEDIATE_TOKEN",
"content": {
"type": "STRING",
"value": "("
}
},
{
"type": "SYMBOL",
"name": "_hash_pattern_body"
},
{
"type": "STRING",
"value": ")"
}
]
}
]
}
},
"_pattern_expr_basic": {
"type": "PREC_RIGHT",
"value": -1,
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_pattern_value"
},
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "SYMBOL",
"name": "array_pattern"
},
{
"type": "SYMBOL",
"name": "find_pattern"
},
{
"type": "SYMBOL",
"name": "hash_pattern"
},
{
"type": "SYMBOL",
"name": "parenthesized_pattern"
}
]
}
},
"parenthesized_pattern": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "SYMBOL",
"name": "_pattern_expr"
},
{
"type": "STRING",
"value": ")"
}
]
},
"_pattern_value": {
"type": "PREC_RIGHT",
"value": -1,
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_pattern_primitive"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_pattern_range"
},
"named": true,
"value": "range"
},
{
"type": "SYMBOL",
"name": "variable_reference_pattern"
},
{
"type": "SYMBOL",
"name": "expression_reference_pattern"
},
{
"type": "SYMBOL",
"name": "_pattern_constant"
}
]
}
},
"_pattern_range": {
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "begin",
"content": {
"type": "SYMBOL",
"name": "_pattern_primitive"
}
},
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ".."
},
{
"type": "STRING",
"value": "..."
}
]
}
},
{
"type": "FIELD",
"name": "end",
"content": {
"type": "SYMBOL",
"name": "_pattern_primitive"
}
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ".."
},
{
"type": "STRING",
"value": "..."
}
]
}
},
{
"type": "FIELD",
"name": "end",
"content": {
"type": "SYMBOL",
"name": "_pattern_primitive"
}
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "begin",
"content": {
"type": "SYMBOL",
"name": "_pattern_primitive"
}
},
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ".."
},
{
"type": "STRING",
"value": "..."
}
]
}
}
]
}
]
},
"_pattern_primitive": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_pattern_literal"
},
{
"type": "SYMBOL",
"name": "_pattern_lambda"
}
]
},
"_pattern_lambda": {
"type": "PREC_RIGHT",
"value": -1,
"content": {
"type": "SYMBOL",
"name": "lambda"
}
},
"_pattern_literal": {
"type": "PREC_RIGHT",
"value": -1,
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_literal"
},
{
"type": "SYMBOL",
"name": "string"
},
{
"type": "SYMBOL",
"name": "subshell"
},
{
"type": "SYMBOL",
"name": "heredoc_beginning"
},
{
"type": "SYMBOL",
"name": "regex"
},
{
"type": "SYMBOL",
"name": "string_array"
},
{
"type": "SYMBOL",
"name": "symbol_array"
},
{
"type": "SYMBOL",
"name": "_keyword_variable"
}
]
}
},
"_keyword_variable": {
"type": "PREC_RIGHT",
"value": -1,
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "nil"
},
{
"type": "SYMBOL",
"name": "self"
},
{
"type": "SYMBOL",
"name": "true"
},
{
"type": "SYMBOL",
"name": "false"
},
{
"type": "SYMBOL",
"name": "line"
},
{
"type": "SYMBOL",
"name": "file"
},
{
"type": "SYMBOL",
"name": "encoding"
}
]
}
},
"line": {
"type": "STRING",
"value": "__LINE__"
},
"file": {
"type": "STRING",
"value": "__FILE__"
},
"encoding": {
"type": "STRING",
"value": "__ENCODING__"
},
"variable_reference_pattern": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "^"
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "SYMBOL",
"name": "_nonlocal_variable"
}
]
}
}
]
},
"expression_reference_pattern": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "^"
},
{
"type": "STRING",
"value": "("
},
{
"type": "FIELD",
"name": "value",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
},
{
"type": "STRING",
"value": ")"
}
]
},
"_pattern_constant": {
"type": "PREC_RIGHT",
"value": -1,
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "constant"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_pattern_constant_resolution"
},
"named": true,
"value": "scope_resolution"
}
]
}
},
"_pattern_constant_resolution": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "scope",
"content": {
"type": "SYMBOL",
"name": "_pattern_constant"
}
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "::"
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "constant"
}
}
]
},
"if": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "if"
},
{
"type": "FIELD",
"name": "condition",
"content": {
"type": "SYMBOL",
"name": "_statement"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_terminator"
},
{
"type": "FIELD",
"name": "consequence",
"content": {
"type": "SYMBOL",
"name": "then"
}
}
]
},
{
"type": "FIELD",
"name": "alternative",
"content": {
"type": "CHOICE",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "else"
},
{
"type": "SYMBOL",
"name": "elsif"
}
]
},
{
"type": "BLANK"
}
]
}
},
{
"type": "STRING",
"value": "end"
}
]
},
"unless": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "unless"
},
{
"type": "FIELD",
"name": "condition",
"content": {
"type": "SYMBOL",
"name": "_statement"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_terminator"
},
{
"type": "FIELD",
"name": "consequence",
"content": {
"type": "SYMBOL",
"name": "then"
}
}
]
},
{
"type": "FIELD",
"name": "alternative",
"content": {
"type": "CHOICE",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "else"
},
{
"type": "SYMBOL",
"name": "elsif"
}
]
},
{
"type": "BLANK"
}
]
}
},
{
"type": "STRING",
"value": "end"
}
]
},
"elsif": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "elsif"
},
{
"type": "FIELD",
"name": "condition",
"content": {
"type": "SYMBOL",
"name": "_statement"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_terminator"
},
{
"type": "FIELD",
"name": "consequence",
"content": {
"type": "SYMBOL",
"name": "then"
}
}
]
},
{
"type": "FIELD",
"name": "alternative",
"content": {
"type": "CHOICE",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "else"
},
{
"type": "SYMBOL",
"name": "elsif"
}
]
},
{
"type": "BLANK"
}
]
}
}
]
},
"else": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "else"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_terminator"
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_statements"
},
{
"type": "BLANK"
}
]
}
]
},
"then": {
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_terminator"
},
{
"type": "SYMBOL",
"name": "_statements"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_terminator"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "then"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_statements"
},
{
"type": "BLANK"
}
]
}
]
}
]
},
"begin": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "begin"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_terminator"
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_body_statement"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "end"
}
]
},
"ensure": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "ensure"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_statements"
},
{
"type": "BLANK"
}
]
}
]
},
"rescue": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "rescue"
},
{
"type": "FIELD",
"name": "exceptions",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "exceptions"
},
{
"type": "BLANK"
}
]
}
},
{
"type": "FIELD",
"name": "variable",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "exception_variable"
},
{
"type": "BLANK"
}
]
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_terminator"
},
{
"type": "FIELD",
"name": "body",
"content": {
"type": "SYMBOL",
"name": "then"
}
}
]
}
]
},
"exceptions": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_arg"
},
{
"type": "SYMBOL",
"name": "splat_argument"
}
]
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_arg"
},
{
"type": "SYMBOL",
"name": "splat_argument"
}
]
}
]
}
}
]
},
"exception_variable": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "=>"
},
{
"type": "SYMBOL",
"name": "_lhs"
}
]
},
"body_statement": {
"type": "SYMBOL",
"name": "_body_statement"
},
"_body_statement": {
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_statements"
},
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "rescue"
},
{
"type": "SYMBOL",
"name": "else"
},
{
"type": "SYMBOL",
"name": "ensure"
}
]
}
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_statements"
},
{
"type": "BLANK"
}
]
},
{
"type": "REPEAT1",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "rescue"
},
{
"type": "SYMBOL",
"name": "else"
},
{
"type": "SYMBOL",
"name": "ensure"
}
]
}
}
]
}
]
},
"_expression": {
"type": "CHOICE",
"members": [
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "command_binary"
},
"named": true,
"value": "binary"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "command_unary"
},
"named": true,
"value": "unary"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "command_assignment"
},
"named": true,
"value": "assignment"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "command_operator_assignment"
},
"named": true,
"value": "operator_assignment"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "command_call"
},
"named": true,
"value": "call"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "command_call_with_block"
},
"named": true,
"value": "call"
},
{
"type": "PREC_LEFT",
"value": 0,
"content": {
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_chained_command_call"
},
"named": true,
"value": "call"
}
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "return_command"
},
"named": true,
"value": "return"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "yield_command"
},
"named": true,
"value": "yield"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "break_command"
},
"named": true,
"value": "break"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "next_command"
},
"named": true,
"value": "next"
},
{
"type": "SYMBOL",
"name": "match_pattern"
},
{
"type": "SYMBOL",
"name": "test_pattern"
},
{
"type": "SYMBOL",
"name": "_arg"
}
]
},
"match_pattern": {
"type": "PREC",
"value": 100,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "value",
"content": {
"type": "SYMBOL",
"name": "_arg"
}
},
{
"type": "STRING",
"value": "=>"
},
{
"type": "FIELD",
"name": "pattern",
"content": {
"type": "SYMBOL",
"name": "_pattern_top_expr_body"
}
}
]
}
},
"test_pattern": {
"type": "PREC",
"value": 100,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "value",
"content": {
"type": "SYMBOL",
"name": "_arg"
}
},
{
"type": "STRING",
"value": "in"
},
{
"type": "FIELD",
"name": "pattern",
"content": {
"type": "SYMBOL",
"name": "_pattern_top_expr_body"
}
}
]
}
},
"_arg": {
"type": "CHOICE",
"members": [
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_unary_minus_pow"
},
"named": true,
"value": "unary"
},
{
"type": "SYMBOL",
"name": "_primary"
},
{
"type": "SYMBOL",
"name": "assignment"
},
{
"type": "SYMBOL",
"name": "operator_assignment"
},
{
"type": "SYMBOL",
"name": "conditional"
},
{
"type": "SYMBOL",
"name": "range"
},
{
"type": "SYMBOL",
"name": "binary"
},
{
"type": "SYMBOL",
"name": "unary"
}
]
},
"_unary_minus_pow": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_unary_minus_num"
},
"named": false,
"value": "-"
}
},
{
"type": "FIELD",
"name": "operand",
"content": {
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_pow"
},
"named": true,
"value": "binary"
}
}
]
},
"_pow": {
"type": "PREC_RIGHT",
"value": 80,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "left",
"content": {
"type": "SYMBOL",
"name": "_simple_numeric"
}
},
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_binary_star_star"
},
"named": false,
"value": "**"
}
},
{
"type": "FIELD",
"name": "right",
"content": {
"type": "SYMBOL",
"name": "_arg"
}
}
]
}
},
"_primary": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "parenthesized_statements"
},
{
"type": "SYMBOL",
"name": "_lhs"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_function_identifier_call"
},
"named": true,
"value": "call"
},
{
"type": "SYMBOL",
"name": "call"
},
{
"type": "SYMBOL",
"name": "array"
},
{
"type": "SYMBOL",
"name": "string_array"
},
{
"type": "SYMBOL",
"name": "symbol_array"
},
{
"type": "SYMBOL",
"name": "hash"
},
{
"type": "SYMBOL",
"name": "subshell"
},
{
"type": "SYMBOL",
"name": "_literal"
},
{
"type": "SYMBOL",
"name": "string"
},
{
"type": "SYMBOL",
"name": "character"
},
{
"type": "SYMBOL",
"name": "chained_string"
},
{
"type": "SYMBOL",
"name": "regex"
},
{
"type": "SYMBOL",
"name": "lambda"
},
{
"type": "SYMBOL",
"name": "method"
},
{
"type": "SYMBOL",
"name": "singleton_method"
},
{
"type": "SYMBOL",
"name": "class"
},
{
"type": "SYMBOL",
"name": "singleton_class"
},
{
"type": "SYMBOL",
"name": "module"
},
{
"type": "SYMBOL",
"name": "begin"
},
{
"type": "SYMBOL",
"name": "while"
},
{
"type": "SYMBOL",
"name": "until"
},
{
"type": "SYMBOL",
"name": "if"
},
{
"type": "SYMBOL",
"name": "unless"
},
{
"type": "SYMBOL",
"name": "for"
},
{
"type": "SYMBOL",
"name": "case"
},
{
"type": "SYMBOL",
"name": "case_match"
},
{
"type": "SYMBOL",
"name": "return"
},
{
"type": "SYMBOL",
"name": "yield"
},
{
"type": "SYMBOL",
"name": "break"
},
{
"type": "SYMBOL",
"name": "next"
},
{
"type": "SYMBOL",
"name": "redo"
},
{
"type": "SYMBOL",
"name": "retry"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "parenthesized_unary"
},
"named": true,
"value": "unary"
},
{
"type": "SYMBOL",
"name": "heredoc_beginning"
}
]
},
"parenthesized_statements": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_statements"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ")"
}
]
},
"element_reference": {
"type": "PREC_LEFT",
"value": 1,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "object",
"content": {
"type": "SYMBOL",
"name": "_primary"
}
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_element_reference_bracket"
},
"named": false,
"value": "["
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_argument_list_with_trailing_comma"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "]"
},
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "block",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "block"
},
{
"type": "SYMBOL",
"name": "do_block"
}
]
}
},
{
"type": "BLANK"
}
]
}
]
}
},
"scope_resolution": {
"type": "PREC_LEFT",
"value": 57,
"content": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "::"
},
{
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "scope",
"content": {
"type": "SYMBOL",
"name": "_primary"
}
},
{
"type": "IMMEDIATE_TOKEN",
"content": {
"type": "STRING",
"value": "::"
}
}
]
}
]
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "constant"
}
}
]
}
},
"_call_operator": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "."
},
{
"type": "STRING",
"value": "&."
},
{
"type": "IMMEDIATE_TOKEN",
"content": {
"type": "STRING",
"value": "::"
}
}
]
},
"_call": {
"type": "PREC_LEFT",
"value": 56,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "receiver",
"content": {
"type": "SYMBOL",
"name": "_primary"
}
},
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "SYMBOL",
"name": "_call_operator"
}
},
{
"type": "FIELD",
"name": "method",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "SYMBOL",
"name": "operator"
},
{
"type": "SYMBOL",
"name": "constant"
},
{
"type": "SYMBOL",
"name": "_function_identifier"
}
]
}
}
]
}
},
"command_call": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_call"
},
{
"type": "SYMBOL",
"name": "_chained_command_call"
},
{
"type": "FIELD",
"name": "method",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_variable"
},
{
"type": "SYMBOL",
"name": "_function_identifier"
}
]
}
}
]
},
{
"type": "FIELD",
"name": "arguments",
"content": {
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "command_argument_list"
},
"named": true,
"value": "argument_list"
}
}
]
},
"command_call_with_block": {
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_call"
},
{
"type": "FIELD",
"name": "method",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_variable"
},
{
"type": "SYMBOL",
"name": "_function_identifier"
}
]
}
}
]
},
{
"type": "PREC",
"value": 1,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "arguments",
"content": {
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "command_argument_list"
},
"named": true,
"value": "argument_list"
}
},
{
"type": "FIELD",
"name": "block",
"content": {
"type": "SYMBOL",
"name": "block"
}
}
]
}
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_call"
},
{
"type": "FIELD",
"name": "method",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_variable"
},
{
"type": "SYMBOL",
"name": "_function_identifier"
}
]
}
}
]
},
{
"type": "PREC",
"value": -1,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "arguments",
"content": {
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "command_argument_list"
},
"named": true,
"value": "argument_list"
}
},
{
"type": "FIELD",
"name": "block",
"content": {
"type": "SYMBOL",
"name": "do_block"
}
}
]
}
}
]
}
]
},
"_chained_command_call": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "receiver",
"content": {
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "command_call_with_block"
},
"named": true,
"value": "call"
}
},
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "SYMBOL",
"name": "_call_operator"
}
},
{
"type": "FIELD",
"name": "method",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "SYMBOL",
"name": "_function_identifier"
},
{
"type": "SYMBOL",
"name": "operator"
},
{
"type": "SYMBOL",
"name": "constant"
}
]
}
}
]
},
"call": {
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_call"
},
{
"type": "FIELD",
"name": "method",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_variable"
},
{
"type": "SYMBOL",
"name": "_function_identifier"
}
]
}
}
]
},
{
"type": "PREC_LEFT",
"value": 56,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "receiver",
"content": {
"type": "SYMBOL",
"name": "_primary"
}
},
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "SYMBOL",
"name": "_call_operator"
}
}
]
}
}
]
},
{
"type": "FIELD",
"name": "arguments",
"content": {
"type": "SYMBOL",
"name": "argument_list"
}
}
]
},
{
"type": "PREC",
"value": 1,
"content": {
"type": "SEQ",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_call"
},
{
"type": "FIELD",
"name": "method",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_variable"
},
{
"type": "SYMBOL",
"name": "_function_identifier"
}
]
}
}
]
},
{
"type": "PREC_LEFT",
"value": 56,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "receiver",
"content": {
"type": "SYMBOL",
"name": "_primary"
}
},
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "SYMBOL",
"name": "_call_operator"
}
}
]
}
}
]
},
{
"type": "FIELD",
"name": "arguments",
"content": {
"type": "SYMBOL",
"name": "argument_list"
}
}
]
},
{
"type": "FIELD",
"name": "block",
"content": {
"type": "SYMBOL",
"name": "block"
}
}
]
}
},
{
"type": "PREC",
"value": -1,
"content": {
"type": "SEQ",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_call"
},
{
"type": "FIELD",
"name": "method",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_variable"
},
{
"type": "SYMBOL",
"name": "_function_identifier"
}
]
}
}
]
},
{
"type": "PREC_LEFT",
"value": 56,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "receiver",
"content": {
"type": "SYMBOL",
"name": "_primary"
}
},
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "SYMBOL",
"name": "_call_operator"
}
}
]
}
}
]
},
{
"type": "FIELD",
"name": "arguments",
"content": {
"type": "SYMBOL",
"name": "argument_list"
}
}
]
},
{
"type": "FIELD",
"name": "block",
"content": {
"type": "SYMBOL",
"name": "do_block"
}
}
]
}
},
{
"type": "PREC",
"value": 1,
"content": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_call"
},
{
"type": "FIELD",
"name": "method",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_variable"
},
{
"type": "SYMBOL",
"name": "_function_identifier"
}
]
}
}
]
},
{
"type": "FIELD",
"name": "block",
"content": {
"type": "SYMBOL",
"name": "block"
}
}
]
}
},
{
"type": "PREC",
"value": -1,
"content": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_call"
},
{
"type": "FIELD",
"name": "method",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_variable"
},
{
"type": "SYMBOL",
"name": "_function_identifier"
}
]
}
}
]
},
{
"type": "FIELD",
"name": "block",
"content": {
"type": "SYMBOL",
"name": "do_block"
}
}
]
}
}
]
},
"command_argument_list": {
"type": "PREC_RIGHT",
"value": 0,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_argument"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "_argument"
}
]
}
}
]
}
},
"argument_list": {
"type": "PREC_RIGHT",
"value": 0,
"content": {
"type": "SEQ",
"members": [
{
"type": "IMMEDIATE_TOKEN",
"content": {
"type": "STRING",
"value": "("
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_argument_list_with_trailing_comma"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ")"
}
]
}
},
"_argument_list_with_trailing_comma": {
"type": "PREC_RIGHT",
"value": 0,
"content": {
"type": "SEQ",
"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"
}
]
}
]
}
},
"_argument": {
"type": "PREC_LEFT",
"value": 0,
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "SYMBOL",
"name": "splat_argument"
},
{
"type": "SYMBOL",
"name": "hash_splat_argument"
},
{
"type": "SYMBOL",
"name": "forward_argument"
},
{
"type": "SYMBOL",
"name": "block_argument"
},
{
"type": "SYMBOL",
"name": "pair"
}
]
}
},
"forward_argument": {
"type": "STRING",
"value": "..."
},
"splat_argument": {
"type": "PREC_RIGHT",
"value": 0,
"content": {
"type": "SEQ",
"members": [
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_splat_star"
},
"named": false,
"value": "*"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_arg"
},
{
"type": "BLANK"
}
]
}
]
}
},
"hash_splat_argument": {
"type": "PREC_RIGHT",
"value": 0,
"content": {
"type": "SEQ",
"members": [
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_hash_splat_star_star"
},
"named": false,
"value": "**"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_arg"
},
{
"type": "BLANK"
}
]
}
]
}
},
"block_argument": {
"type": "PREC_RIGHT",
"value": 0,
"content": {
"type": "SEQ",
"members": [
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_block_ampersand"
},
"named": false,
"value": "&"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_arg"
},
{
"type": "BLANK"
}
]
}
]
}
},
"do_block": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "do"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_terminator"
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "parameters",
"content": {
"type": "SYMBOL",
"name": "block_parameters"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_terminator"
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "body",
"content": {
"type": "SYMBOL",
"name": "body_statement"
}
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "end"
}
]
},
"block": {
"type": "PREC",
"value": 1,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "{"
},
{
"type": "FIELD",
"name": "parameters",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "block_parameters"
},
{
"type": "BLANK"
}
]
}
},
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "body",
"content": {
"type": "SYMBOL",
"name": "block_body"
}
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "}"
}
]
}
},
"_arg_rhs": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_arg"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "rescue_modifier_arg"
},
"named": true,
"value": "rescue_modifier"
}
]
},
"assignment": {
"type": "PREC_RIGHT",
"value": 15,
"content": {
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "left",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_lhs"
},
{
"type": "SYMBOL",
"name": "left_assignment_list"
}
]
}
},
{
"type": "STRING",
"value": "="
},
{
"type": "FIELD",
"name": "right",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_arg_rhs"
},
{
"type": "SYMBOL",
"name": "splat_argument"
},
{
"type": "SYMBOL",
"name": "right_assignment_list"
}
]
}
}
]
}
]
}
},
"command_assignment": {
"type": "PREC_RIGHT",
"value": 15,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "left",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_lhs"
},
{
"type": "SYMBOL",
"name": "left_assignment_list"
}
]
}
},
{
"type": "STRING",
"value": "="
},
{
"type": "FIELD",
"name": "right",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "rescue_modifier_expression"
},
"named": true,
"value": "rescue_modifier"
}
]
}
}
]
}
},
"operator_assignment": {
"type": "PREC_RIGHT",
"value": 15,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "left",
"content": {
"type": "SYMBOL",
"name": "_lhs"
}
},
{
"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": "STRING",
"value": "&="
},
{
"type": "STRING",
"value": "%="
},
{
"type": "STRING",
"value": ">>="
},
{
"type": "STRING",
"value": "<<="
},
{
"type": "STRING",
"value": "^="
}
]
}
},
{
"type": "FIELD",
"name": "right",
"content": {
"type": "SYMBOL",
"name": "_arg_rhs"
}
}
]
}
},
"command_operator_assignment": {
"type": "PREC_RIGHT",
"value": 15,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "left",
"content": {
"type": "SYMBOL",
"name": "_lhs"
}
},
{
"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": "STRING",
"value": "&="
},
{
"type": "STRING",
"value": "%="
},
{
"type": "STRING",
"value": ">>="
},
{
"type": "STRING",
"value": "<<="
},
{
"type": "STRING",
"value": "^="
}
]
}
},
{
"type": "FIELD",
"name": "right",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "rescue_modifier_expression"
},
"named": true,
"value": "rescue_modifier"
}
]
}
}
]
}
},
"conditional": {
"type": "PREC_RIGHT",
"value": 20,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "condition",
"content": {
"type": "SYMBOL",
"name": "_arg"
}
},
{
"type": "STRING",
"value": "?"
},
{
"type": "FIELD",
"name": "consequence",
"content": {
"type": "SYMBOL",
"name": "_arg"
}
},
{
"type": "STRING",
"value": ":"
},
{
"type": "FIELD",
"name": "alternative",
"content": {
"type": "SYMBOL",
"name": "_arg"
}
}
]
}
},
"range": {
"type": "PREC_RIGHT",
"value": 25,
"content": {
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "begin",
"content": {
"type": "SYMBOL",
"name": "_arg"
}
},
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ".."
},
{
"type": "STRING",
"value": "..."
}
]
}
},
{
"type": "FIELD",
"name": "end",
"content": {
"type": "SYMBOL",
"name": "_arg"
}
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ".."
},
{
"type": "STRING",
"value": "..."
}
]
}
},
{
"type": "FIELD",
"name": "end",
"content": {
"type": "SYMBOL",
"name": "_arg"
}
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "begin",
"content": {
"type": "SYMBOL",
"name": "_arg"
}
},
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ".."
},
{
"type": "STRING",
"value": "..."
}
]
}
}
]
}
]
}
},
"binary": {
"type": "CHOICE",
"members": [
{
"type": "PREC_LEFT",
"value": -2,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "left",
"content": {
"type": "SYMBOL",
"name": "_arg"
}
},
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "STRING",
"value": "and"
}
},
{
"type": "FIELD",
"name": "right",
"content": {
"type": "SYMBOL",
"name": "_arg"
}
}
]
}
},
{
"type": "PREC_LEFT",
"value": -2,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "left",
"content": {
"type": "SYMBOL",
"name": "_arg"
}
},
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "STRING",
"value": "or"
}
},
{
"type": "FIELD",
"name": "right",
"content": {
"type": "SYMBOL",
"name": "_arg"
}
}
]
}
},
{
"type": "PREC_LEFT",
"value": 30,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "left",
"content": {
"type": "SYMBOL",
"name": "_arg"
}
},
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "STRING",
"value": "||"
}
},
{
"type": "FIELD",
"name": "right",
"content": {
"type": "SYMBOL",
"name": "_arg"
}
}
]
}
},
{
"type": "PREC_LEFT",
"value": 35,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "left",
"content": {
"type": "SYMBOL",
"name": "_arg"
}
},
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "STRING",
"value": "&&"
}
},
{
"type": "FIELD",
"name": "right",
"content": {
"type": "SYMBOL",
"name": "_arg"
}
}
]
}
},
{
"type": "PREC_LEFT",
"value": 60,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "left",
"content": {
"type": "SYMBOL",
"name": "_arg"
}
},
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "<<"
},
{
"type": "STRING",
"value": ">>"
}
]
}
},
{
"type": "FIELD",
"name": "right",
"content": {
"type": "SYMBOL",
"name": "_arg"
}
}
]
}
},
{
"type": "PREC_LEFT",
"value": 45,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "left",
"content": {
"type": "SYMBOL",
"name": "_arg"
}
},
{
"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": "_arg"
}
}
]
}
},
{
"type": "PREC_LEFT",
"value": 55,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "left",
"content": {
"type": "SYMBOL",
"name": "_arg"
}
},
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "STRING",
"value": "&"
}
},
{
"type": "FIELD",
"name": "right",
"content": {
"type": "SYMBOL",
"name": "_arg"
}
}
]
}
},
{
"type": "PREC_LEFT",
"value": 50,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "left",
"content": {
"type": "SYMBOL",
"name": "_arg"
}
},
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "^"
},
{
"type": "STRING",
"value": "|"
}
]
}
},
{
"type": "FIELD",
"name": "right",
"content": {
"type": "SYMBOL",
"name": "_arg"
}
}
]
}
},
{
"type": "PREC_LEFT",
"value": 65,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "left",
"content": {
"type": "SYMBOL",
"name": "_arg"
}
},
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "+"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_binary_minus"
},
"named": false,
"value": "-"
}
]
}
},
{
"type": "FIELD",
"name": "right",
"content": {
"type": "SYMBOL",
"name": "_arg"
}
}
]
}
},
{
"type": "PREC_LEFT",
"value": 70,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "left",
"content": {
"type": "SYMBOL",
"name": "_arg"
}
},
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "/"
},
{
"type": "STRING",
"value": "%"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_binary_star"
},
"named": false,
"value": "*"
}
]
}
},
{
"type": "FIELD",
"name": "right",
"content": {
"type": "SYMBOL",
"name": "_arg"
}
}
]
}
},
{
"type": "PREC_RIGHT",
"value": 40,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "left",
"content": {
"type": "SYMBOL",
"name": "_arg"
}
},
{
"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": "FIELD",
"name": "right",
"content": {
"type": "SYMBOL",
"name": "_arg"
}
}
]
}
},
{
"type": "PREC_RIGHT",
"value": 80,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "left",
"content": {
"type": "SYMBOL",
"name": "_arg"
}
},
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_binary_star_star"
},
"named": false,
"value": "**"
}
},
{
"type": "FIELD",
"name": "right",
"content": {
"type": "SYMBOL",
"name": "_arg"
}
}
]
}
}
]
},
"command_binary": {
"type": "PREC_LEFT",
"value": 0,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "left",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
},
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "or"
},
{
"type": "STRING",
"value": "and"
}
]
}
},
{
"type": "FIELD",
"name": "right",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
}
]
}
},
"unary": {
"type": "CHOICE",
"members": [
{
"type": "PREC",
"value": 10,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "STRING",
"value": "defined?"
}
},
{
"type": "FIELD",
"name": "operand",
"content": {
"type": "SYMBOL",
"name": "_arg"
}
}
]
}
},
{
"type": "PREC_RIGHT",
"value": 5,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "STRING",
"value": "not"
}
},
{
"type": "FIELD",
"name": "operand",
"content": {
"type": "SYMBOL",
"name": "_arg"
}
}
]
}
},
{
"type": "PREC_RIGHT",
"value": 75,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "CHOICE",
"members": [
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_unary_minus"
},
"named": false,
"value": "-"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_binary_minus"
},
"named": false,
"value": "-"
},
{
"type": "STRING",
"value": "+"
}
]
}
},
{
"type": "FIELD",
"name": "operand",
"content": {
"type": "SYMBOL",
"name": "_arg"
}
}
]
}
},
{
"type": "PREC_RIGHT",
"value": 85,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "!"
},
{
"type": "STRING",
"value": "~"
}
]
}
},
{
"type": "FIELD",
"name": "operand",
"content": {
"type": "SYMBOL",
"name": "_arg"
}
}
]
}
}
]
},
"command_unary": {
"type": "CHOICE",
"members": [
{
"type": "PREC",
"value": 10,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "STRING",
"value": "defined?"
}
},
{
"type": "FIELD",
"name": "operand",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
}
]
}
},
{
"type": "PREC_RIGHT",
"value": 5,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "STRING",
"value": "not"
}
},
{
"type": "FIELD",
"name": "operand",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
}
]
}
},
{
"type": "PREC_RIGHT",
"value": 75,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "CHOICE",
"members": [
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_unary_minus"
},
"named": false,
"value": "-"
},
{
"type": "STRING",
"value": "+"
}
]
}
},
{
"type": "FIELD",
"name": "operand",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
}
]
}
},
{
"type": "PREC_RIGHT",
"value": 85,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "!"
},
{
"type": "STRING",
"value": "~"
}
]
}
},
{
"type": "FIELD",
"name": "operand",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
}
]
}
}
]
},
"parenthesized_unary": {
"type": "PREC",
"value": 56,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "defined?"
},
{
"type": "STRING",
"value": "not"
}
]
}
},
{
"type": "FIELD",
"name": "operand",
"content": {
"type": "SYMBOL",
"name": "parenthesized_statements"
}
}
]
}
},
"unary_literal": {
"type": "PREC_RIGHT",
"value": 75,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "CHOICE",
"members": [
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_unary_minus_num"
},
"named": false,
"value": "-"
},
{
"type": "STRING",
"value": "+"
}
]
}
},
{
"type": "FIELD",
"name": "operand",
"content": {
"type": "SYMBOL",
"name": "_simple_numeric"
}
}
]
}
},
"_literal": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "simple_symbol"
},
{
"type": "SYMBOL",
"name": "delimited_symbol"
},
{
"type": "SYMBOL",
"name": "_numeric"
}
]
},
"_numeric": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_simple_numeric"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "unary_literal"
},
"named": true,
"value": "unary"
}
]
},
"_simple_numeric": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "integer"
},
{
"type": "SYMBOL",
"name": "float"
},
{
"type": "SYMBOL",
"name": "complex"
},
{
"type": "SYMBOL",
"name": "rational"
}
]
},
"right_assignment_list": {
"type": "PREC",
"value": -1,
"content": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_arg"
},
{
"type": "SYMBOL",
"name": "splat_argument"
}
]
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_arg"
},
{
"type": "SYMBOL",
"name": "splat_argument"
}
]
}
]
}
}
]
}
},
"left_assignment_list": {
"type": "SYMBOL",
"name": "_mlhs"
},
"_mlhs": {
"type": "PREC_LEFT",
"value": -1,
"content": {
"type": "SEQ",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_lhs"
},
{
"type": "SYMBOL",
"name": "rest_assignment"
},
{
"type": "SYMBOL",
"name": "destructured_left_assignment"
}
]
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_lhs"
},
{
"type": "SYMBOL",
"name": "rest_assignment"
},
{
"type": "SYMBOL",
"name": "destructured_left_assignment"
}
]
}
]
}
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "BLANK"
}
]
}
]
}
},
"destructured_left_assignment": {
"type": "PREC",
"value": -1,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "SYMBOL",
"name": "_mlhs"
},
{
"type": "STRING",
"value": ")"
}
]
}
},
"rest_assignment": {
"type": "PREC",
"value": -1,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "*"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_lhs"
},
{
"type": "BLANK"
}
]
}
]
}
},
"_function_identifier": {
"type": "CHOICE",
"members": [
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "identifier_suffix"
},
"named": true,
"value": "identifier"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "constant_suffix"
},
"named": true,
"value": "constant"
}
]
},
"_function_identifier_call": {
"type": "PREC_LEFT",
"value": 0,
"content": {
"type": "FIELD",
"name": "method",
"content": {
"type": "SYMBOL",
"name": "_function_identifier"
}
}
},
"_lhs": {
"type": "PREC_LEFT",
"value": 0,
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_variable"
},
{
"type": "SYMBOL",
"name": "true"
},
{
"type": "SYMBOL",
"name": "false"
},
{
"type": "SYMBOL",
"name": "nil"
},
{
"type": "SYMBOL",
"name": "scope_resolution"
},
{
"type": "SYMBOL",
"name": "element_reference"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_call"
},
"named": true,
"value": "call"
}
]
}
},
"_variable": {
"type": "PREC_RIGHT",
"value": 0,
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "self"
},
{
"type": "SYMBOL",
"name": "super"
},
{
"type": "SYMBOL",
"name": "_nonlocal_variable"
},
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "SYMBOL",
"name": "constant"
}
]
}
},
"operator": {
"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": "STRING",
"value": ">"
},
{
"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": "STRING",
"value": "%"
},
{
"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": "STRING",
"value": "~@"
},
{
"type": "STRING",
"value": "[]"
},
{
"type": "STRING",
"value": "[]="
},
{
"type": "STRING",
"value": "`"
}
]
},
"_method_name": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "SYMBOL",
"name": "_function_identifier"
},
{
"type": "SYMBOL",
"name": "constant"
},
{
"type": "SYMBOL",
"name": "setter"
},
{
"type": "SYMBOL",
"name": "simple_symbol"
},
{
"type": "SYMBOL",
"name": "delimited_symbol"
},
{
"type": "SYMBOL",
"name": "operator"
},
{
"type": "SYMBOL",
"name": "_nonlocal_variable"
}
]
},
"_nonlocal_variable": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "instance_variable"
},
{
"type": "SYMBOL",
"name": "class_variable"
},
{
"type": "SYMBOL",
"name": "global_variable"
}
]
},
"setter": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "IMMEDIATE_TOKEN",
"content": {
"type": "STRING",
"value": "="
}
}
]
},
"undef": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "undef"
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_method_name"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "_method_name"
}
]
}
}
]
}
]
},
"alias": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "alias"
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "_method_name"
}
},
{
"type": "FIELD",
"name": "alias",
"content": {
"type": "SYMBOL",
"name": "_method_name"
}
}
]
},
"comment": {
"type": "TOKEN",
"content": {
"type": "PREC",
"value": -2,
"content": {
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "#"
},
{
"type": "PATTERN",
"value": ".*"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "PATTERN",
"value": "=begin.*\\r?\\n"
},
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "PATTERN",
"value": "[^=]"
},
{
"type": "PATTERN",
"value": "=[^e]"
},
{
"type": "PATTERN",
"value": "=e[^n]"
},
{
"type": "PATTERN",
"value": "=en[^d]"
}
]
}
},
{
"type": "PATTERN",
"value": "[\\s*]*=end.*"
}
]
}
]
}
}
},
"integer": {
"type": "PATTERN",
"value": "0[bB][01](_?[01])*|0[oO]?[0-7](_?[0-7])*|(0[dD])?\\d(_?\\d)*|0[xX][0-9a-fA-F](_?[0-9a-fA-F])*"
},
"_int_or_float": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "integer"
},
{
"type": "SYMBOL",
"name": "float"
}
]
},
"float": {
"type": "PATTERN",
"value": "\\d(_?\\d)*(\\.\\d)?(_?\\d)*([eE][\\+-]?\\d(_?\\d)*)?"
},
"complex": {
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_int_or_float"
},
{
"type": "IMMEDIATE_TOKEN",
"content": {
"type": "STRING",
"value": "i"
}
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_int_or_float"
},
"named": true,
"value": "rational"
},
{
"type": "IMMEDIATE_TOKEN",
"content": {
"type": "STRING",
"value": "ri"
}
}
]
}
]
},
"rational": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_int_or_float"
},
{
"type": "IMMEDIATE_TOKEN",
"content": {
"type": "STRING",
"value": "r"
}
}
]
},
"super": {
"type": "STRING",
"value": "super"
},
"self": {
"type": "STRING",
"value": "self"
},
"true": {
"type": "STRING",
"value": "true"
},
"false": {
"type": "STRING",
"value": "false"
},
"nil": {
"type": "STRING",
"value": "nil"
},
"constant": {
"type": "TOKEN",
"content": {
"type": "SEQ",
"members": [
{
"type": "PATTERN",
"value": "[A-Z]"
},
{
"type": "PATTERN",
"value": "[^\\x00-\\x1F\\s:;`\"'@$#.,|^&<=>+\\-*/\\\\%?!~()\\[\\]{}]*"
}
]
}
},
"constant_suffix": {
"type": "CHOICE",
"members": [
{
"type": "TOKEN",
"content": {
"type": "SEQ",
"members": [
{
"type": "PATTERN",
"value": "[A-Z]"
},
{
"type": "PATTERN",
"value": "[^\\x00-\\x1F\\s:;`\"'@$#.,|^&<=>+\\-*/\\\\%?!~()\\[\\]{}]*"
},
{
"type": "PATTERN",
"value": "[?]"
}
]
}
},
{
"type": "SYMBOL",
"name": "_constant_suffix"
}
]
},
"identifier": {
"type": "TOKEN",
"content": {
"type": "SEQ",
"members": [
{
"type": "PATTERN",
"value": "[^\\x00-\\x1F\\sA-Z0-9:;`\"'@$#.,|^&<=>+\\-*/\\\\%?!~()\\[\\]{}]"
},
{
"type": "PATTERN",
"value": "[^\\x00-\\x1F\\s:;`\"'@$#.,|^&<=>+\\-*/\\\\%?!~()\\[\\]{}]*"
}
]
}
},
"identifier_suffix": {
"type": "CHOICE",
"members": [
{
"type": "TOKEN",
"content": {
"type": "SEQ",
"members": [
{
"type": "PATTERN",
"value": "[^\\x00-\\x1F\\sA-Z0-9:;`\"'@$#.,|^&<=>+\\-*/\\\\%?!~()\\[\\]{}]"
},
{
"type": "PATTERN",
"value": "[^\\x00-\\x1F\\s:;`\"'@$#.,|^&<=>+\\-*/\\\\%?!~()\\[\\]{}]*"
},
{
"type": "PATTERN",
"value": "[?]"
}
]
}
},
{
"type": "SYMBOL",
"name": "_identifier_suffix"
}
]
},
"instance_variable": {
"type": "TOKEN",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "@"
},
{
"type": "PATTERN",
"value": "[^\\x00-\\x1F\\s0-9:;`\"'@$#.,|^&<=>+\\-*/\\\\%?!~()\\[\\]{}]"
},
{
"type": "PATTERN",
"value": "[^\\x00-\\x1F\\s:;`\"'@$#.,|^&<=>+\\-*/\\\\%?!~()\\[\\]{}]*"
}
]
}
},
"class_variable": {
"type": "TOKEN",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "@@"
},
{
"type": "PATTERN",
"value": "[^\\x00-\\x1F\\s0-9:;`\"'@$#.,|^&<=>+\\-*/\\\\%?!~()\\[\\]{}]"
},
{
"type": "PATTERN",
"value": "[^\\x00-\\x1F\\s:;`\"'@$#.,|^&<=>+\\-*/\\\\%?!~()\\[\\]{}]*"
}
]
}
},
"global_variable": {
"type": "PATTERN",
"value": "\\$(-[a-zA-Z0-9_]|[!@&`'+~=/\\\\,;.<>*$?:\"]|[0-9]+|[a-zA-Z_][a-zA-Z0-9_]*)"
},
"chained_string": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "string"
},
{
"type": "REPEAT1",
"content": {
"type": "SYMBOL",
"name": "string"
}
}
]
},
"character": {
"type": "PATTERN",
"value": "\\?(\\\\\\S(\\{[0-9A-Fa-f]*\\}|[0-9A-Fa-f]*|-\\S([MC]-\\S)?)?|\\S)"
},
"interpolation": {
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "#{"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_statements"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "}"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_short_interpolation"
},
{
"type": "SYMBOL",
"name": "_nonlocal_variable"
}
]
}
]
},
"string": {
"type": "SEQ",
"members": [
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_string_start"
},
"named": false,
"value": "\""
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_literal_contents"
},
{
"type": "BLANK"
}
]
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_string_end"
},
"named": false,
"value": "\""
}
]
},
"subshell": {
"type": "SEQ",
"members": [
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_subshell_start"
},
"named": false,
"value": "`"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_literal_contents"
},
{
"type": "BLANK"
}
]
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_string_end"
},
"named": false,
"value": "`"
}
]
},
"string_array": {
"type": "SEQ",
"members": [
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_string_array_start"
},
"named": false,
"value": "%w("
},
{
"type": "CHOICE",
"members": [
{
"type": "PATTERN",
"value": "\\s+"
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_literal_contents"
},
"named": true,
"value": "bare_string"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "PATTERN",
"value": "\\s+"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_literal_contents"
},
"named": true,
"value": "bare_string"
}
]
}
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "PATTERN",
"value": "\\s+"
},
{
"type": "BLANK"
}
]
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_string_end"
},
"named": false,
"value": ")"
}
]
},
"symbol_array": {
"type": "SEQ",
"members": [
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_symbol_array_start"
},
"named": false,
"value": "%i("
},
{
"type": "CHOICE",
"members": [
{
"type": "PATTERN",
"value": "\\s+"
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_literal_contents"
},
"named": true,
"value": "bare_symbol"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "PATTERN",
"value": "\\s+"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_literal_contents"
},
"named": true,
"value": "bare_symbol"
}
]
}
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "PATTERN",
"value": "\\s+"
},
{
"type": "BLANK"
}
]
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_string_end"
},
"named": false,
"value": ")"
}
]
},
"delimited_symbol": {
"type": "SEQ",
"members": [
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_symbol_start"
},
"named": false,
"value": ":\""
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_literal_contents"
},
{
"type": "BLANK"
}
]
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_string_end"
},
"named": false,
"value": "\""
}
]
},
"regex": {
"type": "SEQ",
"members": [
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_regex_start"
},
"named": false,
"value": "/"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_literal_contents"
},
{
"type": "BLANK"
}
]
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_string_end"
},
"named": false,
"value": "/"
}
]
},
"heredoc_body": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_heredoc_body_start"
},
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "heredoc_content"
},
{
"type": "SYMBOL",
"name": "interpolation"
},
{
"type": "SYMBOL",
"name": "escape_sequence"
}
]
}
},
{
"type": "SYMBOL",
"name": "heredoc_end"
}
]
},
"_literal_contents": {
"type": "REPEAT1",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "string_content"
},
{
"type": "SYMBOL",
"name": "interpolation"
},
{
"type": "SYMBOL",
"name": "escape_sequence"
}
]
}
},
"escape_sequence": {
"type": "TOKEN",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "\\"
},
{
"type": "CHOICE",
"members": [
{
"type": "PATTERN",
"value": "[^ux0-7]"
},
{
"type": "PATTERN",
"value": "x[0-9a-fA-F]{1,2}"
},
{
"type": "PATTERN",
"value": "[0-7]{1,3}"
},
{
"type": "PATTERN",
"value": "u[0-9a-fA-F]{4}"
},
{
"type": "PATTERN",
"value": "u\\{[0-9a-fA-F ]+\\}"
}
]
}
]
}
},
"array": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "["
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_argument_list_with_trailing_comma"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "]"
}
]
},
"hash": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "{"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "pair"
},
{
"type": "SYMBOL",
"name": "hash_splat_argument"
}
]
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "pair"
},
{
"type": "SYMBOL",
"name": "hash_splat_argument"
}
]
}
]
}
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "}"
}
]
},
"pair": {
"type": "PREC_RIGHT",
"value": 0,
"content": {
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "key",
"content": {
"type": "SYMBOL",
"name": "_arg"
}
},
{
"type": "STRING",
"value": "=>"
},
{
"type": "FIELD",
"name": "value",
"content": {
"type": "SYMBOL",
"name": "_arg"
}
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "key",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "string"
}
]
}
},
{
"type": "IMMEDIATE_TOKEN",
"content": {
"type": "STRING",
"value": ":"
}
},
{
"type": "FIELD",
"name": "value",
"content": {
"type": "SYMBOL",
"name": "_arg"
}
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "key",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "hash_key_symbol"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "identifier"
},
"named": true,
"value": "hash_key_symbol"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "constant"
},
"named": true,
"value": "hash_key_symbol"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "identifier_suffix"
},
"named": true,
"value": "hash_key_symbol"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "constant_suffix"
},
"named": true,
"value": "hash_key_symbol"
}
]
}
},
{
"type": "IMMEDIATE_TOKEN",
"content": {
"type": "STRING",
"value": ":"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "value",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_arg"
},
{
"type": "BLANK"
}
]
}
},
{
"type": "SYMBOL",
"name": "_no_line_break"
}
]
}
]
}
]
}
},
"lambda": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "->"
},
{
"type": "FIELD",
"name": "parameters",
"content": {
"type": "CHOICE",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "parameters"
},
"named": true,
"value": "lambda_parameters"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "bare_parameters"
},
"named": true,
"value": "lambda_parameters"
}
]
},
{
"type": "BLANK"
}
]
}
},
{
"type": "FIELD",
"name": "body",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "block"
},
{
"type": "SYMBOL",
"name": "do_block"
}
]
}
}
]
},
"empty_statement": {
"type": "PREC",
"value": -1,
"content": {
"type": "STRING",
"value": ";"
}
},
"_terminator": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_line_break"
},
{
"type": "STRING",
"value": ";"
}
]
}
},
"extras": [
{
"type": "SYMBOL",
"name": "comment"
},
{
"type": "SYMBOL",
"name": "heredoc_body"
},
{
"type": "PATTERN",
"value": "\\s"
},
{
"type": "PATTERN",
"value": "\\\\\\r?\\n"
}
],
"conflicts": [],
"precedences": [],
"externals": [
{
"type": "SYMBOL",
"name": "_line_break"
},
{
"type": "SYMBOL",
"name": "_no_line_break"
},
{
"type": "SYMBOL",
"name": "simple_symbol"
},
{
"type": "SYMBOL",
"name": "_string_start"
},
{
"type": "SYMBOL",
"name": "_symbol_start"
},
{
"type": "SYMBOL",
"name": "_subshell_start"
},
{
"type": "SYMBOL",
"name": "_regex_start"
},
{
"type": "SYMBOL",
"name": "_string_array_start"
},
{
"type": "SYMBOL",
"name": "_symbol_array_start"
},
{
"type": "SYMBOL",
"name": "_heredoc_body_start"
},
{
"type": "SYMBOL",
"name": "string_content"
},
{
"type": "SYMBOL",
"name": "heredoc_content"
},
{
"type": "SYMBOL",
"name": "_string_end"
},
{
"type": "SYMBOL",
"name": "heredoc_end"
},
{
"type": "SYMBOL",
"name": "heredoc_beginning"
},
{
"type": "STRING",
"value": "/"
},
{
"type": "SYMBOL",
"name": "_block_ampersand"
},
{
"type": "SYMBOL",
"name": "_splat_star"
},
{
"type": "SYMBOL",
"name": "_unary_minus"
},
{
"type": "SYMBOL",
"name": "_unary_minus_num"
},
{
"type": "SYMBOL",
"name": "_binary_minus"
},
{
"type": "SYMBOL",
"name": "_binary_star"
},
{
"type": "SYMBOL",
"name": "_singleton_class_left_angle_left_langle"
},
{
"type": "SYMBOL",
"name": "hash_key_symbol"
},
{
"type": "SYMBOL",
"name": "_identifier_suffix"
},
{
"type": "SYMBOL",
"name": "_constant_suffix"
},
{
"type": "SYMBOL",
"name": "_hash_splat_star_star"
},
{
"type": "SYMBOL",
"name": "_binary_star_star"
},
{
"type": "SYMBOL",
"name": "_element_reference_bracket"
},
{
"type": "SYMBOL",
"name": "_short_interpolation"
}
],
"inline": [
"_arg_rhs",
"_call_operator"
],
"supertypes": [
"_statement",
"_arg",
"_call_operator",
"_method_name",
"_expression",
"_variable",
"_primary",
"_simple_numeric",
"_lhs",
"_nonlocal_variable",
"_pattern_top_expr_body",
"_pattern_expr",
"_pattern_expr_basic",
"_pattern_primitive",
"_pattern_constant"
],
"reserved": {}
}