summaryrefslogtreecommitdiff
path: root/vendor/tree-sitter-cuda/src/grammar.json
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/tree-sitter-cuda/src/grammar.json')
-rw-r--r--vendor/tree-sitter-cuda/src/grammar.json17137
1 files changed, 17137 insertions, 0 deletions
diff --git a/vendor/tree-sitter-cuda/src/grammar.json b/vendor/tree-sitter-cuda/src/grammar.json
new file mode 100644
index 0000000..c0cbd38
--- /dev/null
+++ b/vendor/tree-sitter-cuda/src/grammar.json
@@ -0,0 +1,17137 @@
+{
+ "0": "c",
+ "1": "p",
+ "2": "p",
+ "name": "cuda",
+ "word": "identifier",
+ "rules": {
+ "translation_unit": {
+ "type": "REPEAT",
+ "content": {
+ "type": "SYMBOL",
+ "name": "_top_level_item"
+ }
+ },
+ "_top_level_item": {
+ "type": "CHOICE",
+ "members": [
+ {
+ "type": "SYMBOL",
+ "name": "function_definition"
+ },
+ {
+ "type": "SYMBOL",
+ "name": "linkage_specification"
+ },
+ {
+ "type": "SYMBOL",
+ "name": "declaration"
+ },
+ {
+ "type": "SYMBOL",
+ "name": "_top_level_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": "concept_definition"
+ },
+ {
+ "type": "SYMBOL",
+ "name": "namespace_alias_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"
+ }
+ ]
+ },
+ "_block_item": {
+ "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": "concept_definition"
+ },
+ {
+ "type": "SYMBOL",
+ "name": "namespace_alias_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": "IMMEDIATE_TOKEN",
+ "content": {
+ "type": "PATTERN",
+ "value": "\\r?\\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": "IMMEDIATE_TOKEN",
+ "content": {
+ "type": "PATTERN",
+ "value": "\\r?\\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": "IMMEDIATE_TOKEN",
+ "content": {
+ "type": "PATTERN",
+ "value": "\\r?\\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": "IMMEDIATE_TOKEN",
+ "content": {
+ "type": "PATTERN",
+ "value": "\\r?\\n"
+ }
+ }
+ ]
+ },
+ "preproc_if": {
+ "type": "PREC",
+ "value": 0,
+ "content": {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "ALIAS",
+ "content": {
+ "type": "PATTERN",
+ "value": "#[ \t]*if"
+ },
+ "named": false,
+ "value": "#if"
+ },
+ {
+ "type": "FIELD",
+ "name": "condition",
+ "content": {
+ "type": "SYMBOL",
+ "name": "_preproc_expression"
+ }
+ },
+ {
+ "type": "STRING",
+ "value": "\n"
+ },
+ {
+ "type": "REPEAT",
+ "content": {
+ "type": "SYMBOL",
+ "name": "_block_item"
+ }
+ },
+ {
+ "type": "FIELD",
+ "name": "alternative",
+ "content": {
+ "type": "CHOICE",
+ "members": [
+ {
+ "type": "CHOICE",
+ "members": [
+ {
+ "type": "SYMBOL",
+ "name": "preproc_else"
+ },
+ {
+ "type": "SYMBOL",
+ "name": "preproc_elif"
+ },
+ {
+ "type": "SYMBOL",
+ "name": "preproc_elifdef"
+ }
+ ]
+ },
+ {
+ "type": "BLANK"
+ }
+ ]
+ }
+ },
+ {
+ "type": "ALIAS",
+ "content": {
+ "type": "PATTERN",
+ "value": "#[ \t]*endif"
+ },
+ "named": false,
+ "value": "#endif"
+ }
+ ]
+ }
+ },
+ "preproc_ifdef": {
+ "type": "PREC",
+ "value": 0,
+ "content": {
+ "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": "_block_item"
+ }
+ },
+ {
+ "type": "FIELD",
+ "name": "alternative",
+ "content": {
+ "type": "CHOICE",
+ "members": [
+ {
+ "type": "CHOICE",
+ "members": [
+ {
+ "type": "SYMBOL",
+ "name": "preproc_else"
+ },
+ {
+ "type": "SYMBOL",
+ "name": "preproc_elif"
+ },
+ {
+ "type": "SYMBOL",
+ "name": "preproc_elifdef"
+ }
+ ]
+ },
+ {
+ "type": "BLANK"
+ }
+ ]
+ }
+ },
+ {
+ "type": "ALIAS",
+ "content": {
+ "type": "PATTERN",
+ "value": "#[ \t]*endif"
+ },
+ "named": false,
+ "value": "#endif"
+ }
+ ]
+ }
+ },
+ "preproc_else": {
+ "type": "PREC",
+ "value": 0,
+ "content": {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "ALIAS",
+ "content": {
+ "type": "PATTERN",
+ "value": "#[ \t]*else"
+ },
+ "named": false,
+ "value": "#else"
+ },
+ {
+ "type": "REPEAT",
+ "content": {
+ "type": "SYMBOL",
+ "name": "_block_item"
+ }
+ }
+ ]
+ }
+ },
+ "preproc_elif": {
+ "type": "PREC",
+ "value": 0,
+ "content": {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "ALIAS",
+ "content": {
+ "type": "PATTERN",
+ "value": "#[ \t]*elif"
+ },
+ "named": false,
+ "value": "#elif"
+ },
+ {
+ "type": "FIELD",
+ "name": "condition",
+ "content": {
+ "type": "SYMBOL",
+ "name": "_preproc_expression"
+ }
+ },
+ {
+ "type": "STRING",
+ "value": "\n"
+ },
+ {
+ "type": "REPEAT",
+ "content": {
+ "type": "SYMBOL",
+ "name": "_block_item"
+ }
+ },
+ {
+ "type": "FIELD",
+ "name": "alternative",
+ "content": {
+ "type": "CHOICE",
+ "members": [
+ {
+ "type": "CHOICE",
+ "members": [
+ {
+ "type": "SYMBOL",
+ "name": "preproc_else"
+ },
+ {
+ "type": "SYMBOL",
+ "name": "preproc_elif"
+ },
+ {
+ "type": "SYMBOL",
+ "name": "preproc_elifdef"
+ }
+ ]
+ },
+ {
+ "type": "BLANK"
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ "preproc_elifdef": {
+ "type": "PREC",
+ "value": 0,
+ "content": {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "CHOICE",
+ "members": [
+ {
+ "type": "ALIAS",
+ "content": {
+ "type": "PATTERN",
+ "value": "#[ \t]*elifdef"
+ },
+ "named": false,
+ "value": "#elifdef"
+ },
+ {
+ "type": "ALIAS",
+ "content": {
+ "type": "PATTERN",
+ "value": "#[ \t]*elifndef"
+ },
+ "named": false,
+ "value": "#elifndef"
+ }
+ ]
+ },
+ {
+ "type": "FIELD",
+ "name": "name",
+ "content": {
+ "type": "SYMBOL",
+ "name": "identifier"
+ }
+ },
+ {
+ "type": "REPEAT",
+ "content": {
+ "type": "SYMBOL",
+ "name": "_block_item"
+ }
+ },
+ {
+ "type": "FIELD",
+ "name": "alternative",
+ "content": {
+ "type": "CHOICE",
+ "members": [
+ {
+ "type": "CHOICE",
+ "members": [
+ {
+ "type": "SYMBOL",
+ "name": "preproc_else"
+ },
+ {
+ "type": "SYMBOL",
+ "name": "preproc_elif"
+ },
+ {
+ "type": "SYMBOL",
+ "name": "preproc_elifdef"
+ }
+ ]
+ },
+ {
+ "type": "BLANK"
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ "preproc_if_in_field_declaration_list": {
+ "type": "PREC",
+ "value": 0,
+ "content": {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "ALIAS",
+ "content": {
+ "type": "PATTERN",
+ "value": "#[ \t]*if"
+ },
+ "named": false,
+ "value": "#if"
+ },
+ {
+ "type": "FIELD",
+ "name": "condition",
+ "content": {
+ "type": "SYMBOL",
+ "name": "_preproc_expression"
+ }
+ },
+ {
+ "type": "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": "ALIAS",
+ "content": {
+ "type": "SYMBOL",
+ "name": "preproc_elifdef_in_field_declaration_list"
+ },
+ "named": true,
+ "value": "preproc_elifdef"
+ }
+ ]
+ },
+ {
+ "type": "BLANK"
+ }
+ ]
+ }
+ },
+ {
+ "type": "ALIAS",
+ "content": {
+ "type": "PATTERN",
+ "value": "#[ \t]*endif"
+ },
+ "named": false,
+ "value": "#endif"
+ }
+ ]
+ }
+ },
+ "preproc_ifdef_in_field_declaration_list": {
+ "type": "PREC",
+ "value": 0,
+ "content": {
+ "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": "ALIAS",
+ "content": {
+ "type": "SYMBOL",
+ "name": "preproc_elifdef_in_field_declaration_list"
+ },
+ "named": true,
+ "value": "preproc_elifdef"
+ }
+ ]
+ },
+ {
+ "type": "BLANK"
+ }
+ ]
+ }
+ },
+ {
+ "type": "ALIAS",
+ "content": {
+ "type": "PATTERN",
+ "value": "#[ \t]*endif"
+ },
+ "named": false,
+ "value": "#endif"
+ }
+ ]
+ }
+ },
+ "preproc_else_in_field_declaration_list": {
+ "type": "PREC",
+ "value": 0,
+ "content": {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "ALIAS",
+ "content": {
+ "type": "PATTERN",
+ "value": "#[ \t]*else"
+ },
+ "named": false,
+ "value": "#else"
+ },
+ {
+ "type": "REPEAT",
+ "content": {
+ "type": "SYMBOL",
+ "name": "_field_declaration_list_item"
+ }
+ }
+ ]
+ }
+ },
+ "preproc_elif_in_field_declaration_list": {
+ "type": "PREC",
+ "value": 0,
+ "content": {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "ALIAS",
+ "content": {
+ "type": "PATTERN",
+ "value": "#[ \t]*elif"
+ },
+ "named": false,
+ "value": "#elif"
+ },
+ {
+ "type": "FIELD",
+ "name": "condition",
+ "content": {
+ "type": "SYMBOL",
+ "name": "_preproc_expression"
+ }
+ },
+ {
+ "type": "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": "ALIAS",
+ "content": {
+ "type": "SYMBOL",
+ "name": "preproc_elifdef_in_field_declaration_list"
+ },
+ "named": true,
+ "value": "preproc_elifdef"
+ }
+ ]
+ },
+ {
+ "type": "BLANK"
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ "preproc_elifdef_in_field_declaration_list": {
+ "type": "PREC",
+ "value": 0,
+ "content": {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "CHOICE",
+ "members": [
+ {
+ "type": "ALIAS",
+ "content": {
+ "type": "PATTERN",
+ "value": "#[ \t]*elifdef"
+ },
+ "named": false,
+ "value": "#elifdef"
+ },
+ {
+ "type": "ALIAS",
+ "content": {
+ "type": "PATTERN",
+ "value": "#[ \t]*elifndef"
+ },
+ "named": false,
+ "value": "#elifndef"
+ }
+ ]
+ },
+ {
+ "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": "ALIAS",
+ "content": {
+ "type": "SYMBOL",
+ "name": "preproc_elifdef_in_field_declaration_list"
+ },
+ "named": true,
+ "value": "preproc_elifdef"
+ }
+ ]
+ },
+ {
+ "type": "BLANK"
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ "preproc_if_in_enumerator_list": {
+ "type": "PREC",
+ "value": 0,
+ "content": {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "ALIAS",
+ "content": {
+ "type": "PATTERN",
+ "value": "#[ \t]*if"
+ },
+ "named": false,
+ "value": "#if"
+ },
+ {
+ "type": "FIELD",
+ "name": "condition",
+ "content": {
+ "type": "SYMBOL",
+ "name": "_preproc_expression"
+ }
+ },
+ {
+ "type": "STRING",
+ "value": "\n"
+ },
+ {
+ "type": "REPEAT",
+ "content": {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "SYMBOL",
+ "name": "enumerator"
+ },
+ {
+ "type": "STRING",
+ "value": ","
+ }
+ ]
+ }
+ },
+ {
+ "type": "FIELD",
+ "name": "alternative",
+ "content": {
+ "type": "CHOICE",
+ "members": [
+ {
+ "type": "CHOICE",
+ "members": [
+ {
+ "type": "ALIAS",
+ "content": {
+ "type": "SYMBOL",
+ "name": "preproc_else_in_enumerator_list"
+ },
+ "named": true,
+ "value": "preproc_else"
+ },
+ {
+ "type": "ALIAS",
+ "content": {
+ "type": "SYMBOL",
+ "name": "preproc_elif_in_enumerator_list"
+ },
+ "named": true,
+ "value": "preproc_elif"
+ },
+ {
+ "type": "ALIAS",
+ "content": {
+ "type": "SYMBOL",
+ "name": "preproc_elifdef_in_enumerator_list"
+ },
+ "named": true,
+ "value": "preproc_elifdef"
+ }
+ ]
+ },
+ {
+ "type": "BLANK"
+ }
+ ]
+ }
+ },
+ {
+ "type": "ALIAS",
+ "content": {
+ "type": "PATTERN",
+ "value": "#[ \t]*endif"
+ },
+ "named": false,
+ "value": "#endif"
+ }
+ ]
+ }
+ },
+ "preproc_ifdef_in_enumerator_list": {
+ "type": "PREC",
+ "value": 0,
+ "content": {
+ "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": "SEQ",
+ "members": [
+ {
+ "type": "SYMBOL",
+ "name": "enumerator"
+ },
+ {
+ "type": "STRING",
+ "value": ","
+ }
+ ]
+ }
+ },
+ {
+ "type": "FIELD",
+ "name": "alternative",
+ "content": {
+ "type": "CHOICE",
+ "members": [
+ {
+ "type": "CHOICE",
+ "members": [
+ {
+ "type": "ALIAS",
+ "content": {
+ "type": "SYMBOL",
+ "name": "preproc_else_in_enumerator_list"
+ },
+ "named": true,
+ "value": "preproc_else"
+ },
+ {
+ "type": "ALIAS",
+ "content": {
+ "type": "SYMBOL",
+ "name": "preproc_elif_in_enumerator_list"
+ },
+ "named": true,
+ "value": "preproc_elif"
+ },
+ {
+ "type": "ALIAS",
+ "content": {
+ "type": "SYMBOL",
+ "name": "preproc_elifdef_in_enumerator_list"
+ },
+ "named": true,
+ "value": "preproc_elifdef"
+ }
+ ]
+ },
+ {
+ "type": "BLANK"
+ }
+ ]
+ }
+ },
+ {
+ "type": "ALIAS",
+ "content": {
+ "type": "PATTERN",
+ "value": "#[ \t]*endif"
+ },
+ "named": false,
+ "value": "#endif"
+ }
+ ]
+ }
+ },
+ "preproc_else_in_enumerator_list": {
+ "type": "PREC",
+ "value": 0,
+ "content": {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "ALIAS",
+ "content": {
+ "type": "PATTERN",
+ "value": "#[ \t]*else"
+ },
+ "named": false,
+ "value": "#else"
+ },
+ {
+ "type": "REPEAT",
+ "content": {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "SYMBOL",
+ "name": "enumerator"
+ },
+ {
+ "type": "STRING",
+ "value": ","
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ "preproc_elif_in_enumerator_list": {
+ "type": "PREC",
+ "value": 0,
+ "content": {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "ALIAS",
+ "content": {
+ "type": "PATTERN",
+ "value": "#[ \t]*elif"
+ },
+ "named": false,
+ "value": "#elif"
+ },
+ {
+ "type": "FIELD",
+ "name": "condition",
+ "content": {
+ "type": "SYMBOL",
+ "name": "_preproc_expression"
+ }
+ },
+ {
+ "type": "STRING",
+ "value": "\n"
+ },
+ {
+ "type": "REPEAT",
+ "content": {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "SYMBOL",
+ "name": "enumerator"
+ },
+ {
+ "type": "STRING",
+ "value": ","
+ }
+ ]
+ }
+ },
+ {
+ "type": "FIELD",
+ "name": "alternative",
+ "content": {
+ "type": "CHOICE",
+ "members": [
+ {
+ "type": "CHOICE",
+ "members": [
+ {
+ "type": "ALIAS",
+ "content": {
+ "type": "SYMBOL",
+ "name": "preproc_else_in_enumerator_list"
+ },
+ "named": true,
+ "value": "preproc_else"
+ },
+ {
+ "type": "ALIAS",
+ "content": {
+ "type": "SYMBOL",
+ "name": "preproc_elif_in_enumerator_list"
+ },
+ "named": true,
+ "value": "preproc_elif"
+ },
+ {
+ "type": "ALIAS",
+ "content": {
+ "type": "SYMBOL",
+ "name": "preproc_elifdef_in_enumerator_list"
+ },
+ "named": true,
+ "value": "preproc_elifdef"
+ }
+ ]
+ },
+ {
+ "type": "BLANK"
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ "preproc_elifdef_in_enumerator_list": {
+ "type": "PREC",
+ "value": 0,
+ "content": {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "CHOICE",
+ "members": [
+ {
+ "type": "ALIAS",
+ "content": {
+ "type": "PATTERN",
+ "value": "#[ \t]*elifdef"
+ },
+ "named": false,
+ "value": "#elifdef"
+ },
+ {
+ "type": "ALIAS",
+ "content": {
+ "type": "PATTERN",
+ "value": "#[ \t]*elifndef"
+ },
+ "named": false,
+ "value": "#elifndef"
+ }
+ ]
+ },
+ {
+ "type": "FIELD",
+ "name": "name",
+ "content": {
+ "type": "SYMBOL",
+ "name": "identifier"
+ }
+ },
+ {
+ "type": "REPEAT",
+ "content": {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "SYMBOL",
+ "name": "enumerator"
+ },
+ {
+ "type": "STRING",
+ "value": ","
+ }
+ ]
+ }
+ },
+ {
+ "type": "FIELD",
+ "name": "alternative",
+ "content": {
+ "type": "CHOICE",
+ "members": [
+ {
+ "type": "CHOICE",
+ "members": [
+ {
+ "type": "ALIAS",
+ "content": {
+ "type": "SYMBOL",
+ "name": "preproc_else_in_enumerator_list"
+ },
+ "named": true,
+ "value": "preproc_else"
+ },
+ {
+ "type": "ALIAS",
+ "content": {
+ "type": "SYMBOL",
+ "name": "preproc_elif_in_enumerator_list"
+ },
+ "named": true,
+ "value": "preproc_elif"
+ },
+ {
+ "type": "ALIAS",
+ "content": {
+ "type": "SYMBOL",
+ "name": "preproc_elifdef_in_enumerator_list"
+ },
+ "named": true,
+ "value": "preproc_elifdef"
+ }
+ ]
+ },
+ {
+ "type": "BLANK"
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ "preproc_if_in_enumerator_list_no_comma": {
+ "type": "PREC",
+ "value": -1,
+ "content": {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "ALIAS",
+ "content": {
+ "type": "PATTERN",
+ "value": "#[ \t]*if"
+ },
+ "named": false,
+ "value": "#if"
+ },
+ {
+ "type": "FIELD",
+ "name": "condition",
+ "content": {
+ "type": "SYMBOL",
+ "name": "_preproc_expression"
+ }
+ },
+ {
+ "type": "STRING",
+ "value": "\n"
+ },
+ {
+ "type": "REPEAT",
+ "content": {
+ "type": "SYMBOL",
+ "name": "enumerator"
+ }
+ },
+ {
+ "type": "FIELD",
+ "name": "alternative",
+ "content": {
+ "type": "CHOICE",
+ "members": [
+ {
+ "type": "CHOICE",
+ "members": [
+ {
+ "type": "ALIAS",
+ "content": {
+ "type": "SYMBOL",
+ "name": "preproc_else_in_enumerator_list_no_comma"
+ },
+ "named": true,
+ "value": "preproc_else"
+ },
+ {
+ "type": "ALIAS",
+ "content": {
+ "type": "SYMBOL",
+ "name": "preproc_elif_in_enumerator_list_no_comma"
+ },
+ "named": true,
+ "value": "preproc_elif"
+ },
+ {
+ "type": "ALIAS",
+ "content": {
+ "type": "SYMBOL",
+ "name": "preproc_elifdef_in_enumerator_list_no_comma"
+ },
+ "named": true,
+ "value": "preproc_elifdef"
+ }
+ ]
+ },
+ {
+ "type": "BLANK"
+ }
+ ]
+ }
+ },
+ {
+ "type": "ALIAS",
+ "content": {
+ "type": "PATTERN",
+ "value": "#[ \t]*endif"
+ },
+ "named": false,
+ "value": "#endif"
+ }
+ ]
+ }
+ },
+ "preproc_ifdef_in_enumerator_list_no_comma": {
+ "type": "PREC",
+ "value": -1,
+ "content": {
+ "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": "enumerator"
+ }
+ },
+ {
+ "type": "FIELD",
+ "name": "alternative",
+ "content": {
+ "type": "CHOICE",
+ "members": [
+ {
+ "type": "CHOICE",
+ "members": [
+ {
+ "type": "ALIAS",
+ "content": {
+ "type": "SYMBOL",
+ "name": "preproc_else_in_enumerator_list_no_comma"
+ },
+ "named": true,
+ "value": "preproc_else"
+ },
+ {
+ "type": "ALIAS",
+ "content": {
+ "type": "SYMBOL",
+ "name": "preproc_elif_in_enumerator_list_no_comma"
+ },
+ "named": true,
+ "value": "preproc_elif"
+ },
+ {
+ "type": "ALIAS",
+ "content": {
+ "type": "SYMBOL",
+ "name": "preproc_elifdef_in_enumerator_list_no_comma"
+ },
+ "named": true,
+ "value": "preproc_elifdef"
+ }
+ ]
+ },
+ {
+ "type": "BLANK"
+ }
+ ]
+ }
+ },
+ {
+ "type": "ALIAS",
+ "content": {
+ "type": "PATTERN",
+ "value": "#[ \t]*endif"
+ },
+ "named": false,
+ "value": "#endif"
+ }
+ ]
+ }
+ },
+ "preproc_else_in_enumerator_list_no_comma": {
+ "type": "PREC",
+ "value": -1,
+ "content": {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "ALIAS",
+ "content": {
+ "type": "PATTERN",
+ "value": "#[ \t]*else"
+ },
+ "named": false,
+ "value": "#else"
+ },
+ {
+ "type": "REPEAT",
+ "content": {
+ "type": "SYMBOL",
+ "name": "enumerator"
+ }
+ }
+ ]
+ }
+ },
+ "preproc_elif_in_enumerator_list_no_comma": {
+ "type": "PREC",
+ "value": -1,
+ "content": {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "ALIAS",
+ "content": {
+ "type": "PATTERN",
+ "value": "#[ \t]*elif"
+ },
+ "named": false,
+ "value": "#elif"
+ },
+ {
+ "type": "FIELD",
+ "name": "condition",
+ "content": {
+ "type": "SYMBOL",
+ "name": "_preproc_expression"
+ }
+ },
+ {
+ "type": "STRING",
+ "value": "\n"
+ },
+ {
+ "type": "REPEAT",
+ "content": {
+ "type": "SYMBOL",
+ "name": "enumerator"
+ }
+ },
+ {
+ "type": "FIELD",
+ "name": "alternative",
+ "content": {
+ "type": "CHOICE",
+ "members": [
+ {
+ "type": "CHOICE",
+ "members": [
+ {
+ "type": "ALIAS",
+ "content": {
+ "type": "SYMBOL",
+ "name": "preproc_else_in_enumerator_list_no_comma"
+ },
+ "named": true,
+ "value": "preproc_else"
+ },
+ {
+ "type": "ALIAS",
+ "content": {
+ "type": "SYMBOL",
+ "name": "preproc_elif_in_enumerator_list_no_comma"
+ },
+ "named": true,
+ "value": "preproc_elif"
+ },
+ {
+ "type": "ALIAS",
+ "content": {
+ "type": "SYMBOL",
+ "name": "preproc_elifdef_in_enumerator_list_no_comma"
+ },
+ "named": true,
+ "value": "preproc_elifdef"
+ }
+ ]
+ },
+ {
+ "type": "BLANK"
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ "preproc_elifdef_in_enumerator_list_no_comma": {
+ "type": "PREC",
+ "value": -1,
+ "content": {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "CHOICE",
+ "members": [
+ {
+ "type": "ALIAS",
+ "content": {
+ "type": "PATTERN",
+ "value": "#[ \t]*elifdef"
+ },
+ "named": false,
+ "value": "#elifdef"
+ },
+ {
+ "type": "ALIAS",
+ "content": {
+ "type": "PATTERN",
+ "value": "#[ \t]*elifndef"
+ },
+ "named": false,
+ "value": "#elifndef"
+ }
+ ]
+ },
+ {
+ "type": "FIELD",
+ "name": "name",
+ "content": {
+ "type": "SYMBOL",
+ "name": "identifier"
+ }
+ },
+ {
+ "type": "REPEAT",
+ "content": {
+ "type": "SYMBOL",
+ "name": "enumerator"
+ }
+ },
+ {
+ "type": "FIELD",
+ "name": "alternative",
+ "content": {
+ "type": "CHOICE",
+ "members": [
+ {
+ "type": "CHOICE",
+ "members": [
+ {
+ "type": "ALIAS",
+ "content": {
+ "type": "SYMBOL",
+ "name": "preproc_else_in_enumerator_list_no_comma"
+ },
+ "named": true,
+ "value": "preproc_else"
+ },
+ {
+ "type": "ALIAS",
+ "content": {
+ "type": "SYMBOL",
+ "name": "preproc_elif_in_enumerator_list_no_comma"
+ },
+ "named": true,
+ "value": "preproc_elif"
+ },
+ {
+ "type": "ALIAS",
+ "content": {
+ "type": "SYMBOL",
+ "name": "preproc_elifdef_in_enumerator_list_no_comma"
+ },
+ "named": true,
+ "value": "preproc_elifdef"
+ }
+ ]
+ },
+ {
+ "type": "BLANK"
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ "preproc_arg": {
+ "type": "TOKEN",
+ "content": {
+ "type": "PREC",
+ "value": -1,
+ "content": {
+ "type": "PATTERN",
+ "value": "\\S([^/\\n]|\\/[^*]|\\\\\\r?\\n)*"
+ }
+ }
+ },
+ "preproc_directive": {
+ "type": "PATTERN",
+ "value": "#[ \\t]*[a-zA-Z0-9]\\w*"
+ },
+ "_preproc_expression": {
+ "type": "CHOICE",
+ "members": [
+ {
+ "type": "SYMBOL",
+ "name": "identifier"
+ },
+ {
+ "type": "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": 15,
+ "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": 14,
+ "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": 15,
+ "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": "CHOICE",
+ "members": [
+ {
+ "type": "SYMBOL",
+ "name": "ms_call_modifier"
+ },
+ {
+ "type": "BLANK"
+ }
+ ]
+ },
+ {
+ "type": "FIELD",
+ "name": "declarator",
+ "content": {
+ "type": "SYMBOL",
+ "name": "_declarator"
+ }
+ },
+ {
+ "type": "FIELD",
+ "name": "body",
+ "content": {
+ "type": "CHOICE",
+ "members": [
+ {
+ "type": "SYMBOL",
+ "name": "compound_statement"
+ },
+ {
+ "type": "SYMBOL",
+ "name": "try_statement"
+ }
+ ]
+ }
+ }
+ ]
+ },
+ "_old_style_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": "ALIAS",
+ "content": {
+ "type": "SYMBOL",
+ "name": "_old_style_function_declarator"
+ },
+ "named": true,
+ "value": "function_declarator"
+ }
+ },
+ {
+ "type": "REPEAT",
+ "content": {
+ "type": "SYMBOL",
+ "name": "declaration"
+ }
+ },
+ {
+ "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": "SEQ",
+ "members": [
+ {
+ "type": "SYMBOL",
+ "name": "_declarator"
+ },
+ {
+ "type": "CHOICE",
+ "members": [
+ {
+ "type": "SYMBOL",
+ "name": "gnu_asm_expression"
+ },
+ {
+ "type": "BLANK"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "SYMBOL",
+ "name": "init_declarator"
+ }
+ ]
+ }
+ },
+ {
+ "type": "REPEAT",
+ "content": {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "STRING",
+ "value": ","
+ },
+ {
+ "type": "FIELD",
+ "name": "declarator",
+ "content": {
+ "type": "CHOICE",
+ "members": [
+ {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "SYMBOL",
+ "name": "_declarator"
+ },
+ {
+ "type": "CHOICE",
+ "members": [
+ {
+ "type": "SYMBOL",
+ "name": "gnu_asm_expression"
+ },
+ {
+ "type": "BLANK"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "SYMBOL",
+ "name": "init_declarator"
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ ]
+ },
+ {
+ "type": "STRING",
+ "value": ";"
+ }
+ ]
+ },
+ "type_definition": {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "CHOICE",
+ "members": [
+ {
+ "type": "STRING",
+ "value": "__extension__"
+ },
+ {
+ "type": "BLANK"
+ }
+ ]
+ },
+ {
+ "type": "STRING",
+ "value": "typedef"
+ },
+ {
+ "type": "SYMBOL",
+ "name": "_type_definition_type"
+ },
+ {
+ "type": "SYMBOL",
+ "name": "_type_definition_declarators"
+ },
+ {
+ "type": "REPEAT",
+ "content": {
+ "type": "SYMBOL",
+ "name": "attribute_specifier"
+ }
+ },
+ {
+ "type": "STRING",
+ "value": ";"
+ }
+ ]
+ },
+ "_type_definition_type": {
+ "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_definition_declarators": {
+ "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"
+ }
+ }
+ ]
+ }
+ }
+ ]
+ },
+ "_declaration_modifiers": {
+ "type": "CHOICE",
+ "members": [
+ {
+ "type": "SYMBOL",
+ "name": "launch_bounds"
+ },
+ {
+ "type": "STRING",
+ "value": "__device__"
+ },
+ {
+ "type": "STRING",
+ "value": "__host__"
+ },
+ {
+ "type": "PREC",
+ "value": 10,
+ "content": {
+ "type": "STRING",
+ "value": "__global__"
+ }
+ },
+ {
+ "type": "STRING",
+ "value": "__forceinline__"
+ },
+ {
+ "type": "STRING",
+ "value": "__noinline__"
+ },
+ {
+ "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"
+ }
+ ]
+ }
+ ]
+ },
+ "_declaration_specifiers": {
+ "type": "PREC_RIGHT",
+ "value": 0,
+ "content": {
+ "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": "_block_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"
+ }
+ ]
+ },
+ "_declaration_declarator": {
+ "type": "CHOICE",
+ "members": [
+ {
+ "type": "SYMBOL",
+ "name": "attributed_declarator"
+ },
+ {
+ "type": "SYMBOL",
+ "name": "pointer_declarator"
+ },
+ {
+ "type": "ALIAS",
+ "content": {
+ "type": "SYMBOL",
+ "name": "_function_declaration_declarator"
+ },
+ "named": true,
+ "value": "function_declarator"
+ },
+ {
+ "type": "SYMBOL",
+ "name": "array_declarator"
+ },
+ {
+ "type": "SYMBOL",
+ "name": "parenthesized_declarator"
+ },
+ {
+ "type": "SYMBOL",
+ "name": "identifier"
+ }
+ ]
+ },
+ "_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": "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"
+ },
+ {
+ "type": "ALIAS",
+ "content": {
+ "type": "CHOICE",
+ "members": [
+ {
+ "type": "STRING",
+ "value": "signed"
+ },
+ {
+ "type": "STRING",
+ "value": "unsigned"
+ },
+ {
+ "type": "STRING",
+ "value": "long"
+ },
+ {
+ "type": "STRING",
+ "value": "short"
+ }
+ ]
+ },
+ "named": true,
+ "value": "primitive_type"
+ },
+ {
+ "type": "SYMBOL",
+ "name": "primitive_type"
+ }
+ ]
+ },
+ {
+ "type": "ALIAS",
+ "content": {
+ "type": "SYMBOL",
+ "name": "reference_type_declarator"
+ },
+ "named": true,
+ "value": "reference_declarator"
+ }
+ ]
+ },
+ "_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": "CHOICE",
+ "members": [
+ {
+ "type": "SYMBOL",
+ "name": "ms_call_modifier"
+ },
+ {
+ "type": "BLANK"
+ }
+ ]
+ },
+ {
+ "type": "SYMBOL",
+ "name": "_declarator"
+ },
+ {
+ "type": "STRING",
+ "value": ")"
+ }
+ ]
+ }
+ },
+ "parenthesized_field_declarator": {
+ "type": "PREC_DYNAMIC",
+ "value": -10,
+ "content": {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "STRING",
+ "value": "("
+ },
+ {
+ "type": "CHOICE",
+ "members": [
+ {
+ "type": "SYMBOL",
+ "name": "ms_call_modifier"
+ },
+ {
+ "type": "BLANK"
+ }
+ ]
+ },
+ {
+ "type": "SYMBOL",
+ "name": "_field_declarator"
+ },
+ {
+ "type": "STRING",
+ "value": ")"
+ }
+ ]
+ }
+ },
+ "parenthesized_type_declarator": {
+ "type": "PREC_DYNAMIC",
+ "value": -10,
+ "content": {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "STRING",
+ "value": "("
+ },
+ {
+ "type": "CHOICE",
+ "members": [
+ {
+ "type": "SYMBOL",
+ "name": "ms_call_modifier"
+ },
+ {
+ "type": "BLANK"
+ }
+ ]
+ },
+ {
+ "type": "SYMBOL",
+ "name": "_type_declarator"
+ },
+ {
+ "type": "STRING",
+ "value": ")"
+ }
+ ]
+ }
+ },
+ "abstract_parenthesized_declarator": {
+ "type": "PREC",
+ "value": 1,
+ "content": {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "STRING",
+ "value": "("
+ },
+ {
+ "type": "CHOICE",
+ "members": [
+ {
+ "type": "SYMBOL",
+ "name": "ms_call_modifier"
+ },
+ {
+ "type": "BLANK"
+ }
+ ]
+ },
+ {
+ "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": "ms_pointer_modifier"
+ }
+ },
+ {
+ "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": "FIELD",
+ "name": "declarator",
+ "content": {
+ "type": "SYMBOL",
+ "name": "_declarator"
+ }
+ },
+ {
+ "type": "SYMBOL",
+ "name": "_function_declarator_seq"
+ }
+ ]
+ }
+ },
+ "_function_declaration_declarator": {
+ "type": "PREC_RIGHT",
+ "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": "CHOICE",
+ "members": [
+ {
+ "type": "SYMBOL",
+ "name": "gnu_asm_expression"
+ },
+ {
+ "type": "BLANK"
+ }
+ ]
+ },
+ {
+ "type": "REPEAT",
+ "content": {
+ "type": "SYMBOL",
+ "name": "attribute_specifier"
+ }
+ }
+ ]
+ }
+ },
+ "function_field_declarator": {
+ "type": "PREC_DYNAMIC",
+ "value": 1,
+ "content": {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "FIELD",
+ "name": "declarator",
+ "content": {
+ "type": "SYMBOL",
+ "name": "_field_declarator"
+ }
+ },
+ {
+ "type": "SYMBOL",
+ "name": "_function_declarator_seq"
+ }
+ ]
+ }
+ },
+ "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": "SEQ",
+ "members": [
+ {
+ "type": "FIELD",
+ "name": "declarator",
+ "content": {
+ "type": "CHOICE",
+ "members": [
+ {
+ "type": "SYMBOL",
+ "name": "_abstract_declarator"
+ },
+ {
+ "type": "BLANK"
+ }
+ ]
+ }
+ },
+ {
+ "type": "SYMBOL",
+ "name": "_function_declarator_seq"
+ }
+ ]
+ },
+ "_old_style_function_declarator": {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "FIELD",
+ "name": "declarator",
+ "content": {
+ "type": "SYMBOL",
+ "name": "_declarator"
+ }
+ },
+ {
+ "type": "FIELD",
+ "name": "parameters",
+ "content": {
+ "type": "ALIAS",
+ "content": {
+ "type": "SYMBOL",
+ "name": "_old_style_parameter_list"
+ },
+ "named": true,
+ "value": "parameter_list"
+ }
+ }
+ ]
+ },
+ "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": "CHOICE",
+ "members": [
+ {
+ "type": "SYMBOL",
+ "name": "type_qualifier"
+ },
+ {
+ "type": "STRING",
+ "value": "static"
+ }
+ ]
+ }
+ },
+ {
+ "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": "CHOICE",
+ "members": [
+ {
+ "type": "SYMBOL",
+ "name": "type_qualifier"
+ },
+ {
+ "type": "STRING",
+ "value": "static"
+ }
+ ]
+ }
+ },
+ {
+ "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": "CHOICE",
+ "members": [
+ {
+ "type": "SYMBOL",
+ "name": "type_qualifier"
+ },
+ {
+ "type": "STRING",
+ "value": "static"
+ }
+ ]
+ }
+ },
+ {
+ "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": "CHOICE",
+ "members": [
+ {
+ "type": "SYMBOL",
+ "name": "type_qualifier"
+ },
+ {
+ "type": "STRING",
+ "value": "static"
+ }
+ ]
+ }
+ },
+ {
+ "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": "_block_item"
+ }
+ },
+ {
+ "type": "STRING",
+ "value": "}"
+ }
+ ]
+ }
+ },
+ "storage_class_specifier": {
+ "type": "CHOICE",
+ "members": [
+ {
+ "type": "STRING",
+ "value": "extern"
+ },
+ {
+ "type": "STRING",
+ "value": "static"
+ },
+ {
+ "type": "STRING",
+ "value": "register"
+ },
+ {
+ "type": "STRING",
+ "value": "inline"
+ },
+ {
+ "type": "STRING",
+ "value": "__inline"
+ },
+ {
+ "type": "STRING",
+ "value": "__inline__"
+ },
+ {
+ "type": "STRING",
+ "value": "__forceinline"
+ },
+ {
+ "type": "STRING",
+ "value": "thread_local"
+ },
+ {
+ "type": "STRING",
+ "value": "__thread"
+ },
+ {
+ "type": "STRING",
+ "value": "thread_local"
+ }
+ ]
+ },
+ "type_qualifier": {
+ "type": "CHOICE",
+ "members": [
+ {
+ "type": "CHOICE",
+ "members": [
+ {
+ "type": "CHOICE",
+ "members": [
+ {
+ "type": "STRING",
+ "value": "const"
+ },
+ {
+ "type": "STRING",
+ "value": "constexpr"
+ },
+ {
+ "type": "STRING",
+ "value": "volatile"
+ },
+ {
+ "type": "STRING",
+ "value": "restrict"
+ },
+ {
+ "type": "STRING",
+ "value": "__restrict__"
+ },
+ {
+ "type": "STRING",
+ "value": "__extension__"
+ },
+ {
+ "type": "STRING",
+ "value": "_Atomic"
+ },
+ {
+ "type": "STRING",
+ "value": "_Noreturn"
+ },
+ {
+ "type": "STRING",
+ "value": "noreturn"
+ },
+ {
+ "type": "SYMBOL",
+ "name": "alignas_qualifier"
+ }
+ ]
+ },
+ {
+ "type": "STRING",
+ "value": "mutable"
+ },
+ {
+ "type": "STRING",
+ "value": "constinit"
+ },
+ {
+ "type": "STRING",
+ "value": "consteval"
+ }
+ ]
+ },
+ {
+ "type": "STRING",
+ "value": "__shared__"
+ },
+ {
+ "type": "STRING",
+ "value": "__global__"
+ },
+ {
+ "type": "STRING",
+ "value": "__local__"
+ },
+ {
+ "type": "STRING",
+ "value": "__constant__"
+ },
+ {
+ "type": "STRING",
+ "value": "__managed__"
+ },
+ {
+ "type": "STRING",
+ "value": "__grid_constant__"
+ }
+ ]
+ },
+ "alignas_qualifier": {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "CHOICE",
+ "members": [
+ {
+ "type": "STRING",
+ "value": "alignas"
+ },
+ {
+ "type": "STRING",
+ "value": "_Alignas"
+ }
+ ]
+ },
+ {
+ "type": "STRING",
+ "value": "("
+ },
+ {
+ "type": "CHOICE",
+ "members": [
+ {
+ "type": "SYMBOL",
+ "name": "expression"
+ },
+ {
+ "type": "SYMBOL",
+ "name": "type_descriptor"
+ }
+ ]
+ },
+ {
+ "type": "STRING",
+ "value": ")"
+ }
+ ]
+ },
+ "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": "dependent_type"
+ },
+ {
+ "type": "SYMBOL",
+ "name": "placeholder_type_specifier"
+ },
+ {
+ "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": "CHOICE",
+ "members": [
+ {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "REPEAT",
+ "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"
+ }
+ ]
+ }
+ },
+ {
+ "type": "REPEAT1",
+ "content": {
+ "type": "CHOICE",
+ "members": [
+ {
+ "type": "STRING",
+ "value": "signed"
+ },
+ {
+ "type": "STRING",
+ "value": "unsigned"
+ },
+ {
+ "type": "STRING",
+ "value": "long"
+ },
+ {
+ "type": "STRING",
+ "value": "short"
+ }
+ ]
+ }
+ }
+ ]
+ },
+ {
+ "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"
+ }
+ ]
+ }
+ },
+ {
+ "type": "REPEAT",
+ "content": {
+ "type": "CHOICE",
+ "members": [
+ {
+ "type": "STRING",
+ "value": "signed"
+ },
+ {
+ "type": "STRING",
+ "value": "unsigned"
+ },
+ {
+ "type": "STRING",
+ "value": "long"
+ },
+ {
+ "type": "STRING",
+ "value": "short"
+ }
+ ]
+ }
+ }
+ ]
+ }
+ ]
+ },
+ "primitive_type": {
+ "type": "TOKEN",
+ "content": {
+ "type": "CHOICE",
+ "members": [
+ {
+ "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": "ptrdiff_t"
+ },
+ {
+ "type": "STRING",
+ "value": "intptr_t"
+ },
+ {
+ "type": "STRING",
+ "value": "uintptr_t"
+ },
+ {
+ "type": "STRING",
+ "value": "charptr_t"
+ },
+ {
+ "type": "STRING",
+ "value": "nullptr_t"
+ },
+ {
+ "type": "STRING",
+ "value": "max_align_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"
+ }
+ ]
+ }
+ },
+ "enum_specifier": {
+ "type": "PREC_RIGHT",
+ "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"
+ }
+ }
+ ]
+ },
+ {
+ "type": "CHOICE",
+ "members": [
+ {
+ "type": "SYMBOL",
+ "name": "attribute_specifier"
+ },
+ {
+ "type": "BLANK"
+ }
+ ]
+ }
+ ]
+ }
+ },
+ "enumerator_list": {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "STRING",
+ "value": "{"
+ },
+ {
+ "type": "REPEAT",
+ "content": {
+ "type": "CHOICE",
+ "members": [
+ {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "SYMBOL",
+ "name": "enumerator"
+ },
+ {
+ "type": "STRING",
+ "value": ","
+ }
+ ]
+ },
+ {
+ "type": "ALIAS",
+ "content": {
+ "type": "SYMBOL",
+ "name": "preproc_if_in_enumerator_list"
+ },
+ "named": true,
+ "value": "preproc_if"
+ },
+ {
+ "type": "ALIAS",
+ "content": {
+ "type": "SYMBOL",
+ "name": "preproc_ifdef_in_enumerator_list"
+ },
+ "named": true,
+ "value": "preproc_ifdef"
+ },
+ {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "SYMBOL",
+ "name": "preproc_call"
+ },
+ {
+ "type": "STRING",
+ "value": ","
+ }
+ ]
+ }
+ ]
+ }
+ },
+ {
+ "type": "CHOICE",
+ "members": [
+ {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "CHOICE",
+ "members": [
+ {
+ "type": "SYMBOL",
+ "name": "enumerator"
+ },
+ {
+ "type": "ALIAS",
+ "content": {
+ "type": "SYMBOL",
+ "name": "preproc_if_in_enumerator_list_no_comma"
+ },
+ "named": true,
+ "value": "preproc_if"
+ },
+ {
+ "type": "ALIAS",
+ "content": {
+ "type": "SYMBOL",
+ "name": "preproc_ifdef_in_enumerator_list_no_comma"
+ },
+ "named": true,
+ "value": "preproc_ifdef"
+ },
+ {
+ "type": "SYMBOL",
+ "name": "preproc_call"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "BLANK"
+ }
+ ]
+ },
+ {
+ "type": "STRING",
+ "value": "}"
+ }
+ ]
+ },
+ "struct_specifier": {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "STRING",
+ "value": "struct"
+ },
+ {
+ "type": "SYMBOL",
+ "name": "_class_declaration"
+ }
+ ]
+ },
+ "union_specifier": {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "STRING",
+ "value": "union"
+ },
+ {
+ "type": "SYMBOL",
+ "name": "_class_declaration"
+ }
+ ]
+ },
+ "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": "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": "SEQ",
+ "members": [
+ {
+ "type": "SYMBOL",
+ "name": "access_specifier"
+ },
+ {
+ "type": "STRING",
+ "value": ":"
+ }
+ ]
+ },
+ {
+ "type": "SYMBOL",
+ "name": "alias_declaration"
+ },
+ {
+ "type": "SYMBOL",
+ "name": "using_declaration"
+ },
+ {
+ "type": "SYMBOL",
+ "name": "type_definition"
+ },
+ {
+ "type": "SYMBOL",
+ "name": "static_assert_declaration"
+ }
+ ]
+ },
+ "field_declaration": {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "SYMBOL",
+ "name": "_declaration_specifiers"
+ },
+ {
+ "type": "CHOICE",
+ "members": [
+ {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "FIELD",
+ "name": "declarator",
+ "content": {
+ "type": "SYMBOL",
+ "name": "_field_declarator"
+ }
+ },
+ {
+ "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": "REPEAT",
+ "content": {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "STRING",
+ "value": ","
+ },
+ {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "FIELD",
+ "name": "declarator",
+ "content": {
+ "type": "SYMBOL",
+ "name": "_field_declarator"
+ }
+ },
+ {
+ "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": "BLANK"
+ }
+ ]
+ },
+ {
+ "type": "CHOICE",
+ "members": [
+ {
+ "type": "SYMBOL",
+ "name": "attribute_specifier"
+ },
+ {
+ "type": "BLANK"
+ }
+ ]
+ },
+ {
+ "type": "STRING",
+ "value": ";"
+ }
+ ]
+ },
+ "_field_declaration_declarator": {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "FIELD",
+ "name": "declarator",
+ "content": {
+ "type": "SYMBOL",
+ "name": "_field_declarator"
+ }
+ },
+ {
+ "type": "CHOICE",
+ "members": [
+ {
+ "type": "SYMBOL",
+ "name": "bitfield_clause"
+ },
+ {
+ "type": "BLANK"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "REPEAT",
+ "content": {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "STRING",
+ "value": ","
+ },
+ {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "FIELD",
+ "name": "declarator",
+ "content": {
+ "type": "SYMBOL",
+ "name": "_field_declarator"
+ }
+ },
+ {
+ "type": "CHOICE",
+ "members": [
+ {
+ "type": "SYMBOL",
+ "name": "bitfield_clause"
+ },
+ {
+ "type": "BLANK"
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ }
+ }
+ ]
+ },
+ "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": "STRING",
+ "value": "..."
+ },
+ "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": "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": ")"
+ }
+ ]
+ },
+ "_old_style_parameter_list": {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "STRING",
+ "value": "("
+ },
+ {
+ "type": "CHOICE",
+ "members": [
+ {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "CHOICE",
+ "members": [
+ {
+ "type": "SYMBOL",
+ "name": "identifier"
+ },
+ {
+ "type": "SYMBOL",
+ "name": "variadic_parameter"
+ }
+ ]
+ },
+ {
+ "type": "REPEAT",
+ "content": {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "STRING",
+ "value": ","
+ },
+ {
+ "type": "CHOICE",
+ "members": [
+ {
+ "type": "SYMBOL",
+ "name": "identifier"
+ },
+ {
+ "type": "SYMBOL",
+ "name": "variadic_parameter"
+ }
+ ]
+ }
+ ]
+ }
+ }
+ ]
+ },
+ {
+ "type": "BLANK"
+ }
+ ]
+ },
+ {
+ "type": "STRING",
+ "value": ")"
+ }
+ ]
+ },
+ "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": "seh_try_statement"
+ },
+ {
+ "type": "SYMBOL",
+ "name": "seh_leave_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"
+ }
+ ]
+ },
+ "_top_level_statement": {
+ "type": "CHOICE",
+ "members": [
+ {
+ "type": "CHOICE",
+ "members": [
+ {
+ "type": "SYMBOL",
+ "name": "case_statement"
+ },
+ {
+ "type": "SYMBOL",
+ "name": "attributed_statement"
+ },
+ {
+ "type": "SYMBOL",
+ "name": "labeled_statement"
+ },
+ {
+ "type": "SYMBOL",
+ "name": "compound_statement"
+ },
+ {
+ "type": "ALIAS",
+ "content": {
+ "type": "SYMBOL",
+ "name": "_top_level_expression_statement"
+ },
+ "named": true,
+ "value": "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"
+ }
+ ]
+ },
+ "_top_level_expression_statement": {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "SYMBOL",
+ "name": "_expression_not_binary"
+ },
+ {
+ "type": "STRING",
+ "value": ";"
+ }
+ ]
+ },
+ "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": "FIELD",
+ "name": "alternative",
+ "content": {
+ "type": "SYMBOL",
+ "name": "else_clause"
+ }
+ },
+ {
+ "type": "BLANK"
+ }
+ ]
+ }
+ ]
+ }
+ },
+ "else_clause": {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "STRING",
+ "value": "else"
+ },
+ {
+ "type": "SYMBOL",
+ "name": "statement"
+ }
+ ]
+ },
+ "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": "SYMBOL",
+ "name": "_for_statement_body"
+ },
+ {
+ "type": "STRING",
+ "value": ")"
+ },
+ {
+ "type": "FIELD",
+ "name": "body",
+ "content": {
+ "type": "SYMBOL",
+ "name": "statement"
+ }
+ }
+ ]
+ },
+ "_for_statement_body": {
+ "type": "PREC_DYNAMIC",
+ "value": 1,
+ "content": {
+ "type": "SEQ",
+ "members": [
+ {
+ "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"
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ "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": ";"
+ }
+ ]
+ },
+ "seh_try_statement": {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "STRING",
+ "value": "__try"
+ },
+ {
+ "type": "FIELD",
+ "name": "body",
+ "content": {
+ "type": "SYMBOL",
+ "name": "compound_statement"
+ }
+ },
+ {
+ "type": "CHOICE",
+ "members": [
+ {
+ "type": "SYMBOL",
+ "name": "seh_except_clause"
+ },
+ {
+ "type": "SYMBOL",
+ "name": "seh_finally_clause"
+ }
+ ]
+ }
+ ]
+ },
+ "seh_except_clause": {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "STRING",
+ "value": "__except"
+ },
+ {
+ "type": "FIELD",
+ "name": "filter",
+ "content": {
+ "type": "SYMBOL",
+ "name": "parenthesized_expression"
+ }
+ },
+ {
+ "type": "FIELD",
+ "name": "body",
+ "content": {
+ "type": "SYMBOL",
+ "name": "compound_statement"
+ }
+ }
+ ]
+ },
+ "seh_finally_clause": {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "STRING",
+ "value": "__finally"
+ },
+ {
+ "type": "FIELD",
+ "name": "body",
+ "content": {
+ "type": "SYMBOL",
+ "name": "compound_statement"
+ }
+ }
+ ]
+ },
+ "seh_leave_statement": {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "STRING",
+ "value": "__leave"
+ },
+ {
+ "type": "STRING",
+ "value": ";"
+ }
+ ]
+ },
+ "expression": {
+ "type": "CHOICE",
+ "members": [
+ {
+ "type": "CHOICE",
+ "members": [
+ {
+ "type": "SYMBOL",
+ "name": "_expression_not_binary"
+ },
+ {
+ "type": "SYMBOL",
+ "name": "binary_expression"
+ }
+ ]
+ },
+ {
+ "type": "ALIAS",
+ "content": {
+ "type": "PREC",
+ "value": 10,
+ "content": {
+ "type": "SYMBOL",
+ "name": "kernel_call_expression"
+ }
+ },
+ "named": true,
+ "value": "call_expression"
+ }
+ ]
+ },
+ "_expression_not_binary": {
+ "type": "CHOICE",
+ "members": [
+ {
+ "type": "CHOICE",
+ "members": [
+ {
+ "type": "SYMBOL",
+ "name": "conditional_expression"
+ },
+ {
+ "type": "SYMBOL",
+ "name": "assignment_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": "alignof_expression"
+ },
+ {
+ "type": "SYMBOL",
+ "name": "offsetof_expression"
+ },
+ {
+ "type": "SYMBOL",
+ "name": "generic_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"
+ },
+ {
+ "type": "SYMBOL",
+ "name": "true"
+ },
+ {
+ "type": "SYMBOL",
+ "name": "false"
+ },
+ {
+ "type": "SYMBOL",
+ "name": "null"
+ },
+ {
+ "type": "SYMBOL",
+ "name": "char_literal"
+ },
+ {
+ "type": "SYMBOL",
+ "name": "parenthesized_expression"
+ },
+ {
+ "type": "SYMBOL",
+ "name": "gnu_asm_expression"
+ }
+ ]
+ },
+ {
+ "type": "SYMBOL",
+ "name": "co_await_expression"
+ },
+ {
+ "type": "SYMBOL",
+ "name": "requires_expression"
+ },
+ {
+ "type": "SYMBOL",
+ "name": "requires_clause"
+ },
+ {
+ "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": "this"
+ },
+ {
+ "type": "SYMBOL",
+ "name": "raw_string_literal"
+ },
+ {
+ "type": "SYMBOL",
+ "name": "user_defined_literal"
+ },
+ {
+ "type": "SYMBOL",
+ "name": "fold_expression"
+ }
+ ]
+ },
+ "_string": {
+ "type": "PREC_LEFT",
+ "value": 0,
+ "content": {
+ "type": "CHOICE",
+ "members": [
+ {
+ "type": "SYMBOL",
+ "name": "string_literal"
+ },
+ {
+ "type": "SYMBOL",
+ "name": "concatenated_string"
+ }
+ ]
+ }
+ },
+ "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": -1,
+ "content": {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "FIELD",
+ "name": "condition",
+ "content": {
+ "type": "SYMBOL",
+ "name": "expression"
+ }
+ },
+ {
+ "type": "STRING",
+ "value": "?"
+ },
+ {
+ "type": "CHOICE",
+ "members": [
+ {
+ "type": "FIELD",
+ "name": "consequence",
+ "content": {
+ "type": "CHOICE",
+ "members": [
+ {
+ "type": "SYMBOL",
+ "name": "expression"
+ },
+ {
+ "type": "SYMBOL",
+ "name": "comma_expression"
+ }
+ ]
+ }
+ },
+ {
+ "type": "BLANK"
+ }
+ ]
+ },
+ {
+ "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"
+ },
+ {
+ "type": "SYMBOL",
+ "name": "user_defined_literal"
+ }
+ ]
+ },
+ "assignment_expression": {
+ "type": "PREC_RIGHT",
+ "value": -2,
+ "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": "STRING",
+ "value": "and_eq"
+ },
+ {
+ "type": "STRING",
+ "value": "or_eq"
+ },
+ {
+ "type": "STRING",
+ "value": "xor_eq"
+ }
+ ]
+ }
+ },
+ {
+ "type": "FIELD",
+ "name": "right",
+ "content": {
+ "type": "CHOICE",
+ "members": [
+ {
+ "type": "SYMBOL",
+ "name": "expression"
+ },
+ {
+ "type": "SYMBOL",
+ "name": "initializer_list"
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ "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": "CHOICE",
+ "members": [
+ {
+ "type": "PREC_LEFT",
+ "value": 14,
+ "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"
+ }
+ }
+ ]
+ }
+ },
+ {
+ "type": "PREC_LEFT",
+ "value": 14,
+ "content": {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "FIELD",
+ "name": "operator",
+ "content": {
+ "type": "CHOICE",
+ "members": [
+ {
+ "type": "STRING",
+ "value": "not"
+ },
+ {
+ "type": "STRING",
+ "value": "compl"
+ }
+ ]
+ }
+ },
+ {
+ "type": "FIELD",
+ "name": "argument",
+ "content": {
+ "type": "SYMBOL",
+ "name": "expression"
+ }
+ }
+ ]
+ }
+ }
+ ]
+ },
+ "binary_expression": {
+ "type": "CHOICE",
+ "members": [
+ {
+ "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"
+ }
+ }
+ ]
+ }
+ }
+ ]
+ },
+ {
+ "type": "PREC_LEFT",
+ "value": 8,
+ "content": {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "FIELD",
+ "name": "left",
+ "content": {
+ "type": "SYMBOL",
+ "name": "expression"
+ }
+ },
+ {
+ "type": "FIELD",
+ "name": "operator",
+ "content": {
+ "type": "STRING",
+ "value": "<=>"
+ }
+ },
+ {
+ "type": "FIELD",
+ "name": "right",
+ "content": {
+ "type": "SYMBOL",
+ "name": "expression"
+ }
+ }
+ ]
+ }
+ },
+ {
+ "type": "PREC_LEFT",
+ "value": 1,
+ "content": {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "FIELD",
+ "name": "left",
+ "content": {
+ "type": "SYMBOL",
+ "name": "expression"
+ }
+ },
+ {
+ "type": "FIELD",
+ "name": "operator",
+ "content": {
+ "type": "STRING",
+ "value": "or"
+ }
+ },
+ {
+ "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": "and"
+ }
+ },
+ {
+ "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": "bitor"
+ }
+ },
+ {
+ "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": "xor"
+ }
+ },
+ {
+ "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": "bitand"
+ }
+ },
+ {
+ "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": "not_eq"
+ }
+ },
+ {
+ "type": "FIELD",
+ "name": "right",
+ "content": {
+ "type": "SYMBOL",
+ "name": "expression"
+ }
+ }
+ ]
+ }
+ }
+ ]
+ },
+ "update_expression": {
+ "type": "PREC_RIGHT",
+ "value": 14,
+ "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": "PREC_RIGHT",
+ "value": 0,
+ "content": {
+ "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": "PREC_RIGHT",
+ "value": 13,
+ "content": {
+ "type": "CHOICE",
+ "members": [
+ {
+ "type": "PREC",
+ "value": 13,
+ "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": ")"
+ }
+ ]
+ }
+ ]
+ }
+ },
+ "alignof_expression": {
+ "type": "PREC",
+ "value": 13,
+ "content": {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "CHOICE",
+ "members": [
+ {
+ "type": "STRING",
+ "value": "__alignof__"
+ },
+ {
+ "type": "STRING",
+ "value": "__alignof"
+ },
+ {
+ "type": "STRING",
+ "value": "_alignof"
+ },
+ {
+ "type": "STRING",
+ "value": "alignof"
+ },
+ {
+ "type": "STRING",
+ "value": "_Alignof"
+ }
+ ]
+ },
+ {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "STRING",
+ "value": "("
+ },
+ {
+ "type": "FIELD",
+ "name": "type",
+ "content": {
+ "type": "SYMBOL",
+ "name": "type_descriptor"
+ }
+ },
+ {
+ "type": "STRING",
+ "value": ")"
+ }
+ ]
+ }
+ ]
+ }
+ },
+ "offsetof_expression": {
+ "type": "PREC",
+ "value": 8,
+ "content": {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "STRING",
+ "value": "offsetof"
+ },
+ {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "STRING",
+ "value": "("
+ },
+ {
+ "type": "FIELD",
+ "name": "type",
+ "content": {
+ "type": "SYMBOL",
+ "name": "type_descriptor"
+ }
+ },
+ {
+ "type": "STRING",
+ "value": ","
+ },
+ {
+ "type": "FIELD",
+ "name": "member",
+ "content": {
+ "type": "SYMBOL",
+ "name": "_field_identifier"
+ }
+ },
+ {
+ "type": "STRING",
+ "value": ")"
+ }
+ ]
+ }
+ ]
+ }
+ },
+ "generic_expression": {
+ "type": "PREC",
+ "value": 15,
+ "content": {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "STRING",
+ "value": "_Generic"
+ },
+ {
+ "type": "STRING",
+ "value": "("
+ },
+ {
+ "type": "SYMBOL",
+ "name": "expression"
+ },
+ {
+ "type": "STRING",
+ "value": ","
+ },
+ {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "SYMBOL",
+ "name": "type_descriptor"
+ },
+ {
+ "type": "STRING",
+ "value": ":"
+ },
+ {
+ "type": "SYMBOL",
+ "name": "expression"
+ }
+ ]
+ },
+ {
+ "type": "REPEAT",
+ "content": {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "STRING",
+ "value": ","
+ },
+ {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "SYMBOL",
+ "name": "type_descriptor"
+ },
+ {
+ "type": "STRING",
+ "value": ":"
+ },
+ {
+ "type": "SYMBOL",
+ "name": "expression"
+ }
+ ]
+ }
+ ]
+ }
+ }
+ ]
+ },
+ {
+ "type": "STRING",
+ "value": ")"
+ }
+ ]
+ }
+ },
+ "subscript_expression": {
+ "type": "PREC",
+ "value": 17,
+ "content": {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "FIELD",
+ "name": "argument",
+ "content": {
+ "type": "SYMBOL",
+ "name": "expression"
+ }
+ },
+ {
+ "type": "FIELD",
+ "name": "indices",
+ "content": {
+ "type": "SYMBOL",
+ "name": "subscript_argument_list"
+ }
+ }
+ ]
+ }
+ },
+ "call_expression": {
+ "type": "CHOICE",
+ "members": [
+ {
+ "type": "PREC",
+ "value": 15,
+ "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"
+ }
+ }
+ ]
+ }
+ ]
+ },
+ "gnu_asm_expression": {
+ "type": "PREC",
+ "value": 15,
+ "content": {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "CHOICE",
+ "members": [
+ {
+ "type": "STRING",
+ "value": "asm"
+ },
+ {
+ "type": "STRING",
+ "value": "__asm__"
+ }
+ ]
+ },
+ {
+ "type": "REPEAT",
+ "content": {
+ "type": "SYMBOL",
+ "name": "gnu_asm_qualifier"
+ }
+ },
+ {
+ "type": "STRING",
+ "value": "("
+ },
+ {
+ "type": "FIELD",
+ "name": "assembly_code",
+ "content": {
+ "type": "SYMBOL",
+ "name": "_string"
+ }
+ },
+ {
+ "type": "CHOICE",
+ "members": [
+ {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "FIELD",
+ "name": "output_operands",
+ "content": {
+ "type": "SYMBOL",
+ "name": "gnu_asm_output_operand_list"
+ }
+ },
+ {
+ "type": "CHOICE",
+ "members": [
+ {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "FIELD",
+ "name": "input_operands",
+ "content": {
+ "type": "SYMBOL",
+ "name": "gnu_asm_input_operand_list"
+ }
+ },
+ {
+ "type": "CHOICE",
+ "members": [
+ {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "FIELD",
+ "name": "clobbers",
+ "content": {
+ "type": "SYMBOL",
+ "name": "gnu_asm_clobber_list"
+ }
+ },
+ {
+ "type": "CHOICE",
+ "members": [
+ {
+ "type": "FIELD",
+ "name": "goto_labels",
+ "content": {
+ "type": "SYMBOL",
+ "name": "gnu_asm_goto_list"
+ }
+ },
+ {
+ "type": "BLANK"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "BLANK"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "BLANK"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "BLANK"
+ }
+ ]
+ },
+ {
+ "type": "STRING",
+ "value": ")"
+ }
+ ]
+ }
+ },
+ "gnu_asm_qualifier": {
+ "type": "CHOICE",
+ "members": [
+ {
+ "type": "STRING",
+ "value": "volatile"
+ },
+ {
+ "type": "STRING",
+ "value": "inline"
+ },
+ {
+ "type": "STRING",
+ "value": "goto"
+ }
+ ]
+ },
+ "gnu_asm_output_operand_list": {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "STRING",
+ "value": ":"
+ },
+ {
+ "type": "CHOICE",
+ "members": [
+ {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "FIELD",
+ "name": "operand",
+ "content": {
+ "type": "SYMBOL",
+ "name": "gnu_asm_output_operand"
+ }
+ },
+ {
+ "type": "REPEAT",
+ "content": {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "STRING",
+ "value": ","
+ },
+ {
+ "type": "FIELD",
+ "name": "operand",
+ "content": {
+ "type": "SYMBOL",
+ "name": "gnu_asm_output_operand"
+ }
+ }
+ ]
+ }
+ }
+ ]
+ },
+ {
+ "type": "BLANK"
+ }
+ ]
+ }
+ ]
+ },
+ "gnu_asm_output_operand": {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "CHOICE",
+ "members": [
+ {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "STRING",
+ "value": "["
+ },
+ {
+ "type": "FIELD",
+ "name": "symbol",
+ "content": {
+ "type": "SYMBOL",
+ "name": "identifier"
+ }
+ },
+ {
+ "type": "STRING",
+ "value": "]"
+ }
+ ]
+ },
+ {
+ "type": "BLANK"
+ }
+ ]
+ },
+ {
+ "type": "FIELD",
+ "name": "constraint",
+ "content": {
+ "type": "SYMBOL",
+ "name": "string_literal"
+ }
+ },
+ {
+ "type": "STRING",
+ "value": "("
+ },
+ {
+ "type": "FIELD",
+ "name": "value",
+ "content": {
+ "type": "SYMBOL",
+ "name": "identifier"
+ }
+ },
+ {
+ "type": "STRING",
+ "value": ")"
+ }
+ ]
+ },
+ "gnu_asm_input_operand_list": {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "STRING",
+ "value": ":"
+ },
+ {
+ "type": "CHOICE",
+ "members": [
+ {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "FIELD",
+ "name": "operand",
+ "content": {
+ "type": "SYMBOL",
+ "name": "gnu_asm_input_operand"
+ }
+ },
+ {
+ "type": "REPEAT",
+ "content": {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "STRING",
+ "value": ","
+ },
+ {
+ "type": "FIELD",
+ "name": "operand",
+ "content": {
+ "type": "SYMBOL",
+ "name": "gnu_asm_input_operand"
+ }
+ }
+ ]
+ }
+ }
+ ]
+ },
+ {
+ "type": "BLANK"
+ }
+ ]
+ }
+ ]
+ },
+ "gnu_asm_input_operand": {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "CHOICE",
+ "members": [
+ {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "STRING",
+ "value": "["
+ },
+ {
+ "type": "FIELD",
+ "name": "symbol",
+ "content": {
+ "type": "SYMBOL",
+ "name": "identifier"
+ }
+ },
+ {
+ "type": "STRING",
+ "value": "]"
+ }
+ ]
+ },
+ {
+ "type": "BLANK"
+ }
+ ]
+ },
+ {
+ "type": "FIELD",
+ "name": "constraint",
+ "content": {
+ "type": "SYMBOL",
+ "name": "string_literal"
+ }
+ },
+ {
+ "type": "STRING",
+ "value": "("
+ },
+ {
+ "type": "FIELD",
+ "name": "value",
+ "content": {
+ "type": "SYMBOL",
+ "name": "expression"
+ }
+ },
+ {
+ "type": "STRING",
+ "value": ")"
+ }
+ ]
+ },
+ "gnu_asm_clobber_list": {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "STRING",
+ "value": ":"
+ },
+ {
+ "type": "CHOICE",
+ "members": [
+ {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "FIELD",
+ "name": "register",
+ "content": {
+ "type": "SYMBOL",
+ "name": "_string"
+ }
+ },
+ {
+ "type": "REPEAT",
+ "content": {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "STRING",
+ "value": ","
+ },
+ {
+ "type": "FIELD",
+ "name": "register",
+ "content": {
+ "type": "SYMBOL",
+ "name": "_string"
+ }
+ }
+ ]
+ }
+ }
+ ]
+ },
+ {
+ "type": "BLANK"
+ }
+ ]
+ }
+ ]
+ },
+ "gnu_asm_goto_list": {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "STRING",
+ "value": ":"
+ },
+ {
+ "type": "CHOICE",
+ "members": [
+ {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "FIELD",
+ "name": "label",
+ "content": {
+ "type": "SYMBOL",
+ "name": "identifier"
+ }
+ },
+ {
+ "type": "REPEAT",
+ "content": {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "STRING",
+ "value": ","
+ },
+ {
+ "type": "FIELD",
+ "name": "label",
+ "content": {
+ "type": "SYMBOL",
+ "name": "identifier"
+ }
+ }
+ ]
+ }
+ }
+ ]
+ },
+ {
+ "type": "BLANK"
+ }
+ ]
+ }
+ ]
+ },
+ "argument_list": {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "STRING",
+ "value": "("
+ },
+ {
+ "type": "CHOICE",
+ "members": [
+ {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "CHOICE",
+ "members": [
+ {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "CHOICE",
+ "members": [
+ {
+ "type": "STRING",
+ "value": "__extension__"
+ },
+ {
+ "type": "BLANK"
+ }
+ ]
+ },
+ {
+ "type": "SYMBOL",
+ "name": "expression"
+ }
+ ]
+ },
+ {
+ "type": "SYMBOL",
+ "name": "initializer_list"
+ },
+ {
+ "type": "SYMBOL",
+ "name": "compound_statement"
+ }
+ ]
+ },
+ {
+ "type": "REPEAT",
+ "content": {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "STRING",
+ "value": ","
+ },
+ {
+ "type": "CHOICE",
+ "members": [
+ {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "CHOICE",
+ "members": [
+ {
+ "type": "STRING",
+ "value": "__extension__"
+ },
+ {
+ "type": "BLANK"
+ }
+ ]
+ },
+ {
+ "type": "SYMBOL",
+ "name": "expression"
+ }
+ ]
+ },
+ {
+ "type": "SYMBOL",
+ "name": "initializer_list"
+ },
+ {
+ "type": "SYMBOL",
+ "name": "compound_statement"
+ }
+ ]
+ }
+ ]
+ }
+ }
+ ]
+ },
+ {
+ "type": "BLANK"
+ }
+ ]
+ },
+ {
+ "type": "STRING",
+ "value": ")"
+ }
+ ]
+ },
+ "field_expression": {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "PREC",
+ "value": 16,
+ "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": "STRING",
+ "value": "->"
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ {
+ "type": "FIELD",
+ "name": "field",
+ "content": {
+ "type": "CHOICE",
+ "members": [
+ {
+ "type": "PREC_DYNAMIC",
+ "value": 1,
+ "content": {
+ "type": "SYMBOL",
+ "name": "_field_identifier"
+ }
+ },
+ {
+ "type": "ALIAS",
+ "content": {
+ "type": "SYMBOL",
+ "name": "qualified_field_identifier"
+ },
+ "named": true,
+ "value": "qualified_identifier"
+ },
+ {
+ "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": "CHOICE",
+ "members": [
+ {
+ "type": "SYMBOL",
+ "name": "_class_name"
+ },
+ {
+ "type": "SYMBOL",
+ "name": "primitive_type"
+ }
+ ]
+ }
+ },
+ {
+ "type": "FIELD",
+ "name": "value",
+ "content": {
+ "type": "SYMBOL",
+ "name": "initializer_list"
+ }
+ }
+ ]
+ }
+ ]
+ },
+ "parenthesized_expression": {
+ "type": "CHOICE",
+ "members": [
+ {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "STRING",
+ "value": "("
+ },
+ {
+ "type": "CHOICE",
+ "members": [
+ {
+ "type": "SYMBOL",
+ "name": "expression"
+ },
+ {
+ "type": "SYMBOL",
+ "name": "comma_expression"
+ }
+ ]
+ },
+ {
+ "type": "STRING",
+ "value": ")"
+ }
+ ]
+ },
+ {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "STRING",
+ "value": "("
+ },
+ {
+ "type": "ALIAS",
+ "content": {
+ "type": "SYMBOL",
+ "name": "_assignment_expression_lhs"
+ },
+ "named": true,
+ "value": "assignment_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": "CHOICE",
+ "members": [
+ {
+ "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": "SYMBOL",
+ "name": "subscript_range_designator"
+ }
+ ]
+ }
+ }
+ },
+ {
+ "type": "STRING",
+ "value": "="
+ },
+ {
+ "type": "FIELD",
+ "name": "value",
+ "content": {
+ "type": "CHOICE",
+ "members": [
+ {
+ "type": "SYMBOL",
+ "name": "expression"
+ },
+ {
+ "type": "SYMBOL",
+ "name": "initializer_list"
+ }
+ ]
+ }
+ }
+ ]
+ },
+ {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "FIELD",
+ "name": "designator",
+ "content": {
+ "type": "SYMBOL",
+ "name": "_field_identifier"
+ }
+ },
+ {
+ "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": "]"
+ }
+ ]
+ },
+ "subscript_range_designator": {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "STRING",
+ "value": "["
+ },
+ {
+ "type": "FIELD",
+ "name": "start",
+ "content": {
+ "type": "SYMBOL",
+ "name": "expression"
+ }
+ },
+ {
+ "type": "STRING",
+ "value": "..."
+ },
+ {
+ "type": "FIELD",
+ "name": "end",
+ "content": {
+ "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": "SEQ",
+ "members": [
+ {
+ "type": "CHOICE",
+ "members": [
+ {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "CHOICE",
+ "members": [
+ {
+ "type": "STRING",
+ "value": "0b"
+ },
+ {
+ "type": "STRING",
+ "value": "0B"
+ }
+ ]
+ },
+ {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "REPEAT1",
+ "content": {
+ "type": "PATTERN",
+ "value": "[01]"
+ }
+ },
+ {
+ "type": "REPEAT",
+ "content": {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "STRING",
+ "value": "'"
+ },
+ {
+ "type": "REPEAT1",
+ "content": {
+ "type": "PATTERN",
+ "value": "[01]"
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "PATTERN",
+ "value": "[1-9]"
+ },
+ {
+ "type": "REPEAT",
+ "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": "CHOICE",
+ "members": [
+ {
+ "type": "STRING",
+ "value": "0x"
+ },
+ {
+ "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": "SEQ",
+ "members": [
+ {
+ "type": "STRING",
+ "value": "0"
+ },
+ {
+ "type": "REPEAT",
+ "content": {
+ "type": "PATTERN",
+ "value": "[0-7]"
+ }
+ },
+ {
+ "type": "REPEAT",
+ "content": {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "STRING",
+ "value": "'"
+ },
+ {
+ "type": "REPEAT1",
+ "content": {
+ "type": "PATTERN",
+ "value": "[0-7]"
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "CHOICE",
+ "members": [
+ {
+ "type": "PATTERN",
+ "value": "(ll|LL)[uU]?|[uU](ll|LL)?|[uU][lL]?|[uU][zZ]?|[lL][uU]?|[zZ][uU]?"
+ },
+ {
+ "type": "BLANK"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "CHOICE",
+ "members": [
+ {
+ "type": "SEQ",
+ "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": "PATTERN",
+ "value": "[eE]"
+ },
+ {
+ "type": "CHOICE",
+ "members": [
+ {
+ "type": "PATTERN",
+ "value": "[-\\+]"
+ },
+ {
+ "type": "BLANK"
+ }
+ ]
+ },
+ {
+ "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": "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": "STRING",
+ "value": "."
+ },
+ {
+ "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": "BLANK"
+ }
+ ]
+ },
+ {
+ "type": "CHOICE",
+ "members": [
+ {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "PATTERN",
+ "value": "[eE]"
+ },
+ {
+ "type": "CHOICE",
+ "members": [
+ {
+ "type": "PATTERN",
+ "value": "[-\\+]"
+ },
+ {
+ "type": "BLANK"
+ }
+ ]
+ },
+ {
+ "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": "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": "[eE]"
+ },
+ {
+ "type": "CHOICE",
+ "members": [
+ {
+ "type": "PATTERN",
+ "value": "[-\\+]"
+ },
+ {
+ "type": "BLANK"
+ }
+ ]
+ },
+ {
+ "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": "BLANK"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "CHOICE",
+ "members": [
+ {
+ "type": "STRING",
+ "value": "0x"
+ },
+ {
+ "type": "STRING",
+ "value": "0X"
+ }
+ ]
+ },
+ {
+ "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": "SEQ",
+ "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": "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": "SEQ",
+ "members": [
+ {
+ "type": "STRING",
+ "value": "."
+ },
+ {
+ "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": "SEQ",
+ "members": [
+ {
+ "type": "PATTERN",
+ "value": "[pP]"
+ },
+ {
+ "type": "CHOICE",
+ "members": [
+ {
+ "type": "PATTERN",
+ "value": "[-\\+]"
+ },
+ {
+ "type": "BLANK"
+ }
+ ]
+ },
+ {
+ "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": "PATTERN",
+ "value": "([fF](16|32|64|128)?)|[lL]|(bf16|BF16)"
+ },
+ {
+ "type": "BLANK"
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ }
+ },
+ "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": "REPEAT1",
+ "content": {
+ "type": "CHOICE",
+ "members": [
+ {
+ "type": "SYMBOL",
+ "name": "escape_sequence"
+ },
+ {
+ "type": "ALIAS",
+ "content": {
+ "type": "IMMEDIATE_TOKEN",
+ "content": {
+ "type": "PATTERN",
+ "value": "[^\\n']"
+ }
+ },
+ "named": true,
+ "value": "character"
+ }
+ ]
+ }
+ },
+ {
+ "type": "STRING",
+ "value": "'"
+ }
+ ]
+ },
+ "concatenated_string": {
+ "type": "PREC_RIGHT",
+ "value": 0,
+ "content": {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "CHOICE",
+ "members": [
+ {
+ "type": "SYMBOL",
+ "name": "identifier"
+ },
+ {
+ "type": "SYMBOL",
+ "name": "string_literal"
+ },
+ {
+ "type": "SYMBOL",
+ "name": "raw_string_literal"
+ }
+ ]
+ },
+ {
+ "type": "CHOICE",
+ "members": [
+ {
+ "type": "SYMBOL",
+ "name": "string_literal"
+ },
+ {
+ "type": "SYMBOL",
+ "name": "raw_string_literal"
+ }
+ ]
+ },
+ {
+ "type": "REPEAT",
+ "content": {
+ "type": "CHOICE",
+ "members": [
+ {
+ "type": "SYMBOL",
+ "name": "identifier"
+ },
+ {
+ "type": "SYMBOL",
+ "name": "string_literal"
+ },
+ {
+ "type": "SYMBOL",
+ "name": "raw_string_literal"
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ "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": "ALIAS",
+ "content": {
+ "type": "IMMEDIATE_TOKEN",
+ "content": {
+ "type": "PREC",
+ "value": 1,
+ "content": {
+ "type": "PATTERN",
+ "value": "[^\\\\\"\\n]+"
+ }
+ }
+ },
+ "named": true,
+ "value": "string_content"
+ },
+ {
+ "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": "CHOICE",
+ "members": [
+ {
+ "type": "STRING",
+ "value": "NULL"
+ },
+ {
+ "type": "STRING",
+ "value": "nullptr"
+ }
+ ]
+ },
+ "identifier": {
+ "type": "PATTERN",
+ "value": "(\\p{XID_Start}|\\$|_|\\\\u[0-9A-Fa-f]{4}|\\\\U[0-9A-Fa-f]{8})(\\p{XID_Continue}|\\$|\\\\u[0-9A-Fa-f]{4}|\\\\U[0-9A-Fa-f]{8})*"
+ },
+ "_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": "/"
+ }
+ ]
+ }
+ ]
+ }
+ },
+ "placeholder_type_specifier": {
+ "type": "PREC",
+ "value": 1,
+ "content": {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "FIELD",
+ "name": "constraint",
+ "content": {
+ "type": "CHOICE",
+ "members": [
+ {
+ "type": "SYMBOL",
+ "name": "type_specifier"
+ },
+ {
+ "type": "BLANK"
+ }
+ ]
+ }
+ },
+ {
+ "type": "CHOICE",
+ "members": [
+ {
+ "type": "SYMBOL",
+ "name": "auto"
+ },
+ {
+ "type": "ALIAS",
+ "content": {
+ "type": "SYMBOL",
+ "name": "decltype_auto"
+ },
+ "named": true,
+ "value": "decltype"
+ }
+ ]
+ }
+ ]
+ }
+ },
+ "auto": {
+ "type": "STRING",
+ "value": "auto"
+ },
+ "decltype_auto": {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "STRING",
+ "value": "decltype"
+ },
+ {
+ "type": "STRING",
+ "value": "("
+ },
+ {
+ "type": "SYMBOL",
+ "name": "auto"
+ },
+ {
+ "type": "STRING",
+ "value": ")"
+ }
+ ]
+ },
+ "decltype": {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "STRING",
+ "value": "decltype"
+ },
+ {
+ "type": "STRING",
+ "value": "("
+ },
+ {
+ "type": "SYMBOL",
+ "name": "expression"
+ },
+ {
+ "type": "STRING",
+ "value": ")"
+ }
+ ]
+ },
+ "_class_declaration": {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "REPEAT",
+ "content": {
+ "type": "CHOICE",
+ "members": [
+ {
+ "type": "SYMBOL",
+ "name": "attribute_specifier"
+ },
+ {
+ "type": "SYMBOL",
+ "name": "alignas_qualifier"
+ }
+ ]
+ }
+ },
+ {
+ "type": "CHOICE",
+ "members": [
+ {
+ "type": "SYMBOL",
+ "name": "ms_declspec_modifier"
+ },
+ {
+ "type": "BLANK"
+ }
+ ]
+ },
+ {
+ "type": "REPEAT",
+ "content": {
+ "type": "SYMBOL",
+ "name": "attribute_declaration"
+ }
+ },
+ {
+ "type": "SYMBOL",
+ "name": "_class_declaration_item"
+ }
+ ]
+ },
+ "_class_declaration_item": {
+ "type": "PREC_RIGHT",
+ "value": 0,
+ "content": {
+ "type": "SEQ",
+ "members": [
+ {
+ "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"
+ }
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "CHOICE",
+ "members": [
+ {
+ "type": "SYMBOL",
+ "name": "attribute_specifier"
+ },
+ {
+ "type": "BLANK"
+ }
+ ]
+ }
+ ]
+ }
+ },
+ "class_specifier": {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "STRING",
+ "value": "class"
+ },
+ {
+ "type": "SYMBOL",
+ "name": "_class_declaration"
+ }
+ ]
+ },
+ "_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": {
+ "type": "STRING",
+ "value": "virtual"
+ },
+ "explicit_function_specifier": {
+ "type": "CHOICE",
+ "members": [
+ {
+ "type": "STRING",
+ "value": "explicit"
+ },
+ {
+ "type": "PREC",
+ "value": 15,
+ "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": "REPEAT",
+ "content": {
+ "type": "SYMBOL",
+ "name": "attribute_declaration"
+ }
+ },
+ {
+ "type": "CHOICE",
+ "members": [
+ {
+ "type": "CHOICE",
+ "members": [
+ {
+ "type": "SYMBOL",
+ "name": "access_specifier"
+ },
+ {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "SYMBOL",
+ "name": "access_specifier"
+ },
+ {
+ "type": "CHOICE",
+ "members": [
+ {
+ "type": "SYMBOL",
+ "name": "virtual"
+ },
+ {
+ "type": "BLANK"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "SYMBOL",
+ "name": "virtual"
+ },
+ {
+ "type": "CHOICE",
+ "members": [
+ {
+ "type": "SYMBOL",
+ "name": "access_specifier"
+ },
+ {
+ "type": "BLANK"
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "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": "REPEAT",
+ "content": {
+ "type": "SYMBOL",
+ "name": "attribute_declaration"
+ }
+ },
+ {
+ "type": "CHOICE",
+ "members": [
+ {
+ "type": "CHOICE",
+ "members": [
+ {
+ "type": "SYMBOL",
+ "name": "access_specifier"
+ },
+ {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "SYMBOL",
+ "name": "access_specifier"
+ },
+ {
+ "type": "CHOICE",
+ "members": [
+ {
+ "type": "SYMBOL",
+ "name": "virtual"
+ },
+ {
+ "type": "BLANK"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "SYMBOL",
+ "name": "virtual"
+ },
+ {
+ "type": "CHOICE",
+ "members": [
+ {
+ "type": "SYMBOL",
+ "name": "access_specifier"
+ },
+ {
+ "type": "BLANK"
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "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": "primitive_type"
+ },
+ {
+ "type": "SYMBOL",
+ "name": "sized_type_specifier"
+ }
+ ]
+ }
+ }
+ ]
+ }
+ },
+ "dependent_type": {
+ "type": "PREC_DYNAMIC",
+ "value": -1,
+ "content": {
+ "type": "PREC_RIGHT",
+ "value": 0,
+ "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": "requires_clause"
+ },
+ {
+ "type": "BLANK"
+ }
+ ]
+ },
+ {
+ "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": "SYMBOL",
+ "name": "concept_definition"
+ },
+ {
+ "type": "SYMBOL",
+ "name": "friend_declaration"
+ },
+ {
+ "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": "CHOICE",
+ "members": [
+ {
+ "type": "SYMBOL",
+ "name": "_declarator"
+ },
+ {
+ "type": "SYMBOL",
+ "name": "abstract_reference_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": "CHOICE",
+ "members": [
+ {
+ "type": "SYMBOL",
+ "name": "compound_statement"
+ },
+ {
+ "type": "SYMBOL",
+ "name": "try_statement"
+ }
+ ]
+ }
+ },
+ {
+ "type": "SYMBOL",
+ "name": "default_method_clause"
+ },
+ {
+ "type": "SYMBOL",
+ "name": "delete_method_clause"
+ },
+ {
+ "type": "SYMBOL",
+ "name": "pure_virtual_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": "CHOICE",
+ "members": [
+ {
+ "type": "SYMBOL",
+ "name": "compound_statement"
+ },
+ {
+ "type": "SYMBOL",
+ "name": "try_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_try_statement": {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "STRING",
+ "value": "try"
+ },
+ {
+ "type": "CHOICE",
+ "members": [
+ {
+ "type": "SYMBOL",
+ "name": "field_initializer_list"
+ },
+ {
+ "type": "BLANK"
+ }
+ ]
+ },
+ {
+ "type": "FIELD",
+ "name": "body",
+ "content": {
+ "type": "SYMBOL",
+ "name": "compound_statement"
+ }
+ },
+ {
+ "type": "REPEAT1",
+ "content": {
+ "type": "SYMBOL",
+ "name": "catch_clause"
+ }
+ }
+ ]
+ },
+ "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": "SEQ",
+ "members": [
+ {
+ "type": "CHOICE",
+ "members": [
+ {
+ "type": "SYMBOL",
+ "name": "field_initializer_list"
+ },
+ {
+ "type": "BLANK"
+ }
+ ]
+ },
+ {
+ "type": "FIELD",
+ "name": "body",
+ "content": {
+ "type": "SYMBOL",
+ "name": "compound_statement"
+ }
+ }
+ ]
+ },
+ {
+ "type": "ALIAS",
+ "content": {
+ "type": "SYMBOL",
+ "name": "constructor_try_statement"
+ },
+ "named": true,
+ "value": "try_statement"
+ },
+ {
+ "type": "SYMBOL",
+ "name": "default_method_clause"
+ },
+ {
+ "type": "SYMBOL",
+ "name": "delete_method_clause"
+ },
+ {
+ "type": "SYMBOL",
+ "name": "pure_virtual_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": ";"
+ }
+ ]
+ },
+ "pure_virtual_clause": {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "STRING",
+ "value": "="
+ },
+ {
+ "type": "STRING",
+ "value": "0"
+ },
+ {
+ "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": "CHOICE",
+ "members": [
+ {
+ "type": "STRING",
+ "value": "public"
+ },
+ {
+ "type": "STRING",
+ "value": "private"
+ },
+ {
+ "type": "STRING",
+ "value": "protected"
+ }
+ ]
+ },
+ "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"
+ }
+ ]
+ }
+ }
+ },
+ "reference_type_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": "_type_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": "&&"
+ }
+ ]
+ },
+ "_function_declarator_seq": {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "FIELD",
+ "name": "parameters",
+ "content": {
+ "type": "SYMBOL",
+ "name": "parameter_list"
+ }
+ },
+ {
+ "type": "CHOICE",
+ "members": [
+ {
+ "type": "SYMBOL",
+ "name": "_function_attributes_start"
+ },
+ {
+ "type": "BLANK"
+ }
+ ]
+ },
+ {
+ "type": "CHOICE",
+ "members": [
+ {
+ "type": "SYMBOL",
+ "name": "ref_qualifier"
+ },
+ {
+ "type": "BLANK"
+ }
+ ]
+ },
+ {
+ "type": "CHOICE",
+ "members": [
+ {
+ "type": "SYMBOL",
+ "name": "_function_exception_specification"
+ },
+ {
+ "type": "BLANK"
+ }
+ ]
+ },
+ {
+ "type": "CHOICE",
+ "members": [
+ {
+ "type": "SYMBOL",
+ "name": "_function_attributes_end"
+ },
+ {
+ "type": "BLANK"
+ }
+ ]
+ },
+ {
+ "type": "CHOICE",
+ "members": [
+ {
+ "type": "SYMBOL",
+ "name": "trailing_return_type"
+ },
+ {
+ "type": "BLANK"
+ }
+ ]
+ },
+ {
+ "type": "CHOICE",
+ "members": [
+ {
+ "type": "SYMBOL",
+ "name": "_function_postfix"
+ },
+ {
+ "type": "BLANK"
+ }
+ ]
+ }
+ ]
+ },
+ "_function_attributes_start": {
+ "type": "PREC",
+ "value": 1,
+ "content": {
+ "type": "CHOICE",
+ "members": [
+ {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "REPEAT1",
+ "content": {
+ "type": "SYMBOL",
+ "name": "attribute_specifier"
+ }
+ },
+ {
+ "type": "REPEAT",
+ "content": {
+ "type": "SYMBOL",
+ "name": "type_qualifier"
+ }
+ }
+ ]
+ },
+ {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "REPEAT",
+ "content": {
+ "type": "SYMBOL",
+ "name": "attribute_specifier"
+ }
+ },
+ {
+ "type": "REPEAT1",
+ "content": {
+ "type": "SYMBOL",
+ "name": "type_qualifier"
+ }
+ }
+ ]
+ }
+ ]
+ }
+ },
+ "_function_exception_specification": {
+ "type": "CHOICE",
+ "members": [
+ {
+ "type": "SYMBOL",
+ "name": "noexcept"
+ },
+ {
+ "type": "SYMBOL",
+ "name": "throw_specifier"
+ }
+ ]
+ },
+ "_function_attributes_end": {
+ "type": "PREC_RIGHT",
+ "value": 0,
+ "content": {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "CHOICE",
+ "members": [
+ {
+ "type": "SYMBOL",
+ "name": "gnu_asm_expression"
+ },
+ {
+ "type": "BLANK"
+ }
+ ]
+ },
+ {
+ "type": "CHOICE",
+ "members": [
+ {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "REPEAT1",
+ "content": {
+ "type": "SYMBOL",
+ "name": "attribute_specifier"
+ }
+ },
+ {
+ "type": "REPEAT",
+ "content": {
+ "type": "SYMBOL",
+ "name": "attribute_declaration"
+ }
+ }
+ ]
+ },
+ {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "REPEAT",
+ "content": {
+ "type": "SYMBOL",
+ "name": "attribute_specifier"
+ }
+ },
+ {
+ "type": "REPEAT1",
+ "content": {
+ "type": "SYMBOL",
+ "name": "attribute_declaration"
+ }
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ }
+ },
+ "_function_postfix": {
+ "type": "PREC_RIGHT",
+ "value": 0,
+ "content": {
+ "type": "CHOICE",
+ "members": [
+ {
+ "type": "REPEAT1",
+ "content": {
+ "type": "SYMBOL",
+ "name": "virtual_specifier"
+ }
+ },
+ {
+ "type": "SYMBOL",
+ "name": "requires_clause"
+ }
+ ]
+ }
+ },
+ "trailing_return_type": {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "STRING",
+ "value": "->"
+ },
+ {
+ "type": "SYMBOL",
+ "name": "type_descriptor"
+ }
+ ]
+ },
+ "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": "CHOICE",
+ "members": [
+ {
+ "type": "SYMBOL",
+ "name": "_field_identifier"
+ },
+ {
+ "type": "SYMBOL",
+ "name": "operator_name"
+ }
+ ]
+ }
+ },
+ {
+ "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": "CHOICE",
+ "members": [
+ {
+ "type": "STRING",
+ "value": "inline"
+ },
+ {
+ "type": "BLANK"
+ }
+ ]
+ },
+ {
+ "type": "STRING",
+ "value": "namespace"
+ },
+ {
+ "type": "CHOICE",
+ "members": [
+ {
+ "type": "SYMBOL",
+ "name": "attribute_declaration"
+ },
+ {
+ "type": "BLANK"
+ }
+ ]
+ },
+ {
+ "type": "FIELD",
+ "name": "name",
+ "content": {
+ "type": "CHOICE",
+ "members": [
+ {
+ "type": "CHOICE",
+ "members": [
+ {
+ "type": "SYMBOL",
+ "name": "_namespace_identifier"
+ },
+ {
+ "type": "SYMBOL",
+ "name": "nested_namespace_specifier"
+ }
+ ]
+ },
+ {
+ "type": "BLANK"
+ }
+ ]
+ }
+ },
+ {
+ "type": "FIELD",
+ "name": "body",
+ "content": {
+ "type": "SYMBOL",
+ "name": "declaration_list"
+ }
+ }
+ ]
+ },
+ "namespace_alias_definition": {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "STRING",
+ "value": "namespace"
+ },
+ {
+ "type": "FIELD",
+ "name": "name",
+ "content": {
+ "type": "SYMBOL",
+ "name": "_namespace_identifier"
+ }
+ },
+ {
+ "type": "STRING",
+ "value": "="
+ },
+ {
+ "type": "CHOICE",
+ "members": [
+ {
+ "type": "SYMBOL",
+ "name": "_namespace_identifier"
+ },
+ {
+ "type": "SYMBOL",
+ "name": "nested_namespace_specifier"
+ }
+ ]
+ },
+ {
+ "type": "STRING",
+ "value": ";"
+ }
+ ]
+ },
+ "_namespace_specifier": {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "CHOICE",
+ "members": [
+ {
+ "type": "STRING",
+ "value": "inline"
+ },
+ {
+ "type": "BLANK"
+ }
+ ]
+ },
+ {
+ "type": "SYMBOL",
+ "name": "_namespace_identifier"
+ }
+ ]
+ },
+ "nested_namespace_specifier": {
+ "type": "PREC",
+ "value": 1,
+ "content": {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "CHOICE",
+ "members": [
+ {
+ "type": "SYMBOL",
+ "name": "_namespace_specifier"
+ },
+ {
+ "type": "BLANK"
+ }
+ ]
+ },
+ {
+ "type": "STRING",
+ "value": "::"
+ },
+ {
+ "type": "CHOICE",
+ "members": [
+ {
+ "type": "SYMBOL",
+ "name": "nested_namespace_specifier"
+ },
+ {
+ "type": "SYMBOL",
+ "name": "_namespace_specifier"
+ }
+ ]
+ }
+ ]
+ }
+ },
+ "using_declaration": {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "STRING",
+ "value": "using"
+ },
+ {
+ "type": "CHOICE",
+ "members": [
+ {
+ "type": "CHOICE",
+ "members": [
+ {
+ "type": "STRING",
+ "value": "namespace"
+ },
+ {
+ "type": "STRING",
+ "value": "enum"
+ }
+ ]
+ },
+ {
+ "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": "REPEAT",
+ "content": {
+ "type": "SYMBOL",
+ "name": "attribute_declaration"
+ }
+ },
+ {
+ "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": ";"
+ }
+ ]
+ },
+ "concept_definition": {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "STRING",
+ "value": "concept"
+ },
+ {
+ "type": "FIELD",
+ "name": "name",
+ "content": {
+ "type": "SYMBOL",
+ "name": "identifier"
+ }
+ },
+ {
+ "type": "STRING",
+ "value": "="
+ },
+ {
+ "type": "SYMBOL",
+ "name": "expression"
+ },
+ {
+ "type": "STRING",
+ "value": ";"
+ }
+ ]
+ },
+ "for_range_loop": {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "STRING",
+ "value": "for"
+ },
+ {
+ "type": "STRING",
+ "value": "("
+ },
+ {
+ "type": "SYMBOL",
+ "name": "_for_range_loop_body"
+ },
+ {
+ "type": "STRING",
+ "value": ")"
+ },
+ {
+ "type": "FIELD",
+ "name": "body",
+ "content": {
+ "type": "SYMBOL",
+ "name": "statement"
+ }
+ }
+ ]
+ },
+ "_for_range_loop_body": {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "FIELD",
+ "name": "initializer",
+ "content": {
+ "type": "CHOICE",
+ "members": [
+ {
+ "type": "SYMBOL",
+ "name": "init_statement"
+ },
+ {
+ "type": "BLANK"
+ }
+ ]
+ }
+ },
+ {
+ "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"
+ }
+ ]
+ }
+ }
+ ]
+ },
+ "init_statement": {
+ "type": "CHOICE",
+ "members": [
+ {
+ "type": "SYMBOL",
+ "name": "alias_declaration"
+ },
+ {
+ "type": "SYMBOL",
+ "name": "type_definition"
+ },
+ {
+ "type": "SYMBOL",
+ "name": "declaration"
+ },
+ {
+ "type": "SYMBOL",
+ "name": "expression_statement"
+ }
+ ]
+ },
+ "condition_clause": {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "STRING",
+ "value": "("
+ },
+ {
+ "type": "FIELD",
+ "name": "initializer",
+ "content": {
+ "type": "CHOICE",
+ "members": [
+ {
+ "type": "SYMBOL",
+ "name": "init_statement"
+ },
+ {
+ "type": "BLANK"
+ }
+ ]
+ }
+ },
+ {
+ "type": "FIELD",
+ "name": "value",
+ "content": {
+ "type": "CHOICE",
+ "members": [
+ {
+ "type": "SYMBOL",
+ "name": "expression"
+ },
+ {
+ "type": "SYMBOL",
+ "name": "comma_expression"
+ },
+ {
+ "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"
+ }
+ }
+ ]
+ }
+ ]
+ },
+ "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"
+ }
+ }
+ ]
+ },
+ "raw_string_literal": {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "CHOICE",
+ "members": [
+ {
+ "type": "STRING",
+ "value": "R\""
+ },
+ {
+ "type": "STRING",
+ "value": "LR\""
+ },
+ {
+ "type": "STRING",
+ "value": "uR\""
+ },
+ {
+ "type": "STRING",
+ "value": "UR\""
+ },
+ {
+ "type": "STRING",
+ "value": "u8R\""
+ }
+ ]
+ },
+ {
+ "type": "CHOICE",
+ "members": [
+ {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "FIELD",
+ "name": "delimiter",
+ "content": {
+ "type": "SYMBOL",
+ "name": "raw_string_delimiter"
+ }
+ },
+ {
+ "type": "STRING",
+ "value": "("
+ },
+ {
+ "type": "SYMBOL",
+ "name": "raw_string_content"
+ },
+ {
+ "type": "STRING",
+ "value": ")"
+ },
+ {
+ "type": "SYMBOL",
+ "name": "raw_string_delimiter"
+ }
+ ]
+ },
+ {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "STRING",
+ "value": "("
+ },
+ {
+ "type": "SYMBOL",
+ "name": "raw_string_content"
+ },
+ {
+ "type": "STRING",
+ "value": ")"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "STRING",
+ "value": "\""
+ }
+ ]
+ },
+ "subscript_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": "]"
+ }
+ ]
+ },
+ "co_await_expression": {
+ "type": "PREC_LEFT",
+ "value": 14,
+ "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": 16,
+ "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": "PREC_LEFT",
+ "value": 0,
+ "content": {
+ "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"
+ }
+ ]
+ }
+ },
+ "type_requirement": {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "STRING",
+ "value": "typename"
+ },
+ {
+ "type": "SYMBOL",
+ "name": "_class_name"
+ }
+ ]
+ },
+ "compound_requirement": {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "STRING",
+ "value": "{"
+ },
+ {
+ "type": "SYMBOL",
+ "name": "expression"
+ },
+ {
+ "type": "STRING",
+ "value": "}"
+ },
+ {
+ "type": "CHOICE",
+ "members": [
+ {
+ "type": "STRING",
+ "value": "noexcept"
+ },
+ {
+ "type": "BLANK"
+ }
+ ]
+ },
+ {
+ "type": "CHOICE",
+ "members": [
+ {
+ "type": "SYMBOL",
+ "name": "trailing_return_type"
+ },
+ {
+ "type": "BLANK"
+ }
+ ]
+ },
+ {
+ "type": "STRING",
+ "value": ";"
+ }
+ ]
+ },
+ "_requirement": {
+ "type": "CHOICE",
+ "members": [
+ {
+ "type": "ALIAS",
+ "content": {
+ "type": "SYMBOL",
+ "name": "expression_statement"
+ },
+ "named": true,
+ "value": "simple_requirement"
+ },
+ {
+ "type": "SYMBOL",
+ "name": "type_requirement"
+ },
+ {
+ "type": "SYMBOL",
+ "name": "compound_requirement"
+ }
+ ]
+ },
+ "requirement_seq": {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "STRING",
+ "value": "{"
+ },
+ {
+ "type": "REPEAT",
+ "content": {
+ "type": "SYMBOL",
+ "name": "_requirement"
+ }
+ },
+ {
+ "type": "STRING",
+ "value": "}"
+ }
+ ]
+ },
+ "constraint_conjunction": {
+ "type": "PREC_LEFT",
+ "value": 2,
+ "content": {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "FIELD",
+ "name": "left",
+ "content": {
+ "type": "SYMBOL",
+ "name": "_requirement_clause_constraint"
+ }
+ },
+ {
+ "type": "FIELD",
+ "name": "operator",
+ "content": {
+ "type": "CHOICE",
+ "members": [
+ {
+ "type": "STRING",
+ "value": "&&"
+ },
+ {
+ "type": "STRING",
+ "value": "and"
+ }
+ ]
+ }
+ },
+ {
+ "type": "FIELD",
+ "name": "right",
+ "content": {
+ "type": "SYMBOL",
+ "name": "_requirement_clause_constraint"
+ }
+ }
+ ]
+ }
+ },
+ "constraint_disjunction": {
+ "type": "PREC_LEFT",
+ "value": 1,
+ "content": {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "FIELD",
+ "name": "left",
+ "content": {
+ "type": "SYMBOL",
+ "name": "_requirement_clause_constraint"
+ }
+ },
+ {
+ "type": "FIELD",
+ "name": "operator",
+ "content": {
+ "type": "CHOICE",
+ "members": [
+ {
+ "type": "STRING",
+ "value": "||"
+ },
+ {
+ "type": "STRING",
+ "value": "or"
+ }
+ ]
+ }
+ },
+ {
+ "type": "FIELD",
+ "name": "right",
+ "content": {
+ "type": "SYMBOL",
+ "name": "_requirement_clause_constraint"
+ }
+ }
+ ]
+ }
+ },
+ "_requirement_clause_constraint": {
+ "type": "CHOICE",
+ "members": [
+ {
+ "type": "SYMBOL",
+ "name": "true"
+ },
+ {
+ "type": "SYMBOL",
+ "name": "false"
+ },
+ {
+ "type": "SYMBOL",
+ "name": "_class_name"
+ },
+ {
+ "type": "SYMBOL",
+ "name": "fold_expression"
+ },
+ {
+ "type": "SYMBOL",
+ "name": "lambda_expression"
+ },
+ {
+ "type": "SYMBOL",
+ "name": "requires_expression"
+ },
+ {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "STRING",
+ "value": "("
+ },
+ {
+ "type": "SYMBOL",
+ "name": "expression"
+ },
+ {
+ "type": "STRING",
+ "value": ")"
+ }
+ ]
+ },
+ {
+ "type": "SYMBOL",
+ "name": "constraint_conjunction"
+ },
+ {
+ "type": "SYMBOL",
+ "name": "constraint_disjunction"
+ }
+ ]
+ },
+ "requires_clause": {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "STRING",
+ "value": "requires"
+ },
+ {
+ "type": "FIELD",
+ "name": "constraint",
+ "content": {
+ "type": "SYMBOL",
+ "name": "_requirement_clause_constraint"
+ }
+ }
+ ]
+ },
+ "requires_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": "variadic_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": "variadic_parameter_declaration"
+ }
+ ]
+ }
+ ]
+ }
+ }
+ ]
+ },
+ {
+ "type": "BLANK"
+ }
+ ]
+ },
+ {
+ "type": "STRING",
+ "value": ")"
+ }
+ ]
+ },
+ "requires_expression": {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "STRING",
+ "value": "requires"
+ },
+ {
+ "type": "FIELD",
+ "name": "parameters",
+ "content": {
+ "type": "CHOICE",
+ "members": [
+ {
+ "type": "ALIAS",
+ "content": {
+ "type": "SYMBOL",
+ "name": "requires_parameter_list"
+ },
+ "named": true,
+ "value": "parameter_list"
+ },
+ {
+ "type": "BLANK"
+ }
+ ]
+ }
+ },
+ {
+ "type": "FIELD",
+ "name": "requirements",
+ "content": {
+ "type": "SYMBOL",
+ "name": "requirement_seq"
+ }
+ }
+ ]
+ },
+ "lambda_expression": {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "FIELD",
+ "name": "captures",
+ "content": {
+ "type": "SYMBOL",
+ "name": "lambda_capture_specifier"
+ }
+ },
+ {
+ "type": "CHOICE",
+ "members": [
+ {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "FIELD",
+ "name": "template_parameters",
+ "content": {
+ "type": "SYMBOL",
+ "name": "template_parameter_list"
+ }
+ },
+ {
+ "type": "CHOICE",
+ "members": [
+ {
+ "type": "FIELD",
+ "name": "constraint",
+ "content": {
+ "type": "SYMBOL",
+ "name": "requires_clause"
+ }
+ },
+ {
+ "type": "BLANK"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "BLANK"
+ }
+ ]
+ },
+ {
+ "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": "&"
+ }
+ ]
+ },
+ "_fold_operator": {
+ "type": "CHOICE",
+ "members": [
+ {
+ "type": "STRING",
+ "value": "+"
+ },
+ {
+ "type": "STRING",
+ "value": "-"
+ },
+ {
+ "type": "STRING",
+ "value": "*"
+ },
+ {
+ "type": "STRING",
+ "value": "/"
+ },
+ {
+ "type": "STRING",
+ "value": "%"
+ },
+ {
+ "type": "STRING",
+ "value": "^"
+ },
+ {
+ "type": "STRING",
+ "value": "&"
+ },
+ {
+ "type": "STRING",
+ "value": "|"
+ },
+ {
+ "type": "STRING",
+ "value": "="
+ },
+ {
+ "type": "STRING",
+ "value": "<"
+ },
+ {
+ "type": "STRING",
+ "value": ">"
+ },
+ {
+ "type": "STRING",
+ "value": "<<"
+ },
+ {
+ "type": "STRING",
+ "value": ">>"
+ },
+ {
+ "type": "STRING",
+ "value": "+="
+ },
+ {
+ "type": "STRING",
+ "value": "-="
+ },
+ {
+ "type": "STRING",
+ "value": "*="
+ },
+ {
+ "type": "STRING",
+ "value": "/="
+ },
+ {
+ "type": "STRING",
+ "value": "%="
+ },
+ {
+ "type": "STRING",
+ "value": "^="
+ },
+ {
+ "type": "STRING",
+ "value": "&="
+ },
+ {
+ "type": "STRING",
+ "value": "|="
+ },
+ {
+ "type": "STRING",
+ "value": ">>="
+ },
+ {
+ "type": "STRING",
+ "value": "<<="
+ },
+ {
+ "type": "STRING",
+ "value": "=="
+ },
+ {
+ "type": "STRING",
+ "value": "!="
+ },
+ {
+ "type": "STRING",
+ "value": "<="
+ },
+ {
+ "type": "STRING",
+ "value": ">="
+ },
+ {
+ "type": "STRING",
+ "value": "&&"
+ },
+ {
+ "type": "STRING",
+ "value": "||"
+ },
+ {
+ "type": "STRING",
+ "value": ","
+ },
+ {
+ "type": "STRING",
+ "value": ".*"
+ },
+ {
+ "type": "STRING",
+ "value": "->*"
+ },
+ {
+ "type": "STRING",
+ "value": "or"
+ },
+ {
+ "type": "STRING",
+ "value": "and"
+ },
+ {
+ "type": "STRING",
+ "value": "bitor"
+ },
+ {
+ "type": "STRING",
+ "value": "xor"
+ },
+ {
+ "type": "STRING",
+ "value": "bitand"
+ },
+ {
+ "type": "STRING",
+ "value": "not_eq"
+ }
+ ]
+ },
+ "_binary_fold_operator": {
+ "type": "CHOICE",
+ "members": [
+ {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "FIELD",
+ "name": "operator",
+ "content": {
+ "type": "STRING",
+ "value": "+"
+ }
+ },
+ {
+ "type": "STRING",
+ "value": "..."
+ },
+ {
+ "type": "STRING",
+ "value": "+"
+ }
+ ]
+ },
+ {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "FIELD",
+ "name": "operator",
+ "content": {
+ "type": "STRING",
+ "value": "-"
+ }
+ },
+ {
+ "type": "STRING",
+ "value": "..."
+ },
+ {
+ "type": "STRING",
+ "value": "-"
+ }
+ ]
+ },
+ {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "FIELD",
+ "name": "operator",
+ "content": {
+ "type": "STRING",
+ "value": "*"
+ }
+ },
+ {
+ "type": "STRING",
+ "value": "..."
+ },
+ {
+ "type": "STRING",
+ "value": "*"
+ }
+ ]
+ },
+ {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "FIELD",
+ "name": "operator",
+ "content": {
+ "type": "STRING",
+ "value": "/"
+ }
+ },
+ {
+ "type": "STRING",
+ "value": "..."
+ },
+ {
+ "type": "STRING",
+ "value": "/"
+ }
+ ]
+ },
+ {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "FIELD",
+ "name": "operator",
+ "content": {
+ "type": "STRING",
+ "value": "%"
+ }
+ },
+ {
+ "type": "STRING",
+ "value": "..."
+ },
+ {
+ "type": "STRING",
+ "value": "%"
+ }
+ ]
+ },
+ {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "FIELD",
+ "name": "operator",
+ "content": {
+ "type": "STRING",
+ "value": "^"
+ }
+ },
+ {
+ "type": "STRING",
+ "value": "..."
+ },
+ {
+ "type": "STRING",
+ "value": "^"
+ }
+ ]
+ },
+ {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "FIELD",
+ "name": "operator",
+ "content": {
+ "type": "STRING",
+ "value": "&"
+ }
+ },
+ {
+ "type": "STRING",
+ "value": "..."
+ },
+ {
+ "type": "STRING",
+ "value": "&"
+ }
+ ]
+ },
+ {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "FIELD",
+ "name": "operator",
+ "content": {
+ "type": "STRING",
+ "value": "|"
+ }
+ },
+ {
+ "type": "STRING",
+ "value": "..."
+ },
+ {
+ "type": "STRING",
+ "value": "|"
+ }
+ ]
+ },
+ {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "FIELD",
+ "name": "operator",
+ "content": {
+ "type": "STRING",
+ "value": "="
+ }
+ },
+ {
+ "type": "STRING",
+ "value": "..."
+ },
+ {
+ "type": "STRING",
+ "value": "="
+ }
+ ]
+ },
+ {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "FIELD",
+ "name": "operator",
+ "content": {
+ "type": "STRING",
+ "value": "<"
+ }
+ },
+ {
+ "type": "STRING",
+ "value": "..."
+ },
+ {
+ "type": "STRING",
+ "value": "<"
+ }
+ ]
+ },
+ {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "FIELD",
+ "name": "operator",
+ "content": {
+ "type": "STRING",
+ "value": ">"
+ }
+ },
+ {
+ "type": "STRING",
+ "value": "..."
+ },
+ {
+ "type": "STRING",
+ "value": ">"
+ }
+ ]
+ },
+ {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "FIELD",
+ "name": "operator",
+ "content": {
+ "type": "STRING",
+ "value": "<<"
+ }
+ },
+ {
+ "type": "STRING",
+ "value": "..."
+ },
+ {
+ "type": "STRING",
+ "value": "<<"
+ }
+ ]
+ },
+ {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "FIELD",
+ "name": "operator",
+ "content": {
+ "type": "STRING",
+ "value": ">>"
+ }
+ },
+ {
+ "type": "STRING",
+ "value": "..."
+ },
+ {
+ "type": "STRING",
+ "value": ">>"
+ }
+ ]
+ },
+ {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "FIELD",
+ "name": "operator",
+ "content": {
+ "type": "STRING",
+ "value": "+="
+ }
+ },
+ {
+ "type": "STRING",
+ "value": "..."
+ },
+ {
+ "type": "STRING",
+ "value": "+="
+ }
+ ]
+ },
+ {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "FIELD",
+ "name": "operator",
+ "content": {
+ "type": "STRING",
+ "value": "-="
+ }
+ },
+ {
+ "type": "STRING",
+ "value": "..."
+ },
+ {
+ "type": "STRING",
+ "value": "-="
+ }
+ ]
+ },
+ {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "FIELD",
+ "name": "operator",
+ "content": {
+ "type": "STRING",
+ "value": "*="
+ }
+ },
+ {
+ "type": "STRING",
+ "value": "..."
+ },
+ {
+ "type": "STRING",
+ "value": "*="
+ }
+ ]
+ },
+ {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "FIELD",
+ "name": "operator",
+ "content": {
+ "type": "STRING",
+ "value": "/="
+ }
+ },
+ {
+ "type": "STRING",
+ "value": "..."
+ },
+ {
+ "type": "STRING",
+ "value": "/="
+ }
+ ]
+ },
+ {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "FIELD",
+ "name": "operator",
+ "content": {
+ "type": "STRING",
+ "value": "%="
+ }
+ },
+ {
+ "type": "STRING",
+ "value": "..."
+ },
+ {
+ "type": "STRING",
+ "value": "%="
+ }
+ ]
+ },
+ {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "FIELD",
+ "name": "operator",
+ "content": {
+ "type": "STRING",
+ "value": "^="
+ }
+ },
+ {
+ "type": "STRING",
+ "value": "..."
+ },
+ {
+ "type": "STRING",
+ "value": "^="
+ }
+ ]
+ },
+ {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "FIELD",
+ "name": "operator",
+ "content": {
+ "type": "STRING",
+ "value": "&="
+ }
+ },
+ {
+ "type": "STRING",
+ "value": "..."
+ },
+ {
+ "type": "STRING",
+ "value": "&="
+ }
+ ]
+ },
+ {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "FIELD",
+ "name": "operator",
+ "content": {
+ "type": "STRING",
+ "value": "|="
+ }
+ },
+ {
+ "type": "STRING",
+ "value": "..."
+ },
+ {
+ "type": "STRING",
+ "value": "|="
+ }
+ ]
+ },
+ {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "FIELD",
+ "name": "operator",
+ "content": {
+ "type": "STRING",
+ "value": ">>="
+ }
+ },
+ {
+ "type": "STRING",
+ "value": "..."
+ },
+ {
+ "type": "STRING",
+ "value": ">>="
+ }
+ ]
+ },
+ {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "FIELD",
+ "name": "operator",
+ "content": {
+ "type": "STRING",
+ "value": "<<="
+ }
+ },
+ {
+ "type": "STRING",
+ "value": "..."
+ },
+ {
+ "type": "STRING",
+ "value": "<<="
+ }
+ ]
+ },
+ {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "FIELD",
+ "name": "operator",
+ "content": {
+ "type": "STRING",
+ "value": "=="
+ }
+ },
+ {
+ "type": "STRING",
+ "value": "..."
+ },
+ {
+ "type": "STRING",
+ "value": "=="
+ }
+ ]
+ },
+ {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "FIELD",
+ "name": "operator",
+ "content": {
+ "type": "STRING",
+ "value": "!="
+ }
+ },
+ {
+ "type": "STRING",
+ "value": "..."
+ },
+ {
+ "type": "STRING",
+ "value": "!="
+ }
+ ]
+ },
+ {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "FIELD",
+ "name": "operator",
+ "content": {
+ "type": "STRING",
+ "value": "<="
+ }
+ },
+ {
+ "type": "STRING",
+ "value": "..."
+ },
+ {
+ "type": "STRING",
+ "value": "<="
+ }
+ ]
+ },
+ {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "FIELD",
+ "name": "operator",
+ "content": {
+ "type": "STRING",
+ "value": ">="
+ }
+ },
+ {
+ "type": "STRING",
+ "value": "..."
+ },
+ {
+ "type": "STRING",
+ "value": ">="
+ }
+ ]
+ },
+ {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "FIELD",
+ "name": "operator",
+ "content": {
+ "type": "STRING",
+ "value": "&&"
+ }
+ },
+ {
+ "type": "STRING",
+ "value": "..."
+ },
+ {
+ "type": "STRING",
+ "value": "&&"
+ }
+ ]
+ },
+ {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "FIELD",
+ "name": "operator",
+ "content": {
+ "type": "STRING",
+ "value": "||"
+ }
+ },
+ {
+ "type": "STRING",
+ "value": "..."
+ },
+ {
+ "type": "STRING",
+ "value": "||"
+ }
+ ]
+ },
+ {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "FIELD",
+ "name": "operator",
+ "content": {
+ "type": "STRING",
+ "value": ","
+ }
+ },
+ {
+ "type": "STRING",
+ "value": "..."
+ },
+ {
+ "type": "STRING",
+ "value": ","
+ }
+ ]
+ },
+ {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "FIELD",
+ "name": "operator",
+ "content": {
+ "type": "STRING",
+ "value": ".*"
+ }
+ },
+ {
+ "type": "STRING",
+ "value": "..."
+ },
+ {
+ "type": "STRING",
+ "value": ".*"
+ }
+ ]
+ },
+ {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "FIELD",
+ "name": "operator",
+ "content": {
+ "type": "STRING",
+ "value": "->*"
+ }
+ },
+ {
+ "type": "STRING",
+ "value": "..."
+ },
+ {
+ "type": "STRING",
+ "value": "->*"
+ }
+ ]
+ },
+ {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "FIELD",
+ "name": "operator",
+ "content": {
+ "type": "STRING",
+ "value": "or"
+ }
+ },
+ {
+ "type": "STRING",
+ "value": "..."
+ },
+ {
+ "type": "STRING",
+ "value": "or"
+ }
+ ]
+ },
+ {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "FIELD",
+ "name": "operator",
+ "content": {
+ "type": "STRING",
+ "value": "and"
+ }
+ },
+ {
+ "type": "STRING",
+ "value": "..."
+ },
+ {
+ "type": "STRING",
+ "value": "and"
+ }
+ ]
+ },
+ {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "FIELD",
+ "name": "operator",
+ "content": {
+ "type": "STRING",
+ "value": "bitor"
+ }
+ },
+ {
+ "type": "STRING",
+ "value": "..."
+ },
+ {
+ "type": "STRING",
+ "value": "bitor"
+ }
+ ]
+ },
+ {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "FIELD",
+ "name": "operator",
+ "content": {
+ "type": "STRING",
+ "value": "xor"
+ }
+ },
+ {
+ "type": "STRING",
+ "value": "..."
+ },
+ {
+ "type": "STRING",
+ "value": "xor"
+ }
+ ]
+ },
+ {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "FIELD",
+ "name": "operator",
+ "content": {
+ "type": "STRING",
+ "value": "bitand"
+ }
+ },
+ {
+ "type": "STRING",
+ "value": "..."
+ },
+ {
+ "type": "STRING",
+ "value": "bitand"
+ }
+ ]
+ },
+ {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "FIELD",
+ "name": "operator",
+ "content": {
+ "type": "STRING",
+ "value": "not_eq"
+ }
+ },
+ {
+ "type": "STRING",
+ "value": "..."
+ },
+ {
+ "type": "STRING",
+ "value": "not_eq"
+ }
+ ]
+ }
+ ]
+ },
+ "_unary_left_fold": {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "FIELD",
+ "name": "left",
+ "content": {
+ "type": "STRING",
+ "value": "..."
+ }
+ },
+ {
+ "type": "FIELD",
+ "name": "operator",
+ "content": {
+ "type": "SYMBOL",
+ "name": "_fold_operator"
+ }
+ },
+ {
+ "type": "FIELD",
+ "name": "right",
+ "content": {
+ "type": "SYMBOL",
+ "name": "expression"
+ }
+ }
+ ]
+ },
+ "_unary_right_fold": {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "FIELD",
+ "name": "left",
+ "content": {
+ "type": "SYMBOL",
+ "name": "expression"
+ }
+ },
+ {
+ "type": "FIELD",
+ "name": "operator",
+ "content": {
+ "type": "SYMBOL",
+ "name": "_fold_operator"
+ }
+ },
+ {
+ "type": "FIELD",
+ "name": "right",
+ "content": {
+ "type": "STRING",
+ "value": "..."
+ }
+ }
+ ]
+ },
+ "_binary_fold": {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "FIELD",
+ "name": "left",
+ "content": {
+ "type": "SYMBOL",
+ "name": "expression"
+ }
+ },
+ {
+ "type": "SYMBOL",
+ "name": "_binary_fold_operator"
+ },
+ {
+ "type": "FIELD",
+ "name": "right",
+ "content": {
+ "type": "SYMBOL",
+ "name": "expression"
+ }
+ }
+ ]
+ },
+ "fold_expression": {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "STRING",
+ "value": "("
+ },
+ {
+ "type": "CHOICE",
+ "members": [
+ {
+ "type": "SYMBOL",
+ "name": "_unary_right_fold"
+ },
+ {
+ "type": "SYMBOL",
+ "name": "_unary_left_fold"
+ },
+ {
+ "type": "SYMBOL",
+ "name": "_binary_fold"
+ }
+ ]
+ },
+ {
+ "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": "SYMBOL",
+ "name": "decltype"
+ },
+ {
+ "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": "PREC_DYNAMIC",
+ "value": 1,
+ "content": {
+ "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": "SEQ",
+ "members": [
+ {
+ "type": "CHOICE",
+ "members": [
+ {
+ "type": "STRING",
+ "value": "template"
+ },
+ {
+ "type": "BLANK"
+ }
+ ]
+ },
+ {
+ "type": "SYMBOL",
+ "name": "identifier"
+ }
+ ]
+ },
+ {
+ "type": "SYMBOL",
+ "name": "operator_name"
+ },
+ {
+ "type": "SYMBOL",
+ "name": "destructor_name"
+ },
+ {
+ "type": "SYMBOL",
+ "name": "pointer_type_declarator"
+ }
+ ]
+ }
+ }
+ ]
+ },
+ "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"
+ }
+ ]
+ }
+ }
+ ]
+ },
+ "_assignment_expression_lhs": {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "FIELD",
+ "name": "left",
+ "content": {
+ "type": "SYMBOL",
+ "name": "expression"
+ }
+ },
+ {
+ "type": "FIELD",
+ "name": "operator",
+ "content": {
+ "type": "CHOICE",
+ "members": [
+ {
+ "type": "STRING",
+ "value": "="
+ },
+ {
+ "type": "STRING",
+ "value": "*="
+ },
+ {
+ "type": "STRING",
+ "value": "/="
+ },
+ {
+ "type": "STRING",
+ "value": "%="
+ },
+ {
+ "type": "STRING",
+ "value": "+="
+ },
+ {
+ "type": "STRING",
+ "value": "-="
+ },
+ {
+ "type": "STRING",
+ "value": "<<="
+ },
+ {
+ "type": "STRING",
+ "value": ">>="
+ },
+ {
+ "type": "STRING",
+ "value": "&="
+ },
+ {
+ "type": "STRING",
+ "value": "^="
+ },
+ {
+ "type": "STRING",
+ "value": "|="
+ },
+ {
+ "type": "STRING",
+ "value": "and_eq"
+ },
+ {
+ "type": "STRING",
+ "value": "or_eq"
+ },
+ {
+ "type": "STRING",
+ "value": "xor_eq"
+ }
+ ]
+ }
+ },
+ {
+ "type": "FIELD",
+ "name": "right",
+ "content": {
+ "type": "CHOICE",
+ "members": [
+ {
+ "type": "SYMBOL",
+ "name": "expression"
+ },
+ {
+ "type": "SYMBOL",
+ "name": "initializer_list"
+ }
+ ]
+ }
+ }
+ ]
+ },
+ "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": "STRING",
+ "value": "[]"
+ },
+ {
+ "type": "STRING",
+ "value": "xor"
+ },
+ {
+ "type": "STRING",
+ "value": "bitand"
+ },
+ {
+ "type": "STRING",
+ "value": "bitor"
+ },
+ {
+ "type": "STRING",
+ "value": "compl"
+ },
+ {
+ "type": "STRING",
+ "value": "not"
+ },
+ {
+ "type": "STRING",
+ "value": "xor_eq"
+ },
+ {
+ "type": "STRING",
+ "value": "and_eq"
+ },
+ {
+ "type": "STRING",
+ "value": "or_eq"
+ },
+ {
+ "type": "STRING",
+ "value": "not_eq"
+ },
+ {
+ "type": "STRING",
+ "value": "and"
+ },
+ {
+ "type": "STRING",
+ "value": "or"
+ },
+ {
+ "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"
+ },
+ "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"
+ },
+ "kernel_call_expression": {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "FIELD",
+ "name": "function",
+ "content": {
+ "type": "SYMBOL",
+ "name": "expression"
+ }
+ },
+ {
+ "type": "SYMBOL",
+ "name": "kernel_call_syntax"
+ },
+ {
+ "type": "FIELD",
+ "name": "arguments",
+ "content": {
+ "type": "SYMBOL",
+ "name": "argument_list"
+ }
+ }
+ ]
+ },
+ "kernel_call_syntax": {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "ALIAS",
+ "content": {
+ "type": "TOKEN",
+ "content": {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "STRING",
+ "value": "<"
+ },
+ {
+ "type": "PATTERN",
+ "value": "\\s*"
+ },
+ {
+ "type": "STRING",
+ "value": "<"
+ },
+ {
+ "type": "PATTERN",
+ "value": "\\s*"
+ },
+ {
+ "type": "STRING",
+ "value": "<"
+ }
+ ]
+ }
+ },
+ "named": false,
+ "value": "<<<"
+ },
+ {
+ "type": "SYMBOL",
+ "name": "expression"
+ },
+ {
+ "type": "REPEAT",
+ "content": {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "STRING",
+ "value": ","
+ },
+ {
+ "type": "SYMBOL",
+ "name": "expression"
+ }
+ ]
+ }
+ },
+ {
+ "type": "ALIAS",
+ "content": {
+ "type": "TOKEN",
+ "content": {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "STRING",
+ "value": ">"
+ },
+ {
+ "type": "PATTERN",
+ "value": "\\s*"
+ },
+ {
+ "type": "STRING",
+ "value": ">"
+ },
+ {
+ "type": "PATTERN",
+ "value": "\\s*"
+ },
+ {
+ "type": "STRING",
+ "value": ">"
+ }
+ ]
+ }
+ },
+ "named": false,
+ "value": ">>>"
+ }
+ ]
+ },
+ "launch_bounds": {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "STRING",
+ "value": "__launch_bounds__"
+ },
+ {
+ "type": "STRING",
+ "value": "("
+ },
+ {
+ "type": "SYMBOL",
+ "name": "expression"
+ },
+ {
+ "type": "CHOICE",
+ "members": [
+ {
+ "type": "SEQ",
+ "members": [
+ {
+ "type": "STRING",
+ "value": ","
+ },
+ {
+ "type": "SYMBOL",
+ "name": "expression"
+ }
+ ]
+ },
+ {
+ "type": "BLANK"
+ }
+ ]
+ },
+ {
+ "type": "STRING",
+ "value": ")"
+ }
+ ]
+ }
+ },
+ "extras": [
+ {
+ "type": "PATTERN",
+ "value": "\\s|\\\\\\r?\\n"
+ },
+ {
+ "type": "SYMBOL",
+ "name": "comment"
+ }
+ ],
+ "conflicts": [
+ [
+ "type_specifier",
+ "_declarator"
+ ],
+ [
+ "type_specifier",
+ "expression"
+ ],
+ [
+ "sized_type_specifier"
+ ],
+ [
+ "attributed_statement"
+ ],
+ [
+ "_declaration_modifiers",
+ "attributed_statement"
+ ],
+ [
+ "_top_level_item",
+ "_top_level_statement"
+ ],
+ [
+ "_block_item",
+ "statement"
+ ],
+ [
+ "template_function",
+ "template_type"
+ ],
+ [
+ "template_function",
+ "template_type",
+ "expression"
+ ],
+ [
+ "template_function",
+ "template_type",
+ "qualified_identifier"
+ ],
+ [
+ "template_type",
+ "qualified_type_identifier"
+ ],
+ [
+ "qualified_type_identifier",
+ "qualified_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"
+ ],
+ [
+ "_binary_fold_operator",
+ "_fold_operator"
+ ],
+ [
+ "_function_declarator_seq"
+ ],
+ [
+ "type_specifier",
+ "sized_type_specifier"
+ ],
+ [
+ "initializer_pair",
+ "comma_expression"
+ ],
+ [
+ "expression_statement",
+ "_for_statement_body"
+ ],
+ [
+ "init_statement",
+ "_for_statement_body"
+ ],
+ [
+ "field_expression",
+ "template_method",
+ "template_type"
+ ],
+ [
+ "qualified_field_identifier",
+ "template_method",
+ "template_type"
+ ]
+ ],
+ "precedences": [
+ [
+ {
+ "type": "SYMBOL",
+ "name": "argument_list"
+ },
+ {
+ "type": "SYMBOL",
+ "name": "type_qualifier"
+ }
+ ],
+ [
+ {
+ "type": "SYMBOL",
+ "name": "_expression_not_binary"
+ },
+ {
+ "type": "SYMBOL",
+ "name": "_class_name"
+ }
+ ]
+ ],
+ "externals": [
+ {
+ "type": "SYMBOL",
+ "name": "raw_string_delimiter"
+ },
+ {
+ "type": "SYMBOL",
+ "name": "raw_string_content"
+ }
+ ],
+ "inline": [
+ "_type_identifier",
+ "_field_identifier",
+ "_statement_identifier",
+ "_non_case_statement",
+ "_assignment_left_expression",
+ "_expression_not_binary",
+ "_namespace_identifier"
+ ],
+ "supertypes": [
+ "expression",
+ "statement",
+ "type_specifier",
+ "_declarator",
+ "_field_declarator",
+ "_type_declarator",
+ "_abstract_declarator"
+ ]
+}