{
"name": "cpp",
"word": "identifier",
"rules": {
"translation_unit": {
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_top_level_item"
}
},
"_top_level_item": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "alone_macro"
},
{
"type": "SYMBOL",
"name": "alone_macro_call"
},
{
"type": "CHOICE",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "function_definition"
},
{
"type": "SYMBOL",
"name": "linkage_specification"
},
{
"type": "SYMBOL",
"name": "declaration"
},
{
"type": "SYMBOL",
"name": "_statement"
},
{
"type": "SYMBOL",
"name": "attributed_statement"
},
{
"type": "SYMBOL",
"name": "type_definition"
},
{
"type": "SYMBOL",
"name": "_empty_declaration"
},
{
"type": "SYMBOL",
"name": "preproc_if"
},
{
"type": "SYMBOL",
"name": "preproc_ifdef"
},
{
"type": "SYMBOL",
"name": "preproc_include"
},
{
"type": "SYMBOL",
"name": "preproc_def"
},
{
"type": "SYMBOL",
"name": "preproc_function_def"
},
{
"type": "SYMBOL",
"name": "preproc_call"
}
]
},
{
"type": "SYMBOL",
"name": "namespace_definition"
},
{
"type": "SYMBOL",
"name": "using_declaration"
},
{
"type": "SYMBOL",
"name": "alias_declaration"
},
{
"type": "SYMBOL",
"name": "static_assert_declaration"
},
{
"type": "SYMBOL",
"name": "template_declaration"
},
{
"type": "SYMBOL",
"name": "template_instantiation"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "constructor_or_destructor_definition"
},
"named": true,
"value": "function_definition"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "operator_cast_definition"
},
"named": true,
"value": "function_definition"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "operator_cast_declaration"
},
"named": true,
"value": "declaration"
}
]
}
]
},
"preproc_include": {
"type": "SEQ",
"members": [
{
"type": "ALIAS",
"content": {
"type": "PATTERN",
"value": "#[ \t]*include"
},
"named": false,
"value": "#include"
},
{
"type": "FIELD",
"name": "path",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "string_literal"
},
{
"type": "SYMBOL",
"name": "system_lib_string"
},
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "preproc_call_expression"
},
"named": true,
"value": "call_expression"
}
]
}
},
{
"type": "STRING",
"value": "\n"
}
]
},
"preproc_def": {
"type": "SEQ",
"members": [
{
"type": "ALIAS",
"content": {
"type": "PATTERN",
"value": "#[ \t]*define"
},
"named": false,
"value": "#define"
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "FIELD",
"name": "value",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "preproc_arg"
},
{
"type": "BLANK"
}
]
}
},
{
"type": "STRING",
"value": "\n"
}
]
},
"preproc_function_def": {
"type": "SEQ",
"members": [
{
"type": "ALIAS",
"content": {
"type": "PATTERN",
"value": "#[ \t]*define"
},
"named": false,
"value": "#define"
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "FIELD",
"name": "parameters",
"content": {
"type": "SYMBOL",
"name": "preproc_params"
}
},
{
"type": "FIELD",
"name": "value",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "preproc_arg"
},
{
"type": "BLANK"
}
]
}
},
{
"type": "STRING",
"value": "\n"
}
]
},
"preproc_params": {
"type": "SEQ",
"members": [
{
"type": "IMMEDIATE_TOKEN",
"content": {
"type": "STRING",
"value": "("
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "STRING",
"value": "..."
}
]
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "STRING",
"value": "..."
}
]
}
]
}
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ")"
}
]
},
"preproc_call": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "directive",
"content": {
"type": "SYMBOL",
"name": "preproc_directive"
}
},
{
"type": "FIELD",
"name": "argument",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "preproc_arg"
},
{
"type": "BLANK"
}
]
}
},
{
"type": "STRING",
"value": "\n"
}
]
},
"preproc_if": {
"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": "STRING",
"value": "\n"
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_top_level_item"
}
},
{
"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_ifdef": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "ALIAS",
"content": {
"type": "PATTERN",
"value": "#[ \t]*ifdef"
},
"named": false,
"value": "#ifdef"
},
{
"type": "ALIAS",
"content": {
"type": "PATTERN",
"value": "#[ \t]*ifndef"
},
"named": false,
"value": "#ifndef"
}
]
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_top_level_item"
}
},
{
"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": "SEQ",
"members": [
{
"type": "ALIAS",
"content": {
"type": "PATTERN",
"value": "#[ \t]*else"
},
"named": false,
"value": "#else"
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_top_level_item"
}
}
]
},
"preproc_elif": {
"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": "STRING",
"value": "\n"
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_top_level_item"
}
},
{
"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_field_declaration_list": {
"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": "STRING",
"value": "\n"
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_field_declaration_list_item"
}
},
{
"type": "FIELD",
"name": "alternative",
"content": {
"type": "CHOICE",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "preproc_else_in_field_declaration_list"
},
"named": true,
"value": "preproc_else"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "preproc_elif_in_field_declaration_list"
},
"named": true,
"value": "preproc_elif"
}
]
},
{
"type": "BLANK"
}
]
}
},
{
"type": "ALIAS",
"content": {
"type": "PATTERN",
"value": "#[ \t]*endif"
},
"named": false,
"value": "#endif"
}
]
},
"preproc_ifdef_in_field_declaration_list": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "ALIAS",
"content": {
"type": "PATTERN",
"value": "#[ \t]*ifdef"
},
"named": false,
"value": "#ifdef"
},
{
"type": "ALIAS",
"content": {
"type": "PATTERN",
"value": "#[ \t]*ifndef"
},
"named": false,
"value": "#ifndef"
}
]
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_field_declaration_list_item"
}
},
{
"type": "FIELD",
"name": "alternative",
"content": {
"type": "CHOICE",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "preproc_else_in_field_declaration_list"
},
"named": true,
"value": "preproc_else"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "preproc_elif_in_field_declaration_list"
},
"named": true,
"value": "preproc_elif"
}
]
},
{
"type": "BLANK"
}
]
}
},
{
"type": "ALIAS",
"content": {
"type": "PATTERN",
"value": "#[ \t]*endif"
},
"named": false,
"value": "#endif"
}
]
},
"preproc_else_in_field_declaration_list": {
"type": "SEQ",
"members": [
{
"type": "ALIAS",
"content": {
"type": "PATTERN",
"value": "#[ \t]*else"
},
"named": false,
"value": "#else"
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_field_declaration_list_item"
}
}
]
},
"preproc_elif_in_field_declaration_list": {
"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": "STRING",
"value": "\n"
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_field_declaration_list_item"
}
},
{
"type": "FIELD",
"name": "alternative",
"content": {
"type": "CHOICE",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "preproc_else_in_field_declaration_list"
},
"named": true,
"value": "preproc_else"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "preproc_elif_in_field_declaration_list"
},
"named": true,
"value": "preproc_elif"
}
]
},
{
"type": "BLANK"
}
]
}
}
]
},
"preproc_directive": {
"type": "PATTERN",
"value": "#[ \\t]*[a-zA-Z]\\w*"
},
"preproc_arg": {
"type": "TOKEN",
"content": {
"type": "PREC",
"value": -1,
"content": {
"type": "REPEAT1",
"content": {
"type": "PATTERN",
"value": ".|\\\\\\r?\\n"
}
}
}
},
"_preproc_expression": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "preproc_call_expression"
},
"named": true,
"value": "call_expression"
},
{
"type": "SYMBOL",
"name": "number_literal"
},
{
"type": "SYMBOL",
"name": "char_literal"
},
{
"type": "SYMBOL",
"name": "preproc_defined"
},
{
"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_defined": {
"type": "CHOICE",
"members": [
{
"type": "PREC",
"value": 14,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "defined"
},
{
"type": "STRING",
"value": "("
},
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "STRING",
"value": ")"
}
]
}
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "defined"
},
{
"type": "SYMBOL",
"name": "identifier"
}
]
}
]
},
"preproc_unary_expression": {
"type": "PREC_LEFT",
"value": 13,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "!"
},
{
"type": "STRING",
"value": "~"
},
{
"type": "STRING",
"value": "-"
},
{
"type": "STRING",
"value": "+"
}
]
}
},
{
"type": "FIELD",
"name": "argument",
"content": {
"type": "SYMBOL",
"name": "_preproc_expression"
}
}
]
}
},
"preproc_call_expression": {
"type": "PREC",
"value": 14,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "function",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "FIELD",
"name": "arguments",
"content": {
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "preproc_argument_list"
},
"named": true,
"value": "argument_list"
}
}
]
}
},
"preproc_argument_list": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_preproc_expression"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "_preproc_expression"
}
]
}
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ")"
}
]
},
"preproc_binary_expression": {
"type": "CHOICE",
"members": [
{
"type": "PREC_LEFT",
"value": 10,
"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": 10,
"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": 11,
"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": 11,
"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": 11,
"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": 1,
"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": 2,
"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": 3,
"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": 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": 6,
"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": 6,
"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": 7,
"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": 7,
"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": 7,
"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": 7,
"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"
}
}
]
}
}
]
},
"function_definition": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "ms_call_modifier"
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "_declaration_specifiers"
},
{
"type": "FIELD",
"name": "declarator",
"content": {
"type": "SYMBOL",
"name": "_declarator"
}
},
{
"type": "FIELD",
"name": "body",
"content": {
"type": "SYMBOL",
"name": "compound_statement"
}
}
]
},
"declaration": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_declaration_specifiers"
},
{
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "declarator",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_declarator"
},
{
"type": "SYMBOL",
"name": "init_declarator"
}
]
}
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "FIELD",
"name": "declarator",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_declarator"
},
{
"type": "SYMBOL",
"name": "init_declarator"
}
]
}
}
]
}
}
]
},
{
"type": "STRING",
"value": ";"
}
]
},
"type_definition": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "typedef"
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "type_qualifier"
}
},
{
"type": "FIELD",
"name": "type",
"content": {
"type": "SYMBOL",
"name": "_type_specifier"
}
},
{
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "declarator",
"content": {
"type": "SYMBOL",
"name": "_type_declarator"
}
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "FIELD",
"name": "declarator",
"content": {
"type": "SYMBOL",
"name": "_type_declarator"
}
}
]
}
}
]
},
{
"type": "STRING",
"value": ";"
}
]
},
"_declaration_modifiers": {
"type": "CHOICE",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "storage_class_specifier"
},
{
"type": "SYMBOL",
"name": "type_qualifier"
},
{
"type": "SYMBOL",
"name": "attribute_specifier"
},
{
"type": "SYMBOL",
"name": "attribute_declaration"
},
{
"type": "SYMBOL",
"name": "ms_declspec_modifier"
}
]
},
{
"type": "SYMBOL",
"name": "virtual_function_specifier"
}
]
},
"_declaration_specifiers": {
"type": "SEQ",
"members": [
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_declaration_modifiers"
}
},
{
"type": "FIELD",
"name": "type",
"content": {
"type": "SYMBOL",
"name": "_type_specifier"
}
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_declaration_modifiers"
}
}
]
},
"linkage_specification": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "extern"
},
{
"type": "FIELD",
"name": "value",
"content": {
"type": "SYMBOL",
"name": "string_literal"
}
},
{
"type": "FIELD",
"name": "body",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "function_definition"
},
{
"type": "SYMBOL",
"name": "declaration"
},
{
"type": "SYMBOL",
"name": "declaration_list"
}
]
}
}
]
},
"attribute_specifier": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "__attribute__"
},
{
"type": "STRING",
"value": "("
},
{
"type": "SYMBOL",
"name": "argument_list"
},
{
"type": "STRING",
"value": ")"
}
]
},
"attribute": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "prefix",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "STRING",
"value": "::"
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "argument_list"
},
{
"type": "BLANK"
}
]
}
]
},
"attribute_declaration": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "[["
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "attribute"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "attribute"
}
]
}
}
]
},
{
"type": "STRING",
"value": "]]"
}
]
},
"ms_declspec_modifier": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "__declspec"
},
{
"type": "STRING",
"value": "("
},
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "STRING",
"value": ")"
}
]
},
"ms_based_modifier": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "__based"
},
{
"type": "SYMBOL",
"name": "argument_list"
}
]
},
"ms_call_modifier": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "__cdecl"
},
{
"type": "STRING",
"value": "__clrcall"
},
{
"type": "STRING",
"value": "__stdcall"
},
{
"type": "STRING",
"value": "__fastcall"
},
{
"type": "STRING",
"value": "__thiscall"
},
{
"type": "STRING",
"value": "__vectorcall"
}
]
},
"ms_restrict_modifier": {
"type": "STRING",
"value": "__restrict"
},
"ms_unsigned_ptr_modifier": {
"type": "STRING",
"value": "__uptr"
},
"ms_signed_ptr_modifier": {
"type": "STRING",
"value": "__sptr"
},
"ms_unaligned_ptr_modifier": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "_unaligned"
},
{
"type": "STRING",
"value": "__unaligned"
}
]
},
"ms_pointer_modifier": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "ms_unaligned_ptr_modifier"
},
{
"type": "SYMBOL",
"name": "ms_restrict_modifier"
},
{
"type": "SYMBOL",
"name": "ms_unsigned_ptr_modifier"
},
{
"type": "SYMBOL",
"name": "ms_signed_ptr_modifier"
}
]
},
"declaration_list": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "{"
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_top_level_item"
}
},
{
"type": "STRING",
"value": "}"
}
]
},
"_declarator": {
"type": "CHOICE",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "attributed_declarator"
},
{
"type": "SYMBOL",
"name": "pointer_declarator"
},
{
"type": "SYMBOL",
"name": "function_declarator"
},
{
"type": "SYMBOL",
"name": "array_declarator"
},
{
"type": "SYMBOL",
"name": "parenthesized_declarator"
},
{
"type": "SYMBOL",
"name": "identifier"
}
]
},
{
"type": "SYMBOL",
"name": "reference_declarator"
},
{
"type": "SYMBOL",
"name": "qualified_identifier"
},
{
"type": "SYMBOL",
"name": "template_function"
},
{
"type": "SYMBOL",
"name": "operator_name"
},
{
"type": "SYMBOL",
"name": "destructor_name"
},
{
"type": "SYMBOL",
"name": "structured_binding_declarator"
}
]
},
"_field_declarator": {
"type": "CHOICE",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "attributed_field_declarator"
},
"named": true,
"value": "attributed_declarator"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "pointer_field_declarator"
},
"named": true,
"value": "pointer_declarator"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "function_field_declarator"
},
"named": true,
"value": "function_declarator"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "array_field_declarator"
},
"named": true,
"value": "array_declarator"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "parenthesized_field_declarator"
},
"named": true,
"value": "parenthesized_declarator"
},
{
"type": "SYMBOL",
"name": "_field_identifier"
}
]
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "reference_field_declarator"
},
"named": true,
"value": "reference_declarator"
},
{
"type": "SYMBOL",
"name": "template_method"
},
{
"type": "SYMBOL",
"name": "operator_name"
}
]
},
"_type_declarator": {
"type": "CHOICE",
"members": [
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "attributed_type_declarator"
},
"named": true,
"value": "attributed_declarator"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "pointer_type_declarator"
},
"named": true,
"value": "pointer_declarator"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "function_type_declarator"
},
"named": true,
"value": "function_declarator"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "array_type_declarator"
},
"named": true,
"value": "array_declarator"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "parenthesized_type_declarator"
},
"named": true,
"value": "parenthesized_declarator"
},
{
"type": "SYMBOL",
"name": "_type_identifier"
}
]
},
"_abstract_declarator": {
"type": "CHOICE",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "abstract_pointer_declarator"
},
{
"type": "SYMBOL",
"name": "abstract_function_declarator"
},
{
"type": "SYMBOL",
"name": "abstract_array_declarator"
},
{
"type": "SYMBOL",
"name": "abstract_parenthesized_declarator"
}
]
},
{
"type": "SYMBOL",
"name": "abstract_reference_declarator"
}
]
},
"parenthesized_declarator": {
"type": "PREC_DYNAMIC",
"value": -10,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "SYMBOL",
"name": "_declarator"
},
{
"type": "STRING",
"value": ")"
}
]
}
},
"parenthesized_field_declarator": {
"type": "PREC_DYNAMIC",
"value": -10,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "SYMBOL",
"name": "_field_declarator"
},
{
"type": "STRING",
"value": ")"
}
]
}
},
"parenthesized_type_declarator": {
"type": "PREC_DYNAMIC",
"value": -10,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "SYMBOL",
"name": "_type_declarator"
},
{
"type": "STRING",
"value": ")"
}
]
}
},
"abstract_parenthesized_declarator": {
"type": "PREC",
"value": 1,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "SYMBOL",
"name": "_abstract_declarator"
},
{
"type": "STRING",
"value": ")"
}
]
}
},
"attributed_declarator": {
"type": "PREC_RIGHT",
"value": 0,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_declarator"
},
{
"type": "REPEAT1",
"content": {
"type": "SYMBOL",
"name": "attribute_declaration"
}
}
]
}
},
"attributed_field_declarator": {
"type": "PREC_RIGHT",
"value": 0,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_field_declarator"
},
{
"type": "REPEAT1",
"content": {
"type": "SYMBOL",
"name": "attribute_declaration"
}
}
]
}
},
"attributed_type_declarator": {
"type": "PREC_RIGHT",
"value": 0,
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_type_declarator"
},
{
"type": "REPEAT1",
"content": {
"type": "SYMBOL",
"name": "attribute_declaration"
}
}
]
}
},
"pointer_declarator": {
"type": "PREC_DYNAMIC",
"value": 1,
"content": {
"type": "PREC_RIGHT",
"value": 0,
"content": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "ms_based_modifier"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "*"
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "ms_pointer_modifier"
}
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "type_qualifier"
}
},
{
"type": "FIELD",
"name": "declarator",
"content": {
"type": "SYMBOL",
"name": "_declarator"
}
}
]
}
}
},
"pointer_field_declarator": {
"type": "PREC_DYNAMIC",
"value": 1,
"content": {
"type": "PREC_RIGHT",
"value": 0,
"content": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "ms_based_modifier"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "*"
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "ms_pointer_modifier"
}
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "type_qualifier"
}
},
{
"type": "FIELD",
"name": "declarator",
"content": {
"type": "SYMBOL",
"name": "_field_declarator"
}
}
]
}
}
},
"pointer_type_declarator": {
"type": "PREC_DYNAMIC",
"value": 1,
"content": {
"type": "PREC_RIGHT",
"value": 0,
"content": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "ms_based_modifier"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "*"
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "ms_pointer_modifier"
}
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "type_qualifier"
}
},
{
"type": "FIELD",
"name": "declarator",
"content": {
"type": "SYMBOL",
"name": "_type_declarator"
}
}
]
}
}
},
"abstract_pointer_declarator": {
"type": "PREC_DYNAMIC",
"value": 1,
"content": {
"type": "PREC_RIGHT",
"value": 0,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "*"
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "type_qualifier"
}
},
{
"type": "FIELD",
"name": "declarator",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_abstract_declarator"
},
{
"type": "BLANK"
}
]
}
}
]
}
}
},
"function_declarator": {
"type": "PREC_DYNAMIC",
"value": 1,
"content": {
"type": "SEQ",
"members": [
{
"type": "PREC",
"value": 1,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "declarator",
"content": {
"type": "SYMBOL",
"name": "_declarator"
}
},
{
"type": "FIELD",
"name": "parameters",
"content": {
"type": "SYMBOL",
"name": "parameter_list"
}
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "attribute_specifier"
}
}
]
}
},
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "type_qualifier"
},
{
"type": "SYMBOL",
"name": "ref_qualifier"
},
{
"type": "SYMBOL",
"name": "virtual_specifier"
},
{
"type": "SYMBOL",
"name": "noexcept"
},
{
"type": "SYMBOL",
"name": "throw_specifier"
},
{
"type": "SYMBOL",
"name": "trailing_return_type"
}
]
}
}
]
}
},
"function_field_declarator": {
"type": "PREC_DYNAMIC",
"value": 1,
"content": {
"type": "SEQ",
"members": [
{
"type": "PREC",
"value": 1,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "declarator",
"content": {
"type": "SYMBOL",
"name": "_field_declarator"
}
},
{
"type": "FIELD",
"name": "parameters",
"content": {
"type": "SYMBOL",
"name": "parameter_list"
}
}
]
}
},
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "type_qualifier"
},
{
"type": "SYMBOL",
"name": "ref_qualifier"
},
{
"type": "SYMBOL",
"name": "virtual_specifier"
},
{
"type": "SYMBOL",
"name": "noexcept"
},
{
"type": "SYMBOL",
"name": "throw_specifier"
},
{
"type": "SYMBOL",
"name": "trailing_return_type"
}
]
}
}
]
}
},
"function_type_declarator": {
"type": "PREC",
"value": 1,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "declarator",
"content": {
"type": "SYMBOL",
"name": "_type_declarator"
}
},
{
"type": "FIELD",
"name": "parameters",
"content": {
"type": "SYMBOL",
"name": "parameter_list"
}
}
]
}
},
"abstract_function_declarator": {
"type": "PREC_RIGHT",
"value": 0,
"content": {
"type": "SEQ",
"members": [
{
"type": "PREC",
"value": 1,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "declarator",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_abstract_declarator"
},
{
"type": "BLANK"
}
]
}
},
{
"type": "FIELD",
"name": "parameters",
"content": {
"type": "SYMBOL",
"name": "parameter_list"
}
}
]
}
},
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "type_qualifier"
},
{
"type": "SYMBOL",
"name": "ref_qualifier"
},
{
"type": "SYMBOL",
"name": "noexcept"
},
{
"type": "SYMBOL",
"name": "throw_specifier"
}
]
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "trailing_return_type"
},
{
"type": "BLANK"
}
]
}
]
}
},
"array_declarator": {
"type": "PREC",
"value": 1,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "declarator",
"content": {
"type": "SYMBOL",
"name": "_declarator"
}
},
{
"type": "STRING",
"value": "["
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "type_qualifier"
}
},
{
"type": "FIELD",
"name": "size",
"content": {
"type": "CHOICE",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "STRING",
"value": "*"
}
]
},
{
"type": "BLANK"
}
]
}
},
{
"type": "STRING",
"value": "]"
}
]
}
},
"array_field_declarator": {
"type": "PREC",
"value": 1,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "declarator",
"content": {
"type": "SYMBOL",
"name": "_field_declarator"
}
},
{
"type": "STRING",
"value": "["
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "type_qualifier"
}
},
{
"type": "FIELD",
"name": "size",
"content": {
"type": "CHOICE",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "STRING",
"value": "*"
}
]
},
{
"type": "BLANK"
}
]
}
},
{
"type": "STRING",
"value": "]"
}
]
}
},
"array_type_declarator": {
"type": "PREC",
"value": 1,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "declarator",
"content": {
"type": "SYMBOL",
"name": "_type_declarator"
}
},
{
"type": "STRING",
"value": "["
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "type_qualifier"
}
},
{
"type": "FIELD",
"name": "size",
"content": {
"type": "CHOICE",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "STRING",
"value": "*"
}
]
},
{
"type": "BLANK"
}
]
}
},
{
"type": "STRING",
"value": "]"
}
]
}
},
"abstract_array_declarator": {
"type": "PREC",
"value": 1,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "declarator",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_abstract_declarator"
},
{
"type": "BLANK"
}
]
}
},
{
"type": "STRING",
"value": "["
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "type_qualifier"
}
},
{
"type": "FIELD",
"name": "size",
"content": {
"type": "CHOICE",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "STRING",
"value": "*"
}
]
},
{
"type": "BLANK"
}
]
}
},
{
"type": "STRING",
"value": "]"
}
]
}
},
"init_declarator": {
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "declarator",
"content": {
"type": "SYMBOL",
"name": "_declarator"
}
},
{
"type": "STRING",
"value": "="
},
{
"type": "FIELD",
"name": "value",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "initializer_list"
},
{
"type": "SYMBOL",
"name": "_expression"
}
]
}
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "declarator",
"content": {
"type": "SYMBOL",
"name": "_declarator"
}
},
{
"type": "FIELD",
"name": "value",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "argument_list"
},
{
"type": "SYMBOL",
"name": "initializer_list"
}
]
}
}
]
}
]
},
"compound_statement": {
"type": "PREC",
"value": -1,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "{"
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_top_level_item"
}
},
{
"type": "STRING",
"value": "}"
}
]
}
},
"storage_class_specifier": {
"type": "CHOICE",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "extern"
},
{
"type": "STRING",
"value": "static"
},
{
"type": "STRING",
"value": "register"
},
{
"type": "STRING",
"value": "inline"
},
{
"type": "STRING",
"value": "thread_local"
}
]
},
{
"type": "SYMBOL",
"name": "macro_annotation"
}
]
},
"type_qualifier": {
"type": "CHOICE",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "const"
},
{
"type": "STRING",
"value": "volatile"
},
{
"type": "STRING",
"value": "restrict"
},
{
"type": "STRING",
"value": "_Atomic"
}
]
},
{
"type": "STRING",
"value": "mutable"
},
{
"type": "STRING",
"value": "constexpr"
}
]
},
"_type_specifier": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "struct_specifier"
},
{
"type": "SYMBOL",
"name": "union_specifier"
},
{
"type": "SYMBOL",
"name": "enum_specifier"
},
{
"type": "SYMBOL",
"name": "class_specifier"
},
{
"type": "SYMBOL",
"name": "sized_type_specifier"
},
{
"type": "SYMBOL",
"name": "primitive_type"
},
{
"type": "SYMBOL",
"name": "template_type"
},
{
"type": "SYMBOL",
"name": "auto"
},
{
"type": "SYMBOL",
"name": "dependent_type"
},
{
"type": "SYMBOL",
"name": "decltype"
},
{
"type": "PREC_RIGHT",
"value": 0,
"content": {
"type": "CHOICE",
"members": [
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "qualified_type_identifier"
},
"named": true,
"value": "qualified_identifier"
},
{
"type": "SYMBOL",
"name": "_type_identifier"
}
]
}
}
]
},
"sized_type_specifier": {
"type": "SEQ",
"members": [
{
"type": "REPEAT1",
"content": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "signed"
},
{
"type": "STRING",
"value": "unsigned"
},
{
"type": "STRING",
"value": "long"
},
{
"type": "STRING",
"value": "short"
}
]
}
},
{
"type": "FIELD",
"name": "type",
"content": {
"type": "CHOICE",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "PREC_DYNAMIC",
"value": -1,
"content": {
"type": "SYMBOL",
"name": "_type_identifier"
}
},
{
"type": "SYMBOL",
"name": "primitive_type"
}
]
},
{
"type": "BLANK"
}
]
}
}
]
},
"primitive_type": {
"type": "TOKEN",
"content": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "APIENTRY"
},
{
"type": "STRING",
"value": "ATOM"
},
{
"type": "STRING",
"value": "BOOL"
},
{
"type": "STRING",
"value": "BOOLEAN"
},
{
"type": "STRING",
"value": "BYTE"
},
{
"type": "STRING",
"value": "CCHAR"
},
{
"type": "STRING",
"value": "CHAR"
},
{
"type": "STRING",
"value": "COLORREF"
},
{
"type": "STRING",
"value": "DWORD"
},
{
"type": "STRING",
"value": "DWORDLONG"
},
{
"type": "STRING",
"value": "DWORD_PTR"
},
{
"type": "STRING",
"value": "DWORD32"
},
{
"type": "STRING",
"value": "DWORD64"
},
{
"type": "STRING",
"value": "FLOAT"
},
{
"type": "STRING",
"value": "HACCEL"
},
{
"type": "STRING",
"value": "HALF_PTR"
},
{
"type": "STRING",
"value": "HANDLE"
},
{
"type": "STRING",
"value": "HBITMAP"
},
{
"type": "STRING",
"value": "HBRUSH"
},
{
"type": "STRING",
"value": "HCOLORSPACE"
},
{
"type": "STRING",
"value": "HCONV"
},
{
"type": "STRING",
"value": "HCONVLIST"
},
{
"type": "STRING",
"value": "HCURSOR"
},
{
"type": "STRING",
"value": "HDC"
},
{
"type": "STRING",
"value": "HDDEDATA"
},
{
"type": "STRING",
"value": "HDESK"
},
{
"type": "STRING",
"value": "HDROP"
},
{
"type": "STRING",
"value": "HDWP"
},
{
"type": "STRING",
"value": "HENHMETAFILE"
},
{
"type": "STRING",
"value": "HFILE"
},
{
"type": "STRING",
"value": "HFONT"
},
{
"type": "STRING",
"value": "HGDIOBJ"
},
{
"type": "STRING",
"value": "HGLOBAL"
},
{
"type": "STRING",
"value": "HHOOK"
},
{
"type": "STRING",
"value": "HICON"
},
{
"type": "STRING",
"value": "HINSTANCE"
},
{
"type": "STRING",
"value": "HKEY"
},
{
"type": "STRING",
"value": "HKL"
},
{
"type": "STRING",
"value": "HLOCAL"
},
{
"type": "STRING",
"value": "HMENU"
},
{
"type": "STRING",
"value": "HMETAFILE"
},
{
"type": "STRING",
"value": "HMODULE"
},
{
"type": "STRING",
"value": "HMONITOR"
},
{
"type": "STRING",
"value": "HPALETTE"
},
{
"type": "STRING",
"value": "HPEN"
},
{
"type": "STRING",
"value": "HRESULT"
},
{
"type": "STRING",
"value": "HRGN"
},
{
"type": "STRING",
"value": "HRSRC"
},
{
"type": "STRING",
"value": "HSZ"
},
{
"type": "STRING",
"value": "HWINSTA"
},
{
"type": "STRING",
"value": "HWND"
},
{
"type": "STRING",
"value": "INT"
},
{
"type": "STRING",
"value": "INT_PTR"
},
{
"type": "STRING",
"value": "INT8"
},
{
"type": "STRING",
"value": "INT16"
},
{
"type": "STRING",
"value": "INT32"
},
{
"type": "STRING",
"value": "INT64"
},
{
"type": "STRING",
"value": "LANGID"
},
{
"type": "STRING",
"value": "LCID"
},
{
"type": "STRING",
"value": "LCTYPE"
},
{
"type": "STRING",
"value": "LGRPID"
},
{
"type": "STRING",
"value": "LONG"
},
{
"type": "STRING",
"value": "LONGLONG"
},
{
"type": "STRING",
"value": "LONG_PTR"
},
{
"type": "STRING",
"value": "LONG32"
},
{
"type": "STRING",
"value": "LONG64"
},
{
"type": "STRING",
"value": "LPARAM"
},
{
"type": "STRING",
"value": "LPBOOL"
},
{
"type": "STRING",
"value": "LPBYTE"
},
{
"type": "STRING",
"value": "LPCOLORREF"
},
{
"type": "STRING",
"value": "LPCSTR"
},
{
"type": "STRING",
"value": "LPCVOID"
},
{
"type": "STRING",
"value": "LPCWSTR"
},
{
"type": "STRING",
"value": "LPDWORD"
},
{
"type": "STRING",
"value": "LPHANDLE"
},
{
"type": "STRING",
"value": "LPINT"
},
{
"type": "STRING",
"value": "LPLONG"
},
{
"type": "STRING",
"value": "LPSTR"
},
{
"type": "STRING",
"value": "LPTSTR"
},
{
"type": "STRING",
"value": "LPWOID"
},
{
"type": "STRING",
"value": "LPWORD"
},
{
"type": "STRING",
"value": "LPWSTR"
},
{
"type": "STRING",
"value": "LRESULT"
},
{
"type": "STRING",
"value": "PBOOL"
},
{
"type": "STRING",
"value": "PBOOLEAN"
},
{
"type": "STRING",
"value": "PBYTE"
},
{
"type": "STRING",
"value": "PCHAR"
},
{
"type": "STRING",
"value": "PCSTR"
},
{
"type": "STRING",
"value": "PCTSTR"
},
{
"type": "STRING",
"value": "PCWSTR"
},
{
"type": "STRING",
"value": "PDWORD"
},
{
"type": "STRING",
"value": "PDWORDLONG"
},
{
"type": "STRING",
"value": "PDWORD_PTR"
},
{
"type": "STRING",
"value": "PDWORD32"
},
{
"type": "STRING",
"value": "PDWORD64"
},
{
"type": "STRING",
"value": "PFLOAT"
},
{
"type": "STRING",
"value": "PHALF_PTR"
},
{
"type": "STRING",
"value": "PHANDLE"
},
{
"type": "STRING",
"value": "PHKEY"
},
{
"type": "STRING",
"value": "PINT"
},
{
"type": "STRING",
"value": "PINT_PTR"
},
{
"type": "STRING",
"value": "PINT8"
},
{
"type": "STRING",
"value": "PINT16"
},
{
"type": "STRING",
"value": "PINT32"
},
{
"type": "STRING",
"value": "PINT64"
},
{
"type": "STRING",
"value": "PLCID"
},
{
"type": "STRING",
"value": "PLONG"
},
{
"type": "STRING",
"value": "PLONGLONG"
},
{
"type": "STRING",
"value": "PLONG32"
},
{
"type": "STRING",
"value": "PLONG64"
},
{
"type": "STRING",
"value": "POINTER_32"
},
{
"type": "STRING",
"value": "POINTER_64"
},
{
"type": "STRING",
"value": "POINTER_SIGNED"
},
{
"type": "STRING",
"value": "POINTER_UNSIGNED"
},
{
"type": "STRING",
"value": "PSHORT"
},
{
"type": "STRING",
"value": "PSIZE_T"
},
{
"type": "STRING",
"value": "PSSIZE_T"
},
{
"type": "STRING",
"value": "PSTR"
},
{
"type": "STRING",
"value": "PTBYTE"
},
{
"type": "STRING",
"value": "PTCHAR"
},
{
"type": "STRING",
"value": "PTSTR"
},
{
"type": "STRING",
"value": "PUCHAR"
},
{
"type": "STRING",
"value": "PUHALF_PTR"
},
{
"type": "STRING",
"value": "PUINT"
},
{
"type": "STRING",
"value": "PUINT_PTR"
},
{
"type": "STRING",
"value": "PUINT8"
},
{
"type": "STRING",
"value": "PUINT16"
},
{
"type": "STRING",
"value": "PUINT32"
},
{
"type": "STRING",
"value": "PUINT64"
},
{
"type": "STRING",
"value": "PULONG"
},
{
"type": "STRING",
"value": "PULONGLONG"
},
{
"type": "STRING",
"value": "PULONG32"
},
{
"type": "STRING",
"value": "PULONG64"
},
{
"type": "STRING",
"value": "PUSHORT"
},
{
"type": "STRING",
"value": "PVOID"
},
{
"type": "STRING",
"value": "PWCHAR"
},
{
"type": "STRING",
"value": "PWORD"
},
{
"type": "STRING",
"value": "PWSTR"
},
{
"type": "STRING",
"value": "QWORD"
},
{
"type": "STRING",
"value": "SC_HANDLE"
},
{
"type": "STRING",
"value": "SC_LOCK"
},
{
"type": "STRING",
"value": "SERVICE_STATUS_HANDLE"
},
{
"type": "STRING",
"value": "SHORT"
},
{
"type": "STRING",
"value": "SIZE_T"
},
{
"type": "STRING",
"value": "SSIZE_T"
},
{
"type": "STRING",
"value": "TBYTE"
},
{
"type": "STRING",
"value": "TCHAR"
},
{
"type": "STRING",
"value": "UCHAR"
},
{
"type": "STRING",
"value": "UHALF_PTR"
},
{
"type": "STRING",
"value": "UINT"
},
{
"type": "STRING",
"value": "UINT_PTR"
},
{
"type": "STRING",
"value": "UINT8"
},
{
"type": "STRING",
"value": "UINT16"
},
{
"type": "STRING",
"value": "UINT32"
},
{
"type": "STRING",
"value": "UINT64"
},
{
"type": "STRING",
"value": "ULONG"
},
{
"type": "STRING",
"value": "ULONGLONG"
},
{
"type": "STRING",
"value": "ULONG_PTR"
},
{
"type": "STRING",
"value": "ULONG32"
},
{
"type": "STRING",
"value": "ULONG64"
},
{
"type": "STRING",
"value": "UNICODE_STRING"
},
{
"type": "STRING",
"value": "USHORT"
},
{
"type": "STRING",
"value": "USN"
},
{
"type": "STRING",
"value": "VOID"
},
{
"type": "STRING",
"value": "WCHAR"
},
{
"type": "STRING",
"value": "WORD"
},
{
"type": "STRING",
"value": "WPARAM"
},
{
"type": "STRING",
"value": "bool"
},
{
"type": "STRING",
"value": "char"
},
{
"type": "STRING",
"value": "int"
},
{
"type": "STRING",
"value": "float"
},
{
"type": "STRING",
"value": "double"
},
{
"type": "STRING",
"value": "void"
},
{
"type": "STRING",
"value": "size_t"
},
{
"type": "STRING",
"value": "ssize_t"
},
{
"type": "STRING",
"value": "intptr_t"
},
{
"type": "STRING",
"value": "uintptr_t"
},
{
"type": "STRING",
"value": "charptr_t"
},
{
"type": "STRING",
"value": "intmax_t"
},
{
"type": "STRING",
"value": "intptr_t"
},
{
"type": "STRING",
"value": "uintmax_t"
},
{
"type": "STRING",
"value": "uintptr_t"
},
{
"type": "STRING",
"value": "ptrdiff_t"
},
{
"type": "STRING",
"value": "max_align_t"
},
{
"type": "STRING",
"value": "wchar_t"
},
{
"type": "STRING",
"value": "sig_atomic_t"
},
{
"type": "STRING",
"value": "int8_t"
},
{
"type": "STRING",
"value": "int16_t"
},
{
"type": "STRING",
"value": "int32_t"
},
{
"type": "STRING",
"value": "int64_t"
},
{
"type": "STRING",
"value": "uint8_t"
},
{
"type": "STRING",
"value": "uint16_t"
},
{
"type": "STRING",
"value": "uint32_t"
},
{
"type": "STRING",
"value": "uint64_t"
},
{
"type": "STRING",
"value": "char8_t"
},
{
"type": "STRING",
"value": "char16_t"
},
{
"type": "STRING",
"value": "char32_t"
},
{
"type": "STRING",
"value": "char64_t"
},
{
"type": "STRING",
"value": "int_fast8_t"
},
{
"type": "STRING",
"value": "int_fast16_t"
},
{
"type": "STRING",
"value": "int_fast32_t"
},
{
"type": "STRING",
"value": "int_fast64_t"
},
{
"type": "STRING",
"value": "int_least8_t"
},
{
"type": "STRING",
"value": "int_least16_t"
},
{
"type": "STRING",
"value": "int_least32_t"
},
{
"type": "STRING",
"value": "int_least64_t"
},
{
"type": "STRING",
"value": "uint_fast8_t"
},
{
"type": "STRING",
"value": "uint_fast16_t"
},
{
"type": "STRING",
"value": "uint_fast32_t"
},
{
"type": "STRING",
"value": "uint_fast64_t"
},
{
"type": "STRING",
"value": "uint_least8_t"
},
{
"type": "STRING",
"value": "uint_least16_t"
},
{
"type": "STRING",
"value": "uint_least32_t"
},
{
"type": "STRING",
"value": "uint_least64_t"
}
]
}
},
"enum_specifier": {
"type": "PREC_LEFT",
"value": 0,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "enum"
},
{
"type": "CHOICE",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "class"
},
{
"type": "STRING",
"value": "struct"
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "_class_name"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_enum_base_clause"
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "body",
"content": {
"type": "SYMBOL",
"name": "enumerator_list"
}
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "FIELD",
"name": "body",
"content": {
"type": "SYMBOL",
"name": "enumerator_list"
}
}
]
}
]
}
},
"enumerator_list": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "{"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "enumerator"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "enumerator"
}
]
}
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "}"
}
]
},
"struct_specifier": {
"type": "PREC_RIGHT",
"value": 0,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "struct"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "macro_annotation"
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "_class_name"
}
},
{
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "_class_name"
}
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "virtual_specifier"
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "base_class_clause"
},
{
"type": "BLANK"
}
]
},
{
"type": "FIELD",
"name": "body",
"content": {
"type": "SYMBOL",
"name": "field_declaration_list"
}
}
]
}
]
}
]
}
},
"union_specifier": {
"type": "PREC_RIGHT",
"value": 0,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "union"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "ms_declspec_modifier"
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "_class_name"
}
},
{
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "_class_name"
}
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "virtual_specifier"
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "base_class_clause"
},
{
"type": "BLANK"
}
]
},
{
"type": "FIELD",
"name": "body",
"content": {
"type": "SYMBOL",
"name": "field_declaration_list"
}
}
]
}
]
}
]
}
},
"field_declaration_list": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "{"
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_field_declaration_list_item"
}
},
{
"type": "STRING",
"value": "}"
}
]
},
"_field_declaration_list_item": {
"type": "CHOICE",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "field_declaration"
},
{
"type": "SYMBOL",
"name": "preproc_def"
},
{
"type": "SYMBOL",
"name": "preproc_function_def"
},
{
"type": "SYMBOL",
"name": "preproc_call"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "preproc_if_in_field_declaration_list"
},
"named": true,
"value": "preproc_if"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "preproc_ifdef_in_field_declaration_list"
},
"named": true,
"value": "preproc_ifdef"
}
]
},
{
"type": "SYMBOL",
"name": "template_declaration"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "inline_method_definition"
},
"named": true,
"value": "function_definition"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "constructor_or_destructor_definition"
},
"named": true,
"value": "function_definition"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "constructor_or_destructor_declaration"
},
"named": true,
"value": "declaration"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "operator_cast_definition"
},
"named": true,
"value": "function_definition"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "operator_cast_declaration"
},
"named": true,
"value": "declaration"
},
{
"type": "SYMBOL",
"name": "friend_declaration"
},
{
"type": "SYMBOL",
"name": "access_specifier"
},
{
"type": "SYMBOL",
"name": "alias_declaration"
},
{
"type": "SYMBOL",
"name": "using_declaration"
},
{
"type": "SYMBOL",
"name": "type_definition"
},
{
"type": "SYMBOL",
"name": "static_assert_declaration"
}
]
},
{
"type": "SYMBOL",
"name": "macro_statement"
}
]
},
"field_declaration": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_declaration_specifiers"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "declarator",
"content": {
"type": "SYMBOL",
"name": "_field_declarator"
}
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "FIELD",
"name": "declarator",
"content": {
"type": "SYMBOL",
"name": "_field_declarator"
}
}
]
}
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "bitfield_clause"
},
{
"type": "FIELD",
"name": "default_value",
"content": {
"type": "SYMBOL",
"name": "initializer_list"
}
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "="
},
{
"type": "FIELD",
"name": "default_value",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "SYMBOL",
"name": "initializer_list"
}
]
}
}
]
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ";"
}
]
},
"bitfield_clause": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ":"
},
{
"type": "SYMBOL",
"name": "_expression"
}
]
},
"enumerator": {
"type": "SEQ",
"members": [
{
"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"
}
]
}
]
},
"variadic_parameter": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "..."
}
]
},
"parameter_list": {
"type": "SEQ",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "parameter_declaration"
},
{
"type": "SYMBOL",
"name": "optional_parameter_declaration"
},
{
"type": "SYMBOL",
"name": "variadic_parameter_declaration"
},
{
"type": "STRING",
"value": "..."
}
]
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "parameter_declaration"
},
{
"type": "SYMBOL",
"name": "optional_parameter_declaration"
},
{
"type": "SYMBOL",
"name": "variadic_parameter_declaration"
},
{
"type": "STRING",
"value": "..."
}
]
}
]
}
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ")"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "macro_annotation"
},
{
"type": "BLANK"
}
]
}
]
},
"parameter_declaration": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_declaration_specifiers"
},
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "declarator",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_declarator"
},
{
"type": "SYMBOL",
"name": "_abstract_declarator"
}
]
}
},
{
"type": "BLANK"
}
]
}
]
},
"attributed_statement": {
"type": "SEQ",
"members": [
{
"type": "REPEAT1",
"content": {
"type": "SYMBOL",
"name": "attribute_declaration"
}
},
{
"type": "SYMBOL",
"name": "_statement"
}
]
},
"_statement": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "case_statement"
},
{
"type": "SYMBOL",
"name": "_non_case_statement"
}
]
},
"_non_case_statement": {
"type": "CHOICE",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "attributed_statement"
},
{
"type": "SYMBOL",
"name": "labeled_statement"
},
{
"type": "SYMBOL",
"name": "compound_statement"
},
{
"type": "SYMBOL",
"name": "expression_statement"
},
{
"type": "SYMBOL",
"name": "if_statement"
},
{
"type": "SYMBOL",
"name": "switch_statement"
},
{
"type": "SYMBOL",
"name": "do_statement"
},
{
"type": "SYMBOL",
"name": "while_statement"
},
{
"type": "SYMBOL",
"name": "for_statement"
},
{
"type": "SYMBOL",
"name": "return_statement"
},
{
"type": "SYMBOL",
"name": "break_statement"
},
{
"type": "SYMBOL",
"name": "continue_statement"
},
{
"type": "SYMBOL",
"name": "goto_statement"
}
]
},
{
"type": "SYMBOL",
"name": "co_return_statement"
},
{
"type": "SYMBOL",
"name": "co_yield_statement"
},
{
"type": "SYMBOL",
"name": "for_range_loop"
},
{
"type": "SYMBOL",
"name": "try_statement"
},
{
"type": "SYMBOL",
"name": "throw_statement"
}
]
},
"labeled_statement": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "label",
"content": {
"type": "SYMBOL",
"name": "_statement_identifier"
}
},
{
"type": "STRING",
"value": ":"
},
{
"type": "SYMBOL",
"name": "_statement"
}
]
},
"expression_statement": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "SYMBOL",
"name": "comma_expression"
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ";"
}
]
},
"if_statement": {
"type": "PREC_RIGHT",
"value": 0,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "if"
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "constexpr"
},
{
"type": "BLANK"
}
]
},
{
"type": "FIELD",
"name": "condition",
"content": {
"type": "SYMBOL",
"name": "condition_clause"
}
},
{
"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"
}
]
}
]
}
},
"switch_statement": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "switch"
},
{
"type": "FIELD",
"name": "condition",
"content": {
"type": "SYMBOL",
"name": "condition_clause"
}
},
{
"type": "FIELD",
"name": "body",
"content": {
"type": "SYMBOL",
"name": "compound_statement"
}
}
]
},
"case_statement": {
"type": "PREC_RIGHT",
"value": 0,
"content": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "case"
},
{
"type": "FIELD",
"name": "value",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
}
]
},
{
"type": "STRING",
"value": "default"
}
]
},
{
"type": "STRING",
"value": ":"
},
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_non_case_statement"
},
{
"type": "SYMBOL",
"name": "declaration"
},
{
"type": "SYMBOL",
"name": "type_definition"
}
]
}
}
]
}
},
"while_statement": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "while"
},
{
"type": "FIELD",
"name": "condition",
"content": {
"type": "SYMBOL",
"name": "condition_clause"
}
},
{
"type": "FIELD",
"name": "body",
"content": {
"type": "SYMBOL",
"name": "_statement"
}
}
]
},
"do_statement": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "do"
},
{
"type": "FIELD",
"name": "body",
"content": {
"type": "SYMBOL",
"name": "_statement"
}
},
{
"type": "STRING",
"value": "while"
},
{
"type": "FIELD",
"name": "condition",
"content": {
"type": "SYMBOL",
"name": "parenthesized_expression"
}
},
{
"type": "STRING",
"value": ";"
}
]
},
"for_statement": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "for"
},
{
"type": "STRING",
"value": "("
},
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "initializer",
"content": {
"type": "SYMBOL",
"name": "declaration"
}
},
{
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "initializer",
"content": {
"type": "CHOICE",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "SYMBOL",
"name": "comma_expression"
}
]
},
{
"type": "BLANK"
}
]
}
},
{
"type": "STRING",
"value": ";"
}
]
}
]
},
{
"type": "FIELD",
"name": "condition",
"content": {
"type": "CHOICE",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "SYMBOL",
"name": "comma_expression"
}
]
},
{
"type": "BLANK"
}
]
}
},
{
"type": "STRING",
"value": ";"
},
{
"type": "FIELD",
"name": "update",
"content": {
"type": "CHOICE",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "SYMBOL",
"name": "comma_expression"
}
]
},
{
"type": "BLANK"
}
]
}
},
{
"type": "STRING",
"value": ")"
},
{
"type": "FIELD",
"name": "body",
"content": {
"type": "SYMBOL",
"name": "_statement"
}
}
]
},
"return_statement": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "return"
},
{
"type": "CHOICE",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "SYMBOL",
"name": "comma_expression"
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ";"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "return"
},
{
"type": "SYMBOL",
"name": "initializer_list"
},
{
"type": "STRING",
"value": ";"
}
]
}
]
}
]
},
"break_statement": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "break"
},
{
"type": "STRING",
"value": ";"
}
]
},
"continue_statement": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "continue"
},
{
"type": "STRING",
"value": ";"
}
]
},
"goto_statement": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "goto"
},
{
"type": "FIELD",
"name": "label",
"content": {
"type": "SYMBOL",
"name": "_statement_identifier"
}
},
{
"type": "STRING",
"value": ";"
}
]
},
"_expression": {
"type": "CHOICE",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "conditional_expression"
},
{
"type": "SYMBOL",
"name": "assignment_expression"
},
{
"type": "SYMBOL",
"name": "binary_expression"
},
{
"type": "SYMBOL",
"name": "unary_expression"
},
{
"type": "SYMBOL",
"name": "update_expression"
},
{
"type": "SYMBOL",
"name": "cast_expression"
},
{
"type": "SYMBOL",
"name": "pointer_expression"
},
{
"type": "SYMBOL",
"name": "sizeof_expression"
},
{
"type": "SYMBOL",
"name": "subscript_expression"
},
{
"type": "SYMBOL",
"name": "call_expression"
},
{
"type": "SYMBOL",
"name": "field_expression"
},
{
"type": "SYMBOL",
"name": "compound_literal_expression"
},
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "SYMBOL",
"name": "number_literal"
},
{
"type": "SYMBOL",
"name": "string_literal"
},
{
"type": "SYMBOL",
"name": "true"
},
{
"type": "SYMBOL",
"name": "false"
},
{
"type": "SYMBOL",
"name": "null"
},
{
"type": "SYMBOL",
"name": "concatenated_string"
},
{
"type": "SYMBOL",
"name": "char_literal"
},
{
"type": "SYMBOL",
"name": "parenthesized_expression"
}
]
},
{
"type": "SYMBOL",
"name": "co_await_expression"
},
{
"type": "SYMBOL",
"name": "template_function"
},
{
"type": "SYMBOL",
"name": "qualified_identifier"
},
{
"type": "SYMBOL",
"name": "new_expression"
},
{
"type": "SYMBOL",
"name": "delete_expression"
},
{
"type": "SYMBOL",
"name": "lambda_expression"
},
{
"type": "SYMBOL",
"name": "parameter_pack_expansion"
},
{
"type": "SYMBOL",
"name": "nullptr"
},
{
"type": "SYMBOL",
"name": "this"
},
{
"type": "SYMBOL",
"name": "raw_string_literal"
},
{
"type": "SYMBOL",
"name": "user_defined_literal"
}
]
},
"comma_expression": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "left",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
},
{
"type": "STRING",
"value": ","
},
{
"type": "FIELD",
"name": "right",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "SYMBOL",
"name": "comma_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"
}
}
]
}
},
"_assignment_left_expression": {
"type": "CHOICE",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "SYMBOL",
"name": "call_expression"
},
{
"type": "SYMBOL",
"name": "field_expression"
},
{
"type": "SYMBOL",
"name": "pointer_expression"
},
{
"type": "SYMBOL",
"name": "subscript_expression"
},
{
"type": "SYMBOL",
"name": "parenthesized_expression"
}
]
},
{
"type": "SYMBOL",
"name": "qualified_identifier"
}
]
},
"assignment_expression": {
"type": "PREC_RIGHT",
"value": -1,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "left",
"content": {
"type": "SYMBOL",
"name": "_assignment_left_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": "FIELD",
"name": "right",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
}
]
}
},
"pointer_expression": {
"type": "PREC_LEFT",
"value": 12,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "*"
},
{
"type": "STRING",
"value": "&"
}
]
}
},
{
"type": "FIELD",
"name": "argument",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
}
]
}
},
"unary_expression": {
"type": "PREC_LEFT",
"value": 13,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "!"
},
{
"type": "STRING",
"value": "~"
},
{
"type": "STRING",
"value": "-"
},
{
"type": "STRING",
"value": "+"
}
]
}
},
{
"type": "FIELD",
"name": "argument",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
}
]
}
},
"binary_expression": {
"type": "CHOICE",
"members": [
{
"type": "PREC_LEFT",
"value": 10,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "left",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
},
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "STRING",
"value": "+"
}
},
{
"type": "FIELD",
"name": "right",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
}
]
}
},
{
"type": "PREC_LEFT",
"value": 10,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "left",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
},
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "STRING",
"value": "-"
}
},
{
"type": "FIELD",
"name": "right",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
}
]
}
},
{
"type": "PREC_LEFT",
"value": 11,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "left",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
},
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "STRING",
"value": "*"
}
},
{
"type": "FIELD",
"name": "right",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
}
]
}
},
{
"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": 1,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "left",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
},
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "STRING",
"value": "||"
}
},
{
"type": "FIELD",
"name": "right",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
}
]
}
},
{
"type": "PREC_LEFT",
"value": 2,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "left",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
},
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "STRING",
"value": "&&"
}
},
{
"type": "FIELD",
"name": "right",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
}
]
}
},
{
"type": "PREC_LEFT",
"value": 3,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "left",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
},
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "STRING",
"value": "|"
}
},
{
"type": "FIELD",
"name": "right",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
}
]
}
},
{
"type": "PREC_LEFT",
"value": 4,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "left",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
},
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "STRING",
"value": "^"
}
},
{
"type": "FIELD",
"name": "right",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
}
]
}
},
{
"type": "PREC_LEFT",
"value": 5,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "left",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
},
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "STRING",
"value": "&"
}
},
{
"type": "FIELD",
"name": "right",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
}
]
}
},
{
"type": "PREC_LEFT",
"value": 6,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "left",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
},
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "STRING",
"value": "=="
}
},
{
"type": "FIELD",
"name": "right",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
}
]
}
},
{
"type": "PREC_LEFT",
"value": 6,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "left",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
},
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "STRING",
"value": "!="
}
},
{
"type": "FIELD",
"name": "right",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
}
]
}
},
{
"type": "PREC_LEFT",
"value": 7,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "left",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
},
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "STRING",
"value": ">"
}
},
{
"type": "FIELD",
"name": "right",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
}
]
}
},
{
"type": "PREC_LEFT",
"value": 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": 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": 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": 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"
}
}
]
}
}
]
},
"update_expression": {
"type": "PREC_RIGHT",
"value": 13,
"content": {
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "--"
},
{
"type": "STRING",
"value": "++"
}
]
}
},
{
"type": "FIELD",
"name": "argument",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "argument",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
},
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "--"
},
{
"type": "STRING",
"value": "++"
}
]
}
}
]
}
]
}
},
"cast_expression": {
"type": "PREC",
"value": 12,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "FIELD",
"name": "type",
"content": {
"type": "SYMBOL",
"name": "type_descriptor"
}
},
{
"type": "STRING",
"value": ")"
},
{
"type": "FIELD",
"name": "value",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
}
]
}
},
"type_descriptor": {
"type": "SEQ",
"members": [
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "type_qualifier"
}
},
{
"type": "FIELD",
"name": "type",
"content": {
"type": "SYMBOL",
"name": "_type_specifier"
}
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "type_qualifier"
}
},
{
"type": "FIELD",
"name": "declarator",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_abstract_declarator"
},
{
"type": "BLANK"
}
]
}
}
]
},
"sizeof_expression": {
"type": "CHOICE",
"members": [
{
"type": "PREC",
"value": 8,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "sizeof"
},
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "value",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "FIELD",
"name": "type",
"content": {
"type": "SYMBOL",
"name": "type_descriptor"
}
},
{
"type": "STRING",
"value": ")"
}
]
}
]
}
]
}
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "sizeof"
},
{
"type": "STRING",
"value": "..."
},
{
"type": "STRING",
"value": "("
},
{
"type": "FIELD",
"name": "value",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "STRING",
"value": ")"
}
]
}
]
},
"subscript_expression": {
"type": "PREC",
"value": 16,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "argument",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
},
{
"type": "STRING",
"value": "["
},
{
"type": "FIELD",
"name": "index",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "SYMBOL",
"name": "initializer_list"
}
]
}
},
{
"type": "STRING",
"value": "]"
}
]
}
},
"call_expression": {
"type": "CHOICE",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "PREC",
"value": 14,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "function",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
},
{
"type": "FIELD",
"name": "arguments",
"content": {
"type": "SYMBOL",
"name": "argument_list"
}
}
]
}
},
{
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "function",
"content": {
"type": "SYMBOL",
"name": "primitive_type"
}
},
{
"type": "FIELD",
"name": "arguments",
"content": {
"type": "SYMBOL",
"name": "argument_list"
}
}
]
}
]
},
{
"type": "SYMBOL",
"name": "_call_macro_with_decl_first_arg"
}
]
},
"argument_list": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "SYMBOL",
"name": "initializer_list"
}
]
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "SYMBOL",
"name": "initializer_list"
}
]
}
]
}
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ")"
}
]
},
"field_expression": {
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "PREC",
"value": 15,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "argument",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
},
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "."
},
{
"type": "STRING",
"value": "->"
}
]
}
}
]
}
},
{
"type": "FIELD",
"name": "field",
"content": {
"type": "SYMBOL",
"name": "_field_identifier"
}
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "PREC",
"value": 15,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "argument",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "."
},
{
"type": "STRING",
"value": "->"
}
]
}
]
}
},
{
"type": "FIELD",
"name": "field",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "destructor_name"
},
{
"type": "SYMBOL",
"name": "template_method"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "dependent_field_identifier"
},
"named": true,
"value": "dependent_name"
}
]
}
}
]
}
]
},
"compound_literal_expression": {
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "FIELD",
"name": "type",
"content": {
"type": "SYMBOL",
"name": "type_descriptor"
}
},
{
"type": "STRING",
"value": ")"
},
{
"type": "FIELD",
"name": "value",
"content": {
"type": "SYMBOL",
"name": "initializer_list"
}
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "type",
"content": {
"type": "SYMBOL",
"name": "_class_name"
}
},
{
"type": "FIELD",
"name": "value",
"content": {
"type": "SYMBOL",
"name": "initializer_list"
}
}
]
}
]
},
"parenthesized_expression": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "SYMBOL",
"name": "comma_expression"
}
]
},
{
"type": "STRING",
"value": ")"
}
]
},
"initializer_list": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "{"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "initializer_pair"
},
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "SYMBOL",
"name": "initializer_list"
}
]
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "initializer_pair"
},
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "SYMBOL",
"name": "initializer_list"
}
]
}
]
}
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "}"
}
]
},
"initializer_pair": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "designator",
"content": {
"type": "REPEAT1",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "subscript_designator"
},
{
"type": "SYMBOL",
"name": "field_designator"
}
]
}
}
},
{
"type": "STRING",
"value": "="
},
{
"type": "FIELD",
"name": "value",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "SYMBOL",
"name": "initializer_list"
}
]
}
}
]
},
"subscript_designator": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "["
},
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "STRING",
"value": "]"
}
]
},
"field_designator": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "."
},
{
"type": "SYMBOL",
"name": "_field_identifier"
}
]
},
"number_literal": {
"type": "TOKEN",
"content": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "PATTERN",
"value": "[-\\+]"
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "0x"
},
{
"type": "STRING",
"value": "0b"
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "REPEAT1",
"content": {
"type": "PATTERN",
"value": "[0-9]"
}
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "'"
},
{
"type": "REPEAT1",
"content": {
"type": "PATTERN",
"value": "[0-9]"
}
}
]
}
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "0b"
},
{
"type": "SEQ",
"members": [
{
"type": "REPEAT1",
"content": {
"type": "PATTERN",
"value": "[0-9]"
}
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "'"
},
{
"type": "REPEAT1",
"content": {
"type": "PATTERN",
"value": "[0-9]"
}
}
]
}
}
]
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "0x"
},
{
"type": "SEQ",
"members": [
{
"type": "REPEAT1",
"content": {
"type": "PATTERN",
"value": "[0-9a-fA-F]"
}
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "'"
},
{
"type": "REPEAT1",
"content": {
"type": "PATTERN",
"value": "[0-9a-fA-F]"
}
}
]
}
}
]
}
]
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "."
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "REPEAT1",
"content": {
"type": "PATTERN",
"value": "[0-9a-fA-F]"
}
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "'"
},
{
"type": "REPEAT1",
"content": {
"type": "PATTERN",
"value": "[0-9a-fA-F]"
}
}
]
}
}
]
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "."
},
{
"type": "SEQ",
"members": [
{
"type": "REPEAT1",
"content": {
"type": "PATTERN",
"value": "[0-9]"
}
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "'"
},
{
"type": "REPEAT1",
"content": {
"type": "PATTERN",
"value": "[0-9]"
}
}
]
}
}
]
}
]
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "PATTERN",
"value": "[eEpP]"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "PATTERN",
"value": "[-\\+]"
},
{
"type": "BLANK"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "REPEAT1",
"content": {
"type": "PATTERN",
"value": "[0-9a-fA-F]"
}
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "'"
},
{
"type": "REPEAT1",
"content": {
"type": "PATTERN",
"value": "[0-9a-fA-F]"
}
}
]
}
}
]
}
]
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "u"
},
{
"type": "STRING",
"value": "l"
},
{
"type": "STRING",
"value": "U"
},
{
"type": "STRING",
"value": "L"
},
{
"type": "STRING",
"value": "f"
},
{
"type": "STRING",
"value": "F"
}
]
}
}
]
}
},
"char_literal": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "L'"
},
{
"type": "STRING",
"value": "u'"
},
{
"type": "STRING",
"value": "U'"
},
{
"type": "STRING",
"value": "u8'"
},
{
"type": "STRING",
"value": "'"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "escape_sequence"
},
{
"type": "IMMEDIATE_TOKEN",
"content": {
"type": "PATTERN",
"value": "[^\\n']"
}
}
]
},
{
"type": "STRING",
"value": "'"
}
]
},
"concatenated_string": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "raw_string_literal"
},
{
"type": "SYMBOL",
"name": "string_literal"
}
]
},
{
"type": "REPEAT1",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "raw_string_literal"
},
{
"type": "SYMBOL",
"name": "string_literal"
},
{
"type": "SYMBOL",
"name": "identifier"
}
]
}
}
]
},
"string_literal": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "L\""
},
{
"type": "STRING",
"value": "u\""
},
{
"type": "STRING",
"value": "U\""
},
{
"type": "STRING",
"value": "u8\""
},
{
"type": "STRING",
"value": "\""
}
]
},
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "IMMEDIATE_TOKEN",
"content": {
"type": "PREC",
"value": 1,
"content": {
"type": "PATTERN",
"value": "[^\\\\\"\\n]+"
}
}
},
{
"type": "SYMBOL",
"name": "escape_sequence"
}
]
}
},
{
"type": "STRING",
"value": "\""
}
]
},
"escape_sequence": {
"type": "TOKEN",
"content": {
"type": "PREC",
"value": 1,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "\\"
},
{
"type": "CHOICE",
"members": [
{
"type": "PATTERN",
"value": "[^xuU]"
},
{
"type": "PATTERN",
"value": "\\d{2,3}"
},
{
"type": "PATTERN",
"value": "x[0-9a-fA-F]{2,}"
},
{
"type": "PATTERN",
"value": "u[0-9a-fA-F]{4}"
},
{
"type": "PATTERN",
"value": "U[0-9a-fA-F]{8}"
}
]
}
]
}
}
},
"system_lib_string": {
"type": "TOKEN",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "<"
},
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "PATTERN",
"value": "[^>\\n]"
},
{
"type": "STRING",
"value": "\\>"
}
]
}
},
{
"type": "STRING",
"value": ">"
}
]
}
},
"true": {
"type": "TOKEN",
"content": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "TRUE"
},
{
"type": "STRING",
"value": "true"
}
]
}
},
"false": {
"type": "TOKEN",
"content": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "FALSE"
},
{
"type": "STRING",
"value": "false"
}
]
}
},
"null": {
"type": "STRING",
"value": "NULL"
},
"identifier": {
"type": "PATTERN",
"value": "[a-zA-Z_]\\w*"
},
"_type_identifier": {
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "identifier"
},
"named": true,
"value": "type_identifier"
},
"_field_identifier": {
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "identifier"
},
"named": true,
"value": "field_identifier"
},
"_statement_identifier": {
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "identifier"
},
"named": true,
"value": "statement_identifier"
},
"_empty_declaration": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_type_specifier"
},
{
"type": "STRING",
"value": ";"
}
]
},
"macro_type_specifier": {
"type": "PREC_DYNAMIC",
"value": -1,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "STRING",
"value": "("
},
{
"type": "FIELD",
"name": "type",
"content": {
"type": "SYMBOL",
"name": "type_descriptor"
}
},
{
"type": "STRING",
"value": ")"
}
]
}
},
"comment": {
"type": "TOKEN",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "//"
},
{
"type": "PATTERN",
"value": "(\\\\(.|\\r?\\n)|[^\\\\\\n])*"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "/*"
},
{
"type": "PATTERN",
"value": "[^*]*\\*+([^/*][^*]*\\*+)*"
},
{
"type": "STRING",
"value": "/"
}
]
}
]
}
},
"decltype": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "decltype"
},
{
"type": "STRING",
"value": "("
},
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "STRING",
"value": ")"
}
]
},
"class_specifier": {
"type": "PREC_RIGHT",
"value": 0,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "class"
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "macro_annotation"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "_class_name"
}
},
{
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "_class_name"
}
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "virtual_specifier"
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "base_class_clause"
},
{
"type": "BLANK"
}
]
},
{
"type": "FIELD",
"name": "body",
"content": {
"type": "SYMBOL",
"name": "field_declaration_list"
}
}
]
}
]
}
]
}
},
"_class_name": {
"type": "PREC_RIGHT",
"value": 0,
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_type_identifier"
},
{
"type": "SYMBOL",
"name": "template_type"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "qualified_type_identifier"
},
"named": true,
"value": "qualified_identifier"
}
]
}
},
"virtual_specifier": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "final"
},
{
"type": "STRING",
"value": "override"
}
]
},
"virtual_function_specifier": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "virtual"
}
]
},
"explicit_function_specifier": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "explicit"
},
{
"type": "PREC",
"value": 14,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "explicit"
},
{
"type": "STRING",
"value": "("
},
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "STRING",
"value": ")"
}
]
}
}
]
},
"base_class_clause": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ":"
},
{
"type": "SEQ",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "public"
},
{
"type": "STRING",
"value": "private"
},
{
"type": "STRING",
"value": "protected"
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "_class_name"
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "..."
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "public"
},
{
"type": "STRING",
"value": "private"
},
{
"type": "STRING",
"value": "protected"
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "_class_name"
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "..."
},
{
"type": "BLANK"
}
]
}
]
}
]
}
}
]
}
]
},
"_enum_base_clause": {
"type": "PREC_LEFT",
"value": 0,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ":"
},
{
"type": "FIELD",
"name": "base",
"content": {
"type": "CHOICE",
"members": [
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "qualified_type_identifier"
},
"named": true,
"value": "qualified_identifier"
},
{
"type": "SYMBOL",
"name": "_type_identifier"
},
{
"type": "SYMBOL",
"name": "sized_type_specifier"
}
]
}
}
]
}
},
"auto": {
"type": "STRING",
"value": "auto"
},
"dependent_type": {
"type": "PREC_DYNAMIC",
"value": -1,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "typename"
},
{
"type": "SYMBOL",
"name": "_type_specifier"
}
]
}
},
"template_declaration": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "template"
},
{
"type": "FIELD",
"name": "parameters",
"content": {
"type": "SYMBOL",
"name": "template_parameter_list"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_empty_declaration"
},
{
"type": "SYMBOL",
"name": "alias_declaration"
},
{
"type": "SYMBOL",
"name": "declaration"
},
{
"type": "SYMBOL",
"name": "template_declaration"
},
{
"type": "SYMBOL",
"name": "function_definition"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "constructor_or_destructor_declaration"
},
"named": true,
"value": "declaration"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "constructor_or_destructor_definition"
},
"named": true,
"value": "function_definition"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "operator_cast_declaration"
},
"named": true,
"value": "declaration"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "operator_cast_definition"
},
"named": true,
"value": "function_definition"
}
]
}
]
},
"template_instantiation": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "template"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_declaration_specifiers"
},
{
"type": "BLANK"
}
]
},
{
"type": "FIELD",
"name": "declarator",
"content": {
"type": "SYMBOL",
"name": "_declarator"
}
},
{
"type": "STRING",
"value": ";"
}
]
},
"template_parameter_list": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "<"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "parameter_declaration"
},
{
"type": "SYMBOL",
"name": "optional_parameter_declaration"
},
{
"type": "SYMBOL",
"name": "type_parameter_declaration"
},
{
"type": "SYMBOL",
"name": "variadic_parameter_declaration"
},
{
"type": "SYMBOL",
"name": "variadic_type_parameter_declaration"
},
{
"type": "SYMBOL",
"name": "optional_type_parameter_declaration"
},
{
"type": "SYMBOL",
"name": "template_template_parameter_declaration"
}
]
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "parameter_declaration"
},
{
"type": "SYMBOL",
"name": "optional_parameter_declaration"
},
{
"type": "SYMBOL",
"name": "type_parameter_declaration"
},
{
"type": "SYMBOL",
"name": "variadic_parameter_declaration"
},
{
"type": "SYMBOL",
"name": "variadic_type_parameter_declaration"
},
{
"type": "SYMBOL",
"name": "optional_type_parameter_declaration"
},
{
"type": "SYMBOL",
"name": "template_template_parameter_declaration"
}
]
}
]
}
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "ALIAS",
"content": {
"type": "TOKEN",
"content": {
"type": "PREC",
"value": 1,
"content": {
"type": "STRING",
"value": ">"
}
}
},
"named": false,
"value": ">"
}
]
},
"type_parameter_declaration": {
"type": "PREC",
"value": 1,
"content": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "typename"
},
{
"type": "STRING",
"value": "class"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_type_identifier"
},
{
"type": "BLANK"
}
]
}
]
}
},
"variadic_type_parameter_declaration": {
"type": "PREC",
"value": 1,
"content": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "typename"
},
{
"type": "STRING",
"value": "class"
}
]
},
{
"type": "STRING",
"value": "..."
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_type_identifier"
},
{
"type": "BLANK"
}
]
}
]
}
},
"optional_type_parameter_declaration": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "typename"
},
{
"type": "STRING",
"value": "class"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "_type_identifier"
}
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "="
},
{
"type": "FIELD",
"name": "default_type",
"content": {
"type": "SYMBOL",
"name": "_type_specifier"
}
}
]
},
"template_template_parameter_declaration": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "template"
},
{
"type": "FIELD",
"name": "parameters",
"content": {
"type": "SYMBOL",
"name": "template_parameter_list"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "type_parameter_declaration"
},
{
"type": "SYMBOL",
"name": "variadic_type_parameter_declaration"
},
{
"type": "SYMBOL",
"name": "optional_type_parameter_declaration"
}
]
}
]
},
"optional_parameter_declaration": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_declaration_specifiers"
},
{
"type": "FIELD",
"name": "declarator",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_declarator"
},
{
"type": "BLANK"
}
]
}
},
{
"type": "STRING",
"value": "="
},
{
"type": "FIELD",
"name": "default_value",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
}
]
},
"variadic_parameter_declaration": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_declaration_specifiers"
},
{
"type": "FIELD",
"name": "declarator",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "variadic_declarator"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "variadic_reference_declarator"
},
"named": true,
"value": "reference_declarator"
}
]
}
}
]
},
"variadic_declarator": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "..."
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "BLANK"
}
]
}
]
},
"variadic_reference_declarator": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "&&"
},
{
"type": "STRING",
"value": "&"
}
]
},
{
"type": "SYMBOL",
"name": "variadic_declarator"
}
]
},
"operator_cast": {
"type": "PREC_RIGHT",
"value": 1,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "operator"
},
{
"type": "SYMBOL",
"name": "_declaration_specifiers"
},
{
"type": "FIELD",
"name": "declarator",
"content": {
"type": "SYMBOL",
"name": "_abstract_declarator"
}
}
]
}
},
"field_initializer_list": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ":"
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "field_initializer"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "field_initializer"
}
]
}
}
]
}
]
},
"field_initializer": {
"type": "PREC",
"value": 1,
"content": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_field_identifier"
},
{
"type": "SYMBOL",
"name": "template_method"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "qualified_field_identifier"
},
"named": true,
"value": "qualified_identifier"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "initializer_list"
},
{
"type": "SYMBOL",
"name": "argument_list"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "..."
},
{
"type": "BLANK"
}
]
}
]
}
},
"inline_method_definition": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_declaration_specifiers"
},
{
"type": "FIELD",
"name": "declarator",
"content": {
"type": "SYMBOL",
"name": "_field_declarator"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "body",
"content": {
"type": "SYMBOL",
"name": "compound_statement"
}
},
{
"type": "SYMBOL",
"name": "default_method_clause"
},
{
"type": "SYMBOL",
"name": "delete_method_clause"
}
]
}
]
},
"_constructor_specifiers": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_declaration_modifiers"
},
{
"type": "SYMBOL",
"name": "explicit_function_specifier"
}
]
},
"operator_cast_definition": {
"type": "SEQ",
"members": [
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_constructor_specifiers"
}
},
{
"type": "FIELD",
"name": "declarator",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "operator_cast"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "qualified_operator_cast_identifier"
},
"named": true,
"value": "qualified_identifier"
}
]
}
},
{
"type": "FIELD",
"name": "body",
"content": {
"type": "SYMBOL",
"name": "compound_statement"
}
}
]
},
"operator_cast_declaration": {
"type": "PREC",
"value": 1,
"content": {
"type": "SEQ",
"members": [
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_constructor_specifiers"
}
},
{
"type": "FIELD",
"name": "declarator",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "operator_cast"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "qualified_operator_cast_identifier"
},
"named": true,
"value": "qualified_identifier"
}
]
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "="
},
{
"type": "FIELD",
"name": "default_value",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ";"
}
]
}
},
"constructor_or_destructor_definition": {
"type": "SEQ",
"members": [
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_constructor_specifiers"
}
},
{
"type": "FIELD",
"name": "declarator",
"content": {
"type": "SYMBOL",
"name": "function_declarator"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "field_initializer_list"
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "body",
"content": {
"type": "SYMBOL",
"name": "compound_statement"
}
},
{
"type": "SYMBOL",
"name": "default_method_clause"
},
{
"type": "SYMBOL",
"name": "delete_method_clause"
}
]
}
]
},
"constructor_or_destructor_declaration": {
"type": "SEQ",
"members": [
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_constructor_specifiers"
}
},
{
"type": "FIELD",
"name": "declarator",
"content": {
"type": "SYMBOL",
"name": "function_declarator"
}
},
{
"type": "STRING",
"value": ";"
}
]
},
"default_method_clause": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "="
},
{
"type": "STRING",
"value": "default"
},
{
"type": "STRING",
"value": ";"
}
]
},
"delete_method_clause": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "="
},
{
"type": "STRING",
"value": "delete"
},
{
"type": "STRING",
"value": ";"
}
]
},
"friend_declaration": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "friend"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "declaration"
},
{
"type": "SYMBOL",
"name": "function_definition"
},
{
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "class"
},
{
"type": "STRING",
"value": "struct"
},
{
"type": "STRING",
"value": "union"
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "_class_name"
},
{
"type": "STRING",
"value": ";"
}
]
}
]
}
]
},
"access_specifier": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "public"
},
{
"type": "STRING",
"value": "private"
},
{
"type": "STRING",
"value": "protected"
}
]
},
{
"type": "STRING",
"value": ":"
}
]
},
"reference_declarator": {
"type": "PREC_DYNAMIC",
"value": 1,
"content": {
"type": "PREC_RIGHT",
"value": 0,
"content": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "&"
},
{
"type": "STRING",
"value": "&&"
}
]
},
{
"type": "SYMBOL",
"name": "_declarator"
}
]
}
}
},
"reference_field_declarator": {
"type": "PREC_DYNAMIC",
"value": 1,
"content": {
"type": "PREC_RIGHT",
"value": 0,
"content": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "&"
},
{
"type": "STRING",
"value": "&&"
}
]
},
{
"type": "SYMBOL",
"name": "_field_declarator"
}
]
}
}
},
"abstract_reference_declarator": {
"type": "PREC_RIGHT",
"value": 0,
"content": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "&"
},
{
"type": "STRING",
"value": "&&"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_abstract_declarator"
},
{
"type": "BLANK"
}
]
}
]
}
},
"structured_binding_declarator": {
"type": "PREC_DYNAMIC",
"value": -1,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "["
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "identifier"
}
]
}
}
]
},
{
"type": "STRING",
"value": "]"
}
]
}
},
"ref_qualifier": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "&"
},
{
"type": "STRING",
"value": "&&"
}
]
},
"trailing_return_type": {
"type": "PREC_RIGHT",
"value": 0,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "->"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "type_qualifier"
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "_type_specifier"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_abstract_declarator"
},
{
"type": "BLANK"
}
]
}
]
}
},
"noexcept": {
"type": "PREC_RIGHT",
"value": 0,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "noexcept"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ")"
}
]
},
{
"type": "BLANK"
}
]
}
]
}
},
"throw_specifier": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "throw"
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "type_descriptor"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "type_descriptor"
}
]
}
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ")"
}
]
}
]
},
"template_type": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "_type_identifier"
}
},
{
"type": "FIELD",
"name": "arguments",
"content": {
"type": "SYMBOL",
"name": "template_argument_list"
}
}
]
},
"template_method": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "_field_identifier"
}
},
{
"type": "FIELD",
"name": "arguments",
"content": {
"type": "SYMBOL",
"name": "template_argument_list"
}
}
]
},
"template_function": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "identifier"
}
},
{
"type": "FIELD",
"name": "arguments",
"content": {
"type": "SYMBOL",
"name": "template_argument_list"
}
}
]
},
"template_argument_list": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "<"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "PREC_DYNAMIC",
"value": 3,
"content": {
"type": "SYMBOL",
"name": "type_descriptor"
}
},
{
"type": "PREC_DYNAMIC",
"value": 2,
"content": {
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "type_parameter_pack_expansion"
},
"named": true,
"value": "parameter_pack_expansion"
}
},
{
"type": "PREC_DYNAMIC",
"value": 1,
"content": {
"type": "SYMBOL",
"name": "_expression"
}
}
]
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "CHOICE",
"members": [
{
"type": "PREC_DYNAMIC",
"value": 3,
"content": {
"type": "SYMBOL",
"name": "type_descriptor"
}
},
{
"type": "PREC_DYNAMIC",
"value": 2,
"content": {
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "type_parameter_pack_expansion"
},
"named": true,
"value": "parameter_pack_expansion"
}
},
{
"type": "PREC_DYNAMIC",
"value": 1,
"content": {
"type": "SYMBOL",
"name": "_expression"
}
}
]
}
]
}
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "ALIAS",
"content": {
"type": "TOKEN",
"content": {
"type": "PREC",
"value": 1,
"content": {
"type": "STRING",
"value": ">"
}
}
},
"named": false,
"value": ">"
}
]
},
"namespace_definition": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "namespace"
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "CHOICE",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "SYMBOL",
"name": "namespace_definition_name"
}
]
},
{
"type": "BLANK"
}
]
}
},
{
"type": "FIELD",
"name": "body",
"content": {
"type": "SYMBOL",
"name": "declaration_list"
}
}
]
},
"namespace_definition_name": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "SYMBOL",
"name": "namespace_definition_name"
}
]
},
{
"type": "STRING",
"value": "::"
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "inline"
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "identifier"
}
]
},
"using_declaration": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "using"
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "namespace"
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "SYMBOL",
"name": "qualified_identifier"
}
]
},
{
"type": "STRING",
"value": ";"
}
]
},
"alias_declaration": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "using"
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "SYMBOL",
"name": "_type_identifier"
}
},
{
"type": "STRING",
"value": "="
},
{
"type": "FIELD",
"name": "type",
"content": {
"type": "SYMBOL",
"name": "type_descriptor"
}
},
{
"type": "STRING",
"value": ";"
}
]
},
"static_assert_declaration": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "static_assert"
},
{
"type": "STRING",
"value": "("
},
{
"type": "FIELD",
"name": "condition",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "FIELD",
"name": "message",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "string_literal"
},
{
"type": "SYMBOL",
"name": "raw_string_literal"
},
{
"type": "SYMBOL",
"name": "concatenated_string"
}
]
}
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ")"
},
{
"type": "STRING",
"value": ";"
}
]
},
"condition_clause": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "initializer",
"content": {
"type": "CHOICE",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "declaration"
},
{
"type": "SYMBOL",
"name": "expression_statement"
}
]
},
{
"type": "BLANK"
}
]
}
},
{
"type": "FIELD",
"name": "value",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "SYMBOL",
"name": "comma_expression"
}
]
}
}
]
},
{
"type": "FIELD",
"name": "value",
"content": {
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "condition_declaration"
},
"named": true,
"value": "declaration"
}
}
]
},
{
"type": "STRING",
"value": ")"
}
]
},
"condition_declaration": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_declaration_specifiers"
},
{
"type": "FIELD",
"name": "declarator",
"content": {
"type": "SYMBOL",
"name": "_declarator"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "="
},
{
"type": "FIELD",
"name": "value",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
}
]
},
{
"type": "FIELD",
"name": "value",
"content": {
"type": "SYMBOL",
"name": "initializer_list"
}
}
]
}
]
},
"for_range_loop": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "for"
},
{
"type": "STRING",
"value": "("
},
{
"type": "SYMBOL",
"name": "_declaration_specifiers"
},
{
"type": "FIELD",
"name": "declarator",
"content": {
"type": "SYMBOL",
"name": "_declarator"
}
},
{
"type": "STRING",
"value": ":"
},
{
"type": "FIELD",
"name": "right",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "SYMBOL",
"name": "initializer_list"
}
]
}
},
{
"type": "STRING",
"value": ")"
},
{
"type": "FIELD",
"name": "body",
"content": {
"type": "SYMBOL",
"name": "_statement"
}
}
]
},
"co_return_statement": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "co_return"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ";"
}
]
},
"co_yield_statement": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "co_yield"
},
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "STRING",
"value": ";"
}
]
},
"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": "compound_statement"
}
},
{
"type": "REPEAT1",
"content": {
"type": "SYMBOL",
"name": "catch_clause"
}
}
]
},
"catch_clause": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "catch"
},
{
"type": "FIELD",
"name": "parameters",
"content": {
"type": "SYMBOL",
"name": "parameter_list"
}
},
{
"type": "FIELD",
"name": "body",
"content": {
"type": "SYMBOL",
"name": "compound_statement"
}
}
]
},
"co_await_expression": {
"type": "PREC_LEFT",
"value": 13,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "operator",
"content": {
"type": "STRING",
"value": "co_await"
}
},
{
"type": "FIELD",
"name": "argument",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
}
]
}
},
"new_expression": {
"type": "PREC_RIGHT",
"value": 15,
"content": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "::"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "new"
},
{
"type": "FIELD",
"name": "placement",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "argument_list"
},
{
"type": "BLANK"
}
]
}
},
{
"type": "FIELD",
"name": "type",
"content": {
"type": "SYMBOL",
"name": "_type_specifier"
}
},
{
"type": "FIELD",
"name": "declarator",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "new_declarator"
},
{
"type": "BLANK"
}
]
}
},
{
"type": "FIELD",
"name": "arguments",
"content": {
"type": "CHOICE",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "argument_list"
},
{
"type": "SYMBOL",
"name": "initializer_list"
}
]
},
{
"type": "BLANK"
}
]
}
}
]
}
},
"new_declarator": {
"type": "PREC_RIGHT",
"value": 0,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "["
},
{
"type": "FIELD",
"name": "length",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
},
{
"type": "STRING",
"value": "]"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "new_declarator"
},
{
"type": "BLANK"
}
]
}
]
}
},
"delete_expression": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "::"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "delete"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "["
},
{
"type": "STRING",
"value": "]"
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "_expression"
}
]
},
"lambda_expression": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "captures",
"content": {
"type": "SYMBOL",
"name": "lambda_capture_specifier"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "declarator",
"content": {
"type": "SYMBOL",
"name": "abstract_function_declarator"
}
},
{
"type": "BLANK"
}
]
},
{
"type": "FIELD",
"name": "body",
"content": {
"type": "SYMBOL",
"name": "compound_statement"
}
}
]
},
"lambda_capture_specifier": {
"type": "PREC",
"value": 18,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "["
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "lambda_default_capture"
},
{
"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": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "lambda_default_capture"
},
{
"type": "STRING",
"value": ","
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "_expression"
}
]
}
}
]
}
]
}
]
},
{
"type": "STRING",
"value": "]"
}
]
}
},
"lambda_default_capture": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "="
},
{
"type": "STRING",
"value": "&"
}
]
},
"parameter_pack_expansion": {
"type": "PREC",
"value": -1,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "pattern",
"content": {
"type": "SYMBOL",
"name": "_expression"
}
},
{
"type": "STRING",
"value": "..."
}
]
}
},
"type_parameter_pack_expansion": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "pattern",
"content": {
"type": "SYMBOL",
"name": "type_descriptor"
}
},
{
"type": "STRING",
"value": "..."
}
]
},
"destructor_name": {
"type": "PREC",
"value": 1,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "~"
},
{
"type": "SYMBOL",
"name": "identifier"
}
]
}
},
"dependent_identifier": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "template"
},
{
"type": "SYMBOL",
"name": "template_function"
}
]
},
"dependent_field_identifier": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "template"
},
{
"type": "SYMBOL",
"name": "template_method"
}
]
},
"dependent_type_identifier": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "template"
},
{
"type": "SYMBOL",
"name": "template_type"
}
]
},
"_scope_resolution": {
"type": "PREC",
"value": 1,
"content": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "scope",
"content": {
"type": "CHOICE",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_namespace_identifier"
},
{
"type": "SYMBOL",
"name": "template_type"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "dependent_type_identifier"
},
"named": true,
"value": "dependent_name"
}
]
},
{
"type": "BLANK"
}
]
}
},
{
"type": "STRING",
"value": "::"
}
]
}
},
"qualified_field_identifier": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_scope_resolution"
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "CHOICE",
"members": [
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "dependent_field_identifier"
},
"named": true,
"value": "dependent_name"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "qualified_field_identifier"
},
"named": true,
"value": "qualified_identifier"
},
{
"type": "SYMBOL",
"name": "template_method"
},
{
"type": "SYMBOL",
"name": "_field_identifier"
}
]
}
}
]
},
"qualified_identifier": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_scope_resolution"
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "CHOICE",
"members": [
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "dependent_identifier"
},
"named": true,
"value": "dependent_name"
},
{
"type": "SYMBOL",
"name": "qualified_identifier"
},
{
"type": "SYMBOL",
"name": "template_function"
},
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "SYMBOL",
"name": "operator_name"
},
{
"type": "SYMBOL",
"name": "destructor_name"
}
]
}
}
]
},
"qualified_type_identifier": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_scope_resolution"
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "CHOICE",
"members": [
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "dependent_type_identifier"
},
"named": true,
"value": "dependent_name"
},
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "qualified_type_identifier"
},
"named": true,
"value": "qualified_identifier"
},
{
"type": "SYMBOL",
"name": "template_type"
},
{
"type": "SYMBOL",
"name": "_type_identifier"
}
]
}
}
]
},
"qualified_operator_cast_identifier": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_scope_resolution"
},
{
"type": "FIELD",
"name": "name",
"content": {
"type": "CHOICE",
"members": [
{
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "qualified_operator_cast_identifier"
},
"named": true,
"value": "qualified_identifier"
},
{
"type": "SYMBOL",
"name": "operator_cast"
}
]
}
}
]
},
"operator_name": {
"type": "PREC",
"value": 1,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "operator"
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "co_await"
},
{
"type": "STRING",
"value": "+"
},
{
"type": "STRING",
"value": "-"
},
{
"type": "STRING",
"value": "*"
},
{
"type": "STRING",
"value": "/"
},
{
"type": "STRING",
"value": "%"
},
{
"type": "STRING",
"value": "^"
},
{
"type": "STRING",
"value": "&"
},
{
"type": "STRING",
"value": "|"
},
{
"type": "STRING",
"value": "~"
},
{
"type": "STRING",
"value": "!"
},
{
"type": "STRING",
"value": "="
},
{
"type": "STRING",
"value": "<"
},
{
"type": "STRING",
"value": ">"
},
{
"type": "STRING",
"value": "+="
},
{
"type": "STRING",
"value": "-="
},
{
"type": "STRING",
"value": "*="
},
{
"type": "STRING",
"value": "/="
},
{
"type": "STRING",
"value": "%="
},
{
"type": "STRING",
"value": "^="
},
{
"type": "STRING",
"value": "&="
},
{
"type": "STRING",
"value": "|="
},
{
"type": "STRING",
"value": "<<"
},
{
"type": "STRING",
"value": ">>"
},
{
"type": "STRING",
"value": ">>="
},
{
"type": "STRING",
"value": "<<="
},
{
"type": "STRING",
"value": "=="
},
{
"type": "STRING",
"value": "!="
},
{
"type": "STRING",
"value": "<="
},
{
"type": "STRING",
"value": ">="
},
{
"type": "STRING",
"value": "&&"
},
{
"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": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "new"
},
{
"type": "STRING",
"value": "delete"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "[]"
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "\"\""
},
{
"type": "SYMBOL",
"name": "identifier"
}
]
}
]
}
]
}
},
"this": {
"type": "STRING",
"value": "this"
},
"nullptr": {
"type": "STRING",
"value": "nullptr"
},
"literal_suffix": {
"type": "IMMEDIATE_TOKEN",
"content": {
"type": "PATTERN",
"value": "[a-zA-Z_]\\w*"
}
},
"user_defined_literal": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "number_literal"
},
{
"type": "SYMBOL",
"name": "char_literal"
},
{
"type": "SYMBOL",
"name": "string_literal"
},
{
"type": "SYMBOL",
"name": "raw_string_literal"
},
{
"type": "SYMBOL",
"name": "concatenated_string"
}
]
},
{
"type": "SYMBOL",
"name": "literal_suffix"
}
]
},
"_namespace_identifier": {
"type": "ALIAS",
"content": {
"type": "SYMBOL",
"name": "identifier"
},
"named": true,
"value": "namespace_identifier"
},
"alone_macro": {
"type": "PATTERN",
"value": "[_A-Z][_A-Z0-9]+\\s*\\n"
},
"alone_macro_call": {
"type": "SEQ",
"members": [
{
"type": "PATTERN",
"value": "[_A-Z][_A-Z0-9]+"
},
{
"type": "STRING",
"value": "("
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "PATTERN",
"value": "[_A-Z][_A-Z0-9]+"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "PATTERN",
"value": "[_A-Z][_A-Z0-9]+"
}
]
}
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ")"
},
{
"type": "STRING",
"value": "\n"
}
]
},
"_call_macro_with_decl_first_arg": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "function",
"content": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "CACHE_TRY_INSPECT"
},
{
"type": "STRING",
"value": "CACHE_TRY_UNWRAP"
},
{
"type": "STRING",
"value": "FORWARD"
},
{
"type": "STRING",
"value": "FORWARD_SET_ATTRIBUTE"
},
{
"type": "STRING",
"value": "IDB_TRY_INSPECT"
},
{
"type": "STRING",
"value": "IDB_TRY_UNWRAP"
},
{
"type": "STRING",
"value": "LS_TRY_INSPECT"
},
{
"type": "STRING",
"value": "LS_TRY_UNWRAP"
},
{
"type": "STRING",
"value": "SDB_TRY_INSPECT"
},
{
"type": "STRING",
"value": "SDB_TRY_UNWRAP"
},
{
"type": "STRING",
"value": "PS_GET"
},
{
"type": "STRING",
"value": "PS_GET_AND_SET"
},
{
"type": "STRING",
"value": "PS_GET_LOCKLESS"
},
{
"type": "STRING",
"value": "QM_TRY_INSPECT"
},
{
"type": "STRING",
"value": "QM_NOTEONLY_TRY_UNWRAP"
},
{
"type": "STRING",
"value": "QM_TRY_UNWRAP"
},
{
"type": "STRING",
"value": "QM_WARNONLY_TRY_UNWRAP"
}
]
}
},
{
"type": "FIELD",
"name": "arguments",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "SYMBOL",
"name": "parameter_declaration"
},
{
"type": "STRING",
"value": ","
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "SYMBOL",
"name": "initializer_list"
}
]
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "SYMBOL",
"name": "initializer_list"
}
]
}
]
}
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ")"
}
]
}
}
]
},
"macro_statement": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "MOZ_DECL_USE_GUARD_OBJECT_NOTIFIER"
}
]
},
"macro_annotation": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "MOZ_ALLOCATOR"
},
{
"type": "STRING",
"value": "MOZ_ALLOW_TEMPORARY"
},
{
"type": "STRING",
"value": "MOZ_ALWAYS_INLINE"
},
{
"type": "STRING",
"value": "MOZ_ALWAYS_INLINE_EVEN_DEBUG"
},
{
"type": "STRING",
"value": "MOZ_ASAN_BLACKLIST"
},
{
"type": "STRING",
"value": "MOZ_CAN_RUN_SCRIPT"
},
{
"type": "STRING",
"value": "MOZ_CAN_RUN_SCRIPT_BOUNDARY"
},
{
"type": "STRING",
"value": "MOZ_CAN_RUN_SCRIPT_FOR_DEFINITION"
},
{
"type": "STRING",
"value": "MOZ_COLD"
},
{
"type": "STRING",
"value": "MOZ_FALLTHROUGH"
},
{
"type": "STRING",
"value": "MOZ_FORMAT_PRINTF"
},
{
"type": "STRING",
"value": "MOZ_HAVE_ANALYZER_NORETURN"
},
{
"type": "STRING",
"value": "MOZ_HAVE_ASAN_BLACKLIST"
},
{
"type": "STRING",
"value": "MOZ_HAVE_NEVER_INLINE"
},
{
"type": "STRING",
"value": "MOZ_HAVE_NORETURN"
},
{
"type": "STRING",
"value": "MOZ_HAVE_NORETURN_PTR"
},
{
"type": "STRING",
"value": "MOZ_HAVE_NO_SANITIZE_ATTR"
},
{
"type": "STRING",
"value": "MOZ_HAVE_SIGNED_OVERFLOW_SANITIZE_ATTR"
},
{
"type": "STRING",
"value": "MOZ_HAVE_UNSIGNED_OVERFLOW_SANITIZE_ATTR"
},
{
"type": "STRING",
"value": "MOZ_HEAP_ALLOCATOR"
},
{
"type": "STRING",
"value": "MOZ_HEAP_CLASS"
},
{
"type": "STRING",
"value": "MOZ_IMPLICIT"
},
{
"type": "STRING",
"value": "MOZ_INHERIT_TYPE_ANNOTATIONS_FROM_TEMPLATE_ARGS"
},
{
"type": "STRING",
"value": "MOZ_INIT_OUTSIDE_CTOR"
},
{
"type": "STRING",
"value": "MOZ_IS_CLASS_INIT"
},
{
"type": "STRING",
"value": "MOZ_IS_REFPTR"
},
{
"type": "STRING",
"value": "MOZ_IS_SMARTPTR_TO_REFCOUNTED"
},
{
"type": "STRING",
"value": "MOZ_MAYBE_UNUSED"
},
{
"type": "STRING",
"value": "MOZ_MAY_CALL_AFTER_MUST_RETURN"
},
{
"type": "STRING",
"value": "MOZ_MUST_OVERRIDE"
},
{
"type": "STRING",
"value": "MOZ_MUST_RETURN_FROM_CALLER_IF_THIS_IS_ARG"
},
{
"type": "STRING",
"value": "MOZ_MUST_USE"
},
{
"type": "STRING",
"value": "MOZ_MUST_USE_TYPE"
},
{
"type": "STRING",
"value": "MOZ_NEEDS_MEMMOVABLE_MEMBERS"
},
{
"type": "STRING",
"value": "MOZ_NEEDS_MEMMOVABLE_TYPE"
},
{
"type": "STRING",
"value": "MOZ_NEEDS_NO_VTABLE_TYPE"
},
{
"type": "STRING",
"value": "MOZ_NEVER_INLINE"
},
{
"type": "STRING",
"value": "MOZ_NEVER_INLINE_DEBUG"
},
{
"type": "STRING",
"value": "MOZ_NONHEAP_CLASS"
},
{
"type": "STRING",
"value": "MOZ_NONNULL"
},
{
"type": "STRING",
"value": "MOZ_NONNULL_RETURN"
},
{
"type": "STRING",
"value": "MOZ_NON_AUTOABLE"
},
{
"type": "STRING",
"value": "MOZ_NON_MEMMOVABLE"
},
{
"type": "STRING",
"value": "MOZ_NON_OWNING_REF"
},
{
"type": "STRING",
"value": "MOZ_NON_PARAM"
},
{
"type": "STRING",
"value": "MOZ_NON_TEMPORARY_CLASS"
},
{
"type": "STRING",
"value": "MOZ_NORETURN"
},
{
"type": "STRING",
"value": "MOZ_NORETURN_PTR"
},
{
"type": "STRING",
"value": "MOZ_NO_ADDREF_RELEASE_ON_RETURN"
},
{
"type": "STRING",
"value": "MOZ_NO_ARITHMETIC_EXPR_IN_ARGUMENT"
},
{
"type": "STRING",
"value": "MOZ_NO_DANGLING_ON_TEMPORARIES"
},
{
"type": "STRING",
"value": "MOZ_NO_SANITIZE_SIGNED_OVERFLOW"
},
{
"type": "STRING",
"value": "MOZ_NO_SANITIZE_UNSIGNED_OVERFLOW"
},
{
"type": "STRING",
"value": "MOZ_ONLY_USED_TO_AVOID_STATIC_CONSTRUCTORS"
},
{
"type": "STRING",
"value": "MOZ_OWNING_REF"
},
{
"type": "STRING",
"value": "MOZ_POP_DISABLE_NONTRIVIAL_UNION_WARNINGS"
},
{
"type": "STRING",
"value": "MOZ_PRETEND_NORETURN_FOR_STATIC_ANALYSIS"
},
{
"type": "STRING",
"value": "MOZ_PUSH_DISABLE_NONTRIVIAL_UNION_WARNINGS"
},
{
"type": "STRING",
"value": "MOZ_RAII"
},
{
"type": "STRING",
"value": "MOZ_REQUIRED_BASE_METHOD"
},
{
"type": "STRING",
"value": "MOZ_STACK_CLASS"
},
{
"type": "STRING",
"value": "MOZ_STATIC_CLASS"
},
{
"type": "STRING",
"value": "MOZ_STATIC_LOCAL_CLASS"
},
{
"type": "STRING",
"value": "MOZ_TEMPORARY_CLASS"
},
{
"type": "STRING",
"value": "MOZ_TRIVIAL_CTOR_DTOR"
},
{
"type": "STRING",
"value": "MOZ_TSAN_BLACKLIST"
},
{
"type": "STRING",
"value": "MOZ_UNSAFE_REF"
},
{
"type": "STRING",
"value": "MOZ_XPCOM_ABI"
},
{
"type": "STRING",
"value": "JS_PUBLIC_API"
}
]
}
},
"extras": [
{
"type": "PATTERN",
"value": "\\s|\\\\\\r?\\n"
},
{
"type": "SYMBOL",
"name": "comment"
}
],
"conflicts": [
[
"_type_specifier",
"_declarator"
],
[
"_type_specifier",
"_declarator",
"macro_type_specifier"
],
[
"_type_specifier",
"_expression"
],
[
"_type_specifier",
"_expression",
"macro_type_specifier"
],
[
"_type_specifier",
"macro_type_specifier"
],
[
"sized_type_specifier"
],
[
"attributed_statement"
],
[
"_declaration_modifiers",
"attributed_statement"
],
[
"template_function",
"template_type"
],
[
"template_function",
"template_type",
"_expression"
],
[
"template_function",
"template_type",
"qualified_identifier"
],
[
"template_method",
"field_expression"
],
[
"template_type",
"qualified_type_identifier"
],
[
"qualified_type_identifier",
"qualified_identifier"
],
[
"dependent_type_identifier",
"dependent_identifier"
],
[
"comma_expression",
"initializer_list"
],
[
"_expression",
"_declarator"
],
[
"_expression",
"structured_binding_declarator"
],
[
"_expression",
"_declarator",
"_type_specifier"
],
[
"parameter_list",
"argument_list"
],
[
"_type_specifier",
"call_expression"
],
[
"_declaration_specifiers",
"_constructor_specifiers"
],
[
"_declaration_modifiers",
"operator_cast_declaration",
"operator_cast_definition",
"constructor_or_destructor_definition"
],
[
"_declaration_modifiers",
"attributed_statement",
"operator_cast_declaration",
"operator_cast_definition",
"constructor_or_destructor_definition"
],
[
"attributed_statement",
"operator_cast_declaration",
"operator_cast_definition",
"constructor_or_destructor_definition"
]
],
"precedences": [],
"externals": [
{
"type": "SYMBOL",
"name": "raw_string_literal"
}
],
"inline": [
"_statement",
"_top_level_item",
"_type_identifier",
"_field_identifier",
"_statement_identifier",
"_non_case_statement",
"_assignment_left_expression",
"_namespace_identifier"
],
"supertypes": [
"_expression",
"_statement",
"_type_specifier",
"_declarator",
"_field_declarator",
"_type_declarator",
"_abstract_declarator"
]
}