{
"$schema": "https://tree-sitter.github.io/tree-sitter/assets/schemas/grammar.schema.json",
"name": "solidity",
"word": "identifier",
"rules": {
"source_file": {
"type": "SEQ",
"members": [
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_source_unit"
}
}
]
},
"_source_unit": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_directive"
},
{
"type": "SYMBOL",
"name": "_declaration"
}
]
},
"_directive": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "pragma_directive"
},
{
"type": "SYMBOL",
"name": "import_directive"
}
]
},
"pragma_directive": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "pragma"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "solidity_pragma_token"
},
{
"type": "SYMBOL",
"name": "any_pragma_token"
}
]
},
{
"type": "SYMBOL",
"name": "_semicolon"
}
]
},
"solidity_pragma_token": {
"type": "PREC",
"value": 10,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_solidity"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "version_constraint",
"content": {
"type": "SYMBOL",
"name": "_pragma_version_constraint"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "||"
},
{
"type": "STRING",
"value": "-"
}
]
},
{
"type": "BLANK"
}
]
}
]
}
}
]
}
},
"any_pragma_token": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "SYMBOL",
"name": "pragma_value"
}
]
},
"_solidity": {
"type": "PREC",
"value": 1,
"content": {
"type": "STRING",
"value": "solidity"
}
},
"pragma_value": {
"type": "PREC",
"value": 0,
"content": {
"type": "PATTERN",
"value": "[^;]+"
}
},
"_pragma_version_constraint": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "solidity_version_comparison_operator"
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "solidity_version"
}
]
},
"solidity_version": {
"type": "PATTERN",
"value": "\"?\\.? ?(\\d|\\*)+(\\. ?(\\d|\\*)+ ?(\\.(\\d|\\*)+)?)?\"?"
},
"solidity_version_comparison_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": "="
}
]
},
"import_directive": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "import"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_source_import"
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_import_clause"
},
{
"type": "SYMBOL",
"name": "_from_clause"
}
]
}
]
},
{
"type": "SYMBOL",
"name": "_semicolon"
}
]
},
"_source_import": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "source",
"content": {
"type": "SYMBOL",
"name": "string"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_import_alias"
},
{
"type": "BLANK"
}
]
}
]
},
"_import_clause": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_single_import"
},
{
"type": "SYMBOL",
"name": "_multiple_import"
}
]
},
"_from_clause": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "from"
},
{
"type": "FIELD",
"name": "source",
"content": {
"type": "SYMBOL",
"name": "string"
}
}
]
},
"_single_import": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "*"
},
{
"type": "FIELD",
"name": "import_name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_import_alias"
},
{
"type": "BLANK"
}
]
}
]
},
"_multiple_import": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "{"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_import_declaration"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "_import_declaration"
}
]
}
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "}"
}
]
},
"_import_declaration": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "import_name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_import_alias"
},
{
"type": "BLANK"
}
]
}
]
},
"_import_alias": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "as"
},
{
"type": "FIELD",
"name": "alias",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
}
]
},
"_declaration": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "contract_declaration"
},
{
"type": "SYMBOL",
"name": "interface_declaration"
},
{
"type": "SYMBOL",
"name": "error_declaration"
},
{
"type": "SYMBOL",
"name": "library_declaration"
},
{
"type": "SYMBOL",
"name": "struct_declaration"
},
{
"type": "SYMBOL",
"name": "enum_declaration"
},
{
"type": "SYMBOL",
"name": "function_definition"
},
{
"type": "SYMBOL",
"name": "constant_variable_declaration"
},
{
"type": "SYMBOL",
"name": "user_defined_type_definition"
},
{
"type": "SYMBOL",
"name": "event_definition"
},
{
"type": "SYMBOL",
"name": "using_directive"
}
]
},
"user_defined_type_definition": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "type"
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "STRING",
"value": "is"
},
{
"type": "SYMBOL",
"name": "primitive_type"
},
{
"type": "SYMBOL",
"name": "_semicolon"
}
]
},
"constant_variable_declaration": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "type",
"content": {
"type": "SYMBOL",
"name": "type_name"
}
},
{
"type": "STRING",
"value": "constant"
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "STRING",
"value": "="
},
{
"type": "FIELD",
"name": "value",
"content": {
"type": "SYMBOL",
"name": "expression"
}
},
{
"type": "SYMBOL",
"name": "_semicolon"
}
]
},
"contract_declaration": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "abstract"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "contract"
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_class_heritage"
},
{
"type": "SYMBOL",
"name": "layout_specifier"
}
]
}
},
{
"type": "FIELD",
"name": "body",
"content": {
"type": "SYMBOL",
"name": "contract_body"
}
}
]
},
"error_declaration": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "error"
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "STRING",
"value": "("
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "error_parameter"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "error_parameter"
}
]
}
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ")"
},
{
"type": "SYMBOL",
"name": "_semicolon"
}
]
},
"error_parameter": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "type",
"content": {
"type": "SYMBOL",
"name": "type_name"
}
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "BLANK"
}
]
}
}
]
},
"interface_declaration": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "interface"
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_class_heritage"
},
{
"type": "BLANK"
}
]
},
{
"type": "FIELD",
"name": "body",
"content": {
"type": "SYMBOL",
"name": "contract_body"
}
}
]
},
"library_declaration": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "library"
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "FIELD",
"name": "body",
"content": {
"type": "SYMBOL",
"name": "contract_body"
}
}
]
},
"_class_heritage": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "is"
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "inheritance_specifier"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "inheritance_specifier"
}
]
}
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "BLANK"
}
]
}
]
}
]
},
"layout_specifier": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "layout"
},
{
"type": "STRING",
"value": "at"
},
{
"type": "SYMBOL",
"name": "expression"
}
]
},
"inheritance_specifier": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "ancestor",
"content": {
"type": "SYMBOL",
"name": "user_defined_type"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "ancestor_arguments",
"content": {
"type": "SYMBOL",
"name": "_call_arguments"
}
},
{
"type": "BLANK"
}
]
}
]
},
"contract_body": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "{"
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_contract_member"
}
},
{
"type": "STRING",
"value": "}"
}
]
},
"_contract_member": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "function_definition"
},
{
"type": "SYMBOL",
"name": "modifier_definition"
},
{
"type": "SYMBOL",
"name": "error_declaration"
},
{
"type": "SYMBOL",
"name": "state_variable_declaration"
},
{
"type": "SYMBOL",
"name": "struct_declaration"
},
{
"type": "SYMBOL",
"name": "enum_declaration"
},
{
"type": "SYMBOL",
"name": "event_definition"
},
{
"type": "SYMBOL",
"name": "using_directive"
},
{
"type": "SYMBOL",
"name": "constructor_definition"
},
{
"type": "SYMBOL",
"name": "fallback_receive_definition"
},
{
"type": "SYMBOL",
"name": "user_defined_type_definition"
}
]
},
"struct_declaration": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "struct"
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "FIELD",
"name": "body",
"content": {
"type": "SYMBOL",
"name": "struct_body"
}
}
]
},
"struct_member": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "type",
"content": {
"type": "SYMBOL",
"name": "type_name"
}
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "SYMBOL",
"name": "_semicolon"
}
]
},
"struct_body": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "{"
},
{
"type": "REPEAT1",
"content": {
"type": "SYMBOL",
"name": "struct_member"
}
},
{
"type": "STRING",
"value": "}"
}
]
},
"enum_declaration": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "enum"
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "FIELD",
"name": "body",
"content": {
"type": "SYMBOL",
"name": "enum_body"
}
}
]
},
"enum_body": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "{"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "identifier"
},
"named": true,
"value": "enum_value"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "identifier"
},
"named": true,
"value": "enum_value"
}
]
}
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "}"
}
]
},
"event_definition": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "event"
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "SYMBOL",
"name": "_event_parameter_list"
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "anonymous"
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "_semicolon"
}
]
},
"_event_parameter_list": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "event_parameter"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "event_parameter"
}
]
}
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ")"
}
]
},
"event_parameter": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "type",
"content": {
"type": "SYMBOL",
"name": "type_name"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "indexed"
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "BLANK"
}
]
}
]
},
"user_definable_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": "!="
}
]
},
"using_directive": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "using"
},
{
"type": "CHOICE",
"members": [
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "user_defined_type"
},
"named": true,
"value": "type_alias"
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "{"
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "using_alias"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "using_alias"
}
]
}
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "STRING",
"value": "}"
}
]
}
]
},
{
"type": "STRING",
"value": "for"
},
{
"type": "FIELD",
"name": "source",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "any_source_type"
},
{
"type": "SYMBOL",
"name": "type_name"
}
]
}
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "global"
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "_semicolon"
}
]
},
"using_alias": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "user_defined_type"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "as"
},
{
"type": "SYMBOL",
"name": "user_definable_operator"
}
]
},
{
"type": "BLANK"
}
]
}
]
},
"any_source_type": {
"type": "STRING",
"value": "*"
},
"statement": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "block_statement"
},
{
"type": "SYMBOL",
"name": "expression_statement"
},
{
"type": "SYMBOL",
"name": "variable_declaration_statement"
},
{
"type": "SYMBOL",
"name": "if_statement"
},
{
"type": "SYMBOL",
"name": "for_statement"
},
{
"type": "SYMBOL",
"name": "while_statement"
},
{
"type": "SYMBOL",
"name": "do_while_statement"
},
{
"type": "SYMBOL",
"name": "continue_statement"
},
{
"type": "SYMBOL",
"name": "break_statement"
},
{
"type": "SYMBOL",
"name": "try_statement"
},
{
"type": "SYMBOL",
"name": "return_statement"
},
{
"type": "SYMBOL",
"name": "emit_statement"
},
{
"type": "SYMBOL",
"name": "assembly_statement"
},
{
"type": "SYMBOL",
"name": "revert_statement"
}
]
},
"assembly_statement": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "assembly"
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "\"evmasm\""
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "assembly_flags"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "{"
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_yul_statement"
}
},
{
"type": "STRING",
"value": "}"
}
]
},
"assembly_flags": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "string"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "string"
}
]
}
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ")"
}
]
},
"_yul_statement": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "yul_block"
},
{
"type": "SYMBOL",
"name": "yul_variable_declaration"
},
{
"type": "SYMBOL",
"name": "yul_assignment"
},
{
"type": "SYMBOL",
"name": "yul_function_call"
},
{
"type": "SYMBOL",
"name": "yul_if_statement"
},
{
"type": "SYMBOL",
"name": "yul_for_statement"
},
{
"type": "SYMBOL",
"name": "yul_switch_statement"
},
{
"type": "SYMBOL",
"name": "yul_leave"
},
{
"type": "SYMBOL",
"name": "yul_break"
},
{
"type": "SYMBOL",
"name": "yul_continue"
},
{
"type": "SYMBOL",
"name": "yul_function_definition"
},
{
"type": "SYMBOL",
"name": "yul_label"
},
{
"type": "SYMBOL",
"name": "_yul_literal"
}
]
},
"yul_label": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "STRING",
"value": ":"
}
]
},
"yul_leave": {
"type": "STRING",
"value": "leave"
},
"yul_break": {
"type": "STRING",
"value": "break"
},
"yul_continue": {
"type": "STRING",
"value": "continue"
},
"yul_identifier": {
"type": "SYMBOL",
"name": "identifier"
},
"_yul_expression": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "yul_path"
},
{
"type": "SYMBOL",
"name": "yul_function_call"
},
{
"type": "SYMBOL",
"name": "_yul_literal"
}
]
},
"yul_path": {
"type": "PREC_LEFT",
"value": 0,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "yul_identifier"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "."
},
{
"type": "SYMBOL",
"name": "yul_identifier"
}
]
}
}
]
}
},
"_yul_literal": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "yul_decimal_number"
},
{
"type": "SYMBOL",
"name": "yul_string_literal"
},
{
"type": "SYMBOL",
"name": "yul_hex_number"
},
{
"type": "SYMBOL",
"name": "yul_boolean"
},
{
"type": "SYMBOL",
"name": "yul_hex_string_literal"
}
]
},
"yul_decimal_number": {
"type": "PATTERN",
"value": "0|([1-9][0-9]*)"
},
"yul_string_literal": {
"type": "SYMBOL",
"name": "string"
},
"yul_hex_number": {
"type": "PATTERN",
"value": "0x[0-9A-Fa-f]*"
},
"yul_boolean": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "true"
},
{
"type": "STRING",
"value": "false"
}
]
},
"yul_hex_string_literal": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "hex"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "\""
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_hex_digit"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "_"
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "_hex_digit"
}
]
}
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "\""
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "'"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_hex_digit"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "_"
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "_hex_digit"
}
]
}
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "'"
}
]
}
]
}
]
},
"yul_block": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "{"
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_yul_statement"
}
},
{
"type": "STRING",
"value": "}"
}
]
},
"yul_variable_declaration": {
"type": "PREC_LEFT",
"value": 1,
"content": {
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "let"
},
{
"type": "FIELD",
"name": "left",
"content": {
"type": "SYMBOL",
"name": "yul_identifier"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ":="
},
{
"type": "FIELD",
"name": "right",
"content": {
"type": "SYMBOL",
"name": "_yul_expression"
}
}
]
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "let"
},
{
"type": "FIELD",
"name": "left",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "yul_identifier"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "yul_identifier"
}
]
}
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "yul_identifier"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "yul_identifier"
}
]
}
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "STRING",
"value": ")"
}
]
}
]
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ":="
},
{
"type": "FIELD",
"name": "right",
"content": {
"type": "SYMBOL",
"name": "yul_function_call"
}
}
]
},
{
"type": "BLANK"
}
]
}
]
}
]
}
},
"_yul_assignment_operator": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ":="
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ":"
},
{
"type": "STRING",
"value": "="
}
]
}
]
},
"yul_assignment": {
"type": "PREC_LEFT",
"value": 0,
"content": {
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "yul_path"
},
{
"type": "SYMBOL",
"name": "_yul_assignment_operator"
},
{
"type": "SYMBOL",
"name": "_yul_expression"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "yul_path"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "yul_path"
}
]
}
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_yul_assignment_operator"
},
{
"type": "SYMBOL",
"name": "yul_function_call"
}
]
},
{
"type": "BLANK"
}
]
}
]
}
]
}
},
"yul_function_call": {
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "function",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "yul_identifier"
},
{
"type": "SYMBOL",
"name": "yul_evm_builtin"
}
]
}
},
{
"type": "STRING",
"value": "("
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_yul_expression"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "_yul_expression"
}
]
}
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ")"
}
]
},
{
"type": "FIELD",
"name": "function",
"content": {
"type": "SYMBOL",
"name": "yul_evm_builtin"
}
}
]
},
"yul_if_statement": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "if"
},
{
"type": "SYMBOL",
"name": "_yul_expression"
},
{
"type": "SYMBOL",
"name": "yul_block"
}
]
},
"yul_for_statement": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "for"
},
{
"type": "SYMBOL",
"name": "yul_block"
},
{
"type": "SYMBOL",
"name": "_yul_expression"
},
{
"type": "SYMBOL",
"name": "yul_block"
},
{
"type": "SYMBOL",
"name": "yul_block"
}
]
},
"yul_switch_statement": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "switch"
},
{
"type": "SYMBOL",
"name": "_yul_expression"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "default"
},
{
"type": "SYMBOL",
"name": "yul_block"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "REPEAT1",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "case"
},
{
"type": "SYMBOL",
"name": "_yul_literal"
},
{
"type": "SYMBOL",
"name": "yul_block"
}
]
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "default"
},
{
"type": "SYMBOL",
"name": "yul_block"
}
]
},
{
"type": "BLANK"
}
]
}
]
}
]
}
]
},
"yul_function_definition": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "function"
},
{
"type": "SYMBOL",
"name": "yul_identifier"
},
{
"type": "STRING",
"value": "("
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "yul_identifier"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "yul_identifier"
}
]
}
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ")"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "->"
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "yul_identifier"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "yul_identifier"
}
]
}
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "BLANK"
}
]
}
]
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "yul_block"
}
]
},
"yul_evm_builtin": {
"type": "PREC",
"value": 1,
"content": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "stop"
},
{
"type": "STRING",
"value": "add"
},
{
"type": "STRING",
"value": "sub"
},
{
"type": "STRING",
"value": "mul"
},
{
"type": "STRING",
"value": "div"
},
{
"type": "STRING",
"value": "sdiv"
},
{
"type": "STRING",
"value": "mod"
},
{
"type": "STRING",
"value": "smod"
},
{
"type": "STRING",
"value": "exp"
},
{
"type": "STRING",
"value": "not"
},
{
"type": "STRING",
"value": "lt"
},
{
"type": "STRING",
"value": "gt"
},
{
"type": "STRING",
"value": "slt"
},
{
"type": "STRING",
"value": "sgt"
},
{
"type": "STRING",
"value": "eq"
},
{
"type": "STRING",
"value": "iszero"
},
{
"type": "STRING",
"value": "and"
},
{
"type": "STRING",
"value": "or"
},
{
"type": "STRING",
"value": "xor"
},
{
"type": "STRING",
"value": "byte"
},
{
"type": "STRING",
"value": "shl"
},
{
"type": "STRING",
"value": "shr"
},
{
"type": "STRING",
"value": "sar"
},
{
"type": "STRING",
"value": "addmod"
},
{
"type": "STRING",
"value": "mulmod"
},
{
"type": "STRING",
"value": "signextend"
},
{
"type": "STRING",
"value": "keccak256"
},
{
"type": "STRING",
"value": "pop"
},
{
"type": "STRING",
"value": "mload"
},
{
"type": "STRING",
"value": "mcopy"
},
{
"type": "STRING",
"value": "tload"
},
{
"type": "STRING",
"value": "tstore"
},
{
"type": "STRING",
"value": "mstore"
},
{
"type": "STRING",
"value": "mstore8"
},
{
"type": "STRING",
"value": "sload"
},
{
"type": "STRING",
"value": "sstore"
},
{
"type": "STRING",
"value": "msize"
},
{
"type": "STRING",
"value": "gas"
},
{
"type": "STRING",
"value": "address"
},
{
"type": "STRING",
"value": "balance"
},
{
"type": "STRING",
"value": "selfbalance"
},
{
"type": "STRING",
"value": "caller"
},
{
"type": "STRING",
"value": "callvalue"
},
{
"type": "STRING",
"value": "calldataload"
},
{
"type": "STRING",
"value": "calldatasize"
},
{
"type": "STRING",
"value": "calldatacopy"
},
{
"type": "STRING",
"value": "extcodesize"
},
{
"type": "STRING",
"value": "extcodecopy"
},
{
"type": "STRING",
"value": "returndatasize"
},
{
"type": "STRING",
"value": "returndatacopy"
},
{
"type": "STRING",
"value": "extcodehash"
},
{
"type": "STRING",
"value": "create"
},
{
"type": "STRING",
"value": "create2"
},
{
"type": "STRING",
"value": "call"
},
{
"type": "STRING",
"value": "callcode"
},
{
"type": "STRING",
"value": "delegatecall"
},
{
"type": "STRING",
"value": "staticcall"
},
{
"type": "STRING",
"value": "return"
},
{
"type": "STRING",
"value": "revert"
},
{
"type": "STRING",
"value": "selfdestruct"
},
{
"type": "STRING",
"value": "invalid"
},
{
"type": "STRING",
"value": "log0"
},
{
"type": "STRING",
"value": "log1"
},
{
"type": "STRING",
"value": "log2"
},
{
"type": "STRING",
"value": "log3"
},
{
"type": "STRING",
"value": "log4"
},
{
"type": "STRING",
"value": "chainid"
},
{
"type": "STRING",
"value": "origin"
},
{
"type": "STRING",
"value": "gasprice"
},
{
"type": "STRING",
"value": "blockhash"
},
{
"type": "STRING",
"value": "blobhash"
},
{
"type": "STRING",
"value": "basefee"
},
{
"type": "STRING",
"value": "blobfee"
},
{
"type": "STRING",
"value": "coinbase"
},
{
"type": "STRING",
"value": "timestamp"
},
{
"type": "STRING",
"value": "number"
},
{
"type": "STRING",
"value": "difficulty"
},
{
"type": "STRING",
"value": "gaslimit"
},
{
"type": "STRING",
"value": "prevrandao"
},
{
"type": "STRING",
"value": "blobbasefee"
},
{
"type": "STRING",
"value": "blobfee"
}
]
}
},
"unchecked": {
"type": "STRING",
"value": "unchecked"
},
"block_statement": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "unchecked"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "{"
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "statement"
}
},
{
"type": "STRING",
"value": "}"
}
]
},
"variable_declaration_statement": {
"type": "PREC",
"value": 1,
"content": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "variable_declaration"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "="
},
{
"type": "FIELD",
"name": "value",
"content": {
"type": "SYMBOL",
"name": "expression"
}
}
]
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "variable_declaration_tuple"
},
{
"type": "STRING",
"value": "="
},
{
"type": "FIELD",
"name": "value",
"content": {
"type": "SYMBOL",
"name": "expression"
}
}
]
}
]
},
{
"type": "SYMBOL",
"name": "_semicolon"
}
]
}
},
"variable_declaration": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "type",
"content": {
"type": "SYMBOL",
"name": "type_name"
}
},
{
"type": "FIELD",
"name": "location",
"content": {
"type": "CHOICE",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "memory"
},
{
"type": "STRING",
"value": "storage"
},
{
"type": "STRING",
"value": "calldata"
}
]
},
{
"type": "BLANK"
}
]
}
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
}
]
},
"variable_declaration_tuple": {
"type": "PREC",
"value": 3,
"content": {
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "variable_declaration"
},
{
"type": "BLANK"
}
]
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "variable_declaration"
},
{
"type": "BLANK"
}
]
}
]
}
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ")"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "var"
},
{
"type": "STRING",
"value": "("
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "BLANK"
}
]
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "BLANK"
}
]
}
]
}
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ")"
}
]
}
]
}
},
"expression_statement": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "expression"
},
{
"type": "SYMBOL",
"name": "_semicolon"
}
]
},
"if_statement": {
"type": "PREC_RIGHT",
"value": 0,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "if"
},
{
"type": "STRING",
"value": "("
},
{
"type": "FIELD",
"name": "condition",
"content": {
"type": "SYMBOL",
"name": "expression"
}
},
{
"type": "STRING",
"value": ")"
},
{
"type": "FIELD",
"name": "body",
"content": {
"type": "SYMBOL",
"name": "statement"
}
},
{
"type": "FIELD",
"name": "else",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "else"
},
{
"type": "FIELD",
"name": "body",
"content": {
"type": "SYMBOL",
"name": "statement"
}
}
]
},
{
"type": "BLANK"
}
]
}
}
]
}
},
"for_statement": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "for"
},
{
"type": "STRING",
"value": "("
},
{
"type": "FIELD",
"name": "initial",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "variable_declaration_statement"
},
{
"type": "SYMBOL",
"name": "expression_statement"
},
{
"type": "SYMBOL",
"name": "_semicolon"
}
]
}
},
{
"type": "FIELD",
"name": "condition",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "expression_statement"
},
{
"type": "SYMBOL",
"name": "_semicolon"
}
]
}
},
{
"type": "FIELD",
"name": "update",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "expression"
},
{
"type": "BLANK"
}
]
}
},
{
"type": "STRING",
"value": ")"
},
{
"type": "FIELD",
"name": "body",
"content": {
"type": "SYMBOL",
"name": "statement"
}
}
]
},
"while_statement": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "while"
},
{
"type": "STRING",
"value": "("
},
{
"type": "FIELD",
"name": "condition",
"content": {
"type": "SYMBOL",
"name": "expression"
}
},
{
"type": "STRING",
"value": ")"
},
{
"type": "FIELD",
"name": "body",
"content": {
"type": "SYMBOL",
"name": "statement"
}
}
]
},
"do_while_statement": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "do"
},
{
"type": "FIELD",
"name": "body",
"content": {
"type": "SYMBOL",
"name": "statement"
}
},
{
"type": "STRING",
"value": "while"
},
{
"type": "STRING",
"value": "("
},
{
"type": "FIELD",
"name": "condition",
"content": {
"type": "SYMBOL",
"name": "expression"
}
},
{
"type": "STRING",
"value": ")"
},
{
"type": "SYMBOL",
"name": "_semicolon"
}
]
},
"continue_statement": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "continue"
},
{
"type": "SYMBOL",
"name": "_semicolon"
}
]
},
"break_statement": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "break"
},
{
"type": "SYMBOL",
"name": "_semicolon"
}
]
},
"revert_statement": {
"type": "PREC",
"value": 13,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "revert"
},
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "error",
"content": {
"type": "SYMBOL",
"name": "expression"
}
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_call_arguments"
},
"named": true,
"value": "revert_arguments"
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "_semicolon"
}
]
}
},
"try_statement": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "try"
},
{
"type": "FIELD",
"name": "attempt",
"content": {
"type": "SYMBOL",
"name": "expression"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "returns"
},
{
"type": "SYMBOL",
"name": "_parameter_list"
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "FIELD",
"name": "body",
"content": {
"type": "SYMBOL",
"name": "block_statement"
}
},
{
"type": "REPEAT1",
"content": {
"type": "SYMBOL",
"name": "catch_clause"
}
}
]
},
"catch_clause": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "catch"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "_parameter_list"
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "FIELD",
"name": "body",
"content": {
"type": "SYMBOL",
"name": "block_statement"
}
}
]
},
"return_statement": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "return"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "expression"
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "_semicolon"
}
]
},
"emit_statement": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "emit"
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "expression"
}
},
{
"type": "SYMBOL",
"name": "_call_arguments"
},
{
"type": "SYMBOL",
"name": "_semicolon"
}
]
},
"state_variable_declaration": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "type",
"content": {
"type": "SYMBOL",
"name": "type_name"
}
},
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "visibility",
"content": {
"type": "SYMBOL",
"name": "visibility"
}
},
{
"type": "STRING",
"value": "constant"
},
{
"type": "SYMBOL",
"name": "override_specifier"
},
{
"type": "SYMBOL",
"name": "immutable"
},
{
"type": "FIELD",
"name": "location",
"content": {
"type": "SYMBOL",
"name": "state_location"
}
}
]
}
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "="
},
{
"type": "FIELD",
"name": "value",
"content": {
"type": "SYMBOL",
"name": "expression"
}
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "_semicolon"
}
]
},
"visibility": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "public"
},
{
"type": "STRING",
"value": "internal"
},
{
"type": "STRING",
"value": "private"
},
{
"type": "STRING",
"value": "external"
}
]
},
"state_mutability": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "pure"
},
{
"type": "STRING",
"value": "view"
},
{
"type": "STRING",
"value": "payable"
}
]
},
"state_location": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "transient"
}
]
},
"immutable": {
"type": "STRING",
"value": "immutable"
},
"override_specifier": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "override"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "user_defined_type"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "user_defined_type"
}
]
}
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "STRING",
"value": ")"
}
]
},
{
"type": "BLANK"
}
]
}
]
},
"modifier_definition": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "modifier"
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_parameter_list"
},
{
"type": "BLANK"
}
]
},
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "virtual"
},
{
"type": "SYMBOL",
"name": "override_specifier"
}
]
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_semicolon"
},
{
"type": "FIELD",
"name": "body",
"content": {
"type": "SYMBOL",
"name": "function_body"
}
}
]
}
]
},
"constructor_definition": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "constructor"
},
{
"type": "SYMBOL",
"name": "_parameter_list"
},
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "modifier_invocation"
},
{
"type": "STRING",
"value": "payable"
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "internal"
},
{
"type": "STRING",
"value": "public"
}
]
}
]
}
},
{
"type": "FIELD",
"name": "body",
"content": {
"type": "SYMBOL",
"name": "function_body"
}
}
]
},
"fallback_receive_definition": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "fallback"
},
{
"type": "STRING",
"value": "receive"
},
{
"type": "STRING",
"value": "function"
}
]
}
]
},
{
"type": "STRING",
"value": "function"
}
]
},
{
"type": "SYMBOL",
"name": "_parameter_list"
},
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "visibility"
},
{
"type": "SYMBOL",
"name": "modifier_invocation"
},
{
"type": "SYMBOL",
"name": "state_mutability"
},
{
"type": "SYMBOL",
"name": "virtual"
},
{
"type": "SYMBOL",
"name": "override_specifier"
}
]
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "returns"
},
{
"type": "SYMBOL",
"name": "_parameter_list"
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_semicolon"
},
{
"type": "FIELD",
"name": "body",
"content": {
"type": "SYMBOL",
"name": "function_body"
}
}
]
}
]
},
"function_definition": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "function"
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "SYMBOL",
"name": "_parameter_list"
},
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "modifier_invocation"
},
{
"type": "SYMBOL",
"name": "visibility"
},
{
"type": "SYMBOL",
"name": "state_mutability"
},
{
"type": "SYMBOL",
"name": "virtual"
},
{
"type": "SYMBOL",
"name": "override_specifier"
}
]
}
},
{
"type": "FIELD",
"name": "return_type",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "return_type_definition"
},
{
"type": "BLANK"
}
]
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_semicolon"
},
{
"type": "FIELD",
"name": "body",
"content": {
"type": "SYMBOL",
"name": "function_body"
}
}
]
}
]
},
"return_type_definition": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "returns"
},
{
"type": "SYMBOL",
"name": "_parameter_list"
}
]
},
"virtual": {
"type": "STRING",
"value": "virtual"
},
"modifier_invocation": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_identifier_path"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_call_arguments"
},
{
"type": "BLANK"
}
]
}
]
},
"_call_arguments": {
"type": "PREC",
"value": 4,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "call_argument"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "call_argument"
}
]
}
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ")"
}
]
}
},
"call_argument": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "expression"
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "{"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "call_struct_argument"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "call_struct_argument"
}
]
}
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "}"
}
]
}
]
},
"call_struct_argument": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "STRING",
"value": ":"
},
{
"type": "FIELD",
"name": "value",
"content": {
"type": "SYMBOL",
"name": "expression"
}
}
]
},
"function_body": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "{"
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "statement"
}
},
{
"type": "STRING",
"value": "}"
}
]
},
"expression": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "binary_expression"
},
{
"type": "SYMBOL",
"name": "unary_expression"
},
{
"type": "SYMBOL",
"name": "update_expression"
},
{
"type": "SYMBOL",
"name": "call_expression"
},
{
"type": "SYMBOL",
"name": "payable_conversion_expression"
},
{
"type": "SYMBOL",
"name": "meta_type_expression"
},
{
"type": "SYMBOL",
"name": "_primary_expression"
},
{
"type": "SYMBOL",
"name": "struct_expression"
},
{
"type": "SYMBOL",
"name": "ternary_expression"
},
{
"type": "SYMBOL",
"name": "type_cast_expression"
}
]
},
"_primary_expression": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "parenthesized_expression"
},
{
"type": "SYMBOL",
"name": "member_expression"
},
{
"type": "SYMBOL",
"name": "array_access"
},
{
"type": "SYMBOL",
"name": "slice_access"
},
{
"type": "SYMBOL",
"name": "primitive_type"
},
{
"type": "SYMBOL",
"name": "assignment_expression"
},
{
"type": "SYMBOL",
"name": "augmented_assignment_expression"
},
{
"type": "SYMBOL",
"name": "user_defined_type"
},
{
"type": "SYMBOL",
"name": "tuple_expression"
},
{
"type": "SYMBOL",
"name": "inline_array_expression"
},
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "SYMBOL",
"name": "_literal"
},
{
"type": "SYMBOL",
"name": "new_expression"
}
]
},
"type_cast_expression": {
"type": "PREC_LEFT",
"value": 0,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "primitive_type"
},
{
"type": "SYMBOL",
"name": "_call_arguments"
}
]
}
},
"ternary_expression": {
"type": "PREC_LEFT",
"value": 0,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "expression"
},
{
"type": "STRING",
"value": "?"
},
{
"type": "SYMBOL",
"name": "expression"
},
{
"type": "STRING",
"value": ":"
},
{
"type": "SYMBOL",
"name": "expression"
}
]
}
},
"new_expression": {
"type": "PREC_LEFT",
"value": 0,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "new"
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "type_name"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_call_arguments"
},
{
"type": "BLANK"
}
]
}
]
}
},
"tuple_expression": {
"type": "PREC",
"value": 1,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "expression"
},
{
"type": "BLANK"
}
]
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "expression"
},
{
"type": "BLANK"
}
]
}
]
}
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ")"
}
]
}
},
"inline_array_expression": {
"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": "]"
}
]
},
"binary_expression": {
"type": "CHOICE",
"members": [
{
"type": "PREC_LEFT",
"value": 1,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "left",
"content": {
"type": "SYMBOL",
"name": "expression"
}
},
{
"type": "FIELD",
"name": "operator",
"content": {
"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": "FIELD",
"name": "operator",
"content": {
"type": "STRING",
"value": "&&"
}
},
{
"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": "FIELD",
"name": "operator",
"content": {
"type": "STRING",
"value": "=="
}
},
{
"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": "FIELD",
"name": "operator",
"content": {
"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": "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": "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": "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": "STRING",
"value": ">="
}
},
{
"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": "FIELD",
"name": "operator",
"content": {
"type": "STRING",
"value": "|"
}
},
{
"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": "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": "FIELD",
"name": "operator",
"content": {
"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": "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": "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": "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": "STRING",
"value": "-"
}
},
{
"type": "FIELD",
"name": "right",
"content": {
"type": "SYMBOL",
"name": "expression"
}
}
]
}
},
{
"type": "PREC_LEFT",
"value": 10,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "left",
"content": {
"type": "SYMBOL",
"name": "expression"
}
},
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "STRING",
"value": "*"
}
},
{
"type": "FIELD",
"name": "right",
"content": {
"type": "SYMBOL",
"name": "expression"
}
}
]
}
},
{
"type": "PREC_LEFT",
"value": 10,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "left",
"content": {
"type": "SYMBOL",
"name": "expression"
}
},
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "STRING",
"value": "/"
}
},
{
"type": "FIELD",
"name": "right",
"content": {
"type": "SYMBOL",
"name": "expression"
}
}
]
}
},
{
"type": "PREC_LEFT",
"value": 10,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "left",
"content": {
"type": "SYMBOL",
"name": "expression"
}
},
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "STRING",
"value": "%"
}
},
{
"type": "FIELD",
"name": "right",
"content": {
"type": "SYMBOL",
"name": "expression"
}
}
]
}
},
{
"type": "PREC_LEFT",
"value": 11,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "left",
"content": {
"type": "SYMBOL",
"name": "expression"
}
},
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "STRING",
"value": "**"
}
},
{
"type": "FIELD",
"name": "right",
"content": {
"type": "SYMBOL",
"name": "expression"
}
}
]
}
}
]
},
"unary_expression": {
"type": "CHOICE",
"members": [
{
"type": "PREC_LEFT",
"value": 12,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "STRING",
"value": "-"
}
},
{
"type": "FIELD",
"name": "argument",
"content": {
"type": "SYMBOL",
"name": "expression"
}
}
]
}
},
{
"type": "PREC_LEFT",
"value": 12,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "STRING",
"value": "delete"
}
},
{
"type": "FIELD",
"name": "argument",
"content": {
"type": "SYMBOL",
"name": "expression"
}
}
]
}
},
{
"type": "PREC_LEFT",
"value": 12,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "STRING",
"value": "!"
}
},
{
"type": "FIELD",
"name": "argument",
"content": {
"type": "SYMBOL",
"name": "expression"
}
}
]
}
},
{
"type": "PREC_LEFT",
"value": 12,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "STRING",
"value": "~"
}
},
{
"type": "FIELD",
"name": "argument",
"content": {
"type": "SYMBOL",
"name": "expression"
}
}
]
}
}
]
},
"update_expression": {
"type": "CHOICE",
"members": [
{
"type": "PREC_LEFT",
"value": 13,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "argument",
"content": {
"type": "SYMBOL",
"name": "expression"
}
},
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "++"
},
{
"type": "STRING",
"value": "--"
}
]
}
}
]
}
},
{
"type": "PREC_LEFT",
"value": 12,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "++"
},
{
"type": "STRING",
"value": "--"
}
]
}
},
{
"type": "FIELD",
"name": "argument",
"content": {
"type": "SYMBOL",
"name": "expression"
}
}
]
}
}
]
},
"member_expression": {
"type": "PREC_DYNAMIC",
"value": 1,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "object",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "expression"
},
{
"type": "SYMBOL",
"name": "identifier"
}
]
}
},
{
"type": "STRING",
"value": "."
},
{
"type": "FIELD",
"name": "property",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
}
]
}
},
"array_access": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "base",
"content": {
"type": "SYMBOL",
"name": "expression"
}
},
{
"type": "STRING",
"value": "["
},
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "index",
"content": {
"type": "SYMBOL",
"name": "expression"
}
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "]"
}
]
},
"slice_access": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "base",
"content": {
"type": "SYMBOL",
"name": "expression"
}
},
{
"type": "STRING",
"value": "["
},
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "from",
"content": {
"type": "SYMBOL",
"name": "expression"
}
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ":"
},
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "to",
"content": {
"type": "SYMBOL",
"name": "expression"
}
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "]"
}
]
},
"struct_expression": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "type",
"content": {
"type": "SYMBOL",
"name": "expression"
}
},
{
"type": "STRING",
"value": "{"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "struct_field_assignment"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "struct_field_assignment"
}
]
}
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "}"
}
]
},
"struct_field_assignment": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "STRING",
"value": ":"
},
{
"type": "FIELD",
"name": "value",
"content": {
"type": "SYMBOL",
"name": "expression"
}
}
]
},
"parenthesized_expression": {
"type": "PREC",
"value": 2,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "SYMBOL",
"name": "expression"
},
{
"type": "STRING",
"value": ")"
}
]
}
},
"assignment_expression": {
"type": "PREC_RIGHT",
"value": 0,
"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"
}
}
]
}
},
"augmented_assignment_expression": {
"type": "PREC_RIGHT",
"value": 0,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "left",
"content": {
"type": "SYMBOL",
"name": "expression"
}
},
{
"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": "FIELD",
"name": "right",
"content": {
"type": "SYMBOL",
"name": "expression"
}
}
]
}
},
"call_expression": {
"type": "PREC_RIGHT",
"value": 13,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "function",
"content": {
"type": "SYMBOL",
"name": "expression"
}
},
{
"type": "SYMBOL",
"name": "_call_arguments"
}
]
}
},
"payable_conversion_expression": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "payable"
},
{
"type": "SYMBOL",
"name": "_call_arguments"
}
]
},
"meta_type_expression": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "type"
},
{
"type": "STRING",
"value": "("
},
{
"type": "SYMBOL",
"name": "type_name"
},
{
"type": "STRING",
"value": ")"
}
]
},
"type_name": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "primitive_type"
},
{
"type": "SYMBOL",
"name": "user_defined_type"
},
{
"type": "SYMBOL",
"name": "_mapping"
},
{
"type": "SYMBOL",
"name": "_array_type"
},
{
"type": "SYMBOL",
"name": "_function_type"
}
]
},
"_array_type": {
"type": "PREC",
"value": 1,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "type_name"
},
{
"type": "STRING",
"value": "["
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "expression"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "]"
}
]
}
},
"_function_type": {
"type": "PREC_RIGHT",
"value": 0,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "function"
},
{
"type": "FIELD",
"name": "parameters",
"content": {
"type": "SYMBOL",
"name": "_parameter_list"
}
},
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "visibility"
},
{
"type": "SYMBOL",
"name": "state_mutability"
}
]
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_return_parameters"
},
{
"type": "BLANK"
}
]
}
]
}
},
"_parameter_list": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "parameter"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "parameter"
}
]
}
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ")"
}
]
},
"_return_parameters": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "returns"
},
{
"type": "STRING",
"value": "("
},
{
"type": "SEQ",
"members": [
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_nameless_parameter"
},
"named": true,
"value": "return_parameter"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_nameless_parameter"
},
"named": true,
"value": "return_parameter"
}
]
}
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "STRING",
"value": ")"
}
]
},
"_nameless_parameter": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "type",
"content": {
"type": "SYMBOL",
"name": "type_name"
}
},
{
"type": "FIELD",
"name": "location",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_storage_location"
},
{
"type": "BLANK"
}
]
}
}
]
},
"parameter": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "type",
"content": {
"type": "SYMBOL",
"name": "type_name"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "location",
"content": {
"type": "SYMBOL",
"name": "_storage_location"
}
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "BLANK"
}
]
}
]
},
"_storage_location": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "memory"
},
{
"type": "STRING",
"value": "storage"
},
{
"type": "STRING",
"value": "calldata"
}
]
},
"user_defined_type": {
"type": "SYMBOL",
"name": "_identifier_path"
},
"_identifier_path": {
"type": "PREC_LEFT",
"value": 0,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "."
},
{
"type": "SYMBOL",
"name": "identifier"
}
]
}
}
]
}
},
"_mapping": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "mapping"
},
{
"type": "STRING",
"value": "("
},
{
"type": "FIELD",
"name": "key_type",
"content": {
"type": "SYMBOL",
"name": "_mapping_key"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "key_identifier",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "=>"
},
{
"type": "FIELD",
"name": "value_type",
"content": {
"type": "SYMBOL",
"name": "type_name"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "value_identifier",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ")"
}
]
},
"_mapping_key": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "primitive_type"
},
{
"type": "SYMBOL",
"name": "user_defined_type"
}
]
},
"primitive_type": {
"type": "PREC_LEFT",
"value": 0,
"content": {
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "address"
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "payable"
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "STRING",
"value": "bool"
},
{
"type": "STRING",
"value": "string"
},
{
"type": "STRING",
"value": "var"
},
{
"type": "SYMBOL",
"name": "_int"
},
{
"type": "SYMBOL",
"name": "_uint"
},
{
"type": "SYMBOL",
"name": "_bytes"
},
{
"type": "SYMBOL",
"name": "_fixed"
},
{
"type": "SYMBOL",
"name": "_ufixed"
}
]
}
},
"_int": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "int"
},
{
"type": "STRING",
"value": "int8"
},
{
"type": "STRING",
"value": "int16"
},
{
"type": "STRING",
"value": "int24"
},
{
"type": "STRING",
"value": "int32"
},
{
"type": "STRING",
"value": "int40"
},
{
"type": "STRING",
"value": "int48"
},
{
"type": "STRING",
"value": "int56"
},
{
"type": "STRING",
"value": "int64"
},
{
"type": "STRING",
"value": "int72"
},
{
"type": "STRING",
"value": "int80"
},
{
"type": "STRING",
"value": "int88"
},
{
"type": "STRING",
"value": "int96"
},
{
"type": "STRING",
"value": "int104"
},
{
"type": "STRING",
"value": "int112"
},
{
"type": "STRING",
"value": "int120"
},
{
"type": "STRING",
"value": "int128"
},
{
"type": "STRING",
"value": "int136"
},
{
"type": "STRING",
"value": "int144"
},
{
"type": "STRING",
"value": "int152"
},
{
"type": "STRING",
"value": "int160"
},
{
"type": "STRING",
"value": "int168"
},
{
"type": "STRING",
"value": "int176"
},
{
"type": "STRING",
"value": "int184"
},
{
"type": "STRING",
"value": "int192"
},
{
"type": "STRING",
"value": "int200"
},
{
"type": "STRING",
"value": "int208"
},
{
"type": "STRING",
"value": "int216"
},
{
"type": "STRING",
"value": "int224"
},
{
"type": "STRING",
"value": "int232"
},
{
"type": "STRING",
"value": "int240"
},
{
"type": "STRING",
"value": "int248"
},
{
"type": "STRING",
"value": "int256"
}
]
},
"_uint": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "uint"
},
{
"type": "STRING",
"value": "uint8"
},
{
"type": "STRING",
"value": "uint16"
},
{
"type": "STRING",
"value": "uint24"
},
{
"type": "STRING",
"value": "uint32"
},
{
"type": "STRING",
"value": "uint40"
},
{
"type": "STRING",
"value": "uint48"
},
{
"type": "STRING",
"value": "uint56"
},
{
"type": "STRING",
"value": "uint64"
},
{
"type": "STRING",
"value": "uint72"
},
{
"type": "STRING",
"value": "uint80"
},
{
"type": "STRING",
"value": "uint88"
},
{
"type": "STRING",
"value": "uint96"
},
{
"type": "STRING",
"value": "uint104"
},
{
"type": "STRING",
"value": "uint112"
},
{
"type": "STRING",
"value": "uint120"
},
{
"type": "STRING",
"value": "uint128"
},
{
"type": "STRING",
"value": "uint136"
},
{
"type": "STRING",
"value": "uint144"
},
{
"type": "STRING",
"value": "uint152"
},
{
"type": "STRING",
"value": "uint160"
},
{
"type": "STRING",
"value": "uint168"
},
{
"type": "STRING",
"value": "uint176"
},
{
"type": "STRING",
"value": "uint184"
},
{
"type": "STRING",
"value": "uint192"
},
{
"type": "STRING",
"value": "uint200"
},
{
"type": "STRING",
"value": "uint208"
},
{
"type": "STRING",
"value": "uint216"
},
{
"type": "STRING",
"value": "uint224"
},
{
"type": "STRING",
"value": "uint232"
},
{
"type": "STRING",
"value": "uint240"
},
{
"type": "STRING",
"value": "uint248"
},
{
"type": "STRING",
"value": "uint256"
}
]
},
"_bytes": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "byte"
},
{
"type": "STRING",
"value": "bytes"
},
{
"type": "STRING",
"value": "bytes1"
},
{
"type": "STRING",
"value": "bytes2"
},
{
"type": "STRING",
"value": "bytes3"
},
{
"type": "STRING",
"value": "bytes4"
},
{
"type": "STRING",
"value": "bytes5"
},
{
"type": "STRING",
"value": "bytes6"
},
{
"type": "STRING",
"value": "bytes7"
},
{
"type": "STRING",
"value": "bytes8"
},
{
"type": "STRING",
"value": "bytes9"
},
{
"type": "STRING",
"value": "bytes10"
},
{
"type": "STRING",
"value": "bytes11"
},
{
"type": "STRING",
"value": "bytes12"
},
{
"type": "STRING",
"value": "bytes13"
},
{
"type": "STRING",
"value": "bytes14"
},
{
"type": "STRING",
"value": "bytes15"
},
{
"type": "STRING",
"value": "bytes16"
},
{
"type": "STRING",
"value": "bytes17"
},
{
"type": "STRING",
"value": "bytes18"
},
{
"type": "STRING",
"value": "bytes19"
},
{
"type": "STRING",
"value": "bytes20"
},
{
"type": "STRING",
"value": "bytes21"
},
{
"type": "STRING",
"value": "bytes22"
},
{
"type": "STRING",
"value": "bytes23"
},
{
"type": "STRING",
"value": "bytes24"
},
{
"type": "STRING",
"value": "bytes25"
},
{
"type": "STRING",
"value": "bytes26"
},
{
"type": "STRING",
"value": "bytes27"
},
{
"type": "STRING",
"value": "bytes28"
},
{
"type": "STRING",
"value": "bytes29"
},
{
"type": "STRING",
"value": "bytes30"
},
{
"type": "STRING",
"value": "bytes31"
},
{
"type": "STRING",
"value": "bytes32"
}
]
},
"_fixed": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "fixed"
},
{
"type": "PATTERN",
"value": "fixed([0-9]+)x([0-9]+)"
}
]
},
"_ufixed": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "ufixed"
},
{
"type": "PATTERN",
"value": "ufixed([0-9]+)x([0-9]+)"
}
]
},
"_semicolon": {
"type": "STRING",
"value": ";"
},
"identifier": {
"type": "PATTERN",
"value": "[a-zA-Z$_][a-zA-Z0-9$_]*"
},
"number": {
"type": "PATTERN",
"value": "\\d+"
},
"_literal": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "string_literal"
},
{
"type": "SYMBOL",
"name": "number_literal"
},
{
"type": "SYMBOL",
"name": "boolean_literal"
},
{
"type": "SYMBOL",
"name": "hex_string_literal"
},
{
"type": "SYMBOL",
"name": "unicode_string_literal"
}
]
},
"string_literal": {
"type": "PREC_LEFT",
"value": 0,
"content": {
"type": "REPEAT1",
"content": {
"type": "SYMBOL",
"name": "string"
}
}
},
"number_literal": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_decimal_number"
},
{
"type": "SYMBOL",
"name": "_hex_number"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "number_unit"
},
{
"type": "BLANK"
}
]
}
]
},
"_decimal_number": {
"type": "CHOICE",
"members": [
{
"type": "PATTERN",
"value": "(\\d|_)+(\\.(\\d|_)+)?([eE](-)?(\\d|_)+)?"
},
{
"type": "PATTERN",
"value": "\\.(\\d|_)+([eE](-)?(\\d|_)+)?"
}
]
},
"_hex_number": {
"type": "PREC",
"value": 10,
"content": {
"type": "PATTERN",
"value": "0[xX]([a-fA-F0-9][a-fA-F0-9]?_?)+"
}
},
"_hex_digit": {
"type": "PATTERN",
"value": "([a-fA-F0-9][a-fA-F0-9])"
},
"number_unit": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "wei"
},
{
"type": "STRING",
"value": "szabo"
},
{
"type": "STRING",
"value": "finney"
},
{
"type": "STRING",
"value": "gwei"
},
{
"type": "STRING",
"value": "ether"
},
{
"type": "STRING",
"value": "seconds"
},
{
"type": "STRING",
"value": "minutes"
},
{
"type": "STRING",
"value": "hours"
},
{
"type": "STRING",
"value": "days"
},
{
"type": "STRING",
"value": "weeks"
},
{
"type": "STRING",
"value": "years"
}
]
},
"true": {
"type": "STRING",
"value": "true"
},
"false": {
"type": "STRING",
"value": "false"
},
"boolean_literal": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "true"
},
{
"type": "SYMBOL",
"name": "false"
}
]
},
"hex_string_literal": {
"type": "PREC_LEFT",
"value": 0,
"content": {
"type": "REPEAT1",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "hex"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "\""
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_hex_digit"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "_"
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "_hex_digit"
}
]
}
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "\""
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "'"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_hex_digit"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "_"
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "_hex_digit"
}
]
}
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "'"
}
]
}
]
}
]
}
}
},
"_escape_sequence": {
"type": "IMMEDIATE_TOKEN",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "\\"
},
{
"type": "CHOICE",
"members": [
{
"type": "PATTERN",
"value": "[^xu0-7]"
},
{
"type": "PATTERN",
"value": "[0-7]{1,3}"
},
{
"type": "PATTERN",
"value": "x[0-9a-fA-F]{2}"
},
{
"type": "PATTERN",
"value": "u[0-9a-fA-F]{4}"
},
{
"type": "PATTERN",
"value": "u\\{[0-9a-fA-F]+\\}"
}
]
}
]
}
},
"_single_quoted_unicode_char": {
"type": "IMMEDIATE_TOKEN",
"content": {
"type": "PREC",
"value": 2,
"content": {
"type": "PATTERN",
"value": "[^'\\\\\\n]+|\\\\\\r?\\n"
}
}
},
"_double_quoted_unicode_char": {
"type": "IMMEDIATE_TOKEN",
"content": {
"type": "PREC",
"value": 2,
"content": {
"type": "PATTERN",
"value": "[^\"\\\\\\n]+|\\\\\\r?\\n"
}
}
},
"unicode_string_literal": {
"type": "PREC_LEFT",
"value": 0,
"content": {
"type": "REPEAT1",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "unicode"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "\""
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_double_quoted_unicode_char"
}
},
{
"type": "STRING",
"value": "\""
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "'"
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_single_quoted_unicode_char"
}
},
{
"type": "STRING",
"value": "'"
}
]
}
]
}
]
}
}
},
"string": {
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "\""
},
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_string_immediate_elt_inside_double_quote"
},
{
"type": "SYMBOL",
"name": "_escape_sequence"
}
]
}
},
{
"type": "STRING",
"value": "\""
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "'"
},
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_string_immediate_elt_inside_quote"
},
{
"type": "SYMBOL",
"name": "_escape_sequence"
}
]
}
},
{
"type": "STRING",
"value": "'"
}
]
}
]
},
"_string_immediate_elt_inside_double_quote": {
"type": "IMMEDIATE_TOKEN",
"content": {
"type": "PREC",
"value": 2,
"content": {
"type": "PATTERN",
"value": "[^\"\\\\\\n]+|\\\\\\r?\\n"
}
}
},
"_string_immediate_elt_inside_quote": {
"type": "IMMEDIATE_TOKEN",
"content": {
"type": "PREC",
"value": 2,
"content": {
"type": "PATTERN",
"value": "[^'\\\\\\n]+|\\\\\\r?\\n"
}
}
},
"comment": {
"type": "TOKEN",
"content": {
"type": "PREC",
"value": 1,
"content": {
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "//"
},
{
"type": "PATTERN",
"value": "([^\\r\\n])*"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "/*"
},
{
"type": "PATTERN",
"value": "[^*]*\\*+([^/*][^*]*\\*+)*"
},
{
"type": "STRING",
"value": "/"
}
]
}
]
}
}
}
},
"extras": [
{
"type": "SYMBOL",
"name": "comment"
},
{
"type": "PATTERN",
"value": "[\\s\\uFEFF\\u2060\\u200B\\u00A0]"
}
],
"conflicts": [
[
"_primary_expression",
"type_name"
],
[
"_primary_expression",
"_identifier_path"
],
[
"_primary_expression",
"member_expression",
"_identifier_path"
],
[
"member_expression",
"_identifier_path"
],
[
"layout_specifier",
"struct_expression"
],
[
"_nameless_parameter",
"parameter"
],
[
"_primary_expression",
"type_cast_expression"
],
[
"variable_declaration_tuple",
"tuple_expression"
],
[
"_yul_expression",
"yul_assignment"
],
[
"yul_label",
"yul_identifier"
],
[
"fallback_receive_definition",
"_function_type"
]
],
"precedences": [],
"externals": [],
"inline": [],
"supertypes": [],
"reserved": {}
}