{
  "$schema": "https://tree-sitter.github.io/tree-sitter/assets/schemas/grammar.schema.json",
  "name": "cpp",
  "inherits": "c",
  "word": "identifier",
  "rules": {
    "translation_unit": {
      "type": "REPEAT",
      "content": {
        "type": "SYMBOL",
        "name": "_top_level_item"
      }
    },
    "_top_level_item": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "function_definition"
        },
        {
          "type": "SYMBOL",
          "name": "linkage_specification"
        },
        {
          "type": "SYMBOL",
          "name": "declaration"
        },
        {
          "type": "SYMBOL",
          "name": "_top_level_statement"
        },
        {
          "type": "SYMBOL",
          "name": "attributed_statement"
        },
        {
          "type": "SYMBOL",
          "name": "type_definition"
        },
        {
          "type": "SYMBOL",
          "name": "_empty_declaration"
        },
        {
          "type": "SYMBOL",
          "name": "preproc_if"
        },
        {
          "type": "SYMBOL",
          "name": "preproc_ifdef"
        },
        {
          "type": "SYMBOL",
          "name": "preproc_include"
        },
        {
          "type": "SYMBOL",
          "name": "preproc_def"
        },
        {
          "type": "SYMBOL",
          "name": "preproc_function_def"
        },
        {
          "type": "SYMBOL",
          "name": "preproc_call"
        },
        {
          "type": "SYMBOL",
          "name": "namespace_definition"
        },
        {
          "type": "SYMBOL",
          "name": "concept_definition"
        },
        {
          "type": "SYMBOL",
          "name": "namespace_alias_definition"
        },
        {
          "type": "SYMBOL",
          "name": "using_declaration"
        },
        {
          "type": "SYMBOL",
          "name": "alias_declaration"
        },
        {
          "type": "SYMBOL",
          "name": "static_assert_declaration"
        },
        {
          "type": "SYMBOL",
          "name": "consteval_block_declaration"
        },
        {
          "type": "SYMBOL",
          "name": "template_declaration"
        },
        {
          "type": "SYMBOL",
          "name": "template_instantiation"
        },
        {
          "type": "SYMBOL",
          "name": "module_declaration"
        },
        {
          "type": "SYMBOL",
          "name": "export_declaration"
        },
        {
          "type": "SYMBOL",
          "name": "import_declaration"
        },
        {
          "type": "SYMBOL",
          "name": "global_module_fragment_declaration"
        },
        {
          "type": "SYMBOL",
          "name": "private_module_fragment_declaration"
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "SYMBOL",
            "name": "constructor_or_destructor_definition"
          },
          "named": true,
          "value": "function_definition"
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "SYMBOL",
            "name": "operator_cast_definition"
          },
          "named": true,
          "value": "function_definition"
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "SYMBOL",
            "name": "operator_cast_declaration"
          },
          "named": true,
          "value": "declaration"
        }
      ]
    },
    "_block_item": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "function_definition"
        },
        {
          "type": "SYMBOL",
          "name": "linkage_specification"
        },
        {
          "type": "SYMBOL",
          "name": "declaration"
        },
        {
          "type": "SYMBOL",
          "name": "statement"
        },
        {
          "type": "SYMBOL",
          "name": "attributed_statement"
        },
        {
          "type": "SYMBOL",
          "name": "type_definition"
        },
        {
          "type": "SYMBOL",
          "name": "_empty_declaration"
        },
        {
          "type": "SYMBOL",
          "name": "preproc_if"
        },
        {
          "type": "SYMBOL",
          "name": "preproc_ifdef"
        },
        {
          "type": "SYMBOL",
          "name": "preproc_include"
        },
        {
          "type": "SYMBOL",
          "name": "preproc_def"
        },
        {
          "type": "SYMBOL",
          "name": "preproc_function_def"
        },
        {
          "type": "SYMBOL",
          "name": "preproc_call"
        },
        {
          "type": "SYMBOL",
          "name": "namespace_definition"
        },
        {
          "type": "SYMBOL",
          "name": "concept_definition"
        },
        {
          "type": "SYMBOL",
          "name": "namespace_alias_definition"
        },
        {
          "type": "SYMBOL",
          "name": "using_declaration"
        },
        {
          "type": "SYMBOL",
          "name": "alias_declaration"
        },
        {
          "type": "SYMBOL",
          "name": "static_assert_declaration"
        },
        {
          "type": "SYMBOL",
          "name": "consteval_block_declaration"
        },
        {
          "type": "SYMBOL",
          "name": "template_declaration"
        },
        {
          "type": "SYMBOL",
          "name": "template_instantiation"
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "SYMBOL",
            "name": "constructor_or_destructor_definition"
          },
          "named": true,
          "value": "function_definition"
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "SYMBOL",
            "name": "operator_cast_definition"
          },
          "named": true,
          "value": "function_definition"
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "SYMBOL",
            "name": "operator_cast_declaration"
          },
          "named": true,
          "value": "declaration"
        }
      ]
    },
    "preproc_include": {
      "type": "SEQ",
      "members": [
        {
          "type": "ALIAS",
          "content": {
            "type": "PATTERN",
            "value": "#[ \t]*include"
          },
          "named": false,
          "value": "#include"
        },
        {
          "type": "FIELD",
          "name": "path",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "string_literal"
              },
              {
                "type": "SYMBOL",
                "name": "system_lib_string"
              },
              {
                "type": "SYMBOL",
                "name": "identifier"
              },
              {
                "type": "ALIAS",
                "content": {
                  "type": "SYMBOL",
                  "name": "preproc_call_expression"
                },
                "named": true,
                "value": "call_expression"
              }
            ]
          }
        },
        {
          "type": "IMMEDIATE_TOKEN",
          "content": {
            "type": "PATTERN",
            "value": "\\r?\\n"
          }
        }
      ]
    },
    "preproc_def": {
      "type": "SEQ",
      "members": [
        {
          "type": "ALIAS",
          "content": {
            "type": "PATTERN",
            "value": "#[ \t]*define"
          },
          "named": false,
          "value": "#define"
        },
        {
          "type": "FIELD",
          "name": "name",
          "content": {
            "type": "SYMBOL",
            "name": "identifier"
          }
        },
        {
          "type": "FIELD",
          "name": "value",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "preproc_arg"
              },
              {
                "type": "BLANK"
              }
            ]
          }
        },
        {
          "type": "IMMEDIATE_TOKEN",
          "content": {
            "type": "PATTERN",
            "value": "\\r?\\n"
          }
        }
      ]
    },
    "preproc_function_def": {
      "type": "SEQ",
      "members": [
        {
          "type": "ALIAS",
          "content": {
            "type": "PATTERN",
            "value": "#[ \t]*define"
          },
          "named": false,
          "value": "#define"
        },
        {
          "type": "FIELD",
          "name": "name",
          "content": {
            "type": "SYMBOL",
            "name": "identifier"
          }
        },
        {
          "type": "FIELD",
          "name": "parameters",
          "content": {
            "type": "SYMBOL",
            "name": "preproc_params"
          }
        },
        {
          "type": "FIELD",
          "name": "value",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "preproc_arg"
              },
              {
                "type": "BLANK"
              }
            ]
          }
        },
        {
          "type": "IMMEDIATE_TOKEN",
          "content": {
            "type": "PATTERN",
            "value": "\\r?\\n"
          }
        }
      ]
    },
    "preproc_params": {
      "type": "SEQ",
      "members": [
        {
          "type": "IMMEDIATE_TOKEN",
          "content": {
            "type": "STRING",
            "value": "("
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "SYMBOL",
                      "name": "identifier"
                    },
                    {
                      "type": "STRING",
                      "value": "..."
                    }
                  ]
                },
                {
                  "type": "REPEAT",
                  "content": {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "STRING",
                        "value": ","
                      },
                      {
                        "type": "CHOICE",
                        "members": [
                          {
                            "type": "SYMBOL",
                            "name": "identifier"
                          },
                          {
                            "type": "STRING",
                            "value": "..."
                          }
                        ]
                      }
                    ]
                  }
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": ")"
        }
      ]
    },
    "preproc_call": {
      "type": "SEQ",
      "members": [
        {
          "type": "FIELD",
          "name": "directive",
          "content": {
            "type": "SYMBOL",
            "name": "preproc_directive"
          }
        },
        {
          "type": "FIELD",
          "name": "argument",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "preproc_arg"
              },
              {
                "type": "BLANK"
              }
            ]
          }
        },
        {
          "type": "IMMEDIATE_TOKEN",
          "content": {
            "type": "PATTERN",
            "value": "\\r?\\n"
          }
        }
      ]
    },
    "preproc_if": {
      "type": "PREC",
      "value": 0,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "ALIAS",
            "content": {
              "type": "PATTERN",
              "value": "#[ \t]*if"
            },
            "named": false,
            "value": "#if"
          },
          {
            "type": "FIELD",
            "name": "condition",
            "content": {
              "type": "SYMBOL",
              "name": "_preproc_expression"
            }
          },
          {
            "type": "STRING",
            "value": "\n"
          },
          {
            "type": "REPEAT",
            "content": {
              "type": "SYMBOL",
              "name": "_block_item"
            }
          },
          {
            "type": "FIELD",
            "name": "alternative",
            "content": {
              "type": "CHOICE",
              "members": [
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "SYMBOL",
                      "name": "preproc_else"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "preproc_elif"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "preproc_elifdef"
                    }
                  ]
                },
                {
                  "type": "BLANK"
                }
              ]
            }
          },
          {
            "type": "ALIAS",
            "content": {
              "type": "PATTERN",
              "value": "#[ \t]*endif"
            },
            "named": false,
            "value": "#endif"
          }
        ]
      }
    },
    "preproc_ifdef": {
      "type": "PREC",
      "value": 0,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "ALIAS",
                "content": {
                  "type": "PATTERN",
                  "value": "#[ \t]*ifdef"
                },
                "named": false,
                "value": "#ifdef"
              },
              {
                "type": "ALIAS",
                "content": {
                  "type": "PATTERN",
                  "value": "#[ \t]*ifndef"
                },
                "named": false,
                "value": "#ifndef"
              }
            ]
          },
          {
            "type": "FIELD",
            "name": "name",
            "content": {
              "type": "SYMBOL",
              "name": "identifier"
            }
          },
          {
            "type": "REPEAT",
            "content": {
              "type": "SYMBOL",
              "name": "_block_item"
            }
          },
          {
            "type": "FIELD",
            "name": "alternative",
            "content": {
              "type": "CHOICE",
              "members": [
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "SYMBOL",
                      "name": "preproc_else"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "preproc_elif"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "preproc_elifdef"
                    }
                  ]
                },
                {
                  "type": "BLANK"
                }
              ]
            }
          },
          {
            "type": "ALIAS",
            "content": {
              "type": "PATTERN",
              "value": "#[ \t]*endif"
            },
            "named": false,
            "value": "#endif"
          }
        ]
      }
    },
    "preproc_else": {
      "type": "PREC",
      "value": 0,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "ALIAS",
            "content": {
              "type": "PATTERN",
              "value": "#[ \t]*else"
            },
            "named": false,
            "value": "#else"
          },
          {
            "type": "REPEAT",
            "content": {
              "type": "SYMBOL",
              "name": "_block_item"
            }
          }
        ]
      }
    },
    "preproc_elif": {
      "type": "PREC",
      "value": 0,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "ALIAS",
            "content": {
              "type": "PATTERN",
              "value": "#[ \t]*elif"
            },
            "named": false,
            "value": "#elif"
          },
          {
            "type": "FIELD",
            "name": "condition",
            "content": {
              "type": "SYMBOL",
              "name": "_preproc_expression"
            }
          },
          {
            "type": "STRING",
            "value": "\n"
          },
          {
            "type": "REPEAT",
            "content": {
              "type": "SYMBOL",
              "name": "_block_item"
            }
          },
          {
            "type": "FIELD",
            "name": "alternative",
            "content": {
              "type": "CHOICE",
              "members": [
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "SYMBOL",
                      "name": "preproc_else"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "preproc_elif"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "preproc_elifdef"
                    }
                  ]
                },
                {
                  "type": "BLANK"
                }
              ]
            }
          }
        ]
      }
    },
    "preproc_elifdef": {
      "type": "PREC",
      "value": 0,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "ALIAS",
                "content": {
                  "type": "PATTERN",
                  "value": "#[ \t]*elifdef"
                },
                "named": false,
                "value": "#elifdef"
              },
              {
                "type": "ALIAS",
                "content": {
                  "type": "PATTERN",
                  "value": "#[ \t]*elifndef"
                },
                "named": false,
                "value": "#elifndef"
              }
            ]
          },
          {
            "type": "FIELD",
            "name": "name",
            "content": {
              "type": "SYMBOL",
              "name": "identifier"
            }
          },
          {
            "type": "REPEAT",
            "content": {
              "type": "SYMBOL",
              "name": "_block_item"
            }
          },
          {
            "type": "FIELD",
            "name": "alternative",
            "content": {
              "type": "CHOICE",
              "members": [
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "SYMBOL",
                      "name": "preproc_else"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "preproc_elif"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "preproc_elifdef"
                    }
                  ]
                },
                {
                  "type": "BLANK"
                }
              ]
            }
          }
        ]
      }
    },
    "preproc_if_in_field_declaration_list": {
      "type": "PREC",
      "value": 0,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "ALIAS",
            "content": {
              "type": "PATTERN",
              "value": "#[ \t]*if"
            },
            "named": false,
            "value": "#if"
          },
          {
            "type": "FIELD",
            "name": "condition",
            "content": {
              "type": "SYMBOL",
              "name": "_preproc_expression"
            }
          },
          {
            "type": "STRING",
            "value": "\n"
          },
          {
            "type": "REPEAT",
            "content": {
              "type": "SYMBOL",
              "name": "_field_declaration_list_item"
            }
          },
          {
            "type": "FIELD",
            "name": "alternative",
            "content": {
              "type": "CHOICE",
              "members": [
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "ALIAS",
                      "content": {
                        "type": "SYMBOL",
                        "name": "preproc_else_in_field_declaration_list"
                      },
                      "named": true,
                      "value": "preproc_else"
                    },
                    {
                      "type": "ALIAS",
                      "content": {
                        "type": "SYMBOL",
                        "name": "preproc_elif_in_field_declaration_list"
                      },
                      "named": true,
                      "value": "preproc_elif"
                    },
                    {
                      "type": "ALIAS",
                      "content": {
                        "type": "SYMBOL",
                        "name": "preproc_elifdef_in_field_declaration_list"
                      },
                      "named": true,
                      "value": "preproc_elifdef"
                    }
                  ]
                },
                {
                  "type": "BLANK"
                }
              ]
            }
          },
          {
            "type": "ALIAS",
            "content": {
              "type": "PATTERN",
              "value": "#[ \t]*endif"
            },
            "named": false,
            "value": "#endif"
          }
        ]
      }
    },
    "preproc_ifdef_in_field_declaration_list": {
      "type": "PREC",
      "value": 0,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "ALIAS",
                "content": {
                  "type": "PATTERN",
                  "value": "#[ \t]*ifdef"
                },
                "named": false,
                "value": "#ifdef"
              },
              {
                "type": "ALIAS",
                "content": {
                  "type": "PATTERN",
                  "value": "#[ \t]*ifndef"
                },
                "named": false,
                "value": "#ifndef"
              }
            ]
          },
          {
            "type": "FIELD",
            "name": "name",
            "content": {
              "type": "SYMBOL",
              "name": "identifier"
            }
          },
          {
            "type": "REPEAT",
            "content": {
              "type": "SYMBOL",
              "name": "_field_declaration_list_item"
            }
          },
          {
            "type": "FIELD",
            "name": "alternative",
            "content": {
              "type": "CHOICE",
              "members": [
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "ALIAS",
                      "content": {
                        "type": "SYMBOL",
                        "name": "preproc_else_in_field_declaration_list"
                      },
                      "named": true,
                      "value": "preproc_else"
                    },
                    {
                      "type": "ALIAS",
                      "content": {
                        "type": "SYMBOL",
                        "name": "preproc_elif_in_field_declaration_list"
                      },
                      "named": true,
                      "value": "preproc_elif"
                    },
                    {
                      "type": "ALIAS",
                      "content": {
                        "type": "SYMBOL",
                        "name": "preproc_elifdef_in_field_declaration_list"
                      },
                      "named": true,
                      "value": "preproc_elifdef"
                    }
                  ]
                },
                {
                  "type": "BLANK"
                }
              ]
            }
          },
          {
            "type": "ALIAS",
            "content": {
              "type": "PATTERN",
              "value": "#[ \t]*endif"
            },
            "named": false,
            "value": "#endif"
          }
        ]
      }
    },
    "preproc_else_in_field_declaration_list": {
      "type": "PREC",
      "value": 0,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "ALIAS",
            "content": {
              "type": "PATTERN",
              "value": "#[ \t]*else"
            },
            "named": false,
            "value": "#else"
          },
          {
            "type": "REPEAT",
            "content": {
              "type": "SYMBOL",
              "name": "_field_declaration_list_item"
            }
          }
        ]
      }
    },
    "preproc_elif_in_field_declaration_list": {
      "type": "PREC",
      "value": 0,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "ALIAS",
            "content": {
              "type": "PATTERN",
              "value": "#[ \t]*elif"
            },
            "named": false,
            "value": "#elif"
          },
          {
            "type": "FIELD",
            "name": "condition",
            "content": {
              "type": "SYMBOL",
              "name": "_preproc_expression"
            }
          },
          {
            "type": "STRING",
            "value": "\n"
          },
          {
            "type": "REPEAT",
            "content": {
              "type": "SYMBOL",
              "name": "_field_declaration_list_item"
            }
          },
          {
            "type": "FIELD",
            "name": "alternative",
            "content": {
              "type": "CHOICE",
              "members": [
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "ALIAS",
                      "content": {
                        "type": "SYMBOL",
                        "name": "preproc_else_in_field_declaration_list"
                      },
                      "named": true,
                      "value": "preproc_else"
                    },
                    {
                      "type": "ALIAS",
                      "content": {
                        "type": "SYMBOL",
                        "name": "preproc_elif_in_field_declaration_list"
                      },
                      "named": true,
                      "value": "preproc_elif"
                    },
                    {
                      "type": "ALIAS",
                      "content": {
                        "type": "SYMBOL",
                        "name": "preproc_elifdef_in_field_declaration_list"
                      },
                      "named": true,
                      "value": "preproc_elifdef"
                    }
                  ]
                },
                {
                  "type": "BLANK"
                }
              ]
            }
          }
        ]
      }
    },
    "preproc_elifdef_in_field_declaration_list": {
      "type": "PREC",
      "value": 0,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "ALIAS",
                "content": {
                  "type": "PATTERN",
                  "value": "#[ \t]*elifdef"
                },
                "named": false,
                "value": "#elifdef"
              },
              {
                "type": "ALIAS",
                "content": {
                  "type": "PATTERN",
                  "value": "#[ \t]*elifndef"
                },
                "named": false,
                "value": "#elifndef"
              }
            ]
          },
          {
            "type": "FIELD",
            "name": "name",
            "content": {
              "type": "SYMBOL",
              "name": "identifier"
            }
          },
          {
            "type": "REPEAT",
            "content": {
              "type": "SYMBOL",
              "name": "_field_declaration_list_item"
            }
          },
          {
            "type": "FIELD",
            "name": "alternative",
            "content": {
              "type": "CHOICE",
              "members": [
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "ALIAS",
                      "content": {
                        "type": "SYMBOL",
                        "name": "preproc_else_in_field_declaration_list"
                      },
                      "named": true,
                      "value": "preproc_else"
                    },
                    {
                      "type": "ALIAS",
                      "content": {
                        "type": "SYMBOL",
                        "name": "preproc_elif_in_field_declaration_list"
                      },
                      "named": true,
                      "value": "preproc_elif"
                    },
                    {
                      "type": "ALIAS",
                      "content": {
                        "type": "SYMBOL",
                        "name": "preproc_elifdef_in_field_declaration_list"
                      },
                      "named": true,
                      "value": "preproc_elifdef"
                    }
                  ]
                },
                {
                  "type": "BLANK"
                }
              ]
            }
          }
        ]
      }
    },
    "preproc_if_in_enumerator_list": {
      "type": "PREC",
      "value": 0,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "ALIAS",
            "content": {
              "type": "PATTERN",
              "value": "#[ \t]*if"
            },
            "named": false,
            "value": "#if"
          },
          {
            "type": "FIELD",
            "name": "condition",
            "content": {
              "type": "SYMBOL",
              "name": "_preproc_expression"
            }
          },
          {
            "type": "STRING",
            "value": "\n"
          },
          {
            "type": "REPEAT",
            "content": {
              "type": "SEQ",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "enumerator"
                },
                {
                  "type": "STRING",
                  "value": ","
                }
              ]
            }
          },
          {
            "type": "FIELD",
            "name": "alternative",
            "content": {
              "type": "CHOICE",
              "members": [
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "ALIAS",
                      "content": {
                        "type": "SYMBOL",
                        "name": "preproc_else_in_enumerator_list"
                      },
                      "named": true,
                      "value": "preproc_else"
                    },
                    {
                      "type": "ALIAS",
                      "content": {
                        "type": "SYMBOL",
                        "name": "preproc_elif_in_enumerator_list"
                      },
                      "named": true,
                      "value": "preproc_elif"
                    },
                    {
                      "type": "ALIAS",
                      "content": {
                        "type": "SYMBOL",
                        "name": "preproc_elifdef_in_enumerator_list"
                      },
                      "named": true,
                      "value": "preproc_elifdef"
                    }
                  ]
                },
                {
                  "type": "BLANK"
                }
              ]
            }
          },
          {
            "type": "ALIAS",
            "content": {
              "type": "PATTERN",
              "value": "#[ \t]*endif"
            },
            "named": false,
            "value": "#endif"
          }
        ]
      }
    },
    "preproc_ifdef_in_enumerator_list": {
      "type": "PREC",
      "value": 0,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "ALIAS",
                "content": {
                  "type": "PATTERN",
                  "value": "#[ \t]*ifdef"
                },
                "named": false,
                "value": "#ifdef"
              },
              {
                "type": "ALIAS",
                "content": {
                  "type": "PATTERN",
                  "value": "#[ \t]*ifndef"
                },
                "named": false,
                "value": "#ifndef"
              }
            ]
          },
          {
            "type": "FIELD",
            "name": "name",
            "content": {
              "type": "SYMBOL",
              "name": "identifier"
            }
          },
          {
            "type": "REPEAT",
            "content": {
              "type": "SEQ",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "enumerator"
                },
                {
                  "type": "STRING",
                  "value": ","
                }
              ]
            }
          },
          {
            "type": "FIELD",
            "name": "alternative",
            "content": {
              "type": "CHOICE",
              "members": [
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "ALIAS",
                      "content": {
                        "type": "SYMBOL",
                        "name": "preproc_else_in_enumerator_list"
                      },
                      "named": true,
                      "value": "preproc_else"
                    },
                    {
                      "type": "ALIAS",
                      "content": {
                        "type": "SYMBOL",
                        "name": "preproc_elif_in_enumerator_list"
                      },
                      "named": true,
                      "value": "preproc_elif"
                    },
                    {
                      "type": "ALIAS",
                      "content": {
                        "type": "SYMBOL",
                        "name": "preproc_elifdef_in_enumerator_list"
                      },
                      "named": true,
                      "value": "preproc_elifdef"
                    }
                  ]
                },
                {
                  "type": "BLANK"
                }
              ]
            }
          },
          {
            "type": "ALIAS",
            "content": {
              "type": "PATTERN",
              "value": "#[ \t]*endif"
            },
            "named": false,
            "value": "#endif"
          }
        ]
      }
    },
    "preproc_else_in_enumerator_list": {
      "type": "PREC",
      "value": 0,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "ALIAS",
            "content": {
              "type": "PATTERN",
              "value": "#[ \t]*else"
            },
            "named": false,
            "value": "#else"
          },
          {
            "type": "REPEAT",
            "content": {
              "type": "SEQ",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "enumerator"
                },
                {
                  "type": "STRING",
                  "value": ","
                }
              ]
            }
          }
        ]
      }
    },
    "preproc_elif_in_enumerator_list": {
      "type": "PREC",
      "value": 0,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "ALIAS",
            "content": {
              "type": "PATTERN",
              "value": "#[ \t]*elif"
            },
            "named": false,
            "value": "#elif"
          },
          {
            "type": "FIELD",
            "name": "condition",
            "content": {
              "type": "SYMBOL",
              "name": "_preproc_expression"
            }
          },
          {
            "type": "STRING",
            "value": "\n"
          },
          {
            "type": "REPEAT",
            "content": {
              "type": "SEQ",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "enumerator"
                },
                {
                  "type": "STRING",
                  "value": ","
                }
              ]
            }
          },
          {
            "type": "FIELD",
            "name": "alternative",
            "content": {
              "type": "CHOICE",
              "members": [
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "ALIAS",
                      "content": {
                        "type": "SYMBOL",
                        "name": "preproc_else_in_enumerator_list"
                      },
                      "named": true,
                      "value": "preproc_else"
                    },
                    {
                      "type": "ALIAS",
                      "content": {
                        "type": "SYMBOL",
                        "name": "preproc_elif_in_enumerator_list"
                      },
                      "named": true,
                      "value": "preproc_elif"
                    },
                    {
                      "type": "ALIAS",
                      "content": {
                        "type": "SYMBOL",
                        "name": "preproc_elifdef_in_enumerator_list"
                      },
                      "named": true,
                      "value": "preproc_elifdef"
                    }
                  ]
                },
                {
                  "type": "BLANK"
                }
              ]
            }
          }
        ]
      }
    },
    "preproc_elifdef_in_enumerator_list": {
      "type": "PREC",
      "value": 0,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "ALIAS",
                "content": {
                  "type": "PATTERN",
                  "value": "#[ \t]*elifdef"
                },
                "named": false,
                "value": "#elifdef"
              },
              {
                "type": "ALIAS",
                "content": {
                  "type": "PATTERN",
                  "value": "#[ \t]*elifndef"
                },
                "named": false,
                "value": "#elifndef"
              }
            ]
          },
          {
            "type": "FIELD",
            "name": "name",
            "content": {
              "type": "SYMBOL",
              "name": "identifier"
            }
          },
          {
            "type": "REPEAT",
            "content": {
              "type": "SEQ",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "enumerator"
                },
                {
                  "type": "STRING",
                  "value": ","
                }
              ]
            }
          },
          {
            "type": "FIELD",
            "name": "alternative",
            "content": {
              "type": "CHOICE",
              "members": [
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "ALIAS",
                      "content": {
                        "type": "SYMBOL",
                        "name": "preproc_else_in_enumerator_list"
                      },
                      "named": true,
                      "value": "preproc_else"
                    },
                    {
                      "type": "ALIAS",
                      "content": {
                        "type": "SYMBOL",
                        "name": "preproc_elif_in_enumerator_list"
                      },
                      "named": true,
                      "value": "preproc_elif"
                    },
                    {
                      "type": "ALIAS",
                      "content": {
                        "type": "SYMBOL",
                        "name": "preproc_elifdef_in_enumerator_list"
                      },
                      "named": true,
                      "value": "preproc_elifdef"
                    }
                  ]
                },
                {
                  "type": "BLANK"
                }
              ]
            }
          }
        ]
      }
    },
    "preproc_if_in_enumerator_list_no_comma": {
      "type": "PREC",
      "value": -1,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "ALIAS",
            "content": {
              "type": "PATTERN",
              "value": "#[ \t]*if"
            },
            "named": false,
            "value": "#if"
          },
          {
            "type": "FIELD",
            "name": "condition",
            "content": {
              "type": "SYMBOL",
              "name": "_preproc_expression"
            }
          },
          {
            "type": "STRING",
            "value": "\n"
          },
          {
            "type": "REPEAT",
            "content": {
              "type": "SYMBOL",
              "name": "enumerator"
            }
          },
          {
            "type": "FIELD",
            "name": "alternative",
            "content": {
              "type": "CHOICE",
              "members": [
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "ALIAS",
                      "content": {
                        "type": "SYMBOL",
                        "name": "preproc_else_in_enumerator_list_no_comma"
                      },
                      "named": true,
                      "value": "preproc_else"
                    },
                    {
                      "type": "ALIAS",
                      "content": {
                        "type": "SYMBOL",
                        "name": "preproc_elif_in_enumerator_list_no_comma"
                      },
                      "named": true,
                      "value": "preproc_elif"
                    },
                    {
                      "type": "ALIAS",
                      "content": {
                        "type": "SYMBOL",
                        "name": "preproc_elifdef_in_enumerator_list_no_comma"
                      },
                      "named": true,
                      "value": "preproc_elifdef"
                    }
                  ]
                },
                {
                  "type": "BLANK"
                }
              ]
            }
          },
          {
            "type": "ALIAS",
            "content": {
              "type": "PATTERN",
              "value": "#[ \t]*endif"
            },
            "named": false,
            "value": "#endif"
          }
        ]
      }
    },
    "preproc_ifdef_in_enumerator_list_no_comma": {
      "type": "PREC",
      "value": -1,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "ALIAS",
                "content": {
                  "type": "PATTERN",
                  "value": "#[ \t]*ifdef"
                },
                "named": false,
                "value": "#ifdef"
              },
              {
                "type": "ALIAS",
                "content": {
                  "type": "PATTERN",
                  "value": "#[ \t]*ifndef"
                },
                "named": false,
                "value": "#ifndef"
              }
            ]
          },
          {
            "type": "FIELD",
            "name": "name",
            "content": {
              "type": "SYMBOL",
              "name": "identifier"
            }
          },
          {
            "type": "REPEAT",
            "content": {
              "type": "SYMBOL",
              "name": "enumerator"
            }
          },
          {
            "type": "FIELD",
            "name": "alternative",
            "content": {
              "type": "CHOICE",
              "members": [
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "ALIAS",
                      "content": {
                        "type": "SYMBOL",
                        "name": "preproc_else_in_enumerator_list_no_comma"
                      },
                      "named": true,
                      "value": "preproc_else"
                    },
                    {
                      "type": "ALIAS",
                      "content": {
                        "type": "SYMBOL",
                        "name": "preproc_elif_in_enumerator_list_no_comma"
                      },
                      "named": true,
                      "value": "preproc_elif"
                    },
                    {
                      "type": "ALIAS",
                      "content": {
                        "type": "SYMBOL",
                        "name": "preproc_elifdef_in_enumerator_list_no_comma"
                      },
                      "named": true,
                      "value": "preproc_elifdef"
                    }
                  ]
                },
                {
                  "type": "BLANK"
                }
              ]
            }
          },
          {
            "type": "ALIAS",
            "content": {
              "type": "PATTERN",
              "value": "#[ \t]*endif"
            },
            "named": false,
            "value": "#endif"
          }
        ]
      }
    },
    "preproc_else_in_enumerator_list_no_comma": {
      "type": "PREC",
      "value": -1,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "ALIAS",
            "content": {
              "type": "PATTERN",
              "value": "#[ \t]*else"
            },
            "named": false,
            "value": "#else"
          },
          {
            "type": "REPEAT",
            "content": {
              "type": "SYMBOL",
              "name": "enumerator"
            }
          }
        ]
      }
    },
    "preproc_elif_in_enumerator_list_no_comma": {
      "type": "PREC",
      "value": -1,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "ALIAS",
            "content": {
              "type": "PATTERN",
              "value": "#[ \t]*elif"
            },
            "named": false,
            "value": "#elif"
          },
          {
            "type": "FIELD",
            "name": "condition",
            "content": {
              "type": "SYMBOL",
              "name": "_preproc_expression"
            }
          },
          {
            "type": "STRING",
            "value": "\n"
          },
          {
            "type": "REPEAT",
            "content": {
              "type": "SYMBOL",
              "name": "enumerator"
            }
          },
          {
            "type": "FIELD",
            "name": "alternative",
            "content": {
              "type": "CHOICE",
              "members": [
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "ALIAS",
                      "content": {
                        "type": "SYMBOL",
                        "name": "preproc_else_in_enumerator_list_no_comma"
                      },
                      "named": true,
                      "value": "preproc_else"
                    },
                    {
                      "type": "ALIAS",
                      "content": {
                        "type": "SYMBOL",
                        "name": "preproc_elif_in_enumerator_list_no_comma"
                      },
                      "named": true,
                      "value": "preproc_elif"
                    },
                    {
                      "type": "ALIAS",
                      "content": {
                        "type": "SYMBOL",
                        "name": "preproc_elifdef_in_enumerator_list_no_comma"
                      },
                      "named": true,
                      "value": "preproc_elifdef"
                    }
                  ]
                },
                {
                  "type": "BLANK"
                }
              ]
            }
          }
        ]
      }
    },
    "preproc_elifdef_in_enumerator_list_no_comma": {
      "type": "PREC",
      "value": -1,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "ALIAS",
                "content": {
                  "type": "PATTERN",
                  "value": "#[ \t]*elifdef"
                },
                "named": false,
                "value": "#elifdef"
              },
              {
                "type": "ALIAS",
                "content": {
                  "type": "PATTERN",
                  "value": "#[ \t]*elifndef"
                },
                "named": false,
                "value": "#elifndef"
              }
            ]
          },
          {
            "type": "FIELD",
            "name": "name",
            "content": {
              "type": "SYMBOL",
              "name": "identifier"
            }
          },
          {
            "type": "REPEAT",
            "content": {
              "type": "SYMBOL",
              "name": "enumerator"
            }
          },
          {
            "type": "FIELD",
            "name": "alternative",
            "content": {
              "type": "CHOICE",
              "members": [
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "ALIAS",
                      "content": {
                        "type": "SYMBOL",
                        "name": "preproc_else_in_enumerator_list_no_comma"
                      },
                      "named": true,
                      "value": "preproc_else"
                    },
                    {
                      "type": "ALIAS",
                      "content": {
                        "type": "SYMBOL",
                        "name": "preproc_elif_in_enumerator_list_no_comma"
                      },
                      "named": true,
                      "value": "preproc_elif"
                    },
                    {
                      "type": "ALIAS",
                      "content": {
                        "type": "SYMBOL",
                        "name": "preproc_elifdef_in_enumerator_list_no_comma"
                      },
                      "named": true,
                      "value": "preproc_elifdef"
                    }
                  ]
                },
                {
                  "type": "BLANK"
                }
              ]
            }
          }
        ]
      }
    },
    "preproc_arg": {
      "type": "TOKEN",
      "content": {
        "type": "PREC",
        "value": -1,
        "content": {
          "type": "PATTERN",
          "value": "\\S([^/\\n]|\\/[^*]|\\\\\\r?\\n)*"
        }
      }
    },
    "preproc_directive": {
      "type": "PATTERN",
      "value": "#[ \\t]*[a-zA-Z0-9]\\w*"
    },
    "_preproc_expression": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "identifier"
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "SYMBOL",
            "name": "preproc_call_expression"
          },
          "named": true,
          "value": "call_expression"
        },
        {
          "type": "SYMBOL",
          "name": "number_literal"
        },
        {
          "type": "SYMBOL",
          "name": "char_literal"
        },
        {
          "type": "SYMBOL",
          "name": "preproc_defined"
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "SYMBOL",
            "name": "preproc_unary_expression"
          },
          "named": true,
          "value": "unary_expression"
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "SYMBOL",
            "name": "preproc_binary_expression"
          },
          "named": true,
          "value": "binary_expression"
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "SYMBOL",
            "name": "preproc_parenthesized_expression"
          },
          "named": true,
          "value": "parenthesized_expression"
        }
      ]
    },
    "preproc_parenthesized_expression": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "SYMBOL",
          "name": "_preproc_expression"
        },
        {
          "type": "STRING",
          "value": ")"
        }
      ]
    },
    "preproc_defined": {
      "type": "CHOICE",
      "members": [
        {
          "type": "PREC",
          "value": 15,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "STRING",
                "value": "defined"
              },
              {
                "type": "STRING",
                "value": "("
              },
              {
                "type": "SYMBOL",
                "name": "identifier"
              },
              {
                "type": "STRING",
                "value": ")"
              }
            ]
          }
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "STRING",
              "value": "defined"
            },
            {
              "type": "SYMBOL",
              "name": "identifier"
            }
          ]
        }
      ]
    },
    "preproc_unary_expression": {
      "type": "PREC_LEFT",
      "value": 14,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "FIELD",
            "name": "operator",
            "content": {
              "type": "CHOICE",
              "members": [
                {
                  "type": "STRING",
                  "value": "!"
                },
                {
                  "type": "STRING",
                  "value": "~"
                },
                {
                  "type": "STRING",
                  "value": "-"
                },
                {
                  "type": "STRING",
                  "value": "+"
                }
              ]
            }
          },
          {
            "type": "FIELD",
            "name": "argument",
            "content": {
              "type": "SYMBOL",
              "name": "_preproc_expression"
            }
          }
        ]
      }
    },
    "preproc_call_expression": {
      "type": "PREC",
      "value": 15,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "FIELD",
            "name": "function",
            "content": {
              "type": "SYMBOL",
              "name": "identifier"
            }
          },
          {
            "type": "FIELD",
            "name": "arguments",
            "content": {
              "type": "ALIAS",
              "content": {
                "type": "SYMBOL",
                "name": "preproc_argument_list"
              },
              "named": true,
              "value": "argument_list"
            }
          }
        ]
      }
    },
    "preproc_argument_list": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "_preproc_expression"
                },
                {
                  "type": "REPEAT",
                  "content": {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "STRING",
                        "value": ","
                      },
                      {
                        "type": "SYMBOL",
                        "name": "_preproc_expression"
                      }
                    ]
                  }
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": ")"
        }
      ]
    },
    "preproc_binary_expression": {
      "type": "CHOICE",
      "members": [
        {
          "type": "PREC_LEFT",
          "value": 10,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "_preproc_expression"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "STRING",
                  "value": "+"
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "_preproc_expression"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 10,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "_preproc_expression"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "STRING",
                  "value": "-"
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "_preproc_expression"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 11,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "_preproc_expression"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "STRING",
                  "value": "*"
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "_preproc_expression"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 11,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "_preproc_expression"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "STRING",
                  "value": "/"
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "_preproc_expression"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 11,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "_preproc_expression"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "STRING",
                  "value": "%"
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "_preproc_expression"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 1,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "_preproc_expression"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "STRING",
                  "value": "||"
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "_preproc_expression"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 2,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "_preproc_expression"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "STRING",
                  "value": "&&"
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "_preproc_expression"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 3,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "_preproc_expression"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "STRING",
                  "value": "|"
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "_preproc_expression"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 4,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "_preproc_expression"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "STRING",
                  "value": "^"
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "_preproc_expression"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 5,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "_preproc_expression"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "STRING",
                  "value": "&"
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "_preproc_expression"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 6,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "_preproc_expression"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "STRING",
                  "value": "=="
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "_preproc_expression"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 6,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "_preproc_expression"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "STRING",
                  "value": "!="
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "_preproc_expression"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 7,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "_preproc_expression"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "STRING",
                  "value": ">"
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "_preproc_expression"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 7,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "_preproc_expression"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "STRING",
                  "value": ">="
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "_preproc_expression"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 7,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "_preproc_expression"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "STRING",
                  "value": "<="
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "_preproc_expression"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 7,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "_preproc_expression"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "STRING",
                  "value": "<"
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "_preproc_expression"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 9,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "_preproc_expression"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "STRING",
                  "value": "<<"
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "_preproc_expression"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 9,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "_preproc_expression"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "STRING",
                  "value": ">>"
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "_preproc_expression"
                }
              }
            ]
          }
        }
      ]
    },
    "function_definition": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "ms_call_modifier"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "_declaration_specifiers"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "ms_call_modifier"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "FIELD",
          "name": "declarator",
          "content": {
            "type": "SYMBOL",
            "name": "_declarator"
          }
        },
        {
          "type": "FIELD",
          "name": "body",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "compound_statement"
              },
              {
                "type": "SYMBOL",
                "name": "try_statement"
              }
            ]
          }
        }
      ]
    },
    "_old_style_function_definition": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "ms_call_modifier"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "_declaration_specifiers"
        },
        {
          "type": "FIELD",
          "name": "declarator",
          "content": {
            "type": "ALIAS",
            "content": {
              "type": "SYMBOL",
              "name": "_old_style_function_declarator"
            },
            "named": true,
            "value": "function_declarator"
          }
        },
        {
          "type": "REPEAT1",
          "content": {
            "type": "SYMBOL",
            "name": "declaration"
          }
        },
        {
          "type": "FIELD",
          "name": "body",
          "content": {
            "type": "SYMBOL",
            "name": "compound_statement"
          }
        }
      ]
    },
    "declaration": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "_declaration_specifiers"
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "FIELD",
              "name": "declarator",
              "content": {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "CHOICE",
                        "members": [
                          {
                            "type": "SYMBOL",
                            "name": "ms_call_modifier"
                          },
                          {
                            "type": "BLANK"
                          }
                        ]
                      },
                      {
                        "type": "SYMBOL",
                        "name": "_declarator"
                      },
                      {
                        "type": "CHOICE",
                        "members": [
                          {
                            "type": "SYMBOL",
                            "name": "gnu_asm_expression"
                          },
                          {
                            "type": "BLANK"
                          }
                        ]
                      }
                    ]
                  },
                  {
                    "type": "SYMBOL",
                    "name": "init_declarator"
                  }
                ]
              }
            },
            {
              "type": "REPEAT",
              "content": {
                "type": "SEQ",
                "members": [
                  {
                    "type": "STRING",
                    "value": ","
                  },
                  {
                    "type": "FIELD",
                    "name": "declarator",
                    "content": {
                      "type": "CHOICE",
                      "members": [
                        {
                          "type": "SEQ",
                          "members": [
                            {
                              "type": "CHOICE",
                              "members": [
                                {
                                  "type": "SYMBOL",
                                  "name": "ms_call_modifier"
                                },
                                {
                                  "type": "BLANK"
                                }
                              ]
                            },
                            {
                              "type": "SYMBOL",
                              "name": "_declarator"
                            },
                            {
                              "type": "CHOICE",
                              "members": [
                                {
                                  "type": "SYMBOL",
                                  "name": "gnu_asm_expression"
                                },
                                {
                                  "type": "BLANK"
                                }
                              ]
                            }
                          ]
                        },
                        {
                          "type": "SYMBOL",
                          "name": "init_declarator"
                        }
                      ]
                    }
                  }
                ]
              }
            }
          ]
        },
        {
          "type": "STRING",
          "value": ";"
        }
      ]
    },
    "type_definition": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": "__extension__"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "typedef"
        },
        {
          "type": "SYMBOL",
          "name": "_type_definition_type"
        },
        {
          "type": "SYMBOL",
          "name": "_type_definition_declarators"
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "attribute_specifier"
          }
        },
        {
          "type": "STRING",
          "value": ";"
        }
      ]
    },
    "_type_definition_type": {
      "type": "SEQ",
      "members": [
        {
          "type": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "type_qualifier"
          }
        },
        {
          "type": "FIELD",
          "name": "type",
          "content": {
            "type": "SYMBOL",
            "name": "type_specifier"
          }
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "type_qualifier"
          }
        }
      ]
    },
    "_type_definition_declarators": {
      "type": "SEQ",
      "members": [
        {
          "type": "FIELD",
          "name": "declarator",
          "content": {
            "type": "SYMBOL",
            "name": "_type_declarator"
          }
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "STRING",
                "value": ","
              },
              {
                "type": "FIELD",
                "name": "declarator",
                "content": {
                  "type": "SYMBOL",
                  "name": "_type_declarator"
                }
              }
            ]
          }
        }
      ]
    },
    "_declaration_modifiers": {
      "type": "CHOICE",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "storage_class_specifier"
            },
            {
              "type": "SYMBOL",
              "name": "type_qualifier"
            },
            {
              "type": "SYMBOL",
              "name": "attribute_specifier"
            },
            {
              "type": "SYMBOL",
              "name": "attribute_declaration"
            },
            {
              "type": "SYMBOL",
              "name": "ms_declspec_modifier"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "virtual"
        }
      ]
    },
    "_declaration_specifiers": {
      "type": "PREC_RIGHT",
      "value": 0,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "REPEAT",
            "content": {
              "type": "SYMBOL",
              "name": "_declaration_modifiers"
            }
          },
          {
            "type": "FIELD",
            "name": "type",
            "content": {
              "type": "SYMBOL",
              "name": "type_specifier"
            }
          },
          {
            "type": "REPEAT",
            "content": {
              "type": "SYMBOL",
              "name": "_declaration_modifiers"
            }
          }
        ]
      }
    },
    "linkage_specification": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "extern"
        },
        {
          "type": "FIELD",
          "name": "value",
          "content": {
            "type": "SYMBOL",
            "name": "string_literal"
          }
        },
        {
          "type": "FIELD",
          "name": "body",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "function_definition"
              },
              {
                "type": "SYMBOL",
                "name": "declaration"
              },
              {
                "type": "SYMBOL",
                "name": "declaration_list"
              }
            ]
          }
        }
      ]
    },
    "attribute_specifier": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": "__attribute__"
            },
            {
              "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": "STRING",
                  "value": "using"
                },
                {
                  "type": "FIELD",
                  "name": "namespace",
                  "content": {
                    "type": "SYMBOL",
                    "name": "identifier"
                  }
                },
                {
                  "type": "STRING",
                  "value": ":"
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "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": "CHOICE",
      "members": [
        {
          "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": "]]"
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "STRING",
              "value": "[["
            },
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "annotation"
                },
                {
                  "type": "REPEAT",
                  "content": {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "STRING",
                        "value": ","
                      },
                      {
                        "type": "SYMBOL",
                        "name": "annotation"
                      }
                    ]
                  }
                }
              ]
            },
            {
              "type": "STRING",
              "value": "]]"
            }
          ]
        }
      ]
    },
    "ms_declspec_modifier": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "__declspec"
        },
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "SYMBOL",
          "name": "identifier"
        },
        {
          "type": "STRING",
          "value": ")"
        }
      ]
    },
    "ms_based_modifier": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "__based"
        },
        {
          "type": "SYMBOL",
          "name": "argument_list"
        }
      ]
    },
    "ms_call_modifier": {
      "type": "CHOICE",
      "members": [
        {
          "type": "STRING",
          "value": "__cdecl"
        },
        {
          "type": "STRING",
          "value": "__clrcall"
        },
        {
          "type": "STRING",
          "value": "__stdcall"
        },
        {
          "type": "STRING",
          "value": "__fastcall"
        },
        {
          "type": "STRING",
          "value": "__thiscall"
        },
        {
          "type": "STRING",
          "value": "__vectorcall"
        }
      ]
    },
    "ms_restrict_modifier": {
      "type": "STRING",
      "value": "__restrict"
    },
    "ms_unsigned_ptr_modifier": {
      "type": "STRING",
      "value": "__uptr"
    },
    "ms_signed_ptr_modifier": {
      "type": "STRING",
      "value": "__sptr"
    },
    "ms_unaligned_ptr_modifier": {
      "type": "CHOICE",
      "members": [
        {
          "type": "STRING",
          "value": "_unaligned"
        },
        {
          "type": "STRING",
          "value": "__unaligned"
        }
      ]
    },
    "ms_pointer_modifier": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "ms_unaligned_ptr_modifier"
        },
        {
          "type": "SYMBOL",
          "name": "ms_restrict_modifier"
        },
        {
          "type": "SYMBOL",
          "name": "ms_unsigned_ptr_modifier"
        },
        {
          "type": "SYMBOL",
          "name": "ms_signed_ptr_modifier"
        }
      ]
    },
    "declaration_list": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "{"
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "_block_item"
          }
        },
        {
          "type": "STRING",
          "value": "}"
        }
      ]
    },
    "_declarator": {
      "type": "CHOICE",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "attributed_declarator"
            },
            {
              "type": "SYMBOL",
              "name": "pointer_declarator"
            },
            {
              "type": "SYMBOL",
              "name": "function_declarator"
            },
            {
              "type": "SYMBOL",
              "name": "array_declarator"
            },
            {
              "type": "SYMBOL",
              "name": "parenthesized_declarator"
            },
            {
              "type": "SYMBOL",
              "name": "identifier"
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "reference_declarator"
        },
        {
          "type": "SYMBOL",
          "name": "qualified_identifier"
        },
        {
          "type": "SYMBOL",
          "name": "template_function"
        },
        {
          "type": "SYMBOL",
          "name": "operator_name"
        },
        {
          "type": "SYMBOL",
          "name": "destructor_name"
        },
        {
          "type": "SYMBOL",
          "name": "structured_binding_declarator"
        }
      ]
    },
    "_declaration_declarator": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "attributed_declarator"
        },
        {
          "type": "SYMBOL",
          "name": "pointer_declarator"
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "SYMBOL",
            "name": "_function_declaration_declarator"
          },
          "named": true,
          "value": "function_declarator"
        },
        {
          "type": "SYMBOL",
          "name": "array_declarator"
        },
        {
          "type": "SYMBOL",
          "name": "parenthesized_declarator"
        },
        {
          "type": "SYMBOL",
          "name": "identifier"
        }
      ]
    },
    "_field_declarator": {
      "type": "CHOICE",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "ALIAS",
              "content": {
                "type": "SYMBOL",
                "name": "attributed_field_declarator"
              },
              "named": true,
              "value": "attributed_declarator"
            },
            {
              "type": "ALIAS",
              "content": {
                "type": "SYMBOL",
                "name": "pointer_field_declarator"
              },
              "named": true,
              "value": "pointer_declarator"
            },
            {
              "type": "ALIAS",
              "content": {
                "type": "SYMBOL",
                "name": "function_field_declarator"
              },
              "named": true,
              "value": "function_declarator"
            },
            {
              "type": "ALIAS",
              "content": {
                "type": "SYMBOL",
                "name": "array_field_declarator"
              },
              "named": true,
              "value": "array_declarator"
            },
            {
              "type": "ALIAS",
              "content": {
                "type": "SYMBOL",
                "name": "parenthesized_field_declarator"
              },
              "named": true,
              "value": "parenthesized_declarator"
            },
            {
              "type": "SYMBOL",
              "name": "_field_identifier"
            }
          ]
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "SYMBOL",
            "name": "reference_field_declarator"
          },
          "named": true,
          "value": "reference_declarator"
        },
        {
          "type": "SYMBOL",
          "name": "template_method"
        },
        {
          "type": "SYMBOL",
          "name": "operator_name"
        }
      ]
    },
    "_type_declarator": {
      "type": "CHOICE",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "ALIAS",
              "content": {
                "type": "SYMBOL",
                "name": "attributed_type_declarator"
              },
              "named": true,
              "value": "attributed_declarator"
            },
            {
              "type": "ALIAS",
              "content": {
                "type": "SYMBOL",
                "name": "pointer_type_declarator"
              },
              "named": true,
              "value": "pointer_declarator"
            },
            {
              "type": "ALIAS",
              "content": {
                "type": "SYMBOL",
                "name": "function_type_declarator"
              },
              "named": true,
              "value": "function_declarator"
            },
            {
              "type": "ALIAS",
              "content": {
                "type": "SYMBOL",
                "name": "array_type_declarator"
              },
              "named": true,
              "value": "array_declarator"
            },
            {
              "type": "ALIAS",
              "content": {
                "type": "SYMBOL",
                "name": "parenthesized_type_declarator"
              },
              "named": true,
              "value": "parenthesized_declarator"
            },
            {
              "type": "SYMBOL",
              "name": "_type_identifier"
            },
            {
              "type": "ALIAS",
              "content": {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "STRING",
                    "value": "signed"
                  },
                  {
                    "type": "STRING",
                    "value": "unsigned"
                  },
                  {
                    "type": "STRING",
                    "value": "long"
                  },
                  {
                    "type": "STRING",
                    "value": "short"
                  }
                ]
              },
              "named": true,
              "value": "primitive_type"
            },
            {
              "type": "SYMBOL",
              "name": "primitive_type"
            }
          ]
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "SYMBOL",
            "name": "reference_type_declarator"
          },
          "named": true,
          "value": "reference_declarator"
        }
      ]
    },
    "_abstract_declarator": {
      "type": "CHOICE",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "abstract_pointer_declarator"
            },
            {
              "type": "SYMBOL",
              "name": "abstract_function_declarator"
            },
            {
              "type": "SYMBOL",
              "name": "abstract_array_declarator"
            },
            {
              "type": "SYMBOL",
              "name": "abstract_parenthesized_declarator"
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "abstract_reference_declarator"
        }
      ]
    },
    "parenthesized_declarator": {
      "type": "PREC_DYNAMIC",
      "value": -10,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "STRING",
            "value": "("
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "ms_call_modifier"
              },
              {
                "type": "BLANK"
              }
            ]
          },
          {
            "type": "SYMBOL",
            "name": "_declarator"
          },
          {
            "type": "STRING",
            "value": ")"
          }
        ]
      }
    },
    "parenthesized_field_declarator": {
      "type": "PREC_DYNAMIC",
      "value": -10,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "STRING",
            "value": "("
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "ms_call_modifier"
              },
              {
                "type": "BLANK"
              }
            ]
          },
          {
            "type": "SYMBOL",
            "name": "_field_declarator"
          },
          {
            "type": "STRING",
            "value": ")"
          }
        ]
      }
    },
    "parenthesized_type_declarator": {
      "type": "PREC_DYNAMIC",
      "value": -10,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "STRING",
            "value": "("
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "ms_call_modifier"
              },
              {
                "type": "BLANK"
              }
            ]
          },
          {
            "type": "SYMBOL",
            "name": "_type_declarator"
          },
          {
            "type": "STRING",
            "value": ")"
          }
        ]
      }
    },
    "abstract_parenthesized_declarator": {
      "type": "PREC",
      "value": 1,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "STRING",
            "value": "("
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "ms_call_modifier"
              },
              {
                "type": "BLANK"
              }
            ]
          },
          {
            "type": "SYMBOL",
            "name": "_abstract_declarator"
          },
          {
            "type": "STRING",
            "value": ")"
          }
        ]
      }
    },
    "attributed_declarator": {
      "type": "PREC_RIGHT",
      "value": 0,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "SYMBOL",
            "name": "_declarator"
          },
          {
            "type": "REPEAT1",
            "content": {
              "type": "SYMBOL",
              "name": "attribute_declaration"
            }
          }
        ]
      }
    },
    "attributed_field_declarator": {
      "type": "PREC_RIGHT",
      "value": 0,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "SYMBOL",
            "name": "_field_declarator"
          },
          {
            "type": "REPEAT1",
            "content": {
              "type": "SYMBOL",
              "name": "attribute_declaration"
            }
          }
        ]
      }
    },
    "attributed_type_declarator": {
      "type": "PREC_RIGHT",
      "value": 0,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "SYMBOL",
            "name": "_type_declarator"
          },
          {
            "type": "REPEAT1",
            "content": {
              "type": "SYMBOL",
              "name": "attribute_declaration"
            }
          }
        ]
      }
    },
    "pointer_declarator": {
      "type": "PREC_DYNAMIC",
      "value": 1,
      "content": {
        "type": "PREC_RIGHT",
        "value": 0,
        "content": {
          "type": "SEQ",
          "members": [
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "ms_based_modifier"
                },
                {
                  "type": "BLANK"
                }
              ]
            },
            {
              "type": "STRING",
              "value": "*"
            },
            {
              "type": "REPEAT",
              "content": {
                "type": "SYMBOL",
                "name": "ms_pointer_modifier"
              }
            },
            {
              "type": "REPEAT",
              "content": {
                "type": "SYMBOL",
                "name": "type_qualifier"
              }
            },
            {
              "type": "FIELD",
              "name": "declarator",
              "content": {
                "type": "SYMBOL",
                "name": "_declarator"
              }
            }
          ]
        }
      }
    },
    "pointer_field_declarator": {
      "type": "PREC_DYNAMIC",
      "value": 1,
      "content": {
        "type": "PREC_RIGHT",
        "value": 0,
        "content": {
          "type": "SEQ",
          "members": [
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "ms_based_modifier"
                },
                {
                  "type": "BLANK"
                }
              ]
            },
            {
              "type": "STRING",
              "value": "*"
            },
            {
              "type": "REPEAT",
              "content": {
                "type": "SYMBOL",
                "name": "ms_pointer_modifier"
              }
            },
            {
              "type": "REPEAT",
              "content": {
                "type": "SYMBOL",
                "name": "type_qualifier"
              }
            },
            {
              "type": "FIELD",
              "name": "declarator",
              "content": {
                "type": "SYMBOL",
                "name": "_field_declarator"
              }
            }
          ]
        }
      }
    },
    "pointer_type_declarator": {
      "type": "PREC_DYNAMIC",
      "value": 1,
      "content": {
        "type": "PREC_RIGHT",
        "value": 0,
        "content": {
          "type": "SEQ",
          "members": [
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "ms_based_modifier"
                },
                {
                  "type": "BLANK"
                }
              ]
            },
            {
              "type": "STRING",
              "value": "*"
            },
            {
              "type": "REPEAT",
              "content": {
                "type": "SYMBOL",
                "name": "ms_pointer_modifier"
              }
            },
            {
              "type": "REPEAT",
              "content": {
                "type": "SYMBOL",
                "name": "type_qualifier"
              }
            },
            {
              "type": "FIELD",
              "name": "declarator",
              "content": {
                "type": "SYMBOL",
                "name": "_type_declarator"
              }
            }
          ]
        }
      }
    },
    "abstract_pointer_declarator": {
      "type": "PREC_DYNAMIC",
      "value": 1,
      "content": {
        "type": "PREC_RIGHT",
        "value": 0,
        "content": {
          "type": "SEQ",
          "members": [
            {
              "type": "STRING",
              "value": "*"
            },
            {
              "type": "REPEAT",
              "content": {
                "type": "SYMBOL",
                "name": "ms_pointer_modifier"
              }
            },
            {
              "type": "REPEAT",
              "content": {
                "type": "SYMBOL",
                "name": "type_qualifier"
              }
            },
            {
              "type": "FIELD",
              "name": "declarator",
              "content": {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "SYMBOL",
                    "name": "_abstract_declarator"
                  },
                  {
                    "type": "BLANK"
                  }
                ]
              }
            }
          ]
        }
      }
    },
    "function_declarator": {
      "type": "PREC_DYNAMIC",
      "value": 1,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "FIELD",
            "name": "declarator",
            "content": {
              "type": "SYMBOL",
              "name": "_declarator"
            }
          },
          {
            "type": "SYMBOL",
            "name": "_function_declarator_seq"
          }
        ]
      }
    },
    "_function_declaration_declarator": {
      "type": "PREC_RIGHT",
      "value": 1,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "FIELD",
            "name": "declarator",
            "content": {
              "type": "SYMBOL",
              "name": "_declarator"
            }
          },
          {
            "type": "FIELD",
            "name": "parameters",
            "content": {
              "type": "SYMBOL",
              "name": "parameter_list"
            }
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "gnu_asm_expression"
              },
              {
                "type": "BLANK"
              }
            ]
          },
          {
            "type": "REPEAT",
            "content": {
              "type": "SYMBOL",
              "name": "attribute_specifier"
            }
          }
        ]
      }
    },
    "function_field_declarator": {
      "type": "PREC_DYNAMIC",
      "value": 1,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "FIELD",
            "name": "declarator",
            "content": {
              "type": "SYMBOL",
              "name": "_field_declarator"
            }
          },
          {
            "type": "SYMBOL",
            "name": "_function_declarator_seq"
          }
        ]
      }
    },
    "function_type_declarator": {
      "type": "PREC",
      "value": 1,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "FIELD",
            "name": "declarator",
            "content": {
              "type": "SYMBOL",
              "name": "_type_declarator"
            }
          },
          {
            "type": "FIELD",
            "name": "parameters",
            "content": {
              "type": "SYMBOL",
              "name": "parameter_list"
            }
          }
        ]
      }
    },
    "abstract_function_declarator": {
      "type": "SEQ",
      "members": [
        {
          "type": "FIELD",
          "name": "declarator",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "_abstract_declarator"
              },
              {
                "type": "BLANK"
              }
            ]
          }
        },
        {
          "type": "SYMBOL",
          "name": "_function_declarator_seq"
        }
      ]
    },
    "_old_style_function_declarator": {
      "type": "SEQ",
      "members": [
        {
          "type": "FIELD",
          "name": "declarator",
          "content": {
            "type": "SYMBOL",
            "name": "_declarator"
          }
        },
        {
          "type": "FIELD",
          "name": "parameters",
          "content": {
            "type": "ALIAS",
            "content": {
              "type": "SYMBOL",
              "name": "_old_style_parameter_list"
            },
            "named": true,
            "value": "parameter_list"
          }
        }
      ]
    },
    "array_declarator": {
      "type": "PREC",
      "value": 1,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "FIELD",
            "name": "declarator",
            "content": {
              "type": "SYMBOL",
              "name": "_declarator"
            }
          },
          {
            "type": "STRING",
            "value": "["
          },
          {
            "type": "REPEAT",
            "content": {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "type_qualifier"
                },
                {
                  "type": "STRING",
                  "value": "static"
                }
              ]
            }
          },
          {
            "type": "FIELD",
            "name": "size",
            "content": {
              "type": "CHOICE",
              "members": [
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "SYMBOL",
                      "name": "expression"
                    },
                    {
                      "type": "STRING",
                      "value": "*"
                    }
                  ]
                },
                {
                  "type": "BLANK"
                }
              ]
            }
          },
          {
            "type": "STRING",
            "value": "]"
          }
        ]
      }
    },
    "array_field_declarator": {
      "type": "PREC",
      "value": 1,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "FIELD",
            "name": "declarator",
            "content": {
              "type": "SYMBOL",
              "name": "_field_declarator"
            }
          },
          {
            "type": "STRING",
            "value": "["
          },
          {
            "type": "REPEAT",
            "content": {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "type_qualifier"
                },
                {
                  "type": "STRING",
                  "value": "static"
                }
              ]
            }
          },
          {
            "type": "FIELD",
            "name": "size",
            "content": {
              "type": "CHOICE",
              "members": [
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "SYMBOL",
                      "name": "expression"
                    },
                    {
                      "type": "STRING",
                      "value": "*"
                    }
                  ]
                },
                {
                  "type": "BLANK"
                }
              ]
            }
          },
          {
            "type": "STRING",
            "value": "]"
          }
        ]
      }
    },
    "array_type_declarator": {
      "type": "PREC",
      "value": 1,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "FIELD",
            "name": "declarator",
            "content": {
              "type": "SYMBOL",
              "name": "_type_declarator"
            }
          },
          {
            "type": "STRING",
            "value": "["
          },
          {
            "type": "REPEAT",
            "content": {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "type_qualifier"
                },
                {
                  "type": "STRING",
                  "value": "static"
                }
              ]
            }
          },
          {
            "type": "FIELD",
            "name": "size",
            "content": {
              "type": "CHOICE",
              "members": [
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "SYMBOL",
                      "name": "expression"
                    },
                    {
                      "type": "STRING",
                      "value": "*"
                    }
                  ]
                },
                {
                  "type": "BLANK"
                }
              ]
            }
          },
          {
            "type": "STRING",
            "value": "]"
          }
        ]
      }
    },
    "abstract_array_declarator": {
      "type": "PREC",
      "value": 1,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "FIELD",
            "name": "declarator",
            "content": {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "_abstract_declarator"
                },
                {
                  "type": "BLANK"
                }
              ]
            }
          },
          {
            "type": "STRING",
            "value": "["
          },
          {
            "type": "REPEAT",
            "content": {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "type_qualifier"
                },
                {
                  "type": "STRING",
                  "value": "static"
                }
              ]
            }
          },
          {
            "type": "FIELD",
            "name": "size",
            "content": {
              "type": "CHOICE",
              "members": [
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "SYMBOL",
                      "name": "expression"
                    },
                    {
                      "type": "STRING",
                      "value": "*"
                    }
                  ]
                },
                {
                  "type": "BLANK"
                }
              ]
            }
          },
          {
            "type": "STRING",
            "value": "]"
          }
        ]
      }
    },
    "init_declarator": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SEQ",
          "members": [
            {
              "type": "FIELD",
              "name": "declarator",
              "content": {
                "type": "SYMBOL",
                "name": "_declarator"
              }
            },
            {
              "type": "STRING",
              "value": "="
            },
            {
              "type": "FIELD",
              "name": "value",
              "content": {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "SYMBOL",
                    "name": "initializer_list"
                  },
                  {
                    "type": "SYMBOL",
                    "name": "expression"
                  }
                ]
              }
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "FIELD",
              "name": "declarator",
              "content": {
                "type": "SYMBOL",
                "name": "_declarator"
              }
            },
            {
              "type": "FIELD",
              "name": "value",
              "content": {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "SYMBOL",
                    "name": "argument_list"
                  },
                  {
                    "type": "SYMBOL",
                    "name": "initializer_list"
                  }
                ]
              }
            }
          ]
        }
      ]
    },
    "compound_statement": {
      "type": "PREC",
      "value": -1,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "STRING",
            "value": "{"
          },
          {
            "type": "REPEAT",
            "content": {
              "type": "SYMBOL",
              "name": "_block_item"
            }
          },
          {
            "type": "STRING",
            "value": "}"
          }
        ]
      }
    },
    "storage_class_specifier": {
      "type": "CHOICE",
      "members": [
        {
          "type": "STRING",
          "value": "extern"
        },
        {
          "type": "STRING",
          "value": "static"
        },
        {
          "type": "STRING",
          "value": "register"
        },
        {
          "type": "STRING",
          "value": "inline"
        },
        {
          "type": "STRING",
          "value": "__inline"
        },
        {
          "type": "STRING",
          "value": "__inline__"
        },
        {
          "type": "STRING",
          "value": "__forceinline"
        },
        {
          "type": "STRING",
          "value": "thread_local"
        },
        {
          "type": "STRING",
          "value": "__thread"
        },
        {
          "type": "STRING",
          "value": "thread_local"
        }
      ]
    },
    "type_qualifier": {
      "type": "CHOICE",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "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": "STRING",
              "value": "_Nonnull"
            },
            {
              "type": "SYMBOL",
              "name": "alignas_qualifier"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "mutable"
        },
        {
          "type": "STRING",
          "value": "constinit"
        },
        {
          "type": "STRING",
          "value": "consteval"
        }
      ]
    },
    "alignas_qualifier": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": "alignas"
            },
            {
              "type": "STRING",
              "value": "_Alignas"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "expression"
            },
            {
              "type": "SYMBOL",
              "name": "type_descriptor"
            }
          ]
        },
        {
          "type": "STRING",
          "value": ")"
        }
      ]
    },
    "type_specifier": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "struct_specifier"
        },
        {
          "type": "SYMBOL",
          "name": "union_specifier"
        },
        {
          "type": "SYMBOL",
          "name": "enum_specifier"
        },
        {
          "type": "SYMBOL",
          "name": "class_specifier"
        },
        {
          "type": "SYMBOL",
          "name": "sized_type_specifier"
        },
        {
          "type": "SYMBOL",
          "name": "primitive_type"
        },
        {
          "type": "SYMBOL",
          "name": "template_type"
        },
        {
          "type": "SYMBOL",
          "name": "dependent_type"
        },
        {
          "type": "SYMBOL",
          "name": "splice_type_specifier"
        },
        {
          "type": "SYMBOL",
          "name": "placeholder_type_specifier"
        },
        {
          "type": "SYMBOL",
          "name": "decltype"
        },
        {
          "type": "PREC_RIGHT",
          "value": 0,
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "ALIAS",
                "content": {
                  "type": "SYMBOL",
                  "name": "qualified_type_identifier"
                },
                "named": true,
                "value": "qualified_identifier"
              },
              {
                "type": "SYMBOL",
                "name": "_type_identifier"
              }
            ]
          }
        }
      ]
    },
    "sized_type_specifier": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SEQ",
          "members": [
            {
              "type": "REPEAT",
              "content": {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "STRING",
                    "value": "signed"
                  },
                  {
                    "type": "STRING",
                    "value": "unsigned"
                  },
                  {
                    "type": "STRING",
                    "value": "long"
                  },
                  {
                    "type": "STRING",
                    "value": "short"
                  }
                ]
              }
            },
            {
              "type": "FIELD",
              "name": "type",
              "content": {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "CHOICE",
                    "members": [
                      {
                        "type": "PREC_DYNAMIC",
                        "value": -1,
                        "content": {
                          "type": "SYMBOL",
                          "name": "_type_identifier"
                        }
                      },
                      {
                        "type": "SYMBOL",
                        "name": "primitive_type"
                      }
                    ]
                  },
                  {
                    "type": "BLANK"
                  }
                ]
              }
            },
            {
              "type": "REPEAT1",
              "content": {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "STRING",
                    "value": "signed"
                  },
                  {
                    "type": "STRING",
                    "value": "unsigned"
                  },
                  {
                    "type": "STRING",
                    "value": "long"
                  },
                  {
                    "type": "STRING",
                    "value": "short"
                  }
                ]
              }
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "REPEAT1",
              "content": {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "STRING",
                    "value": "signed"
                  },
                  {
                    "type": "STRING",
                    "value": "unsigned"
                  },
                  {
                    "type": "STRING",
                    "value": "long"
                  },
                  {
                    "type": "STRING",
                    "value": "short"
                  }
                ]
              }
            },
            {
              "type": "REPEAT",
              "content": {
                "type": "SYMBOL",
                "name": "type_qualifier"
              }
            },
            {
              "type": "FIELD",
              "name": "type",
              "content": {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "CHOICE",
                    "members": [
                      {
                        "type": "PREC_DYNAMIC",
                        "value": -1,
                        "content": {
                          "type": "SYMBOL",
                          "name": "_type_identifier"
                        }
                      },
                      {
                        "type": "SYMBOL",
                        "name": "primitive_type"
                      }
                    ]
                  },
                  {
                    "type": "BLANK"
                  }
                ]
              }
            },
            {
              "type": "REPEAT",
              "content": {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "STRING",
                    "value": "signed"
                  },
                  {
                    "type": "STRING",
                    "value": "unsigned"
                  },
                  {
                    "type": "STRING",
                    "value": "long"
                  },
                  {
                    "type": "STRING",
                    "value": "short"
                  }
                ]
              }
            }
          ]
        }
      ]
    },
    "primitive_type": {
      "type": "TOKEN",
      "content": {
        "type": "CHOICE",
        "members": [
          {
            "type": "STRING",
            "value": "bool"
          },
          {
            "type": "STRING",
            "value": "char"
          },
          {
            "type": "STRING",
            "value": "int"
          },
          {
            "type": "STRING",
            "value": "float"
          },
          {
            "type": "STRING",
            "value": "double"
          },
          {
            "type": "STRING",
            "value": "void"
          },
          {
            "type": "STRING",
            "value": "size_t"
          },
          {
            "type": "STRING",
            "value": "ssize_t"
          },
          {
            "type": "STRING",
            "value": "ptrdiff_t"
          },
          {
            "type": "STRING",
            "value": "intptr_t"
          },
          {
            "type": "STRING",
            "value": "uintptr_t"
          },
          {
            "type": "STRING",
            "value": "charptr_t"
          },
          {
            "type": "STRING",
            "value": "nullptr_t"
          },
          {
            "type": "STRING",
            "value": "max_align_t"
          },
          {
            "type": "STRING",
            "value": "int8_t"
          },
          {
            "type": "STRING",
            "value": "int16_t"
          },
          {
            "type": "STRING",
            "value": "int32_t"
          },
          {
            "type": "STRING",
            "value": "int64_t"
          },
          {
            "type": "STRING",
            "value": "uint8_t"
          },
          {
            "type": "STRING",
            "value": "uint16_t"
          },
          {
            "type": "STRING",
            "value": "uint32_t"
          },
          {
            "type": "STRING",
            "value": "uint64_t"
          },
          {
            "type": "STRING",
            "value": "char8_t"
          },
          {
            "type": "STRING",
            "value": "char16_t"
          },
          {
            "type": "STRING",
            "value": "char32_t"
          },
          {
            "type": "STRING",
            "value": "char64_t"
          }
        ]
      }
    },
    "enum_specifier": {
      "type": "PREC_RIGHT",
      "value": 0,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "STRING",
            "value": "enum"
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "STRING",
                    "value": "class"
                  },
                  {
                    "type": "STRING",
                    "value": "struct"
                  }
                ]
              },
              {
                "type": "BLANK"
              }
            ]
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "SEQ",
                "members": [
                  {
                    "type": "FIELD",
                    "name": "name",
                    "content": {
                      "type": "SYMBOL",
                      "name": "_class_name"
                    }
                  },
                  {
                    "type": "CHOICE",
                    "members": [
                      {
                        "type": "SYMBOL",
                        "name": "_enum_base_clause"
                      },
                      {
                        "type": "BLANK"
                      }
                    ]
                  },
                  {
                    "type": "CHOICE",
                    "members": [
                      {
                        "type": "FIELD",
                        "name": "body",
                        "content": {
                          "type": "SYMBOL",
                          "name": "enumerator_list"
                        }
                      },
                      {
                        "type": "BLANK"
                      }
                    ]
                  }
                ]
              },
              {
                "type": "FIELD",
                "name": "body",
                "content": {
                  "type": "SYMBOL",
                  "name": "enumerator_list"
                }
              }
            ]
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "attribute_specifier"
              },
              {
                "type": "BLANK"
              }
            ]
          }
        ]
      }
    },
    "enumerator_list": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "{"
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SEQ",
                "members": [
                  {
                    "type": "SYMBOL",
                    "name": "enumerator"
                  },
                  {
                    "type": "STRING",
                    "value": ","
                  }
                ]
              },
              {
                "type": "ALIAS",
                "content": {
                  "type": "SYMBOL",
                  "name": "preproc_if_in_enumerator_list"
                },
                "named": true,
                "value": "preproc_if"
              },
              {
                "type": "ALIAS",
                "content": {
                  "type": "SYMBOL",
                  "name": "preproc_ifdef_in_enumerator_list"
                },
                "named": true,
                "value": "preproc_ifdef"
              },
              {
                "type": "SEQ",
                "members": [
                  {
                    "type": "SYMBOL",
                    "name": "preproc_call"
                  },
                  {
                    "type": "STRING",
                    "value": ","
                  }
                ]
              }
            ]
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "SYMBOL",
                      "name": "enumerator"
                    },
                    {
                      "type": "ALIAS",
                      "content": {
                        "type": "SYMBOL",
                        "name": "preproc_if_in_enumerator_list_no_comma"
                      },
                      "named": true,
                      "value": "preproc_if"
                    },
                    {
                      "type": "ALIAS",
                      "content": {
                        "type": "SYMBOL",
                        "name": "preproc_ifdef_in_enumerator_list_no_comma"
                      },
                      "named": true,
                      "value": "preproc_ifdef"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "preproc_call"
                    }
                  ]
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "}"
        }
      ]
    },
    "struct_specifier": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "struct"
        },
        {
          "type": "SYMBOL",
          "name": "_class_declaration"
        }
      ]
    },
    "union_specifier": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "union"
        },
        {
          "type": "SYMBOL",
          "name": "_class_declaration"
        }
      ]
    },
    "field_declaration_list": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "{"
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "_field_declaration_list_item"
          }
        },
        {
          "type": "STRING",
          "value": "}"
        }
      ]
    },
    "_field_declaration_list_item": {
      "type": "CHOICE",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "field_declaration"
            },
            {
              "type": "SYMBOL",
              "name": "preproc_def"
            },
            {
              "type": "SYMBOL",
              "name": "preproc_function_def"
            },
            {
              "type": "SYMBOL",
              "name": "preproc_call"
            },
            {
              "type": "ALIAS",
              "content": {
                "type": "SYMBOL",
                "name": "preproc_if_in_field_declaration_list"
              },
              "named": true,
              "value": "preproc_if"
            },
            {
              "type": "ALIAS",
              "content": {
                "type": "SYMBOL",
                "name": "preproc_ifdef_in_field_declaration_list"
              },
              "named": true,
              "value": "preproc_ifdef"
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "template_declaration"
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "SYMBOL",
            "name": "inline_method_definition"
          },
          "named": true,
          "value": "function_definition"
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "SYMBOL",
            "name": "constructor_or_destructor_definition"
          },
          "named": true,
          "value": "function_definition"
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "SYMBOL",
            "name": "constructor_or_destructor_declaration"
          },
          "named": true,
          "value": "declaration"
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "SYMBOL",
            "name": "operator_cast_definition"
          },
          "named": true,
          "value": "function_definition"
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "SYMBOL",
            "name": "operator_cast_declaration"
          },
          "named": true,
          "value": "declaration"
        },
        {
          "type": "SYMBOL",
          "name": "friend_declaration"
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "SYMBOL",
              "name": "access_specifier"
            },
            {
              "type": "STRING",
              "value": ":"
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "alias_declaration"
        },
        {
          "type": "SYMBOL",
          "name": "using_declaration"
        },
        {
          "type": "SYMBOL",
          "name": "type_definition"
        },
        {
          "type": "SYMBOL",
          "name": "static_assert_declaration"
        },
        {
          "type": "SYMBOL",
          "name": "consteval_block_declaration"
        },
        {
          "type": "STRING",
          "value": ";"
        }
      ]
    },
    "field_declaration": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "_declaration_specifiers"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "SEQ",
                  "members": [
                    {
                      "type": "FIELD",
                      "name": "declarator",
                      "content": {
                        "type": "SYMBOL",
                        "name": "_field_declarator"
                      }
                    },
                    {
                      "type": "CHOICE",
                      "members": [
                        {
                          "type": "CHOICE",
                          "members": [
                            {
                              "type": "SYMBOL",
                              "name": "bitfield_clause"
                            },
                            {
                              "type": "FIELD",
                              "name": "default_value",
                              "content": {
                                "type": "SYMBOL",
                                "name": "initializer_list"
                              }
                            },
                            {
                              "type": "SEQ",
                              "members": [
                                {
                                  "type": "STRING",
                                  "value": "="
                                },
                                {
                                  "type": "FIELD",
                                  "name": "default_value",
                                  "content": {
                                    "type": "CHOICE",
                                    "members": [
                                      {
                                        "type": "SYMBOL",
                                        "name": "expression"
                                      },
                                      {
                                        "type": "SYMBOL",
                                        "name": "initializer_list"
                                      }
                                    ]
                                  }
                                }
                              ]
                            }
                          ]
                        },
                        {
                          "type": "BLANK"
                        }
                      ]
                    }
                  ]
                },
                {
                  "type": "REPEAT",
                  "content": {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "STRING",
                        "value": ","
                      },
                      {
                        "type": "SEQ",
                        "members": [
                          {
                            "type": "FIELD",
                            "name": "declarator",
                            "content": {
                              "type": "SYMBOL",
                              "name": "_field_declarator"
                            }
                          },
                          {
                            "type": "CHOICE",
                            "members": [
                              {
                                "type": "CHOICE",
                                "members": [
                                  {
                                    "type": "SYMBOL",
                                    "name": "bitfield_clause"
                                  },
                                  {
                                    "type": "FIELD",
                                    "name": "default_value",
                                    "content": {
                                      "type": "SYMBOL",
                                      "name": "initializer_list"
                                    }
                                  },
                                  {
                                    "type": "SEQ",
                                    "members": [
                                      {
                                        "type": "STRING",
                                        "value": "="
                                      },
                                      {
                                        "type": "FIELD",
                                        "name": "default_value",
                                        "content": {
                                          "type": "CHOICE",
                                          "members": [
                                            {
                                              "type": "SYMBOL",
                                              "name": "expression"
                                            },
                                            {
                                              "type": "SYMBOL",
                                              "name": "initializer_list"
                                            }
                                          ]
                                        }
                                      }
                                    ]
                                  }
                                ]
                              },
                              {
                                "type": "BLANK"
                              }
                            ]
                          }
                        ]
                      }
                    ]
                  }
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "attribute_specifier"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": ";"
        }
      ]
    },
    "_field_declaration_declarator": {
      "type": "SEQ",
      "members": [
        {
          "type": "SEQ",
          "members": [
            {
              "type": "FIELD",
              "name": "declarator",
              "content": {
                "type": "SYMBOL",
                "name": "_field_declarator"
              }
            },
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "bitfield_clause"
                },
                {
                  "type": "BLANK"
                }
              ]
            }
          ]
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "STRING",
                "value": ","
              },
              {
                "type": "SEQ",
                "members": [
                  {
                    "type": "FIELD",
                    "name": "declarator",
                    "content": {
                      "type": "SYMBOL",
                      "name": "_field_declarator"
                    }
                  },
                  {
                    "type": "CHOICE",
                    "members": [
                      {
                        "type": "SYMBOL",
                        "name": "bitfield_clause"
                      },
                      {
                        "type": "BLANK"
                      }
                    ]
                  }
                ]
              }
            ]
          }
        }
      ]
    },
    "bitfield_clause": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": ":"
        },
        {
          "type": "SYMBOL",
          "name": "expression"
        }
      ]
    },
    "enumerator": {
      "type": "SEQ",
      "members": [
        {
          "type": "FIELD",
          "name": "name",
          "content": {
            "type": "SYMBOL",
            "name": "identifier"
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "STRING",
                  "value": "="
                },
                {
                  "type": "FIELD",
                  "name": "value",
                  "content": {
                    "type": "SYMBOL",
                    "name": "expression"
                  }
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "variadic_parameter": {
      "type": "STRING",
      "value": "..."
    },
    "parameter_list": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "SYMBOL",
                      "name": "parameter_declaration"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "explicit_object_parameter_declaration"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "optional_parameter_declaration"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "variadic_parameter_declaration"
                    },
                    {
                      "type": "STRING",
                      "value": "..."
                    }
                  ]
                },
                {
                  "type": "REPEAT",
                  "content": {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "STRING",
                        "value": ","
                      },
                      {
                        "type": "CHOICE",
                        "members": [
                          {
                            "type": "SYMBOL",
                            "name": "parameter_declaration"
                          },
                          {
                            "type": "SYMBOL",
                            "name": "explicit_object_parameter_declaration"
                          },
                          {
                            "type": "SYMBOL",
                            "name": "optional_parameter_declaration"
                          },
                          {
                            "type": "SYMBOL",
                            "name": "variadic_parameter_declaration"
                          },
                          {
                            "type": "STRING",
                            "value": "..."
                          }
                        ]
                      }
                    ]
                  }
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": ")"
        }
      ]
    },
    "_old_style_parameter_list": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "SYMBOL",
                      "name": "identifier"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "variadic_parameter"
                    }
                  ]
                },
                {
                  "type": "REPEAT",
                  "content": {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "STRING",
                        "value": ","
                      },
                      {
                        "type": "CHOICE",
                        "members": [
                          {
                            "type": "SYMBOL",
                            "name": "identifier"
                          },
                          {
                            "type": "SYMBOL",
                            "name": "variadic_parameter"
                          }
                        ]
                      }
                    ]
                  }
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": ")"
        }
      ]
    },
    "parameter_declaration": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "_declaration_specifiers"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "FIELD",
              "name": "declarator",
              "content": {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "SYMBOL",
                    "name": "_declarator"
                  },
                  {
                    "type": "SYMBOL",
                    "name": "_abstract_declarator"
                  }
                ]
              }
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "attribute_specifier"
          }
        }
      ]
    },
    "attributed_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "REPEAT1",
          "content": {
            "type": "SYMBOL",
            "name": "attribute_declaration"
          }
        },
        {
          "type": "SYMBOL",
          "name": "statement"
        }
      ]
    },
    "statement": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "case_statement"
        },
        {
          "type": "SYMBOL",
          "name": "_non_case_statement"
        }
      ]
    },
    "_non_case_statement": {
      "type": "CHOICE",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "attributed_statement"
            },
            {
              "type": "SYMBOL",
              "name": "labeled_statement"
            },
            {
              "type": "SYMBOL",
              "name": "compound_statement"
            },
            {
              "type": "SYMBOL",
              "name": "expression_statement"
            },
            {
              "type": "SYMBOL",
              "name": "if_statement"
            },
            {
              "type": "SYMBOL",
              "name": "switch_statement"
            },
            {
              "type": "SYMBOL",
              "name": "do_statement"
            },
            {
              "type": "SYMBOL",
              "name": "while_statement"
            },
            {
              "type": "SYMBOL",
              "name": "for_statement"
            },
            {
              "type": "SYMBOL",
              "name": "return_statement"
            },
            {
              "type": "SYMBOL",
              "name": "break_statement"
            },
            {
              "type": "SYMBOL",
              "name": "continue_statement"
            },
            {
              "type": "SYMBOL",
              "name": "goto_statement"
            },
            {
              "type": "SYMBOL",
              "name": "seh_try_statement"
            },
            {
              "type": "SYMBOL",
              "name": "seh_leave_statement"
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "co_return_statement"
        },
        {
          "type": "SYMBOL",
          "name": "co_yield_statement"
        },
        {
          "type": "SYMBOL",
          "name": "for_range_loop"
        },
        {
          "type": "SYMBOL",
          "name": "expansion_statement"
        },
        {
          "type": "SYMBOL",
          "name": "try_statement"
        },
        {
          "type": "SYMBOL",
          "name": "throw_statement"
        }
      ]
    },
    "_top_level_statement": {
      "type": "CHOICE",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "case_statement"
            },
            {
              "type": "SYMBOL",
              "name": "attributed_statement"
            },
            {
              "type": "SYMBOL",
              "name": "labeled_statement"
            },
            {
              "type": "SYMBOL",
              "name": "compound_statement"
            },
            {
              "type": "ALIAS",
              "content": {
                "type": "SYMBOL",
                "name": "_top_level_expression_statement"
              },
              "named": true,
              "value": "expression_statement"
            },
            {
              "type": "SYMBOL",
              "name": "if_statement"
            },
            {
              "type": "SYMBOL",
              "name": "switch_statement"
            },
            {
              "type": "SYMBOL",
              "name": "do_statement"
            },
            {
              "type": "SYMBOL",
              "name": "while_statement"
            },
            {
              "type": "SYMBOL",
              "name": "for_statement"
            },
            {
              "type": "SYMBOL",
              "name": "return_statement"
            },
            {
              "type": "SYMBOL",
              "name": "break_statement"
            },
            {
              "type": "SYMBOL",
              "name": "continue_statement"
            },
            {
              "type": "SYMBOL",
              "name": "goto_statement"
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "co_return_statement"
        },
        {
          "type": "SYMBOL",
          "name": "co_yield_statement"
        },
        {
          "type": "SYMBOL",
          "name": "for_range_loop"
        },
        {
          "type": "SYMBOL",
          "name": "expansion_statement"
        },
        {
          "type": "SYMBOL",
          "name": "try_statement"
        },
        {
          "type": "SYMBOL",
          "name": "throw_statement"
        }
      ]
    },
    "labeled_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "FIELD",
          "name": "label",
          "content": {
            "type": "SYMBOL",
            "name": "_statement_identifier"
          }
        },
        {
          "type": "STRING",
          "value": ":"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "declaration"
            },
            {
              "type": "SYMBOL",
              "name": "statement"
            }
          ]
        }
      ]
    },
    "_top_level_expression_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_expression_not_binary"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": ";"
        }
      ]
    },
    "expression_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "expression"
                },
                {
                  "type": "SYMBOL",
                  "name": "comma_expression"
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": ";"
        }
      ]
    },
    "if_statement": {
      "type": "PREC_RIGHT",
      "value": 0,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "STRING",
            "value": "if"
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "STRING",
                "value": "constexpr"
              },
              {
                "type": "BLANK"
              }
            ]
          },
          {
            "type": "FIELD",
            "name": "condition",
            "content": {
              "type": "SYMBOL",
              "name": "condition_clause"
            }
          },
          {
            "type": "FIELD",
            "name": "consequence",
            "content": {
              "type": "SYMBOL",
              "name": "statement"
            }
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "FIELD",
                "name": "alternative",
                "content": {
                  "type": "SYMBOL",
                  "name": "else_clause"
                }
              },
              {
                "type": "BLANK"
              }
            ]
          }
        ]
      }
    },
    "else_clause": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "else"
        },
        {
          "type": "SYMBOL",
          "name": "statement"
        }
      ]
    },
    "switch_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "switch"
        },
        {
          "type": "FIELD",
          "name": "condition",
          "content": {
            "type": "SYMBOL",
            "name": "condition_clause"
          }
        },
        {
          "type": "FIELD",
          "name": "body",
          "content": {
            "type": "SYMBOL",
            "name": "compound_statement"
          }
        }
      ]
    },
    "case_statement": {
      "type": "PREC_RIGHT",
      "value": 0,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "SEQ",
                "members": [
                  {
                    "type": "STRING",
                    "value": "case"
                  },
                  {
                    "type": "FIELD",
                    "name": "value",
                    "content": {
                      "type": "SYMBOL",
                      "name": "expression"
                    }
                  }
                ]
              },
              {
                "type": "STRING",
                "value": "default"
              }
            ]
          },
          {
            "type": "STRING",
            "value": ":"
          },
          {
            "type": "REPEAT",
            "content": {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "_non_case_statement"
                },
                {
                  "type": "SYMBOL",
                  "name": "declaration"
                },
                {
                  "type": "SYMBOL",
                  "name": "type_definition"
                }
              ]
            }
          }
        ]
      }
    },
    "while_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "while"
        },
        {
          "type": "FIELD",
          "name": "condition",
          "content": {
            "type": "SYMBOL",
            "name": "condition_clause"
          }
        },
        {
          "type": "FIELD",
          "name": "body",
          "content": {
            "type": "SYMBOL",
            "name": "statement"
          }
        }
      ]
    },
    "do_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "do"
        },
        {
          "type": "FIELD",
          "name": "body",
          "content": {
            "type": "SYMBOL",
            "name": "statement"
          }
        },
        {
          "type": "STRING",
          "value": "while"
        },
        {
          "type": "FIELD",
          "name": "condition",
          "content": {
            "type": "SYMBOL",
            "name": "parenthesized_expression"
          }
        },
        {
          "type": "STRING",
          "value": ";"
        }
      ]
    },
    "for_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "for"
        },
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "SYMBOL",
          "name": "_for_statement_body"
        },
        {
          "type": "STRING",
          "value": ")"
        },
        {
          "type": "FIELD",
          "name": "body",
          "content": {
            "type": "SYMBOL",
            "name": "statement"
          }
        }
      ]
    },
    "_for_statement_body": {
      "type": "PREC_DYNAMIC",
      "value": 1,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "FIELD",
                "name": "initializer",
                "content": {
                  "type": "SYMBOL",
                  "name": "declaration"
                }
              },
              {
                "type": "SEQ",
                "members": [
                  {
                    "type": "FIELD",
                    "name": "initializer",
                    "content": {
                      "type": "CHOICE",
                      "members": [
                        {
                          "type": "CHOICE",
                          "members": [
                            {
                              "type": "SYMBOL",
                              "name": "expression"
                            },
                            {
                              "type": "SYMBOL",
                              "name": "comma_expression"
                            }
                          ]
                        },
                        {
                          "type": "BLANK"
                        }
                      ]
                    }
                  },
                  {
                    "type": "STRING",
                    "value": ";"
                  }
                ]
              }
            ]
          },
          {
            "type": "FIELD",
            "name": "condition",
            "content": {
              "type": "CHOICE",
              "members": [
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "SYMBOL",
                      "name": "expression"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "comma_expression"
                    }
                  ]
                },
                {
                  "type": "BLANK"
                }
              ]
            }
          },
          {
            "type": "STRING",
            "value": ";"
          },
          {
            "type": "FIELD",
            "name": "update",
            "content": {
              "type": "CHOICE",
              "members": [
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "SYMBOL",
                      "name": "expression"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "comma_expression"
                    }
                  ]
                },
                {
                  "type": "BLANK"
                }
              ]
            }
          }
        ]
      }
    },
    "return_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "STRING",
                  "value": "return"
                },
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "CHOICE",
                      "members": [
                        {
                          "type": "SYMBOL",
                          "name": "expression"
                        },
                        {
                          "type": "SYMBOL",
                          "name": "comma_expression"
                        }
                      ]
                    },
                    {
                      "type": "BLANK"
                    }
                  ]
                },
                {
                  "type": "STRING",
                  "value": ";"
                }
              ]
            },
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "STRING",
                  "value": "return"
                },
                {
                  "type": "SYMBOL",
                  "name": "initializer_list"
                },
                {
                  "type": "STRING",
                  "value": ";"
                }
              ]
            }
          ]
        }
      ]
    },
    "break_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "break"
        },
        {
          "type": "STRING",
          "value": ";"
        }
      ]
    },
    "continue_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "continue"
        },
        {
          "type": "STRING",
          "value": ";"
        }
      ]
    },
    "goto_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "goto"
        },
        {
          "type": "FIELD",
          "name": "label",
          "content": {
            "type": "SYMBOL",
            "name": "_statement_identifier"
          }
        },
        {
          "type": "STRING",
          "value": ";"
        }
      ]
    },
    "seh_try_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "__try"
        },
        {
          "type": "FIELD",
          "name": "body",
          "content": {
            "type": "SYMBOL",
            "name": "compound_statement"
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "seh_except_clause"
            },
            {
              "type": "SYMBOL",
              "name": "seh_finally_clause"
            }
          ]
        }
      ]
    },
    "seh_except_clause": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "__except"
        },
        {
          "type": "FIELD",
          "name": "filter",
          "content": {
            "type": "SYMBOL",
            "name": "parenthesized_expression"
          }
        },
        {
          "type": "FIELD",
          "name": "body",
          "content": {
            "type": "SYMBOL",
            "name": "compound_statement"
          }
        }
      ]
    },
    "seh_finally_clause": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "__finally"
        },
        {
          "type": "FIELD",
          "name": "body",
          "content": {
            "type": "SYMBOL",
            "name": "compound_statement"
          }
        }
      ]
    },
    "seh_leave_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "__leave"
        },
        {
          "type": "STRING",
          "value": ";"
        }
      ]
    },
    "expression": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "_expression_not_binary"
        },
        {
          "type": "SYMBOL",
          "name": "binary_expression"
        }
      ]
    },
    "_expression_not_binary": {
      "type": "CHOICE",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "conditional_expression"
            },
            {
              "type": "SYMBOL",
              "name": "assignment_expression"
            },
            {
              "type": "SYMBOL",
              "name": "unary_expression"
            },
            {
              "type": "SYMBOL",
              "name": "update_expression"
            },
            {
              "type": "SYMBOL",
              "name": "cast_expression"
            },
            {
              "type": "SYMBOL",
              "name": "pointer_expression"
            },
            {
              "type": "SYMBOL",
              "name": "sizeof_expression"
            },
            {
              "type": "SYMBOL",
              "name": "alignof_expression"
            },
            {
              "type": "SYMBOL",
              "name": "offsetof_expression"
            },
            {
              "type": "SYMBOL",
              "name": "generic_expression"
            },
            {
              "type": "SYMBOL",
              "name": "subscript_expression"
            },
            {
              "type": "SYMBOL",
              "name": "call_expression"
            },
            {
              "type": "SYMBOL",
              "name": "field_expression"
            },
            {
              "type": "SYMBOL",
              "name": "compound_literal_expression"
            },
            {
              "type": "SYMBOL",
              "name": "identifier"
            },
            {
              "type": "SYMBOL",
              "name": "number_literal"
            },
            {
              "type": "SYMBOL",
              "name": "_string"
            },
            {
              "type": "SYMBOL",
              "name": "true"
            },
            {
              "type": "SYMBOL",
              "name": "false"
            },
            {
              "type": "SYMBOL",
              "name": "null"
            },
            {
              "type": "SYMBOL",
              "name": "char_literal"
            },
            {
              "type": "SYMBOL",
              "name": "parenthesized_expression"
            },
            {
              "type": "SYMBOL",
              "name": "gnu_asm_expression"
            },
            {
              "type": "SYMBOL",
              "name": "extension_expression"
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "co_await_expression"
        },
        {
          "type": "SYMBOL",
          "name": "requires_expression"
        },
        {
          "type": "SYMBOL",
          "name": "requires_clause"
        },
        {
          "type": "SYMBOL",
          "name": "template_function"
        },
        {
          "type": "SYMBOL",
          "name": "qualified_identifier"
        },
        {
          "type": "SYMBOL",
          "name": "new_expression"
        },
        {
          "type": "SYMBOL",
          "name": "delete_expression"
        },
        {
          "type": "SYMBOL",
          "name": "lambda_expression"
        },
        {
          "type": "SYMBOL",
          "name": "parameter_pack_expansion"
        },
        {
          "type": "SYMBOL",
          "name": "this"
        },
        {
          "type": "SYMBOL",
          "name": "user_defined_literal"
        },
        {
          "type": "SYMBOL",
          "name": "fold_expression"
        },
        {
          "type": "SYMBOL",
          "name": "reflect_expression"
        },
        {
          "type": "SYMBOL",
          "name": "splice_expression"
        }
      ]
    },
    "_string": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "string_literal"
        },
        {
          "type": "SYMBOL",
          "name": "raw_string_literal"
        },
        {
          "type": "SYMBOL",
          "name": "concatenated_string"
        }
      ]
    },
    "comma_expression": {
      "type": "SEQ",
      "members": [
        {
          "type": "FIELD",
          "name": "left",
          "content": {
            "type": "SYMBOL",
            "name": "expression"
          }
        },
        {
          "type": "STRING",
          "value": ","
        },
        {
          "type": "FIELD",
          "name": "right",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "expression"
              },
              {
                "type": "SYMBOL",
                "name": "comma_expression"
              }
            ]
          }
        }
      ]
    },
    "conditional_expression": {
      "type": "PREC_RIGHT",
      "value": -1,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "FIELD",
            "name": "condition",
            "content": {
              "type": "SYMBOL",
              "name": "expression"
            }
          },
          {
            "type": "STRING",
            "value": "?"
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "FIELD",
                "name": "consequence",
                "content": {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "SYMBOL",
                      "name": "expression"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "comma_expression"
                    }
                  ]
                }
              },
              {
                "type": "BLANK"
              }
            ]
          },
          {
            "type": "STRING",
            "value": ":"
          },
          {
            "type": "FIELD",
            "name": "alternative",
            "content": {
              "type": "SYMBOL",
              "name": "expression"
            }
          }
        ]
      }
    },
    "_assignment_left_expression": {
      "type": "CHOICE",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "identifier"
            },
            {
              "type": "SYMBOL",
              "name": "call_expression"
            },
            {
              "type": "SYMBOL",
              "name": "field_expression"
            },
            {
              "type": "SYMBOL",
              "name": "pointer_expression"
            },
            {
              "type": "SYMBOL",
              "name": "subscript_expression"
            },
            {
              "type": "SYMBOL",
              "name": "parenthesized_expression"
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "qualified_identifier"
        },
        {
          "type": "SYMBOL",
          "name": "user_defined_literal"
        }
      ]
    },
    "assignment_expression": {
      "type": "PREC_RIGHT",
      "value": -2,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "FIELD",
            "name": "left",
            "content": {
              "type": "SYMBOL",
              "name": "_assignment_left_expression"
            }
          },
          {
            "type": "FIELD",
            "name": "operator",
            "content": {
              "type": "CHOICE",
              "members": [
                {
                  "type": "STRING",
                  "value": "="
                },
                {
                  "type": "STRING",
                  "value": "*="
                },
                {
                  "type": "STRING",
                  "value": "/="
                },
                {
                  "type": "STRING",
                  "value": "%="
                },
                {
                  "type": "STRING",
                  "value": "+="
                },
                {
                  "type": "STRING",
                  "value": "-="
                },
                {
                  "type": "STRING",
                  "value": "<<="
                },
                {
                  "type": "STRING",
                  "value": ">>="
                },
                {
                  "type": "STRING",
                  "value": "&="
                },
                {
                  "type": "STRING",
                  "value": "^="
                },
                {
                  "type": "STRING",
                  "value": "|="
                },
                {
                  "type": "STRING",
                  "value": "and_eq"
                },
                {
                  "type": "STRING",
                  "value": "or_eq"
                },
                {
                  "type": "STRING",
                  "value": "xor_eq"
                }
              ]
            }
          },
          {
            "type": "FIELD",
            "name": "right",
            "content": {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "expression"
                },
                {
                  "type": "SYMBOL",
                  "name": "initializer_list"
                }
              ]
            }
          }
        ]
      }
    },
    "pointer_expression": {
      "type": "PREC_LEFT",
      "value": 12,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "FIELD",
            "name": "operator",
            "content": {
              "type": "CHOICE",
              "members": [
                {
                  "type": "STRING",
                  "value": "*"
                },
                {
                  "type": "STRING",
                  "value": "&"
                }
              ]
            }
          },
          {
            "type": "FIELD",
            "name": "argument",
            "content": {
              "type": "SYMBOL",
              "name": "expression"
            }
          }
        ]
      }
    },
    "unary_expression": {
      "type": "CHOICE",
      "members": [
        {
          "type": "PREC_LEFT",
          "value": 14,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "STRING",
                      "value": "!"
                    },
                    {
                      "type": "STRING",
                      "value": "~"
                    },
                    {
                      "type": "STRING",
                      "value": "-"
                    },
                    {
                      "type": "STRING",
                      "value": "+"
                    }
                  ]
                }
              },
              {
                "type": "FIELD",
                "name": "argument",
                "content": {
                  "type": "SYMBOL",
                  "name": "expression"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 14,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "STRING",
                      "value": "not"
                    },
                    {
                      "type": "STRING",
                      "value": "compl"
                    }
                  ]
                }
              },
              {
                "type": "FIELD",
                "name": "argument",
                "content": {
                  "type": "SYMBOL",
                  "name": "expression"
                }
              }
            ]
          }
        }
      ]
    },
    "binary_expression": {
      "type": "CHOICE",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "PREC_LEFT",
              "value": 10,
              "content": {
                "type": "SEQ",
                "members": [
                  {
                    "type": "FIELD",
                    "name": "left",
                    "content": {
                      "type": "SYMBOL",
                      "name": "expression"
                    }
                  },
                  {
                    "type": "FIELD",
                    "name": "operator",
                    "content": {
                      "type": "STRING",
                      "value": "+"
                    }
                  },
                  {
                    "type": "FIELD",
                    "name": "right",
                    "content": {
                      "type": "SYMBOL",
                      "name": "expression"
                    }
                  }
                ]
              }
            },
            {
              "type": "PREC_LEFT",
              "value": 10,
              "content": {
                "type": "SEQ",
                "members": [
                  {
                    "type": "FIELD",
                    "name": "left",
                    "content": {
                      "type": "SYMBOL",
                      "name": "expression"
                    }
                  },
                  {
                    "type": "FIELD",
                    "name": "operator",
                    "content": {
                      "type": "STRING",
                      "value": "-"
                    }
                  },
                  {
                    "type": "FIELD",
                    "name": "right",
                    "content": {
                      "type": "SYMBOL",
                      "name": "expression"
                    }
                  }
                ]
              }
            },
            {
              "type": "PREC_LEFT",
              "value": 11,
              "content": {
                "type": "SEQ",
                "members": [
                  {
                    "type": "FIELD",
                    "name": "left",
                    "content": {
                      "type": "SYMBOL",
                      "name": "expression"
                    }
                  },
                  {
                    "type": "FIELD",
                    "name": "operator",
                    "content": {
                      "type": "STRING",
                      "value": "*"
                    }
                  },
                  {
                    "type": "FIELD",
                    "name": "right",
                    "content": {
                      "type": "SYMBOL",
                      "name": "expression"
                    }
                  }
                ]
              }
            },
            {
              "type": "PREC_LEFT",
              "value": 11,
              "content": {
                "type": "SEQ",
                "members": [
                  {
                    "type": "FIELD",
                    "name": "left",
                    "content": {
                      "type": "SYMBOL",
                      "name": "expression"
                    }
                  },
                  {
                    "type": "FIELD",
                    "name": "operator",
                    "content": {
                      "type": "STRING",
                      "value": "/"
                    }
                  },
                  {
                    "type": "FIELD",
                    "name": "right",
                    "content": {
                      "type": "SYMBOL",
                      "name": "expression"
                    }
                  }
                ]
              }
            },
            {
              "type": "PREC_LEFT",
              "value": 11,
              "content": {
                "type": "SEQ",
                "members": [
                  {
                    "type": "FIELD",
                    "name": "left",
                    "content": {
                      "type": "SYMBOL",
                      "name": "expression"
                    }
                  },
                  {
                    "type": "FIELD",
                    "name": "operator",
                    "content": {
                      "type": "STRING",
                      "value": "%"
                    }
                  },
                  {
                    "type": "FIELD",
                    "name": "right",
                    "content": {
                      "type": "SYMBOL",
                      "name": "expression"
                    }
                  }
                ]
              }
            },
            {
              "type": "PREC_LEFT",
              "value": 1,
              "content": {
                "type": "SEQ",
                "members": [
                  {
                    "type": "FIELD",
                    "name": "left",
                    "content": {
                      "type": "SYMBOL",
                      "name": "expression"
                    }
                  },
                  {
                    "type": "FIELD",
                    "name": "operator",
                    "content": {
                      "type": "STRING",
                      "value": "||"
                    }
                  },
                  {
                    "type": "FIELD",
                    "name": "right",
                    "content": {
                      "type": "SYMBOL",
                      "name": "expression"
                    }
                  }
                ]
              }
            },
            {
              "type": "PREC_LEFT",
              "value": 2,
              "content": {
                "type": "SEQ",
                "members": [
                  {
                    "type": "FIELD",
                    "name": "left",
                    "content": {
                      "type": "SYMBOL",
                      "name": "expression"
                    }
                  },
                  {
                    "type": "FIELD",
                    "name": "operator",
                    "content": {
                      "type": "STRING",
                      "value": "&&"
                    }
                  },
                  {
                    "type": "FIELD",
                    "name": "right",
                    "content": {
                      "type": "SYMBOL",
                      "name": "expression"
                    }
                  }
                ]
              }
            },
            {
              "type": "PREC_LEFT",
              "value": 3,
              "content": {
                "type": "SEQ",
                "members": [
                  {
                    "type": "FIELD",
                    "name": "left",
                    "content": {
                      "type": "SYMBOL",
                      "name": "expression"
                    }
                  },
                  {
                    "type": "FIELD",
                    "name": "operator",
                    "content": {
                      "type": "STRING",
                      "value": "|"
                    }
                  },
                  {
                    "type": "FIELD",
                    "name": "right",
                    "content": {
                      "type": "SYMBOL",
                      "name": "expression"
                    }
                  }
                ]
              }
            },
            {
              "type": "PREC_LEFT",
              "value": 4,
              "content": {
                "type": "SEQ",
                "members": [
                  {
                    "type": "FIELD",
                    "name": "left",
                    "content": {
                      "type": "SYMBOL",
                      "name": "expression"
                    }
                  },
                  {
                    "type": "FIELD",
                    "name": "operator",
                    "content": {
                      "type": "STRING",
                      "value": "^"
                    }
                  },
                  {
                    "type": "FIELD",
                    "name": "right",
                    "content": {
                      "type": "SYMBOL",
                      "name": "expression"
                    }
                  }
                ]
              }
            },
            {
              "type": "PREC_LEFT",
              "value": 5,
              "content": {
                "type": "SEQ",
                "members": [
                  {
                    "type": "FIELD",
                    "name": "left",
                    "content": {
                      "type": "SYMBOL",
                      "name": "expression"
                    }
                  },
                  {
                    "type": "FIELD",
                    "name": "operator",
                    "content": {
                      "type": "STRING",
                      "value": "&"
                    }
                  },
                  {
                    "type": "FIELD",
                    "name": "right",
                    "content": {
                      "type": "SYMBOL",
                      "name": "expression"
                    }
                  }
                ]
              }
            },
            {
              "type": "PREC_LEFT",
              "value": 6,
              "content": {
                "type": "SEQ",
                "members": [
                  {
                    "type": "FIELD",
                    "name": "left",
                    "content": {
                      "type": "SYMBOL",
                      "name": "expression"
                    }
                  },
                  {
                    "type": "FIELD",
                    "name": "operator",
                    "content": {
                      "type": "STRING",
                      "value": "=="
                    }
                  },
                  {
                    "type": "FIELD",
                    "name": "right",
                    "content": {
                      "type": "SYMBOL",
                      "name": "expression"
                    }
                  }
                ]
              }
            },
            {
              "type": "PREC_LEFT",
              "value": 6,
              "content": {
                "type": "SEQ",
                "members": [
                  {
                    "type": "FIELD",
                    "name": "left",
                    "content": {
                      "type": "SYMBOL",
                      "name": "expression"
                    }
                  },
                  {
                    "type": "FIELD",
                    "name": "operator",
                    "content": {
                      "type": "STRING",
                      "value": "!="
                    }
                  },
                  {
                    "type": "FIELD",
                    "name": "right",
                    "content": {
                      "type": "SYMBOL",
                      "name": "expression"
                    }
                  }
                ]
              }
            },
            {
              "type": "PREC_LEFT",
              "value": 7,
              "content": {
                "type": "SEQ",
                "members": [
                  {
                    "type": "FIELD",
                    "name": "left",
                    "content": {
                      "type": "SYMBOL",
                      "name": "expression"
                    }
                  },
                  {
                    "type": "FIELD",
                    "name": "operator",
                    "content": {
                      "type": "STRING",
                      "value": ">"
                    }
                  },
                  {
                    "type": "FIELD",
                    "name": "right",
                    "content": {
                      "type": "SYMBOL",
                      "name": "expression"
                    }
                  }
                ]
              }
            },
            {
              "type": "PREC_LEFT",
              "value": 7,
              "content": {
                "type": "SEQ",
                "members": [
                  {
                    "type": "FIELD",
                    "name": "left",
                    "content": {
                      "type": "SYMBOL",
                      "name": "expression"
                    }
                  },
                  {
                    "type": "FIELD",
                    "name": "operator",
                    "content": {
                      "type": "STRING",
                      "value": ">="
                    }
                  },
                  {
                    "type": "FIELD",
                    "name": "right",
                    "content": {
                      "type": "SYMBOL",
                      "name": "expression"
                    }
                  }
                ]
              }
            },
            {
              "type": "PREC_LEFT",
              "value": 7,
              "content": {
                "type": "SEQ",
                "members": [
                  {
                    "type": "FIELD",
                    "name": "left",
                    "content": {
                      "type": "SYMBOL",
                      "name": "expression"
                    }
                  },
                  {
                    "type": "FIELD",
                    "name": "operator",
                    "content": {
                      "type": "STRING",
                      "value": "<="
                    }
                  },
                  {
                    "type": "FIELD",
                    "name": "right",
                    "content": {
                      "type": "SYMBOL",
                      "name": "expression"
                    }
                  }
                ]
              }
            },
            {
              "type": "PREC_LEFT",
              "value": 7,
              "content": {
                "type": "SEQ",
                "members": [
                  {
                    "type": "FIELD",
                    "name": "left",
                    "content": {
                      "type": "SYMBOL",
                      "name": "expression"
                    }
                  },
                  {
                    "type": "FIELD",
                    "name": "operator",
                    "content": {
                      "type": "STRING",
                      "value": "<"
                    }
                  },
                  {
                    "type": "FIELD",
                    "name": "right",
                    "content": {
                      "type": "SYMBOL",
                      "name": "expression"
                    }
                  }
                ]
              }
            },
            {
              "type": "PREC_LEFT",
              "value": 9,
              "content": {
                "type": "SEQ",
                "members": [
                  {
                    "type": "FIELD",
                    "name": "left",
                    "content": {
                      "type": "SYMBOL",
                      "name": "expression"
                    }
                  },
                  {
                    "type": "FIELD",
                    "name": "operator",
                    "content": {
                      "type": "STRING",
                      "value": "<<"
                    }
                  },
                  {
                    "type": "FIELD",
                    "name": "right",
                    "content": {
                      "type": "SYMBOL",
                      "name": "expression"
                    }
                  }
                ]
              }
            },
            {
              "type": "PREC_LEFT",
              "value": 9,
              "content": {
                "type": "SEQ",
                "members": [
                  {
                    "type": "FIELD",
                    "name": "left",
                    "content": {
                      "type": "SYMBOL",
                      "name": "expression"
                    }
                  },
                  {
                    "type": "FIELD",
                    "name": "operator",
                    "content": {
                      "type": "STRING",
                      "value": ">>"
                    }
                  },
                  {
                    "type": "FIELD",
                    "name": "right",
                    "content": {
                      "type": "SYMBOL",
                      "name": "expression"
                    }
                  }
                ]
              }
            }
          ]
        },
        {
          "type": "PREC_LEFT",
          "value": 8,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "expression"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "STRING",
                  "value": "<=>"
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "expression"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 1,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "expression"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "STRING",
                  "value": "or"
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "expression"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 2,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "expression"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "STRING",
                  "value": "and"
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "expression"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 3,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "expression"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "STRING",
                  "value": "bitor"
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "expression"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 4,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "expression"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "STRING",
                  "value": "xor"
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "expression"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 5,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "expression"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "STRING",
                  "value": "bitand"
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "expression"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 6,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "expression"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "STRING",
                  "value": "not_eq"
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "expression"
                }
              }
            ]
          }
        }
      ]
    },
    "update_expression": {
      "type": "PREC_RIGHT",
      "value": 14,
      "content": {
        "type": "CHOICE",
        "members": [
          {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "STRING",
                      "value": "--"
                    },
                    {
                      "type": "STRING",
                      "value": "++"
                    }
                  ]
                }
              },
              {
                "type": "FIELD",
                "name": "argument",
                "content": {
                  "type": "SYMBOL",
                  "name": "expression"
                }
              }
            ]
          },
          {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "argument",
                "content": {
                  "type": "SYMBOL",
                  "name": "expression"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "STRING",
                      "value": "--"
                    },
                    {
                      "type": "STRING",
                      "value": "++"
                    }
                  ]
                }
              }
            ]
          }
        ]
      }
    },
    "cast_expression": {
      "type": "PREC",
      "value": 12,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "STRING",
            "value": "("
          },
          {
            "type": "FIELD",
            "name": "type",
            "content": {
              "type": "SYMBOL",
              "name": "type_descriptor"
            }
          },
          {
            "type": "STRING",
            "value": ")"
          },
          {
            "type": "FIELD",
            "name": "value",
            "content": {
              "type": "SYMBOL",
              "name": "expression"
            }
          }
        ]
      }
    },
    "type_descriptor": {
      "type": "PREC_RIGHT",
      "value": 0,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "REPEAT",
            "content": {
              "type": "SYMBOL",
              "name": "type_qualifier"
            }
          },
          {
            "type": "FIELD",
            "name": "type",
            "content": {
              "type": "SYMBOL",
              "name": "type_specifier"
            }
          },
          {
            "type": "REPEAT",
            "content": {
              "type": "SYMBOL",
              "name": "type_qualifier"
            }
          },
          {
            "type": "FIELD",
            "name": "declarator",
            "content": {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "_abstract_declarator"
                },
                {
                  "type": "BLANK"
                }
              ]
            }
          }
        ]
      }
    },
    "sizeof_expression": {
      "type": "PREC_RIGHT",
      "value": 13,
      "content": {
        "type": "CHOICE",
        "members": [
          {
            "type": "PREC",
            "value": 13,
            "content": {
              "type": "SEQ",
              "members": [
                {
                  "type": "STRING",
                  "value": "sizeof"
                },
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "FIELD",
                      "name": "value",
                      "content": {
                        "type": "SYMBOL",
                        "name": "expression"
                      }
                    },
                    {
                      "type": "SEQ",
                      "members": [
                        {
                          "type": "STRING",
                          "value": "("
                        },
                        {
                          "type": "FIELD",
                          "name": "type",
                          "content": {
                            "type": "SYMBOL",
                            "name": "type_descriptor"
                          }
                        },
                        {
                          "type": "STRING",
                          "value": ")"
                        }
                      ]
                    }
                  ]
                }
              ]
            }
          },
          {
            "type": "SEQ",
            "members": [
              {
                "type": "STRING",
                "value": "sizeof"
              },
              {
                "type": "STRING",
                "value": "..."
              },
              {
                "type": "STRING",
                "value": "("
              },
              {
                "type": "FIELD",
                "name": "value",
                "content": {
                  "type": "SYMBOL",
                  "name": "identifier"
                }
              },
              {
                "type": "STRING",
                "value": ")"
              }
            ]
          }
        ]
      }
    },
    "alignof_expression": {
      "type": "PREC",
      "value": 13,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "STRING",
                "value": "__alignof__"
              },
              {
                "type": "STRING",
                "value": "__alignof"
              },
              {
                "type": "STRING",
                "value": "_alignof"
              },
              {
                "type": "STRING",
                "value": "alignof"
              },
              {
                "type": "STRING",
                "value": "_Alignof"
              }
            ]
          },
          {
            "type": "SEQ",
            "members": [
              {
                "type": "STRING",
                "value": "("
              },
              {
                "type": "FIELD",
                "name": "type",
                "content": {
                  "type": "SYMBOL",
                  "name": "type_descriptor"
                }
              },
              {
                "type": "STRING",
                "value": ")"
              }
            ]
          }
        ]
      }
    },
    "offsetof_expression": {
      "type": "PREC",
      "value": 8,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "STRING",
            "value": "offsetof"
          },
          {
            "type": "SEQ",
            "members": [
              {
                "type": "STRING",
                "value": "("
              },
              {
                "type": "FIELD",
                "name": "type",
                "content": {
                  "type": "SYMBOL",
                  "name": "type_descriptor"
                }
              },
              {
                "type": "STRING",
                "value": ","
              },
              {
                "type": "FIELD",
                "name": "member",
                "content": {
                  "type": "SYMBOL",
                  "name": "_field_identifier"
                }
              },
              {
                "type": "STRING",
                "value": ")"
              }
            ]
          }
        ]
      }
    },
    "generic_expression": {
      "type": "PREC",
      "value": 15,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "STRING",
            "value": "_Generic"
          },
          {
            "type": "STRING",
            "value": "("
          },
          {
            "type": "SYMBOL",
            "name": "expression"
          },
          {
            "type": "STRING",
            "value": ","
          },
          {
            "type": "SEQ",
            "members": [
              {
                "type": "SEQ",
                "members": [
                  {
                    "type": "SYMBOL",
                    "name": "type_descriptor"
                  },
                  {
                    "type": "STRING",
                    "value": ":"
                  },
                  {
                    "type": "SYMBOL",
                    "name": "expression"
                  }
                ]
              },
              {
                "type": "REPEAT",
                "content": {
                  "type": "SEQ",
                  "members": [
                    {
                      "type": "STRING",
                      "value": ","
                    },
                    {
                      "type": "SEQ",
                      "members": [
                        {
                          "type": "SYMBOL",
                          "name": "type_descriptor"
                        },
                        {
                          "type": "STRING",
                          "value": ":"
                        },
                        {
                          "type": "SYMBOL",
                          "name": "expression"
                        }
                      ]
                    }
                  ]
                }
              }
            ]
          },
          {
            "type": "STRING",
            "value": ")"
          }
        ]
      }
    },
    "subscript_expression": {
      "type": "PREC",
      "value": 17,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "FIELD",
            "name": "argument",
            "content": {
              "type": "SYMBOL",
              "name": "expression"
            }
          },
          {
            "type": "FIELD",
            "name": "indices",
            "content": {
              "type": "SYMBOL",
              "name": "subscript_argument_list"
            }
          }
        ]
      }
    },
    "call_expression": {
      "type": "PREC_DYNAMIC",
      "value": 1,
      "content": {
        "type": "CHOICE",
        "members": [
          {
            "type": "PREC",
            "value": 15,
            "content": {
              "type": "SEQ",
              "members": [
                {
                  "type": "FIELD",
                  "name": "function",
                  "content": {
                    "type": "SYMBOL",
                    "name": "expression"
                  }
                },
                {
                  "type": "FIELD",
                  "name": "arguments",
                  "content": {
                    "type": "SYMBOL",
                    "name": "argument_list"
                  }
                }
              ]
            }
          },
          {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "function",
                "content": {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "SYMBOL",
                      "name": "primitive_type"
                    },
                    {
                      "type": "SEQ",
                      "members": [
                        {
                          "type": "CHOICE",
                          "members": [
                            {
                              "type": "STRING",
                              "value": "typename"
                            },
                            {
                              "type": "BLANK"
                            }
                          ]
                        },
                        {
                          "type": "SYMBOL",
                          "name": "splice_type_specifier"
                        }
                      ]
                    }
                  ]
                }
              },
              {
                "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": "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": "__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": "expression"
          }
        },
        {
          "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"
            }
          ]
        }
      ]
    },
    "extension_expression": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "__extension__"
        },
        {
          "type": "SYMBOL",
          "name": "expression"
        }
      ]
    },
    "argument_list": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "SYMBOL",
                      "name": "expression"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "initializer_list"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "compound_statement"
                    }
                  ]
                },
                {
                  "type": "REPEAT",
                  "content": {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "STRING",
                        "value": ","
                      },
                      {
                        "type": "CHOICE",
                        "members": [
                          {
                            "type": "SYMBOL",
                            "name": "expression"
                          },
                          {
                            "type": "SYMBOL",
                            "name": "initializer_list"
                          },
                          {
                            "type": "SYMBOL",
                            "name": "compound_statement"
                          }
                        ]
                      }
                    ]
                  }
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": ")"
        }
      ]
    },
    "field_expression": {
      "type": "SEQ",
      "members": [
        {
          "type": "PREC",
          "value": 16,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "argument",
                "content": {
                  "type": "SYMBOL",
                  "name": "expression"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "STRING",
                      "value": "."
                    },
                    {
                      "type": "STRING",
                      "value": ".*"
                    },
                    {
                      "type": "STRING",
                      "value": "->"
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "type": "FIELD",
          "name": "field",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "PREC_DYNAMIC",
                "value": 1,
                "content": {
                  "type": "SYMBOL",
                  "name": "_field_identifier"
                }
              },
              {
                "type": "ALIAS",
                "content": {
                  "type": "SYMBOL",
                  "name": "qualified_field_identifier"
                },
                "named": true,
                "value": "qualified_identifier"
              },
              {
                "type": "SYMBOL",
                "name": "destructor_name"
              },
              {
                "type": "SYMBOL",
                "name": "template_method"
              },
              {
                "type": "ALIAS",
                "content": {
                  "type": "SYMBOL",
                  "name": "dependent_field_identifier"
                },
                "named": true,
                "value": "dependent_name"
              },
              {
                "type": "SYMBOL",
                "name": "operator_name"
              },
              {
                "type": "SYMBOL",
                "name": "splice_expression"
              }
            ]
          }
        }
      ]
    },
    "compound_literal_expression": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SEQ",
          "members": [
            {
              "type": "STRING",
              "value": "("
            },
            {
              "type": "FIELD",
              "name": "type",
              "content": {
                "type": "SYMBOL",
                "name": "type_descriptor"
              }
            },
            {
              "type": "STRING",
              "value": ")"
            },
            {
              "type": "FIELD",
              "name": "value",
              "content": {
                "type": "SYMBOL",
                "name": "initializer_list"
              }
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "FIELD",
              "name": "type",
              "content": {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "SYMBOL",
                    "name": "_class_name"
                  },
                  {
                    "type": "SYMBOL",
                    "name": "primitive_type"
                  },
                  {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "CHOICE",
                        "members": [
                          {
                            "type": "STRING",
                            "value": "typename"
                          },
                          {
                            "type": "BLANK"
                          }
                        ]
                      },
                      {
                        "type": "SYMBOL",
                        "name": "splice_type_specifier"
                      }
                    ]
                  }
                ]
              }
            },
            {
              "type": "FIELD",
              "name": "value",
              "content": {
                "type": "SYMBOL",
                "name": "initializer_list"
              }
            }
          ]
        }
      ]
    },
    "parenthesized_expression": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SEQ",
          "members": [
            {
              "type": "STRING",
              "value": "("
            },
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "expression"
                },
                {
                  "type": "SYMBOL",
                  "name": "comma_expression"
                },
                {
                  "type": "SYMBOL",
                  "name": "compound_statement"
                }
              ]
            },
            {
              "type": "STRING",
              "value": ")"
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "STRING",
              "value": "("
            },
            {
              "type": "ALIAS",
              "content": {
                "type": "SYMBOL",
                "name": "_assignment_expression_lhs"
              },
              "named": true,
              "value": "assignment_expression"
            },
            {
              "type": "STRING",
              "value": ")"
            }
          ]
        }
      ]
    },
    "initializer_list": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "{"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "SYMBOL",
                      "name": "initializer_pair"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "expression"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "initializer_list"
                    }
                  ]
                },
                {
                  "type": "REPEAT",
                  "content": {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "STRING",
                        "value": ","
                      },
                      {
                        "type": "CHOICE",
                        "members": [
                          {
                            "type": "SYMBOL",
                            "name": "initializer_pair"
                          },
                          {
                            "type": "SYMBOL",
                            "name": "expression"
                          },
                          {
                            "type": "SYMBOL",
                            "name": "initializer_list"
                          }
                        ]
                      }
                    ]
                  }
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": ","
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "}"
        }
      ]
    },
    "initializer_pair": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SEQ",
          "members": [
            {
              "type": "FIELD",
              "name": "designator",
              "content": {
                "type": "REPEAT1",
                "content": {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "SYMBOL",
                      "name": "subscript_designator"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "field_designator"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "subscript_range_designator"
                    }
                  ]
                }
              }
            },
            {
              "type": "STRING",
              "value": "="
            },
            {
              "type": "FIELD",
              "name": "value",
              "content": {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "SYMBOL",
                    "name": "expression"
                  },
                  {
                    "type": "SYMBOL",
                    "name": "initializer_list"
                  }
                ]
              }
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "FIELD",
              "name": "designator",
              "content": {
                "type": "SYMBOL",
                "name": "_field_identifier"
              }
            },
            {
              "type": "STRING",
              "value": ":"
            },
            {
              "type": "FIELD",
              "name": "value",
              "content": {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "SYMBOL",
                    "name": "expression"
                  },
                  {
                    "type": "SYMBOL",
                    "name": "initializer_list"
                  }
                ]
              }
            }
          ]
        }
      ]
    },
    "subscript_designator": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "["
        },
        {
          "type": "SYMBOL",
          "name": "expression"
        },
        {
          "type": "STRING",
          "value": "]"
        }
      ]
    },
    "subscript_range_designator": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "["
        },
        {
          "type": "FIELD",
          "name": "start",
          "content": {
            "type": "SYMBOL",
            "name": "expression"
          }
        },
        {
          "type": "STRING",
          "value": "..."
        },
        {
          "type": "FIELD",
          "name": "end",
          "content": {
            "type": "SYMBOL",
            "name": "expression"
          }
        },
        {
          "type": "STRING",
          "value": "]"
        }
      ]
    },
    "field_designator": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "."
        },
        {
          "type": "SYMBOL",
          "name": "_field_identifier"
        }
      ]
    },
    "number_literal": {
      "type": "TOKEN",
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "PATTERN",
                "value": "[-\\+]"
              },
              {
                "type": "BLANK"
              }
            ]
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "SEQ",
                "members": [
                  {
                    "type": "CHOICE",
                    "members": [
                      {
                        "type": "SEQ",
                        "members": [
                          {
                            "type": "CHOICE",
                            "members": [
                              {
                                "type": "STRING",
                                "value": "0b"
                              },
                              {
                                "type": "STRING",
                                "value": "0B"
                              }
                            ]
                          },
                          {
                            "type": "SEQ",
                            "members": [
                              {
                                "type": "REPEAT1",
                                "content": {
                                  "type": "PATTERN",
                                  "value": "[01]"
                                }
                              },
                              {
                                "type": "REPEAT",
                                "content": {
                                  "type": "SEQ",
                                  "members": [
                                    {
                                      "type": "STRING",
                                      "value": "'"
                                    },
                                    {
                                      "type": "REPEAT1",
                                      "content": {
                                        "type": "PATTERN",
                                        "value": "[01]"
                                      }
                                    }
                                  ]
                                }
                              }
                            ]
                          }
                        ]
                      },
                      {
                        "type": "SEQ",
                        "members": [
                          {
                            "type": "PATTERN",
                            "value": "[1-9]"
                          },
                          {
                            "type": "REPEAT",
                            "content": {
                              "type": "PATTERN",
                              "value": "[0-9]"
                            }
                          },
                          {
                            "type": "REPEAT",
                            "content": {
                              "type": "SEQ",
                              "members": [
                                {
                                  "type": "STRING",
                                  "value": "'"
                                },
                                {
                                  "type": "REPEAT1",
                                  "content": {
                                    "type": "PATTERN",
                                    "value": "[0-9]"
                                  }
                                }
                              ]
                            }
                          }
                        ]
                      },
                      {
                        "type": "SEQ",
                        "members": [
                          {
                            "type": "CHOICE",
                            "members": [
                              {
                                "type": "STRING",
                                "value": "0x"
                              },
                              {
                                "type": "STRING",
                                "value": "0X"
                              }
                            ]
                          },
                          {
                            "type": "SEQ",
                            "members": [
                              {
                                "type": "REPEAT1",
                                "content": {
                                  "type": "PATTERN",
                                  "value": "[0-9a-fA-F]"
                                }
                              },
                              {
                                "type": "REPEAT",
                                "content": {
                                  "type": "SEQ",
                                  "members": [
                                    {
                                      "type": "STRING",
                                      "value": "'"
                                    },
                                    {
                                      "type": "REPEAT1",
                                      "content": {
                                        "type": "PATTERN",
                                        "value": "[0-9a-fA-F]"
                                      }
                                    }
                                  ]
                                }
                              }
                            ]
                          }
                        ]
                      },
                      {
                        "type": "SEQ",
                        "members": [
                          {
                            "type": "STRING",
                            "value": "0"
                          },
                          {
                            "type": "REPEAT",
                            "content": {
                              "type": "PATTERN",
                              "value": "[0-7]"
                            }
                          },
                          {
                            "type": "REPEAT",
                            "content": {
                              "type": "SEQ",
                              "members": [
                                {
                                  "type": "STRING",
                                  "value": "'"
                                },
                                {
                                  "type": "REPEAT1",
                                  "content": {
                                    "type": "PATTERN",
                                    "value": "[0-7]"
                                  }
                                }
                              ]
                            }
                          }
                        ]
                      }
                    ]
                  },
                  {
                    "type": "CHOICE",
                    "members": [
                      {
                        "type": "PATTERN",
                        "value": "(ll|LL)[uU]?|[uU](ll|LL)?|[uU][lL]?|[uU][zZ]?|[lL][uU]?|[zZ][uU]?"
                      },
                      {
                        "type": "BLANK"
                      }
                    ]
                  }
                ]
              },
              {
                "type": "SEQ",
                "members": [
                  {
                    "type": "CHOICE",
                    "members": [
                      {
                        "type": "SEQ",
                        "members": [
                          {
                            "type": "SEQ",
                            "members": [
                              {
                                "type": "REPEAT1",
                                "content": {
                                  "type": "PATTERN",
                                  "value": "[0-9]"
                                }
                              },
                              {
                                "type": "REPEAT",
                                "content": {
                                  "type": "SEQ",
                                  "members": [
                                    {
                                      "type": "STRING",
                                      "value": "'"
                                    },
                                    {
                                      "type": "REPEAT1",
                                      "content": {
                                        "type": "PATTERN",
                                        "value": "[0-9]"
                                      }
                                    }
                                  ]
                                }
                              }
                            ]
                          },
                          {
                            "type": "SEQ",
                            "members": [
                              {
                                "type": "PATTERN",
                                "value": "[eE]"
                              },
                              {
                                "type": "CHOICE",
                                "members": [
                                  {
                                    "type": "PATTERN",
                                    "value": "[-\\+]"
                                  },
                                  {
                                    "type": "BLANK"
                                  }
                                ]
                              },
                              {
                                "type": "SEQ",
                                "members": [
                                  {
                                    "type": "REPEAT1",
                                    "content": {
                                      "type": "PATTERN",
                                      "value": "[0-9]"
                                    }
                                  },
                                  {
                                    "type": "REPEAT",
                                    "content": {
                                      "type": "SEQ",
                                      "members": [
                                        {
                                          "type": "STRING",
                                          "value": "'"
                                        },
                                        {
                                          "type": "REPEAT1",
                                          "content": {
                                            "type": "PATTERN",
                                            "value": "[0-9]"
                                          }
                                        }
                                      ]
                                    }
                                  }
                                ]
                              }
                            ]
                          }
                        ]
                      },
                      {
                        "type": "SEQ",
                        "members": [
                          {
                            "type": "SEQ",
                            "members": [
                              {
                                "type": "REPEAT1",
                                "content": {
                                  "type": "PATTERN",
                                  "value": "[0-9]"
                                }
                              },
                              {
                                "type": "REPEAT",
                                "content": {
                                  "type": "SEQ",
                                  "members": [
                                    {
                                      "type": "STRING",
                                      "value": "'"
                                    },
                                    {
                                      "type": "REPEAT1",
                                      "content": {
                                        "type": "PATTERN",
                                        "value": "[0-9]"
                                      }
                                    }
                                  ]
                                }
                              }
                            ]
                          },
                          {
                            "type": "STRING",
                            "value": "."
                          },
                          {
                            "type": "CHOICE",
                            "members": [
                              {
                                "type": "SEQ",
                                "members": [
                                  {
                                    "type": "REPEAT1",
                                    "content": {
                                      "type": "PATTERN",
                                      "value": "[0-9]"
                                    }
                                  },
                                  {
                                    "type": "REPEAT",
                                    "content": {
                                      "type": "SEQ",
                                      "members": [
                                        {
                                          "type": "STRING",
                                          "value": "'"
                                        },
                                        {
                                          "type": "REPEAT1",
                                          "content": {
                                            "type": "PATTERN",
                                            "value": "[0-9]"
                                          }
                                        }
                                      ]
                                    }
                                  }
                                ]
                              },
                              {
                                "type": "BLANK"
                              }
                            ]
                          },
                          {
                            "type": "CHOICE",
                            "members": [
                              {
                                "type": "SEQ",
                                "members": [
                                  {
                                    "type": "PATTERN",
                                    "value": "[eE]"
                                  },
                                  {
                                    "type": "CHOICE",
                                    "members": [
                                      {
                                        "type": "PATTERN",
                                        "value": "[-\\+]"
                                      },
                                      {
                                        "type": "BLANK"
                                      }
                                    ]
                                  },
                                  {
                                    "type": "SEQ",
                                    "members": [
                                      {
                                        "type": "REPEAT1",
                                        "content": {
                                          "type": "PATTERN",
                                          "value": "[0-9]"
                                        }
                                      },
                                      {
                                        "type": "REPEAT",
                                        "content": {
                                          "type": "SEQ",
                                          "members": [
                                            {
                                              "type": "STRING",
                                              "value": "'"
                                            },
                                            {
                                              "type": "REPEAT1",
                                              "content": {
                                                "type": "PATTERN",
                                                "value": "[0-9]"
                                              }
                                            }
                                          ]
                                        }
                                      }
                                    ]
                                  }
                                ]
                              },
                              {
                                "type": "BLANK"
                              }
                            ]
                          }
                        ]
                      },
                      {
                        "type": "SEQ",
                        "members": [
                          {
                            "type": "STRING",
                            "value": "."
                          },
                          {
                            "type": "SEQ",
                            "members": [
                              {
                                "type": "REPEAT1",
                                "content": {
                                  "type": "PATTERN",
                                  "value": "[0-9]"
                                }
                              },
                              {
                                "type": "REPEAT",
                                "content": {
                                  "type": "SEQ",
                                  "members": [
                                    {
                                      "type": "STRING",
                                      "value": "'"
                                    },
                                    {
                                      "type": "REPEAT1",
                                      "content": {
                                        "type": "PATTERN",
                                        "value": "[0-9]"
                                      }
                                    }
                                  ]
                                }
                              }
                            ]
                          },
                          {
                            "type": "CHOICE",
                            "members": [
                              {
                                "type": "SEQ",
                                "members": [
                                  {
                                    "type": "PATTERN",
                                    "value": "[eE]"
                                  },
                                  {
                                    "type": "CHOICE",
                                    "members": [
                                      {
                                        "type": "PATTERN",
                                        "value": "[-\\+]"
                                      },
                                      {
                                        "type": "BLANK"
                                      }
                                    ]
                                  },
                                  {
                                    "type": "SEQ",
                                    "members": [
                                      {
                                        "type": "REPEAT1",
                                        "content": {
                                          "type": "PATTERN",
                                          "value": "[0-9]"
                                        }
                                      },
                                      {
                                        "type": "REPEAT",
                                        "content": {
                                          "type": "SEQ",
                                          "members": [
                                            {
                                              "type": "STRING",
                                              "value": "'"
                                            },
                                            {
                                              "type": "REPEAT1",
                                              "content": {
                                                "type": "PATTERN",
                                                "value": "[0-9]"
                                              }
                                            }
                                          ]
                                        }
                                      }
                                    ]
                                  }
                                ]
                              },
                              {
                                "type": "BLANK"
                              }
                            ]
                          }
                        ]
                      },
                      {
                        "type": "SEQ",
                        "members": [
                          {
                            "type": "CHOICE",
                            "members": [
                              {
                                "type": "STRING",
                                "value": "0x"
                              },
                              {
                                "type": "STRING",
                                "value": "0X"
                              }
                            ]
                          },
                          {
                            "type": "CHOICE",
                            "members": [
                              {
                                "type": "SEQ",
                                "members": [
                                  {
                                    "type": "REPEAT1",
                                    "content": {
                                      "type": "PATTERN",
                                      "value": "[0-9a-fA-F]"
                                    }
                                  },
                                  {
                                    "type": "REPEAT",
                                    "content": {
                                      "type": "SEQ",
                                      "members": [
                                        {
                                          "type": "STRING",
                                          "value": "'"
                                        },
                                        {
                                          "type": "REPEAT1",
                                          "content": {
                                            "type": "PATTERN",
                                            "value": "[0-9a-fA-F]"
                                          }
                                        }
                                      ]
                                    }
                                  }
                                ]
                              },
                              {
                                "type": "SEQ",
                                "members": [
                                  {
                                    "type": "SEQ",
                                    "members": [
                                      {
                                        "type": "REPEAT1",
                                        "content": {
                                          "type": "PATTERN",
                                          "value": "[0-9a-fA-F]"
                                        }
                                      },
                                      {
                                        "type": "REPEAT",
                                        "content": {
                                          "type": "SEQ",
                                          "members": [
                                            {
                                              "type": "STRING",
                                              "value": "'"
                                            },
                                            {
                                              "type": "REPEAT1",
                                              "content": {
                                                "type": "PATTERN",
                                                "value": "[0-9a-fA-F]"
                                              }
                                            }
                                          ]
                                        }
                                      }
                                    ]
                                  },
                                  {
                                    "type": "STRING",
                                    "value": "."
                                  },
                                  {
                                    "type": "CHOICE",
                                    "members": [
                                      {
                                        "type": "SEQ",
                                        "members": [
                                          {
                                            "type": "REPEAT1",
                                            "content": {
                                              "type": "PATTERN",
                                              "value": "[0-9a-fA-F]"
                                            }
                                          },
                                          {
                                            "type": "REPEAT",
                                            "content": {
                                              "type": "SEQ",
                                              "members": [
                                                {
                                                  "type": "STRING",
                                                  "value": "'"
                                                },
                                                {
                                                  "type": "REPEAT1",
                                                  "content": {
                                                    "type": "PATTERN",
                                                    "value": "[0-9a-fA-F]"
                                                  }
                                                }
                                              ]
                                            }
                                          }
                                        ]
                                      },
                                      {
                                        "type": "BLANK"
                                      }
                                    ]
                                  }
                                ]
                              },
                              {
                                "type": "SEQ",
                                "members": [
                                  {
                                    "type": "STRING",
                                    "value": "."
                                  },
                                  {
                                    "type": "SEQ",
                                    "members": [
                                      {
                                        "type": "REPEAT1",
                                        "content": {
                                          "type": "PATTERN",
                                          "value": "[0-9a-fA-F]"
                                        }
                                      },
                                      {
                                        "type": "REPEAT",
                                        "content": {
                                          "type": "SEQ",
                                          "members": [
                                            {
                                              "type": "STRING",
                                              "value": "'"
                                            },
                                            {
                                              "type": "REPEAT1",
                                              "content": {
                                                "type": "PATTERN",
                                                "value": "[0-9a-fA-F]"
                                              }
                                            }
                                          ]
                                        }
                                      }
                                    ]
                                  }
                                ]
                              }
                            ]
                          },
                          {
                            "type": "SEQ",
                            "members": [
                              {
                                "type": "PATTERN",
                                "value": "[pP]"
                              },
                              {
                                "type": "CHOICE",
                                "members": [
                                  {
                                    "type": "PATTERN",
                                    "value": "[-\\+]"
                                  },
                                  {
                                    "type": "BLANK"
                                  }
                                ]
                              },
                              {
                                "type": "SEQ",
                                "members": [
                                  {
                                    "type": "REPEAT1",
                                    "content": {
                                      "type": "PATTERN",
                                      "value": "[0-9]"
                                    }
                                  },
                                  {
                                    "type": "REPEAT",
                                    "content": {
                                      "type": "SEQ",
                                      "members": [
                                        {
                                          "type": "STRING",
                                          "value": "'"
                                        },
                                        {
                                          "type": "REPEAT1",
                                          "content": {
                                            "type": "PATTERN",
                                            "value": "[0-9]"
                                          }
                                        }
                                      ]
                                    }
                                  }
                                ]
                              }
                            ]
                          }
                        ]
                      }
                    ]
                  },
                  {
                    "type": "CHOICE",
                    "members": [
                      {
                        "type": "PATTERN",
                        "value": "([fF](16|32|64|128)?)|[lL]|(bf16|BF16)"
                      },
                      {
                        "type": "BLANK"
                      }
                    ]
                  }
                ]
              }
            ]
          }
        ]
      }
    },
    "char_literal": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": "L'"
            },
            {
              "type": "STRING",
              "value": "u'"
            },
            {
              "type": "STRING",
              "value": "U'"
            },
            {
              "type": "STRING",
              "value": "u8'"
            },
            {
              "type": "STRING",
              "value": "'"
            }
          ]
        },
        {
          "type": "REPEAT1",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "escape_sequence"
              },
              {
                "type": "ALIAS",
                "content": {
                  "type": "IMMEDIATE_TOKEN",
                  "content": {
                    "type": "PATTERN",
                    "value": "[^\\n']"
                  }
                },
                "named": true,
                "value": "character"
              }
            ]
          }
        },
        {
          "type": "STRING",
          "value": "'"
        }
      ]
    },
    "concatenated_string": {
      "type": "PREC_RIGHT",
      "value": 0,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "identifier"
              },
              {
                "type": "SYMBOL",
                "name": "string_literal"
              },
              {
                "type": "SYMBOL",
                "name": "raw_string_literal"
              }
            ]
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "string_literal"
              },
              {
                "type": "SYMBOL",
                "name": "raw_string_literal"
              }
            ]
          },
          {
            "type": "REPEAT",
            "content": {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "identifier"
                },
                {
                  "type": "SYMBOL",
                  "name": "string_literal"
                },
                {
                  "type": "SYMBOL",
                  "name": "raw_string_literal"
                }
              ]
            }
          }
        ]
      }
    },
    "string_literal": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": "L\""
            },
            {
              "type": "STRING",
              "value": "u\""
            },
            {
              "type": "STRING",
              "value": "U\""
            },
            {
              "type": "STRING",
              "value": "u8\""
            },
            {
              "type": "STRING",
              "value": "\""
            }
          ]
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "ALIAS",
                "content": {
                  "type": "IMMEDIATE_TOKEN",
                  "content": {
                    "type": "PREC",
                    "value": 1,
                    "content": {
                      "type": "PATTERN",
                      "value": "[^\\\\\"\\n]+"
                    }
                  }
                },
                "named": true,
                "value": "string_content"
              },
              {
                "type": "SYMBOL",
                "name": "escape_sequence"
              }
            ]
          }
        },
        {
          "type": "STRING",
          "value": "\""
        }
      ]
    },
    "escape_sequence": {
      "type": "TOKEN",
      "content": {
        "type": "PREC",
        "value": 1,
        "content": {
          "type": "SEQ",
          "members": [
            {
              "type": "STRING",
              "value": "\\"
            },
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "PATTERN",
                  "value": "[^xuU]"
                },
                {
                  "type": "PATTERN",
                  "value": "\\d{2,3}"
                },
                {
                  "type": "PATTERN",
                  "value": "x[0-9a-fA-F]{1,4}"
                },
                {
                  "type": "PATTERN",
                  "value": "u[0-9a-fA-F]{4}"
                },
                {
                  "type": "PATTERN",
                  "value": "U[0-9a-fA-F]{8}"
                }
              ]
            }
          ]
        }
      }
    },
    "system_lib_string": {
      "type": "TOKEN",
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "STRING",
            "value": "<"
          },
          {
            "type": "REPEAT",
            "content": {
              "type": "CHOICE",
              "members": [
                {
                  "type": "PATTERN",
                  "value": "[^>\\n]"
                },
                {
                  "type": "STRING",
                  "value": "\\>"
                }
              ]
            }
          },
          {
            "type": "STRING",
            "value": ">"
          }
        ]
      }
    },
    "true": {
      "type": "TOKEN",
      "content": {
        "type": "CHOICE",
        "members": [
          {
            "type": "STRING",
            "value": "TRUE"
          },
          {
            "type": "STRING",
            "value": "true"
          }
        ]
      }
    },
    "false": {
      "type": "TOKEN",
      "content": {
        "type": "CHOICE",
        "members": [
          {
            "type": "STRING",
            "value": "FALSE"
          },
          {
            "type": "STRING",
            "value": "false"
          }
        ]
      }
    },
    "null": {
      "type": "CHOICE",
      "members": [
        {
          "type": "STRING",
          "value": "NULL"
        },
        {
          "type": "STRING",
          "value": "nullptr"
        }
      ]
    },
    "identifier": {
      "type": "PATTERN",
      "value": "(\\p{XID_Start}|\\$|_|\\\\u[0-9A-Fa-f]{4}|\\\\U[0-9A-Fa-f]{8})(\\p{XID_Continue}|\\$|\\\\u[0-9A-Fa-f]{4}|\\\\U[0-9A-Fa-f]{8})*"
    },
    "_type_identifier": {
      "type": "ALIAS",
      "content": {
        "type": "SYMBOL",
        "name": "identifier"
      },
      "named": true,
      "value": "type_identifier"
    },
    "_field_identifier": {
      "type": "ALIAS",
      "content": {
        "type": "SYMBOL",
        "name": "identifier"
      },
      "named": true,
      "value": "field_identifier"
    },
    "_statement_identifier": {
      "type": "ALIAS",
      "content": {
        "type": "SYMBOL",
        "name": "identifier"
      },
      "named": true,
      "value": "statement_identifier"
    },
    "_empty_declaration": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "type_specifier"
        },
        {
          "type": "STRING",
          "value": ";"
        }
      ]
    },
    "macro_type_specifier": {
      "type": "PREC_DYNAMIC",
      "value": -1,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "FIELD",
            "name": "name",
            "content": {
              "type": "SYMBOL",
              "name": "identifier"
            }
          },
          {
            "type": "STRING",
            "value": "("
          },
          {
            "type": "FIELD",
            "name": "type",
            "content": {
              "type": "SYMBOL",
              "name": "type_descriptor"
            }
          },
          {
            "type": "STRING",
            "value": ")"
          }
        ]
      }
    },
    "comment": {
      "type": "TOKEN",
      "content": {
        "type": "CHOICE",
        "members": [
          {
            "type": "SEQ",
            "members": [
              {
                "type": "STRING",
                "value": "//"
              },
              {
                "type": "PATTERN",
                "value": "(\\\\+(.|\\r?\\n)|[^\\\\\\n])*"
              }
            ]
          },
          {
            "type": "SEQ",
            "members": [
              {
                "type": "STRING",
                "value": "/*"
              },
              {
                "type": "PATTERN",
                "value": "[^*]*\\*+([^/*][^*]*\\*+)*"
              },
              {
                "type": "STRING",
                "value": "/"
              }
            ]
          }
        ]
      }
    },
    "placeholder_type_specifier": {
      "type": "PREC",
      "value": 1,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "FIELD",
            "name": "constraint",
            "content": {
              "type": "CHOICE",
              "members": [
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "ALIAS",
                      "content": {
                        "type": "SYMBOL",
                        "name": "qualified_type_identifier"
                      },
                      "named": true,
                      "value": "qualified_identifier"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "template_type"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "_type_identifier"
                    }
                  ]
                },
                {
                  "type": "BLANK"
                }
              ]
            }
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "auto"
              },
              {
                "type": "ALIAS",
                "content": {
                  "type": "SYMBOL",
                  "name": "decltype_auto"
                },
                "named": true,
                "value": "decltype"
              }
            ]
          }
        ]
      }
    },
    "auto": {
      "type": "STRING",
      "value": "auto"
    },
    "decltype_auto": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "decltype"
        },
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "SYMBOL",
          "name": "auto"
        },
        {
          "type": "STRING",
          "value": ")"
        }
      ]
    },
    "decltype": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "decltype"
        },
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "SYMBOL",
          "name": "expression"
        },
        {
          "type": "STRING",
          "value": ")"
        }
      ]
    },
    "annotation": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "="
        },
        {
          "type": "SYMBOL",
          "name": "expression"
        }
      ]
    },
    "_class_declaration": {
      "type": "SEQ",
      "members": [
        {
          "type": "REPEAT",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "attribute_specifier"
              },
              {
                "type": "SYMBOL",
                "name": "alignas_qualifier"
              }
            ]
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "ms_declspec_modifier"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "attribute_declaration"
          }
        },
        {
          "type": "SYMBOL",
          "name": "_class_declaration_item"
        }
      ]
    },
    "_class_declaration_item": {
      "type": "PREC_RIGHT",
      "value": 0,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "FIELD",
                "name": "name",
                "content": {
                  "type": "SYMBOL",
                  "name": "_class_name"
                }
              },
              {
                "type": "SEQ",
                "members": [
                  {
                    "type": "CHOICE",
                    "members": [
                      {
                        "type": "FIELD",
                        "name": "name",
                        "content": {
                          "type": "SYMBOL",
                          "name": "_class_name"
                        }
                      },
                      {
                        "type": "BLANK"
                      }
                    ]
                  },
                  {
                    "type": "CHOICE",
                    "members": [
                      {
                        "type": "SYMBOL",
                        "name": "virtual_specifier"
                      },
                      {
                        "type": "BLANK"
                      }
                    ]
                  },
                  {
                    "type": "CHOICE",
                    "members": [
                      {
                        "type": "SYMBOL",
                        "name": "base_class_clause"
                      },
                      {
                        "type": "BLANK"
                      }
                    ]
                  },
                  {
                    "type": "FIELD",
                    "name": "body",
                    "content": {
                      "type": "SYMBOL",
                      "name": "field_declaration_list"
                    }
                  }
                ]
              }
            ]
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "attribute_specifier"
              },
              {
                "type": "BLANK"
              }
            ]
          }
        ]
      }
    },
    "class_specifier": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "class"
        },
        {
          "type": "SYMBOL",
          "name": "_class_declaration"
        }
      ]
    },
    "_class_name": {
      "type": "PREC_RIGHT",
      "value": 0,
      "content": {
        "type": "CHOICE",
        "members": [
          {
            "type": "SYMBOL",
            "name": "_type_identifier"
          },
          {
            "type": "SYMBOL",
            "name": "template_type"
          },
          {
            "type": "SYMBOL",
            "name": "splice_type_specifier"
          },
          {
            "type": "ALIAS",
            "content": {
              "type": "SYMBOL",
              "name": "qualified_type_identifier"
            },
            "named": true,
            "value": "qualified_identifier"
          }
        ]
      }
    },
    "virtual_specifier": {
      "type": "CHOICE",
      "members": [
        {
          "type": "STRING",
          "value": "final"
        },
        {
          "type": "STRING",
          "value": "override"
        }
      ]
    },
    "explicit_function_specifier": {
      "type": "CHOICE",
      "members": [
        {
          "type": "STRING",
          "value": "explicit"
        },
        {
          "type": "PREC",
          "value": 15,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "STRING",
                "value": "explicit"
              },
              {
                "type": "STRING",
                "value": "("
              },
              {
                "type": "SYMBOL",
                "name": "expression"
              },
              {
                "type": "STRING",
                "value": ")"
              }
            ]
          }
        }
      ]
    },
    "base_class_clause": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": ":"
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "REPEAT",
                  "content": {
                    "type": "SYMBOL",
                    "name": "attribute_declaration"
                  }
                },
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "CHOICE",
                      "members": [
                        {
                          "type": "SYMBOL",
                          "name": "access_specifier"
                        },
                        {
                          "type": "SEQ",
                          "members": [
                            {
                              "type": "SYMBOL",
                              "name": "access_specifier"
                            },
                            {
                              "type": "CHOICE",
                              "members": [
                                {
                                  "type": "STRING",
                                  "value": "virtual"
                                },
                                {
                                  "type": "BLANK"
                                }
                              ]
                            }
                          ]
                        },
                        {
                          "type": "SEQ",
                          "members": [
                            {
                              "type": "STRING",
                              "value": "virtual"
                            },
                            {
                              "type": "CHOICE",
                              "members": [
                                {
                                  "type": "SYMBOL",
                                  "name": "access_specifier"
                                },
                                {
                                  "type": "BLANK"
                                }
                              ]
                            }
                          ]
                        }
                      ]
                    },
                    {
                      "type": "BLANK"
                    }
                  ]
                },
                {
                  "type": "SYMBOL",
                  "name": "_class_name"
                },
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "STRING",
                      "value": "..."
                    },
                    {
                      "type": "BLANK"
                    }
                  ]
                }
              ]
            },
            {
              "type": "REPEAT",
              "content": {
                "type": "SEQ",
                "members": [
                  {
                    "type": "STRING",
                    "value": ","
                  },
                  {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "REPEAT",
                        "content": {
                          "type": "SYMBOL",
                          "name": "attribute_declaration"
                        }
                      },
                      {
                        "type": "CHOICE",
                        "members": [
                          {
                            "type": "CHOICE",
                            "members": [
                              {
                                "type": "SYMBOL",
                                "name": "access_specifier"
                              },
                              {
                                "type": "SEQ",
                                "members": [
                                  {
                                    "type": "SYMBOL",
                                    "name": "access_specifier"
                                  },
                                  {
                                    "type": "CHOICE",
                                    "members": [
                                      {
                                        "type": "STRING",
                                        "value": "virtual"
                                      },
                                      {
                                        "type": "BLANK"
                                      }
                                    ]
                                  }
                                ]
                              },
                              {
                                "type": "SEQ",
                                "members": [
                                  {
                                    "type": "STRING",
                                    "value": "virtual"
                                  },
                                  {
                                    "type": "CHOICE",
                                    "members": [
                                      {
                                        "type": "SYMBOL",
                                        "name": "access_specifier"
                                      },
                                      {
                                        "type": "BLANK"
                                      }
                                    ]
                                  }
                                ]
                              }
                            ]
                          },
                          {
                            "type": "BLANK"
                          }
                        ]
                      },
                      {
                        "type": "SYMBOL",
                        "name": "_class_name"
                      },
                      {
                        "type": "CHOICE",
                        "members": [
                          {
                            "type": "STRING",
                            "value": "..."
                          },
                          {
                            "type": "BLANK"
                          }
                        ]
                      }
                    ]
                  }
                ]
              }
            }
          ]
        }
      ]
    },
    "_enum_base_clause": {
      "type": "PREC_LEFT",
      "value": 0,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "STRING",
            "value": ":"
          },
          {
            "type": "FIELD",
            "name": "base",
            "content": {
              "type": "CHOICE",
              "members": [
                {
                  "type": "ALIAS",
                  "content": {
                    "type": "SYMBOL",
                    "name": "qualified_type_identifier"
                  },
                  "named": true,
                  "value": "qualified_identifier"
                },
                {
                  "type": "SYMBOL",
                  "name": "_type_identifier"
                },
                {
                  "type": "SYMBOL",
                  "name": "primitive_type"
                },
                {
                  "type": "SYMBOL",
                  "name": "sized_type_specifier"
                }
              ]
            }
          }
        ]
      }
    },
    "dependent_type": {
      "type": "PREC_DYNAMIC",
      "value": -1,
      "content": {
        "type": "PREC_RIGHT",
        "value": 0,
        "content": {
          "type": "SEQ",
          "members": [
            {
              "type": "STRING",
              "value": "typename"
            },
            {
              "type": "SYMBOL",
              "name": "type_specifier"
            }
          ]
        }
      }
    },
    "module_name": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "identifier"
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "STRING",
                "value": "."
              },
              {
                "type": "SYMBOL",
                "name": "identifier"
              }
            ]
          }
        }
      ]
    },
    "module_partition": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": ":"
        },
        {
          "type": "SYMBOL",
          "name": "module_name"
        }
      ]
    },
    "module_declaration": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": "export"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "module"
        },
        {
          "type": "FIELD",
          "name": "name",
          "content": {
            "type": "SYMBOL",
            "name": "module_name"
          }
        },
        {
          "type": "FIELD",
          "name": "partition",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "module_partition"
              },
              {
                "type": "BLANK"
              }
            ]
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "attribute_declaration"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": ";"
        }
      ]
    },
    "export_declaration": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "export"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_block_item"
            },
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "STRING",
                  "value": "{"
                },
                {
                  "type": "REPEAT",
                  "content": {
                    "type": "SYMBOL",
                    "name": "_block_item"
                  }
                },
                {
                  "type": "STRING",
                  "value": "}"
                }
              ]
            }
          ]
        }
      ]
    },
    "import_declaration": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": "export"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "import"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "FIELD",
              "name": "name",
              "content": {
                "type": "SYMBOL",
                "name": "module_name"
              }
            },
            {
              "type": "FIELD",
              "name": "partition",
              "content": {
                "type": "SYMBOL",
                "name": "module_partition"
              }
            },
            {
              "type": "FIELD",
              "name": "header",
              "content": {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "SYMBOL",
                    "name": "string_literal"
                  },
                  {
                    "type": "SYMBOL",
                    "name": "system_lib_string"
                  }
                ]
              }
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "attribute_declaration"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": ";"
        }
      ]
    },
    "global_module_fragment_declaration": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "module"
        },
        {
          "type": "STRING",
          "value": ";"
        }
      ]
    },
    "private_module_fragment_declaration": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "module"
        },
        {
          "type": "STRING",
          "value": ":"
        },
        {
          "type": "STRING",
          "value": "private"
        },
        {
          "type": "STRING",
          "value": ";"
        }
      ]
    },
    "template_declaration": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "template"
        },
        {
          "type": "FIELD",
          "name": "parameters",
          "content": {
            "type": "SYMBOL",
            "name": "template_parameter_list"
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "requires_clause"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_empty_declaration"
            },
            {
              "type": "SYMBOL",
              "name": "alias_declaration"
            },
            {
              "type": "SYMBOL",
              "name": "declaration"
            },
            {
              "type": "SYMBOL",
              "name": "template_declaration"
            },
            {
              "type": "SYMBOL",
              "name": "function_definition"
            },
            {
              "type": "SYMBOL",
              "name": "concept_definition"
            },
            {
              "type": "SYMBOL",
              "name": "friend_declaration"
            },
            {
              "type": "ALIAS",
              "content": {
                "type": "SYMBOL",
                "name": "constructor_or_destructor_declaration"
              },
              "named": true,
              "value": "declaration"
            },
            {
              "type": "ALIAS",
              "content": {
                "type": "SYMBOL",
                "name": "constructor_or_destructor_definition"
              },
              "named": true,
              "value": "function_definition"
            },
            {
              "type": "ALIAS",
              "content": {
                "type": "SYMBOL",
                "name": "operator_cast_declaration"
              },
              "named": true,
              "value": "declaration"
            },
            {
              "type": "ALIAS",
              "content": {
                "type": "SYMBOL",
                "name": "operator_cast_definition"
              },
              "named": true,
              "value": "function_definition"
            }
          ]
        }
      ]
    },
    "template_instantiation": {
      "type": "PREC",
      "value": 1,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "STRING",
                "value": "extern"
              },
              {
                "type": "BLANK"
              }
            ]
          },
          {
            "type": "STRING",
            "value": "template"
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "_declaration_specifiers"
              },
              {
                "type": "BLANK"
              }
            ]
          },
          {
            "type": "FIELD",
            "name": "declarator",
            "content": {
              "type": "SYMBOL",
              "name": "_declarator"
            }
          },
          {
            "type": "STRING",
            "value": ";"
          }
        ]
      }
    },
    "template_parameter_list": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "<"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "SYMBOL",
                      "name": "parameter_declaration"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "optional_parameter_declaration"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "type_parameter_declaration"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "variadic_parameter_declaration"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "variadic_type_parameter_declaration"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "optional_type_parameter_declaration"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "template_template_parameter_declaration"
                    }
                  ]
                },
                {
                  "type": "REPEAT",
                  "content": {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "STRING",
                        "value": ","
                      },
                      {
                        "type": "CHOICE",
                        "members": [
                          {
                            "type": "SYMBOL",
                            "name": "parameter_declaration"
                          },
                          {
                            "type": "SYMBOL",
                            "name": "optional_parameter_declaration"
                          },
                          {
                            "type": "SYMBOL",
                            "name": "type_parameter_declaration"
                          },
                          {
                            "type": "SYMBOL",
                            "name": "variadic_parameter_declaration"
                          },
                          {
                            "type": "SYMBOL",
                            "name": "variadic_type_parameter_declaration"
                          },
                          {
                            "type": "SYMBOL",
                            "name": "optional_type_parameter_declaration"
                          },
                          {
                            "type": "SYMBOL",
                            "name": "template_template_parameter_declaration"
                          }
                        ]
                      }
                    ]
                  }
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "TOKEN",
            "content": {
              "type": "PREC",
              "value": 1,
              "content": {
                "type": "STRING",
                "value": ">"
              }
            }
          },
          "named": false,
          "value": ">"
        }
      ]
    },
    "type_parameter_declaration": {
      "type": "PREC",
      "value": 1,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "STRING",
                "value": "typename"
              },
              {
                "type": "STRING",
                "value": "class"
              }
            ]
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "_type_identifier"
              },
              {
                "type": "BLANK"
              }
            ]
          }
        ]
      }
    },
    "variadic_type_parameter_declaration": {
      "type": "PREC",
      "value": 1,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "STRING",
                "value": "typename"
              },
              {
                "type": "STRING",
                "value": "class"
              }
            ]
          },
          {
            "type": "STRING",
            "value": "..."
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "_type_identifier"
              },
              {
                "type": "BLANK"
              }
            ]
          }
        ]
      }
    },
    "optional_type_parameter_declaration": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": "typename"
            },
            {
              "type": "STRING",
              "value": "class"
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "FIELD",
              "name": "name",
              "content": {
                "type": "SYMBOL",
                "name": "_type_identifier"
              }
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "="
        },
        {
          "type": "FIELD",
          "name": "default_type",
          "content": {
            "type": "SYMBOL",
            "name": "type_specifier"
          }
        }
      ]
    },
    "template_template_parameter_declaration": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "template"
        },
        {
          "type": "FIELD",
          "name": "parameters",
          "content": {
            "type": "SYMBOL",
            "name": "template_parameter_list"
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "type_parameter_declaration"
            },
            {
              "type": "SYMBOL",
              "name": "variadic_type_parameter_declaration"
            },
            {
              "type": "SYMBOL",
              "name": "optional_type_parameter_declaration"
            }
          ]
        }
      ]
    },
    "explicit_object_parameter_declaration": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "this"
        },
        {
          "type": "SYMBOL",
          "name": "parameter_declaration"
        }
      ]
    },
    "optional_parameter_declaration": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "_declaration_specifiers"
        },
        {
          "type": "FIELD",
          "name": "declarator",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "SYMBOL",
                    "name": "_declarator"
                  },
                  {
                    "type": "SYMBOL",
                    "name": "abstract_reference_declarator"
                  }
                ]
              },
              {
                "type": "BLANK"
              }
            ]
          }
        },
        {
          "type": "STRING",
          "value": "="
        },
        {
          "type": "FIELD",
          "name": "default_value",
          "content": {
            "type": "SYMBOL",
            "name": "expression"
          }
        }
      ]
    },
    "variadic_parameter_declaration": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "_declaration_specifiers"
        },
        {
          "type": "FIELD",
          "name": "declarator",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "variadic_declarator"
              },
              {
                "type": "ALIAS",
                "content": {
                  "type": "SYMBOL",
                  "name": "variadic_reference_declarator"
                },
                "named": true,
                "value": "reference_declarator"
              }
            ]
          }
        }
      ]
    },
    "variadic_declarator": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "..."
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "identifier"
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "variadic_reference_declarator": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": "&&"
            },
            {
              "type": "STRING",
              "value": "&"
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "variadic_declarator"
        }
      ]
    },
    "operator_cast": {
      "type": "PREC_RIGHT",
      "value": 1,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "STRING",
            "value": "operator"
          },
          {
            "type": "SYMBOL",
            "name": "_declaration_specifiers"
          },
          {
            "type": "FIELD",
            "name": "declarator",
            "content": {
              "type": "SYMBOL",
              "name": "_abstract_declarator"
            }
          }
        ]
      }
    },
    "field_initializer_list": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": ":"
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "SYMBOL",
              "name": "field_initializer"
            },
            {
              "type": "REPEAT",
              "content": {
                "type": "SEQ",
                "members": [
                  {
                    "type": "STRING",
                    "value": ","
                  },
                  {
                    "type": "SYMBOL",
                    "name": "field_initializer"
                  }
                ]
              }
            }
          ]
        }
      ]
    },
    "field_initializer": {
      "type": "PREC",
      "value": 1,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "_field_identifier"
              },
              {
                "type": "SYMBOL",
                "name": "template_method"
              },
              {
                "type": "ALIAS",
                "content": {
                  "type": "SYMBOL",
                  "name": "qualified_field_identifier"
                },
                "named": true,
                "value": "qualified_identifier"
              }
            ]
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "initializer_list"
              },
              {
                "type": "SYMBOL",
                "name": "argument_list"
              }
            ]
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "STRING",
                "value": "..."
              },
              {
                "type": "BLANK"
              }
            ]
          }
        ]
      }
    },
    "inline_method_definition": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "_declaration_specifiers"
        },
        {
          "type": "FIELD",
          "name": "declarator",
          "content": {
            "type": "SYMBOL",
            "name": "_field_declarator"
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "FIELD",
              "name": "body",
              "content": {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "SYMBOL",
                    "name": "compound_statement"
                  },
                  {
                    "type": "SYMBOL",
                    "name": "try_statement"
                  }
                ]
              }
            },
            {
              "type": "SYMBOL",
              "name": "default_method_clause"
            },
            {
              "type": "SYMBOL",
              "name": "delete_method_clause"
            },
            {
              "type": "SYMBOL",
              "name": "pure_virtual_clause"
            }
          ]
        }
      ]
    },
    "_constructor_specifiers": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "_declaration_modifiers"
        },
        {
          "type": "SYMBOL",
          "name": "explicit_function_specifier"
        }
      ]
    },
    "operator_cast_definition": {
      "type": "SEQ",
      "members": [
        {
          "type": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "_constructor_specifiers"
          }
        },
        {
          "type": "FIELD",
          "name": "declarator",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "operator_cast"
              },
              {
                "type": "ALIAS",
                "content": {
                  "type": "SYMBOL",
                  "name": "qualified_operator_cast_identifier"
                },
                "named": true,
                "value": "qualified_identifier"
              }
            ]
          }
        },
        {
          "type": "FIELD",
          "name": "body",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "compound_statement"
              },
              {
                "type": "SYMBOL",
                "name": "try_statement"
              }
            ]
          }
        }
      ]
    },
    "operator_cast_declaration": {
      "type": "PREC",
      "value": 1,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "REPEAT",
            "content": {
              "type": "SYMBOL",
              "name": "_constructor_specifiers"
            }
          },
          {
            "type": "FIELD",
            "name": "declarator",
            "content": {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "operator_cast"
                },
                {
                  "type": "ALIAS",
                  "content": {
                    "type": "SYMBOL",
                    "name": "qualified_operator_cast_identifier"
                  },
                  "named": true,
                  "value": "qualified_identifier"
                }
              ]
            }
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "SEQ",
                "members": [
                  {
                    "type": "STRING",
                    "value": "="
                  },
                  {
                    "type": "FIELD",
                    "name": "default_value",
                    "content": {
                      "type": "SYMBOL",
                      "name": "expression"
                    }
                  }
                ]
              },
              {
                "type": "BLANK"
              }
            ]
          },
          {
            "type": "STRING",
            "value": ";"
          }
        ]
      }
    },
    "constructor_try_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "try"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "field_initializer_list"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "FIELD",
          "name": "body",
          "content": {
            "type": "SYMBOL",
            "name": "compound_statement"
          }
        },
        {
          "type": "REPEAT1",
          "content": {
            "type": "SYMBOL",
            "name": "catch_clause"
          }
        }
      ]
    },
    "constructor_or_destructor_definition": {
      "type": "SEQ",
      "members": [
        {
          "type": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "_constructor_specifiers"
          }
        },
        {
          "type": "FIELD",
          "name": "declarator",
          "content": {
            "type": "SYMBOL",
            "name": "function_declarator"
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "SYMBOL",
                      "name": "field_initializer_list"
                    },
                    {
                      "type": "BLANK"
                    }
                  ]
                },
                {
                  "type": "FIELD",
                  "name": "body",
                  "content": {
                    "type": "SYMBOL",
                    "name": "compound_statement"
                  }
                }
              ]
            },
            {
              "type": "ALIAS",
              "content": {
                "type": "SYMBOL",
                "name": "constructor_try_statement"
              },
              "named": true,
              "value": "try_statement"
            },
            {
              "type": "SYMBOL",
              "name": "default_method_clause"
            },
            {
              "type": "SYMBOL",
              "name": "delete_method_clause"
            },
            {
              "type": "SYMBOL",
              "name": "pure_virtual_clause"
            }
          ]
        }
      ]
    },
    "constructor_or_destructor_declaration": {
      "type": "SEQ",
      "members": [
        {
          "type": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "_constructor_specifiers"
          }
        },
        {
          "type": "FIELD",
          "name": "declarator",
          "content": {
            "type": "SYMBOL",
            "name": "function_declarator"
          }
        },
        {
          "type": "STRING",
          "value": ";"
        }
      ]
    },
    "default_method_clause": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "="
        },
        {
          "type": "STRING",
          "value": "default"
        },
        {
          "type": "STRING",
          "value": ";"
        }
      ]
    },
    "delete_method_clause": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "="
        },
        {
          "type": "STRING",
          "value": "delete"
        },
        {
          "type": "STRING",
          "value": ";"
        }
      ]
    },
    "pure_virtual_clause": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "="
        },
        {
          "type": "PATTERN",
          "value": "0"
        },
        {
          "type": "STRING",
          "value": ";"
        }
      ]
    },
    "friend_declaration": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": "constexpr"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "friend"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "declaration"
            },
            {
              "type": "SYMBOL",
              "name": "function_definition"
            },
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "CHOICE",
                      "members": [
                        {
                          "type": "STRING",
                          "value": "class"
                        },
                        {
                          "type": "STRING",
                          "value": "struct"
                        },
                        {
                          "type": "STRING",
                          "value": "union"
                        }
                      ]
                    },
                    {
                      "type": "BLANK"
                    }
                  ]
                },
                {
                  "type": "SYMBOL",
                  "name": "_class_name"
                },
                {
                  "type": "STRING",
                  "value": ";"
                }
              ]
            }
          ]
        }
      ]
    },
    "access_specifier": {
      "type": "CHOICE",
      "members": [
        {
          "type": "STRING",
          "value": "public"
        },
        {
          "type": "STRING",
          "value": "private"
        },
        {
          "type": "STRING",
          "value": "protected"
        }
      ]
    },
    "reference_declarator": {
      "type": "PREC_DYNAMIC",
      "value": 1,
      "content": {
        "type": "PREC_RIGHT",
        "value": 0,
        "content": {
          "type": "SEQ",
          "members": [
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "STRING",
                  "value": "&"
                },
                {
                  "type": "STRING",
                  "value": "&&"
                }
              ]
            },
            {
              "type": "SYMBOL",
              "name": "_declarator"
            }
          ]
        }
      }
    },
    "reference_field_declarator": {
      "type": "PREC_DYNAMIC",
      "value": 1,
      "content": {
        "type": "PREC_RIGHT",
        "value": 0,
        "content": {
          "type": "SEQ",
          "members": [
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "STRING",
                  "value": "&"
                },
                {
                  "type": "STRING",
                  "value": "&&"
                }
              ]
            },
            {
              "type": "SYMBOL",
              "name": "_field_declarator"
            }
          ]
        }
      }
    },
    "reference_type_declarator": {
      "type": "PREC_DYNAMIC",
      "value": 1,
      "content": {
        "type": "PREC_RIGHT",
        "value": 0,
        "content": {
          "type": "SEQ",
          "members": [
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "STRING",
                  "value": "&"
                },
                {
                  "type": "STRING",
                  "value": "&&"
                }
              ]
            },
            {
              "type": "SYMBOL",
              "name": "_type_declarator"
            }
          ]
        }
      }
    },
    "abstract_reference_declarator": {
      "type": "PREC_RIGHT",
      "value": 0,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "STRING",
                "value": "&"
              },
              {
                "type": "STRING",
                "value": "&&"
              }
            ]
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "_abstract_declarator"
              },
              {
                "type": "BLANK"
              }
            ]
          }
        ]
      }
    },
    "structured_binding_declarator": {
      "type": "PREC_DYNAMIC",
      "value": -1,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "STRING",
            "value": "["
          },
          {
            "type": "SEQ",
            "members": [
              {
                "type": "SYMBOL",
                "name": "identifier"
              },
              {
                "type": "REPEAT",
                "content": {
                  "type": "SEQ",
                  "members": [
                    {
                      "type": "STRING",
                      "value": ","
                    },
                    {
                      "type": "SYMBOL",
                      "name": "identifier"
                    }
                  ]
                }
              }
            ]
          },
          {
            "type": "STRING",
            "value": "]"
          }
        ]
      }
    },
    "ref_qualifier": {
      "type": "CHOICE",
      "members": [
        {
          "type": "STRING",
          "value": "&"
        },
        {
          "type": "STRING",
          "value": "&&"
        }
      ]
    },
    "_function_declarator_seq": {
      "type": "SEQ",
      "members": [
        {
          "type": "FIELD",
          "name": "parameters",
          "content": {
            "type": "SYMBOL",
            "name": "parameter_list"
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_function_attributes_start"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "ref_qualifier"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_function_exception_specification"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_function_attributes_end"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "trailing_return_type"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_function_postfix"
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "_function_attributes_start": {
      "type": "PREC",
      "value": 1,
      "content": {
        "type": "CHOICE",
        "members": [
          {
            "type": "SEQ",
            "members": [
              {
                "type": "REPEAT1",
                "content": {
                  "type": "SYMBOL",
                  "name": "attribute_specifier"
                }
              },
              {
                "type": "REPEAT",
                "content": {
                  "type": "SYMBOL",
                  "name": "type_qualifier"
                }
              }
            ]
          },
          {
            "type": "SEQ",
            "members": [
              {
                "type": "REPEAT",
                "content": {
                  "type": "SYMBOL",
                  "name": "attribute_specifier"
                }
              },
              {
                "type": "REPEAT1",
                "content": {
                  "type": "SYMBOL",
                  "name": "type_qualifier"
                }
              }
            ]
          }
        ]
      }
    },
    "_function_exception_specification": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "noexcept"
        },
        {
          "type": "SYMBOL",
          "name": "throw_specifier"
        }
      ]
    },
    "_function_attributes_end": {
      "type": "PREC_RIGHT",
      "value": 0,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "gnu_asm_expression"
              },
              {
                "type": "BLANK"
              }
            ]
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "SEQ",
                "members": [
                  {
                    "type": "REPEAT1",
                    "content": {
                      "type": "SYMBOL",
                      "name": "attribute_specifier"
                    }
                  },
                  {
                    "type": "REPEAT",
                    "content": {
                      "type": "SYMBOL",
                      "name": "attribute_declaration"
                    }
                  }
                ]
              },
              {
                "type": "SEQ",
                "members": [
                  {
                    "type": "REPEAT",
                    "content": {
                      "type": "SYMBOL",
                      "name": "attribute_specifier"
                    }
                  },
                  {
                    "type": "REPEAT1",
                    "content": {
                      "type": "SYMBOL",
                      "name": "attribute_declaration"
                    }
                  }
                ]
              }
            ]
          }
        ]
      }
    },
    "_function_postfix": {
      "type": "PREC_RIGHT",
      "value": 0,
      "content": {
        "type": "CHOICE",
        "members": [
          {
            "type": "REPEAT1",
            "content": {
              "type": "SYMBOL",
              "name": "virtual_specifier"
            }
          },
          {
            "type": "SYMBOL",
            "name": "requires_clause"
          }
        ]
      }
    },
    "trailing_return_type": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "->"
        },
        {
          "type": "SYMBOL",
          "name": "type_descriptor"
        }
      ]
    },
    "noexcept": {
      "type": "PREC_RIGHT",
      "value": 0,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "STRING",
            "value": "noexcept"
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "SEQ",
                "members": [
                  {
                    "type": "STRING",
                    "value": "("
                  },
                  {
                    "type": "CHOICE",
                    "members": [
                      {
                        "type": "SYMBOL",
                        "name": "expression"
                      },
                      {
                        "type": "BLANK"
                      }
                    ]
                  },
                  {
                    "type": "STRING",
                    "value": ")"
                  }
                ]
              },
              {
                "type": "BLANK"
              }
            ]
          }
        ]
      }
    },
    "throw_specifier": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "throw"
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "STRING",
              "value": "("
            },
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SEQ",
                  "members": [
                    {
                      "type": "SYMBOL",
                      "name": "type_descriptor"
                    },
                    {
                      "type": "REPEAT",
                      "content": {
                        "type": "SEQ",
                        "members": [
                          {
                            "type": "STRING",
                            "value": ","
                          },
                          {
                            "type": "SYMBOL",
                            "name": "type_descriptor"
                          }
                        ]
                      }
                    }
                  ]
                },
                {
                  "type": "BLANK"
                }
              ]
            },
            {
              "type": "STRING",
              "value": ")"
            }
          ]
        }
      ]
    },
    "template_type": {
      "type": "SEQ",
      "members": [
        {
          "type": "FIELD",
          "name": "name",
          "content": {
            "type": "SYMBOL",
            "name": "_type_identifier"
          }
        },
        {
          "type": "FIELD",
          "name": "arguments",
          "content": {
            "type": "SYMBOL",
            "name": "template_argument_list"
          }
        }
      ]
    },
    "template_method": {
      "type": "SEQ",
      "members": [
        {
          "type": "FIELD",
          "name": "name",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "_field_identifier"
              },
              {
                "type": "SYMBOL",
                "name": "operator_name"
              }
            ]
          }
        },
        {
          "type": "FIELD",
          "name": "arguments",
          "content": {
            "type": "SYMBOL",
            "name": "template_argument_list"
          }
        }
      ]
    },
    "template_function": {
      "type": "SEQ",
      "members": [
        {
          "type": "FIELD",
          "name": "name",
          "content": {
            "type": "SYMBOL",
            "name": "identifier"
          }
        },
        {
          "type": "FIELD",
          "name": "arguments",
          "content": {
            "type": "SYMBOL",
            "name": "template_argument_list"
          }
        }
      ]
    },
    "template_argument_list": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "<"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "PREC_DYNAMIC",
                      "value": 3,
                      "content": {
                        "type": "SYMBOL",
                        "name": "type_descriptor"
                      }
                    },
                    {
                      "type": "PREC_DYNAMIC",
                      "value": 2,
                      "content": {
                        "type": "ALIAS",
                        "content": {
                          "type": "SYMBOL",
                          "name": "type_parameter_pack_expansion"
                        },
                        "named": true,
                        "value": "parameter_pack_expansion"
                      }
                    },
                    {
                      "type": "PREC_DYNAMIC",
                      "value": 1,
                      "content": {
                        "type": "SYMBOL",
                        "name": "expression"
                      }
                    }
                  ]
                },
                {
                  "type": "REPEAT",
                  "content": {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "STRING",
                        "value": ","
                      },
                      {
                        "type": "CHOICE",
                        "members": [
                          {
                            "type": "PREC_DYNAMIC",
                            "value": 3,
                            "content": {
                              "type": "SYMBOL",
                              "name": "type_descriptor"
                            }
                          },
                          {
                            "type": "PREC_DYNAMIC",
                            "value": 2,
                            "content": {
                              "type": "ALIAS",
                              "content": {
                                "type": "SYMBOL",
                                "name": "type_parameter_pack_expansion"
                              },
                              "named": true,
                              "value": "parameter_pack_expansion"
                            }
                          },
                          {
                            "type": "PREC_DYNAMIC",
                            "value": 1,
                            "content": {
                              "type": "SYMBOL",
                              "name": "expression"
                            }
                          }
                        ]
                      }
                    ]
                  }
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "TOKEN",
            "content": {
              "type": "PREC",
              "value": 1,
              "content": {
                "type": "STRING",
                "value": ">"
              }
            }
          },
          "named": false,
          "value": ">"
        }
      ]
    },
    "namespace_definition": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": "inline"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "namespace"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "attribute_declaration"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "FIELD",
          "name": "name",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "SYMBOL",
                    "name": "_namespace_identifier"
                  },
                  {
                    "type": "SYMBOL",
                    "name": "nested_namespace_specifier"
                  }
                ]
              },
              {
                "type": "BLANK"
              }
            ]
          }
        },
        {
          "type": "FIELD",
          "name": "body",
          "content": {
            "type": "SYMBOL",
            "name": "declaration_list"
          }
        }
      ]
    },
    "namespace_alias_definition": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "namespace"
        },
        {
          "type": "FIELD",
          "name": "name",
          "content": {
            "type": "SYMBOL",
            "name": "_namespace_identifier"
          }
        },
        {
          "type": "STRING",
          "value": "="
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_namespace_identifier"
            },
            {
              "type": "SYMBOL",
              "name": "nested_namespace_specifier"
            },
            {
              "type": "SYMBOL",
              "name": "splice_specifier"
            }
          ]
        },
        {
          "type": "STRING",
          "value": ";"
        }
      ]
    },
    "_namespace_specifier": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": "inline"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "_namespace_identifier"
        }
      ]
    },
    "nested_namespace_specifier": {
      "type": "PREC",
      "value": 1,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "_namespace_specifier"
              },
              {
                "type": "BLANK"
              }
            ]
          },
          {
            "type": "STRING",
            "value": "::"
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "nested_namespace_specifier"
              },
              {
                "type": "SYMBOL",
                "name": "_namespace_specifier"
              }
            ]
          }
        ]
      }
    },
    "using_declaration": {
      "type": "SEQ",
      "members": [
        {
          "type": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "attribute_declaration"
          }
        },
        {
          "type": "STRING",
          "value": "using"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "STRING",
                  "value": "namespace"
                },
                {
                  "type": "STRING",
                  "value": "enum"
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "identifier"
            },
            {
              "type": "SYMBOL",
              "name": "qualified_identifier"
            },
            {
              "type": "SYMBOL",
              "name": "splice_type_specifier"
            }
          ]
        },
        {
          "type": "STRING",
          "value": ";"
        }
      ]
    },
    "alias_declaration": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "using"
        },
        {
          "type": "FIELD",
          "name": "name",
          "content": {
            "type": "SYMBOL",
            "name": "_type_identifier"
          }
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "attribute_declaration"
          }
        },
        {
          "type": "STRING",
          "value": "="
        },
        {
          "type": "FIELD",
          "name": "type",
          "content": {
            "type": "SYMBOL",
            "name": "type_descriptor"
          }
        },
        {
          "type": "STRING",
          "value": ";"
        }
      ]
    },
    "static_assert_declaration": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "static_assert"
        },
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "FIELD",
          "name": "condition",
          "content": {
            "type": "SYMBOL",
            "name": "expression"
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "STRING",
                  "value": ","
                },
                {
                  "type": "FIELD",
                  "name": "message",
                  "content": {
                    "type": "SYMBOL",
                    "name": "_string"
                  }
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": ")"
        },
        {
          "type": "STRING",
          "value": ";"
        }
      ]
    },
    "consteval_block_declaration": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "consteval"
        },
        {
          "type": "FIELD",
          "name": "body",
          "content": {
            "type": "SYMBOL",
            "name": "compound_statement"
          }
        }
      ]
    },
    "concept_definition": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "concept"
        },
        {
          "type": "FIELD",
          "name": "name",
          "content": {
            "type": "SYMBOL",
            "name": "identifier"
          }
        },
        {
          "type": "STRING",
          "value": "="
        },
        {
          "type": "SYMBOL",
          "name": "expression"
        },
        {
          "type": "STRING",
          "value": ";"
        }
      ]
    },
    "for_range_loop": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "for"
        },
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "SYMBOL",
          "name": "_for_range_loop_body"
        },
        {
          "type": "STRING",
          "value": ")"
        },
        {
          "type": "FIELD",
          "name": "body",
          "content": {
            "type": "SYMBOL",
            "name": "statement"
          }
        }
      ]
    },
    "_for_range_loop_body": {
      "type": "SEQ",
      "members": [
        {
          "type": "FIELD",
          "name": "initializer",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "init_statement"
              },
              {
                "type": "BLANK"
              }
            ]
          }
        },
        {
          "type": "SYMBOL",
          "name": "_declaration_specifiers"
        },
        {
          "type": "FIELD",
          "name": "declarator",
          "content": {
            "type": "SYMBOL",
            "name": "_declarator"
          }
        },
        {
          "type": "STRING",
          "value": ":"
        },
        {
          "type": "FIELD",
          "name": "right",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "expression"
              },
              {
                "type": "SYMBOL",
                "name": "initializer_list"
              }
            ]
          }
        }
      ]
    },
    "init_statement": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "alias_declaration"
        },
        {
          "type": "SYMBOL",
          "name": "type_definition"
        },
        {
          "type": "SYMBOL",
          "name": "declaration"
        },
        {
          "type": "SYMBOL",
          "name": "expression_statement"
        }
      ]
    },
    "condition_clause": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "FIELD",
          "name": "initializer",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "init_statement"
              },
              {
                "type": "BLANK"
              }
            ]
          }
        },
        {
          "type": "FIELD",
          "name": "value",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "expression"
              },
              {
                "type": "SYMBOL",
                "name": "comma_expression"
              },
              {
                "type": "ALIAS",
                "content": {
                  "type": "SYMBOL",
                  "name": "condition_declaration"
                },
                "named": true,
                "value": "declaration"
              }
            ]
          }
        },
        {
          "type": "STRING",
          "value": ")"
        }
      ]
    },
    "condition_declaration": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "_declaration_specifiers"
        },
        {
          "type": "FIELD",
          "name": "declarator",
          "content": {
            "type": "SYMBOL",
            "name": "_declarator"
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "STRING",
                  "value": "="
                },
                {
                  "type": "FIELD",
                  "name": "value",
                  "content": {
                    "type": "SYMBOL",
                    "name": "expression"
                  }
                }
              ]
            },
            {
              "type": "FIELD",
              "name": "value",
              "content": {
                "type": "SYMBOL",
                "name": "initializer_list"
              }
            }
          ]
        }
      ]
    },
    "co_return_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "co_return"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "expression"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": ";"
        }
      ]
    },
    "co_yield_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "co_yield"
        },
        {
          "type": "SYMBOL",
          "name": "expression"
        },
        {
          "type": "STRING",
          "value": ";"
        }
      ]
    },
    "throw_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "throw"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "expression"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": ";"
        }
      ]
    },
    "try_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "try"
        },
        {
          "type": "FIELD",
          "name": "body",
          "content": {
            "type": "SYMBOL",
            "name": "compound_statement"
          }
        },
        {
          "type": "REPEAT1",
          "content": {
            "type": "SYMBOL",
            "name": "catch_clause"
          }
        }
      ]
    },
    "catch_clause": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "catch"
        },
        {
          "type": "FIELD",
          "name": "parameters",
          "content": {
            "type": "SYMBOL",
            "name": "parameter_list"
          }
        },
        {
          "type": "FIELD",
          "name": "body",
          "content": {
            "type": "SYMBOL",
            "name": "compound_statement"
          }
        }
      ]
    },
    "raw_string_literal": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": "R\""
            },
            {
              "type": "STRING",
              "value": "LR\""
            },
            {
              "type": "STRING",
              "value": "uR\""
            },
            {
              "type": "STRING",
              "value": "UR\""
            },
            {
              "type": "STRING",
              "value": "u8R\""
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "FIELD",
                  "name": "delimiter",
                  "content": {
                    "type": "SYMBOL",
                    "name": "raw_string_delimiter"
                  }
                },
                {
                  "type": "STRING",
                  "value": "("
                },
                {
                  "type": "SYMBOL",
                  "name": "raw_string_content"
                },
                {
                  "type": "STRING",
                  "value": ")"
                },
                {
                  "type": "SYMBOL",
                  "name": "raw_string_delimiter"
                }
              ]
            },
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "STRING",
                  "value": "("
                },
                {
                  "type": "SYMBOL",
                  "name": "raw_string_content"
                },
                {
                  "type": "STRING",
                  "value": ")"
                }
              ]
            }
          ]
        },
        {
          "type": "STRING",
          "value": "\""
        }
      ]
    },
    "subscript_argument_list": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "["
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "SYMBOL",
                      "name": "expression"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "initializer_list"
                    }
                  ]
                },
                {
                  "type": "REPEAT",
                  "content": {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "STRING",
                        "value": ","
                      },
                      {
                        "type": "CHOICE",
                        "members": [
                          {
                            "type": "SYMBOL",
                            "name": "expression"
                          },
                          {
                            "type": "SYMBOL",
                            "name": "initializer_list"
                          }
                        ]
                      }
                    ]
                  }
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "]"
        }
      ]
    },
    "co_await_expression": {
      "type": "PREC_LEFT",
      "value": 14,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "FIELD",
            "name": "operator",
            "content": {
              "type": "STRING",
              "value": "co_await"
            }
          },
          {
            "type": "FIELD",
            "name": "argument",
            "content": {
              "type": "SYMBOL",
              "name": "expression"
            }
          }
        ]
      }
    },
    "new_expression": {
      "type": "PREC_RIGHT",
      "value": 16,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "STRING",
                "value": "::"
              },
              {
                "type": "BLANK"
              }
            ]
          },
          {
            "type": "STRING",
            "value": "new"
          },
          {
            "type": "FIELD",
            "name": "placement",
            "content": {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "argument_list"
                },
                {
                  "type": "BLANK"
                }
              ]
            }
          },
          {
            "type": "FIELD",
            "name": "type",
            "content": {
              "type": "SYMBOL",
              "name": "type_specifier"
            }
          },
          {
            "type": "FIELD",
            "name": "declarator",
            "content": {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "new_declarator"
                },
                {
                  "type": "BLANK"
                }
              ]
            }
          },
          {
            "type": "FIELD",
            "name": "arguments",
            "content": {
              "type": "CHOICE",
              "members": [
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "SYMBOL",
                      "name": "argument_list"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "initializer_list"
                    }
                  ]
                },
                {
                  "type": "BLANK"
                }
              ]
            }
          }
        ]
      }
    },
    "new_declarator": {
      "type": "PREC_RIGHT",
      "value": 0,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "STRING",
            "value": "["
          },
          {
            "type": "FIELD",
            "name": "length",
            "content": {
              "type": "SYMBOL",
              "name": "expression"
            }
          },
          {
            "type": "STRING",
            "value": "]"
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "new_declarator"
              },
              {
                "type": "BLANK"
              }
            ]
          }
        ]
      }
    },
    "delete_expression": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": "::"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "delete"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "STRING",
                  "value": "["
                },
                {
                  "type": "STRING",
                  "value": "]"
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "expression"
        }
      ]
    },
    "type_requirement": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "typename"
        },
        {
          "type": "SYMBOL",
          "name": "_class_name"
        }
      ]
    },
    "compound_requirement": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "{"
        },
        {
          "type": "SYMBOL",
          "name": "expression"
        },
        {
          "type": "STRING",
          "value": "}"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": "noexcept"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "trailing_return_type"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": ";"
        }
      ]
    },
    "_requirement": {
      "type": "CHOICE",
      "members": [
        {
          "type": "ALIAS",
          "content": {
            "type": "SYMBOL",
            "name": "expression_statement"
          },
          "named": true,
          "value": "simple_requirement"
        },
        {
          "type": "SYMBOL",
          "name": "type_requirement"
        },
        {
          "type": "SYMBOL",
          "name": "compound_requirement"
        }
      ]
    },
    "requirement_seq": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "{"
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "_requirement"
          }
        },
        {
          "type": "STRING",
          "value": "}"
        }
      ]
    },
    "constraint_conjunction": {
      "type": "PREC_LEFT",
      "value": 2,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "FIELD",
            "name": "left",
            "content": {
              "type": "SYMBOL",
              "name": "_requirement_clause_constraint"
            }
          },
          {
            "type": "FIELD",
            "name": "operator",
            "content": {
              "type": "CHOICE",
              "members": [
                {
                  "type": "STRING",
                  "value": "&&"
                },
                {
                  "type": "STRING",
                  "value": "and"
                }
              ]
            }
          },
          {
            "type": "FIELD",
            "name": "right",
            "content": {
              "type": "SYMBOL",
              "name": "_requirement_clause_constraint"
            }
          }
        ]
      }
    },
    "constraint_disjunction": {
      "type": "PREC_LEFT",
      "value": 1,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "FIELD",
            "name": "left",
            "content": {
              "type": "SYMBOL",
              "name": "_requirement_clause_constraint"
            }
          },
          {
            "type": "FIELD",
            "name": "operator",
            "content": {
              "type": "CHOICE",
              "members": [
                {
                  "type": "STRING",
                  "value": "||"
                },
                {
                  "type": "STRING",
                  "value": "or"
                }
              ]
            }
          },
          {
            "type": "FIELD",
            "name": "right",
            "content": {
              "type": "SYMBOL",
              "name": "_requirement_clause_constraint"
            }
          }
        ]
      }
    },
    "_requirement_clause_constraint": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "true"
        },
        {
          "type": "SYMBOL",
          "name": "false"
        },
        {
          "type": "SYMBOL",
          "name": "_class_name"
        },
        {
          "type": "SYMBOL",
          "name": "fold_expression"
        },
        {
          "type": "SYMBOL",
          "name": "lambda_expression"
        },
        {
          "type": "SYMBOL",
          "name": "requires_expression"
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "STRING",
              "value": "("
            },
            {
              "type": "SYMBOL",
              "name": "expression"
            },
            {
              "type": "STRING",
              "value": ")"
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "constraint_conjunction"
        },
        {
          "type": "SYMBOL",
          "name": "constraint_disjunction"
        }
      ]
    },
    "requires_clause": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "requires"
        },
        {
          "type": "FIELD",
          "name": "constraint",
          "content": {
            "type": "SYMBOL",
            "name": "_requirement_clause_constraint"
          }
        }
      ]
    },
    "requires_parameter_list": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "SYMBOL",
                      "name": "parameter_declaration"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "optional_parameter_declaration"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "variadic_parameter_declaration"
                    }
                  ]
                },
                {
                  "type": "REPEAT",
                  "content": {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "STRING",
                        "value": ","
                      },
                      {
                        "type": "CHOICE",
                        "members": [
                          {
                            "type": "SYMBOL",
                            "name": "parameter_declaration"
                          },
                          {
                            "type": "SYMBOL",
                            "name": "optional_parameter_declaration"
                          },
                          {
                            "type": "SYMBOL",
                            "name": "variadic_parameter_declaration"
                          }
                        ]
                      }
                    ]
                  }
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": ")"
        }
      ]
    },
    "requires_expression": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "requires"
        },
        {
          "type": "FIELD",
          "name": "parameters",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "ALIAS",
                "content": {
                  "type": "SYMBOL",
                  "name": "requires_parameter_list"
                },
                "named": true,
                "value": "parameter_list"
              },
              {
                "type": "BLANK"
              }
            ]
          }
        },
        {
          "type": "FIELD",
          "name": "requirements",
          "content": {
            "type": "SYMBOL",
            "name": "requirement_seq"
          }
        }
      ]
    },
    "lambda_specifier": {
      "type": "CHOICE",
      "members": [
        {
          "type": "STRING",
          "value": "static"
        },
        {
          "type": "STRING",
          "value": "constexpr"
        },
        {
          "type": "STRING",
          "value": "consteval"
        },
        {
          "type": "STRING",
          "value": "mutable"
        }
      ]
    },
    "lambda_declarator": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SEQ",
          "members": [
            {
              "type": "REPEAT",
              "content": {
                "type": "SYMBOL",
                "name": "attribute_declaration"
              }
            },
            {
              "type": "FIELD",
              "name": "parameters",
              "content": {
                "type": "SYMBOL",
                "name": "parameter_list"
              }
            },
            {
              "type": "REPEAT",
              "content": {
                "type": "SYMBOL",
                "name": "lambda_specifier"
              }
            },
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "_function_exception_specification"
                },
                {
                  "type": "BLANK"
                }
              ]
            },
            {
              "type": "REPEAT",
              "content": {
                "type": "SYMBOL",
                "name": "attribute_declaration"
              }
            },
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "trailing_return_type"
                },
                {
                  "type": "BLANK"
                }
              ]
            },
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "requires_clause"
                },
                {
                  "type": "BLANK"
                }
              ]
            }
          ]
        },
        {
          "type": "REPEAT1",
          "content": {
            "type": "SYMBOL",
            "name": "attribute_declaration"
          }
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "REPEAT",
              "content": {
                "type": "SYMBOL",
                "name": "attribute_declaration"
              }
            },
            {
              "type": "SYMBOL",
              "name": "trailing_return_type"
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "REPEAT",
              "content": {
                "type": "SYMBOL",
                "name": "attribute_declaration"
              }
            },
            {
              "type": "SYMBOL",
              "name": "_function_exception_specification"
            },
            {
              "type": "REPEAT",
              "content": {
                "type": "SYMBOL",
                "name": "attribute_declaration"
              }
            },
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "trailing_return_type"
                },
                {
                  "type": "BLANK"
                }
              ]
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "REPEAT",
              "content": {
                "type": "SYMBOL",
                "name": "attribute_declaration"
              }
            },
            {
              "type": "REPEAT1",
              "content": {
                "type": "SYMBOL",
                "name": "lambda_specifier"
              }
            },
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "_function_exception_specification"
                },
                {
                  "type": "BLANK"
                }
              ]
            },
            {
              "type": "REPEAT",
              "content": {
                "type": "SYMBOL",
                "name": "attribute_declaration"
              }
            },
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "trailing_return_type"
                },
                {
                  "type": "BLANK"
                }
              ]
            }
          ]
        }
      ]
    },
    "lambda_expression": {
      "type": "SEQ",
      "members": [
        {
          "type": "FIELD",
          "name": "captures",
          "content": {
            "type": "SYMBOL",
            "name": "lambda_capture_specifier"
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "FIELD",
                  "name": "template_parameters",
                  "content": {
                    "type": "SYMBOL",
                    "name": "template_parameter_list"
                  }
                },
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "FIELD",
                      "name": "constraint",
                      "content": {
                        "type": "SYMBOL",
                        "name": "requires_clause"
                      }
                    },
                    {
                      "type": "BLANK"
                    }
                  ]
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "FIELD",
              "name": "declarator",
              "content": {
                "type": "SYMBOL",
                "name": "lambda_declarator"
              }
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "FIELD",
          "name": "body",
          "content": {
            "type": "SYMBOL",
            "name": "compound_statement"
          }
        }
      ]
    },
    "lambda_capture_specifier": {
      "type": "PREC",
      "value": 18,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "STRING",
            "value": "["
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "lambda_default_capture"
              },
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "SYMBOL",
                        "name": "_lambda_capture"
                      },
                      {
                        "type": "REPEAT",
                        "content": {
                          "type": "SEQ",
                          "members": [
                            {
                              "type": "STRING",
                              "value": ","
                            },
                            {
                              "type": "SYMBOL",
                              "name": "_lambda_capture"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  {
                    "type": "BLANK"
                  }
                ]
              },
              {
                "type": "SEQ",
                "members": [
                  {
                    "type": "SYMBOL",
                    "name": "lambda_default_capture"
                  },
                  {
                    "type": "STRING",
                    "value": ","
                  },
                  {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "SYMBOL",
                        "name": "_lambda_capture"
                      },
                      {
                        "type": "REPEAT",
                        "content": {
                          "type": "SEQ",
                          "members": [
                            {
                              "type": "STRING",
                              "value": ","
                            },
                            {
                              "type": "SYMBOL",
                              "name": "_lambda_capture"
                            }
                          ]
                        }
                      }
                    ]
                  }
                ]
              }
            ]
          },
          {
            "type": "STRING",
            "value": "]"
          }
        ]
      }
    },
    "lambda_default_capture": {
      "type": "CHOICE",
      "members": [
        {
          "type": "STRING",
          "value": "="
        },
        {
          "type": "STRING",
          "value": "&"
        }
      ]
    },
    "_lambda_capture_identifier": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": "&"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "identifier"
            },
            {
              "type": "SYMBOL",
              "name": "qualified_identifier"
            },
            {
              "type": "ALIAS",
              "content": {
                "type": "SYMBOL",
                "name": "identifier_parameter_pack_expansion"
              },
              "named": true,
              "value": "parameter_pack_expansion"
            }
          ]
        }
      ]
    },
    "lambda_capture_initializer": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": "&"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": "..."
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "FIELD",
          "name": "left",
          "content": {
            "type": "SYMBOL",
            "name": "identifier"
          }
        },
        {
          "type": "STRING",
          "value": "="
        },
        {
          "type": "FIELD",
          "name": "right",
          "content": {
            "type": "SYMBOL",
            "name": "expression"
          }
        }
      ]
    },
    "_lambda_capture": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SEQ",
          "members": [
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "STRING",
                  "value": "*"
                },
                {
                  "type": "BLANK"
                }
              ]
            },
            {
              "type": "SYMBOL",
              "name": "this"
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "_lambda_capture_identifier"
        },
        {
          "type": "SYMBOL",
          "name": "lambda_capture_initializer"
        }
      ]
    },
    "_fold_operator": {
      "type": "CHOICE",
      "members": [
        {
          "type": "STRING",
          "value": "+"
        },
        {
          "type": "STRING",
          "value": "-"
        },
        {
          "type": "STRING",
          "value": "*"
        },
        {
          "type": "STRING",
          "value": "/"
        },
        {
          "type": "STRING",
          "value": "%"
        },
        {
          "type": "STRING",
          "value": "^"
        },
        {
          "type": "STRING",
          "value": "&"
        },
        {
          "type": "STRING",
          "value": "|"
        },
        {
          "type": "STRING",
          "value": "="
        },
        {
          "type": "STRING",
          "value": "<"
        },
        {
          "type": "STRING",
          "value": ">"
        },
        {
          "type": "STRING",
          "value": "<<"
        },
        {
          "type": "STRING",
          "value": ">>"
        },
        {
          "type": "STRING",
          "value": "+="
        },
        {
          "type": "STRING",
          "value": "-="
        },
        {
          "type": "STRING",
          "value": "*="
        },
        {
          "type": "STRING",
          "value": "/="
        },
        {
          "type": "STRING",
          "value": "%="
        },
        {
          "type": "STRING",
          "value": "^="
        },
        {
          "type": "STRING",
          "value": "&="
        },
        {
          "type": "STRING",
          "value": "|="
        },
        {
          "type": "STRING",
          "value": ">>="
        },
        {
          "type": "STRING",
          "value": "<<="
        },
        {
          "type": "STRING",
          "value": "=="
        },
        {
          "type": "STRING",
          "value": "!="
        },
        {
          "type": "STRING",
          "value": "<="
        },
        {
          "type": "STRING",
          "value": ">="
        },
        {
          "type": "STRING",
          "value": "&&"
        },
        {
          "type": "STRING",
          "value": "||"
        },
        {
          "type": "STRING",
          "value": ","
        },
        {
          "type": "STRING",
          "value": ".*"
        },
        {
          "type": "STRING",
          "value": "->*"
        },
        {
          "type": "STRING",
          "value": "or"
        },
        {
          "type": "STRING",
          "value": "and"
        },
        {
          "type": "STRING",
          "value": "bitor"
        },
        {
          "type": "STRING",
          "value": "xor"
        },
        {
          "type": "STRING",
          "value": "bitand"
        },
        {
          "type": "STRING",
          "value": "not_eq"
        }
      ]
    },
    "_binary_fold_operator": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SEQ",
          "members": [
            {
              "type": "FIELD",
              "name": "operator",
              "content": {
                "type": "STRING",
                "value": "+"
              }
            },
            {
              "type": "STRING",
              "value": "..."
            },
            {
              "type": "STRING",
              "value": "+"
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "FIELD",
              "name": "operator",
              "content": {
                "type": "STRING",
                "value": "-"
              }
            },
            {
              "type": "STRING",
              "value": "..."
            },
            {
              "type": "STRING",
              "value": "-"
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "FIELD",
              "name": "operator",
              "content": {
                "type": "STRING",
                "value": "*"
              }
            },
            {
              "type": "STRING",
              "value": "..."
            },
            {
              "type": "STRING",
              "value": "*"
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "FIELD",
              "name": "operator",
              "content": {
                "type": "STRING",
                "value": "/"
              }
            },
            {
              "type": "STRING",
              "value": "..."
            },
            {
              "type": "STRING",
              "value": "/"
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "FIELD",
              "name": "operator",
              "content": {
                "type": "STRING",
                "value": "%"
              }
            },
            {
              "type": "STRING",
              "value": "..."
            },
            {
              "type": "STRING",
              "value": "%"
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "FIELD",
              "name": "operator",
              "content": {
                "type": "STRING",
                "value": "^"
              }
            },
            {
              "type": "STRING",
              "value": "..."
            },
            {
              "type": "STRING",
              "value": "^"
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "FIELD",
              "name": "operator",
              "content": {
                "type": "STRING",
                "value": "&"
              }
            },
            {
              "type": "STRING",
              "value": "..."
            },
            {
              "type": "STRING",
              "value": "&"
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "FIELD",
              "name": "operator",
              "content": {
                "type": "STRING",
                "value": "|"
              }
            },
            {
              "type": "STRING",
              "value": "..."
            },
            {
              "type": "STRING",
              "value": "|"
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "FIELD",
              "name": "operator",
              "content": {
                "type": "STRING",
                "value": "="
              }
            },
            {
              "type": "STRING",
              "value": "..."
            },
            {
              "type": "STRING",
              "value": "="
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "FIELD",
              "name": "operator",
              "content": {
                "type": "STRING",
                "value": "<"
              }
            },
            {
              "type": "STRING",
              "value": "..."
            },
            {
              "type": "STRING",
              "value": "<"
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "FIELD",
              "name": "operator",
              "content": {
                "type": "STRING",
                "value": ">"
              }
            },
            {
              "type": "STRING",
              "value": "..."
            },
            {
              "type": "STRING",
              "value": ">"
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "FIELD",
              "name": "operator",
              "content": {
                "type": "STRING",
                "value": "<<"
              }
            },
            {
              "type": "STRING",
              "value": "..."
            },
            {
              "type": "STRING",
              "value": "<<"
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "FIELD",
              "name": "operator",
              "content": {
                "type": "STRING",
                "value": ">>"
              }
            },
            {
              "type": "STRING",
              "value": "..."
            },
            {
              "type": "STRING",
              "value": ">>"
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "FIELD",
              "name": "operator",
              "content": {
                "type": "STRING",
                "value": "+="
              }
            },
            {
              "type": "STRING",
              "value": "..."
            },
            {
              "type": "STRING",
              "value": "+="
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "FIELD",
              "name": "operator",
              "content": {
                "type": "STRING",
                "value": "-="
              }
            },
            {
              "type": "STRING",
              "value": "..."
            },
            {
              "type": "STRING",
              "value": "-="
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "FIELD",
              "name": "operator",
              "content": {
                "type": "STRING",
                "value": "*="
              }
            },
            {
              "type": "STRING",
              "value": "..."
            },
            {
              "type": "STRING",
              "value": "*="
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "FIELD",
              "name": "operator",
              "content": {
                "type": "STRING",
                "value": "/="
              }
            },
            {
              "type": "STRING",
              "value": "..."
            },
            {
              "type": "STRING",
              "value": "/="
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "FIELD",
              "name": "operator",
              "content": {
                "type": "STRING",
                "value": "%="
              }
            },
            {
              "type": "STRING",
              "value": "..."
            },
            {
              "type": "STRING",
              "value": "%="
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "FIELD",
              "name": "operator",
              "content": {
                "type": "STRING",
                "value": "^="
              }
            },
            {
              "type": "STRING",
              "value": "..."
            },
            {
              "type": "STRING",
              "value": "^="
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "FIELD",
              "name": "operator",
              "content": {
                "type": "STRING",
                "value": "&="
              }
            },
            {
              "type": "STRING",
              "value": "..."
            },
            {
              "type": "STRING",
              "value": "&="
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "FIELD",
              "name": "operator",
              "content": {
                "type": "STRING",
                "value": "|="
              }
            },
            {
              "type": "STRING",
              "value": "..."
            },
            {
              "type": "STRING",
              "value": "|="
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "FIELD",
              "name": "operator",
              "content": {
                "type": "STRING",
                "value": ">>="
              }
            },
            {
              "type": "STRING",
              "value": "..."
            },
            {
              "type": "STRING",
              "value": ">>="
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "FIELD",
              "name": "operator",
              "content": {
                "type": "STRING",
                "value": "<<="
              }
            },
            {
              "type": "STRING",
              "value": "..."
            },
            {
              "type": "STRING",
              "value": "<<="
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "FIELD",
              "name": "operator",
              "content": {
                "type": "STRING",
                "value": "=="
              }
            },
            {
              "type": "STRING",
              "value": "..."
            },
            {
              "type": "STRING",
              "value": "=="
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "FIELD",
              "name": "operator",
              "content": {
                "type": "STRING",
                "value": "!="
              }
            },
            {
              "type": "STRING",
              "value": "..."
            },
            {
              "type": "STRING",
              "value": "!="
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "FIELD",
              "name": "operator",
              "content": {
                "type": "STRING",
                "value": "<="
              }
            },
            {
              "type": "STRING",
              "value": "..."
            },
            {
              "type": "STRING",
              "value": "<="
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "FIELD",
              "name": "operator",
              "content": {
                "type": "STRING",
                "value": ">="
              }
            },
            {
              "type": "STRING",
              "value": "..."
            },
            {
              "type": "STRING",
              "value": ">="
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "FIELD",
              "name": "operator",
              "content": {
                "type": "STRING",
                "value": "&&"
              }
            },
            {
              "type": "STRING",
              "value": "..."
            },
            {
              "type": "STRING",
              "value": "&&"
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "FIELD",
              "name": "operator",
              "content": {
                "type": "STRING",
                "value": "||"
              }
            },
            {
              "type": "STRING",
              "value": "..."
            },
            {
              "type": "STRING",
              "value": "||"
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "FIELD",
              "name": "operator",
              "content": {
                "type": "STRING",
                "value": ","
              }
            },
            {
              "type": "STRING",
              "value": "..."
            },
            {
              "type": "STRING",
              "value": ","
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "FIELD",
              "name": "operator",
              "content": {
                "type": "STRING",
                "value": ".*"
              }
            },
            {
              "type": "STRING",
              "value": "..."
            },
            {
              "type": "STRING",
              "value": ".*"
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "FIELD",
              "name": "operator",
              "content": {
                "type": "STRING",
                "value": "->*"
              }
            },
            {
              "type": "STRING",
              "value": "..."
            },
            {
              "type": "STRING",
              "value": "->*"
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "FIELD",
              "name": "operator",
              "content": {
                "type": "STRING",
                "value": "or"
              }
            },
            {
              "type": "STRING",
              "value": "..."
            },
            {
              "type": "STRING",
              "value": "or"
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "FIELD",
              "name": "operator",
              "content": {
                "type": "STRING",
                "value": "and"
              }
            },
            {
              "type": "STRING",
              "value": "..."
            },
            {
              "type": "STRING",
              "value": "and"
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "FIELD",
              "name": "operator",
              "content": {
                "type": "STRING",
                "value": "bitor"
              }
            },
            {
              "type": "STRING",
              "value": "..."
            },
            {
              "type": "STRING",
              "value": "bitor"
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "FIELD",
              "name": "operator",
              "content": {
                "type": "STRING",
                "value": "xor"
              }
            },
            {
              "type": "STRING",
              "value": "..."
            },
            {
              "type": "STRING",
              "value": "xor"
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "FIELD",
              "name": "operator",
              "content": {
                "type": "STRING",
                "value": "bitand"
              }
            },
            {
              "type": "STRING",
              "value": "..."
            },
            {
              "type": "STRING",
              "value": "bitand"
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "FIELD",
              "name": "operator",
              "content": {
                "type": "STRING",
                "value": "not_eq"
              }
            },
            {
              "type": "STRING",
              "value": "..."
            },
            {
              "type": "STRING",
              "value": "not_eq"
            }
          ]
        }
      ]
    },
    "_unary_left_fold": {
      "type": "SEQ",
      "members": [
        {
          "type": "FIELD",
          "name": "left",
          "content": {
            "type": "STRING",
            "value": "..."
          }
        },
        {
          "type": "FIELD",
          "name": "operator",
          "content": {
            "type": "SYMBOL",
            "name": "_fold_operator"
          }
        },
        {
          "type": "FIELD",
          "name": "right",
          "content": {
            "type": "SYMBOL",
            "name": "expression"
          }
        }
      ]
    },
    "_unary_right_fold": {
      "type": "SEQ",
      "members": [
        {
          "type": "FIELD",
          "name": "left",
          "content": {
            "type": "SYMBOL",
            "name": "expression"
          }
        },
        {
          "type": "FIELD",
          "name": "operator",
          "content": {
            "type": "SYMBOL",
            "name": "_fold_operator"
          }
        },
        {
          "type": "FIELD",
          "name": "right",
          "content": {
            "type": "STRING",
            "value": "..."
          }
        }
      ]
    },
    "_binary_fold": {
      "type": "SEQ",
      "members": [
        {
          "type": "FIELD",
          "name": "left",
          "content": {
            "type": "SYMBOL",
            "name": "expression"
          }
        },
        {
          "type": "SYMBOL",
          "name": "_binary_fold_operator"
        },
        {
          "type": "FIELD",
          "name": "right",
          "content": {
            "type": "SYMBOL",
            "name": "expression"
          }
        }
      ]
    },
    "fold_expression": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_unary_right_fold"
            },
            {
              "type": "SYMBOL",
              "name": "_unary_left_fold"
            },
            {
              "type": "SYMBOL",
              "name": "_binary_fold"
            }
          ]
        },
        {
          "type": "STRING",
          "value": ")"
        }
      ]
    },
    "parameter_pack_expansion": {
      "type": "PREC",
      "value": -1,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "FIELD",
            "name": "pattern",
            "content": {
              "type": "SYMBOL",
              "name": "expression"
            }
          },
          {
            "type": "STRING",
            "value": "..."
          }
        ]
      }
    },
    "type_parameter_pack_expansion": {
      "type": "SEQ",
      "members": [
        {
          "type": "FIELD",
          "name": "pattern",
          "content": {
            "type": "SYMBOL",
            "name": "type_descriptor"
          }
        },
        {
          "type": "STRING",
          "value": "..."
        }
      ]
    },
    "identifier_parameter_pack_expansion": {
      "type": "SEQ",
      "members": [
        {
          "type": "FIELD",
          "name": "pattern",
          "content": {
            "type": "SYMBOL",
            "name": "identifier"
          }
        },
        {
          "type": "STRING",
          "value": "..."
        }
      ]
    },
    "destructor_name": {
      "type": "PREC",
      "value": 1,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "STRING",
            "value": "~"
          },
          {
            "type": "SYMBOL",
            "name": "identifier"
          }
        ]
      }
    },
    "dependent_identifier": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "template"
        },
        {
          "type": "SYMBOL",
          "name": "template_function"
        }
      ]
    },
    "dependent_field_identifier": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "template"
        },
        {
          "type": "SYMBOL",
          "name": "template_method"
        }
      ]
    },
    "dependent_type_identifier": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "template"
        },
        {
          "type": "SYMBOL",
          "name": "template_type"
        }
      ]
    },
    "_scope_resolution": {
      "type": "PREC",
      "value": 1,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "FIELD",
            "name": "scope",
            "content": {
              "type": "CHOICE",
              "members": [
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "SYMBOL",
                      "name": "_namespace_identifier"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "template_type"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "decltype"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "splice_expression"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "splice_type_specifier"
                    },
                    {
                      "type": "ALIAS",
                      "content": {
                        "type": "SYMBOL",
                        "name": "dependent_type_identifier"
                      },
                      "named": true,
                      "value": "dependent_name"
                    }
                  ]
                },
                {
                  "type": "BLANK"
                }
              ]
            }
          },
          {
            "type": "STRING",
            "value": "::"
          }
        ]
      }
    },
    "qualified_field_identifier": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "_scope_resolution"
        },
        {
          "type": "FIELD",
          "name": "name",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "ALIAS",
                "content": {
                  "type": "SYMBOL",
                  "name": "dependent_field_identifier"
                },
                "named": true,
                "value": "dependent_name"
              },
              {
                "type": "ALIAS",
                "content": {
                  "type": "SYMBOL",
                  "name": "qualified_field_identifier"
                },
                "named": true,
                "value": "qualified_identifier"
              },
              {
                "type": "SYMBOL",
                "name": "template_method"
              },
              {
                "type": "PREC_DYNAMIC",
                "value": 2,
                "content": {
                  "type": "SYMBOL",
                  "name": "_field_identifier"
                }
              }
            ]
          }
        }
      ]
    },
    "qualified_identifier": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "_scope_resolution"
        },
        {
          "type": "FIELD",
          "name": "name",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "ALIAS",
                "content": {
                  "type": "SYMBOL",
                  "name": "dependent_identifier"
                },
                "named": true,
                "value": "dependent_name"
              },
              {
                "type": "SYMBOL",
                "name": "qualified_identifier"
              },
              {
                "type": "SYMBOL",
                "name": "template_function"
              },
              {
                "type": "PREC_DYNAMIC",
                "value": 1,
                "content": {
                  "type": "SEQ",
                  "members": [
                    {
                      "type": "CHOICE",
                      "members": [
                        {
                          "type": "STRING",
                          "value": "template"
                        },
                        {
                          "type": "BLANK"
                        }
                      ]
                    },
                    {
                      "type": "SYMBOL",
                      "name": "identifier"
                    }
                  ]
                }
              },
              {
                "type": "SYMBOL",
                "name": "operator_name"
              },
              {
                "type": "SYMBOL",
                "name": "destructor_name"
              },
              {
                "type": "SYMBOL",
                "name": "pointer_type_declarator"
              }
            ]
          }
        }
      ]
    },
    "qualified_type_identifier": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "_scope_resolution"
        },
        {
          "type": "FIELD",
          "name": "name",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "ALIAS",
                "content": {
                  "type": "SYMBOL",
                  "name": "dependent_type_identifier"
                },
                "named": true,
                "value": "dependent_name"
              },
              {
                "type": "ALIAS",
                "content": {
                  "type": "SYMBOL",
                  "name": "qualified_type_identifier"
                },
                "named": true,
                "value": "qualified_identifier"
              },
              {
                "type": "SYMBOL",
                "name": "template_type"
              },
              {
                "type": "PREC_DYNAMIC",
                "value": 1,
                "content": {
                  "type": "SYMBOL",
                  "name": "_type_identifier"
                }
              }
            ]
          }
        }
      ]
    },
    "qualified_operator_cast_identifier": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "_scope_resolution"
        },
        {
          "type": "FIELD",
          "name": "name",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "ALIAS",
                "content": {
                  "type": "SYMBOL",
                  "name": "qualified_operator_cast_identifier"
                },
                "named": true,
                "value": "qualified_identifier"
              },
              {
                "type": "SYMBOL",
                "name": "operator_cast"
              }
            ]
          }
        }
      ]
    },
    "_assignment_expression_lhs": {
      "type": "SEQ",
      "members": [
        {
          "type": "FIELD",
          "name": "left",
          "content": {
            "type": "SYMBOL",
            "name": "expression"
          }
        },
        {
          "type": "FIELD",
          "name": "operator",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "STRING",
                "value": "="
              },
              {
                "type": "STRING",
                "value": "*="
              },
              {
                "type": "STRING",
                "value": "/="
              },
              {
                "type": "STRING",
                "value": "%="
              },
              {
                "type": "STRING",
                "value": "+="
              },
              {
                "type": "STRING",
                "value": "-="
              },
              {
                "type": "STRING",
                "value": "<<="
              },
              {
                "type": "STRING",
                "value": ">>="
              },
              {
                "type": "STRING",
                "value": "&="
              },
              {
                "type": "STRING",
                "value": "^="
              },
              {
                "type": "STRING",
                "value": "|="
              },
              {
                "type": "STRING",
                "value": "and_eq"
              },
              {
                "type": "STRING",
                "value": "or_eq"
              },
              {
                "type": "STRING",
                "value": "xor_eq"
              }
            ]
          }
        },
        {
          "type": "FIELD",
          "name": "right",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "expression"
              },
              {
                "type": "SYMBOL",
                "name": "initializer_list"
              }
            ]
          }
        }
      ]
    },
    "reflect_expression": {
      "type": "PREC_RIGHT",
      "value": 0,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "STRING",
            "value": "^^"
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "STRING",
                "value": "::"
              },
              {
                "type": "SYMBOL",
                "name": "expression"
              },
              {
                "type": "SYMBOL",
                "name": "type_descriptor"
              }
            ]
          }
        ]
      }
    },
    "splice_specifier": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "[:"
        },
        {
          "type": "SYMBOL",
          "name": "expression"
        },
        {
          "type": "STRING",
          "value": ":]"
        }
      ]
    },
    "_splice_specialization_specifier": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "splice_specifier"
        },
        {
          "type": "SYMBOL",
          "name": "template_argument_list"
        }
      ]
    },
    "splice_type_specifier": {
      "type": "PREC_RIGHT",
      "value": 0,
      "content": {
        "type": "CHOICE",
        "members": [
          {
            "type": "SYMBOL",
            "name": "splice_specifier"
          },
          {
            "type": "SYMBOL",
            "name": "_splice_specialization_specifier"
          }
        ]
      }
    },
    "splice_expression": {
      "type": "PREC_RIGHT",
      "value": 0,
      "content": {
        "type": "CHOICE",
        "members": [
          {
            "type": "SYMBOL",
            "name": "splice_specifier"
          },
          {
            "type": "SEQ",
            "members": [
              {
                "type": "STRING",
                "value": "template"
              },
              {
                "type": "SYMBOL",
                "name": "_splice_specialization_specifier"
              }
            ]
          }
        ]
      }
    },
    "expansion_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "template"
        },
        {
          "type": "STRING",
          "value": "for"
        },
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "SYMBOL",
          "name": "_for_range_loop_body"
        },
        {
          "type": "STRING",
          "value": ")"
        },
        {
          "type": "FIELD",
          "name": "body",
          "content": {
            "type": "SYMBOL",
            "name": "statement"
          }
        }
      ]
    },
    "operator_name": {
      "type": "PREC",
      "value": 1,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "STRING",
            "value": "operator"
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "STRING",
                "value": "co_await"
              },
              {
                "type": "STRING",
                "value": "+"
              },
              {
                "type": "STRING",
                "value": "-"
              },
              {
                "type": "STRING",
                "value": "*"
              },
              {
                "type": "STRING",
                "value": "/"
              },
              {
                "type": "STRING",
                "value": "%"
              },
              {
                "type": "STRING",
                "value": "^"
              },
              {
                "type": "STRING",
                "value": "&"
              },
              {
                "type": "STRING",
                "value": "|"
              },
              {
                "type": "STRING",
                "value": "~"
              },
              {
                "type": "STRING",
                "value": "!"
              },
              {
                "type": "STRING",
                "value": "="
              },
              {
                "type": "STRING",
                "value": "<"
              },
              {
                "type": "STRING",
                "value": ">"
              },
              {
                "type": "STRING",
                "value": "+="
              },
              {
                "type": "STRING",
                "value": "-="
              },
              {
                "type": "STRING",
                "value": "*="
              },
              {
                "type": "STRING",
                "value": "/="
              },
              {
                "type": "STRING",
                "value": "%="
              },
              {
                "type": "STRING",
                "value": "^="
              },
              {
                "type": "STRING",
                "value": "&="
              },
              {
                "type": "STRING",
                "value": "|="
              },
              {
                "type": "STRING",
                "value": "<<"
              },
              {
                "type": "STRING",
                "value": ">>"
              },
              {
                "type": "STRING",
                "value": ">>="
              },
              {
                "type": "STRING",
                "value": "<<="
              },
              {
                "type": "STRING",
                "value": "=="
              },
              {
                "type": "STRING",
                "value": "!="
              },
              {
                "type": "STRING",
                "value": "<="
              },
              {
                "type": "STRING",
                "value": ">="
              },
              {
                "type": "STRING",
                "value": "<=>"
              },
              {
                "type": "STRING",
                "value": "&&"
              },
              {
                "type": "STRING",
                "value": "||"
              },
              {
                "type": "STRING",
                "value": "++"
              },
              {
                "type": "STRING",
                "value": "--"
              },
              {
                "type": "STRING",
                "value": ","
              },
              {
                "type": "STRING",
                "value": "->*"
              },
              {
                "type": "STRING",
                "value": "->"
              },
              {
                "type": "STRING",
                "value": "()"
              },
              {
                "type": "STRING",
                "value": "[]"
              },
              {
                "type": "STRING",
                "value": "xor"
              },
              {
                "type": "STRING",
                "value": "bitand"
              },
              {
                "type": "STRING",
                "value": "bitor"
              },
              {
                "type": "STRING",
                "value": "compl"
              },
              {
                "type": "STRING",
                "value": "not"
              },
              {
                "type": "STRING",
                "value": "xor_eq"
              },
              {
                "type": "STRING",
                "value": "and_eq"
              },
              {
                "type": "STRING",
                "value": "or_eq"
              },
              {
                "type": "STRING",
                "value": "not_eq"
              },
              {
                "type": "STRING",
                "value": "and"
              },
              {
                "type": "STRING",
                "value": "or"
              },
              {
                "type": "SEQ",
                "members": [
                  {
                    "type": "CHOICE",
                    "members": [
                      {
                        "type": "STRING",
                        "value": "new"
                      },
                      {
                        "type": "STRING",
                        "value": "delete"
                      }
                    ]
                  },
                  {
                    "type": "CHOICE",
                    "members": [
                      {
                        "type": "STRING",
                        "value": "[]"
                      },
                      {
                        "type": "BLANK"
                      }
                    ]
                  }
                ]
              },
              {
                "type": "SEQ",
                "members": [
                  {
                    "type": "STRING",
                    "value": "\"\""
                  },
                  {
                    "type": "SYMBOL",
                    "name": "identifier"
                  }
                ]
              }
            ]
          }
        ]
      }
    },
    "this": {
      "type": "STRING",
      "value": "this"
    },
    "literal_suffix": {
      "type": "IMMEDIATE_TOKEN",
      "content": {
        "type": "PATTERN",
        "value": "[a-zA-Z_]\\w*"
      }
    },
    "user_defined_literal": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "number_literal"
            },
            {
              "type": "SYMBOL",
              "name": "char_literal"
            },
            {
              "type": "SYMBOL",
              "name": "_string"
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "literal_suffix"
        }
      ]
    },
    "_namespace_identifier": {
      "type": "ALIAS",
      "content": {
        "type": "SYMBOL",
        "name": "identifier"
      },
      "named": true,
      "value": "namespace_identifier"
    }
  },
  "extras": [
    {
      "type": "PATTERN",
      "value": "\\s|\\\\\\r?\\n"
    },
    {
      "type": "SYMBOL",
      "name": "comment"
    }
  ],
  "conflicts": [
    [
      "type_specifier",
      "_declarator"
    ],
    [
      "type_specifier",
      "expression"
    ],
    [
      "sized_type_specifier"
    ],
    [
      "attributed_statement"
    ],
    [
      "_declaration_modifiers",
      "attributed_statement"
    ],
    [
      "_declaration_modifiers",
      "using_declaration"
    ],
    [
      "_declaration_modifiers",
      "attributed_statement",
      "using_declaration"
    ],
    [
      "_top_level_item",
      "_top_level_statement"
    ],
    [
      "_block_item",
      "statement"
    ],
    [
      "type_qualifier",
      "extension_expression"
    ],
    [
      "template_function",
      "template_type"
    ],
    [
      "template_function",
      "template_type",
      "expression"
    ],
    [
      "template_function",
      "template_type",
      "qualified_identifier"
    ],
    [
      "template_function",
      "template_type",
      "qualified_identifier",
      "qualified_type_identifier"
    ],
    [
      "template_type",
      "qualified_type_identifier"
    ],
    [
      "qualified_type_identifier",
      "qualified_identifier"
    ],
    [
      "comma_expression",
      "initializer_list"
    ],
    [
      "expression",
      "_declarator"
    ],
    [
      "expression",
      "structured_binding_declarator"
    ],
    [
      "expression",
      "_declarator",
      "type_specifier"
    ],
    [
      "expression",
      "identifier_parameter_pack_expansion"
    ],
    [
      "expression",
      "_lambda_capture_identifier"
    ],
    [
      "expression",
      "_lambda_capture"
    ],
    [
      "expression",
      "structured_binding_declarator",
      "_lambda_capture_identifier"
    ],
    [
      "structured_binding_declarator",
      "_lambda_capture_identifier"
    ],
    [
      "parameter_list",
      "argument_list"
    ],
    [
      "type_specifier",
      "call_expression"
    ],
    [
      "_declaration_specifiers",
      "_constructor_specifiers"
    ],
    [
      "_binary_fold_operator",
      "_fold_operator"
    ],
    [
      "_function_declarator_seq"
    ],
    [
      "type_specifier",
      "sized_type_specifier"
    ],
    [
      "initializer_pair",
      "comma_expression"
    ],
    [
      "expression_statement",
      "_for_statement_body"
    ],
    [
      "init_statement",
      "_for_statement_body"
    ],
    [
      "field_expression",
      "template_method",
      "template_type"
    ],
    [
      "field_expression",
      "template_method"
    ],
    [
      "qualified_field_identifier",
      "template_method",
      "template_type"
    ],
    [
      "type_specifier",
      "template_type",
      "template_function",
      "expression"
    ],
    [
      "splice_type_specifier",
      "splice_expression"
    ]
  ],
  "precedences": [
    [
      {
        "type": "SYMBOL",
        "name": "argument_list"
      },
      {
        "type": "SYMBOL",
        "name": "type_qualifier"
      }
    ],
    [
      {
        "type": "SYMBOL",
        "name": "_expression_not_binary"
      },
      {
        "type": "SYMBOL",
        "name": "_class_name"
      }
    ]
  ],
  "externals": [
    {
      "type": "SYMBOL",
      "name": "raw_string_delimiter"
    },
    {
      "type": "SYMBOL",
      "name": "raw_string_content"
    }
  ],
  "inline": [
    "_type_identifier",
    "_field_identifier",
    "_statement_identifier",
    "_non_case_statement",
    "_assignment_left_expression",
    "_expression_not_binary",
    "_namespace_identifier"
  ],
  "supertypes": [
    "expression",
    "statement",
    "type_specifier",
    "_declarator",
    "_field_declarator",
    "_type_declarator",
    "_abstract_declarator"
  ],
  "reserved": {}
}