{
  "name": "v",
  "word": "identifier",
  "rules": {
    "source_file": {
      "type": "REPEAT",
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "_top_level_declaration"
              },
              {
                "type": "SYMBOL",
                "name": "_statement"
              },
              {
                "type": "SYMBOL",
                "name": "_expression_with_blocks"
              }
            ]
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "STRING",
                "value": "\n"
              },
              {
                "type": "BLANK"
              }
            ]
          }
        ]
      }
    },
    "_c_directive": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "c_include_clause"
        },
        {
          "type": "SYMBOL",
          "name": "c_flag_clause"
        },
        {
          "type": "SYMBOL",
          "name": "c_define_clause"
        }
      ]
    },
    "c_include_clause": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "#include"
        },
        {
          "type": "FIELD",
          "name": "path",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "interpreted_string_literal"
              },
              {
                "type": "SYMBOL",
                "name": "c_include_path_string"
              }
            ]
          }
        }
      ]
    },
    "c_include_path_string": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "<"
        },
        {
          "type": "TOKEN",
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "REPEAT",
                "content": {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "PATTERN",
                      "value": "[^>\\n]"
                    },
                    {
                      "type": "STRING",
                      "value": "\\>"
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "type": "STRING",
          "value": ">"
        }
      ]
    },
    "c_flag_clause": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "#flag"
        },
        {
          "type": "FIELD",
          "name": "platform",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "identifier"
              },
              {
                "type": "BLANK"
              }
            ]
          }
        },
        {
          "type": "FIELD",
          "name": "flag",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SEQ",
                "members": [
                  {
                    "type": "STRING",
                    "value": "-"
                  },
                  {
                    "type": "CHOICE",
                    "members": [
                      {
                        "type": "PATTERN",
                        "value": "[a-zA-Zα-ωΑ-Ωµ]"
                      },
                      {
                        "type": "STRING",
                        "value": "_"
                      }
                    ]
                  }
                ]
              },
              {
                "type": "BLANK"
              }
            ]
          }
        },
        {
          "type": "FIELD",
          "name": "value",
          "content": {
            "type": "TOKEN",
            "content": {
              "type": "PREC",
              "value": -1,
              "content": {
                "type": "REPEAT1",
                "content": {
                  "type": "PATTERN",
                  "value": ".|\\\\\\r?\\n"
                }
              }
            }
          }
        }
      ]
    },
    "c_define_clause": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "#define"
        },
        {
          "type": "FIELD",
          "name": "name",
          "content": {
            "type": "SYMBOL",
            "name": "identifier"
          }
        },
        {
          "type": "FIELD",
          "name": "value",
          "content": {
            "type": "TOKEN",
            "content": {
              "type": "PREC",
              "value": -1,
              "content": {
                "type": "REPEAT1",
                "content": {
                  "type": "PATTERN",
                  "value": ".|\\\\\\r?\\n"
                }
              }
            }
          }
        }
      ]
    },
    "module_clause": {
      "type": "SEQ",
      "members": [
        {
          "type": "FIELD",
          "name": "attributes",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "attribute_list"
              },
              {
                "type": "BLANK"
              }
            ]
          }
        },
        {
          "type": "STRING",
          "value": "module"
        },
        {
          "type": "SYMBOL",
          "name": "_module_identifier"
        }
      ]
    },
    "import_declaration": {
      "type": "PREC_RIGHT",
      "value": 0,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "STRING",
            "value": "import"
          },
          {
            "type": "FIELD",
            "name": "path",
            "content": {
              "type": "SYMBOL",
              "name": "import_path"
            }
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "FIELD",
                    "name": "alias",
                    "content": {
                      "type": "SYMBOL",
                      "name": "import_alias"
                    }
                  },
                  {
                    "type": "FIELD",
                    "name": "symbols",
                    "content": {
                      "type": "SYMBOL",
                      "name": "import_symbols"
                    }
                  }
                ]
              },
              {
                "type": "BLANK"
              }
            ]
          }
        ]
      }
    },
    "import_path": {
      "type": "TOKEN",
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "PATTERN",
                "value": "[a-zA-Zα-ωΑ-Ωµ]"
              },
              {
                "type": "STRING",
                "value": "_"
              }
            ]
          },
          {
            "type": "REPEAT",
            "content": {
              "type": "CHOICE",
              "members": [
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "PATTERN",
                      "value": "[a-zA-Zα-ωΑ-Ωµ]"
                    },
                    {
                      "type": "STRING",
                      "value": "_"
                    }
                  ]
                },
                {
                  "type": "PATTERN",
                  "value": "[0-9]"
                },
                {
                  "type": "STRING",
                  "value": "."
                }
              ]
            }
          }
        ]
      }
    },
    "import_symbols": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "{"
        },
        {
          "type": "SYMBOL",
          "name": "import_symbols_list"
        },
        {
          "type": "STRING",
          "value": "}"
        }
      ]
    },
    "import_symbols_list": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "identifier"
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "STRING",
                "value": ","
              },
              {
                "type": "SYMBOL",
                "name": "identifier"
              }
            ]
          }
        }
      ]
    },
    "import_alias": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "as"
        },
        {
          "type": "FIELD",
          "name": "name",
          "content": {
            "type": "SYMBOL",
            "name": "_module_identifier"
          }
        }
      ]
    },
    "global_var_declaration": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "__global"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_global_var_spec"
            },
            {
              "type": "SYMBOL",
              "name": "global_var_type_initializer"
            },
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "STRING",
                  "value": "("
                },
                {
                  "type": "REPEAT",
                  "content": {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "CHOICE",
                        "members": [
                          {
                            "type": "SYMBOL",
                            "name": "_global_var_spec"
                          },
                          {
                            "type": "SYMBOL",
                            "name": "global_var_type_initializer"
                          }
                        ]
                      },
                      {
                        "type": "STRING",
                        "value": "\n"
                      }
                    ]
                  }
                },
                {
                  "type": "STRING",
                  "value": ")"
                }
              ]
            }
          ]
        }
      ]
    },
    "_global_var_spec": {
      "type": "ALIAS",
      "content": {
        "type": "SYMBOL",
        "name": "const_spec"
      },
      "named": true,
      "value": "global_var_spec"
    },
    "global_var_type_initializer": {
      "type": "SEQ",
      "members": [
        {
          "type": "FIELD",
          "name": "name",
          "content": {
            "type": "SYMBOL",
            "name": "identifier"
          }
        },
        {
          "type": "FIELD",
          "name": "type",
          "content": {
            "type": "SYMBOL",
            "name": "_type"
          }
        }
      ]
    },
    "const_declaration": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": "pub"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "const"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "const_spec"
            },
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "STRING",
                  "value": "("
                },
                {
                  "type": "REPEAT",
                  "content": {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "SYMBOL",
                        "name": "const_spec"
                      },
                      {
                        "type": "STRING",
                        "value": "\n"
                      }
                    ]
                  }
                },
                {
                  "type": "STRING",
                  "value": ")"
                }
              ]
            }
          ]
        }
      ]
    },
    "const_spec": {
      "type": "PREC_LEFT",
      "value": 0,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "FIELD",
            "name": "name",
            "content": {
              "type": "SYMBOL",
              "name": "identifier"
            }
          },
          {
            "type": "STRING",
            "value": "="
          },
          {
            "type": "FIELD",
            "name": "value",
            "content": {
              "type": "SYMBOL",
              "name": "_expression"
            }
          }
        ]
      }
    },
    "attribute_spec": {
      "type": "PREC",
      "value": 8,
      "content": {
        "type": "CHOICE",
        "members": [
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "ALIAS",
                "content": {
                  "type": "STRING",
                  "value": "unsafe"
                },
                "named": true,
                "value": "identifier"
              },
              {
                "type": "SYMBOL",
                "name": "identifier"
              }
            ]
          },
          {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "name",
                "content": {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "ALIAS",
                      "content": {
                        "type": "STRING",
                        "value": "unsafe"
                      },
                      "named": true,
                      "value": "identifier"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "identifier"
                    }
                  ]
                }
              },
              {
                "type": "STRING",
                "value": ":"
              },
              {
                "type": "FIELD",
                "name": "value",
                "content": {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "SYMBOL",
                      "name": "_string_literal"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "identifier"
                    }
                  ]
                }
              }
            ]
          }
        ]
      }
    },
    "attribute_declaration": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "["
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "SYMBOL",
              "name": "attribute_spec"
            },
            {
              "type": "REPEAT",
              "content": {
                "type": "SEQ",
                "members": [
                  {
                    "type": "STRING",
                    "value": ";"
                  },
                  {
                    "type": "SYMBOL",
                    "name": "attribute_spec"
                  }
                ]
              }
            }
          ]
        },
        {
          "type": "STRING",
          "value": "]"
        }
      ]
    },
    "attribute_list": {
      "type": "REPEAT1",
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "SYMBOL",
            "name": "attribute_declaration"
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "STRING",
                "value": "\n"
              },
              {
                "type": "BLANK"
              }
            ]
          }
        ]
      }
    },
    "_function_identifier": {
      "type": "PREC",
      "value": 1,
      "content": {
        "type": "CHOICE",
        "members": [
          {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "name",
                "content": {
                  "type": "SYMBOL",
                  "name": "identifier"
                }
              },
              {
                "type": "FIELD",
                "name": "type_parameters",
                "content": {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "SYMBOL",
                      "name": "type_parameters"
                    },
                    {
                      "type": "BLANK"
                    }
                  ]
                }
              }
            ]
          },
          {
            "type": "FIELD",
            "name": "name",
            "content": {
              "type": "ALIAS",
              "content": {
                "type": "STRING",
                "value": "+"
              },
              "named": true,
              "value": "identifier"
            }
          },
          {
            "type": "FIELD",
            "name": "name",
            "content": {
              "type": "ALIAS",
              "content": {
                "type": "STRING",
                "value": "-"
              },
              "named": true,
              "value": "identifier"
            }
          },
          {
            "type": "FIELD",
            "name": "name",
            "content": {
              "type": "ALIAS",
              "content": {
                "type": "STRING",
                "value": "*"
              },
              "named": true,
              "value": "identifier"
            }
          },
          {
            "type": "FIELD",
            "name": "name",
            "content": {
              "type": "ALIAS",
              "content": {
                "type": "STRING",
                "value": "/"
              },
              "named": true,
              "value": "identifier"
            }
          },
          {
            "type": "FIELD",
            "name": "name",
            "content": {
              "type": "ALIAS",
              "content": {
                "type": "STRING",
                "value": "%"
              },
              "named": true,
              "value": "identifier"
            }
          },
          {
            "type": "FIELD",
            "name": "name",
            "content": {
              "type": "ALIAS",
              "content": {
                "type": "STRING",
                "value": "<"
              },
              "named": true,
              "value": "identifier"
            }
          },
          {
            "type": "FIELD",
            "name": "name",
            "content": {
              "type": "ALIAS",
              "content": {
                "type": "STRING",
                "value": ">"
              },
              "named": true,
              "value": "identifier"
            }
          },
          {
            "type": "FIELD",
            "name": "name",
            "content": {
              "type": "ALIAS",
              "content": {
                "type": "STRING",
                "value": "=="
              },
              "named": true,
              "value": "identifier"
            }
          },
          {
            "type": "FIELD",
            "name": "name",
            "content": {
              "type": "ALIAS",
              "content": {
                "type": "STRING",
                "value": "!="
              },
              "named": true,
              "value": "identifier"
            }
          },
          {
            "type": "FIELD",
            "name": "name",
            "content": {
              "type": "ALIAS",
              "content": {
                "type": "STRING",
                "value": "<="
              },
              "named": true,
              "value": "identifier"
            }
          },
          {
            "type": "FIELD",
            "name": "name",
            "content": {
              "type": "ALIAS",
              "content": {
                "type": "STRING",
                "value": ">="
              },
              "named": true,
              "value": "identifier"
            }
          }
        ]
      }
    },
    "function_declaration": {
      "type": "PREC_RIGHT",
      "value": 1,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "FIELD",
            "name": "attributes",
            "content": {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "attribute_list"
                },
                {
                  "type": "BLANK"
                }
              ]
            }
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "STRING",
                "value": "pub"
              },
              {
                "type": "BLANK"
              }
            ]
          },
          {
            "type": "STRING",
            "value": "fn"
          },
          {
            "type": "FIELD",
            "name": "receiver",
            "content": {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "parameter_list"
                },
                {
                  "type": "BLANK"
                }
              ]
            }
          },
          {
            "type": "FIELD",
            "name": "language",
            "content": {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "language_spec"
                },
                {
                  "type": "BLANK"
                }
              ]
            }
          },
          {
            "type": "SYMBOL",
            "name": "_function_identifier"
          },
          {
            "type": "FIELD",
            "name": "parameters",
            "content": {
              "type": "SYMBOL",
              "name": "parameter_list"
            }
          },
          {
            "type": "FIELD",
            "name": "result",
            "content": {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "_type"
                },
                {
                  "type": "BLANK"
                }
              ]
            }
          },
          {
            "type": "FIELD",
            "name": "body",
            "content": {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "block"
                },
                {
                  "type": "BLANK"
                }
              ]
            }
          }
        ]
      }
    },
    "parameter_list": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "SEQ",
                      "members": [
                        {
                          "type": "SYMBOL",
                          "name": "parameter_declaration"
                        },
                        {
                          "type": "REPEAT",
                          "content": {
                            "type": "SEQ",
                            "members": [
                              {
                                "type": "STRING",
                                "value": ","
                              },
                              {
                                "type": "SYMBOL",
                                "name": "parameter_declaration"
                              }
                            ]
                          }
                        }
                      ]
                    },
                    {
                      "type": "BLANK"
                    }
                  ]
                },
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "STRING",
                      "value": ","
                    },
                    {
                      "type": "BLANK"
                    }
                  ]
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": ")"
        }
      ]
    },
    "parameter_declaration": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": "mut"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "FIELD",
          "name": "name",
          "content": {
            "type": "SYMBOL",
            "name": "identifier"
          }
        },
        {
          "type": "FIELD",
          "name": "type",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "_type"
              },
              {
                "type": "SYMBOL",
                "name": "variadic_type"
              }
            ]
          }
        }
      ]
    },
    "type_declaration": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": "pub"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "type"
        },
        {
          "type": "FIELD",
          "name": "name",
          "content": {
            "type": "SYMBOL",
            "name": "_type_identifier"
          }
        },
        {
          "type": "STRING",
          "value": "="
        },
        {
          "type": "FIELD",
          "name": "types",
          "content": {
            "type": "SYMBOL",
            "name": "type_list"
          }
        }
      ]
    },
    "type_list": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "_type"
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "STRING",
                "value": "|"
              },
              {
                "type": "SYMBOL",
                "name": "_type"
              }
            ]
          }
        }
      ]
    },
    "_type": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "option_type"
        },
        {
          "type": "SYMBOL",
          "name": "_simple_type"
        },
        {
          "type": "SYMBOL",
          "name": "multi_return_type"
        }
      ]
    },
    "option_type": {
      "type": "PREC_RIGHT",
      "value": 0,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "STRING",
            "value": "?"
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "SYMBOL",
                    "name": "_simple_type"
                  },
                  {
                    "type": "SYMBOL",
                    "name": "multi_return_type"
                  }
                ]
              },
              {
                "type": "BLANK"
              }
            ]
          }
        ]
      }
    },
    "multi_return_type": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_simple_type"
            },
            {
              "type": "REPEAT",
              "content": {
                "type": "SEQ",
                "members": [
                  {
                    "type": "STRING",
                    "value": ","
                  },
                  {
                    "type": "SYMBOL",
                    "name": "_simple_type"
                  }
                ]
              }
            }
          ]
        },
        {
          "type": "STRING",
          "value": ")"
        }
      ]
    },
    "_simple_type": {
      "type": "PREC_LEFT",
      "value": -1,
      "content": {
        "type": "CHOICE",
        "members": [
          {
            "type": "PREC_DYNAMIC",
            "value": -1,
            "content": {
              "type": "SYMBOL",
              "name": "_type_identifier"
            }
          },
          {
            "type": "SYMBOL",
            "name": "binded_type"
          },
          {
            "type": "SYMBOL",
            "name": "qualified_type"
          },
          {
            "type": "SYMBOL",
            "name": "pointer_type"
          },
          {
            "type": "SYMBOL",
            "name": "array_type"
          },
          {
            "type": "SYMBOL",
            "name": "fixed_array_type"
          },
          {
            "type": "SYMBOL",
            "name": "map_type"
          },
          {
            "type": "SYMBOL",
            "name": "function_type"
          },
          {
            "type": "SYMBOL",
            "name": "generic_type"
          },
          {
            "type": "SYMBOL",
            "name": "channel_type"
          }
        ]
      }
    },
    "type_parameters": {
      "type": "PREC",
      "value": 1,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "STRING",
            "value": "<"
          },
          {
            "type": "SEQ",
            "members": [
              {
                "type": "SYMBOL",
                "name": "_type"
              },
              {
                "type": "REPEAT",
                "content": {
                  "type": "SEQ",
                  "members": [
                    {
                      "type": "STRING",
                      "value": ","
                    },
                    {
                      "type": "SYMBOL",
                      "name": "_type"
                    }
                  ]
                }
              }
            ]
          },
          {
            "type": "STRING",
            "value": ">"
          }
        ]
      }
    },
    "channel_type": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "chan"
        },
        {
          "type": "FIELD",
          "name": "value",
          "content": {
            "type": "SYMBOL",
            "name": "_simple_type"
          }
        }
      ]
    },
    "generic_type": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "qualified_type"
            },
            {
              "type": "SYMBOL",
              "name": "_type_identifier"
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "type_parameters"
        }
      ]
    },
    "binded_type": {
      "type": "PREC_RIGHT",
      "value": -1,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "FIELD",
            "name": "language",
            "content": {
              "type": "SYMBOL",
              "name": "language_spec"
            }
          },
          {
            "type": "FIELD",
            "name": "name",
            "content": {
              "type": "SYMBOL",
              "name": "_type_identifier"
            }
          }
        ]
      }
    },
    "language_spec": {
      "type": "SEQ",
      "members": [
        {
          "type": "FIELD",
          "name": "language",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "STRING",
                "value": "C"
              },
              {
                "type": "STRING",
                "value": "JS"
              }
            ]
          }
        },
        {
          "type": "STRING",
          "value": "."
        }
      ]
    },
    "pointer_type": {
      "type": "PREC",
      "value": 6,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "STRING",
            "value": "&"
          },
          {
            "type": "SYMBOL",
            "name": "_simple_type"
          }
        ]
      }
    },
    "array_type": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "[]"
        },
        {
          "type": "FIELD",
          "name": "element",
          "content": {
            "type": "SYMBOL",
            "name": "_simple_type"
          }
        }
      ]
    },
    "fixed_array_type": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "["
        },
        {
          "type": "FIELD",
          "name": "limit",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "identifier"
              },
              {
                "type": "SYMBOL",
                "name": "int_literal"
              }
            ]
          }
        },
        {
          "type": "STRING",
          "value": "]"
        },
        {
          "type": "FIELD",
          "name": "element",
          "content": {
            "type": "SYMBOL",
            "name": "_simple_type"
          }
        }
      ]
    },
    "variadic_type": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "..."
        },
        {
          "type": "SYMBOL",
          "name": "_simple_type"
        }
      ]
    },
    "expression_list": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "_expression"
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "STRING",
                "value": ","
              },
              {
                "type": "SYMBOL",
                "name": "_expression"
              }
            ]
          }
        }
      ]
    },
    "expression_with_blocks_list": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "_expression_with_blocks"
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "STRING",
                "value": ","
              },
              {
                "type": "SYMBOL",
                "name": "_expression_with_blocks"
              }
            ]
          }
        }
      ]
    },
    "identifier_list": {
      "type": "PREC_RIGHT",
      "value": 1,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "imaginary_literal"
              },
              {
                "type": "SYMBOL",
                "name": "_mutable_identifier"
              },
              {
                "type": "SYMBOL",
                "name": "identifier"
              }
            ]
          },
          {
            "type": "REPEAT",
            "content": {
              "type": "SEQ",
              "members": [
                {
                  "type": "STRING",
                  "value": ","
                },
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "SYMBOL",
                      "name": "imaginary_literal"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "_mutable_identifier"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "identifier"
                    }
                  ]
                }
              ]
            }
          }
        ]
      }
    },
    "enum_declaration": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "attribute_list"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": "pub"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "enum"
        },
        {
          "type": "FIELD",
          "name": "name",
          "content": {
            "type": "PREC_DYNAMIC",
            "value": -1,
            "content": {
              "type": "SYMBOL",
              "name": "_type_identifier"
            }
          }
        },
        {
          "type": "SYMBOL",
          "name": "enum_member_declaration_list"
        }
      ]
    },
    "enum_member_declaration_list": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "{"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "REPEAT",
                  "content": {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "SYMBOL",
                        "name": "enum_member"
                      },
                      {
                        "type": "CHOICE",
                        "members": [
                          {
                            "type": "STRING",
                            "value": "\n"
                          },
                          {
                            "type": "BLANK"
                          }
                        ]
                      }
                    ]
                  }
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "}"
        }
      ]
    },
    "enum_member": {
      "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": "int_literal"
                  }
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "enum_identifier": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "."
        },
        {
          "type": "FIELD",
          "name": "field_name",
          "content": {
            "type": "SYMBOL",
            "name": "identifier"
          }
        }
      ]
    },
    "struct_declaration": {
      "type": "SEQ",
      "members": [
        {
          "type": "FIELD",
          "name": "attributes",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "attribute_list"
              },
              {
                "type": "BLANK"
              }
            ]
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": "pub"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "struct"
        },
        {
          "type": "FIELD",
          "name": "name",
          "content": {
            "type": "PREC_DYNAMIC",
            "value": -1,
            "content": {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "binded_type"
                },
                {
                  "type": "SYMBOL",
                  "name": "_type_identifier"
                },
                {
                  "type": "SYMBOL",
                  "name": "generic_type"
                }
              ]
            }
          }
        },
        {
          "type": "SYMBOL",
          "name": "struct_field_declaration_list"
        }
      ]
    },
    "struct_field_scope": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": "pub"
            },
            {
              "type": "STRING",
              "value": "mut"
            },
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "STRING",
                  "value": "pub"
                },
                {
                  "type": "STRING",
                  "value": "mut"
                }
              ]
            },
            {
              "type": "STRING",
              "value": "__global"
            }
          ]
        },
        {
          "type": "STRING",
          "value": ":"
        }
      ]
    },
    "struct_field_declaration_list": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "{"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "REPEAT",
              "content": {
                "type": "SEQ",
                "members": [
                  {
                    "type": "CHOICE",
                    "members": [
                      {
                        "type": "SYMBOL",
                        "name": "struct_field_scope"
                      },
                      {
                        "type": "SYMBOL",
                        "name": "struct_field_declaration"
                      }
                    ]
                  },
                  {
                    "type": "CHOICE",
                    "members": [
                      {
                        "type": "STRING",
                        "value": "\n"
                      },
                      {
                        "type": "BLANK"
                      }
                    ]
                  }
                ]
              }
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "}"
        }
      ]
    },
    "struct_field_declaration": {
      "type": "PREC_RIGHT",
      "value": 0,
      "content": {
        "type": "CHOICE",
        "members": [
          {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "name",
                "content": {
                  "type": "SYMBOL",
                  "name": "_field_identifier"
                }
              },
              {
                "type": "FIELD",
                "name": "type",
                "content": {
                  "type": "SYMBOL",
                  "name": "_type"
                }
              },
              {
                "type": "FIELD",
                "name": "attributes",
                "content": {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "SYMBOL",
                      "name": "attribute_declaration"
                    },
                    {
                      "type": "BLANK"
                    }
                  ]
                }
              },
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "STRING",
                        "value": "="
                      },
                      {
                        "type": "FIELD",
                        "name": "default_value",
                        "content": {
                          "type": "SYMBOL",
                          "name": "_expression"
                        }
                      }
                    ]
                  },
                  {
                    "type": "BLANK"
                  }
                ]
              },
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "STRING",
                    "value": "\n"
                  },
                  {
                    "type": "BLANK"
                  }
                ]
              }
            ]
          },
          {
            "type": "FIELD",
            "name": "type",
            "content": {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "_type_identifier"
                },
                {
                  "type": "SYMBOL",
                  "name": "qualified_type"
                }
              ]
            }
          }
        ]
      }
    },
    "interface_declaration": {
      "type": "SEQ",
      "members": [
        {
          "type": "FIELD",
          "name": "attributes",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "attribute_list"
              },
              {
                "type": "BLANK"
              }
            ]
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": "pub"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "interface"
        },
        {
          "type": "FIELD",
          "name": "name",
          "content": {
            "type": "PREC_DYNAMIC",
            "value": -1,
            "content": {
              "type": "SYMBOL",
              "name": "_type_identifier"
            }
          }
        },
        {
          "type": "SYMBOL",
          "name": "interface_spec_list"
        }
      ]
    },
    "interface_spec_list": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "{"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "REPEAT",
              "content": {
                "type": "SEQ",
                "members": [
                  {
                    "type": "CHOICE",
                    "members": [
                      {
                        "type": "SYMBOL",
                        "name": "struct_field_declaration"
                      },
                      {
                        "type": "SYMBOL",
                        "name": "interface_spec"
                      },
                      {
                        "type": "SYMBOL",
                        "name": "interface_field_scope"
                      }
                    ]
                  },
                  {
                    "type": "CHOICE",
                    "members": [
                      {
                        "type": "STRING",
                        "value": "\n"
                      },
                      {
                        "type": "BLANK"
                      }
                    ]
                  }
                ]
              }
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "}"
        }
      ]
    },
    "interface_field_scope": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "mut:"
        }
      ]
    },
    "interface_spec": {
      "type": "PREC_RIGHT",
      "value": 0,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "FIELD",
            "name": "name",
            "content": {
              "type": "SYMBOL",
              "name": "_field_identifier"
            }
          },
          {
            "type": "FIELD",
            "name": "parameters",
            "content": {
              "type": "SYMBOL",
              "name": "parameter_list"
            }
          },
          {
            "type": "FIELD",
            "name": "result",
            "content": {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "_type"
                },
                {
                  "type": "BLANK"
                }
              ]
            }
          }
        ]
      }
    },
    "map_type": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "map["
        },
        {
          "type": "FIELD",
          "name": "key",
          "content": {
            "type": "SYMBOL",
            "name": "_simple_type"
          }
        },
        {
          "type": "STRING",
          "value": "]"
        },
        {
          "type": "FIELD",
          "name": "value",
          "content": {
            "type": "SYMBOL",
            "name": "_type"
          }
        }
      ]
    },
    "function_type": {
      "type": "PREC_RIGHT",
      "value": 0,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "STRING",
            "value": "fn"
          },
          {
            "type": "FIELD",
            "name": "parameters",
            "content": {
              "type": "SYMBOL",
              "name": "parameter_list"
            }
          },
          {
            "type": "FIELD",
            "name": "result",
            "content": {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "_type"
                },
                {
                  "type": "BLANK"
                }
              ]
            }
          }
        ]
      }
    },
    "block": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "{"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_statement_list"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "}"
        }
      ]
    },
    "_statement_list": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_statement"
            },
            {
              "type": "SYMBOL",
              "name": "_expression_with_blocks"
            }
          ]
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "STRING",
                "value": "\n"
              },
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "SYMBOL",
                    "name": "_statement"
                  },
                  {
                    "type": "SYMBOL",
                    "name": "_expression_with_blocks"
                  }
                ]
              }
            ]
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": "\n"
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "_top_level_declaration": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "module_clause"
        },
        {
          "type": "SYMBOL",
          "name": "_c_directive"
        },
        {
          "type": "SYMBOL",
          "name": "import_declaration"
        },
        {
          "type": "SYMBOL",
          "name": "const_declaration"
        },
        {
          "type": "SYMBOL",
          "name": "type_declaration"
        },
        {
          "type": "SYMBOL",
          "name": "struct_declaration"
        },
        {
          "type": "SYMBOL",
          "name": "interface_declaration"
        },
        {
          "type": "SYMBOL",
          "name": "enum_declaration"
        },
        {
          "type": "SYMBOL",
          "name": "function_declaration"
        },
        {
          "type": "SYMBOL",
          "name": "global_var_declaration"
        }
      ]
    },
    "_statement": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "_simple_statement"
        },
        {
          "type": "SYMBOL",
          "name": "return_statement"
        },
        {
          "type": "SYMBOL",
          "name": "go_statement"
        },
        {
          "type": "SYMBOL",
          "name": "defer_statement"
        },
        {
          "type": "SYMBOL",
          "name": "for_statement"
        },
        {
          "type": "SYMBOL",
          "name": "comptime_for_statement"
        },
        {
          "type": "SYMBOL",
          "name": "break_statement"
        },
        {
          "type": "SYMBOL",
          "name": "continue_statement"
        },
        {
          "type": "SYMBOL",
          "name": "block"
        },
        {
          "type": "SYMBOL",
          "name": "empty_statement"
        },
        {
          "type": "SYMBOL",
          "name": "asm_statement"
        },
        {
          "type": "SYMBOL",
          "name": "assert_statement"
        },
        {
          "type": "SYMBOL",
          "name": "goto_statement"
        },
        {
          "type": "SYMBOL",
          "name": "labeled_statement"
        },
        {
          "type": "SYMBOL",
          "name": "empty_labeled_statement"
        },
        {
          "type": "SYMBOL",
          "name": "send_statement"
        }
      ]
    },
    "asm_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "asm"
        },
        {
          "type": "SYMBOL",
          "name": "identifier"
        },
        {
          "type": "SYMBOL",
          "name": "_content_block"
        }
      ]
    },
    "empty_statement": {
      "type": "STRING",
      "value": ";"
    },
    "_simple_statement": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "_expression"
        },
        {
          "type": "SYMBOL",
          "name": "inc_statement"
        },
        {
          "type": "SYMBOL",
          "name": "dec_statement"
        },
        {
          "type": "SYMBOL",
          "name": "assignment_statement"
        },
        {
          "type": "SYMBOL",
          "name": "short_var_declaration"
        }
      ]
    },
    "inc_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "_expression"
        },
        {
          "type": "STRING",
          "value": "++"
        }
      ]
    },
    "dec_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "_expression"
        },
        {
          "type": "STRING",
          "value": "--"
        }
      ]
    },
    "send_statement": {
      "type": "PREC",
      "value": 6,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "FIELD",
            "name": "channel",
            "content": {
              "type": "SYMBOL",
              "name": "_expression"
            }
          },
          {
            "type": "STRING",
            "value": "<-"
          },
          {
            "type": "FIELD",
            "name": "value",
            "content": {
              "type": "SYMBOL",
              "name": "_expression"
            }
          }
        ]
      }
    },
    "assignment_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "FIELD",
          "name": "left",
          "content": {
            "type": "SYMBOL",
            "name": "expression_list"
          }
        },
        {
          "type": "FIELD",
          "name": "operator",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "STRING",
                "value": "*="
              },
              {
                "type": "STRING",
                "value": "/="
              },
              {
                "type": "STRING",
                "value": "%="
              },
              {
                "type": "STRING",
                "value": "<<="
              },
              {
                "type": "STRING",
                "value": ">>="
              },
              {
                "type": "STRING",
                "value": "&="
              },
              {
                "type": "STRING",
                "value": "&^="
              },
              {
                "type": "STRING",
                "value": "+="
              },
              {
                "type": "STRING",
                "value": "-="
              },
              {
                "type": "STRING",
                "value": "|="
              },
              {
                "type": "STRING",
                "value": "^="
              },
              {
                "type": "STRING",
                "value": "="
              }
            ]
          }
        },
        {
          "type": "FIELD",
          "name": "right",
          "content": {
            "type": "ALIAS",
            "content": {
              "type": "SEQ",
              "members": [
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "SYMBOL",
                      "name": "_expression"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "_expression_with_blocks"
                    }
                  ]
                },
                {
                  "type": "REPEAT",
                  "content": {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "STRING",
                        "value": ","
                      },
                      {
                        "type": "CHOICE",
                        "members": [
                          {
                            "type": "SYMBOL",
                            "name": "_expression"
                          },
                          {
                            "type": "SYMBOL",
                            "name": "_expression_with_blocks"
                          }
                        ]
                      }
                    ]
                  }
                }
              ]
            },
            "named": true,
            "value": "expression_list"
          }
        }
      ]
    },
    "short_var_declaration": {
      "type": "SEQ",
      "members": [
        {
          "type": "FIELD",
          "name": "left",
          "content": {
            "type": "SYMBOL",
            "name": "identifier_list"
          }
        },
        {
          "type": "STRING",
          "value": ":="
        },
        {
          "type": "FIELD",
          "name": "right",
          "content": {
            "type": "ALIAS",
            "content": {
              "type": "SEQ",
              "members": [
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "SYMBOL",
                      "name": "_expression"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "_expression_with_blocks"
                    }
                  ]
                },
                {
                  "type": "REPEAT",
                  "content": {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "STRING",
                        "value": ","
                      },
                      {
                        "type": "CHOICE",
                        "members": [
                          {
                            "type": "SYMBOL",
                            "name": "_expression"
                          },
                          {
                            "type": "SYMBOL",
                            "name": "_expression_with_blocks"
                          }
                        ]
                      }
                    ]
                  }
                }
              ]
            },
            "named": true,
            "value": "expression_list"
          }
        }
      ]
    },
    "break_statement": {
      "type": "PREC_LEFT",
      "value": 0,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "STRING",
            "value": "break"
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "ALIAS",
                "content": {
                  "type": "SYMBOL",
                  "name": "identifier"
                },
                "named": true,
                "value": "label_name"
              },
              {
                "type": "BLANK"
              }
            ]
          }
        ]
      }
    },
    "continue_statement": {
      "type": "PREC_LEFT",
      "value": 0,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "STRING",
            "value": "continue"
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "ALIAS",
                "content": {
                  "type": "SYMBOL",
                  "name": "identifier"
                },
                "named": true,
                "value": "label_name"
              },
              {
                "type": "BLANK"
              }
            ]
          }
        ]
      }
    },
    "return_statement": {
      "type": "PREC_LEFT",
      "value": 0,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "STRING",
            "value": "return"
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "SYMBOL",
                    "name": "expression_list"
                  },
                  {
                    "type": "SYMBOL",
                    "name": "expression_with_blocks_list"
                  }
                ]
              },
              {
                "type": "BLANK"
              }
            ]
          }
        ]
      }
    },
    "go_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "go"
        },
        {
          "type": "SYMBOL",
          "name": "_expression"
        }
      ]
    },
    "defer_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "defer"
        },
        {
          "type": "SYMBOL",
          "name": "block"
        }
      ]
    },
    "assert_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "assert"
        },
        {
          "type": "SYMBOL",
          "name": "_expression"
        }
      ]
    },
    "unsafe_expression": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "unsafe"
        },
        {
          "type": "SYMBOL",
          "name": "block"
        }
      ]
    },
    "goto_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "goto"
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "SYMBOL",
            "name": "identifier"
          },
          "named": true,
          "value": "label_name"
        }
      ]
    },
    "labeled_statement": {
      "type": "PREC_RIGHT",
      "value": 1,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "FIELD",
            "name": "label",
            "content": {
              "type": "ALIAS",
              "content": {
                "type": "SYMBOL",
                "name": "identifier"
              },
              "named": true,
              "value": "label_name"
            }
          },
          {
            "type": "STRING",
            "value": ":"
          },
          {
            "type": "SYMBOL",
            "name": "_statement"
          }
        ]
      }
    },
    "empty_labeled_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "FIELD",
          "name": "label",
          "content": {
            "type": "ALIAS",
            "content": {
              "type": "SYMBOL",
              "name": "identifier"
            },
            "named": true,
            "value": "label_name"
          }
        },
        {
          "type": "STRING",
          "value": ":"
        }
      ]
    },
    "if_expression": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "if"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "FIELD",
              "name": "condition",
              "content": {
                "type": "SYMBOL",
                "name": "_expression"
              }
            },
            {
              "type": "FIELD",
              "name": "initializer",
              "content": {
                "type": "SYMBOL",
                "name": "short_var_declaration"
              }
            }
          ]
        },
        {
          "type": "FIELD",
          "name": "consequence",
          "content": {
            "type": "SYMBOL",
            "name": "block"
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "STRING",
                  "value": "else"
                },
                {
                  "type": "FIELD",
                  "name": "alternative",
                  "content": {
                    "type": "CHOICE",
                    "members": [
                      {
                        "type": "SYMBOL",
                        "name": "block"
                      },
                      {
                        "type": "SYMBOL",
                        "name": "if_expression"
                      }
                    ]
                  }
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "comptime_block": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "{"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "SYMBOL",
                      "name": "_statement"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "_expression_with_blocks"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "_c_directive"
                    }
                  ]
                },
                {
                  "type": "REPEAT",
                  "content": {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "STRING",
                        "value": "\n"
                      },
                      {
                        "type": "CHOICE",
                        "members": [
                          {
                            "type": "SYMBOL",
                            "name": "_statement"
                          },
                          {
                            "type": "SYMBOL",
                            "name": "_expression_with_blocks"
                          },
                          {
                            "type": "SYMBOL",
                            "name": "_c_directive"
                          }
                        ]
                      }
                    ]
                  }
                },
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "STRING",
                      "value": "\n"
                    },
                    {
                      "type": "BLANK"
                    }
                  ]
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "}"
        }
      ]
    },
    "comptime_if_expression": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "$if"
        },
        {
          "type": "FIELD",
          "name": "condition",
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "SYMBOL",
                "name": "_expression"
              },
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "STRING",
                    "value": "?"
                  },
                  {
                    "type": "BLANK"
                  }
                ]
              }
            ]
          }
        },
        {
          "type": "FIELD",
          "name": "consequence",
          "content": {
            "type": "ALIAS",
            "content": {
              "type": "SYMBOL",
              "name": "comptime_block"
            },
            "named": true,
            "value": "block"
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "STRING",
                  "value": "$else"
                },
                {
                  "type": "FIELD",
                  "name": "alternative",
                  "content": {
                    "type": "CHOICE",
                    "members": [
                      {
                        "type": "ALIAS",
                        "content": {
                          "type": "SYMBOL",
                          "name": "comptime_block"
                        },
                        "named": true,
                        "value": "block"
                      },
                      {
                        "type": "SYMBOL",
                        "name": "comptime_if_expression"
                      }
                    ]
                  }
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "for_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "for"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "for_in_operator"
                },
                {
                  "type": "SYMBOL",
                  "name": "_expression"
                },
                {
                  "type": "SYMBOL",
                  "name": "cstyle_for_clause"
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "FIELD",
          "name": "body",
          "content": {
            "type": "SYMBOL",
            "name": "block"
          }
        }
      ]
    },
    "cstyle_for_clause": {
      "type": "PREC_RIGHT",
      "value": 0,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "FIELD",
            "name": "initializer",
            "content": {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "_simple_statement"
                },
                {
                  "type": "BLANK"
                }
              ]
            }
          },
          {
            "type": "STRING",
            "value": ";"
          },
          {
            "type": "FIELD",
            "name": "condition",
            "content": {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "_expression"
                },
                {
                  "type": "BLANK"
                }
              ]
            }
          },
          {
            "type": "STRING",
            "value": ";"
          },
          {
            "type": "FIELD",
            "name": "update",
            "content": {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "_simple_statement"
                },
                {
                  "type": "BLANK"
                }
              ]
            }
          }
        ]
      }
    },
    "for_in_operator": {
      "type": "SEQ",
      "members": [
        {
          "type": "FIELD",
          "name": "left",
          "content": {
            "type": "SYMBOL",
            "name": "identifier_list"
          }
        },
        {
          "type": "STRING",
          "value": "in"
        },
        {
          "type": "FIELD",
          "name": "right",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "_expression"
              },
              {
                "type": "ALIAS",
                "content": {
                  "type": "SYMBOL",
                  "name": "_range"
                },
                "named": true,
                "value": "range"
              }
            ]
          }
        }
      ]
    },
    "comptime_for_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "$for"
        },
        {
          "type": "SYMBOL",
          "name": "for_in_operator"
        },
        {
          "type": "FIELD",
          "name": "body",
          "content": {
            "type": "SYMBOL",
            "name": "block"
          }
        }
      ]
    },
    "match_expression": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "match"
        },
        {
          "type": "FIELD",
          "name": "condition",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "_expression"
              },
              {
                "type": "SYMBOL",
                "name": "_mutable_identifier"
              }
            ]
          }
        },
        {
          "type": "STRING",
          "value": "{"
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "expression_case"
          }
        },
        {
          "type": "SYMBOL",
          "name": "default_case"
        },
        {
          "type": "STRING",
          "value": "}"
        }
      ]
    },
    "expression_case": {
      "type": "SEQ",
      "members": [
        {
          "type": "FIELD",
          "name": "value",
          "content": {
            "type": "SYMBOL",
            "name": "expression_list"
          }
        },
        {
          "type": "FIELD",
          "name": "consequence",
          "content": {
            "type": "SYMBOL",
            "name": "block"
          }
        }
      ]
    },
    "default_case": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "else"
        },
        {
          "type": "FIELD",
          "name": "consequence",
          "content": {
            "type": "SYMBOL",
            "name": "block"
          }
        }
      ]
    },
    "select_expression": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "select"
        },
        {
          "type": "STRING",
          "value": "{"
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "select_branch"
          }
        },
        {
          "type": "SYMBOL",
          "name": "select_default_branch"
        },
        {
          "type": "STRING",
          "value": "}"
        }
      ]
    },
    "select_branch": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "_statement"
        },
        {
          "type": "SYMBOL",
          "name": "block"
        }
      ]
    },
    "select_default_branch": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "PREC",
              "value": 6,
              "content": {
                "type": "SEQ",
                "members": [
                  {
                    "type": "STRING",
                    "value": ">"
                  },
                  {
                    "type": "SYMBOL",
                    "name": "_expression"
                  }
                ]
              }
            },
            {
              "type": "STRING",
              "value": "else"
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "block"
        }
      ]
    },
    "sql_expression": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "sql"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_expression"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "_content_block"
        }
      ]
    },
    "_content_block": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "{"
        },
        {
          "type": "IMMEDIATE_TOKEN",
          "content": {
            "type": "PREC",
            "value": 1,
            "content": {
              "type": "PATTERN",
              "value": "[^{}]+"
            }
          }
        },
        {
          "type": "STRING",
          "value": "}"
        }
      ]
    },
    "_expression": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "type_cast_expression"
        },
        {
          "type": "SYMBOL",
          "name": "as_type_cast_expression"
        },
        {
          "type": "SYMBOL",
          "name": "unary_expression"
        },
        {
          "type": "SYMBOL",
          "name": "binary_expression"
        },
        {
          "type": "SYMBOL",
          "name": "selector_expression"
        },
        {
          "type": "SYMBOL",
          "name": "slice_expression"
        },
        {
          "type": "SYMBOL",
          "name": "index_expression"
        },
        {
          "type": "SYMBOL",
          "name": "call_expression"
        },
        {
          "type": "SYMBOL",
          "name": "identifier"
        },
        {
          "type": "SYMBOL",
          "name": "enum_identifier"
        },
        {
          "type": "SYMBOL",
          "name": "_string_literal"
        },
        {
          "type": "SYMBOL",
          "name": "fn_literal"
        },
        {
          "type": "SYMBOL",
          "name": "array"
        },
        {
          "type": "SYMBOL",
          "name": "type_initializer"
        },
        {
          "type": "SYMBOL",
          "name": "int_literal"
        },
        {
          "type": "SYMBOL",
          "name": "float_literal"
        },
        {
          "type": "SYMBOL",
          "name": "imaginary_literal"
        },
        {
          "type": "SYMBOL",
          "name": "rune_literal"
        },
        {
          "type": "SYMBOL",
          "name": "none"
        },
        {
          "type": "SYMBOL",
          "name": "true"
        },
        {
          "type": "SYMBOL",
          "name": "false"
        },
        {
          "type": "SYMBOL",
          "name": "parenthesized_expression"
        },
        {
          "type": "SYMBOL",
          "name": "pseudo_comptime_identifier"
        },
        {
          "type": "SYMBOL",
          "name": "relational_operator"
        },
        {
          "type": "SYMBOL",
          "name": "binded_identifier"
        }
      ]
    },
    "_expression_with_blocks": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "if_expression"
        },
        {
          "type": "SYMBOL",
          "name": "comptime_if_expression"
        },
        {
          "type": "SYMBOL",
          "name": "match_expression"
        },
        {
          "type": "SYMBOL",
          "name": "sql_expression"
        },
        {
          "type": "SYMBOL",
          "name": "unsafe_expression"
        },
        {
          "type": "SYMBOL",
          "name": "select_expression"
        },
        {
          "type": "SYMBOL",
          "name": "lock_expression"
        }
      ]
    },
    "binded_identifier": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "language_spec"
        },
        {
          "type": "SYMBOL",
          "name": "identifier"
        }
      ]
    },
    "relational_operator": {
      "type": "PREC",
      "value": 3,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "FIELD",
            "name": "left",
            "content": {
              "type": "SYMBOL",
              "name": "_expression"
            }
          },
          {
            "type": "FIELD",
            "name": "operator",
            "content": {
              "type": "CHOICE",
              "members": [
                {
                  "type": "STRING",
                  "value": "!is"
                },
                {
                  "type": "STRING",
                  "value": "is"
                },
                {
                  "type": "STRING",
                  "value": "!in"
                },
                {
                  "type": "STRING",
                  "value": "in"
                }
              ]
            }
          },
          {
            "type": "FIELD",
            "name": "right",
            "content": {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "identifier"
                },
                {
                  "type": "SYMBOL",
                  "name": "array"
                },
                {
                  "type": "SYMBOL",
                  "name": "selector_expression"
                },
                {
                  "type": "SYMBOL",
                  "name": "index_expression"
                },
                {
                  "type": "SYMBOL",
                  "name": "_string_literal"
                },
                {
                  "type": "SYMBOL",
                  "name": "slice_expression"
                },
                {
                  "type": "SYMBOL",
                  "name": "index_expression"
                }
              ]
            }
          }
        ]
      }
    },
    "_range": {
      "type": "PREC_RIGHT",
      "value": 5,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "FIELD",
            "name": "start",
            "content": {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "_expression"
                },
                {
                  "type": "BLANK"
                }
              ]
            }
          },
          {
            "type": "STRING",
            "value": ".."
          },
          {
            "type": "FIELD",
            "name": "end",
            "content": {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "_expression"
                },
                {
                  "type": "BLANK"
                }
              ]
            }
          }
        ]
      }
    },
    "lock_expression": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": "lock"
            },
            {
              "type": "STRING",
              "value": "rlock"
            }
          ]
        },
        {
          "type": "FIELD",
          "name": "locked_variables",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "expression_list"
              },
              {
                "type": "BLANK"
              }
            ]
          }
        },
        {
          "type": "FIELD",
          "name": "body",
          "content": {
            "type": "SYMBOL",
            "name": "block"
          }
        }
      ]
    },
    "parenthesized_expression": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "SYMBOL",
          "name": "_expression"
        },
        {
          "type": "STRING",
          "value": ")"
        }
      ]
    },
    "type_cast_expression": {
      "type": "PREC_DYNAMIC",
      "value": -1,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "FIELD",
            "name": "type",
            "content": {
              "type": "SYMBOL",
              "name": "_type"
            }
          },
          {
            "type": "STRING",
            "value": "("
          },
          {
            "type": "FIELD",
            "name": "operand",
            "content": {
              "type": "SYMBOL",
              "name": "_expression"
            }
          },
          {
            "type": "STRING",
            "value": ")"
          }
        ]
      }
    },
    "as_type_cast_expression": {
      "type": "PREC",
      "value": 7,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "FIELD",
            "name": "expr",
            "content": {
              "type": "SYMBOL",
              "name": "_expression"
            }
          },
          {
            "type": "STRING",
            "value": "as"
          },
          {
            "type": "FIELD",
            "name": "type",
            "content": {
              "type": "SYMBOL",
              "name": "_simple_type"
            }
          }
        ]
      }
    },
    "call_expression": {
      "type": "PREC_RIGHT",
      "value": 7,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "FIELD",
            "name": "function",
            "content": {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "_expression"
                },
                {
                  "type": "SYMBOL",
                  "name": "comptime_identifier"
                }
              ]
            }
          },
          {
            "type": "FIELD",
            "name": "type_parameters",
            "content": {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "type_parameters"
                },
                {
                  "type": "BLANK"
                }
              ]
            }
          },
          {
            "type": "FIELD",
            "name": "arguments",
            "content": {
              "type": "SYMBOL",
              "name": "argument_list"
            }
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "option_propagator"
              },
              {
                "type": "BLANK"
              }
            ]
          }
        ]
      }
    },
    "option_propagator": {
      "type": "PREC_RIGHT",
      "value": 0,
      "content": {
        "type": "CHOICE",
        "members": [
          {
            "type": "TOKEN",
            "content": {
              "type": "STRING",
              "value": "?"
            }
          },
          {
            "type": "SYMBOL",
            "name": "or_block"
          }
        ]
      }
    },
    "or_block": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "or"
        },
        {
          "type": "SYMBOL",
          "name": "block"
        }
      ]
    },
    "decomposed_element": {
      "type": "PREC_RIGHT",
      "value": 0,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "STRING",
            "value": "..."
          },
          {
            "type": "SYMBOL",
            "name": "_expression"
          }
        ]
      }
    },
    "_mutable_identifier": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "mut"
        },
        {
          "type": "SYMBOL",
          "name": "identifier"
        }
      ]
    },
    "argument_list": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "SYMBOL",
                      "name": "_mutable_identifier"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "_expression"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "decomposed_element"
                    }
                  ]
                },
                {
                  "type": "REPEAT",
                  "content": {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "STRING",
                        "value": ","
                      },
                      {
                        "type": "CHOICE",
                        "members": [
                          {
                            "type": "SYMBOL",
                            "name": "_mutable_identifier"
                          },
                          {
                            "type": "SYMBOL",
                            "name": "_expression"
                          },
                          {
                            "type": "SYMBOL",
                            "name": "decomposed_element"
                          }
                        ]
                      }
                    ]
                  }
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": ")"
        }
      ]
    },
    "selector_expression": {
      "type": "PREC",
      "value": 7,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "FIELD",
            "name": "operand",
            "content": {
              "type": "SYMBOL",
              "name": "_expression"
            }
          },
          {
            "type": "STRING",
            "value": "."
          },
          {
            "type": "FIELD",
            "name": "field",
            "content": {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "identifier"
                },
                {
                  "type": "SYMBOL",
                  "name": "comptime_identifier"
                },
                {
                  "type": "SYMBOL",
                  "name": "comptime_selector_expression"
                }
              ]
            }
          }
        ]
      }
    },
    "comptime_identifier": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "$"
        },
        {
          "type": "SYMBOL",
          "name": "identifier"
        }
      ]
    },
    "comptime_selector_expression": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "$"
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "STRING",
              "value": "("
            },
            {
              "type": "SYMBOL",
              "name": "selector_expression"
            },
            {
              "type": "STRING",
              "value": ")"
            }
          ]
        }
      ]
    },
    "index_expression": {
      "type": "PREC_RIGHT",
      "value": 7,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "FIELD",
            "name": "operand",
            "content": {
              "type": "SYMBOL",
              "name": "_expression"
            }
          },
          {
            "type": "STRING",
            "value": "["
          },
          {
            "type": "FIELD",
            "name": "index",
            "content": {
              "type": "SYMBOL",
              "name": "_expression"
            }
          },
          {
            "type": "STRING",
            "value": "]"
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "option_propagator"
              },
              {
                "type": "BLANK"
              }
            ]
          }
        ]
      }
    },
    "slice_expression": {
      "type": "PREC",
      "value": 7,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "FIELD",
            "name": "operand",
            "content": {
              "type": "SYMBOL",
              "name": "_expression"
            }
          },
          {
            "type": "STRING",
            "value": "["
          },
          {
            "type": "SYMBOL",
            "name": "_range"
          },
          {
            "type": "STRING",
            "value": "]"
          }
        ]
      }
    },
    "fixed_array_indicator": {
      "type": "IMMEDIATE_TOKEN",
      "content": {
        "type": "STRING",
        "value": "!"
      }
    },
    "array": {
      "type": "PREC",
      "value": -1,
      "content": {
        "type": "CHOICE",
        "members": [
          {
            "type": "STRING",
            "value": "[]"
          },
          {
            "type": "SEQ",
            "members": [
              {
                "type": "STRING",
                "value": "["
              },
              {
                "type": "FIELD",
                "name": "values",
                "content": {
                  "type": "REPEAT",
                  "content": {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "SYMBOL",
                        "name": "_expression"
                      },
                      {
                        "type": "CHOICE",
                        "members": [
                          {
                            "type": "STRING",
                            "value": ","
                          },
                          {
                            "type": "BLANK"
                          }
                        ]
                      }
                    ]
                  }
                }
              },
              {
                "type": "STRING",
                "value": "]"
              },
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "SYMBOL",
                    "name": "fixed_array_indicator"
                  },
                  {
                    "type": "BLANK"
                  }
                ]
              }
            ]
          }
        ]
      }
    },
    "type_initializer": {
      "type": "PREC",
      "value": -1,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "FIELD",
            "name": "type",
            "content": {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "_type_identifier"
                },
                {
                  "type": "SYMBOL",
                  "name": "binded_type"
                },
                {
                  "type": "SYMBOL",
                  "name": "qualified_type"
                },
                {
                  "type": "SYMBOL",
                  "name": "pointer_type"
                },
                {
                  "type": "SYMBOL",
                  "name": "array_type"
                },
                {
                  "type": "SYMBOL",
                  "name": "fixed_array_type"
                },
                {
                  "type": "SYMBOL",
                  "name": "map_type"
                },
                {
                  "type": "SYMBOL",
                  "name": "generic_type"
                },
                {
                  "type": "SYMBOL",
                  "name": "channel_type"
                }
              ]
            }
          },
          {
            "type": "FIELD",
            "name": "body",
            "content": {
              "type": "SYMBOL",
              "name": "literal_value"
            }
          }
        ]
      }
    },
    "literal_value": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "{"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "REPEAT",
              "content": {
                "type": "SEQ",
                "members": [
                  {
                    "type": "CHOICE",
                    "members": [
                      {
                        "type": "SYMBOL",
                        "name": "keyed_element"
                      },
                      {
                        "type": "ALIAS",
                        "content": {
                          "type": "SYMBOL",
                          "name": "_element"
                        },
                        "named": true,
                        "value": "element"
                      },
                      {
                        "type": "SYMBOL",
                        "name": "decomposed_element"
                      }
                    ]
                  },
                  {
                    "type": "CHOICE",
                    "members": [
                      {
                        "type": "CHOICE",
                        "members": [
                          {
                            "type": "STRING",
                            "value": ","
                          },
                          {
                            "type": "STRING",
                            "value": "\n"
                          }
                        ]
                      },
                      {
                        "type": "BLANK"
                      }
                    ]
                  }
                ]
              }
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "}"
        }
      ]
    },
    "keyed_element": {
      "type": "SEQ",
      "members": [
        {
          "type": "PREC",
          "value": 1,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "key",
                "content": {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "SYMBOL",
                      "name": "_field_identifier"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "interpreted_string_literal"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "int_literal"
                    }
                  ]
                }
              },
              {
                "type": "STRING",
                "value": ":"
              }
            ]
          }
        },
        {
          "type": "FIELD",
          "name": "value",
          "content": {
            "type": "SYMBOL",
            "name": "_element"
          }
        }
      ]
    },
    "_element": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "_expression"
        },
        {
          "type": "SYMBOL",
          "name": "unsafe_expression"
        },
        {
          "type": "SYMBOL",
          "name": "if_expression"
        },
        {
          "type": "SYMBOL",
          "name": "match_expression"
        },
        {
          "type": "SYMBOL",
          "name": "lock_expression"
        },
        {
          "type": "SYMBOL",
          "name": "sql_expression"
        },
        {
          "type": "SYMBOL",
          "name": "comptime_if_expression"
        }
      ]
    },
    "fn_literal": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "fn"
        },
        {
          "type": "FIELD",
          "name": "parameters",
          "content": {
            "type": "SYMBOL",
            "name": "parameter_list"
          }
        },
        {
          "type": "FIELD",
          "name": "result",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "_type"
              },
              {
                "type": "BLANK"
              }
            ]
          }
        },
        {
          "type": "FIELD",
          "name": "body",
          "content": {
            "type": "SYMBOL",
            "name": "block"
          }
        }
      ]
    },
    "unary_expression": {
      "type": "PREC",
      "value": 6,
      "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": "STRING",
                  "value": "^"
                },
                {
                  "type": "STRING",
                  "value": "*"
                },
                {
                  "type": "STRING",
                  "value": "&"
                },
                {
                  "type": "STRING",
                  "value": "<-"
                }
              ]
            }
          },
          {
            "type": "FIELD",
            "name": "operand",
            "content": {
              "type": "SYMBOL",
              "name": "_expression"
            }
          }
        ]
      }
    },
    "binary_expression": {
      "type": "CHOICE",
      "members": [
        {
          "type": "PREC_LEFT",
          "value": 5,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "STRING",
                      "value": "*"
                    },
                    {
                      "type": "STRING",
                      "value": "/"
                    },
                    {
                      "type": "STRING",
                      "value": "%"
                    },
                    {
                      "type": "STRING",
                      "value": "<<"
                    },
                    {
                      "type": "STRING",
                      "value": ">>"
                    },
                    {
                      "type": "STRING",
                      "value": "&"
                    },
                    {
                      "type": "STRING",
                      "value": "&^"
                    }
                  ]
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 4,
          "content": {
            "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": "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": "CHOICE",
                  "members": [
                    {
                      "type": "STRING",
                      "value": "=="
                    },
                    {
                      "type": "STRING",
                      "value": "!="
                    },
                    {
                      "type": "STRING",
                      "value": "<"
                    },
                    {
                      "type": "STRING",
                      "value": "<="
                    },
                    {
                      "type": "STRING",
                      "value": ">"
                    },
                    {
                      "type": "STRING",
                      "value": ">="
                    }
                  ]
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              }
            ]
          }
        },
        {
          "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": 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"
                }
              }
            ]
          }
        }
      ]
    },
    "qualified_type": {
      "type": "SEQ",
      "members": [
        {
          "type": "FIELD",
          "name": "module",
          "content": {
            "type": "SYMBOL",
            "name": "_module_identifier"
          }
        },
        {
          "type": "STRING",
          "value": "."
        },
        {
          "type": "FIELD",
          "name": "name",
          "content": {
            "type": "SYMBOL",
            "name": "_type_identifier"
          }
        }
      ]
    },
    "identifier": {
      "type": "TOKEN",
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "PATTERN",
                "value": "[a-zA-Zα-ωΑ-Ωµ]"
              },
              {
                "type": "STRING",
                "value": "_"
              }
            ]
          },
          {
            "type": "REPEAT",
            "content": {
              "type": "CHOICE",
              "members": [
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "PATTERN",
                      "value": "[a-zA-Zα-ωΑ-Ωµ]"
                    },
                    {
                      "type": "STRING",
                      "value": "_"
                    }
                  ]
                },
                {
                  "type": "PATTERN",
                  "value": "[0-9]"
                }
              ]
            }
          }
        ]
      }
    },
    "pseudo_comptime_identifier": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "@"
        },
        {
          "type": "SYMBOL",
          "name": "identifier"
        }
      ]
    },
    "blank_identifier": {
      "type": "STRING",
      "value": "_"
    },
    "_type_identifier": {
      "type": "ALIAS",
      "content": {
        "type": "SYMBOL",
        "name": "identifier"
      },
      "named": true,
      "value": "type_identifier"
    },
    "_module_identifier": {
      "type": "ALIAS",
      "content": {
        "type": "SYMBOL",
        "name": "identifier"
      },
      "named": true,
      "value": "module_identifier"
    },
    "_field_identifier": {
      "type": "ALIAS",
      "content": {
        "type": "SYMBOL",
        "name": "identifier"
      },
      "named": true,
      "value": "field_identifier"
    },
    "_string_literal": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "raw_string_literal"
        },
        {
          "type": "SYMBOL",
          "name": "c_string_literal"
        },
        {
          "type": "SYMBOL",
          "name": "interpreted_string_literal"
        }
      ]
    },
    "raw_string_literal": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SEQ",
          "members": [
            {
              "type": "STRING",
              "value": "r'"
            },
            {
              "type": "REPEAT",
              "content": {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "IMMEDIATE_TOKEN",
                    "content": {
                      "type": "PREC",
                      "value": 1,
                      "content": {
                        "type": "PATTERN",
                        "value": "[^'\\\\]+"
                      }
                    }
                  },
                  {
                    "type": "SYMBOL",
                    "name": "escape_sequence"
                  }
                ]
              }
            },
            {
              "type": "STRING",
              "value": "'"
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "STRING",
              "value": "r\""
            },
            {
              "type": "REPEAT",
              "content": {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "IMMEDIATE_TOKEN",
                    "content": {
                      "type": "PREC",
                      "value": 1,
                      "content": {
                        "type": "PATTERN",
                        "value": "[^\"\\\\]+"
                      }
                    }
                  },
                  {
                    "type": "SYMBOL",
                    "name": "escape_sequence"
                  }
                ]
              }
            },
            {
              "type": "STRING",
              "value": "\""
            }
          ]
        }
      ]
    },
    "c_string_literal": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SEQ",
          "members": [
            {
              "type": "STRING",
              "value": "c'"
            },
            {
              "type": "REPEAT",
              "content": {
                "type": "IMMEDIATE_TOKEN",
                "content": {
                  "type": "PREC",
                  "value": 1,
                  "content": {
                    "type": "PATTERN",
                    "value": "[^$']+"
                  }
                }
              }
            },
            {
              "type": "STRING",
              "value": "'"
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "STRING",
              "value": "c\""
            },
            {
              "type": "REPEAT",
              "content": {
                "type": "IMMEDIATE_TOKEN",
                "content": {
                  "type": "PREC",
                  "value": 1,
                  "content": {
                    "type": "PATTERN",
                    "value": "[^$\"]+"
                  }
                }
              }
            },
            {
              "type": "STRING",
              "value": "\""
            }
          ]
        }
      ]
    },
    "interpreted_string_literal": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SEQ",
          "members": [
            {
              "type": "STRING",
              "value": "'"
            },
            {
              "type": "REPEAT",
              "content": {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "IMMEDIATE_TOKEN",
                    "content": {
                      "type": "PREC",
                      "value": 1,
                      "content": {
                        "type": "PATTERN",
                        "value": "[^$'\\\\]+"
                      }
                    }
                  },
                  {
                    "type": "SYMBOL",
                    "name": "escape_sequence"
                  },
                  {
                    "type": "SYMBOL",
                    "name": "string_interpolation"
                  }
                ]
              }
            },
            {
              "type": "STRING",
              "value": "'"
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "STRING",
              "value": "\""
            },
            {
              "type": "REPEAT",
              "content": {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "IMMEDIATE_TOKEN",
                    "content": {
                      "type": "PREC",
                      "value": 1,
                      "content": {
                        "type": "PATTERN",
                        "value": "[^$\"\\\\]+"
                      }
                    }
                  },
                  {
                    "type": "SYMBOL",
                    "name": "escape_sequence"
                  },
                  {
                    "type": "SYMBOL",
                    "name": "string_interpolation"
                  }
                ]
              }
            },
            {
              "type": "STRING",
              "value": "\""
            }
          ]
        }
      ]
    },
    "format_flag": {
      "type": "TOKEN",
      "content": {
        "type": "PATTERN",
        "value": "[gGeEfFcdoxXpsSc]"
      }
    },
    "format_specifier": {
      "type": "SEQ",
      "members": [
        {
          "type": "TOKEN",
          "content": {
            "type": "STRING",
            "value": ":"
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "format_flag"
            },
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "TOKEN",
                      "content": {
                        "type": "PATTERN",
                        "value": "[+-0]"
                      }
                    },
                    {
                      "type": "BLANK"
                    }
                  ]
                },
                {
                  "type": "SYMBOL",
                  "name": "int_literal"
                },
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "SEQ",
                      "members": [
                        {
                          "type": "TOKEN",
                          "content": {
                            "type": "STRING",
                            "value": "."
                          }
                        },
                        {
                          "type": "SYMBOL",
                          "name": "int_literal"
                        }
                      ]
                    },
                    {
                      "type": "BLANK"
                    }
                  ]
                },
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "SYMBOL",
                      "name": "format_flag"
                    },
                    {
                      "type": "BLANK"
                    }
                  ]
                }
              ]
            }
          ]
        }
      ]
    },
    "string_interpolation": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SEQ",
          "members": [
            {
              "type": "STRING",
              "value": "${"
            },
            {
              "type": "SYMBOL",
              "name": "_expression"
            },
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "format_specifier"
                },
                {
                  "type": "BLANK"
                }
              ]
            },
            {
              "type": "STRING",
              "value": "}"
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "STRING",
              "value": "$"
            },
            {
              "type": "SYMBOL",
              "name": "_expression"
            }
          ]
        }
      ]
    },
    "escape_sequence": {
      "type": "TOKEN",
      "content": {
        "type": "PREC",
        "value": 1,
        "content": {
          "type": "SEQ",
          "members": [
            {
              "type": "STRING",
              "value": "\\"
            },
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "PATTERN",
                  "value": "u[a-fA-F\\d]{4}"
                },
                {
                  "type": "PATTERN",
                  "value": "U[a-fA-F\\d]{8}"
                },
                {
                  "type": "PATTERN",
                  "value": "x[a-fA-F\\d]{2}"
                },
                {
                  "type": "PATTERN",
                  "value": "\\d{3}"
                },
                {
                  "type": "PATTERN",
                  "value": "\\r?\\n"
                },
                {
                  "type": "PATTERN",
                  "value": "['\"abfrntv\\$\\\\]"
                }
              ]
            }
          ]
        }
      }
    },
    "int_literal": {
      "type": "TOKEN",
      "content": {
        "type": "CHOICE",
        "members": [
          {
            "type": "SEQ",
            "members": [
              {
                "type": "STRING",
                "value": "0"
              },
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "STRING",
                    "value": "b"
                  },
                  {
                    "type": "STRING",
                    "value": "B"
                  }
                ]
              },
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "STRING",
                    "value": "_"
                  },
                  {
                    "type": "BLANK"
                  }
                ]
              },
              {
                "type": "SEQ",
                "members": [
                  {
                    "type": "PATTERN",
                    "value": "[01]"
                  },
                  {
                    "type": "REPEAT",
                    "content": {
                      "type": "SEQ",
                      "members": [
                        {
                          "type": "CHOICE",
                          "members": [
                            {
                              "type": "STRING",
                              "value": "_"
                            },
                            {
                              "type": "BLANK"
                            }
                          ]
                        },
                        {
                          "type": "PATTERN",
                          "value": "[01]"
                        }
                      ]
                    }
                  }
                ]
              }
            ]
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "STRING",
                "value": "0"
              },
              {
                "type": "SEQ",
                "members": [
                  {
                    "type": "PATTERN",
                    "value": "[1-9]"
                  },
                  {
                    "type": "CHOICE",
                    "members": [
                      {
                        "type": "SEQ",
                        "members": [
                          {
                            "type": "CHOICE",
                            "members": [
                              {
                                "type": "STRING",
                                "value": "_"
                              },
                              {
                                "type": "BLANK"
                              }
                            ]
                          },
                          {
                            "type": "SEQ",
                            "members": [
                              {
                                "type": "PATTERN",
                                "value": "[0-9]"
                              },
                              {
                                "type": "REPEAT",
                                "content": {
                                  "type": "SEQ",
                                  "members": [
                                    {
                                      "type": "CHOICE",
                                      "members": [
                                        {
                                          "type": "STRING",
                                          "value": "_"
                                        },
                                        {
                                          "type": "BLANK"
                                        }
                                      ]
                                    },
                                    {
                                      "type": "PATTERN",
                                      "value": "[0-9]"
                                    }
                                  ]
                                }
                              }
                            ]
                          }
                        ]
                      },
                      {
                        "type": "BLANK"
                      }
                    ]
                  }
                ]
              }
            ]
          },
          {
            "type": "SEQ",
            "members": [
              {
                "type": "STRING",
                "value": "0"
              },
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "CHOICE",
                    "members": [
                      {
                        "type": "STRING",
                        "value": "o"
                      },
                      {
                        "type": "STRING",
                        "value": "O"
                      }
                    ]
                  },
                  {
                    "type": "BLANK"
                  }
                ]
              },
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "STRING",
                    "value": "_"
                  },
                  {
                    "type": "BLANK"
                  }
                ]
              },
              {
                "type": "SEQ",
                "members": [
                  {
                    "type": "PATTERN",
                    "value": "[0-7]"
                  },
                  {
                    "type": "REPEAT",
                    "content": {
                      "type": "SEQ",
                      "members": [
                        {
                          "type": "CHOICE",
                          "members": [
                            {
                              "type": "STRING",
                              "value": "_"
                            },
                            {
                              "type": "BLANK"
                            }
                          ]
                        },
                        {
                          "type": "PATTERN",
                          "value": "[0-7]"
                        }
                      ]
                    }
                  }
                ]
              }
            ]
          },
          {
            "type": "SEQ",
            "members": [
              {
                "type": "STRING",
                "value": "0"
              },
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "STRING",
                    "value": "x"
                  },
                  {
                    "type": "STRING",
                    "value": "X"
                  }
                ]
              },
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "STRING",
                    "value": "_"
                  },
                  {
                    "type": "BLANK"
                  }
                ]
              },
              {
                "type": "SEQ",
                "members": [
                  {
                    "type": "PATTERN",
                    "value": "[0-9a-fA-F]"
                  },
                  {
                    "type": "REPEAT",
                    "content": {
                      "type": "SEQ",
                      "members": [
                        {
                          "type": "CHOICE",
                          "members": [
                            {
                              "type": "STRING",
                              "value": "_"
                            },
                            {
                              "type": "BLANK"
                            }
                          ]
                        },
                        {
                          "type": "PATTERN",
                          "value": "[0-9a-fA-F]"
                        }
                      ]
                    }
                  }
                ]
              }
            ]
          }
        ]
      }
    },
    "float_literal": {
      "type": "TOKEN",
      "content": {
        "type": "CHOICE",
        "members": [
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "SEQ",
                "members": [
                  {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "PATTERN",
                        "value": "[0-9]"
                      },
                      {
                        "type": "REPEAT",
                        "content": {
                          "type": "SEQ",
                          "members": [
                            {
                              "type": "CHOICE",
                              "members": [
                                {
                                  "type": "STRING",
                                  "value": "_"
                                },
                                {
                                  "type": "BLANK"
                                }
                              ]
                            },
                            {
                              "type": "PATTERN",
                              "value": "[0-9]"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  {
                    "type": "STRING",
                    "value": "."
                  },
                  {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "PATTERN",
                        "value": "[0-9]"
                      },
                      {
                        "type": "REPEAT",
                        "content": {
                          "type": "SEQ",
                          "members": [
                            {
                              "type": "CHOICE",
                              "members": [
                                {
                                  "type": "STRING",
                                  "value": "_"
                                },
                                {
                                  "type": "BLANK"
                                }
                              ]
                            },
                            {
                              "type": "PATTERN",
                              "value": "[0-9]"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  {
                    "type": "CHOICE",
                    "members": [
                      {
                        "type": "SEQ",
                        "members": [
                          {
                            "type": "CHOICE",
                            "members": [
                              {
                                "type": "STRING",
                                "value": "e"
                              },
                              {
                                "type": "STRING",
                                "value": "E"
                              }
                            ]
                          },
                          {
                            "type": "CHOICE",
                            "members": [
                              {
                                "type": "CHOICE",
                                "members": [
                                  {
                                    "type": "STRING",
                                    "value": "+"
                                  },
                                  {
                                    "type": "STRING",
                                    "value": "-"
                                  }
                                ]
                              },
                              {
                                "type": "BLANK"
                              }
                            ]
                          },
                          {
                            "type": "SEQ",
                            "members": [
                              {
                                "type": "PATTERN",
                                "value": "[0-9]"
                              },
                              {
                                "type": "REPEAT",
                                "content": {
                                  "type": "SEQ",
                                  "members": [
                                    {
                                      "type": "CHOICE",
                                      "members": [
                                        {
                                          "type": "STRING",
                                          "value": "_"
                                        },
                                        {
                                          "type": "BLANK"
                                        }
                                      ]
                                    },
                                    {
                                      "type": "PATTERN",
                                      "value": "[0-9]"
                                    }
                                  ]
                                }
                              }
                            ]
                          }
                        ]
                      },
                      {
                        "type": "BLANK"
                      }
                    ]
                  }
                ]
              },
              {
                "type": "SEQ",
                "members": [
                  {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "PATTERN",
                        "value": "[0-9]"
                      },
                      {
                        "type": "REPEAT",
                        "content": {
                          "type": "SEQ",
                          "members": [
                            {
                              "type": "CHOICE",
                              "members": [
                                {
                                  "type": "STRING",
                                  "value": "_"
                                },
                                {
                                  "type": "BLANK"
                                }
                              ]
                            },
                            {
                              "type": "PATTERN",
                              "value": "[0-9]"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "CHOICE",
                        "members": [
                          {
                            "type": "STRING",
                            "value": "e"
                          },
                          {
                            "type": "STRING",
                            "value": "E"
                          }
                        ]
                      },
                      {
                        "type": "CHOICE",
                        "members": [
                          {
                            "type": "CHOICE",
                            "members": [
                              {
                                "type": "STRING",
                                "value": "+"
                              },
                              {
                                "type": "STRING",
                                "value": "-"
                              }
                            ]
                          },
                          {
                            "type": "BLANK"
                          }
                        ]
                      },
                      {
                        "type": "SEQ",
                        "members": [
                          {
                            "type": "PATTERN",
                            "value": "[0-9]"
                          },
                          {
                            "type": "REPEAT",
                            "content": {
                              "type": "SEQ",
                              "members": [
                                {
                                  "type": "CHOICE",
                                  "members": [
                                    {
                                      "type": "STRING",
                                      "value": "_"
                                    },
                                    {
                                      "type": "BLANK"
                                    }
                                  ]
                                },
                                {
                                  "type": "PATTERN",
                                  "value": "[0-9]"
                                }
                              ]
                            }
                          }
                        ]
                      }
                    ]
                  }
                ]
              },
              {
                "type": "SEQ",
                "members": [
                  {
                    "type": "STRING",
                    "value": "."
                  },
                  {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "PATTERN",
                        "value": "[0-9]"
                      },
                      {
                        "type": "REPEAT",
                        "content": {
                          "type": "SEQ",
                          "members": [
                            {
                              "type": "CHOICE",
                              "members": [
                                {
                                  "type": "STRING",
                                  "value": "_"
                                },
                                {
                                  "type": "BLANK"
                                }
                              ]
                            },
                            {
                              "type": "PATTERN",
                              "value": "[0-9]"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  {
                    "type": "CHOICE",
                    "members": [
                      {
                        "type": "SEQ",
                        "members": [
                          {
                            "type": "CHOICE",
                            "members": [
                              {
                                "type": "STRING",
                                "value": "e"
                              },
                              {
                                "type": "STRING",
                                "value": "E"
                              }
                            ]
                          },
                          {
                            "type": "CHOICE",
                            "members": [
                              {
                                "type": "CHOICE",
                                "members": [
                                  {
                                    "type": "STRING",
                                    "value": "+"
                                  },
                                  {
                                    "type": "STRING",
                                    "value": "-"
                                  }
                                ]
                              },
                              {
                                "type": "BLANK"
                              }
                            ]
                          },
                          {
                            "type": "SEQ",
                            "members": [
                              {
                                "type": "PATTERN",
                                "value": "[0-9]"
                              },
                              {
                                "type": "REPEAT",
                                "content": {
                                  "type": "SEQ",
                                  "members": [
                                    {
                                      "type": "CHOICE",
                                      "members": [
                                        {
                                          "type": "STRING",
                                          "value": "_"
                                        },
                                        {
                                          "type": "BLANK"
                                        }
                                      ]
                                    },
                                    {
                                      "type": "PATTERN",
                                      "value": "[0-9]"
                                    }
                                  ]
                                }
                              }
                            ]
                          }
                        ]
                      },
                      {
                        "type": "BLANK"
                      }
                    ]
                  }
                ]
              }
            ]
          },
          {
            "type": "SEQ",
            "members": [
              {
                "type": "STRING",
                "value": "0"
              },
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "STRING",
                    "value": "x"
                  },
                  {
                    "type": "STRING",
                    "value": "X"
                  }
                ]
              },
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "CHOICE",
                        "members": [
                          {
                            "type": "STRING",
                            "value": "_"
                          },
                          {
                            "type": "BLANK"
                          }
                        ]
                      },
                      {
                        "type": "SEQ",
                        "members": [
                          {
                            "type": "PATTERN",
                            "value": "[0-9a-fA-F]"
                          },
                          {
                            "type": "REPEAT",
                            "content": {
                              "type": "SEQ",
                              "members": [
                                {
                                  "type": "CHOICE",
                                  "members": [
                                    {
                                      "type": "STRING",
                                      "value": "_"
                                    },
                                    {
                                      "type": "BLANK"
                                    }
                                  ]
                                },
                                {
                                  "type": "PATTERN",
                                  "value": "[0-9a-fA-F]"
                                }
                              ]
                            }
                          }
                        ]
                      },
                      {
                        "type": "STRING",
                        "value": "."
                      },
                      {
                        "type": "CHOICE",
                        "members": [
                          {
                            "type": "SEQ",
                            "members": [
                              {
                                "type": "PATTERN",
                                "value": "[0-9a-fA-F]"
                              },
                              {
                                "type": "REPEAT",
                                "content": {
                                  "type": "SEQ",
                                  "members": [
                                    {
                                      "type": "CHOICE",
                                      "members": [
                                        {
                                          "type": "STRING",
                                          "value": "_"
                                        },
                                        {
                                          "type": "BLANK"
                                        }
                                      ]
                                    },
                                    {
                                      "type": "PATTERN",
                                      "value": "[0-9a-fA-F]"
                                    }
                                  ]
                                }
                              }
                            ]
                          },
                          {
                            "type": "BLANK"
                          }
                        ]
                      }
                    ]
                  },
                  {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "CHOICE",
                        "members": [
                          {
                            "type": "STRING",
                            "value": "_"
                          },
                          {
                            "type": "BLANK"
                          }
                        ]
                      },
                      {
                        "type": "SEQ",
                        "members": [
                          {
                            "type": "PATTERN",
                            "value": "[0-9a-fA-F]"
                          },
                          {
                            "type": "REPEAT",
                            "content": {
                              "type": "SEQ",
                              "members": [
                                {
                                  "type": "CHOICE",
                                  "members": [
                                    {
                                      "type": "STRING",
                                      "value": "_"
                                    },
                                    {
                                      "type": "BLANK"
                                    }
                                  ]
                                },
                                {
                                  "type": "PATTERN",
                                  "value": "[0-9a-fA-F]"
                                }
                              ]
                            }
                          }
                        ]
                      }
                    ]
                  },
                  {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "STRING",
                        "value": "."
                      },
                      {
                        "type": "SEQ",
                        "members": [
                          {
                            "type": "PATTERN",
                            "value": "[0-9a-fA-F]"
                          },
                          {
                            "type": "REPEAT",
                            "content": {
                              "type": "SEQ",
                              "members": [
                                {
                                  "type": "CHOICE",
                                  "members": [
                                    {
                                      "type": "STRING",
                                      "value": "_"
                                    },
                                    {
                                      "type": "BLANK"
                                    }
                                  ]
                                },
                                {
                                  "type": "PATTERN",
                                  "value": "[0-9a-fA-F]"
                                }
                              ]
                            }
                          }
                        ]
                      }
                    ]
                  }
                ]
              },
              {
                "type": "SEQ",
                "members": [
                  {
                    "type": "CHOICE",
                    "members": [
                      {
                        "type": "STRING",
                        "value": "p"
                      },
                      {
                        "type": "STRING",
                        "value": "P"
                      }
                    ]
                  },
                  {
                    "type": "CHOICE",
                    "members": [
                      {
                        "type": "CHOICE",
                        "members": [
                          {
                            "type": "STRING",
                            "value": "+"
                          },
                          {
                            "type": "STRING",
                            "value": "-"
                          }
                        ]
                      },
                      {
                        "type": "BLANK"
                      }
                    ]
                  },
                  {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "PATTERN",
                        "value": "[0-9]"
                      },
                      {
                        "type": "REPEAT",
                        "content": {
                          "type": "SEQ",
                          "members": [
                            {
                              "type": "CHOICE",
                              "members": [
                                {
                                  "type": "STRING",
                                  "value": "_"
                                },
                                {
                                  "type": "BLANK"
                                }
                              ]
                            },
                            {
                              "type": "PATTERN",
                              "value": "[0-9]"
                            }
                          ]
                        }
                      }
                    ]
                  }
                ]
              }
            ]
          }
        ]
      }
    },
    "imaginary_literal": {
      "type": "TOKEN",
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "SEQ",
                "members": [
                  {
                    "type": "PATTERN",
                    "value": "[0-9]"
                  },
                  {
                    "type": "REPEAT",
                    "content": {
                      "type": "SEQ",
                      "members": [
                        {
                          "type": "CHOICE",
                          "members": [
                            {
                              "type": "STRING",
                              "value": "_"
                            },
                            {
                              "type": "BLANK"
                            }
                          ]
                        },
                        {
                          "type": "PATTERN",
                          "value": "[0-9]"
                        }
                      ]
                    }
                  }
                ]
              },
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "STRING",
                        "value": "0"
                      },
                      {
                        "type": "CHOICE",
                        "members": [
                          {
                            "type": "STRING",
                            "value": "b"
                          },
                          {
                            "type": "STRING",
                            "value": "B"
                          }
                        ]
                      },
                      {
                        "type": "CHOICE",
                        "members": [
                          {
                            "type": "STRING",
                            "value": "_"
                          },
                          {
                            "type": "BLANK"
                          }
                        ]
                      },
                      {
                        "type": "SEQ",
                        "members": [
                          {
                            "type": "PATTERN",
                            "value": "[01]"
                          },
                          {
                            "type": "REPEAT",
                            "content": {
                              "type": "SEQ",
                              "members": [
                                {
                                  "type": "CHOICE",
                                  "members": [
                                    {
                                      "type": "STRING",
                                      "value": "_"
                                    },
                                    {
                                      "type": "BLANK"
                                    }
                                  ]
                                },
                                {
                                  "type": "PATTERN",
                                  "value": "[01]"
                                }
                              ]
                            }
                          }
                        ]
                      }
                    ]
                  },
                  {
                    "type": "CHOICE",
                    "members": [
                      {
                        "type": "STRING",
                        "value": "0"
                      },
                      {
                        "type": "SEQ",
                        "members": [
                          {
                            "type": "PATTERN",
                            "value": "[1-9]"
                          },
                          {
                            "type": "CHOICE",
                            "members": [
                              {
                                "type": "SEQ",
                                "members": [
                                  {
                                    "type": "CHOICE",
                                    "members": [
                                      {
                                        "type": "STRING",
                                        "value": "_"
                                      },
                                      {
                                        "type": "BLANK"
                                      }
                                    ]
                                  },
                                  {
                                    "type": "SEQ",
                                    "members": [
                                      {
                                        "type": "PATTERN",
                                        "value": "[0-9]"
                                      },
                                      {
                                        "type": "REPEAT",
                                        "content": {
                                          "type": "SEQ",
                                          "members": [
                                            {
                                              "type": "CHOICE",
                                              "members": [
                                                {
                                                  "type": "STRING",
                                                  "value": "_"
                                                },
                                                {
                                                  "type": "BLANK"
                                                }
                                              ]
                                            },
                                            {
                                              "type": "PATTERN",
                                              "value": "[0-9]"
                                            }
                                          ]
                                        }
                                      }
                                    ]
                                  }
                                ]
                              },
                              {
                                "type": "BLANK"
                              }
                            ]
                          }
                        ]
                      }
                    ]
                  },
                  {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "STRING",
                        "value": "0"
                      },
                      {
                        "type": "CHOICE",
                        "members": [
                          {
                            "type": "CHOICE",
                            "members": [
                              {
                                "type": "STRING",
                                "value": "o"
                              },
                              {
                                "type": "STRING",
                                "value": "O"
                              }
                            ]
                          },
                          {
                            "type": "BLANK"
                          }
                        ]
                      },
                      {
                        "type": "CHOICE",
                        "members": [
                          {
                            "type": "STRING",
                            "value": "_"
                          },
                          {
                            "type": "BLANK"
                          }
                        ]
                      },
                      {
                        "type": "SEQ",
                        "members": [
                          {
                            "type": "PATTERN",
                            "value": "[0-7]"
                          },
                          {
                            "type": "REPEAT",
                            "content": {
                              "type": "SEQ",
                              "members": [
                                {
                                  "type": "CHOICE",
                                  "members": [
                                    {
                                      "type": "STRING",
                                      "value": "_"
                                    },
                                    {
                                      "type": "BLANK"
                                    }
                                  ]
                                },
                                {
                                  "type": "PATTERN",
                                  "value": "[0-7]"
                                }
                              ]
                            }
                          }
                        ]
                      }
                    ]
                  },
                  {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "STRING",
                        "value": "0"
                      },
                      {
                        "type": "CHOICE",
                        "members": [
                          {
                            "type": "STRING",
                            "value": "x"
                          },
                          {
                            "type": "STRING",
                            "value": "X"
                          }
                        ]
                      },
                      {
                        "type": "CHOICE",
                        "members": [
                          {
                            "type": "STRING",
                            "value": "_"
                          },
                          {
                            "type": "BLANK"
                          }
                        ]
                      },
                      {
                        "type": "SEQ",
                        "members": [
                          {
                            "type": "PATTERN",
                            "value": "[0-9a-fA-F]"
                          },
                          {
                            "type": "REPEAT",
                            "content": {
                              "type": "SEQ",
                              "members": [
                                {
                                  "type": "CHOICE",
                                  "members": [
                                    {
                                      "type": "STRING",
                                      "value": "_"
                                    },
                                    {
                                      "type": "BLANK"
                                    }
                                  ]
                                },
                                {
                                  "type": "PATTERN",
                                  "value": "[0-9a-fA-F]"
                                }
                              ]
                            }
                          }
                        ]
                      }
                    ]
                  }
                ]
              },
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "CHOICE",
                    "members": [
                      {
                        "type": "SEQ",
                        "members": [
                          {
                            "type": "SEQ",
                            "members": [
                              {
                                "type": "PATTERN",
                                "value": "[0-9]"
                              },
                              {
                                "type": "REPEAT",
                                "content": {
                                  "type": "SEQ",
                                  "members": [
                                    {
                                      "type": "CHOICE",
                                      "members": [
                                        {
                                          "type": "STRING",
                                          "value": "_"
                                        },
                                        {
                                          "type": "BLANK"
                                        }
                                      ]
                                    },
                                    {
                                      "type": "PATTERN",
                                      "value": "[0-9]"
                                    }
                                  ]
                                }
                              }
                            ]
                          },
                          {
                            "type": "STRING",
                            "value": "."
                          },
                          {
                            "type": "SEQ",
                            "members": [
                              {
                                "type": "PATTERN",
                                "value": "[0-9]"
                              },
                              {
                                "type": "REPEAT",
                                "content": {
                                  "type": "SEQ",
                                  "members": [
                                    {
                                      "type": "CHOICE",
                                      "members": [
                                        {
                                          "type": "STRING",
                                          "value": "_"
                                        },
                                        {
                                          "type": "BLANK"
                                        }
                                      ]
                                    },
                                    {
                                      "type": "PATTERN",
                                      "value": "[0-9]"
                                    }
                                  ]
                                }
                              }
                            ]
                          },
                          {
                            "type": "CHOICE",
                            "members": [
                              {
                                "type": "SEQ",
                                "members": [
                                  {
                                    "type": "CHOICE",
                                    "members": [
                                      {
                                        "type": "STRING",
                                        "value": "e"
                                      },
                                      {
                                        "type": "STRING",
                                        "value": "E"
                                      }
                                    ]
                                  },
                                  {
                                    "type": "CHOICE",
                                    "members": [
                                      {
                                        "type": "CHOICE",
                                        "members": [
                                          {
                                            "type": "STRING",
                                            "value": "+"
                                          },
                                          {
                                            "type": "STRING",
                                            "value": "-"
                                          }
                                        ]
                                      },
                                      {
                                        "type": "BLANK"
                                      }
                                    ]
                                  },
                                  {
                                    "type": "SEQ",
                                    "members": [
                                      {
                                        "type": "PATTERN",
                                        "value": "[0-9]"
                                      },
                                      {
                                        "type": "REPEAT",
                                        "content": {
                                          "type": "SEQ",
                                          "members": [
                                            {
                                              "type": "CHOICE",
                                              "members": [
                                                {
                                                  "type": "STRING",
                                                  "value": "_"
                                                },
                                                {
                                                  "type": "BLANK"
                                                }
                                              ]
                                            },
                                            {
                                              "type": "PATTERN",
                                              "value": "[0-9]"
                                            }
                                          ]
                                        }
                                      }
                                    ]
                                  }
                                ]
                              },
                              {
                                "type": "BLANK"
                              }
                            ]
                          }
                        ]
                      },
                      {
                        "type": "SEQ",
                        "members": [
                          {
                            "type": "SEQ",
                            "members": [
                              {
                                "type": "PATTERN",
                                "value": "[0-9]"
                              },
                              {
                                "type": "REPEAT",
                                "content": {
                                  "type": "SEQ",
                                  "members": [
                                    {
                                      "type": "CHOICE",
                                      "members": [
                                        {
                                          "type": "STRING",
                                          "value": "_"
                                        },
                                        {
                                          "type": "BLANK"
                                        }
                                      ]
                                    },
                                    {
                                      "type": "PATTERN",
                                      "value": "[0-9]"
                                    }
                                  ]
                                }
                              }
                            ]
                          },
                          {
                            "type": "SEQ",
                            "members": [
                              {
                                "type": "CHOICE",
                                "members": [
                                  {
                                    "type": "STRING",
                                    "value": "e"
                                  },
                                  {
                                    "type": "STRING",
                                    "value": "E"
                                  }
                                ]
                              },
                              {
                                "type": "CHOICE",
                                "members": [
                                  {
                                    "type": "CHOICE",
                                    "members": [
                                      {
                                        "type": "STRING",
                                        "value": "+"
                                      },
                                      {
                                        "type": "STRING",
                                        "value": "-"
                                      }
                                    ]
                                  },
                                  {
                                    "type": "BLANK"
                                  }
                                ]
                              },
                              {
                                "type": "SEQ",
                                "members": [
                                  {
                                    "type": "PATTERN",
                                    "value": "[0-9]"
                                  },
                                  {
                                    "type": "REPEAT",
                                    "content": {
                                      "type": "SEQ",
                                      "members": [
                                        {
                                          "type": "CHOICE",
                                          "members": [
                                            {
                                              "type": "STRING",
                                              "value": "_"
                                            },
                                            {
                                              "type": "BLANK"
                                            }
                                          ]
                                        },
                                        {
                                          "type": "PATTERN",
                                          "value": "[0-9]"
                                        }
                                      ]
                                    }
                                  }
                                ]
                              }
                            ]
                          }
                        ]
                      },
                      {
                        "type": "SEQ",
                        "members": [
                          {
                            "type": "STRING",
                            "value": "."
                          },
                          {
                            "type": "SEQ",
                            "members": [
                              {
                                "type": "PATTERN",
                                "value": "[0-9]"
                              },
                              {
                                "type": "REPEAT",
                                "content": {
                                  "type": "SEQ",
                                  "members": [
                                    {
                                      "type": "CHOICE",
                                      "members": [
                                        {
                                          "type": "STRING",
                                          "value": "_"
                                        },
                                        {
                                          "type": "BLANK"
                                        }
                                      ]
                                    },
                                    {
                                      "type": "PATTERN",
                                      "value": "[0-9]"
                                    }
                                  ]
                                }
                              }
                            ]
                          },
                          {
                            "type": "CHOICE",
                            "members": [
                              {
                                "type": "SEQ",
                                "members": [
                                  {
                                    "type": "CHOICE",
                                    "members": [
                                      {
                                        "type": "STRING",
                                        "value": "e"
                                      },
                                      {
                                        "type": "STRING",
                                        "value": "E"
                                      }
                                    ]
                                  },
                                  {
                                    "type": "CHOICE",
                                    "members": [
                                      {
                                        "type": "CHOICE",
                                        "members": [
                                          {
                                            "type": "STRING",
                                            "value": "+"
                                          },
                                          {
                                            "type": "STRING",
                                            "value": "-"
                                          }
                                        ]
                                      },
                                      {
                                        "type": "BLANK"
                                      }
                                    ]
                                  },
                                  {
                                    "type": "SEQ",
                                    "members": [
                                      {
                                        "type": "PATTERN",
                                        "value": "[0-9]"
                                      },
                                      {
                                        "type": "REPEAT",
                                        "content": {
                                          "type": "SEQ",
                                          "members": [
                                            {
                                              "type": "CHOICE",
                                              "members": [
                                                {
                                                  "type": "STRING",
                                                  "value": "_"
                                                },
                                                {
                                                  "type": "BLANK"
                                                }
                                              ]
                                            },
                                            {
                                              "type": "PATTERN",
                                              "value": "[0-9]"
                                            }
                                          ]
                                        }
                                      }
                                    ]
                                  }
                                ]
                              },
                              {
                                "type": "BLANK"
                              }
                            ]
                          }
                        ]
                      }
                    ]
                  },
                  {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "STRING",
                        "value": "0"
                      },
                      {
                        "type": "CHOICE",
                        "members": [
                          {
                            "type": "STRING",
                            "value": "x"
                          },
                          {
                            "type": "STRING",
                            "value": "X"
                          }
                        ]
                      },
                      {
                        "type": "CHOICE",
                        "members": [
                          {
                            "type": "SEQ",
                            "members": [
                              {
                                "type": "CHOICE",
                                "members": [
                                  {
                                    "type": "STRING",
                                    "value": "_"
                                  },
                                  {
                                    "type": "BLANK"
                                  }
                                ]
                              },
                              {
                                "type": "SEQ",
                                "members": [
                                  {
                                    "type": "PATTERN",
                                    "value": "[0-9a-fA-F]"
                                  },
                                  {
                                    "type": "REPEAT",
                                    "content": {
                                      "type": "SEQ",
                                      "members": [
                                        {
                                          "type": "CHOICE",
                                          "members": [
                                            {
                                              "type": "STRING",
                                              "value": "_"
                                            },
                                            {
                                              "type": "BLANK"
                                            }
                                          ]
                                        },
                                        {
                                          "type": "PATTERN",
                                          "value": "[0-9a-fA-F]"
                                        }
                                      ]
                                    }
                                  }
                                ]
                              },
                              {
                                "type": "STRING",
                                "value": "."
                              },
                              {
                                "type": "CHOICE",
                                "members": [
                                  {
                                    "type": "SEQ",
                                    "members": [
                                      {
                                        "type": "PATTERN",
                                        "value": "[0-9a-fA-F]"
                                      },
                                      {
                                        "type": "REPEAT",
                                        "content": {
                                          "type": "SEQ",
                                          "members": [
                                            {
                                              "type": "CHOICE",
                                              "members": [
                                                {
                                                  "type": "STRING",
                                                  "value": "_"
                                                },
                                                {
                                                  "type": "BLANK"
                                                }
                                              ]
                                            },
                                            {
                                              "type": "PATTERN",
                                              "value": "[0-9a-fA-F]"
                                            }
                                          ]
                                        }
                                      }
                                    ]
                                  },
                                  {
                                    "type": "BLANK"
                                  }
                                ]
                              }
                            ]
                          },
                          {
                            "type": "SEQ",
                            "members": [
                              {
                                "type": "CHOICE",
                                "members": [
                                  {
                                    "type": "STRING",
                                    "value": "_"
                                  },
                                  {
                                    "type": "BLANK"
                                  }
                                ]
                              },
                              {
                                "type": "SEQ",
                                "members": [
                                  {
                                    "type": "PATTERN",
                                    "value": "[0-9a-fA-F]"
                                  },
                                  {
                                    "type": "REPEAT",
                                    "content": {
                                      "type": "SEQ",
                                      "members": [
                                        {
                                          "type": "CHOICE",
                                          "members": [
                                            {
                                              "type": "STRING",
                                              "value": "_"
                                            },
                                            {
                                              "type": "BLANK"
                                            }
                                          ]
                                        },
                                        {
                                          "type": "PATTERN",
                                          "value": "[0-9a-fA-F]"
                                        }
                                      ]
                                    }
                                  }
                                ]
                              }
                            ]
                          },
                          {
                            "type": "SEQ",
                            "members": [
                              {
                                "type": "STRING",
                                "value": "."
                              },
                              {
                                "type": "SEQ",
                                "members": [
                                  {
                                    "type": "PATTERN",
                                    "value": "[0-9a-fA-F]"
                                  },
                                  {
                                    "type": "REPEAT",
                                    "content": {
                                      "type": "SEQ",
                                      "members": [
                                        {
                                          "type": "CHOICE",
                                          "members": [
                                            {
                                              "type": "STRING",
                                              "value": "_"
                                            },
                                            {
                                              "type": "BLANK"
                                            }
                                          ]
                                        },
                                        {
                                          "type": "PATTERN",
                                          "value": "[0-9a-fA-F]"
                                        }
                                      ]
                                    }
                                  }
                                ]
                              }
                            ]
                          }
                        ]
                      },
                      {
                        "type": "SEQ",
                        "members": [
                          {
                            "type": "CHOICE",
                            "members": [
                              {
                                "type": "STRING",
                                "value": "p"
                              },
                              {
                                "type": "STRING",
                                "value": "P"
                              }
                            ]
                          },
                          {
                            "type": "CHOICE",
                            "members": [
                              {
                                "type": "CHOICE",
                                "members": [
                                  {
                                    "type": "STRING",
                                    "value": "+"
                                  },
                                  {
                                    "type": "STRING",
                                    "value": "-"
                                  }
                                ]
                              },
                              {
                                "type": "BLANK"
                              }
                            ]
                          },
                          {
                            "type": "SEQ",
                            "members": [
                              {
                                "type": "PATTERN",
                                "value": "[0-9]"
                              },
                              {
                                "type": "REPEAT",
                                "content": {
                                  "type": "SEQ",
                                  "members": [
                                    {
                                      "type": "CHOICE",
                                      "members": [
                                        {
                                          "type": "STRING",
                                          "value": "_"
                                        },
                                        {
                                          "type": "BLANK"
                                        }
                                      ]
                                    },
                                    {
                                      "type": "PATTERN",
                                      "value": "[0-9]"
                                    }
                                  ]
                                }
                              }
                            ]
                          }
                        ]
                      }
                    ]
                  }
                ]
              }
            ]
          },
          {
            "type": "STRING",
            "value": "i"
          }
        ]
      }
    },
    "rune_literal": {
      "type": "TOKEN",
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "STRING",
            "value": "`"
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "PATTERN",
                "value": "[^'\\\\]"
              },
              {
                "type": "SEQ",
                "members": [
                  {
                    "type": "STRING",
                    "value": "\\"
                  },
                  {
                    "type": "CHOICE",
                    "members": [
                      {
                        "type": "SEQ",
                        "members": [
                          {
                            "type": "STRING",
                            "value": "x"
                          },
                          {
                            "type": "PATTERN",
                            "value": "[0-9a-fA-F]"
                          },
                          {
                            "type": "PATTERN",
                            "value": "[0-9a-fA-F]"
                          }
                        ]
                      },
                      {
                        "type": "SEQ",
                        "members": [
                          {
                            "type": "PATTERN",
                            "value": "[0-7]"
                          },
                          {
                            "type": "PATTERN",
                            "value": "[0-7]"
                          },
                          {
                            "type": "PATTERN",
                            "value": "[0-7]"
                          }
                        ]
                      },
                      {
                        "type": "SEQ",
                        "members": [
                          {
                            "type": "STRING",
                            "value": "u"
                          },
                          {
                            "type": "PATTERN",
                            "value": "[0-9a-fA-F]"
                          },
                          {
                            "type": "PATTERN",
                            "value": "[0-9a-fA-F]"
                          },
                          {
                            "type": "PATTERN",
                            "value": "[0-9a-fA-F]"
                          },
                          {
                            "type": "PATTERN",
                            "value": "[0-9a-fA-F]"
                          }
                        ]
                      },
                      {
                        "type": "SEQ",
                        "members": [
                          {
                            "type": "STRING",
                            "value": "U"
                          },
                          {
                            "type": "PATTERN",
                            "value": "[0-9a-fA-F]"
                          },
                          {
                            "type": "PATTERN",
                            "value": "[0-9a-fA-F]"
                          },
                          {
                            "type": "PATTERN",
                            "value": "[0-9a-fA-F]"
                          },
                          {
                            "type": "PATTERN",
                            "value": "[0-9a-fA-F]"
                          },
                          {
                            "type": "PATTERN",
                            "value": "[0-9a-fA-F]"
                          },
                          {
                            "type": "PATTERN",
                            "value": "[0-9a-fA-F]"
                          },
                          {
                            "type": "PATTERN",
                            "value": "[0-9a-fA-F]"
                          },
                          {
                            "type": "PATTERN",
                            "value": "[0-9a-fA-F]"
                          }
                        ]
                      },
                      {
                        "type": "SEQ",
                        "members": [
                          {
                            "type": "CHOICE",
                            "members": [
                              {
                                "type": "STRING",
                                "value": "a"
                              },
                              {
                                "type": "STRING",
                                "value": "b"
                              },
                              {
                                "type": "STRING",
                                "value": "f"
                              },
                              {
                                "type": "STRING",
                                "value": "n"
                              },
                              {
                                "type": "STRING",
                                "value": "r"
                              },
                              {
                                "type": "STRING",
                                "value": "t"
                              },
                              {
                                "type": "STRING",
                                "value": "v"
                              },
                              {
                                "type": "STRING",
                                "value": "\\"
                              },
                              {
                                "type": "STRING",
                                "value": "'"
                              },
                              {
                                "type": "STRING",
                                "value": "\""
                              }
                            ]
                          }
                        ]
                      }
                    ]
                  }
                ]
              }
            ]
          },
          {
            "type": "STRING",
            "value": "`"
          }
        ]
      }
    },
    "none": {
      "type": "STRING",
      "value": "none"
    },
    "true": {
      "type": "STRING",
      "value": "true"
    },
    "false": {
      "type": "STRING",
      "value": "false"
    },
    "comment": {
      "type": "TOKEN",
      "content": {
        "type": "CHOICE",
        "members": [
          {
            "type": "SEQ",
            "members": [
              {
                "type": "STRING",
                "value": "//"
              },
              {
                "type": "PATTERN",
                "value": ".*"
              }
            ]
          },
          {
            "type": "SEQ",
            "members": [
              {
                "type": "STRING",
                "value": "/*"
              },
              {
                "type": "PATTERN",
                "value": "[^*]*\\*+([^/*][^*]*\\*+)*"
              },
              {
                "type": "STRING",
                "value": "/"
              }
            ]
          }
        ]
      }
    }
  },
  "extras": [
    {
      "type": "SYMBOL",
      "name": "comment"
    },
    {
      "type": "PATTERN",
      "value": "\\s"
    }
  ],
  "conflicts": [
    [
      "_simple_type",
      "_expression"
    ],
    [
      "_simple_type",
      "qualified_type"
    ],
    [
      "_simple_type",
      "generic_type"
    ],
    [
      "qualified_type",
      "_expression"
    ],
    [
      "generic_type",
      "_expression"
    ],
    [
      "fixed_array_type",
      "_expression"
    ],
    [
      "fn_literal",
      "function_type"
    ],
    [
      "call_expression",
      "binary_expression"
    ],
    [
      "call_expression",
      "unary_expression",
      "binary_expression"
    ],
    [
      "labeled_statement",
      "empty_labeled_statement"
    ]
  ],
  "precedences": [],
  "externals": [],
  "inline": [
    "_type",
    "_module_identifier",
    "_field_identifier",
    "_type_identifier",
    "_string_literal"
  ],
  "supertypes": [
    "_expression",
    "_type",
    "_simple_type",
    "_statement",
    "_simple_statement",
    "_expression_with_blocks"
  ]
}

