{
"$schema": "https://tree-sitter.github.io/tree-sitter/assets/schemas/grammar.schema.json",
"name": "c_sharp",
"word": "_identifier_token",
"rules": {
"compilation_unit": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "shebang_directive"
},
{
"type": "BLANK"
}
]
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_top_level_item"
}
}
]
},
"_top_level_item": {
"type": "PREC",
"value": 2,
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_top_level_item_no_statement"
},
{
"type": "SYMBOL",
"name": "global_statement"
}
]
}
},
"_top_level_item_no_statement": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "extern_alias_directive"
},
{
"type": "SYMBOL",
"name": "using_directive"
},
{
"type": "SYMBOL",
"name": "global_attribute"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "preproc_if_in_top_level"
},
"named": true,
"value": "preproc_if"
},
{
"type": "SYMBOL",
"name": "_namespace_member_declaration"
},
{
"type": "SYMBOL",
"name": "file_scoped_namespace_declaration"
}
]
},
"global_statement": {
"type": "PREC",
"value": 1,
"content": {
"type": "SYMBOL",
"name": "statement"
}
},
"extern_alias_directive": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "extern"
},
{
"type": "STRING",
"value": "alias"
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "STRING",
"value": ";"
}
]
},
"using_directive": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "global"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "using"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "unsafe"
},
{
"type": "BLANK"
}
]
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "STRING",
"value": "="
},
{
"type": "SYMBOL",
"name": "type"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "static"
},
{
"type": "STRING",
"value": "unsafe"
}
]
}
},
{
"type": "SYMBOL",
"name": "_name"
}
]
}
]
},
{
"type": "STRING",
"value": ";"
}
]
},
"global_attribute": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "["
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "assembly"
},
{
"type": "STRING",
"value": "module"
}
]
},
{
"type": "STRING",
"value": ":"
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "attribute"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "attribute"
}
]
}
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "]"
}
]
},
"attribute": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "_name"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "attribute_argument_list"
},
{
"type": "BLANK"
}
]
}
]
},
"attribute_argument_list": {
"type": "PREC",
"value": -1,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "attribute_argument"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "attribute_argument"
}
]
}
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ")"
}
]
}
},
"attribute_argument": {
"type": "PREC",
"value": -1,
"content": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ":"
},
{
"type": "STRING",
"value": "="
}
]
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "expression"
}
]
}
},
"attribute_list": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "["
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "attribute_target_specifier"
},
{
"type": "BLANK"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "attribute"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "attribute"
}
]
}
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "]"
}
]
},
"_attribute_list": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "attribute_list"
},
{
"type": "SYMBOL",
"name": "preproc_if_in_attribute_list"
}
]
},
"attribute_target_specifier": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "field"
},
{
"type": "STRING",
"value": "event"
},
{
"type": "STRING",
"value": "method"
},
{
"type": "STRING",
"value": "param"
},
{
"type": "STRING",
"value": "property"
},
{
"type": "STRING",
"value": "return"
},
{
"type": "STRING",
"value": "type"
},
{
"type": "STRING",
"value": "typevar"
}
]
},
{
"type": "STRING",
"value": ":"
}
]
},
"_namespace_member_declaration": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "namespace_declaration"
},
{
"type": "SYMBOL",
"name": "type_declaration"
}
]
},
"namespace_declaration": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "namespace"
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "_name"
}
},
{
"type": "FIELD",
"name": "body",
"content": {
"type": "SYMBOL",
"name": "declaration_list"
}
},
{
"type": "SYMBOL",
"name": "_optional_semi"
}
]
},
"file_scoped_namespace_declaration": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "namespace"
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "_name"
}
},
{
"type": "STRING",
"value": ";"
}
]
},
"type_declaration": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "class_declaration"
},
{
"type": "SYMBOL",
"name": "struct_declaration"
},
{
"type": "SYMBOL",
"name": "enum_declaration"
},
{
"type": "SYMBOL",
"name": "interface_declaration"
},
{
"type": "SYMBOL",
"name": "delegate_declaration"
},
{
"type": "SYMBOL",
"name": "record_declaration"
}
]
},
"class_declaration": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_class_declaration_initializer"
},
{
"type": "SYMBOL",
"name": "_declaration_list_body"
}
]
},
"_class_declaration_initializer": {
"type": "SEQ",
"members": [
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_attribute_list"
}
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "modifier"
}
},
{
"type": "STRING",
"value": "class"
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "type_parameter_list"
},
{
"type": "SYMBOL",
"name": "parameter_list"
},
{
"type": "SYMBOL",
"name": "base_list"
}
]
}
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "type_parameter_constraints_clause"
}
}
]
},
"struct_declaration": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_struct_declaration_initializer"
},
{
"type": "SYMBOL",
"name": "_declaration_list_body"
}
]
},
"_struct_declaration_initializer": {
"type": "SEQ",
"members": [
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_attribute_list"
}
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "modifier"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "ref"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "struct"
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "type_parameter_list"
},
{
"type": "SYMBOL",
"name": "parameter_list"
},
{
"type": "SYMBOL",
"name": "base_list"
}
]
}
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "type_parameter_constraints_clause"
}
}
]
},
"enum_declaration": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_enum_declaration_initializer"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "body",
"content": {
"type": "SYMBOL",
"name": "enum_member_declaration_list"
}
},
{
"type": "SYMBOL",
"name": "_optional_semi"
}
]
},
{
"type": "STRING",
"value": ";"
}
]
}
]
},
"_enum_declaration_initializer": {
"type": "SEQ",
"members": [
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_attribute_list"
}
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "modifier"
}
},
{
"type": "STRING",
"value": "enum"
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "base_list"
},
{
"type": "BLANK"
}
]
}
]
},
"enum_member_declaration_list": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "{"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "enum_member_declaration"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "preproc_if_in_enum_member_declaration"
},
"named": true,
"value": "preproc_if"
}
]
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "enum_member_declaration"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "preproc_if_in_enum_member_declaration"
},
"named": true,
"value": "preproc_if"
}
]
}
]
}
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "}"
}
]
},
"enum_member_declaration": {
"type": "SEQ",
"members": [
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_attribute_list"
}
},
{
"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"
}
]
}
]
},
"interface_declaration": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_interface_declaration_initializer"
},
{
"type": "SYMBOL",
"name": "_declaration_list_body"
}
]
},
"_interface_declaration_initializer": {
"type": "SEQ",
"members": [
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_attribute_list"
}
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "modifier"
}
},
{
"type": "STRING",
"value": "interface"
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "FIELD",
"name": "type_parameters",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "type_parameter_list"
},
{
"type": "BLANK"
}
]
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "base_list"
},
{
"type": "BLANK"
}
]
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "type_parameter_constraints_clause"
}
}
]
},
"delegate_declaration": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_delegate_declaration_initializer"
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "type_parameter_constraints_clause"
}
},
{
"type": "STRING",
"value": ";"
}
]
},
"_delegate_declaration_initializer": {
"type": "SEQ",
"members": [
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_attribute_list"
}
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "modifier"
}
},
{
"type": "STRING",
"value": "delegate"
},
{
"type": "FIELD",
"name": "type",
"content": {
"type": "SYMBOL",
"name": "type"
}
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "FIELD",
"name": "type_parameters",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "type_parameter_list"
},
{
"type": "BLANK"
}
]
}
},
{
"type": "FIELD",
"name": "parameters",
"content": {
"type": "SYMBOL",
"name": "parameter_list"
}
}
]
},
"record_declaration": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_record_declaration_initializer"
},
{
"type": "SYMBOL",
"name": "_declaration_list_body"
}
]
},
"_record_declaration_initializer": {
"type": "SEQ",
"members": [
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_attribute_list"
}
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "modifier"
}
},
{
"type": "STRING",
"value": "record"
},
{
"type": "CHOICE",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "class"
},
{
"type": "STRING",
"value": "struct"
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "type_parameter_list"
},
{
"type": "SYMBOL",
"name": "parameter_list"
}
]
}
},
{
"type": "CHOICE",
"members": [
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "record_base"
},
"named": true,
"value": "base_list"
},
{
"type": "BLANK"
}
]
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "type_parameter_constraints_clause"
}
}
]
},
"record_base": {
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ":"
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_name"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "_name"
}
]
}
}
]
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ":"
},
{
"type": "SYMBOL",
"name": "primary_constructor_base_type"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_name"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "_name"
}
]
}
}
]
}
]
},
{
"type": "BLANK"
}
]
}
]
}
]
},
"_declaration_list_body": {
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "body",
"content": {
"type": "SYMBOL",
"name": "declaration_list"
}
},
{
"type": "SYMBOL",
"name": "_optional_semi"
}
]
},
{
"type": "STRING",
"value": ";"
}
]
},
"primary_constructor_base_type": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "type",
"content": {
"type": "SYMBOL",
"name": "_name"
}
},
{
"type": "SYMBOL",
"name": "argument_list"
}
]
},
"modifier": {
"type": "PREC_RIGHT",
"value": 0,
"content": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "abstract"
},
{
"type": "STRING",
"value": "async"
},
{
"type": "STRING",
"value": "const"
},
{
"type": "STRING",
"value": "extern"
},
{
"type": "STRING",
"value": "file"
},
{
"type": "STRING",
"value": "fixed"
},
{
"type": "STRING",
"value": "internal"
},
{
"type": "STRING",
"value": "new"
},
{
"type": "STRING",
"value": "override"
},
{
"type": "STRING",
"value": "partial"
},
{
"type": "STRING",
"value": "private"
},
{
"type": "STRING",
"value": "protected"
},
{
"type": "STRING",
"value": "public"
},
{
"type": "STRING",
"value": "readonly"
},
{
"type": "STRING",
"value": "required"
},
{
"type": "STRING",
"value": "sealed"
},
{
"type": "STRING",
"value": "static"
},
{
"type": "STRING",
"value": "unsafe"
},
{
"type": "STRING",
"value": "virtual"
},
{
"type": "STRING",
"value": "volatile"
}
]
}
},
"type_parameter_list": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "<"
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "type_parameter"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "type_parameter"
}
]
}
}
]
},
{
"type": "STRING",
"value": ">"
}
]
},
"type_parameter": {
"type": "SEQ",
"members": [
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_attribute_list"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "in"
},
{
"type": "STRING",
"value": "out"
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
}
]
},
"base_list": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ":"
},
{
"type": "SEQ",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "type"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "argument_list"
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "type"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "argument_list"
},
{
"type": "BLANK"
}
]
}
]
}
]
}
}
]
}
]
},
"type_parameter_constraints_clause": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "where"
},
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "STRING",
"value": ":"
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "type_parameter_constraint"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "type_parameter_constraint"
}
]
}
}
]
}
]
},
"type_parameter_constraint": {
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "class"
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "?"
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "STRING",
"value": "struct"
},
{
"type": "STRING",
"value": "notnull"
},
{
"type": "STRING",
"value": "unmanaged"
},
{
"type": "SYMBOL",
"name": "constructor_constraint"
},
{
"type": "FIELD",
"name": "type",
"content": {
"type": "SYMBOL",
"name": "type"
}
}
]
},
"constructor_constraint": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "new"
},
{
"type": "STRING",
"value": "("
},
{
"type": "STRING",
"value": ")"
}
]
},
"operator_declaration": {
"type": "SEQ",
"members": [
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_attribute_list"
}
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "modifier"
}
},
{
"type": "FIELD",
"name": "type",
"content": {
"type": "SYMBOL",
"name": "type"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "explicit_interface_specifier"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "operator"
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "checked"
},
{
"type": "BLANK"
}
]
},
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "!"
},
{
"type": "STRING",
"value": "~"
},
{
"type": "STRING",
"value": "++"
},
{
"type": "STRING",
"value": "--"
},
{
"type": "STRING",
"value": "true"
},
{
"type": "STRING",
"value": "false"
},
{
"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": "FIELD",
"name": "parameters",
"content": {
"type": "SYMBOL",
"name": "parameter_list"
}
},
{
"type": "SYMBOL",
"name": "_function_body"
}
]
},
"conversion_operator_declaration": {
"type": "SEQ",
"members": [
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_attribute_list"
}
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "modifier"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "implicit"
},
{
"type": "STRING",
"value": "explicit"
}
]
},
{
"type": "REPEAT1",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "explicit_interface_specifier"
},
{
"type": "STRING",
"value": "operator"
},
{
"type": "STRING",
"value": "checked"
}
]
}
},
{
"type": "FIELD",
"name": "type",
"content": {
"type": "SYMBOL",
"name": "type"
}
},
{
"type": "FIELD",
"name": "parameters",
"content": {
"type": "SYMBOL",
"name": "parameter_list"
}
},
{
"type": "SYMBOL",
"name": "_function_body"
}
]
},
"declaration_list": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "{"
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "declaration"
}
},
{
"type": "STRING",
"value": "}"
}
]
},
"declaration": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "class_declaration"
},
{
"type": "SYMBOL",
"name": "struct_declaration"
},
{
"type": "SYMBOL",
"name": "enum_declaration"
},
{
"type": "SYMBOL",
"name": "delegate_declaration"
},
{
"type": "SYMBOL",
"name": "field_declaration"
},
{
"type": "SYMBOL",
"name": "method_declaration"
},
{
"type": "SYMBOL",
"name": "event_declaration"
},
{
"type": "SYMBOL",
"name": "event_field_declaration"
},
{
"type": "SYMBOL",
"name": "record_declaration"
},
{
"type": "SYMBOL",
"name": "constructor_declaration"
},
{
"type": "SYMBOL",
"name": "destructor_declaration"
},
{
"type": "SYMBOL",
"name": "indexer_declaration"
},
{
"type": "SYMBOL",
"name": "interface_declaration"
},
{
"type": "SYMBOL",
"name": "namespace_declaration"
},
{
"type": "SYMBOL",
"name": "operator_declaration"
},
{
"type": "SYMBOL",
"name": "conversion_operator_declaration"
},
{
"type": "SYMBOL",
"name": "property_declaration"
},
{
"type": "SYMBOL",
"name": "using_directive"
},
{
"type": "SYMBOL",
"name": "preproc_if"
}
]
},
"field_declaration": {
"type": "SEQ",
"members": [
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_attribute_list"
}
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "modifier"
}
},
{
"type": "SYMBOL",
"name": "variable_declaration"
},
{
"type": "STRING",
"value": ";"
}
]
},
"constructor_declaration": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_constructor_declaration_initializer"
},
{
"type": "SYMBOL",
"name": "_function_body"
}
]
},
"_constructor_declaration_initializer": {
"type": "SEQ",
"members": [
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_attribute_list"
}
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "modifier"
}
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "FIELD",
"name": "parameters",
"content": {
"type": "SYMBOL",
"name": "parameter_list"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "constructor_initializer"
},
{
"type": "BLANK"
}
]
}
]
},
"destructor_declaration": {
"type": "SEQ",
"members": [
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_attribute_list"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "extern"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "~"
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "FIELD",
"name": "parameters",
"content": {
"type": "SYMBOL",
"name": "parameter_list"
}
},
{
"type": "SYMBOL",
"name": "_function_body"
}
]
},
"method_declaration": {
"type": "SEQ",
"members": [
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_attribute_list"
}
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "modifier"
}
},
{
"type": "FIELD",
"name": "returns",
"content": {
"type": "SYMBOL",
"name": "type"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "explicit_interface_specifier"
},
{
"type": "BLANK"
}
]
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "FIELD",
"name": "type_parameters",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "type_parameter_list"
},
{
"type": "BLANK"
}
]
}
},
{
"type": "FIELD",
"name": "parameters",
"content": {
"type": "SYMBOL",
"name": "parameter_list"
}
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "type_parameter_constraints_clause"
}
},
{
"type": "SYMBOL",
"name": "_function_body"
}
]
},
"event_declaration": {
"type": "SEQ",
"members": [
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_attribute_list"
}
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "modifier"
}
},
{
"type": "STRING",
"value": "event"
},
{
"type": "FIELD",
"name": "type",
"content": {
"type": "SYMBOL",
"name": "type"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "explicit_interface_specifier"
},
{
"type": "BLANK"
}
]
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "accessors",
"content": {
"type": "SYMBOL",
"name": "accessor_list"
}
},
{
"type": "STRING",
"value": ";"
}
]
}
]
},
"event_field_declaration": {
"type": "PREC_DYNAMIC",
"value": 1,
"content": {
"type": "SEQ",
"members": [
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_attribute_list"
}
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "modifier"
}
},
{
"type": "STRING",
"value": "event"
},
{
"type": "SYMBOL",
"name": "variable_declaration"
},
{
"type": "STRING",
"value": ";"
}
]
}
},
"accessor_list": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "{"
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "accessor_declaration"
}
},
{
"type": "STRING",
"value": "}"
}
]
},
"accessor_declaration": {
"type": "SEQ",
"members": [
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_attribute_list"
}
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "modifier"
}
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "get"
},
{
"type": "STRING",
"value": "set"
},
{
"type": "STRING",
"value": "add"
},
{
"type": "STRING",
"value": "remove"
},
{
"type": "STRING",
"value": "init"
},
{
"type": "SYMBOL",
"name": "identifier"
}
]
}
},
{
"type": "SYMBOL",
"name": "_function_body"
}
]
},
"indexer_declaration": {
"type": "SEQ",
"members": [
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_attribute_list"
}
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "modifier"
}
},
{
"type": "FIELD",
"name": "type",
"content": {
"type": "SYMBOL",
"name": "type"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "explicit_interface_specifier"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "this"
},
{
"type": "FIELD",
"name": "parameters",
"content": {
"type": "SYMBOL",
"name": "bracketed_parameter_list"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "accessors",
"content": {
"type": "SYMBOL",
"name": "accessor_list"
}
},
{
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "value",
"content": {
"type": "SYMBOL",
"name": "arrow_expression_clause"
}
},
{
"type": "STRING",
"value": ";"
}
]
}
]
}
]
},
"bracketed_parameter_list": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "["
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "parameter"
},
{
"type": "SYMBOL",
"name": "_parameter_array"
}
]
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "parameter"
},
{
"type": "SYMBOL",
"name": "_parameter_array"
}
]
}
]
}
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "]"
}
]
},
"property_declaration": {
"type": "SEQ",
"members": [
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_attribute_list"
}
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "modifier"
}
},
{
"type": "FIELD",
"name": "type",
"content": {
"type": "SYMBOL",
"name": "type"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "explicit_interface_specifier"
},
{
"type": "BLANK"
}
]
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "accessors",
"content": {
"type": "SYMBOL",
"name": "accessor_list"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "="
},
{
"type": "FIELD",
"name": "value",
"content": {
"type": "SYMBOL",
"name": "expression"
}
},
{
"type": "STRING",
"value": ";"
}
]
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "value",
"content": {
"type": "SYMBOL",
"name": "arrow_expression_clause"
}
},
{
"type": "STRING",
"value": ";"
}
]
}
]
}
]
},
"explicit_interface_specifier": {
"type": "PREC",
"value": 18,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_name"
},
{
"type": "STRING",
"value": "."
}
]
}
},
"parameter_list": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "parameter"
},
{
"type": "SYMBOL",
"name": "_parameter_array"
}
]
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "parameter"
},
{
"type": "SYMBOL",
"name": "_parameter_array"
}
]
}
]
}
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ")"
}
]
},
"_parameter_type_with_modifiers": {
"type": "SEQ",
"members": [
{
"type": "REPEAT",
"content": {
"type": "PREC_LEFT",
"value": 0,
"content": {
"type": "ALIAS",
"content": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "this"
},
{
"type": "STRING",
"value": "scoped"
},
{
"type": "STRING",
"value": "ref"
},
{
"type": "STRING",
"value": "out"
},
{
"type": "STRING",
"value": "in"
},
{
"type": "STRING",
"value": "readonly"
}
]
},
"named": true,
"value": "modifier"
}
}
},
{
"type": "FIELD",
"name": "type",
"content": {
"type": "SYMBOL",
"name": "type"
}
}
]
},
"parameter": {
"type": "SEQ",
"members": [
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_attribute_list"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_parameter_type_with_modifiers"
},
{
"type": "BLANK"
}
]
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "="
},
{
"type": "SYMBOL",
"name": "expression"
}
]
},
{
"type": "BLANK"
}
]
}
]
},
"_parameter_array": {
"type": "SEQ",
"members": [
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_attribute_list"
}
},
{
"type": "STRING",
"value": "params"
},
{
"type": "FIELD",
"name": "type",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "array_type"
},
{
"type": "SYMBOL",
"name": "nullable_type"
}
]
}
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
}
]
},
"constructor_initializer": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ":"
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "base"
},
{
"type": "STRING",
"value": "this"
}
]
},
{
"type": "SYMBOL",
"name": "argument_list"
}
]
},
"argument_list": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "argument"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "argument"
}
]
}
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ")"
}
]
},
"tuple_pattern": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "SYMBOL",
"name": "discard"
},
{
"type": "SYMBOL",
"name": "tuple_pattern"
}
]
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "SYMBOL",
"name": "discard"
},
{
"type": "SYMBOL",
"name": "tuple_pattern"
}
]
}
]
}
}
]
},
{
"type": "STRING",
"value": ")"
}
]
},
"argument": {
"type": "PREC",
"value": 1,
"content": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "STRING",
"value": ":"
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "ref"
},
{
"type": "STRING",
"value": "out"
},
{
"type": "STRING",
"value": "in"
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "expression"
},
{
"type": "SYMBOL",
"name": "declaration_expression"
}
]
}
]
}
},
"block": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "{"
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "statement"
}
},
{
"type": "STRING",
"value": "}"
}
]
},
"arrow_expression_clause": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "=>"
},
{
"type": "SYMBOL",
"name": "expression"
}
]
},
"_function_body": {
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "body",
"content": {
"type": "SYMBOL",
"name": "block"
}
},
{
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "body",
"content": {
"type": "SYMBOL",
"name": "arrow_expression_clause"
}
},
{
"type": "STRING",
"value": ";"
}
]
},
{
"type": "STRING",
"value": ";"
}
]
},
"variable_declaration": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "type",
"content": {
"type": "SYMBOL",
"name": "type"
}
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "variable_declarator"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "variable_declarator"
}
]
}
}
]
}
]
},
"using_variable_declaration": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "type",
"content": {
"type": "SYMBOL",
"name": "type"
}
},
{
"type": "SEQ",
"members": [
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "using_variable_declarator"
},
"named": true,
"value": "variable_declarator"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "using_variable_declarator"
},
"named": true,
"value": "variable_declarator"
}
]
}
}
]
}
]
},
"variable_declarator": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "SYMBOL",
"name": "tuple_pattern"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "bracketed_argument_list"
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "="
},
{
"type": "SYMBOL",
"name": "expression"
}
]
},
{
"type": "BLANK"
}
]
}
]
},
"using_variable_declarator": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "="
},
{
"type": "SYMBOL",
"name": "expression"
}
]
},
{
"type": "BLANK"
}
]
}
]
},
"bracketed_argument_list": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "["
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "argument"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "argument"
}
]
}
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "]"
}
]
},
"qualified_identifier": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "."
},
{
"type": "SYMBOL",
"name": "identifier"
}
]
}
}
]
},
"_name": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "alias_qualified_name"
},
{
"type": "SYMBOL",
"name": "qualified_name"
},
{
"type": "SYMBOL",
"name": "_simple_name"
}
]
},
"alias_qualified_name": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "alias",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "STRING",
"value": "::"
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "_simple_name"
}
}
]
},
"_simple_name": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "SYMBOL",
"name": "generic_name"
}
]
},
"qualified_name": {
"type": "PREC",
"value": 18,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "qualifier",
"content": {
"type": "SYMBOL",
"name": "_name"
}
},
{
"type": "STRING",
"value": "."
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "_simple_name"
}
}
]
}
},
"generic_name": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "SYMBOL",
"name": "type_argument_list"
}
]
},
"type_argument_list": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "<"
},
{
"type": "CHOICE",
"members": [
{
"type": "REPEAT",
"content": {
"type": "STRING",
"value": ","
}
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "type"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "type"
}
]
}
}
]
}
]
},
{
"type": "STRING",
"value": ">"
}
]
},
"type": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "implicit_type"
},
{
"type": "SYMBOL",
"name": "array_type"
},
{
"type": "SYMBOL",
"name": "_name"
},
{
"type": "SYMBOL",
"name": "nullable_type"
},
{
"type": "SYMBOL",
"name": "pointer_type"
},
{
"type": "SYMBOL",
"name": "function_pointer_type"
},
{
"type": "SYMBOL",
"name": "predefined_type"
},
{
"type": "SYMBOL",
"name": "tuple_type"
},
{
"type": "SYMBOL",
"name": "ref_type"
},
{
"type": "SYMBOL",
"name": "scoped_type"
}
]
},
"implicit_type": {
"type": "PREC_DYNAMIC",
"value": 1,
"content": {
"type": "STRING",
"value": "var"
}
},
"array_type": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "type",
"content": {
"type": "SYMBOL",
"name": "_array_base_type"
}
},
{
"type": "FIELD",
"name": "rank",
"content": {
"type": "SYMBOL",
"name": "array_rank_specifier"
}
}
]
},
"_array_base_type": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "array_type"
},
{
"type": "SYMBOL",
"name": "_name"
},
{
"type": "SYMBOL",
"name": "nullable_type"
},
{
"type": "SYMBOL",
"name": "pointer_type"
},
{
"type": "SYMBOL",
"name": "function_pointer_type"
},
{
"type": "SYMBOL",
"name": "predefined_type"
},
{
"type": "SYMBOL",
"name": "tuple_type"
}
]
},
"array_rank_specifier": {
"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": "BLANK"
}
]
},
{
"type": "STRING",
"value": "]"
}
]
},
"nullable_type": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "type",
"content": {
"type": "SYMBOL",
"name": "_nullable_base_type"
}
},
{
"type": "STRING",
"value": "?"
}
]
},
"_nullable_base_type": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "array_type"
},
{
"type": "SYMBOL",
"name": "_name"
},
{
"type": "SYMBOL",
"name": "predefined_type"
},
{
"type": "SYMBOL",
"name": "tuple_type"
}
]
},
"pointer_type": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "type",
"content": {
"type": "SYMBOL",
"name": "_pointer_base_type"
}
},
{
"type": "STRING",
"value": "*"
}
]
},
"_pointer_base_type": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_name"
},
{
"type": "SYMBOL",
"name": "nullable_type"
},
{
"type": "SYMBOL",
"name": "pointer_type"
},
{
"type": "SYMBOL",
"name": "function_pointer_type"
},
{
"type": "SYMBOL",
"name": "predefined_type"
},
{
"type": "SYMBOL",
"name": "tuple_type"
}
]
},
"function_pointer_type": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "delegate"
},
{
"type": "STRING",
"value": "*"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "calling_convention"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "<"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "function_pointer_parameter"
},
{
"type": "STRING",
"value": ","
}
]
}
},
{
"type": "FIELD",
"name": "returns",
"content": {
"type": "SYMBOL",
"name": "type"
}
},
{
"type": "STRING",
"value": ">"
}
]
},
"calling_convention": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "managed"
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "unmanaged"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "["
},
{
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "Cdecl"
},
{
"type": "STRING",
"value": "Stdcall"
},
{
"type": "STRING",
"value": "Thiscall"
},
{
"type": "STRING",
"value": "Fastcall"
},
{
"type": "SYMBOL",
"name": "identifier"
}
]
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "Cdecl"
},
{
"type": "STRING",
"value": "Stdcall"
},
{
"type": "STRING",
"value": "Thiscall"
},
{
"type": "STRING",
"value": "Fastcall"
},
{
"type": "SYMBOL",
"name": "identifier"
}
]
}
]
}
}
]
},
{
"type": "STRING",
"value": "]"
}
]
},
{
"type": "BLANK"
}
]
}
]
}
]
},
"function_pointer_parameter": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "ref"
},
{
"type": "STRING",
"value": "out"
},
{
"type": "STRING",
"value": "in"
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "FIELD",
"name": "type",
"content": {
"type": "SYMBOL",
"name": "_ref_base_type"
}
}
]
},
"predefined_type": {
"type": "TOKEN",
"content": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "bool"
},
{
"type": "STRING",
"value": "byte"
},
{
"type": "STRING",
"value": "char"
},
{
"type": "STRING",
"value": "decimal"
},
{
"type": "STRING",
"value": "double"
},
{
"type": "STRING",
"value": "float"
},
{
"type": "STRING",
"value": "int"
},
{
"type": "STRING",
"value": "long"
},
{
"type": "STRING",
"value": "object"
},
{
"type": "STRING",
"value": "sbyte"
},
{
"type": "STRING",
"value": "short"
},
{
"type": "STRING",
"value": "string"
},
{
"type": "STRING",
"value": "uint"
},
{
"type": "STRING",
"value": "ulong"
},
{
"type": "STRING",
"value": "ushort"
},
{
"type": "STRING",
"value": "nint"
},
{
"type": "STRING",
"value": "nuint"
},
{
"type": "STRING",
"value": "void"
}
]
}
},
"ref_type": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "ref"
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "readonly"
},
{
"type": "BLANK"
}
]
},
{
"type": "FIELD",
"name": "type",
"content": {
"type": "SYMBOL",
"name": "type"
}
}
]
},
"_ref_base_type": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "implicit_type"
},
{
"type": "SYMBOL",
"name": "_name"
},
{
"type": "SYMBOL",
"name": "nullable_type"
},
{
"type": "SYMBOL",
"name": "array_type"
},
{
"type": "SYMBOL",
"name": "pointer_type"
},
{
"type": "SYMBOL",
"name": "function_pointer_type"
},
{
"type": "SYMBOL",
"name": "predefined_type"
},
{
"type": "SYMBOL",
"name": "tuple_type"
}
]
},
"scoped_type": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "scoped"
},
{
"type": "FIELD",
"name": "type",
"content": {
"type": "SYMBOL",
"name": "_scoped_base_type"
}
}
]
},
"_scoped_base_type": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_name"
},
{
"type": "SYMBOL",
"name": "ref_type"
}
]
},
"tuple_type": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "tuple_element"
},
{
"type": "REPEAT1",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "tuple_element"
}
]
}
}
]
},
{
"type": "STRING",
"value": ")"
}
]
},
"tuple_element": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "type",
"content": {
"type": "SYMBOL",
"name": "type"
}
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "BLANK"
}
]
}
}
]
},
"statement": {
"type": "PREC",
"value": 1,
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "block"
},
{
"type": "SYMBOL",
"name": "break_statement"
},
{
"type": "SYMBOL",
"name": "checked_statement"
},
{
"type": "SYMBOL",
"name": "continue_statement"
},
{
"type": "SYMBOL",
"name": "do_statement"
},
{
"type": "SYMBOL",
"name": "empty_statement"
},
{
"type": "SYMBOL",
"name": "expression_statement"
},
{
"type": "SYMBOL",
"name": "fixed_statement"
},
{
"type": "SYMBOL",
"name": "for_statement"
},
{
"type": "SYMBOL",
"name": "return_statement"
},
{
"type": "SYMBOL",
"name": "lock_statement"
},
{
"type": "SYMBOL",
"name": "yield_statement"
},
{
"type": "SYMBOL",
"name": "switch_statement"
},
{
"type": "SYMBOL",
"name": "throw_statement"
},
{
"type": "SYMBOL",
"name": "try_statement"
},
{
"type": "SYMBOL",
"name": "unsafe_statement"
},
{
"type": "SYMBOL",
"name": "using_statement"
},
{
"type": "SYMBOL",
"name": "foreach_statement"
},
{
"type": "SYMBOL",
"name": "goto_statement"
},
{
"type": "SYMBOL",
"name": "labeled_statement"
},
{
"type": "SYMBOL",
"name": "if_statement"
},
{
"type": "SYMBOL",
"name": "while_statement"
},
{
"type": "SYMBOL",
"name": "local_declaration_statement"
},
{
"type": "SYMBOL",
"name": "local_function_statement"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "preproc_if_in_top_level"
},
"named": true,
"value": "preproc_if"
}
]
}
},
"break_statement": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "break"
},
{
"type": "STRING",
"value": ";"
}
]
},
"checked_statement": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "checked"
},
{
"type": "STRING",
"value": "unchecked"
}
]
},
{
"type": "SYMBOL",
"name": "block"
}
]
},
"continue_statement": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "continue"
},
{
"type": "STRING",
"value": ";"
}
]
},
"do_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": "STRING",
"value": ";"
}
]
},
"empty_statement": {
"type": "STRING",
"value": ";"
},
"expression_statement": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_expression_statement_expression"
},
{
"type": "STRING",
"value": ";"
}
]
},
"fixed_statement": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "fixed"
},
{
"type": "STRING",
"value": "("
},
{
"type": "SYMBOL",
"name": "variable_declaration"
},
{
"type": "STRING",
"value": ")"
},
{
"type": "SYMBOL",
"name": "statement"
}
]
},
"for_statement": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "for"
},
{
"type": "SYMBOL",
"name": "_for_statement_conditions"
},
{
"type": "FIELD",
"name": "body",
"content": {
"type": "SYMBOL",
"name": "statement"
}
}
]
},
"_for_statement_conditions": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "FIELD",
"name": "initializer",
"content": {
"type": "CHOICE",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "variable_declaration"
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "expression"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "expression"
}
]
}
}
]
}
]
},
{
"type": "BLANK"
}
]
}
},
{
"type": "STRING",
"value": ";"
},
{
"type": "FIELD",
"name": "condition",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "expression"
},
{
"type": "BLANK"
}
]
}
},
{
"type": "STRING",
"value": ";"
},
{
"type": "FIELD",
"name": "update",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "expression"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "expression"
}
]
}
}
]
},
{
"type": "BLANK"
}
]
}
},
{
"type": "STRING",
"value": ")"
}
]
},
"return_statement": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "return"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "expression"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ";"
}
]
},
"lock_statement": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "lock"
},
{
"type": "STRING",
"value": "("
},
{
"type": "SYMBOL",
"name": "expression"
},
{
"type": "STRING",
"value": ")"
},
{
"type": "SYMBOL",
"name": "statement"
}
]
},
"yield_statement": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "yield"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "return"
},
{
"type": "SYMBOL",
"name": "expression"
}
]
},
{
"type": "STRING",
"value": "break"
}
]
},
{
"type": "STRING",
"value": ";"
}
]
},
"switch_statement": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "switch"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "FIELD",
"name": "value",
"content": {
"type": "SYMBOL",
"name": "expression"
}
},
{
"type": "STRING",
"value": ")"
}
]
},
{
"type": "FIELD",
"name": "value",
"content": {
"type": "SYMBOL",
"name": "tuple_expression"
}
}
]
},
{
"type": "FIELD",
"name": "body",
"content": {
"type": "SYMBOL",
"name": "switch_body"
}
}
]
},
"switch_body": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "{"
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "switch_section"
}
},
{
"type": "STRING",
"value": "}"
}
]
},
"switch_section": {
"type": "PREC_LEFT",
"value": 0,
"content": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "case"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "expression"
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "pattern"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "when_clause"
},
{
"type": "BLANK"
}
]
}
]
}
]
}
]
},
{
"type": "STRING",
"value": "default"
}
]
},
{
"type": "STRING",
"value": ":"
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "statement"
}
}
]
}
},
"throw_statement": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "throw"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "expression"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ";"
}
]
},
"try_statement": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "try"
},
{
"type": "FIELD",
"name": "body",
"content": {
"type": "SYMBOL",
"name": "block"
}
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "catch_clause"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "finally_clause"
},
{
"type": "BLANK"
}
]
}
]
},
"catch_clause": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "catch"
},
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "catch_declaration"
},
{
"type": "SYMBOL",
"name": "catch_filter_clause"
}
]
}
},
{
"type": "FIELD",
"name": "body",
"content": {
"type": "SYMBOL",
"name": "block"
}
}
]
},
"catch_declaration": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "FIELD",
"name": "type",
"content": {
"type": "SYMBOL",
"name": "type"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ")"
}
]
},
"catch_filter_clause": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "when"
},
{
"type": "STRING",
"value": "("
},
{
"type": "SYMBOL",
"name": "expression"
},
{
"type": "STRING",
"value": ")"
}
]
},
"finally_clause": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "finally"
},
{
"type": "SYMBOL",
"name": "block"
}
]
},
"unsafe_statement": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "unsafe"
},
{
"type": "SYMBOL",
"name": "block"
}
]
},
"using_statement": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "await"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "using"
},
{
"type": "STRING",
"value": "("
},
{
"type": "CHOICE",
"members": [
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "using_variable_declaration"
},
"named": true,
"value": "variable_declaration"
},
{
"type": "SYMBOL",
"name": "expression"
}
]
},
{
"type": "STRING",
"value": ")"
},
{
"type": "FIELD",
"name": "body",
"content": {
"type": "SYMBOL",
"name": "statement"
}
}
]
},
"foreach_statement": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_foreach_statement_initializer"
},
{
"type": "FIELD",
"name": "body",
"content": {
"type": "SYMBOL",
"name": "statement"
}
}
]
},
"_foreach_statement_initializer": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "await"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "foreach"
},
{
"type": "STRING",
"value": "("
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "type",
"content": {
"type": "SYMBOL",
"name": "type"
}
},
{
"type": "FIELD",
"name": "left",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "SYMBOL",
"name": "tuple_pattern"
}
]
}
}
]
},
{
"type": "FIELD",
"name": "left",
"content": {
"type": "SYMBOL",
"name": "expression"
}
}
]
},
{
"type": "STRING",
"value": "in"
},
{
"type": "FIELD",
"name": "right",
"content": {
"type": "SYMBOL",
"name": "expression"
}
},
{
"type": "STRING",
"value": ")"
}
]
},
"goto_statement": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "goto"
},
{
"type": "CHOICE",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "case"
},
{
"type": "STRING",
"value": "default"
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "expression"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ";"
}
]
},
"labeled_statement": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "STRING",
"value": ":"
},
{
"type": "SYMBOL",
"name": "statement"
}
]
},
"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": "consequence",
"content": {
"type": "SYMBOL",
"name": "statement"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "else"
},
{
"type": "FIELD",
"name": "alternative",
"content": {
"type": "SYMBOL",
"name": "statement"
}
}
]
},
{
"type": "BLANK"
}
]
}
]
}
},
"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"
}
}
]
},
"local_declaration_statement": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "await"
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "using"
},
{
"type": "BLANK"
}
]
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "modifier"
}
},
{
"type": "SYMBOL",
"name": "variable_declaration"
},
{
"type": "STRING",
"value": ";"
}
]
},
"local_function_statement": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_local_function_declaration"
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "type_parameter_constraints_clause"
}
},
{
"type": "SYMBOL",
"name": "_function_body"
}
]
},
"_local_function_declaration": {
"type": "SEQ",
"members": [
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_attribute_list"
}
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "modifier"
}
},
{
"type": "FIELD",
"name": "type",
"content": {
"type": "SYMBOL",
"name": "type"
}
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "FIELD",
"name": "type_parameters",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "type_parameter_list"
},
{
"type": "BLANK"
}
]
}
},
{
"type": "FIELD",
"name": "parameters",
"content": {
"type": "SYMBOL",
"name": "parameter_list"
}
}
]
},
"pattern": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "constant_pattern"
},
{
"type": "SYMBOL",
"name": "declaration_pattern"
},
{
"type": "SYMBOL",
"name": "discard"
},
{
"type": "SYMBOL",
"name": "recursive_pattern"
},
{
"type": "SYMBOL",
"name": "var_pattern"
},
{
"type": "SYMBOL",
"name": "negated_pattern"
},
{
"type": "SYMBOL",
"name": "parenthesized_pattern"
},
{
"type": "SYMBOL",
"name": "relational_pattern"
},
{
"type": "SYMBOL",
"name": "or_pattern"
},
{
"type": "SYMBOL",
"name": "and_pattern"
},
{
"type": "SYMBOL",
"name": "list_pattern"
},
{
"type": "SYMBOL",
"name": "type_pattern"
}
]
},
"constant_pattern": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "binary_expression"
},
{
"type": "SYMBOL",
"name": "default_expression"
},
{
"type": "SYMBOL",
"name": "interpolated_string_expression"
},
{
"type": "SYMBOL",
"name": "parenthesized_expression"
},
{
"type": "SYMBOL",
"name": "postfix_unary_expression"
},
{
"type": "SYMBOL",
"name": "prefix_unary_expression"
},
{
"type": "SYMBOL",
"name": "sizeof_expression"
},
{
"type": "SYMBOL",
"name": "tuple_expression"
},
{
"type": "SYMBOL",
"name": "typeof_expression"
},
{
"type": "SYMBOL",
"name": "member_access_expression"
},
{
"type": "SYMBOL",
"name": "invocation_expression"
},
{
"type": "SYMBOL",
"name": "cast_expression"
},
{
"type": "SYMBOL",
"name": "_simple_name"
},
{
"type": "SYMBOL",
"name": "literal"
}
]
},
"discard": {
"type": "STRING",
"value": "_"
},
"parenthesized_pattern": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "SYMBOL",
"name": "pattern"
},
{
"type": "STRING",
"value": ")"
}
]
},
"var_pattern": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "var"
},
{
"type": "SYMBOL",
"name": "_variable_designation"
}
]
},
"type_pattern": {
"type": "PREC_RIGHT",
"value": 0,
"content": {
"type": "FIELD",
"name": "type",
"content": {
"type": "SYMBOL",
"name": "type"
}
}
},
"list_pattern": {
"type": "PREC_RIGHT",
"value": 0,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "["
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "pattern"
},
{
"type": "STRING",
"value": ".."
}
]
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "pattern"
},
{
"type": "STRING",
"value": ".."
}
]
}
]
}
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "]"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_variable_designation"
},
{
"type": "BLANK"
}
]
}
]
}
},
"recursive_pattern": {
"type": "PREC_LEFT",
"value": 0,
"content": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "type",
"content": {
"type": "SYMBOL",
"name": "type"
}
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "positional_pattern_clause"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "property_pattern_clause"
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "SYMBOL",
"name": "property_pattern_clause"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_variable_designation"
},
{
"type": "BLANK"
}
]
}
]
}
},
"positional_pattern_clause": {
"type": "PREC",
"value": 1,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "CHOICE",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "subpattern"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "subpattern"
}
]
}
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ")"
}
]
}
},
"property_pattern_clause": {
"type": "PREC",
"value": 1,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "{"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "subpattern"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "subpattern"
}
]
}
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "}"
}
]
}
},
"subpattern": {
"type": "PREC_RIGHT",
"value": 0,
"content": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "expression"
},
{
"type": "STRING",
"value": ":"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "STRING",
"value": ":"
}
]
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "pattern"
}
]
}
},
"relational_pattern": {
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "<"
},
{
"type": "SYMBOL",
"name": "expression"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "<="
},
{
"type": "SYMBOL",
"name": "expression"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ">"
},
{
"type": "SYMBOL",
"name": "expression"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ">="
},
{
"type": "SYMBOL",
"name": "expression"
}
]
}
]
},
"negated_pattern": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "not"
},
{
"type": "SYMBOL",
"name": "pattern"
}
]
},
"and_pattern": {
"type": "PREC_LEFT",
"value": 8,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "left",
"content": {
"type": "SYMBOL",
"name": "pattern"
}
},
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "STRING",
"value": "and"
}
},
{
"type": "FIELD",
"name": "right",
"content": {
"type": "SYMBOL",
"name": "pattern"
}
}
]
}
},
"or_pattern": {
"type": "PREC_LEFT",
"value": 6,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "left",
"content": {
"type": "SYMBOL",
"name": "pattern"
}
},
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "STRING",
"value": "or"
}
},
{
"type": "FIELD",
"name": "right",
"content": {
"type": "SYMBOL",
"name": "pattern"
}
}
]
}
},
"declaration_pattern": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "type",
"content": {
"type": "SYMBOL",
"name": "type"
}
},
{
"type": "SYMBOL",
"name": "_variable_designation"
}
]
},
"_variable_designation": {
"type": "PREC",
"value": 1,
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "discard"
},
{
"type": "SYMBOL",
"name": "parenthesized_variable_designation"
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
}
]
}
},
"parenthesized_variable_designation": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_variable_designation"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "_variable_designation"
}
]
}
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ")"
}
]
},
"expression": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "non_lvalue_expression"
},
{
"type": "SYMBOL",
"name": "lvalue_expression"
}
]
},
"non_lvalue_expression": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "base"
},
{
"type": "SYMBOL",
"name": "binary_expression"
},
{
"type": "SYMBOL",
"name": "interpolated_string_expression"
},
{
"type": "SYMBOL",
"name": "conditional_expression"
},
{
"type": "SYMBOL",
"name": "conditional_access_expression"
},
{
"type": "SYMBOL",
"name": "literal"
},
{
"type": "SYMBOL",
"name": "_expression_statement_expression"
},
{
"type": "SYMBOL",
"name": "is_expression"
},
{
"type": "SYMBOL",
"name": "is_pattern_expression"
},
{
"type": "SYMBOL",
"name": "as_expression"
},
{
"type": "SYMBOL",
"name": "cast_expression"
},
{
"type": "SYMBOL",
"name": "checked_expression"
},
{
"type": "SYMBOL",
"name": "switch_expression"
},
{
"type": "SYMBOL",
"name": "throw_expression"
},
{
"type": "SYMBOL",
"name": "default_expression"
},
{
"type": "SYMBOL",
"name": "lambda_expression"
},
{
"type": "SYMBOL",
"name": "with_expression"
},
{
"type": "SYMBOL",
"name": "sizeof_expression"
},
{
"type": "SYMBOL",
"name": "typeof_expression"
},
{
"type": "SYMBOL",
"name": "makeref_expression"
},
{
"type": "SYMBOL",
"name": "ref_expression"
},
{
"type": "SYMBOL",
"name": "reftype_expression"
},
{
"type": "SYMBOL",
"name": "refvalue_expression"
},
{
"type": "SYMBOL",
"name": "stackalloc_expression"
},
{
"type": "SYMBOL",
"name": "range_expression"
},
{
"type": "SYMBOL",
"name": "array_creation_expression"
},
{
"type": "SYMBOL",
"name": "anonymous_method_expression"
},
{
"type": "SYMBOL",
"name": "anonymous_object_creation_expression"
},
{
"type": "SYMBOL",
"name": "implicit_array_creation_expression"
},
{
"type": "SYMBOL",
"name": "implicit_object_creation_expression"
},
{
"type": "SYMBOL",
"name": "implicit_stackalloc_expression"
},
{
"type": "SYMBOL",
"name": "initializer_expression"
},
{
"type": "SYMBOL",
"name": "query_expression"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "preproc_if_in_expression"
},
"named": true,
"value": "preproc_if"
}
]
},
"lvalue_expression": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "this"
},
{
"type": "SYMBOL",
"name": "member_access_expression"
},
{
"type": "SYMBOL",
"name": "tuple_expression"
},
{
"type": "SYMBOL",
"name": "_simple_name"
},
{
"type": "SYMBOL",
"name": "element_access_expression"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "bracketed_argument_list"
},
"named": true,
"value": "element_binding_expression"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_pointer_indirection_expression"
},
"named": true,
"value": "prefix_unary_expression"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "_parenthesized_lvalue_expression"
},
"named": true,
"value": "parenthesized_expression"
}
]
},
"_expression_statement_expression": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "assignment_expression"
},
{
"type": "SYMBOL",
"name": "invocation_expression"
},
{
"type": "SYMBOL",
"name": "postfix_unary_expression"
},
{
"type": "SYMBOL",
"name": "prefix_unary_expression"
},
{
"type": "SYMBOL",
"name": "await_expression"
},
{
"type": "SYMBOL",
"name": "object_creation_expression"
},
{
"type": "SYMBOL",
"name": "parenthesized_expression"
}
]
},
"assignment_expression": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "left",
"content": {
"type": "SYMBOL",
"name": "lvalue_expression"
}
},
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "="
},
{
"type": "STRING",
"value": "+="
},
{
"type": "STRING",
"value": "-="
},
{
"type": "STRING",
"value": "*="
},
{
"type": "STRING",
"value": "/="
},
{
"type": "STRING",
"value": "%="
},
{
"type": "STRING",
"value": "&="
},
{
"type": "STRING",
"value": "^="
},
{
"type": "STRING",
"value": "|="
},
{
"type": "STRING",
"value": "<<="
},
{
"type": "STRING",
"value": ">>="
},
{
"type": "STRING",
"value": ">>>="
},
{
"type": "STRING",
"value": "??="
}
]
}
},
{
"type": "FIELD",
"name": "right",
"content": {
"type": "SYMBOL",
"name": "expression"
}
}
]
},
"binary_expression": {
"type": "CHOICE",
"members": [
{
"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": 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": 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"
}
}
]
}
},
{
"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"
}
}
]
}
},
{
"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"
}
}
]
}
},
{
"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": 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": 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": 12,
"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": 12,
"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": 13,
"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": 13,
"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": 13,
"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": 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_RIGHT",
"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"
}
}
]
}
}
]
},
"postfix_unary_expression": {
"type": "PREC",
"value": 18,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "expression"
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "++"
},
{
"type": "STRING",
"value": "--"
},
{
"type": "STRING",
"value": "!"
}
]
}
]
}
},
"prefix_unary_expression": {
"type": "PREC",
"value": 17,
"content": {
"type": "SEQ",
"members": [
{
"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": "SYMBOL",
"name": "expression"
}
]
}
},
"_pointer_indirection_expression": {
"type": "PREC_RIGHT",
"value": 17,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "*"
},
{
"type": "SYMBOL",
"name": "lvalue_expression"
}
]
}
},
"query_expression": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "from_clause"
},
{
"type": "SYMBOL",
"name": "_query_body"
}
]
},
"from_clause": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "from"
},
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "type",
"content": {
"type": "SYMBOL",
"name": "type"
}
},
{
"type": "BLANK"
}
]
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "STRING",
"value": "in"
},
{
"type": "SYMBOL",
"name": "expression"
}
]
},
"_query_body": {
"type": "PREC_RIGHT",
"value": 0,
"content": {
"type": "SEQ",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_query_clause"
}
},
{
"type": "SYMBOL",
"name": "_select_or_group_clause"
}
]
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "into"
},
{
"type": "SYMBOL",
"name": "identifier"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_query_clause"
}
},
{
"type": "SYMBOL",
"name": "_select_or_group_clause"
}
]
}
]
}
}
]
}
},
"_query_clause": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "from_clause"
},
{
"type": "SYMBOL",
"name": "join_clause"
},
{
"type": "SYMBOL",
"name": "let_clause"
},
{
"type": "SYMBOL",
"name": "order_by_clause"
},
{
"type": "SYMBOL",
"name": "where_clause"
}
]
},
"join_clause": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "join"
},
{
"type": "SYMBOL",
"name": "_join_header"
},
{
"type": "SYMBOL",
"name": "_join_body"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "join_into_clause"
},
{
"type": "BLANK"
}
]
}
]
},
"_join_header": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "type",
"content": {
"type": "SYMBOL",
"name": "type"
}
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "STRING",
"value": "in"
},
{
"type": "SYMBOL",
"name": "expression"
}
]
},
"_join_body": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "on"
},
{
"type": "SYMBOL",
"name": "expression"
},
{
"type": "STRING",
"value": "equals"
},
{
"type": "SYMBOL",
"name": "expression"
}
]
},
"join_into_clause": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "into"
},
{
"type": "SYMBOL",
"name": "identifier"
}
]
},
"let_clause": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "let"
},
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "STRING",
"value": "="
},
{
"type": "SYMBOL",
"name": "expression"
}
]
},
"order_by_clause": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "orderby"
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_ordering"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "_ordering"
}
]
}
}
]
}
]
},
"_ordering": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "expression"
},
{
"type": "CHOICE",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "ascending"
},
{
"type": "STRING",
"value": "descending"
}
]
},
{
"type": "BLANK"
}
]
}
]
},
"where_clause": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "where"
},
{
"type": "SYMBOL",
"name": "expression"
}
]
},
"_select_or_group_clause": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "group_clause"
},
{
"type": "SYMBOL",
"name": "select_clause"
}
]
},
"group_clause": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "group"
},
{
"type": "SYMBOL",
"name": "expression"
},
{
"type": "STRING",
"value": "by"
},
{
"type": "SYMBOL",
"name": "expression"
}
]
},
"select_clause": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "select"
},
{
"type": "SYMBOL",
"name": "expression"
}
]
},
"conditional_expression": {
"type": "PREC_RIGHT",
"value": 2,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "condition",
"content": {
"type": "SYMBOL",
"name": "expression"
}
},
{
"type": "STRING",
"value": "?"
},
{
"type": "FIELD",
"name": "consequence",
"content": {
"type": "SYMBOL",
"name": "expression"
}
},
{
"type": "STRING",
"value": ":"
},
{
"type": "FIELD",
"name": "alternative",
"content": {
"type": "SYMBOL",
"name": "expression"
}
}
]
}
},
"conditional_access_expression": {
"type": "PREC_RIGHT",
"value": 2,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "condition",
"content": {
"type": "SYMBOL",
"name": "expression"
}
},
{
"type": "STRING",
"value": "?"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "member_binding_expression"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "bracketed_argument_list"
},
"named": true,
"value": "element_binding_expression"
}
]
}
]
}
},
"as_expression": {
"type": "PREC",
"value": 10,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "left",
"content": {
"type": "SYMBOL",
"name": "expression"
}
},
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "STRING",
"value": "as"
}
},
{
"type": "FIELD",
"name": "right",
"content": {
"type": "SYMBOL",
"name": "type"
}
}
]
}
},
"is_expression": {
"type": "PREC",
"value": 10,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "left",
"content": {
"type": "SYMBOL",
"name": "expression"
}
},
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "STRING",
"value": "is"
}
},
{
"type": "FIELD",
"name": "right",
"content": {
"type": "SYMBOL",
"name": "type"
}
}
]
}
},
"is_pattern_expression": {
"type": "PREC",
"value": 10,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "expression",
"content": {
"type": "SYMBOL",
"name": "expression"
}
},
{
"type": "STRING",
"value": "is"
},
{
"type": "FIELD",
"name": "pattern",
"content": {
"type": "SYMBOL",
"name": "pattern"
}
}
]
}
},
"cast_expression": {
"type": "PREC",
"value": 17,
"content": {
"type": "PREC_DYNAMIC",
"value": 1,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "FIELD",
"name": "type",
"content": {
"type": "SYMBOL",
"name": "type"
}
},
{
"type": "STRING",
"value": ")"
},
{
"type": "FIELD",
"name": "value",
"content": {
"type": "SYMBOL",
"name": "expression"
}
}
]
}
}
},
"checked_expression": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "checked"
},
{
"type": "STRING",
"value": "unchecked"
}
]
},
{
"type": "STRING",
"value": "("
},
{
"type": "SYMBOL",
"name": "expression"
},
{
"type": "STRING",
"value": ")"
}
]
},
"invocation_expression": {
"type": "PREC",
"value": 18,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "function",
"content": {
"type": "SYMBOL",
"name": "expression"
}
},
{
"type": "FIELD",
"name": "arguments",
"content": {
"type": "SYMBOL",
"name": "argument_list"
}
}
]
}
},
"switch_expression": {
"type": "PREC",
"value": 15,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "expression"
},
{
"type": "STRING",
"value": "switch"
},
{
"type": "SYMBOL",
"name": "_switch_expression_body"
}
]
}
},
"_switch_expression_body": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "{"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "switch_expression_arm"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "switch_expression_arm"
}
]
}
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "}"
}
]
},
"switch_expression_arm": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "pattern"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "when_clause"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "=>"
},
{
"type": "SYMBOL",
"name": "expression"
}
]
},
"when_clause": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "when"
},
{
"type": "SYMBOL",
"name": "expression"
}
]
},
"await_expression": {
"type": "PREC_RIGHT",
"value": 17,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "await"
},
{
"type": "SYMBOL",
"name": "expression"
}
]
}
},
"throw_expression": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "throw"
},
{
"type": "SYMBOL",
"name": "expression"
}
]
},
"element_access_expression": {
"type": "PREC",
"value": 18,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "expression",
"content": {
"type": "SYMBOL",
"name": "expression"
}
},
{
"type": "FIELD",
"name": "subscript",
"content": {
"type": "SYMBOL",
"name": "bracketed_argument_list"
}
}
]
}
},
"interpolated_string_expression": {
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "interpolation_regular_start"
},
"named": true,
"value": "interpolation_start"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "interpolation_start_quote"
},
"named": false,
"value": "\""
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_interpolated_string_content"
}
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "interpolation_end_quote"
},
"named": false,
"value": "\""
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "interpolation_verbatim_start"
},
"named": true,
"value": "interpolation_start"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "interpolation_start_quote"
},
"named": false,
"value": "\""
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_interpolated_verbatim_string_content"
}
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "interpolation_end_quote"
},
"named": false,
"value": "\""
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "interpolation_raw_start"
},
"named": true,
"value": "interpolation_start"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "interpolation_start_quote"
},
"named": true,
"value": "interpolation_quote"
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_interpolated_raw_string_content"
}
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "interpolation_end_quote"
},
"named": true,
"value": "interpolation_quote"
}
]
}
]
},
"_interpolated_string_content": {
"type": "CHOICE",
"members": [
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "interpolation_string_content"
},
"named": true,
"value": "string_content"
},
{
"type": "SYMBOL",
"name": "escape_sequence"
},
{
"type": "SYMBOL",
"name": "interpolation"
}
]
},
"_interpolated_verbatim_string_content": {
"type": "CHOICE",
"members": [
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "interpolation_string_content"
},
"named": true,
"value": "string_content"
},
{
"type": "SYMBOL",
"name": "interpolation"
}
]
},
"_interpolated_raw_string_content": {
"type": "CHOICE",
"members": [
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "interpolation_string_content"
},
"named": true,
"value": "string_content"
},
{
"type": "SYMBOL",
"name": "interpolation"
}
]
},
"interpolation": {
"type": "SEQ",
"members": [
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "interpolation_open_brace"
},
"named": true,
"value": "interpolation_brace"
},
{
"type": "SYMBOL",
"name": "expression"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "interpolation_alignment_clause"
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "interpolation_format_clause"
},
{
"type": "BLANK"
}
]
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "interpolation_close_brace"
},
"named": true,
"value": "interpolation_brace"
}
]
},
"interpolation_alignment_clause": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "expression"
}
]
},
"interpolation_format_clause": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ":"
},
{
"type": "PATTERN",
"value": "[^}\"]+"
}
]
},
"member_access_expression": {
"type": "PREC",
"value": 18,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "expression",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "expression"
},
{
"type": "SYMBOL",
"name": "predefined_type"
},
{
"type": "SYMBOL",
"name": "_name"
}
]
}
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "."
},
{
"type": "STRING",
"value": "->"
}
]
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "_simple_name"
}
}
]
}
},
"member_binding_expression": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "."
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "_simple_name"
}
}
]
},
"object_creation_expression": {
"type": "PREC_RIGHT",
"value": 0,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "new"
},
{
"type": "FIELD",
"name": "type",
"content": {
"type": "SYMBOL",
"name": "type"
}
},
{
"type": "FIELD",
"name": "arguments",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "argument_list"
},
{
"type": "BLANK"
}
]
}
},
{
"type": "FIELD",
"name": "initializer",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "initializer_expression"
},
{
"type": "BLANK"
}
]
}
}
]
}
},
"_object_creation_type": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_name"
},
{
"type": "SYMBOL",
"name": "nullable_type"
},
{
"type": "SYMBOL",
"name": "predefined_type"
}
]
},
"parenthesized_expression": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "SYMBOL",
"name": "non_lvalue_expression"
},
{
"type": "STRING",
"value": ")"
}
]
},
"_parenthesized_lvalue_expression": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "SYMBOL",
"name": "lvalue_expression"
},
{
"type": "STRING",
"value": ")"
}
]
},
"lambda_expression": {
"type": "PREC",
"value": -1,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_lambda_expression_init"
},
{
"type": "STRING",
"value": "=>"
},
{
"type": "FIELD",
"name": "body",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "block"
},
{
"type": "SYMBOL",
"name": "expression"
}
]
}
}
]
}
},
"_lambda_expression_init": {
"type": "PREC",
"value": -1,
"content": {
"type": "SEQ",
"members": [
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_attribute_list"
}
},
{
"type": "REPEAT",
"content": {
"type": "PREC",
"value": -1,
"content": {
"type": "ALIAS",
"content": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "static"
},
{
"type": "STRING",
"value": "async"
}
]
},
"named": true,
"value": "modifier"
}
}
},
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "type",
"content": {
"type": "SYMBOL",
"name": "type"
}
},
{
"type": "BLANK"
}
]
},
{
"type": "FIELD",
"name": "parameters",
"content": {
"type": "SYMBOL",
"name": "_lambda_parameters"
}
}
]
}
},
"_lambda_parameters": {
"type": "PREC",
"value": -1,
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "parameter_list"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "identifier"
},
"named": true,
"value": "implicit_parameter"
}
]
}
},
"array_creation_expression": {
"type": "PREC_DYNAMIC",
"value": 17,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "new"
},
{
"type": "FIELD",
"name": "type",
"content": {
"type": "SYMBOL",
"name": "array_type"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "initializer_expression"
},
{
"type": "BLANK"
}
]
}
]
}
},
"anonymous_method_expression": {
"type": "SEQ",
"members": [
{
"type": "REPEAT",
"content": {
"type": "PREC",
"value": -1,
"content": {
"type": "ALIAS",
"content": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "static"
},
{
"type": "STRING",
"value": "async"
}
]
},
"named": true,
"value": "modifier"
}
}
},
{
"type": "STRING",
"value": "delegate"
},
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "parameters",
"content": {
"type": "SYMBOL",
"name": "parameter_list"
}
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "block"
}
]
},
"anonymous_object_creation_expression": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "new"
},
{
"type": "STRING",
"value": "{"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_anonymous_object_member_declarator"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "_anonymous_object_member_declarator"
}
]
}
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "}"
}
]
},
"_anonymous_object_member_declarator": {
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "STRING",
"value": "="
},
{
"type": "SYMBOL",
"name": "expression"
}
]
},
{
"type": "SYMBOL",
"name": "expression"
}
]
},
"implicit_array_creation_expression": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "new"
},
{
"type": "STRING",
"value": "["
},
{
"type": "REPEAT",
"content": {
"type": "STRING",
"value": ","
}
},
{
"type": "STRING",
"value": "]"
},
{
"type": "SYMBOL",
"name": "initializer_expression"
}
]
},
"implicit_object_creation_expression": {
"type": "PREC_RIGHT",
"value": 0,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "new"
},
{
"type": "SYMBOL",
"name": "argument_list"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "initializer_expression"
},
{
"type": "BLANK"
}
]
}
]
}
},
"implicit_stackalloc_expression": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "stackalloc"
},
{
"type": "STRING",
"value": "["
},
{
"type": "STRING",
"value": "]"
},
{
"type": "SYMBOL",
"name": "initializer_expression"
}
]
},
"initializer_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": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "}"
}
]
},
"declaration_expression": {
"type": "PREC_DYNAMIC",
"value": 1,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "type",
"content": {
"type": "SYMBOL",
"name": "type"
}
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
}
]
}
},
"default_expression": {
"type": "PREC_RIGHT",
"value": 0,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "default"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "FIELD",
"name": "type",
"content": {
"type": "SYMBOL",
"name": "type"
}
},
{
"type": "STRING",
"value": ")"
}
]
},
{
"type": "BLANK"
}
]
}
]
}
},
"with_expression": {
"type": "PREC_LEFT",
"value": 14,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "expression"
},
{
"type": "STRING",
"value": "with"
},
{
"type": "SYMBOL",
"name": "_with_body"
}
]
}
},
"_with_body": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "{"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "with_initializer"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "with_initializer"
}
]
}
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "}"
}
]
},
"with_initializer": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "STRING",
"value": "="
},
{
"type": "SYMBOL",
"name": "expression"
}
]
},
"sizeof_expression": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "sizeof"
},
{
"type": "STRING",
"value": "("
},
{
"type": "FIELD",
"name": "type",
"content": {
"type": "SYMBOL",
"name": "type"
}
},
{
"type": "STRING",
"value": ")"
}
]
},
"typeof_expression": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "typeof"
},
{
"type": "STRING",
"value": "("
},
{
"type": "FIELD",
"name": "type",
"content": {
"type": "SYMBOL",
"name": "type"
}
},
{
"type": "STRING",
"value": ")"
}
]
},
"makeref_expression": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "__makeref"
},
{
"type": "STRING",
"value": "("
},
{
"type": "SYMBOL",
"name": "expression"
},
{
"type": "STRING",
"value": ")"
}
]
},
"ref_expression": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "ref"
},
{
"type": "SYMBOL",
"name": "expression"
}
]
},
"reftype_expression": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "__reftype"
},
{
"type": "STRING",
"value": "("
},
{
"type": "SYMBOL",
"name": "expression"
},
{
"type": "STRING",
"value": ")"
}
]
},
"refvalue_expression": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "__refvalue"
},
{
"type": "STRING",
"value": "("
},
{
"type": "FIELD",
"name": "value",
"content": {
"type": "SYMBOL",
"name": "expression"
}
},
{
"type": "STRING",
"value": ","
},
{
"type": "FIELD",
"name": "type",
"content": {
"type": "SYMBOL",
"name": "type"
}
},
{
"type": "STRING",
"value": ")"
}
]
},
"stackalloc_expression": {
"type": "PREC_LEFT",
"value": 0,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "stackalloc"
},
{
"type": "FIELD",
"name": "type",
"content": {
"type": "SYMBOL",
"name": "array_type"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "initializer_expression"
},
{
"type": "BLANK"
}
]
}
]
}
},
"range_expression": {
"type": "PREC_RIGHT",
"value": 16,
"content": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "expression"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ".."
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "expression"
},
{
"type": "BLANK"
}
]
}
]
}
},
"tuple_expression": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "argument"
},
{
"type": "REPEAT1",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "argument"
}
]
}
}
]
},
{
"type": "STRING",
"value": ")"
}
]
},
"literal": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "null_literal"
},
{
"type": "SYMBOL",
"name": "character_literal"
},
{
"type": "SYMBOL",
"name": "integer_literal"
},
{
"type": "SYMBOL",
"name": "real_literal"
},
{
"type": "SYMBOL",
"name": "boolean_literal"
},
{
"type": "SYMBOL",
"name": "string_literal"
},
{
"type": "SYMBOL",
"name": "verbatim_string_literal"
},
{
"type": "SYMBOL",
"name": "raw_string_literal"
}
]
},
"null_literal": {
"type": "STRING",
"value": "null"
},
"character_literal": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "'"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "character_literal_content"
},
{
"type": "SYMBOL",
"name": "escape_sequence"
}
]
},
{
"type": "STRING",
"value": "'"
}
]
},
"character_literal_content": {
"type": "IMMEDIATE_TOKEN",
"content": {
"type": "PATTERN",
"value": "[^'\\\\]"
}
},
"integer_literal": {
"type": "TOKEN",
"content": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "PATTERN",
"value": "([0-9][0-9_]*[0-9]|[0-9])"
},
{
"type": "PATTERN",
"value": "0[xX][0-9a-fA-F_]*[0-9a-fA-F]+"
},
{
"type": "PATTERN",
"value": "0[bB][01_]*[01]+"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "PATTERN",
"value": "([uU][lL]?|[lL][uU]?)"
},
{
"type": "BLANK"
}
]
}
]
}
},
"real_literal": {
"type": "TOKEN",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "PATTERN",
"value": "([0-9][0-9_]*[0-9]|[0-9])"
},
{
"type": "STRING",
"value": "."
},
{
"type": "PATTERN",
"value": "([0-9][0-9_]*[0-9]|[0-9])"
},
{
"type": "CHOICE",
"members": [
{
"type": "PATTERN",
"value": "[eE][+-]?[0-9][0-9_]*"
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "PATTERN",
"value": "[fFdDmM]"
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "."
},
{
"type": "PATTERN",
"value": "([0-9][0-9_]*[0-9]|[0-9])"
},
{
"type": "CHOICE",
"members": [
{
"type": "PATTERN",
"value": "[eE][+-]?[0-9][0-9_]*"
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "PATTERN",
"value": "[fFdDmM]"
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "PATTERN",
"value": "([0-9][0-9_]*[0-9]|[0-9])"
},
{
"type": "PATTERN",
"value": "[eE][+-]?[0-9][0-9_]*"
},
{
"type": "CHOICE",
"members": [
{
"type": "PATTERN",
"value": "[fFdDmM]"
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "PATTERN",
"value": "([0-9][0-9_]*[0-9]|[0-9])"
},
{
"type": "PATTERN",
"value": "[fFdDmM]"
}
]
}
]
}
},
"string_literal": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "\""
},
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "string_literal_content"
},
{
"type": "SYMBOL",
"name": "escape_sequence"
}
]
}
},
{
"type": "STRING",
"value": "\""
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "string_literal_encoding"
},
{
"type": "BLANK"
}
]
}
]
},
"string_literal_content": {
"type": "CHOICE",
"members": [
{
"type": "IMMEDIATE_TOKEN",
"content": {
"type": "PREC",
"value": 1,
"content": {
"type": "PATTERN",
"value": "[^\"\\\\\\n]+"
}
}
},
{
"type": "PREC",
"value": 2,
"content": {
"type": "IMMEDIATE_TOKEN",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "\\"
},
{
"type": "PATTERN",
"value": "[^abefnrtv'\\\"\\\\\\?0]"
}
]
}
}
}
]
},
"escape_sequence": {
"type": "TOKEN",
"content": {
"type": "CHOICE",
"members": [
{
"type": "PATTERN",
"value": "\\\\x[0-9a-fA-F]{1,4}"
},
{
"type": "PATTERN",
"value": "\\\\u[0-9a-fA-F]{4}"
},
{
"type": "PATTERN",
"value": "\\\\U[0-9a-fA-F]{8}"
},
{
"type": "PATTERN",
"value": "\\\\[abefnrtv'\\\"\\\\\\?0]"
}
]
}
},
"string_literal_encoding": {
"type": "IMMEDIATE_TOKEN",
"content": {
"type": "PATTERN",
"value": "(u|U)8"
}
},
"verbatim_string_literal": {
"type": "TOKEN",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "@\""
},
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "PATTERN",
"value": "[^\"]"
},
{
"type": "STRING",
"value": "\"\""
}
]
}
},
{
"type": "STRING",
"value": "\""
},
{
"type": "CHOICE",
"members": [
{
"type": "PATTERN",
"value": "(u|U)8"
},
{
"type": "BLANK"
}
]
}
]
}
},
"raw_string_literal": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "raw_string_start"
},
{
"type": "SYMBOL",
"name": "raw_string_content"
},
{
"type": "SYMBOL",
"name": "raw_string_end"
},
{
"type": "CHOICE",
"members": [
{
"type": "PATTERN",
"value": "(u|U)8"
},
{
"type": "BLANK"
}
]
}
]
},
"boolean_literal": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "true"
},
{
"type": "STRING",
"value": "false"
}
]
},
"_identifier_token": {
"type": "TOKEN",
"content": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "@"
},
{
"type": "BLANK"
}
]
},
{
"type": "PATTERN",
"value": "(\\p{XID_Start}|_|\\\\u[0-9A-Fa-f]{4}|\\\\U[0-9A-Fa-f]{8})(\\p{XID_Continue}|\\\\u[0-9A-Fa-f]{4}|\\\\U[0-9A-Fa-f]{8})*"
}
]
}
},
"identifier": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_identifier_token"
},
{
"type": "SYMBOL",
"name": "_reserved_identifier"
}
]
},
"_reserved_identifier": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "alias"
},
{
"type": "STRING",
"value": "ascending"
},
{
"type": "STRING",
"value": "by"
},
{
"type": "STRING",
"value": "descending"
},
{
"type": "STRING",
"value": "equals"
},
{
"type": "STRING",
"value": "file"
},
{
"type": "STRING",
"value": "from"
},
{
"type": "STRING",
"value": "global"
},
{
"type": "STRING",
"value": "group"
},
{
"type": "STRING",
"value": "into"
},
{
"type": "STRING",
"value": "join"
},
{
"type": "STRING",
"value": "let"
},
{
"type": "STRING",
"value": "notnull"
},
{
"type": "STRING",
"value": "on"
},
{
"type": "STRING",
"value": "orderby"
},
{
"type": "STRING",
"value": "scoped"
},
{
"type": "STRING",
"value": "select"
},
{
"type": "STRING",
"value": "unmanaged"
},
{
"type": "STRING",
"value": "var"
},
{
"type": "STRING",
"value": "when"
},
{
"type": "STRING",
"value": "where"
},
{
"type": "STRING",
"value": "yield"
}
]
},
"preproc_if": {
"type": "PREC",
"value": 0,
"content": {
"type": "SEQ",
"members": [
{
"type": "ALIAS",
"content": {
"type": "PATTERN",
"value": "#[ \t]*if"
},
"named": false,
"value": "#if"
},
{
"type": "FIELD",
"name": "condition",
"content": {
"type": "SYMBOL",
"name": "_preproc_expression"
}
},
{
"type": "PATTERN",
"value": "\\n"
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "declaration"
}
},
{
"type": "FIELD",
"name": "alternative",
"content": {
"type": "CHOICE",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "preproc_else"
},
{
"type": "SYMBOL",
"name": "preproc_elif"
}
]
},
{
"type": "BLANK"
}
]
}
},
{
"type": "ALIAS",
"content": {
"type": "PATTERN",
"value": "#[ \t]*endif"
},
"named": false,
"value": "#endif"
}
]
}
},
"preproc_else": {
"type": "PREC",
"value": 0,
"content": {
"type": "SEQ",
"members": [
{
"type": "ALIAS",
"content": {
"type": "PATTERN",
"value": "#[ \t]*else"
},
"named": false,
"value": "#else"
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "declaration"
}
}
]
}
},
"preproc_elif": {
"type": "PREC",
"value": 0,
"content": {
"type": "SEQ",
"members": [
{
"type": "ALIAS",
"content": {
"type": "PATTERN",
"value": "#[ \t]*elif"
},
"named": false,
"value": "#elif"
},
{
"type": "FIELD",
"name": "condition",
"content": {
"type": "SYMBOL",
"name": "_preproc_expression"
}
},
{
"type": "PATTERN",
"value": "\\n"
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "declaration"
}
},
{
"type": "FIELD",
"name": "alternative",
"content": {
"type": "CHOICE",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "preproc_else"
},
{
"type": "SYMBOL",
"name": "preproc_elif"
}
]
},
{
"type": "BLANK"
}
]
}
}
]
}
},
"preproc_if_in_top_level": {
"type": "PREC",
"value": 0,
"content": {
"type": "SEQ",
"members": [
{
"type": "ALIAS",
"content": {
"type": "PATTERN",
"value": "#[ \t]*if"
},
"named": false,
"value": "#if"
},
{
"type": "FIELD",
"name": "condition",
"content": {
"type": "SYMBOL",
"name": "_preproc_expression"
}
},
{
"type": "PATTERN",
"value": "\\n"
},
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_top_level_item_no_statement"
},
{
"type": "SYMBOL",
"name": "statement"
}
]
}
},
{
"type": "FIELD",
"name": "alternative",
"content": {
"type": "CHOICE",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "preproc_else_in_top_level"
},
"named": true,
"value": "preproc_else"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "preproc_elif_in_top_level"
},
"named": true,
"value": "preproc_elif"
}
]
},
{
"type": "BLANK"
}
]
}
},
{
"type": "ALIAS",
"content": {
"type": "PATTERN",
"value": "#[ \t]*endif"
},
"named": false,
"value": "#endif"
}
]
}
},
"preproc_else_in_top_level": {
"type": "PREC",
"value": 0,
"content": {
"type": "SEQ",
"members": [
{
"type": "ALIAS",
"content": {
"type": "PATTERN",
"value": "#[ \t]*else"
},
"named": false,
"value": "#else"
},
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_top_level_item_no_statement"
},
{
"type": "SYMBOL",
"name": "statement"
}
]
}
}
]
}
},
"preproc_elif_in_top_level": {
"type": "PREC",
"value": 0,
"content": {
"type": "SEQ",
"members": [
{
"type": "ALIAS",
"content": {
"type": "PATTERN",
"value": "#[ \t]*elif"
},
"named": false,
"value": "#elif"
},
{
"type": "FIELD",
"name": "condition",
"content": {
"type": "SYMBOL",
"name": "_preproc_expression"
}
},
{
"type": "PATTERN",
"value": "\\n"
},
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_top_level_item_no_statement"
},
{
"type": "SYMBOL",
"name": "statement"
}
]
}
},
{
"type": "FIELD",
"name": "alternative",
"content": {
"type": "CHOICE",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "preproc_else_in_top_level"
},
"named": true,
"value": "preproc_else"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "preproc_elif_in_top_level"
},
"named": true,
"value": "preproc_elif"
}
]
},
{
"type": "BLANK"
}
]
}
}
]
}
},
"preproc_if_in_expression": {
"type": "PREC",
"value": -2,
"content": {
"type": "SEQ",
"members": [
{
"type": "ALIAS",
"content": {
"type": "PATTERN",
"value": "#[ \t]*if"
},
"named": false,
"value": "#if"
},
{
"type": "FIELD",
"name": "condition",
"content": {
"type": "SYMBOL",
"name": "_preproc_expression"
}
},
{
"type": "PATTERN",
"value": "\\n"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "expression"
},
{
"type": "BLANK"
}
]
},
{
"type": "FIELD",
"name": "alternative",
"content": {
"type": "CHOICE",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "preproc_else_in_expression"
},
"named": true,
"value": "preproc_else"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "preproc_elif_in_expression"
},
"named": true,
"value": "preproc_elif"
}
]
},
{
"type": "BLANK"
}
]
}
},
{
"type": "ALIAS",
"content": {
"type": "PATTERN",
"value": "#[ \t]*endif"
},
"named": false,
"value": "#endif"
}
]
}
},
"preproc_else_in_expression": {
"type": "PREC",
"value": -2,
"content": {
"type": "SEQ",
"members": [
{
"type": "ALIAS",
"content": {
"type": "PATTERN",
"value": "#[ \t]*else"
},
"named": false,
"value": "#else"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "expression"
},
{
"type": "BLANK"
}
]
}
]
}
},
"preproc_elif_in_expression": {
"type": "PREC",
"value": -2,
"content": {
"type": "SEQ",
"members": [
{
"type": "ALIAS",
"content": {
"type": "PATTERN",
"value": "#[ \t]*elif"
},
"named": false,
"value": "#elif"
},
{
"type": "FIELD",
"name": "condition",
"content": {
"type": "SYMBOL",
"name": "_preproc_expression"
}
},
{
"type": "PATTERN",
"value": "\\n"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "expression"
},
{
"type": "BLANK"
}
]
},
{
"type": "FIELD",
"name": "alternative",
"content": {
"type": "CHOICE",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "preproc_else_in_expression"
},
"named": true,
"value": "preproc_else"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "preproc_elif_in_expression"
},
"named": true,
"value": "preproc_elif"
}
]
},
{
"type": "BLANK"
}
]
}
}
]
}
},
"preproc_if_in_enum_member_declaration": {
"type": "PREC",
"value": 0,
"content": {
"type": "SEQ",
"members": [
{
"type": "ALIAS",
"content": {
"type": "PATTERN",
"value": "#[ \t]*if"
},
"named": false,
"value": "#if"
},
{
"type": "FIELD",
"name": "condition",
"content": {
"type": "SYMBOL",
"name": "_preproc_expression"
}
},
{
"type": "PATTERN",
"value": "\\n"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "enum_member_declaration"
},
{
"type": "BLANK"
}
]
},
{
"type": "FIELD",
"name": "alternative",
"content": {
"type": "CHOICE",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "preproc_else_in_enum_member_declaration"
},
"named": true,
"value": "preproc_else"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "preproc_elif_in_enum_member_declaration"
},
"named": true,
"value": "preproc_elif"
}
]
},
{
"type": "BLANK"
}
]
}
},
{
"type": "ALIAS",
"content": {
"type": "PATTERN",
"value": "#[ \t]*endif"
},
"named": false,
"value": "#endif"
}
]
}
},
"preproc_else_in_enum_member_declaration": {
"type": "PREC",
"value": 0,
"content": {
"type": "SEQ",
"members": [
{
"type": "ALIAS",
"content": {
"type": "PATTERN",
"value": "#[ \t]*else"
},
"named": false,
"value": "#else"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "enum_member_declaration"
},
{
"type": "BLANK"
}
]
}
]
}
},
"preproc_elif_in_enum_member_declaration": {
"type": "PREC",
"value": 0,
"content": {
"type": "SEQ",
"members": [
{
"type": "ALIAS",
"content": {
"type": "PATTERN",
"value": "#[ \t]*elif"
},
"named": false,
"value": "#elif"
},
{
"type": "FIELD",
"name": "condition",
"content": {
"type": "SYMBOL",
"name": "_preproc_expression"
}
},
{
"type": "PATTERN",
"value": "\\n"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "enum_member_declaration"
},
{
"type": "BLANK"
}
]
},
{
"type": "FIELD",
"name": "alternative",
"content": {
"type": "CHOICE",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "preproc_else_in_enum_member_declaration"
},
"named": true,
"value": "preproc_else"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "preproc_elif_in_enum_member_declaration"
},
"named": true,
"value": "preproc_elif"
}
]
},
{
"type": "BLANK"
}
]
}
}
]
}
},
"preproc_if_in_attribute_list": {
"type": "PREC",
"value": -1,
"content": {
"type": "SEQ",
"members": [
{
"type": "ALIAS",
"content": {
"type": "PATTERN",
"value": "#[ \t]*if"
},
"named": false,
"value": "#if"
},
{
"type": "FIELD",
"name": "condition",
"content": {
"type": "SYMBOL",
"name": "_preproc_expression"
}
},
{
"type": "PATTERN",
"value": "\\n"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "attribute_list"
},
{
"type": "BLANK"
}
]
},
{
"type": "FIELD",
"name": "alternative",
"content": {
"type": "CHOICE",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "preproc_else_in_attribute_list"
},
"named": true,
"value": "preproc_else"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "preproc_elif_in_attribute_list"
},
"named": true,
"value": "preproc_elif"
}
]
},
{
"type": "BLANK"
}
]
}
},
{
"type": "ALIAS",
"content": {
"type": "PATTERN",
"value": "#[ \t]*endif"
},
"named": false,
"value": "#endif"
}
]
}
},
"preproc_else_in_attribute_list": {
"type": "PREC",
"value": -1,
"content": {
"type": "SEQ",
"members": [
{
"type": "ALIAS",
"content": {
"type": "PATTERN",
"value": "#[ \t]*else"
},
"named": false,
"value": "#else"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "attribute_list"
},
{
"type": "BLANK"
}
]
}
]
}
},
"preproc_elif_in_attribute_list": {
"type": "PREC",
"value": -1,
"content": {
"type": "SEQ",
"members": [
{
"type": "ALIAS",
"content": {
"type": "PATTERN",
"value": "#[ \t]*elif"
},
"named": false,
"value": "#elif"
},
{
"type": "FIELD",
"name": "condition",
"content": {
"type": "SYMBOL",
"name": "_preproc_expression"
}
},
{
"type": "PATTERN",
"value": "\\n"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "attribute_list"
},
{
"type": "BLANK"
}
]
},
{
"type": "FIELD",
"name": "alternative",
"content": {
"type": "CHOICE",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "preproc_else_in_attribute_list"
},
"named": true,
"value": "preproc_else"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "preproc_elif_in_attribute_list"
},
"named": true,
"value": "preproc_elif"
}
]
},
{
"type": "BLANK"
}
]
}
}
]
}
},
"preproc_arg": {
"type": "TOKEN",
"content": {
"type": "PREC",
"value": -1,
"content": {
"type": "PATTERN",
"value": "\\S([^/\\n]|\\/[^*]|\\\\\\r?\\n)*"
}
}
},
"preproc_directive": {
"type": "PATTERN",
"value": "#[ \\t]*[a-zA-Z0-9]\\w*"
},
"_preproc_expression": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "SYMBOL",
"name": "boolean_literal"
},
{
"type": "SYMBOL",
"name": "integer_literal"
},
{
"type": "SYMBOL",
"name": "character_literal"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "preproc_unary_expression"
},
"named": true,
"value": "unary_expression"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "preproc_binary_expression"
},
"named": true,
"value": "binary_expression"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "preproc_parenthesized_expression"
},
"named": true,
"value": "parenthesized_expression"
}
]
},
"preproc_parenthesized_expression": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "SYMBOL",
"name": "_preproc_expression"
},
{
"type": "STRING",
"value": ")"
}
]
},
"preproc_unary_expression": {
"type": "PREC_LEFT",
"value": 17,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "STRING",
"value": "!"
}
},
{
"type": "FIELD",
"name": "argument",
"content": {
"type": "SYMBOL",
"name": "_preproc_expression"
}
}
]
}
},
"preproc_binary_expression": {
"type": "CHOICE",
"members": [
{
"type": "PREC_LEFT",
"value": 4,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "left",
"content": {
"type": "SYMBOL",
"name": "_preproc_expression"
}
},
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "STRING",
"value": "||"
}
},
{
"type": "FIELD",
"name": "right",
"content": {
"type": "SYMBOL",
"name": "_preproc_expression"
}
}
]
}
},
{
"type": "PREC_LEFT",
"value": 5,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "left",
"content": {
"type": "SYMBOL",
"name": "_preproc_expression"
}
},
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "STRING",
"value": "&&"
}
},
{
"type": "FIELD",
"name": "right",
"content": {
"type": "SYMBOL",
"name": "_preproc_expression"
}
}
]
}
},
{
"type": "PREC_LEFT",
"value": 9,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "left",
"content": {
"type": "SYMBOL",
"name": "_preproc_expression"
}
},
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "STRING",
"value": "=="
}
},
{
"type": "FIELD",
"name": "right",
"content": {
"type": "SYMBOL",
"name": "_preproc_expression"
}
}
]
}
},
{
"type": "PREC_LEFT",
"value": 9,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "left",
"content": {
"type": "SYMBOL",
"name": "_preproc_expression"
}
},
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "STRING",
"value": "!="
}
},
{
"type": "FIELD",
"name": "right",
"content": {
"type": "SYMBOL",
"name": "_preproc_expression"
}
}
]
}
}
]
},
"preproc_region": {
"type": "SEQ",
"members": [
{
"type": "ALIAS",
"content": {
"type": "PATTERN",
"value": "#[ \t]*region"
},
"named": false,
"value": "#region"
},
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "content",
"content": {
"type": "SYMBOL",
"name": "preproc_arg"
}
},
{
"type": "BLANK"
}
]
},
{
"type": "PATTERN",
"value": "\\n"
}
]
},
"preproc_endregion": {
"type": "SEQ",
"members": [
{
"type": "ALIAS",
"content": {
"type": "PATTERN",
"value": "#[ \t]*endregion"
},
"named": false,
"value": "#endregion"
},
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "content",
"content": {
"type": "SYMBOL",
"name": "preproc_arg"
}
},
{
"type": "BLANK"
}
]
},
{
"type": "PATTERN",
"value": "\\n"
}
]
},
"preproc_line": {
"type": "SEQ",
"members": [
{
"type": "ALIAS",
"content": {
"type": "PATTERN",
"value": "#[ \t]*line"
},
"named": false,
"value": "#line"
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "default"
},
{
"type": "STRING",
"value": "hidden"
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "integer_literal"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "string_literal"
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "SYMBOL",
"name": "integer_literal"
},
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "integer_literal"
},
{
"type": "STRING",
"value": ")"
},
{
"type": "STRING",
"value": "-"
},
{
"type": "STRING",
"value": "("
},
{
"type": "SYMBOL",
"name": "integer_literal"
},
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "integer_literal"
},
{
"type": "STRING",
"value": ")"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "integer_literal"
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "string_literal"
}
]
}
]
},
{
"type": "PATTERN",
"value": "\\n"
}
]
},
"preproc_pragma": {
"type": "SEQ",
"members": [
{
"type": "ALIAS",
"content": {
"type": "PATTERN",
"value": "#[ \t]*pragma"
},
"named": false,
"value": "#pragma"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "warning"
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "disable"
},
{
"type": "STRING",
"value": "restore"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "SYMBOL",
"name": "integer_literal"
}
]
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "SYMBOL",
"name": "integer_literal"
}
]
}
]
}
}
]
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "checksum"
},
{
"type": "SYMBOL",
"name": "string_literal"
},
{
"type": "SYMBOL",
"name": "string_literal"
},
{
"type": "SYMBOL",
"name": "string_literal"
}
]
}
]
},
{
"type": "PATTERN",
"value": "\\n"
}
]
},
"preproc_nullable": {
"type": "SEQ",
"members": [
{
"type": "ALIAS",
"content": {
"type": "PATTERN",
"value": "#[ \t]*nullable"
},
"named": false,
"value": "#nullable"
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "enable"
},
{
"type": "STRING",
"value": "disable"
},
{
"type": "STRING",
"value": "restore"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "annotations"
},
{
"type": "STRING",
"value": "warnings"
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "PATTERN",
"value": "\\n"
}
]
},
"preproc_error": {
"type": "SEQ",
"members": [
{
"type": "ALIAS",
"content": {
"type": "PATTERN",
"value": "#[ \t]*error"
},
"named": false,
"value": "#error"
},
{
"type": "SYMBOL",
"name": "preproc_arg"
},
{
"type": "PATTERN",
"value": "\\n"
}
]
},
"preproc_warning": {
"type": "SEQ",
"members": [
{
"type": "ALIAS",
"content": {
"type": "PATTERN",
"value": "#[ \t]*warning"
},
"named": false,
"value": "#warning"
},
{
"type": "SYMBOL",
"name": "preproc_arg"
},
{
"type": "PATTERN",
"value": "\\n"
}
]
},
"preproc_define": {
"type": "SEQ",
"members": [
{
"type": "ALIAS",
"content": {
"type": "PATTERN",
"value": "#[ \t]*define"
},
"named": false,
"value": "#define"
},
{
"type": "SYMBOL",
"name": "preproc_arg"
},
{
"type": "PATTERN",
"value": "\\n"
}
]
},
"preproc_undef": {
"type": "SEQ",
"members": [
{
"type": "ALIAS",
"content": {
"type": "PATTERN",
"value": "#[ \t]*undef"
},
"named": false,
"value": "#undef"
},
{
"type": "SYMBOL",
"name": "preproc_arg"
},
{
"type": "PATTERN",
"value": "\\n"
}
]
},
"shebang_directive": {
"type": "TOKEN",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "#!"
},
{
"type": "PATTERN",
"value": ".*"
}
]
}
},
"comment": {
"type": "TOKEN",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "//"
},
{
"type": "PATTERN",
"value": "[^\\n\\r]*"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "/*"
},
{
"type": "PATTERN",
"value": "[^*]*\\*+([^/*][^*]*\\*+)*"
},
{
"type": "STRING",
"value": "/"
}
]
}
]
}
}
},
"extras": [
{
"type": "PATTERN",
"value": "[\\s\\u00A0\\uFEFF\\u3000]+"
},
{
"type": "SYMBOL",
"name": "comment"
},
{
"type": "SYMBOL",
"name": "preproc_region"
},
{
"type": "SYMBOL",
"name": "preproc_endregion"
},
{
"type": "SYMBOL",
"name": "preproc_line"
},
{
"type": "SYMBOL",
"name": "preproc_pragma"
},
{
"type": "SYMBOL",
"name": "preproc_nullable"
},
{
"type": "SYMBOL",
"name": "preproc_error"
},
{
"type": "SYMBOL",
"name": "preproc_warning"
},
{
"type": "SYMBOL",
"name": "preproc_define"
},
{
"type": "SYMBOL",
"name": "preproc_undef"
}
],
"conflicts": [
[
"_simple_name",
"generic_name"
],
[
"_simple_name",
"type_parameter"
],
[
"_simple_name",
"subpattern"
],
[
"tuple_element",
"type_pattern"
],
[
"tuple_element",
"using_variable_declarator"
],
[
"tuple_element",
"declaration_expression"
],
[
"tuple_pattern",
"parameter"
],
[
"tuple_pattern",
"_simple_name"
],
[
"lvalue_expression",
"_name"
],
[
"parameter",
"lvalue_expression"
],
[
"type",
"attribute"
],
[
"type",
"nullable_type"
],
[
"type",
"nullable_type",
"array_creation_expression"
],
[
"type",
"_array_base_type"
],
[
"type",
"_array_base_type",
"array_creation_expression"
],
[
"type",
"array_creation_expression"
],
[
"type",
"_pointer_base_type"
],
[
"qualified_name",
"member_access_expression"
],
[
"qualified_name",
"explicit_interface_specifier"
],
[
"_array_base_type",
"stackalloc_expression"
],
[
"constant_pattern",
"non_lvalue_expression"
],
[
"constant_pattern",
"_expression_statement_expression"
],
[
"constant_pattern",
"lvalue_expression"
],
[
"constant_pattern",
"_name"
],
[
"constant_pattern",
"lvalue_expression",
"_name"
],
[
"_reserved_identifier",
"modifier"
],
[
"_reserved_identifier",
"scoped_type"
],
[
"_reserved_identifier",
"implicit_type"
],
[
"_reserved_identifier",
"from_clause"
],
[
"_reserved_identifier",
"implicit_type",
"var_pattern"
],
[
"_reserved_identifier",
"type_parameter_constraint"
],
[
"_reserved_identifier",
"parameter",
"scoped_type"
],
[
"_reserved_identifier",
"parameter"
],
[
"_simple_name",
"parameter"
],
[
"tuple_element",
"parameter",
"declaration_expression"
],
[
"parameter",
"tuple_element"
],
[
"event_declaration",
"variable_declarator"
],
[
"base_list"
],
[
"using_directive",
"modifier"
],
[
"using_directive"
],
[
"_constructor_declaration_initializer",
"_simple_name"
]
],
"precedences": [
[
{
"type": "SYMBOL",
"name": "_anonymous_object_member_declarator"
},
{
"type": "SYMBOL",
"name": "_simple_name"
}
],
[
{
"type": "SYMBOL",
"name": "block"
},
{
"type": "SYMBOL",
"name": "initializer_expression"
}
]
],
"externals": [
{
"type": "SYMBOL",
"name": "_optional_semi"
},
{
"type": "SYMBOL",
"name": "interpolation_regular_start"
},
{
"type": "SYMBOL",
"name": "interpolation_verbatim_start"
},
{
"type": "SYMBOL",
"name": "interpolation_raw_start"
},
{
"type": "SYMBOL",
"name": "interpolation_start_quote"
},
{
"type": "SYMBOL",
"name": "interpolation_end_quote"
},
{
"type": "SYMBOL",
"name": "interpolation_open_brace"
},
{
"type": "SYMBOL",
"name": "interpolation_close_brace"
},
{
"type": "SYMBOL",
"name": "interpolation_string_content"
},
{
"type": "SYMBOL",
"name": "raw_string_start"
},
{
"type": "SYMBOL",
"name": "raw_string_end"
},
{
"type": "SYMBOL",
"name": "raw_string_content"
}
],
"inline": [
"_namespace_member_declaration",
"_object_creation_type",
"_nullable_base_type",
"_parameter_type_with_modifiers",
"_top_level_item_no_statement"
],
"supertypes": [
"declaration",
"expression",
"non_lvalue_expression",
"lvalue_expression",
"literal",
"statement",
"type",
"type_declaration",
"pattern"
],
"reserved": {}
}