diff options
Diffstat (limited to 'vendor/tree-sitter-glsl/src/grammar.json')
| -rw-r--r-- | vendor/tree-sitter-glsl/src/grammar.json | 10341 |
1 files changed, 10341 insertions, 0 deletions
diff --git a/vendor/tree-sitter-glsl/src/grammar.json b/vendor/tree-sitter-glsl/src/grammar.json new file mode 100644 index 0000000..e82a6dc --- /dev/null +++ b/vendor/tree-sitter-glsl/src/grammar.json @@ -0,0 +1,10341 @@ +{ + "0": "c", + "name": "glsl", + "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": "preproc_extension" + } + ] + }, + "_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": "preproc_extension" + } + ] + }, + "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": "SEQ", + "members": [ + { + "type": "STRING", + "value": "subroutine" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "(" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "identifier" + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "REPEAT", + "content": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "," + }, + { + "type": "SYMBOL", + "name": "identifier" + } + ] + } + }, + { + "type": "STRING", + "value": ")" + } + ] + }, + { + "type": "BLANK" + } + ] + } + ] + }, + { + "type": "BLANK" + } + ] + }, + { + "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": "SYMBOL", + "name": "compound_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": "CHOICE", + "members": [ + { + "type": "SEQ", + "members": [ + { + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": "invariant" + }, + { + "type": "STRING", + "value": "precise" + } + ] + }, + { + "type": "SYMBOL", + "name": "identifier" + }, + { + "type": "STRING", + "value": ";" + } + ] + }, + { + "type": "SEQ", + "members": [ + { + "type": "REPEAT", + "content": { + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": "in" + }, + { + "type": "STRING", + "value": "out" + }, + { + "type": "STRING", + "value": "inout" + }, + { + "type": "STRING", + "value": "uniform" + }, + { + "type": "STRING", + "value": "shared" + }, + { + "type": "STRING", + "value": "attribute" + }, + { + "type": "STRING", + "value": "varying" + }, + { + "type": "STRING", + "value": "buffer" + }, + { + "type": "STRING", + "value": "coherent" + }, + { + "type": "STRING", + "value": "readonly" + }, + { + "type": "STRING", + "value": "writeonly" + }, + { + "type": "STRING", + "value": "precision" + }, + { + "type": "STRING", + "value": "highp" + }, + { + "type": "STRING", + "value": "mediump" + }, + { + "type": "STRING", + "value": "lowp" + }, + { + "type": "STRING", + "value": "subroutine" + }, + { + "type": "STRING", + "value": "centroid" + }, + { + "type": "STRING", + "value": "sample" + }, + { + "type": "STRING", + "value": "patch" + }, + { + "type": "STRING", + "value": "smooth" + }, + { + "type": "STRING", + "value": "flat" + }, + { + "type": "STRING", + "value": "noperspective" + }, + { + "type": "STRING", + "value": "invariant" + }, + { + "type": "STRING", + "value": "precise" + }, + { + "type": "SYMBOL", + "name": "extension_storage_class" + }, + { + "type": "SYMBOL", + "name": "layout_specification" + } + ] + } + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "identifier" + }, + { + "type": "SYMBOL", + "name": "field_declaration_list" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "identifier" + }, + { + "type": "SYMBOL", + "name": "array_declarator" + } + ] + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "STRING", + "value": ";" + } + ] + }, + { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "_declaration_specifiers" + }, + { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "declarator", + "content": { + "type": "CHOICE", + "members": [ + { + "type": "SEQ", + "members": [ + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "ms_call_modifier" + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "SYMBOL", + "name": "_declaration_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": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "ms_call_modifier" + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "SYMBOL", + "name": "_declaration_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": "storage_class_specifier" + }, + { + "type": "SYMBOL", + "name": "type_qualifier" + }, + { + "type": "SYMBOL", + "name": "attribute_specifier" + }, + { + "type": "SYMBOL", + "name": "attribute_declaration" + }, + { + "type": "SYMBOL", + "name": "ms_declspec_modifier" + } + ] + }, + "_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": "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" + } + ] + }, + "_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": "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_declarator": { + "type": "CHOICE", + "members": [ + { + "type": "ALIAS", + "content": { + "type": "SYMBOL", + "name": "attributed_type_declarator" + }, + "named": true, + "value": "attributed_declarator" + }, + { + "type": "ALIAS", + "content": { + "type": "SYMBOL", + "name": "pointer_type_declarator" + }, + "named": true, + "value": "pointer_declarator" + }, + { + "type": "ALIAS", + "content": { + "type": "SYMBOL", + "name": "function_type_declarator" + }, + "named": true, + "value": "function_declarator" + }, + { + "type": "ALIAS", + "content": { + "type": "SYMBOL", + "name": "array_type_declarator" + }, + "named": true, + "value": "array_declarator" + }, + { + "type": "ALIAS", + "content": { + "type": "SYMBOL", + "name": "parenthesized_type_declarator" + }, + "named": true, + "value": "parenthesized_declarator" + }, + { + "type": "SYMBOL", + "name": "_type_identifier" + }, + { + "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" + } + ] + }, + "_abstract_declarator": { + "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" + } + ] + }, + "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_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": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "attribute_specifier" + }, + { + "type": "SYMBOL", + "name": "identifier" + }, + { + "type": "ALIAS", + "content": { + "type": "SYMBOL", + "name": "preproc_call_expression" + }, + "named": true, + "value": "call_expression" + } + ] + } + } + ] + } + }, + "_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", + "value": 1, + "content": { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "declarator", + "content": { + "type": "SYMBOL", + "name": "_field_declarator" + } + }, + { + "type": "FIELD", + "name": "parameters", + "content": { + "type": "SYMBOL", + "name": "parameter_list" + } + } + ] + } + }, + "function_type_declarator": { + "type": "PREC", + "value": 1, + "content": { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "declarator", + "content": { + "type": "SYMBOL", + "name": "_type_declarator" + } + }, + { + "type": "FIELD", + "name": "parameters", + "content": { + "type": "SYMBOL", + "name": "parameter_list" + } + } + ] + } + }, + "abstract_function_declarator": { + "type": "PREC", + "value": 1, + "content": { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "declarator", + "content": { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "_abstract_declarator" + }, + { + "type": "BLANK" + } + ] + } + }, + { + "type": "FIELD", + "name": "parameters", + "content": { + "type": "SYMBOL", + "name": "parameter_list" + } + } + ] + } + }, + "_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": "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" + } + ] + } + } + ] + }, + "compound_statement": { + "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": "auto" + }, + { + "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_qualifier": { + "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" + } + ] + }, + "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": "macro_type_specifier" + }, + { + "type": "SYMBOL", + "name": "sized_type_specifier" + }, + { + "type": "SYMBOL", + "name": "primitive_type" + }, + { + "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": "SEQ", + "members": [ + { + "type": "STRING", + "value": "enum" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "name", + "content": { + "type": "SYMBOL", + "name": "_type_identifier" + } + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": ":" + }, + { + "type": "FIELD", + "name": "underlying_type", + "content": { + "type": "SYMBOL", + "name": "primitive_type" + } + } + ] + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "FIELD", + "name": "body", + "content": { + "type": "CHOICE", + "members": [ + { + "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": "PREC_RIGHT", + "value": 0, + "content": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "struct" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "attribute_specifier" + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "ms_declspec_modifier" + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "name", + "content": { + "type": "SYMBOL", + "name": "_type_identifier" + } + }, + { + "type": "FIELD", + "name": "body", + "content": { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "field_declaration_list" + }, + { + "type": "BLANK" + } + ] + } + } + ] + }, + { + "type": "FIELD", + "name": "body", + "content": { + "type": "SYMBOL", + "name": "field_declaration_list" + } + } + ] + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "attribute_specifier" + }, + { + "type": "BLANK" + } + ] + } + ] + } + }, + "union_specifier": { + "type": "PREC_RIGHT", + "value": 0, + "content": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "union" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "ms_declspec_modifier" + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "name", + "content": { + "type": "SYMBOL", + "name": "_type_identifier" + } + }, + { + "type": "FIELD", + "name": "body", + "content": { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "field_declaration_list" + }, + { + "type": "BLANK" + } + ] + } + } + ] + }, + { + "type": "FIELD", + "name": "body", + "content": { + "type": "SYMBOL", + "name": "field_declaration_list" + } + } + ] + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "attribute_specifier" + }, + { + "type": "BLANK" + } + ] + } + ] + } + }, + "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": "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" + } + ] + }, + "field_declaration": { + "type": "SEQ", + "members": [ + { + "type": "REPEAT", + "content": { + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": "in" + }, + { + "type": "STRING", + "value": "out" + }, + { + "type": "STRING", + "value": "inout" + }, + { + "type": "STRING", + "value": "uniform" + }, + { + "type": "STRING", + "value": "shared" + }, + { + "type": "STRING", + "value": "attribute" + }, + { + "type": "STRING", + "value": "varying" + }, + { + "type": "STRING", + "value": "buffer" + }, + { + "type": "STRING", + "value": "coherent" + }, + { + "type": "STRING", + "value": "readonly" + }, + { + "type": "STRING", + "value": "writeonly" + }, + { + "type": "STRING", + "value": "precision" + }, + { + "type": "STRING", + "value": "highp" + }, + { + "type": "STRING", + "value": "mediump" + }, + { + "type": "STRING", + "value": "lowp" + }, + { + "type": "STRING", + "value": "subroutine" + }, + { + "type": "STRING", + "value": "centroid" + }, + { + "type": "STRING", + "value": "sample" + }, + { + "type": "STRING", + "value": "patch" + }, + { + "type": "STRING", + "value": "smooth" + }, + { + "type": "STRING", + "value": "flat" + }, + { + "type": "STRING", + "value": "noperspective" + }, + { + "type": "STRING", + "value": "invariant" + }, + { + "type": "STRING", + "value": "precise" + }, + { + "type": "SYMBOL", + "name": "extension_storage_class" + }, + { + "type": "SYMBOL", + "name": "layout_specification" + } + ] + } + }, + { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "_declaration_specifiers" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "_field_declaration_declarator" + }, + { + "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": "variadic_parameter" + } + ] + }, + { + "type": "REPEAT", + "content": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "," + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "parameter_declaration" + }, + { + "type": "SYMBOL", + "name": "variadic_parameter" + } + ] + } + ] + } + } + ] + }, + { + "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": "REPEAT", + "content": { + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": "in" + }, + { + "type": "STRING", + "value": "out" + }, + { + "type": "STRING", + "value": "inout" + }, + { + "type": "STRING", + "value": "uniform" + }, + { + "type": "STRING", + "value": "shared" + }, + { + "type": "STRING", + "value": "attribute" + }, + { + "type": "STRING", + "value": "varying" + }, + { + "type": "STRING", + "value": "buffer" + }, + { + "type": "STRING", + "value": "coherent" + }, + { + "type": "STRING", + "value": "readonly" + }, + { + "type": "STRING", + "value": "writeonly" + }, + { + "type": "STRING", + "value": "centroid" + }, + { + "type": "STRING", + "value": "sample" + }, + { + "type": "STRING", + "value": "patch" + }, + { + "type": "STRING", + "value": "smooth" + }, + { + "type": "STRING", + "value": "flat" + }, + { + "type": "STRING", + "value": "noperspective" + }, + { + "type": "STRING", + "value": "precise" + }, + { + "type": "SYMBOL", + "name": "layout_specification" + } + ] + } + }, + { + "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": "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" + } + ] + }, + "_top_level_statement": { + "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" + } + ] + }, + "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": "FIELD", + "name": "condition", + "content": { + "type": "SYMBOL", + "name": "parenthesized_expression" + } + }, + { + "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": "parenthesized_expression" + } + }, + { + "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": "parenthesized_expression" + } + }, + { + "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": "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": "STRING", + "value": "return" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "expression" + }, + { + "type": "SYMBOL", + "name": "comma_expression" + } + ] + }, + { + "type": "BLANK" + } + ] + }, + { + "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": "SYMBOL", + "name": "_expression_not_binary" + }, + { + "type": "SYMBOL", + "name": "binary_expression" + } + ] + }, + "_expression_not_binary": { + "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" + } + ] + }, + "_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": "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" + } + ] + }, + "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": "FIELD", + "name": "right", + "content": { + "type": "SYMBOL", + "name": "expression" + } + } + ] + } + }, + "pointer_expression": { + "type": "PREC_LEFT", + "value": 12, + "content": { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "operator", + "content": { + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": "*" + }, + { + "type": "STRING", + "value": "&" + } + ] + } + }, + { + "type": "FIELD", + "name": "argument", + "content": { + "type": "SYMBOL", + "name": "expression" + } + } + ] + } + }, + "unary_expression": { + "type": "PREC_LEFT", + "value": 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" + } + } + ] + } + }, + "binary_expression": { + "type": "CHOICE", + "members": [ + { + "type": "PREC_LEFT", + "value": 10, + "content": { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "left", + "content": { + "type": "SYMBOL", + "name": "expression" + } + }, + { + "type": "FIELD", + "name": "operator", + "content": { + "type": "STRING", + "value": "+" + } + }, + { + "type": "FIELD", + "name": "right", + "content": { + "type": "SYMBOL", + "name": "expression" + } + } + ] + } + }, + { + "type": "PREC_LEFT", + "value": 10, + "content": { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "left", + "content": { + "type": "SYMBOL", + "name": "expression" + } + }, + { + "type": "FIELD", + "name": "operator", + "content": { + "type": "STRING", + "value": "-" + } + }, + { + "type": "FIELD", + "name": "right", + "content": { + "type": "SYMBOL", + "name": "expression" + } + } + ] + } + }, + { + "type": "PREC_LEFT", + "value": 11, + "content": { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "left", + "content": { + "type": "SYMBOL", + "name": "expression" + } + }, + { + "type": "FIELD", + "name": "operator", + "content": { + "type": "STRING", + "value": "*" + } + }, + { + "type": "FIELD", + "name": "right", + "content": { + "type": "SYMBOL", + "name": "expression" + } + } + ] + } + }, + { + "type": "PREC_LEFT", + "value": 11, + "content": { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "left", + "content": { + "type": "SYMBOL", + "name": "expression" + } + }, + { + "type": "FIELD", + "name": "operator", + "content": { + "type": "STRING", + "value": "/" + } + }, + { + "type": "FIELD", + "name": "right", + "content": { + "type": "SYMBOL", + "name": "expression" + } + } + ] + } + }, + { + "type": "PREC_LEFT", + "value": 11, + "content": { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "left", + "content": { + "type": "SYMBOL", + "name": "expression" + } + }, + { + "type": "FIELD", + "name": "operator", + "content": { + "type": "STRING", + "value": "%" + } + }, + { + "type": "FIELD", + "name": "right", + "content": { + "type": "SYMBOL", + "name": "expression" + } + } + ] + } + }, + { + "type": "PREC_LEFT", + "value": 1, + "content": { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "left", + "content": { + "type": "SYMBOL", + "name": "expression" + } + }, + { + "type": "FIELD", + "name": "operator", + "content": { + "type": "STRING", + "value": "||" + } + }, + { + "type": "FIELD", + "name": "right", + "content": { + "type": "SYMBOL", + "name": "expression" + } + } + ] + } + }, + { + "type": "PREC_LEFT", + "value": 2, + "content": { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "left", + "content": { + "type": "SYMBOL", + "name": "expression" + } + }, + { + "type": "FIELD", + "name": "operator", + "content": { + "type": "STRING", + "value": "&&" + } + }, + { + "type": "FIELD", + "name": "right", + "content": { + "type": "SYMBOL", + "name": "expression" + } + } + ] + } + }, + { + "type": "PREC_LEFT", + "value": 3, + "content": { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "left", + "content": { + "type": "SYMBOL", + "name": "expression" + } + }, + { + "type": "FIELD", + "name": "operator", + "content": { + "type": "STRING", + "value": "|" + } + }, + { + "type": "FIELD", + "name": "right", + "content": { + "type": "SYMBOL", + "name": "expression" + } + } + ] + } + }, + { + "type": "PREC_LEFT", + "value": 4, + "content": { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "left", + "content": { + "type": "SYMBOL", + "name": "expression" + } + }, + { + "type": "FIELD", + "name": "operator", + "content": { + "type": "STRING", + "value": "^" + } + }, + { + "type": "FIELD", + "name": "right", + "content": { + "type": "SYMBOL", + "name": "expression" + } + } + ] + } + }, + { + "type": "PREC_LEFT", + "value": 5, + "content": { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "left", + "content": { + "type": "SYMBOL", + "name": "expression" + } + }, + { + "type": "FIELD", + "name": "operator", + "content": { + "type": "STRING", + "value": "&" + } + }, + { + "type": "FIELD", + "name": "right", + "content": { + "type": "SYMBOL", + "name": "expression" + } + } + ] + } + }, + { + "type": "PREC_LEFT", + "value": 6, + "content": { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "left", + "content": { + "type": "SYMBOL", + "name": "expression" + } + }, + { + "type": "FIELD", + "name": "operator", + "content": { + "type": "STRING", + "value": "==" + } + }, + { + "type": "FIELD", + "name": "right", + "content": { + "type": "SYMBOL", + "name": "expression" + } + } + ] + } + }, + { + "type": "PREC_LEFT", + "value": 6, + "content": { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "left", + "content": { + "type": "SYMBOL", + "name": "expression" + } + }, + { + "type": "FIELD", + "name": "operator", + "content": { + "type": "STRING", + "value": "!=" + } + }, + { + "type": "FIELD", + "name": "right", + "content": { + "type": "SYMBOL", + "name": "expression" + } + } + ] + } + }, + { + "type": "PREC_LEFT", + "value": 7, + "content": { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "left", + "content": { + "type": "SYMBOL", + "name": "expression" + } + }, + { + "type": "FIELD", + "name": "operator", + "content": { + "type": "STRING", + "value": ">" + } + }, + { + "type": "FIELD", + "name": "right", + "content": { + "type": "SYMBOL", + "name": "expression" + } + } + ] + } + }, + { + "type": "PREC_LEFT", + "value": 7, + "content": { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "left", + "content": { + "type": "SYMBOL", + "name": "expression" + } + }, + { + "type": "FIELD", + "name": "operator", + "content": { + "type": "STRING", + "value": ">=" + } + }, + { + "type": "FIELD", + "name": "right", + "content": { + "type": "SYMBOL", + "name": "expression" + } + } + ] + } + }, + { + "type": "PREC_LEFT", + "value": 7, + "content": { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "left", + "content": { + "type": "SYMBOL", + "name": "expression" + } + }, + { + "type": "FIELD", + "name": "operator", + "content": { + "type": "STRING", + "value": "<=" + } + }, + { + "type": "FIELD", + "name": "right", + "content": { + "type": "SYMBOL", + "name": "expression" + } + } + ] + } + }, + { + "type": "PREC_LEFT", + "value": 7, + "content": { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "left", + "content": { + "type": "SYMBOL", + "name": "expression" + } + }, + { + "type": "FIELD", + "name": "operator", + "content": { + "type": "STRING", + "value": "<" + } + }, + { + "type": "FIELD", + "name": "right", + "content": { + "type": "SYMBOL", + "name": "expression" + } + } + ] + } + }, + { + "type": "PREC_LEFT", + "value": 9, + "content": { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "left", + "content": { + "type": "SYMBOL", + "name": "expression" + } + }, + { + "type": "FIELD", + "name": "operator", + "content": { + "type": "STRING", + "value": "<<" + } + }, + { + "type": "FIELD", + "name": "right", + "content": { + "type": "SYMBOL", + "name": "expression" + } + } + ] + } + }, + { + "type": "PREC_LEFT", + "value": 9, + "content": { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "left", + "content": { + "type": "SYMBOL", + "name": "expression" + } + }, + { + "type": "FIELD", + "name": "operator", + "content": { + "type": "STRING", + "value": ">>" + } + }, + { + "type": "FIELD", + "name": "right", + "content": { + "type": "SYMBOL", + "name": "expression" + } + } + ] + } + } + ] + }, + "update_expression": { + "type": "PREC_RIGHT", + "value": 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": "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", + "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": ")" + } + ] + } + ] + } + ] + } + }, + "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": "STRING", + "value": "[" + }, + { + "type": "FIELD", + "name": "index", + "content": { + "type": "SYMBOL", + "name": "expression" + } + }, + { + "type": "STRING", + "value": "]" + } + ] + } + }, + "call_expression": { + "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" + } + } + ] + } + }, + "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": "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": "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": "FIELD", + "name": "field", + "content": { + "type": "SYMBOL", + "name": "_field_identifier" + } + } + ] + }, + "compound_literal_expression": { + "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" + } + } + ] + }, + "parenthesized_expression": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "(" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "expression" + }, + { + "type": "SYMBOL", + "name": "comma_expression" + } + ] + }, + { + "type": "STRING", + "value": ")" + } + ] + }, + "initializer_list": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "{" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SEQ", + "members": [ + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "initializer_pair" + }, + { + "type": "SYMBOL", + "name": "expression" + }, + { + "type": "SYMBOL", + "name": "initializer_list" + } + ] + }, + { + "type": "REPEAT", + "content": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "," + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "initializer_pair" + }, + { + "type": "SYMBOL", + "name": "expression" + }, + { + "type": "SYMBOL", + "name": "initializer_list" + } + ] + } + ] + } + } + ] + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": "," + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "STRING", + "value": "}" + } + ] + }, + "initializer_pair": { + "type": "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": "CHOICE", + "members": [ + { + "type": "PATTERN", + "value": "0[xX]" + }, + { + "type": "PATTERN", + "value": "0[bB]" + } + ] + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SEQ", + "members": [ + { + "type": "CHOICE", + "members": [ + { + "type": "SEQ", + "members": [ + { + "type": "REPEAT1", + "content": { + "type": "PATTERN", + "value": "[0-9]" + } + }, + { + "type": "REPEAT", + "content": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "'" + }, + { + "type": "REPEAT1", + "content": { + "type": "PATTERN", + "value": "[0-9]" + } + } + ] + } + } + ] + }, + { + "type": "SEQ", + "members": [ + { + "type": "PATTERN", + "value": "0[bB]" + }, + { + "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": "0[xX]" + }, + { + "type": "SEQ", + "members": [ + { + "type": "REPEAT1", + "content": { + "type": "PATTERN", + "value": "[0-9a-fA-F]" + } + }, + { + "type": "REPEAT", + "content": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "'" + }, + { + "type": "REPEAT1", + "content": { + "type": "PATTERN", + "value": "[0-9a-fA-F]" + } + } + ] + } + } + ] + } + ] + } + ] + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "." + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SEQ", + "members": [ + { + "type": "REPEAT1", + "content": { + "type": "PATTERN", + "value": "[0-9a-fA-F]" + } + }, + { + "type": "REPEAT", + "content": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "'" + }, + { + "type": "REPEAT1", + "content": { + "type": "PATTERN", + "value": "[0-9a-fA-F]" + } + } + ] + } + } + ] + }, + { + "type": "BLANK" + } + ] + } + ] + }, + { + "type": "BLANK" + } + ] + } + ] + }, + { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "." + }, + { + "type": "SEQ", + "members": [ + { + "type": "REPEAT1", + "content": { + "type": "PATTERN", + "value": "[0-9]" + } + }, + { + "type": "REPEAT", + "content": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "'" + }, + { + "type": "REPEAT1", + "content": { + "type": "PATTERN", + "value": "[0-9]" + } + } + ] + } + } + ] + } + ] + } + ] + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SEQ", + "members": [ + { + "type": "PATTERN", + "value": "[eEpP]" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SEQ", + "members": [ + { + "type": "CHOICE", + "members": [ + { + "type": "PATTERN", + "value": "[-\\+]" + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "SEQ", + "members": [ + { + "type": "REPEAT1", + "content": { + "type": "PATTERN", + "value": "[0-9a-fA-F]" + } + }, + { + "type": "REPEAT", + "content": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "'" + }, + { + "type": "REPEAT1", + "content": { + "type": "PATTERN", + "value": "[0-9a-fA-F]" + } + } + ] + } + } + ] + } + ] + }, + { + "type": "BLANK" + } + ] + } + ] + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "PATTERN", + "value": "[uUlLwWfFbBdD]*" + } + ] + } + }, + "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": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "identifier" + }, + { + "type": "SYMBOL", + "name": "string_literal" + } + ] + }, + { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "string_literal" + }, + { + "type": "SYMBOL", + "name": "string_literal" + } + ] + }, + { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "string_literal" + }, + { + "type": "SYMBOL", + "name": "identifier" + } + ] + } + ] + }, + { + "type": "REPEAT", + "content": { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "string_literal" + }, + { + "type": "SYMBOL", + "name": "identifier" + } + ] + } + } + ] + } + }, + "string_literal": { + "type": "SEQ", + "members": [ + { + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": "L\"" + }, + { + "type": "STRING", + "value": "u\"" + }, + { + "type": "STRING", + "value": "U\"" + }, + { + "type": "STRING", + "value": "u8\"" + }, + { + "type": "STRING", + "value": "\"" + } + ] + }, + { + "type": "REPEAT", + "content": { + "type": "CHOICE", + "members": [ + { + "type": "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": "/" + } + ] + } + ] + } + }, + "preproc_extension": { + "type": "SEQ", + "members": [ + { + "type": "FIELD", + "name": "directive", + "content": { + "type": "SYMBOL", + "name": "preproc_directive" + } + }, + { + "type": "FIELD", + "name": "extension", + "content": { + "type": "SYMBOL", + "name": "identifier" + } + }, + { + "type": "IMMEDIATE_TOKEN", + "content": { + "type": "PATTERN", + "value": "[ \\t]*:[ \\t]*" + } + }, + { + "type": "FIELD", + "name": "behavior", + "content": { + "type": "SYMBOL", + "name": "extension_behavior" + } + }, + { + "type": "IMMEDIATE_TOKEN", + "content": { + "type": "PATTERN", + "value": "\\r?\\n" + } + } + ] + }, + "extension_behavior": { + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": "require" + }, + { + "type": "STRING", + "value": "enable" + }, + { + "type": "STRING", + "value": "warn" + }, + { + "type": "STRING", + "value": "disable" + } + ] + }, + "extension_storage_class": { + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": "rayPayloadEXT" + }, + { + "type": "STRING", + "value": "rayPayloadInEXT" + }, + { + "type": "STRING", + "value": "hitAttributeEXT" + }, + { + "type": "STRING", + "value": "callableDataEXT" + }, + { + "type": "STRING", + "value": "callableDataInEXT" + }, + { + "type": "STRING", + "value": "shaderRecordEXT" + }, + { + "type": "STRING", + "value": "rayPayloadNV" + }, + { + "type": "STRING", + "value": "rayPayloadInNV" + }, + { + "type": "STRING", + "value": "hitAttributeNV" + }, + { + "type": "STRING", + "value": "callableDataNV" + }, + { + "type": "STRING", + "value": "callableDataInNV" + }, + { + "type": "STRING", + "value": "shaderRecordNV" + } + ] + }, + "layout_specification": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "layout" + }, + { + "type": "SYMBOL", + "name": "layout_qualifiers" + } + ] + }, + "layout_qualifiers": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "(" + }, + { + "type": "SYMBOL", + "name": "qualifier" + }, + { + "type": "REPEAT", + "content": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "," + }, + { + "type": "SYMBOL", + "name": "qualifier" + } + ] + } + }, + { + "type": "STRING", + "value": ")" + } + ] + }, + "qualifier": { + "type": "CHOICE", + "members": [ + { + "type": "STRING", + "value": "shared" + }, + { + "type": "SYMBOL", + "name": "identifier" + }, + { + "type": "SEQ", + "members": [ + { + "type": "SYMBOL", + "name": "identifier" + }, + { + "type": "STRING", + "value": "=" + }, + { + "type": "SYMBOL", + "name": "expression" + } + ] + } + ] + } + }, + "extras": [ + { + "type": "PATTERN", + "value": "\\s|\\\\\\r?\\n" + }, + { + "type": "SYMBOL", + "name": "comment" + } + ], + "conflicts": [ + [ + "type_specifier", + "_declarator" + ], + [ + "type_specifier", + "_declarator", + "macro_type_specifier" + ], + [ + "type_specifier", + "expression" + ], + [ + "type_specifier", + "expression", + "macro_type_specifier" + ], + [ + "type_specifier", + "macro_type_specifier" + ], + [ + "type_specifier", + "sized_type_specifier" + ], + [ + "sized_type_specifier" + ], + [ + "attributed_statement" + ], + [ + "_declaration_modifiers", + "attributed_statement" + ], + [ + "enum_specifier" + ], + [ + "type_specifier", + "_old_style_parameter_list" + ], + [ + "parameter_list", + "_old_style_parameter_list" + ], + [ + "function_declarator", + "_function_declaration_declarator" + ], + [ + "_block_item", + "statement" + ], + [ + "_top_level_item", + "_top_level_statement" + ], + [ + "type_specifier", + "_top_level_expression_statement" + ], + [ + "function_definition", + "declaration" + ], + [ + "declaration" + ] + ], + "precedences": [], + "externals": [], + "inline": [ + "_type_identifier", + "_field_identifier", + "_statement_identifier", + "_non_case_statement", + "_assignment_left_expression", + "_expression_not_binary" + ], + "supertypes": [ + "expression", + "statement", + "type_specifier", + "_declarator", + "_field_declarator", + "_type_declarator", + "_abstract_declarator" + ] +} |
