{
  "name": "go",
  "word": "identifier",
  "rules": {
    "source_file": {
      "type": "REPEAT",
      "content": {
        "type": "CHOICE",
        "members": [
          {
            "type": "SEQ",
            "members": [
              {
                "type": "SYMBOL",
                "name": "_statement"
              },
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "STRING",
                    "value": "\n"
                  },
                  {
                    "type": "STRING",
                    "value": ";"
                  }
                ]
              }
            ]
          },
          {
            "type": "SEQ",
            "members": [
              {
                "type": "SYMBOL",
                "name": "_top_level_declaration"
              },
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "CHOICE",
                    "members": [
                      {
                        "type": "STRING",
                        "value": "\n"
                      },
                      {
                        "type": "STRING",
                        "value": ";"
                      }
                    ]
                  },
                  {
                    "type": "BLANK"
                  }
                ]
              }
            ]
          }
        ]
      }
    },
    "_top_level_declaration": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "package_clause"
        },
        {
          "type": "SYMBOL",
          "name": "function_declaration"
        },
        {
          "type": "SYMBOL",
          "name": "method_declaration"
        },
        {
          "type": "SYMBOL",
          "name": "import_declaration"
        }
      ]
    },
    "package_clause": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "package"
        },
        {
          "type": "SYMBOL",
          "name": "_package_identifier"
        }
      ]
    },
    "import_declaration": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "import"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "import_spec"
            },
            {
              "type": "SYMBOL",
              "name": "import_spec_list"
            }
          ]
        }
      ]
    },
    "import_spec": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "FIELD",
              "name": "name",
              "content": {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "SYMBOL",
                    "name": "dot"
                  },
                  {
                    "type": "SYMBOL",
                    "name": "blank_identifier"
                  },
                  {
                    "type": "SYMBOL",
                    "name": "_package_identifier"
                  }
                ]
              }
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "FIELD",
          "name": "path",
          "content": {
            "type": "SYMBOL",
            "name": "_string_literal"
          }
        }
      ]
    },
    "dot": {
      "type": "STRING",
      "value": "."
    },
    "blank_identifier": {
      "type": "STRING",
      "value": "_"
    },
    "import_spec_list": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "SYMBOL",
                "name": "import_spec"
              },
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "STRING",
                    "value": "\n"
                  },
                  {
                    "type": "STRING",
                    "value": ";"
                  }
                ]
              }
            ]
          }
        },
        {
          "type": "STRING",
          "value": ")"
        }
      ]
    },
    "_declaration": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "const_declaration"
        },
        {
          "type": "SYMBOL",
          "name": "type_declaration"
        },
        {
          "type": "SYMBOL",
          "name": "var_declaration"
        }
      ]
    },
    "const_declaration": {
      "type": "SEQ",
      "members": [
        {
          "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": "CHOICE",
                        "members": [
                          {
                            "type": "STRING",
                            "value": "\n"
                          },
                          {
                            "type": "STRING",
                            "value": ";"
                          }
                        ]
                      }
                    ]
                  }
                },
                {
                  "type": "STRING",
                  "value": ")"
                }
              ]
            }
          ]
        }
      ]
    },
    "const_spec": {
      "type": "PREC_LEFT",
      "value": 0,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "FIELD",
            "name": "name",
            "content": {
              "type": "SEQ",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "identifier"
                },
                {
                  "type": "REPEAT",
                  "content": {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "STRING",
                        "value": ","
                      },
                      {
                        "type": "SYMBOL",
                        "name": "identifier"
                      }
                    ]
                  }
                }
              ]
            }
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "SEQ",
                "members": [
                  {
                    "type": "CHOICE",
                    "members": [
                      {
                        "type": "FIELD",
                        "name": "type",
                        "content": {
                          "type": "SYMBOL",
                          "name": "_type"
                        }
                      },
                      {
                        "type": "BLANK"
                      }
                    ]
                  },
                  {
                    "type": "STRING",
                    "value": "="
                  },
                  {
                    "type": "FIELD",
                    "name": "value",
                    "content": {
                      "type": "SYMBOL",
                      "name": "expression_list"
                    }
                  }
                ]
              },
              {
                "type": "BLANK"
              }
            ]
          }
        ]
      }
    },
    "var_declaration": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "var"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "var_spec"
            },
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "STRING",
                  "value": "("
                },
                {
                  "type": "REPEAT",
                  "content": {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "SYMBOL",
                        "name": "var_spec"
                      },
                      {
                        "type": "CHOICE",
                        "members": [
                          {
                            "type": "STRING",
                            "value": "\n"
                          },
                          {
                            "type": "STRING",
                            "value": ";"
                          }
                        ]
                      }
                    ]
                  }
                },
                {
                  "type": "STRING",
                  "value": ")"
                }
              ]
            }
          ]
        }
      ]
    },
    "var_spec": {
      "type": "SEQ",
      "members": [
        {
          "type": "FIELD",
          "name": "name",
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "SYMBOL",
                "name": "identifier"
              },
              {
                "type": "REPEAT",
                "content": {
                  "type": "SEQ",
                  "members": [
                    {
                      "type": "STRING",
                      "value": ","
                    },
                    {
                      "type": "SYMBOL",
                      "name": "identifier"
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "FIELD",
                  "name": "type",
                  "content": {
                    "type": "SYMBOL",
                    "name": "_type"
                  }
                },
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "SEQ",
                      "members": [
                        {
                          "type": "STRING",
                          "value": "="
                        },
                        {
                          "type": "FIELD",
                          "name": "value",
                          "content": {
                            "type": "SYMBOL",
                            "name": "expression_list"
                          }
                        }
                      ]
                    },
                    {
                      "type": "BLANK"
                    }
                  ]
                }
              ]
            },
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "STRING",
                  "value": "="
                },
                {
                  "type": "FIELD",
                  "name": "value",
                  "content": {
                    "type": "SYMBOL",
                    "name": "expression_list"
                  }
                }
              ]
            }
          ]
        }
      ]
    },
    "function_declaration": {
      "type": "PREC_RIGHT",
      "value": 1,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "STRING",
            "value": "func"
          },
          {
            "type": "FIELD",
            "name": "name",
            "content": {
              "type": "SYMBOL",
              "name": "identifier"
            }
          },
          {
            "type": "FIELD",
            "name": "parameters",
            "content": {
              "type": "SYMBOL",
              "name": "parameter_list"
            }
          },
          {
            "type": "FIELD",
            "name": "result",
            "content": {
              "type": "CHOICE",
              "members": [
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "SYMBOL",
                      "name": "parameter_list"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "_simple_type"
                    }
                  ]
                },
                {
                  "type": "BLANK"
                }
              ]
            }
          },
          {
            "type": "FIELD",
            "name": "body",
            "content": {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "block"
                },
                {
                  "type": "BLANK"
                }
              ]
            }
          }
        ]
      }
    },
    "method_declaration": {
      "type": "PREC_RIGHT",
      "value": 1,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "STRING",
            "value": "func"
          },
          {
            "type": "FIELD",
            "name": "receiver",
            "content": {
              "type": "SYMBOL",
              "name": "parameter_list"
            }
          },
          {
            "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": "CHOICE",
                  "members": [
                    {
                      "type": "SYMBOL",
                      "name": "parameter_list"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "_simple_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": "CHOICE",
                          "members": [
                            {
                              "type": "SYMBOL",
                              "name": "parameter_declaration"
                            },
                            {
                              "type": "SYMBOL",
                              "name": "variadic_parameter_declaration"
                            }
                          ]
                        },
                        {
                          "type": "REPEAT",
                          "content": {
                            "type": "SEQ",
                            "members": [
                              {
                                "type": "STRING",
                                "value": ","
                              },
                              {
                                "type": "CHOICE",
                                "members": [
                                  {
                                    "type": "SYMBOL",
                                    "name": "parameter_declaration"
                                  },
                                  {
                                    "type": "SYMBOL",
                                    "name": "variadic_parameter_declaration"
                                  }
                                ]
                              }
                            ]
                          }
                        }
                      ]
                    },
                    {
                      "type": "BLANK"
                    }
                  ]
                },
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "STRING",
                      "value": ","
                    },
                    {
                      "type": "BLANK"
                    }
                  ]
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": ")"
        }
      ]
    },
    "parameter_declaration": {
      "type": "SEQ",
      "members": [
        {
          "type": "FIELD",
          "name": "name",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SEQ",
                "members": [
                  {
                    "type": "SYMBOL",
                    "name": "identifier"
                  },
                  {
                    "type": "REPEAT",
                    "content": {
                      "type": "SEQ",
                      "members": [
                        {
                          "type": "STRING",
                          "value": ","
                        },
                        {
                          "type": "SYMBOL",
                          "name": "identifier"
                        }
                      ]
                    }
                  }
                ]
              },
              {
                "type": "BLANK"
              }
            ]
          }
        },
        {
          "type": "FIELD",
          "name": "type",
          "content": {
            "type": "SYMBOL",
            "name": "_type"
          }
        }
      ]
    },
    "variadic_parameter_declaration": {
      "type": "SEQ",
      "members": [
        {
          "type": "FIELD",
          "name": "name",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "identifier"
              },
              {
                "type": "BLANK"
              }
            ]
          }
        },
        {
          "type": "STRING",
          "value": "..."
        },
        {
          "type": "FIELD",
          "name": "type",
          "content": {
            "type": "SYMBOL",
            "name": "_type"
          }
        }
      ]
    },
    "type_alias": {
      "type": "SEQ",
      "members": [
        {
          "type": "FIELD",
          "name": "name",
          "content": {
            "type": "SYMBOL",
            "name": "_type_identifier"
          }
        },
        {
          "type": "STRING",
          "value": "="
        },
        {
          "type": "FIELD",
          "name": "type",
          "content": {
            "type": "SYMBOL",
            "name": "_type"
          }
        }
      ]
    },
    "type_declaration": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "type"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "type_spec"
            },
            {
              "type": "SYMBOL",
              "name": "type_alias"
            },
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "STRING",
                  "value": "("
                },
                {
                  "type": "REPEAT",
                  "content": {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "CHOICE",
                        "members": [
                          {
                            "type": "SYMBOL",
                            "name": "type_spec"
                          },
                          {
                            "type": "SYMBOL",
                            "name": "type_alias"
                          }
                        ]
                      },
                      {
                        "type": "CHOICE",
                        "members": [
                          {
                            "type": "STRING",
                            "value": "\n"
                          },
                          {
                            "type": "STRING",
                            "value": ";"
                          }
                        ]
                      }
                    ]
                  }
                },
                {
                  "type": "STRING",
                  "value": ")"
                }
              ]
            }
          ]
        }
      ]
    },
    "type_spec": {
      "type": "SEQ",
      "members": [
        {
          "type": "FIELD",
          "name": "name",
          "content": {
            "type": "SYMBOL",
            "name": "_type_identifier"
          }
        },
        {
          "type": "FIELD",
          "name": "type",
          "content": {
            "type": "SYMBOL",
            "name": "_type"
          }
        }
      ]
    },
    "field_name_list": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "_field_identifier"
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "STRING",
                "value": ","
              },
              {
                "type": "SYMBOL",
                "name": "_field_identifier"
              }
            ]
          }
        }
      ]
    },
    "expression_list": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "_expression"
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "STRING",
                "value": ","
              },
              {
                "type": "SYMBOL",
                "name": "_expression"
              }
            ]
          }
        }
      ]
    },
    "_type": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "_simple_type"
        },
        {
          "type": "SYMBOL",
          "name": "parenthesized_type"
        }
      ]
    },
    "parenthesized_type": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "SYMBOL",
          "name": "_type"
        },
        {
          "type": "STRING",
          "value": ")"
        }
      ]
    },
    "_simple_type": {
      "type": "CHOICE",
      "members": [
        {
          "type": "PREC_DYNAMIC",
          "value": -1,
          "content": {
            "type": "SYMBOL",
            "name": "_type_identifier"
          }
        },
        {
          "type": "SYMBOL",
          "name": "qualified_type"
        },
        {
          "type": "SYMBOL",
          "name": "pointer_type"
        },
        {
          "type": "SYMBOL",
          "name": "struct_type"
        },
        {
          "type": "SYMBOL",
          "name": "interface_type"
        },
        {
          "type": "SYMBOL",
          "name": "array_type"
        },
        {
          "type": "SYMBOL",
          "name": "slice_type"
        },
        {
          "type": "SYMBOL",
          "name": "map_type"
        },
        {
          "type": "SYMBOL",
          "name": "channel_type"
        },
        {
          "type": "SYMBOL",
          "name": "function_type"
        }
      ]
    },
    "pointer_type": {
      "type": "PREC",
      "value": 6,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "STRING",
            "value": "*"
          },
          {
            "type": "SYMBOL",
            "name": "_type"
          }
        ]
      }
    },
    "array_type": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "["
        },
        {
          "type": "FIELD",
          "name": "length",
          "content": {
            "type": "SYMBOL",
            "name": "_expression"
          }
        },
        {
          "type": "STRING",
          "value": "]"
        },
        {
          "type": "FIELD",
          "name": "element",
          "content": {
            "type": "SYMBOL",
            "name": "_type"
          }
        }
      ]
    },
    "implicit_length_array_type": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "["
        },
        {
          "type": "STRING",
          "value": "..."
        },
        {
          "type": "STRING",
          "value": "]"
        },
        {
          "type": "FIELD",
          "name": "element",
          "content": {
            "type": "SYMBOL",
            "name": "_type"
          }
        }
      ]
    },
    "slice_type": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "["
        },
        {
          "type": "STRING",
          "value": "]"
        },
        {
          "type": "FIELD",
          "name": "element",
          "content": {
            "type": "SYMBOL",
            "name": "_type"
          }
        }
      ]
    },
    "struct_type": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "struct"
        },
        {
          "type": "SYMBOL",
          "name": "field_declaration_list"
        }
      ]
    },
    "field_declaration_list": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "{"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "field_declaration"
                },
                {
                  "type": "REPEAT",
                  "content": {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "CHOICE",
                        "members": [
                          {
                            "type": "STRING",
                            "value": "\n"
                          },
                          {
                            "type": "STRING",
                            "value": ";"
                          }
                        ]
                      },
                      {
                        "type": "SYMBOL",
                        "name": "field_declaration"
                      }
                    ]
                  }
                },
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "CHOICE",
                      "members": [
                        {
                          "type": "STRING",
                          "value": "\n"
                        },
                        {
                          "type": "STRING",
                          "value": ";"
                        }
                      ]
                    },
                    {
                      "type": "BLANK"
                    }
                  ]
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "}"
        }
      ]
    },
    "field_declaration": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "FIELD",
                  "name": "name",
                  "content": {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "SYMBOL",
                        "name": "_field_identifier"
                      },
                      {
                        "type": "REPEAT",
                        "content": {
                          "type": "SEQ",
                          "members": [
                            {
                              "type": "STRING",
                              "value": ","
                            },
                            {
                              "type": "SYMBOL",
                              "name": "_field_identifier"
                            }
                          ]
                        }
                      }
                    ]
                  }
                },
                {
                  "type": "FIELD",
                  "name": "type",
                  "content": {
                    "type": "SYMBOL",
                    "name": "_type"
                  }
                }
              ]
            },
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "STRING",
                      "value": "*"
                    },
                    {
                      "type": "BLANK"
                    }
                  ]
                },
                {
                  "type": "FIELD",
                  "name": "type",
                  "content": {
                    "type": "CHOICE",
                    "members": [
                      {
                        "type": "SYMBOL",
                        "name": "_type_identifier"
                      },
                      {
                        "type": "SYMBOL",
                        "name": "qualified_type"
                      }
                    ]
                  }
                }
              ]
            }
          ]
        },
        {
          "type": "FIELD",
          "name": "tag",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "_string_literal"
              },
              {
                "type": "BLANK"
              }
            ]
          }
        }
      ]
    },
    "interface_type": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "interface"
        },
        {
          "type": "SYMBOL",
          "name": "method_spec_list"
        }
      ]
    },
    "method_spec_list": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "{"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "SYMBOL",
                      "name": "_type_identifier"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "qualified_type"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "method_spec"
                    }
                  ]
                },
                {
                  "type": "REPEAT",
                  "content": {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "CHOICE",
                        "members": [
                          {
                            "type": "STRING",
                            "value": "\n"
                          },
                          {
                            "type": "STRING",
                            "value": ";"
                          }
                        ]
                      },
                      {
                        "type": "CHOICE",
                        "members": [
                          {
                            "type": "SYMBOL",
                            "name": "_type_identifier"
                          },
                          {
                            "type": "SYMBOL",
                            "name": "qualified_type"
                          },
                          {
                            "type": "SYMBOL",
                            "name": "method_spec"
                          }
                        ]
                      }
                    ]
                  }
                },
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "CHOICE",
                      "members": [
                        {
                          "type": "STRING",
                          "value": "\n"
                        },
                        {
                          "type": "STRING",
                          "value": ";"
                        }
                      ]
                    },
                    {
                      "type": "BLANK"
                    }
                  ]
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "}"
        }
      ]
    },
    "method_spec": {
      "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": "CHOICE",
                "members": [
                  {
                    "type": "SYMBOL",
                    "name": "parameter_list"
                  },
                  {
                    "type": "SYMBOL",
                    "name": "_simple_type"
                  }
                ]
              },
              {
                "type": "BLANK"
              }
            ]
          }
        }
      ]
    },
    "map_type": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "map"
        },
        {
          "type": "STRING",
          "value": "["
        },
        {
          "type": "FIELD",
          "name": "key",
          "content": {
            "type": "SYMBOL",
            "name": "_type"
          }
        },
        {
          "type": "STRING",
          "value": "]"
        },
        {
          "type": "FIELD",
          "name": "value",
          "content": {
            "type": "SYMBOL",
            "name": "_type"
          }
        }
      ]
    },
    "channel_type": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SEQ",
          "members": [
            {
              "type": "STRING",
              "value": "chan"
            },
            {
              "type": "FIELD",
              "name": "value",
              "content": {
                "type": "SYMBOL",
                "name": "_type"
              }
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "STRING",
              "value": "chan"
            },
            {
              "type": "STRING",
              "value": "<-"
            },
            {
              "type": "FIELD",
              "name": "value",
              "content": {
                "type": "SYMBOL",
                "name": "_type"
              }
            }
          ]
        },
        {
          "type": "PREC",
          "value": 6,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "STRING",
                "value": "<-"
              },
              {
                "type": "STRING",
                "value": "chan"
              },
              {
                "type": "FIELD",
                "name": "value",
                "content": {
                  "type": "SYMBOL",
                  "name": "_type"
                }
              }
            ]
          }
        }
      ]
    },
    "function_type": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "func"
        },
        {
          "type": "FIELD",
          "name": "parameters",
          "content": {
            "type": "SYMBOL",
            "name": "parameter_list"
          }
        },
        {
          "type": "FIELD",
          "name": "result",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "SYMBOL",
                    "name": "parameter_list"
                  },
                  {
                    "type": "SYMBOL",
                    "name": "_simple_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": "CHOICE",
      "members": [
        {
          "type": "SEQ",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_statement"
            },
            {
              "type": "REPEAT",
              "content": {
                "type": "SEQ",
                "members": [
                  {
                    "type": "CHOICE",
                    "members": [
                      {
                        "type": "STRING",
                        "value": "\n"
                      },
                      {
                        "type": "STRING",
                        "value": ";"
                      }
                    ]
                  },
                  {
                    "type": "SYMBOL",
                    "name": "_statement"
                  }
                ]
              }
            },
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SEQ",
                  "members": [
                    {
                      "type": "CHOICE",
                      "members": [
                        {
                          "type": "STRING",
                          "value": "\n"
                        },
                        {
                          "type": "STRING",
                          "value": ";"
                        }
                      ]
                    },
                    {
                      "type": "CHOICE",
                      "members": [
                        {
                          "type": "ALIAS",
                          "content": {
                            "type": "SYMBOL",
                            "name": "empty_labeled_statement"
                          },
                          "named": true,
                          "value": "labeled_statement"
                        },
                        {
                          "type": "BLANK"
                        }
                      ]
                    }
                  ]
                },
                {
                  "type": "BLANK"
                }
              ]
            }
          ]
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "SYMBOL",
            "name": "empty_labeled_statement"
          },
          "named": true,
          "value": "labeled_statement"
        }
      ]
    },
    "_statement": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "_declaration"
        },
        {
          "type": "SYMBOL",
          "name": "_simple_statement"
        },
        {
          "type": "SYMBOL",
          "name": "return_statement"
        },
        {
          "type": "SYMBOL",
          "name": "go_statement"
        },
        {
          "type": "SYMBOL",
          "name": "defer_statement"
        },
        {
          "type": "SYMBOL",
          "name": "if_statement"
        },
        {
          "type": "SYMBOL",
          "name": "for_statement"
        },
        {
          "type": "SYMBOL",
          "name": "expression_switch_statement"
        },
        {
          "type": "SYMBOL",
          "name": "type_switch_statement"
        },
        {
          "type": "SYMBOL",
          "name": "select_statement"
        },
        {
          "type": "SYMBOL",
          "name": "labeled_statement"
        },
        {
          "type": "SYMBOL",
          "name": "fallthrough_statement"
        },
        {
          "type": "SYMBOL",
          "name": "break_statement"
        },
        {
          "type": "SYMBOL",
          "name": "continue_statement"
        },
        {
          "type": "SYMBOL",
          "name": "goto_statement"
        },
        {
          "type": "SYMBOL",
          "name": "block"
        },
        {
          "type": "SYMBOL",
          "name": "empty_statement"
        }
      ]
    },
    "empty_statement": {
      "type": "STRING",
      "value": ";"
    },
    "_simple_statement": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "_expression"
        },
        {
          "type": "SYMBOL",
          "name": "send_statement"
        },
        {
          "type": "SYMBOL",
          "name": "inc_statement"
        },
        {
          "type": "SYMBOL",
          "name": "dec_statement"
        },
        {
          "type": "SYMBOL",
          "name": "assignment_statement"
        },
        {
          "type": "SYMBOL",
          "name": "short_var_declaration"
        }
      ]
    },
    "send_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "FIELD",
          "name": "channel",
          "content": {
            "type": "SYMBOL",
            "name": "_expression"
          }
        },
        {
          "type": "STRING",
          "value": "<-"
        },
        {
          "type": "FIELD",
          "name": "value",
          "content": {
            "type": "SYMBOL",
            "name": "_expression"
          }
        }
      ]
    },
    "receive_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "FIELD",
                  "name": "left",
                  "content": {
                    "type": "SYMBOL",
                    "name": "expression_list"
                  }
                },
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "STRING",
                      "value": "="
                    },
                    {
                      "type": "STRING",
                      "value": ":="
                    }
                  ]
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "FIELD",
          "name": "right",
          "content": {
            "type": "SYMBOL",
            "name": "_expression"
          }
        }
      ]
    },
    "inc_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "_expression"
        },
        {
          "type": "STRING",
          "value": "++"
        }
      ]
    },
    "dec_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "_expression"
        },
        {
          "type": "STRING",
          "value": "--"
        }
      ]
    },
    "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": "SYMBOL",
            "name": "expression_list"
          }
        }
      ]
    },
    "short_var_declaration": {
      "type": "SEQ",
      "members": [
        {
          "type": "FIELD",
          "name": "left",
          "content": {
            "type": "SYMBOL",
            "name": "expression_list"
          }
        },
        {
          "type": "STRING",
          "value": ":="
        },
        {
          "type": "FIELD",
          "name": "right",
          "content": {
            "type": "SYMBOL",
            "name": "expression_list"
          }
        }
      ]
    },
    "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": ":"
        },
        {
          "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": ":"
        }
      ]
    },
    "fallthrough_statement": {
      "type": "PREC_LEFT",
      "value": 0,
      "content": {
        "type": "STRING",
        "value": "fallthrough"
      }
    },
    "break_statement": {
      "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": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "continue"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "ALIAS",
              "content": {
                "type": "SYMBOL",
                "name": "identifier"
              },
              "named": true,
              "value": "label_name"
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "goto_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "goto"
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "SYMBOL",
            "name": "identifier"
          },
          "named": true,
          "value": "label_name"
        }
      ]
    },
    "return_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "return"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "expression_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": "_expression"
        }
      ]
    },
    "if_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "if"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "FIELD",
                  "name": "initializer",
                  "content": {
                    "type": "SYMBOL",
                    "name": "_simple_statement"
                  }
                },
                {
                  "type": "STRING",
                  "value": ";"
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "FIELD",
          "name": "condition",
          "content": {
            "type": "SYMBOL",
            "name": "_expression"
          }
        },
        {
          "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_statement"
                      }
                    ]
                  }
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "for_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "for"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "_expression"
                },
                {
                  "type": "SYMBOL",
                  "name": "for_clause"
                },
                {
                  "type": "SYMBOL",
                  "name": "range_clause"
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "FIELD",
          "name": "body",
          "content": {
            "type": "SYMBOL",
            "name": "block"
          }
        }
      ]
    },
    "for_clause": {
      "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"
              }
            ]
          }
        }
      ]
    },
    "range_clause": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "FIELD",
                  "name": "left",
                  "content": {
                    "type": "SYMBOL",
                    "name": "expression_list"
                  }
                },
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "STRING",
                      "value": "="
                    },
                    {
                      "type": "STRING",
                      "value": ":="
                    }
                  ]
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "range"
        },
        {
          "type": "FIELD",
          "name": "right",
          "content": {
            "type": "SYMBOL",
            "name": "_expression"
          }
        }
      ]
    },
    "expression_switch_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "switch"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "FIELD",
                  "name": "initializer",
                  "content": {
                    "type": "SYMBOL",
                    "name": "_simple_statement"
                  }
                },
                {
                  "type": "STRING",
                  "value": ";"
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "FIELD",
          "name": "value",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "_expression"
              },
              {
                "type": "BLANK"
              }
            ]
          }
        },
        {
          "type": "STRING",
          "value": "{"
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "expression_case"
              },
              {
                "type": "SYMBOL",
                "name": "default_case"
              }
            ]
          }
        },
        {
          "type": "STRING",
          "value": "}"
        }
      ]
    },
    "expression_case": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "case"
        },
        {
          "type": "FIELD",
          "name": "value",
          "content": {
            "type": "SYMBOL",
            "name": "expression_list"
          }
        },
        {
          "type": "STRING",
          "value": ":"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_statement_list"
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "default_case": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "default"
        },
        {
          "type": "STRING",
          "value": ":"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_statement_list"
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "type_switch_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "switch"
        },
        {
          "type": "SYMBOL",
          "name": "_type_switch_header"
        },
        {
          "type": "STRING",
          "value": "{"
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "type_case"
              },
              {
                "type": "SYMBOL",
                "name": "default_case"
              }
            ]
          }
        },
        {
          "type": "STRING",
          "value": "}"
        }
      ]
    },
    "_type_switch_header": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "FIELD",
                  "name": "initializer",
                  "content": {
                    "type": "SYMBOL",
                    "name": "_simple_statement"
                  }
                },
                {
                  "type": "STRING",
                  "value": ";"
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "FIELD",
                  "name": "alias",
                  "content": {
                    "type": "SYMBOL",
                    "name": "expression_list"
                  }
                },
                {
                  "type": "STRING",
                  "value": ":="
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "FIELD",
          "name": "value",
          "content": {
            "type": "SYMBOL",
            "name": "_expression"
          }
        },
        {
          "type": "STRING",
          "value": "."
        },
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "STRING",
          "value": "type"
        },
        {
          "type": "STRING",
          "value": ")"
        }
      ]
    },
    "type_case": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "case"
        },
        {
          "type": "FIELD",
          "name": "type",
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "SYMBOL",
                "name": "_type"
              },
              {
                "type": "REPEAT",
                "content": {
                  "type": "SEQ",
                  "members": [
                    {
                      "type": "STRING",
                      "value": ","
                    },
                    {
                      "type": "SYMBOL",
                      "name": "_type"
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "type": "STRING",
          "value": ":"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_statement_list"
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "select_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "select"
        },
        {
          "type": "STRING",
          "value": "{"
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "communication_case"
              },
              {
                "type": "SYMBOL",
                "name": "default_case"
              }
            ]
          }
        },
        {
          "type": "STRING",
          "value": "}"
        }
      ]
    },
    "communication_case": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "case"
        },
        {
          "type": "FIELD",
          "name": "communication",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "send_statement"
              },
              {
                "type": "SYMBOL",
                "name": "receive_statement"
              }
            ]
          }
        },
        {
          "type": "STRING",
          "value": ":"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_statement_list"
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "_expression": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "unary_expression"
        },
        {
          "type": "SYMBOL",
          "name": "binary_expression"
        },
        {
          "type": "SYMBOL",
          "name": "selector_expression"
        },
        {
          "type": "SYMBOL",
          "name": "index_expression"
        },
        {
          "type": "SYMBOL",
          "name": "slice_expression"
        },
        {
          "type": "SYMBOL",
          "name": "call_expression"
        },
        {
          "type": "SYMBOL",
          "name": "type_assertion_expression"
        },
        {
          "type": "SYMBOL",
          "name": "type_conversion_expression"
        },
        {
          "type": "SYMBOL",
          "name": "identifier"
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "STRING",
                "value": "new"
              },
              {
                "type": "STRING",
                "value": "make"
              }
            ]
          },
          "named": true,
          "value": "identifier"
        },
        {
          "type": "SYMBOL",
          "name": "composite_literal"
        },
        {
          "type": "SYMBOL",
          "name": "func_literal"
        },
        {
          "type": "SYMBOL",
          "name": "_string_literal"
        },
        {
          "type": "SYMBOL",
          "name": "int_literal"
        },
        {
          "type": "SYMBOL",
          "name": "float_literal"
        },
        {
          "type": "SYMBOL",
          "name": "imaginary_literal"
        },
        {
          "type": "SYMBOL",
          "name": "rune_literal"
        },
        {
          "type": "SYMBOL",
          "name": "nil"
        },
        {
          "type": "SYMBOL",
          "name": "true"
        },
        {
          "type": "SYMBOL",
          "name": "false"
        },
        {
          "type": "SYMBOL",
          "name": "parenthesized_expression"
        }
      ]
    },
    "parenthesized_expression": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "SYMBOL",
          "name": "_expression"
        },
        {
          "type": "STRING",
          "value": ")"
        }
      ]
    },
    "call_expression": {
      "type": "PREC",
      "value": 7,
      "content": {
        "type": "CHOICE",
        "members": [
          {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "function",
                "content": {
                  "type": "ALIAS",
                  "content": {
                    "type": "CHOICE",
                    "members": [
                      {
                        "type": "STRING",
                        "value": "new"
                      },
                      {
                        "type": "STRING",
                        "value": "make"
                      }
                    ]
                  },
                  "named": true,
                  "value": "identifier"
                }
              },
              {
                "type": "FIELD",
                "name": "arguments",
                "content": {
                  "type": "ALIAS",
                  "content": {
                    "type": "SYMBOL",
                    "name": "special_argument_list"
                  },
                  "named": true,
                  "value": "argument_list"
                }
              }
            ]
          },
          {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "function",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              },
              {
                "type": "FIELD",
                "name": "arguments",
                "content": {
                  "type": "SYMBOL",
                  "name": "argument_list"
                }
              }
            ]
          }
        ]
      }
    },
    "variadic_argument": {
      "type": "PREC_RIGHT",
      "value": 0,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "SYMBOL",
            "name": "_expression"
          },
          {
            "type": "STRING",
            "value": "..."
          }
        ]
      }
    },
    "special_argument_list": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "SYMBOL",
          "name": "_type"
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "STRING",
                "value": ","
              },
              {
                "type": "SYMBOL",
                "name": "_expression"
              }
            ]
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": ","
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": ")"
        }
      ]
    },
    "argument_list": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "SYMBOL",
                      "name": "_expression"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "variadic_argument"
                    }
                  ]
                },
                {
                  "type": "REPEAT",
                  "content": {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "STRING",
                        "value": ","
                      },
                      {
                        "type": "CHOICE",
                        "members": [
                          {
                            "type": "SYMBOL",
                            "name": "_expression"
                          },
                          {
                            "type": "SYMBOL",
                            "name": "variadic_argument"
                          }
                        ]
                      }
                    ]
                  }
                },
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "STRING",
                      "value": ","
                    },
                    {
                      "type": "BLANK"
                    }
                  ]
                }
              ]
            },
            {
              "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": "SYMBOL",
              "name": "_field_identifier"
            }
          }
        ]
      }
    },
    "index_expression": {
      "type": "PREC",
      "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": "]"
          }
        ]
      }
    },
    "slice_expression": {
      "type": "PREC",
      "value": 7,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "FIELD",
            "name": "operand",
            "content": {
              "type": "SYMBOL",
              "name": "_expression"
            }
          },
          {
            "type": "STRING",
            "value": "["
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "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"
                        }
                      ]
                    }
                  }
                ]
              },
              {
                "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": "SYMBOL",
                      "name": "_expression"
                    }
                  },
                  {
                    "type": "STRING",
                    "value": ":"
                  },
                  {
                    "type": "FIELD",
                    "name": "capacity",
                    "content": {
                      "type": "SYMBOL",
                      "name": "_expression"
                    }
                  }
                ]
              }
            ]
          },
          {
            "type": "STRING",
            "value": "]"
          }
        ]
      }
    },
    "type_assertion_expression": {
      "type": "PREC",
      "value": 7,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "FIELD",
            "name": "operand",
            "content": {
              "type": "SYMBOL",
              "name": "_expression"
            }
          },
          {
            "type": "STRING",
            "value": "."
          },
          {
            "type": "STRING",
            "value": "("
          },
          {
            "type": "FIELD",
            "name": "type",
            "content": {
              "type": "SYMBOL",
              "name": "_type"
            }
          },
          {
            "type": "STRING",
            "value": ")"
          }
        ]
      }
    },
    "type_conversion_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": "CHOICE",
            "members": [
              {
                "type": "STRING",
                "value": ","
              },
              {
                "type": "BLANK"
              }
            ]
          },
          {
            "type": "STRING",
            "value": ")"
          }
        ]
      }
    },
    "composite_literal": {
      "type": "PREC",
      "value": -1,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "FIELD",
            "name": "type",
            "content": {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "map_type"
                },
                {
                  "type": "SYMBOL",
                  "name": "slice_type"
                },
                {
                  "type": "SYMBOL",
                  "name": "array_type"
                },
                {
                  "type": "SYMBOL",
                  "name": "implicit_length_array_type"
                },
                {
                  "type": "SYMBOL",
                  "name": "struct_type"
                },
                {
                  "type": "SYMBOL",
                  "name": "_type_identifier"
                },
                {
                  "type": "SYMBOL",
                  "name": "qualified_type"
                }
              ]
            }
          },
          {
            "type": "FIELD",
            "name": "body",
            "content": {
              "type": "SYMBOL",
              "name": "literal_value"
            }
          }
        ]
      }
    },
    "literal_value": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "{"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "SYMBOL",
                      "name": "element"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "keyed_element"
                    }
                  ]
                },
                {
                  "type": "REPEAT",
                  "content": {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "STRING",
                        "value": ","
                      },
                      {
                        "type": "CHOICE",
                        "members": [
                          {
                            "type": "SYMBOL",
                            "name": "element"
                          },
                          {
                            "type": "SYMBOL",
                            "name": "keyed_element"
                          }
                        ]
                      }
                    ]
                  }
                },
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "STRING",
                      "value": ","
                    },
                    {
                      "type": "BLANK"
                    }
                  ]
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "}"
        }
      ]
    },
    "keyed_element": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "_expression"
                },
                {
                  "type": "STRING",
                  "value": ":"
                }
              ]
            },
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "literal_value"
                },
                {
                  "type": "STRING",
                  "value": ":"
                }
              ]
            },
            {
              "type": "PREC",
              "value": 1,
              "content": {
                "type": "SEQ",
                "members": [
                  {
                    "type": "SYMBOL",
                    "name": "_field_identifier"
                  },
                  {
                    "type": "STRING",
                    "value": ":"
                  }
                ]
              }
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_expression"
            },
            {
              "type": "SYMBOL",
              "name": "literal_value"
            }
          ]
        }
      ]
    },
    "element": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "_expression"
        },
        {
          "type": "SYMBOL",
          "name": "literal_value"
        }
      ]
    },
    "func_literal": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "func"
        },
        {
          "type": "FIELD",
          "name": "parameters",
          "content": {
            "type": "SYMBOL",
            "name": "parameter_list"
          }
        },
        {
          "type": "FIELD",
          "name": "result",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "SYMBOL",
                    "name": "parameter_list"
                  },
                  {
                    "type": "SYMBOL",
                    "name": "_simple_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": "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": "package",
          "content": {
            "type": "SYMBOL",
            "name": "_package_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": "\\p{L}"
              },
              {
                "type": "STRING",
                "value": "_"
              }
            ]
          },
          {
            "type": "REPEAT",
            "content": {
              "type": "CHOICE",
              "members": [
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "PATTERN",
                      "value": "\\p{L}"
                    },
                    {
                      "type": "STRING",
                      "value": "_"
                    }
                  ]
                },
                {
                  "type": "PATTERN",
                  "value": "[0-9]"
                }
              ]
            }
          }
        ]
      }
    },
    "_type_identifier": {
      "type": "ALIAS",
      "content": {
        "type": "SYMBOL",
        "name": "identifier"
      },
      "named": true,
      "value": "type_identifier"
    },
    "_field_identifier": {
      "type": "ALIAS",
      "content": {
        "type": "SYMBOL",
        "name": "identifier"
      },
      "named": true,
      "value": "field_identifier"
    },
    "_package_identifier": {
      "type": "ALIAS",
      "content": {
        "type": "SYMBOL",
        "name": "identifier"
      },
      "named": true,
      "value": "package_identifier"
    },
    "_string_literal": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "raw_string_literal"
        },
        {
          "type": "SYMBOL",
          "name": "interpreted_string_literal"
        }
      ]
    },
    "raw_string_literal": {
      "type": "TOKEN",
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "STRING",
            "value": "`"
          },
          {
            "type": "REPEAT",
            "content": {
              "type": "PATTERN",
              "value": "[^`]"
            }
          },
          {
            "type": "STRING",
            "value": "`"
          }
        ]
      }
    },
    "interpreted_string_literal": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "\""
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "IMMEDIATE_TOKEN",
                "content": {
                  "type": "PREC",
                  "value": 1,
                  "content": {
                    "type": "PATTERN",
                    "value": "[^\"\\n\\\\]+"
                  }
                }
              },
              {
                "type": "SYMBOL",
                "name": "escape_sequence"
              }
            ]
          }
        },
        {
          "type": "STRING",
          "value": "\""
        }
      ]
    },
    "escape_sequence": {
      "type": "IMMEDIATE_TOKEN",
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "STRING",
            "value": "\\"
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "PATTERN",
                "value": "[^xuU]"
              },
              {
                "type": "PATTERN",
                "value": "\\d{2,3}"
              },
              {
                "type": "PATTERN",
                "value": "x[0-9a-fA-F]{2,}"
              },
              {
                "type": "PATTERN",
                "value": "u[0-9a-fA-F]{4}"
              },
              {
                "type": "PATTERN",
                "value": "U[0-9a-fA-F]{8}"
              }
            ]
          }
        ]
      }
    },
    "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": "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": "BLANK"
                      }
                    ]
                  },
                  {
                    "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": "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": "BLANK"
                              }
                            ]
                          },
                          {
                            "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": "'"
          }
        ]
      }
    },
    "nil": {
      "type": "STRING",
      "value": "nil"
    },
    "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"
    ],
    [
      "qualified_type",
      "_expression"
    ],
    [
      "func_literal",
      "function_type"
    ],
    [
      "function_type"
    ],
    [
      "parameter_declaration",
      "_simple_type"
    ]
  ],
  "precedences": [],
  "externals": [],
  "inline": [
    "_type",
    "_type_identifier",
    "_field_identifier",
    "_package_identifier",
    "_top_level_declaration",
    "_string_literal"
  ],
  "supertypes": [
    "_expression",
    "_type",
    "_simple_type",
    "_statement",
    "_simple_statement"
  ]
}

