{
  "name": "zig",
  "rules": {
    "source_file": {
      "type": "REPEAT",
      "content": {
        "type": "SYMBOL",
        "name": "_statement"
      }
    },
    "doc_comment": {
      "type": "TOKEN",
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "STRING",
            "value": "///"
          },
          {
            "type": "PATTERN",
            "value": ".*"
          }
        ]
      }
    },
    "line_comment": {
      "type": "TOKEN",
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "STRING",
            "value": "//"
          },
          {
            "type": "PATTERN",
            "value": ".*"
          }
        ]
      }
    },
    "_any": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "_statement"
        },
        {
          "type": "SYMBOL",
          "name": "_expression"
        }
      ]
    },
    "_statement": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "_expression_statement"
        },
        {
          "type": "SYMBOL",
          "name": "_declaration_statement"
        }
      ]
    },
    "_expression_statement": {
      "type": "PREC_LEFT",
      "value": 0,
      "content": {
        "type": "CHOICE",
        "members": [
          {
            "type": "SEQ",
            "members": [
              {
                "type": "SYMBOL",
                "name": "_expression"
              },
              {
                "type": "STRING",
                "value": ";"
              }
            ]
          },
          {
            "type": "PREC",
            "value": 1,
            "content": {
              "type": "SYMBOL",
              "name": "_expression_ending_with_block"
            }
          }
        ]
      }
    },
    "_expression_ending_with_block": {
      "type": "PREC",
      "value": 1,
      "content": {
        "type": "CHOICE",
        "members": [
          {
            "type": "SYMBOL",
            "name": "block"
          },
          {
            "type": "SYMBOL",
            "name": "comptime_block"
          },
          {
            "type": "SYMBOL",
            "name": "defer_block"
          },
          {
            "type": "SYMBOL",
            "name": "suspend_block"
          },
          {
            "type": "SYMBOL",
            "name": "resume_block"
          },
          {
            "type": "SYMBOL",
            "name": "if_expression"
          },
          {
            "type": "SYMBOL",
            "name": "while_expression"
          },
          {
            "type": "SYMBOL",
            "name": "for_expression"
          },
          {
            "type": "SYMBOL",
            "name": "test_expression"
          }
        ]
      }
    },
    "_declaration_statement": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "empty_statement"
        },
        {
          "type": "SYMBOL",
          "name": "assignment_statement"
        },
        {
          "type": "SYMBOL",
          "name": "function_signature"
        },
        {
          "type": "SYMBOL",
          "name": "function_declaration"
        }
      ]
    },
    "_expression": {
      "type": "PREC_LEFT",
      "value": 0,
      "content": {
        "type": "CHOICE",
        "members": [
          {
            "type": "SYMBOL",
            "name": "build_in_call_expr"
          },
          {
            "type": "SYMBOL",
            "name": "call_expression"
          },
          {
            "type": "SYMBOL",
            "name": "await_expression"
          },
          {
            "type": "SYMBOL",
            "name": "suspend_expression"
          },
          {
            "type": "SYMBOL",
            "name": "resume_expression"
          },
          {
            "type": "SYMBOL",
            "name": "index_expression"
          },
          {
            "type": "SYMBOL",
            "name": "field_expression"
          },
          {
            "type": "SYMBOL",
            "name": "_expression_ending_with_block"
          },
          {
            "type": "SYMBOL",
            "name": "struct_expression"
          },
          {
            "type": "SYMBOL",
            "name": "struct_construction"
          },
          {
            "type": "SYMBOL",
            "name": "anonymous_struct_enum"
          },
          {
            "type": "SYMBOL",
            "name": "enum_expression"
          },
          {
            "type": "SYMBOL",
            "name": "union_expression"
          },
          {
            "type": "SYMBOL",
            "name": "error_expression"
          },
          {
            "type": "SYMBOL",
            "name": "switch_expression"
          },
          {
            "type": "SYMBOL",
            "name": "continue_expression"
          },
          {
            "type": "SYMBOL",
            "name": "break_expression"
          },
          {
            "type": "SYMBOL",
            "name": "return_expression"
          },
          {
            "type": "SYMBOL",
            "name": "assignment_expression"
          },
          {
            "type": "SYMBOL",
            "name": "array_expression"
          },
          {
            "type": "SYMBOL",
            "name": "anonymous_array_expr"
          },
          {
            "type": "SYMBOL",
            "name": "compound_assignment_expr"
          },
          {
            "type": "SYMBOL",
            "name": "payload_expression"
          },
          {
            "type": "SYMBOL",
            "name": "unary_expression"
          },
          {
            "type": "SYMBOL",
            "name": "binary_expression"
          },
          {
            "type": "SYMBOL",
            "name": "reference_expression"
          },
          {
            "type": "SYMBOL",
            "name": "dereference_expression"
          },
          {
            "type": "SYMBOL",
            "name": "orelse_postfix_expression"
          },
          {
            "type": "SYMBOL",
            "name": "try_expression"
          },
          {
            "type": "SYMBOL",
            "name": "range_pattern"
          },
          {
            "type": "SYMBOL",
            "name": "unreachable_expression"
          },
          {
            "type": "SYMBOL",
            "name": "usingnamespace_expression"
          },
          {
            "type": "SYMBOL",
            "name": "defer_expression"
          },
          {
            "type": "SYMBOL",
            "name": "_type"
          },
          {
            "type": "SYMBOL",
            "name": "_literals"
          },
          {
            "type": "SYMBOL",
            "name": "identifier"
          }
        ]
      }
    },
    "empty_statement": {
      "type": "STRING",
      "value": ";"
    },
    "assignment_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "visibility_modifier"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "ALIAS",
              "content": {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "STRING",
                    "value": "threadlocal"
                  },
                  {
                    "type": "STRING",
                    "value": "comptime"
                  }
                ]
              },
              "named": true,
              "value": "assignment_modifier"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": "const"
            },
            {
              "type": "STRING",
              "value": "var"
            }
          ]
        },
        {
          "type": "FIELD",
          "name": "name",
          "content": {
            "type": "SYMBOL",
            "name": "identifier"
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "STRING",
                  "value": ":"
                },
                {
                  "type": "FIELD",
                  "name": "type",
                  "content": {
                    "type": "SYMBOL",
                    "name": "_type"
                  }
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "="
        },
        {
          "type": "FIELD",
          "name": "expression",
          "content": {
            "type": "SYMBOL",
            "name": "_expression"
          }
        },
        {
          "type": "STRING",
          "value": ";"
        }
      ]
    },
    "function_signature": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "visibility_modifier"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "function_modifiers"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "fn"
        },
        {
          "type": "FIELD",
          "name": "name",
          "content": {
            "type": "SYMBOL",
            "name": "identifier"
          }
        },
        {
          "type": "FIELD",
          "name": "parameters",
          "content": {
            "type": "SYMBOL",
            "name": "parameters"
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "FIELD",
              "name": "return",
              "content": {
                "type": "SYMBOL",
                "name": "_expression"
              }
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": ";"
        }
      ]
    },
    "function_declaration": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "visibility_modifier"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "function_modifiers"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "fn"
        },
        {
          "type": "FIELD",
          "name": "name",
          "content": {
            "type": "SYMBOL",
            "name": "identifier"
          }
        },
        {
          "type": "FIELD",
          "name": "parameters",
          "content": {
            "type": "SYMBOL",
            "name": "parameters"
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "FIELD",
              "name": "return",
              "content": {
                "type": "SYMBOL",
                "name": "_expression"
              }
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "FIELD",
          "name": "body",
          "content": {
            "type": "SYMBOL",
            "name": "block"
          }
        }
      ]
    },
    "visibility_modifier": {
      "type": "CHOICE",
      "members": [
        {
          "type": "STRING",
          "value": "pub"
        }
      ]
    },
    "function_modifiers": {
      "type": "CHOICE",
      "members": [
        {
          "type": "STRING",
          "value": "export"
        },
        {
          "type": "STRING",
          "value": "stdcallcc"
        },
        {
          "type": "STRING",
          "value": "nakedcc"
        },
        {
          "type": "STRING",
          "value": "inline"
        },
        {
          "type": "SYMBOL",
          "name": "extern_modifier"
        }
      ]
    },
    "extern_modifier": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "extern"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "string_literal"
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "parameters": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "parameter"
                },
                {
                  "type": "REPEAT",
                  "content": {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "STRING",
                        "value": ","
                      },
                      {
                        "type": "SYMBOL",
                        "name": "parameter"
                      }
                    ]
                  }
                },
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "STRING",
                      "value": ","
                    },
                    {
                      "type": "BLANK"
                    }
                  ]
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": ")"
        }
      ]
    },
    "parameter": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": "comptime"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "FIELD",
          "name": "name",
          "content": {
            "type": "SYMBOL",
            "name": "identifier"
          }
        },
        {
          "type": "STRING",
          "value": ":"
        },
        {
          "type": "FIELD",
          "name": "type",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "_type"
              },
              {
                "type": "ALIAS",
                "content": {
                  "type": "STRING",
                  "value": "var"
                },
                "named": true,
                "value": "inference_type"
              },
              {
                "type": "SYMBOL",
                "name": "variadic_parameter"
              }
            ]
          }
        }
      ]
    },
    "variadic_parameter": {
      "type": "STRING",
      "value": "..."
    },
    "build_in_call_expr": {
      "type": "PREC",
      "value": 14,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "STRING",
            "value": "@"
          },
          {
            "type": "FIELD",
            "name": "function",
            "content": {
              "type": "SYMBOL",
              "name": "identifier"
            }
          },
          {
            "type": "FIELD",
            "name": "arguments",
            "content": {
              "type": "SYMBOL",
              "name": "arguments"
            }
          }
        ]
      }
    },
    "call_expression": {
      "type": "PREC",
      "value": 14,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "ALIAS",
                "content": {
                  "type": "STRING",
                  "value": "async"
                },
                "named": true,
                "value": "call_modifier"
              },
              {
                "type": "BLANK"
              }
            ]
          },
          {
            "type": "FIELD",
            "name": "function",
            "content": {
              "type": "SYMBOL",
              "name": "identifier"
            }
          },
          {
            "type": "FIELD",
            "name": "arguments",
            "content": {
              "type": "SYMBOL",
              "name": "arguments"
            }
          }
        ]
      }
    },
    "await_expression": {
      "type": "PREC_LEFT",
      "value": 0,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "STRING",
            "value": "await"
          },
          {
            "type": "SYMBOL",
            "name": "_expression"
          }
        ]
      }
    },
    "suspend_expression": {
      "type": "PREC_LEFT",
      "value": 0,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "STRING",
            "value": "suspend"
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "_expression"
              },
              {
                "type": "BLANK"
              }
            ]
          }
        ]
      }
    },
    "resume_expression": {
      "type": "PREC_LEFT",
      "value": 0,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "STRING",
            "value": "resume"
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "_expression"
              },
              {
                "type": "BLANK"
              }
            ]
          }
        ]
      }
    },
    "arguments": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "_expression"
                },
                {
                  "type": "REPEAT",
                  "content": {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "STRING",
                        "value": ","
                      },
                      {
                        "type": "SYMBOL",
                        "name": "_expression"
                      }
                    ]
                  }
                },
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "STRING",
                      "value": ","
                    },
                    {
                      "type": "BLANK"
                    }
                  ]
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": ")"
        }
      ]
    },
    "field_expression": {
      "type": "PREC_LEFT",
      "value": 14,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "FIELD",
            "name": "value",
            "content": {
              "type": "SYMBOL",
              "name": "_expression"
            }
          },
          {
            "type": "STRING",
            "value": "."
          },
          {
            "type": "FIELD",
            "name": "field",
            "content": {
              "type": "CHOICE",
              "members": [
                {
                  "type": "ALIAS",
                  "content": {
                    "type": "SYMBOL",
                    "name": "identifier"
                  },
                  "named": true,
                  "value": "field_identifier"
                },
                {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              ]
            }
          }
        ]
      }
    },
    "index_expression": {
      "type": "PREC",
      "value": 14,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "SYMBOL",
            "name": "_expression"
          },
          {
            "type": "STRING",
            "value": "["
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "_expression"
              },
              {
                "type": "SYMBOL",
                "name": "slice_pattern"
              }
            ]
          },
          {
            "type": "STRING",
            "value": "]"
          }
        ]
      }
    },
    "_pattern": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "slice_pattern"
        },
        {
          "type": "SYMBOL",
          "name": "range_pattern"
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "SYMBOL",
            "name": "field_expression"
          },
          "named": true,
          "value": "field_pattern"
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "SYMBOL",
            "name": "_literals"
          },
          "named": true,
          "value": "literal_pattern"
        }
      ]
    },
    "slice_pattern": {
      "type": "PREC",
      "value": 14,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "FIELD",
                "name": "start",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              },
              {
                "type": "BLANK"
              }
            ]
          },
          {
            "type": "STRING",
            "value": ".."
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "FIELD",
                "name": "end",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              },
              {
                "type": "BLANK"
              }
            ]
          }
        ]
      }
    },
    "range_pattern": {
      "type": "PREC_LEFT",
      "value": 0,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "FIELD",
            "name": "start",
            "content": {
              "type": "SYMBOL",
              "name": "_expression"
            }
          },
          {
            "type": "STRING",
            "value": "..."
          },
          {
            "type": "FIELD",
            "name": "end",
            "content": {
              "type": "SYMBOL",
              "name": "_expression"
            }
          }
        ]
      }
    },
    "switch_expression": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "switch"
        },
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "FIELD",
          "name": "value",
          "content": {
            "type": "SYMBOL",
            "name": "_expression"
          }
        },
        {
          "type": "STRING",
          "value": ")"
        },
        {
          "type": "FIELD",
          "name": "body",
          "content": {
            "type": "SYMBOL",
            "name": "switch_block"
          }
        }
      ]
    },
    "switch_block": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "{"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "REPEAT",
                  "content": {
                    "type": "SYMBOL",
                    "name": "switch_arm"
                  }
                },
                {
                  "type": "SYMBOL",
                  "name": "switch_last_arm"
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "}"
        }
      ]
    },
    "switch_arm": {
      "type": "SEQ",
      "members": [
        {
          "type": "FIELD",
          "name": "pattern",
          "content": {
            "type": "SYMBOL",
            "name": "switch_pattern"
          }
        },
        {
          "type": "STRING",
          "value": "=>"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "FIELD",
                  "name": "value",
                  "content": {
                    "type": "SYMBOL",
                    "name": "_expression"
                  }
                },
                {
                  "type": "STRING",
                  "value": ","
                }
              ]
            },
            {
              "type": "FIELD",
              "name": "value",
              "content": {
                "type": "PREC",
                "value": 1,
                "content": {
                  "type": "SYMBOL",
                  "name": "_expression_ending_with_block"
                }
              }
            }
          ]
        }
      ]
    },
    "switch_last_arm": {
      "type": "SEQ",
      "members": [
        {
          "type": "FIELD",
          "name": "pattern",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "ALIAS",
                "content": {
                  "type": "STRING",
                  "value": "else"
                },
                "named": true,
                "value": "else_switch"
              },
              {
                "type": "SYMBOL",
                "name": "switch_pattern"
              }
            ]
          }
        },
        {
          "type": "STRING",
          "value": "=>"
        },
        {
          "type": "FIELD",
          "name": "value",
          "content": {
            "type": "SYMBOL",
            "name": "_expression"
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": ","
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "switch_pattern": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "_pattern"
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_pattern"
            },
            {
              "type": "REPEAT",
              "content": {
                "type": "SEQ",
                "members": [
                  {
                    "type": "STRING",
                    "value": ","
                  },
                  {
                    "type": "SYMBOL",
                    "name": "_pattern"
                  }
                ]
              }
            },
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "STRING",
                  "value": ","
                },
                {
                  "type": "BLANK"
                }
              ]
            }
          ]
        }
      ]
    },
    "if_expression": {
      "type": "PREC_LEFT",
      "value": 0,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "STRING",
            "value": "if"
          },
          {
            "type": "SYMBOL",
            "name": "_condition"
          },
          {
            "type": "FIELD",
            "name": "consequence",
            "content": {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "_expression"
                },
                {
                  "type": "SYMBOL",
                  "name": "block"
                }
              ]
            }
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "_else_tail"
              },
              {
                "type": "BLANK"
              }
            ]
          }
        ]
      }
    },
    "while_expression": {
      "type": "PREC_LEFT",
      "value": 0,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "loop_label"
              },
              {
                "type": "BLANK"
              }
            ]
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "ALIAS",
                "content": {
                  "type": "STRING",
                  "value": "inline"
                },
                "named": true,
                "value": "loop_modifier"
              },
              {
                "type": "BLANK"
              }
            ]
          },
          {
            "type": "STRING",
            "value": "while"
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "_condition"
              },
              {
                "type": "SYMBOL",
                "name": "_condition_with_continue"
              }
            ]
          },
          {
            "type": "FIELD",
            "name": "body",
            "content": {
              "type": "SYMBOL",
              "name": "block"
            }
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "_else_tail"
              },
              {
                "type": "BLANK"
              }
            ]
          }
        ]
      }
    },
    "for_expression": {
      "type": "PREC_LEFT",
      "value": 0,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "loop_label"
              },
              {
                "type": "BLANK"
              }
            ]
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "ALIAS",
                "content": {
                  "type": "STRING",
                  "value": "inline"
                },
                "named": true,
                "value": "loop_modifier"
              },
              {
                "type": "BLANK"
              }
            ]
          },
          {
            "type": "STRING",
            "value": "for"
          },
          {
            "type": "SYMBOL",
            "name": "_condition"
          },
          {
            "type": "FIELD",
            "name": "body",
            "content": {
              "type": "SYMBOL",
              "name": "block"
            }
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "_else_tail"
              },
              {
                "type": "BLANK"
              }
            ]
          }
        ]
      }
    },
    "_condition": {
      "type": "PREC_LEFT",
      "value": 0,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "STRING",
            "value": "("
          },
          {
            "type": "FIELD",
            "name": "condition",
            "content": {
              "type": "SYMBOL",
              "name": "_expression"
            }
          },
          {
            "type": "STRING",
            "value": ")"
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "payload"
              },
              {
                "type": "BLANK"
              }
            ]
          }
        ]
      }
    },
    "_condition_with_continue": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "FIELD",
          "name": "condition",
          "content": {
            "type": "SYMBOL",
            "name": "_expression"
          }
        },
        {
          "type": "STRING",
          "value": ")"
        },
        {
          "type": "STRING",
          "value": ":"
        },
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "FIELD",
          "name": "continue",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "_expression"
              },
              {
                "type": "SEQ",
                "members": [
                  {
                    "type": "STRING",
                    "value": "{"
                  },
                  {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "SYMBOL",
                        "name": "_expression"
                      },
                      {
                        "type": "REPEAT",
                        "content": {
                          "type": "SEQ",
                          "members": [
                            {
                              "type": "STRING",
                              "value": ";"
                            },
                            {
                              "type": "SYMBOL",
                              "name": "_expression"
                            }
                          ]
                        }
                      },
                      {
                        "type": "CHOICE",
                        "members": [
                          {
                            "type": "STRING",
                            "value": ";"
                          },
                          {
                            "type": "BLANK"
                          }
                        ]
                      }
                    ]
                  },
                  {
                    "type": "STRING",
                    "value": "}"
                  }
                ]
              }
            ]
          }
        },
        {
          "type": "STRING",
          "value": ")"
        }
      ]
    },
    "_else_tail": {
      "type": "PREC",
      "value": -1,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "STRING",
            "value": "else"
          },
          {
            "type": "SYMBOL",
            "name": "_else_case"
          }
        ]
      }
    },
    "_else_case": {
      "type": "PREC_LEFT",
      "value": 2,
      "content": {
        "type": "FIELD",
        "name": "alternative",
        "content": {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_expression"
            },
            {
              "type": "SYMBOL",
              "name": "block"
            },
            {
              "type": "SYMBOL",
              "name": "if_expression"
            },
            {
              "type": "SYMBOL",
              "name": "payload_expression"
            }
          ]
        }
      }
    },
    "loop_label": {
      "type": "SEQ",
      "members": [
        {
          "type": "FIELD",
          "name": "name",
          "content": {
            "type": "ALIAS",
            "content": {
              "type": "SYMBOL",
              "name": "identifier"
            },
            "named": true,
            "value": "label_identifier"
          }
        },
        {
          "type": "STRING",
          "value": ":"
        }
      ]
    },
    "payload": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "|"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": "*"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "FIELD",
          "name": "values",
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "ALIAS",
                "content": {
                  "type": "SYMBOL",
                  "name": "identifier"
                },
                "named": true,
                "value": "payload_identifier"
              },
              {
                "type": "REPEAT",
                "content": {
                  "type": "SEQ",
                  "members": [
                    {
                      "type": "STRING",
                      "value": ","
                    },
                    {
                      "type": "ALIAS",
                      "content": {
                        "type": "SYMBOL",
                        "name": "identifier"
                      },
                      "named": true,
                      "value": "payload_identifier"
                    }
                  ]
                }
              },
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "STRING",
                    "value": ","
                  },
                  {
                    "type": "BLANK"
                  }
                ]
              }
            ]
          }
        },
        {
          "type": "STRING",
          "value": "|"
        }
      ]
    },
    "payload_expression": {
      "type": "PREC_LEFT",
      "value": 0,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "SYMBOL",
            "name": "payload"
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "_expression"
              },
              {
                "type": "SYMBOL",
                "name": "block"
              }
            ]
          }
        ]
      }
    },
    "break_expression": {
      "type": "PREC_LEFT",
      "value": 0,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "STRING",
            "value": "break"
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "FIELD",
                "name": "label",
                "content": {
                  "type": "SYMBOL",
                  "name": "loop_label_inverse"
                }
              },
              {
                "type": "BLANK"
              }
            ]
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "FIELD",
                "name": "value",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              },
              {
                "type": "BLANK"
              }
            ]
          }
        ]
      }
    },
    "continue_expression": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "continue"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "FIELD",
              "name": "label",
              "content": {
                "type": "SYMBOL",
                "name": "loop_label_inverse"
              }
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "loop_label_inverse": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": ":"
        },
        {
          "type": "FIELD",
          "name": "name",
          "content": {
            "type": "ALIAS",
            "content": {
              "type": "SYMBOL",
              "name": "identifier"
            },
            "named": true,
            "value": "label_identifier"
          }
        }
      ]
    },
    "return_expression": {
      "type": "CHOICE",
      "members": [
        {
          "type": "PREC_LEFT",
          "value": 0,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "STRING",
                "value": "return"
              },
              {
                "type": "SYMBOL",
                "name": "_expression"
              }
            ]
          }
        },
        {
          "type": "PREC",
          "value": -1,
          "content": {
            "type": "STRING",
            "value": "return"
          }
        }
      ]
    },
    "test_expression": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "test"
        },
        {
          "type": "FIELD",
          "name": "test_name",
          "content": {
            "type": "SYMBOL",
            "name": "string_literal"
          }
        },
        {
          "type": "FIELD",
          "name": "body",
          "content": {
            "type": "SYMBOL",
            "name": "block"
          }
        }
      ]
    },
    "try_expression": {
      "type": "PREC_LEFT",
      "value": 0,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "STRING",
            "value": "try"
          },
          {
            "type": "FIELD",
            "name": "expression",
            "content": {
              "type": "SYMBOL",
              "name": "_expression"
            }
          }
        ]
      }
    },
    "usingnamespace_expression": {
      "type": "PREC_LEFT",
      "value": 0,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "visibility_modifier"
              },
              {
                "type": "BLANK"
              }
            ]
          },
          {
            "type": "STRING",
            "value": "usingnamespace"
          },
          {
            "type": "FIELD",
            "name": "import",
            "content": {
              "type": "SYMBOL",
              "name": "_expression"
            }
          }
        ]
      }
    },
    "_type": {
      "type": "PREC",
      "value": -1,
      "content": {
        "type": "CHOICE",
        "members": [
          {
            "type": "SYMBOL",
            "name": "primitive_type"
          },
          {
            "type": "SYMBOL",
            "name": "optional_type"
          },
          {
            "type": "SYMBOL",
            "name": "pointer_type"
          },
          {
            "type": "SYMBOL",
            "name": "error_type"
          },
          {
            "type": "SYMBOL",
            "name": "array_type"
          },
          {
            "type": "SYMBOL",
            "name": "custom_number_type"
          },
          {
            "type": "ALIAS",
            "content": {
              "type": "SYMBOL",
              "name": "identifier"
            },
            "named": true,
            "value": "type_identifier"
          }
        ]
      }
    },
    "primitive_type": {
      "type": "CHOICE",
      "members": [
        {
          "type": "STRING",
          "value": "i8"
        },
        {
          "type": "STRING",
          "value": "u8"
        },
        {
          "type": "STRING",
          "value": "i16"
        },
        {
          "type": "STRING",
          "value": "u16"
        },
        {
          "type": "STRING",
          "value": "i32"
        },
        {
          "type": "STRING",
          "value": "u32"
        },
        {
          "type": "STRING",
          "value": "i64"
        },
        {
          "type": "STRING",
          "value": "u64"
        },
        {
          "type": "STRING",
          "value": "i128"
        },
        {
          "type": "STRING",
          "value": "u128"
        },
        {
          "type": "STRING",
          "value": "isize"
        },
        {
          "type": "STRING",
          "value": "usize"
        },
        {
          "type": "STRING",
          "value": "c_short"
        },
        {
          "type": "STRING",
          "value": "c_ushort"
        },
        {
          "type": "STRING",
          "value": "c_int"
        },
        {
          "type": "STRING",
          "value": "c_uint"
        },
        {
          "type": "STRING",
          "value": "c_long"
        },
        {
          "type": "STRING",
          "value": "c_ulong"
        },
        {
          "type": "STRING",
          "value": "c_longlong"
        },
        {
          "type": "STRING",
          "value": "c_ulonglong"
        },
        {
          "type": "STRING",
          "value": "c_longdouble"
        },
        {
          "type": "STRING",
          "value": "c_void"
        },
        {
          "type": "STRING",
          "value": "f16"
        },
        {
          "type": "STRING",
          "value": "f32"
        },
        {
          "type": "STRING",
          "value": "f64"
        },
        {
          "type": "STRING",
          "value": "f128"
        },
        {
          "type": "STRING",
          "value": "comptime_int"
        },
        {
          "type": "STRING",
          "value": "comptime_float"
        },
        {
          "type": "STRING",
          "value": "bool"
        },
        {
          "type": "STRING",
          "value": "void"
        },
        {
          "type": "STRING",
          "value": "noreturn"
        },
        {
          "type": "STRING",
          "value": "type"
        },
        {
          "type": "STRING",
          "value": "anyerror"
        }
      ]
    },
    "custom_number_type": {
      "type": "PATTERN",
      "value": "(i|u)[0-9]+"
    },
    "error_type": {
      "type": "PREC_LEFT",
      "value": 0,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "FIELD",
            "name": "err",
            "content": {
              "type": "SYMBOL",
              "name": "_type"
            }
          },
          {
            "type": "STRING",
            "value": "!"
          },
          {
            "type": "FIELD",
            "name": "ok",
            "content": {
              "type": "SYMBOL",
              "name": "_type"
            }
          }
        ]
      }
    },
    "optional_type": {
      "type": "PREC",
      "value": -2,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "STRING",
            "value": "?"
          },
          {
            "type": "SYMBOL",
            "name": "_type"
          }
        ]
      }
    },
    "array_type": {
      "type": "PREC",
      "value": -3,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "REPEAT",
            "content": {
              "type": "SEQ",
              "members": [
                {
                  "type": "STRING",
                  "value": "["
                },
                {
                  "type": "FIELD",
                  "name": "size",
                  "content": {
                    "type": "CHOICE",
                    "members": [
                      {
                        "type": "CHOICE",
                        "members": [
                          {
                            "type": "SYMBOL",
                            "name": "integer_literal"
                          },
                          {
                            "type": "SYMBOL",
                            "name": "identifier"
                          },
                          {
                            "type": "ALIAS",
                            "content": {
                              "type": "SEQ",
                              "members": [
                                {
                                  "type": "STRING",
                                  "value": "*"
                                },
                                {
                                  "type": "CHOICE",
                                  "members": [
                                    {
                                      "type": "STRING",
                                      "value": "c"
                                    },
                                    {
                                      "type": "BLANK"
                                    }
                                  ]
                                }
                              ]
                            },
                            "named": true,
                            "value": "pointer"
                          }
                        ]
                      },
                      {
                        "type": "BLANK"
                      }
                    ]
                  }
                },
                {
                  "type": "STRING",
                  "value": "]"
                }
              ]
            }
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "REPEAT",
                "content": {
                  "type": "SYMBOL",
                  "name": "type_prefix"
                }
              },
              {
                "type": "BLANK"
              }
            ]
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "primitive_type"
              },
              {
                "type": "SYMBOL",
                "name": "optional_type"
              },
              {
                "type": "SYMBOL",
                "name": "pointer_type"
              },
              {
                "type": "SYMBOL",
                "name": "error_type"
              },
              {
                "type": "SYMBOL",
                "name": "custom_number_type"
              },
              {
                "type": "ALIAS",
                "content": {
                  "type": "SYMBOL",
                  "name": "identifier"
                },
                "named": true,
                "value": "type_identifier"
              }
            ]
          }
        ]
      }
    },
    "pointer_type": {
      "type": "PREC_LEFT",
      "value": 0,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "STRING",
            "value": "*"
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "REPEAT",
                "content": {
                  "type": "SYMBOL",
                  "name": "type_prefix"
                }
              },
              {
                "type": "BLANK"
              }
            ]
          },
          {
            "type": "SYMBOL",
            "name": "_type"
          }
        ]
      }
    },
    "type_prefix": {
      "type": "PREC",
      "value": -1,
      "content": {
        "type": "CHOICE",
        "members": [
          {
            "type": "STRING",
            "value": "null"
          },
          {
            "type": "STRING",
            "value": "const"
          },
          {
            "type": "STRING",
            "value": "volatile"
          },
          {
            "type": "STRING",
            "value": "allowzero"
          },
          {
            "type": "SEQ",
            "members": [
              {
                "type": "STRING",
                "value": "align"
              },
              {
                "type": "STRING",
                "value": "("
              },
              {
                "type": "SYMBOL",
                "name": "_expression"
              },
              {
                "type": "STRING",
                "value": ")"
              }
            ]
          },
          {
            "type": "SEQ",
            "members": [
              {
                "type": "STRING",
                "value": "promise"
              },
              {
                "type": "STRING",
                "value": "-"
              }
            ]
          }
        ]
      }
    },
    "defer_expression": {
      "type": "PREC_LEFT",
      "value": 0,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "STRING",
                "value": "defer"
              },
              {
                "type": "STRING",
                "value": "errdefer"
              }
            ]
          },
          {
            "type": "SYMBOL",
            "name": "_expression"
          }
        ]
      }
    },
    "comptime_block": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "comptime"
        },
        {
          "type": "SYMBOL",
          "name": "block"
        }
      ]
    },
    "defer_block": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": "defer"
            },
            {
              "type": "STRING",
              "value": "errdefer"
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "block"
        }
      ]
    },
    "suspend_block": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "suspend"
        },
        {
          "type": "SYMBOL",
          "name": "block"
        }
      ]
    },
    "resume_block": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "resume"
        },
        {
          "type": "SYMBOL",
          "name": "block"
        }
      ]
    },
    "block": {
      "type": "PREC_LEFT",
      "value": 0,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "FIELD",
                "name": "label",
                "content": {
                  "type": "SYMBOL",
                  "name": "loop_label"
                }
              },
              {
                "type": "BLANK"
              }
            ]
          },
          {
            "type": "STRING",
            "value": "{"
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "REPEAT",
                "content": {
                  "type": "SYMBOL",
                  "name": "_statement"
                }
              },
              {
                "type": "BLANK"
              }
            ]
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "_expression"
              },
              {
                "type": "BLANK"
              }
            ]
          },
          {
            "type": "STRING",
            "value": "}"
          }
        ]
      }
    },
    "reference_expression": {
      "type": "PREC",
      "value": 12,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "STRING",
            "value": "&"
          },
          {
            "type": "FIELD",
            "name": "value",
            "content": {
              "type": "SYMBOL",
              "name": "_expression"
            }
          }
        ]
      }
    },
    "dereference_expression": {
      "type": "SEQ",
      "members": [
        {
          "type": "FIELD",
          "name": "value",
          "content": {
            "type": "SYMBOL",
            "name": "_expression"
          }
        },
        {
          "type": "STRING",
          "value": ".*"
        }
      ]
    },
    "orelse_postfix_expression": {
      "type": "SEQ",
      "members": [
        {
          "type": "FIELD",
          "name": "value",
          "content": {
            "type": "SYMBOL",
            "name": "_expression"
          }
        },
        {
          "type": "STRING",
          "value": ".?"
        }
      ]
    },
    "struct_construction": {
      "type": "SEQ",
      "members": [
        {
          "type": "ALIAS",
          "content": {
            "type": "SYMBOL",
            "name": "identifier"
          },
          "named": true,
          "value": "type_identifier"
        },
        {
          "type": "STRING",
          "value": "{"
        },
        {
          "type": "FIELD",
          "name": "field",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SEQ",
                "members": [
                  {
                    "type": "SYMBOL",
                    "name": "field_init"
                  },
                  {
                    "type": "REPEAT",
                    "content": {
                      "type": "SEQ",
                      "members": [
                        {
                          "type": "STRING",
                          "value": ","
                        },
                        {
                          "type": "SYMBOL",
                          "name": "field_init"
                        }
                      ]
                    }
                  },
                  {
                    "type": "CHOICE",
                    "members": [
                      {
                        "type": "STRING",
                        "value": ","
                      },
                      {
                        "type": "BLANK"
                      }
                    ]
                  }
                ]
              },
              {
                "type": "BLANK"
              }
            ]
          }
        },
        {
          "type": "STRING",
          "value": "}"
        }
      ]
    },
    "anonymous_struct_enum": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": ".{"
        },
        {
          "type": "FIELD",
          "name": "field",
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "SYMBOL",
                "name": "field_init"
              },
              {
                "type": "REPEAT",
                "content": {
                  "type": "SEQ",
                  "members": [
                    {
                      "type": "STRING",
                      "value": ","
                    },
                    {
                      "type": "SYMBOL",
                      "name": "field_init"
                    }
                  ]
                }
              },
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "STRING",
                    "value": ","
                  },
                  {
                    "type": "BLANK"
                  }
                ]
              }
            ]
          }
        },
        {
          "type": "STRING",
          "value": "}"
        }
      ]
    },
    "field_init": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "."
        },
        {
          "type": "FIELD",
          "name": "name",
          "content": {
            "type": "ALIAS",
            "content": {
              "type": "SYMBOL",
              "name": "identifier"
            },
            "named": true,
            "value": "field_identifier"
          }
        },
        {
          "type": "STRING",
          "value": "="
        },
        {
          "type": "FIELD",
          "name": "value",
          "content": {
            "type": "SYMBOL",
            "name": "_expression"
          }
        }
      ]
    },
    "union_expression": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "ALIAS",
              "content": {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "STRING",
                    "value": "packed"
                  },
                  {
                    "type": "STRING",
                    "value": "extern"
                  }
                ]
              },
              "named": true,
              "value": "union_modifier"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "union"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "STRING",
                  "value": "("
                },
                {
                  "type": "FIELD",
                  "name": "type",
                  "content": {
                    "type": "CHOICE",
                    "members": [
                      {
                        "type": "SYMBOL",
                        "name": "_type"
                      },
                      {
                        "type": "ALIAS",
                        "content": {
                          "type": "STRING",
                          "value": "enum"
                        },
                        "named": true,
                        "value": "inference_type"
                      }
                    ]
                  }
                },
                {
                  "type": "STRING",
                  "value": ")"
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "{"
        },
        {
          "type": "FIELD",
          "name": "field_variant",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SEQ",
                "members": [
                  {
                    "type": "SYMBOL",
                    "name": "union_field_variant"
                  },
                  {
                    "type": "REPEAT",
                    "content": {
                      "type": "SEQ",
                      "members": [
                        {
                          "type": "STRING",
                          "value": ","
                        },
                        {
                          "type": "SYMBOL",
                          "name": "union_field_variant"
                        }
                      ]
                    }
                  },
                  {
                    "type": "CHOICE",
                    "members": [
                      {
                        "type": "STRING",
                        "value": ","
                      },
                      {
                        "type": "BLANK"
                      }
                    ]
                  }
                ]
              },
              {
                "type": "BLANK"
              }
            ]
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "REPEAT",
              "content": {
                "type": "SYMBOL",
                "name": "_statement"
              }
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "}"
        }
      ]
    },
    "union_field_variant": {
      "type": "PREC",
      "value": 2,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "FIELD",
            "name": "name",
            "content": {
              "type": "ALIAS",
              "content": {
                "type": "SYMBOL",
                "name": "identifier"
              },
              "named": true,
              "value": "union_identifier"
            }
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "SEQ",
                "members": [
                  {
                    "type": "STRING",
                    "value": ":"
                  },
                  {
                    "type": "FIELD",
                    "name": "type",
                    "content": {
                      "type": "CHOICE",
                      "members": [
                        {
                          "type": "SYMBOL",
                          "name": "_type"
                        },
                        {
                          "type": "ALIAS",
                          "content": {
                            "type": "STRING",
                            "value": "var"
                          },
                          "named": true,
                          "value": "inference_type"
                        }
                      ]
                    }
                  }
                ]
              },
              {
                "type": "BLANK"
              }
            ]
          }
        ]
      }
    },
    "enum_expression": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "ALIAS",
              "content": {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "STRING",
                    "value": "packed"
                  },
                  {
                    "type": "STRING",
                    "value": "extern"
                  }
                ]
              },
              "named": true,
              "value": "enum_modifier"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "enum"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "STRING",
                  "value": "("
                },
                {
                  "type": "FIELD",
                  "name": "type",
                  "content": {
                    "type": "SYMBOL",
                    "name": "_type"
                  }
                },
                {
                  "type": "STRING",
                  "value": ")"
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "{"
        },
        {
          "type": "FIELD",
          "name": "variant",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SEQ",
                "members": [
                  {
                    "type": "SYMBOL",
                    "name": "variant_declaration"
                  },
                  {
                    "type": "REPEAT",
                    "content": {
                      "type": "SEQ",
                      "members": [
                        {
                          "type": "STRING",
                          "value": ","
                        },
                        {
                          "type": "SYMBOL",
                          "name": "variant_declaration"
                        }
                      ]
                    }
                  },
                  {
                    "type": "CHOICE",
                    "members": [
                      {
                        "type": "STRING",
                        "value": ","
                      },
                      {
                        "type": "BLANK"
                      }
                    ]
                  }
                ]
              },
              {
                "type": "BLANK"
              }
            ]
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "REPEAT",
              "content": {
                "type": "SYMBOL",
                "name": "_statement"
              }
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "}"
        }
      ]
    },
    "variant_declaration": {
      "type": "PREC",
      "value": 2,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "FIELD",
            "name": "name",
            "content": {
              "type": "ALIAS",
              "content": {
                "type": "SYMBOL",
                "name": "identifier"
              },
              "named": true,
              "value": "enum_identifier"
            }
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "SEQ",
                "members": [
                  {
                    "type": "STRING",
                    "value": "="
                  },
                  {
                    "type": "FIELD",
                    "name": "default",
                    "content": {
                      "type": "SYMBOL",
                      "name": "_expression"
                    }
                  }
                ]
              },
              {
                "type": "BLANK"
              }
            ]
          }
        ]
      }
    },
    "struct_expression": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "ALIAS",
              "content": {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "STRING",
                    "value": "packed"
                  },
                  {
                    "type": "STRING",
                    "value": "extern"
                  }
                ]
              },
              "named": true,
              "value": "struct_modifier"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "struct"
        },
        {
          "type": "STRING",
          "value": "{"
        },
        {
          "type": "FIELD",
          "name": "field",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SEQ",
                "members": [
                  {
                    "type": "SYMBOL",
                    "name": "field_declaration"
                  },
                  {
                    "type": "REPEAT",
                    "content": {
                      "type": "SEQ",
                      "members": [
                        {
                          "type": "STRING",
                          "value": ","
                        },
                        {
                          "type": "SYMBOL",
                          "name": "field_declaration"
                        }
                      ]
                    }
                  },
                  {
                    "type": "CHOICE",
                    "members": [
                      {
                        "type": "STRING",
                        "value": ","
                      },
                      {
                        "type": "BLANK"
                      }
                    ]
                  }
                ]
              },
              {
                "type": "BLANK"
              }
            ]
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "REPEAT",
              "content": {
                "type": "SYMBOL",
                "name": "_statement"
              }
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "}"
        }
      ]
    },
    "field_declaration": {
      "type": "PREC_LEFT",
      "value": 0,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "visibility_modifier"
              },
              {
                "type": "BLANK"
              }
            ]
          },
          {
            "type": "FIELD",
            "name": "name",
            "content": {
              "type": "ALIAS",
              "content": {
                "type": "SYMBOL",
                "name": "identifier"
              },
              "named": true,
              "value": "field_identifier"
            }
          },
          {
            "type": "STRING",
            "value": ":"
          },
          {
            "type": "FIELD",
            "name": "type",
            "content": {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "_type"
                },
                {
                  "type": "ALIAS",
                  "content": {
                    "type": "STRING",
                    "value": "var"
                  },
                  "named": true,
                  "value": "inference_type"
                }
              ]
            }
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "SEQ",
                "members": [
                  {
                    "type": "STRING",
                    "value": "="
                  },
                  {
                    "type": "FIELD",
                    "name": "default",
                    "content": {
                      "type": "SYMBOL",
                      "name": "_expression"
                    }
                  }
                ]
              },
              {
                "type": "BLANK"
              }
            ]
          }
        ]
      }
    },
    "error_expression": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "error"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_error_one_shorthand"
            },
            {
              "type": "SYMBOL",
              "name": "_default_error"
            }
          ]
        }
      ]
    },
    "_error_one_shorthand": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "."
        },
        {
          "type": "FIELD",
          "name": "error_variant",
          "content": {
            "type": "ALIAS",
            "content": {
              "type": "SYMBOL",
              "name": "identifier"
            },
            "named": true,
            "value": "error_identifier"
          }
        }
      ]
    },
    "_default_error": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "{"
        },
        {
          "type": "FIELD",
          "name": "error_variant",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SEQ",
                "members": [
                  {
                    "type": "ALIAS",
                    "content": {
                      "type": "SYMBOL",
                      "name": "identifier"
                    },
                    "named": true,
                    "value": "error_identifier"
                  },
                  {
                    "type": "REPEAT",
                    "content": {
                      "type": "SEQ",
                      "members": [
                        {
                          "type": "STRING",
                          "value": ","
                        },
                        {
                          "type": "ALIAS",
                          "content": {
                            "type": "SYMBOL",
                            "name": "identifier"
                          },
                          "named": true,
                          "value": "error_identifier"
                        }
                      ]
                    }
                  },
                  {
                    "type": "CHOICE",
                    "members": [
                      {
                        "type": "STRING",
                        "value": ","
                      },
                      {
                        "type": "BLANK"
                      }
                    ]
                  }
                ]
              },
              {
                "type": "BLANK"
              }
            ]
          }
        },
        {
          "type": "STRING",
          "value": "}"
        }
      ]
    },
    "array_expression": {
      "type": "SEQ",
      "members": [
        {
          "type": "REPEAT",
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "STRING",
                "value": "["
              },
              {
                "type": "FIELD",
                "name": "size",
                "content": {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "SYMBOL",
                      "name": "integer_literal"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "identifier"
                    }
                  ]
                }
              },
              {
                "type": "STRING",
                "value": "]"
              }
            ]
          }
        },
        {
          "type": "FIELD",
          "name": "type",
          "content": {
            "type": "SYMBOL",
            "name": "_type"
          }
        },
        {
          "type": "FIELD",
          "name": "values",
          "content": {
            "type": "SYMBOL",
            "name": "array_values"
          }
        }
      ]
    },
    "anonymous_array_expr": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": ".{"
        },
        {
          "type": "FIELD",
          "name": "values",
          "content": {
            "type": "ALIAS",
            "content": {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SEQ",
                  "members": [
                    {
                      "type": "SYMBOL",
                      "name": "_expression"
                    },
                    {
                      "type": "REPEAT",
                      "content": {
                        "type": "SEQ",
                        "members": [
                          {
                            "type": "STRING",
                            "value": ","
                          },
                          {
                            "type": "SYMBOL",
                            "name": "_expression"
                          }
                        ]
                      }
                    },
                    {
                      "type": "CHOICE",
                      "members": [
                        {
                          "type": "STRING",
                          "value": ","
                        },
                        {
                          "type": "BLANK"
                        }
                      ]
                    }
                  ]
                },
                {
                  "type": "BLANK"
                }
              ]
            },
            "named": true,
            "value": "array_values"
          }
        },
        {
          "type": "STRING",
          "value": "}"
        }
      ]
    },
    "array_values": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "{"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "_expression"
                },
                {
                  "type": "REPEAT",
                  "content": {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "STRING",
                        "value": ","
                      },
                      {
                        "type": "SYMBOL",
                        "name": "_expression"
                      }
                    ]
                  }
                },
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "STRING",
                      "value": ","
                    },
                    {
                      "type": "BLANK"
                    }
                  ]
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "}"
        }
      ]
    },
    "assignment_expression": {
      "type": "PREC_LEFT",
      "value": 0,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "STRING",
                    "value": "defer"
                  },
                  {
                    "type": "STRING",
                    "value": "errdefer"
                  }
                ]
              },
              {
                "type": "BLANK"
              }
            ]
          },
          {
            "type": "FIELD",
            "name": "left",
            "content": {
              "type": "SYMBOL",
              "name": "_expression"
            }
          },
          {
            "type": "STRING",
            "value": "="
          },
          {
            "type": "FIELD",
            "name": "right",
            "content": {
              "type": "SYMBOL",
              "name": "_expression"
            }
          }
        ]
      }
    },
    "compound_assignment_expr": {
      "type": "PREC_LEFT",
      "value": 0,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "FIELD",
            "name": "left",
            "content": {
              "type": "SYMBOL",
              "name": "_expression"
            }
          },
          {
            "type": "FIELD",
            "name": "operator",
            "content": {
              "type": "SYMBOL",
              "name": "assignment_operator"
            }
          },
          {
            "type": "FIELD",
            "name": "right",
            "content": {
              "type": "SYMBOL",
              "name": "_expression"
            }
          }
        ]
      }
    },
    "unary_expression": {
      "type": "PREC_LEFT",
      "value": 12,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "FIELD",
            "name": "operator",
            "content": {
              "type": "SYMBOL",
              "name": "unary_operator"
            }
          },
          {
            "type": "FIELD",
            "name": "expression",
            "content": {
              "type": "SYMBOL",
              "name": "_expression"
            }
          }
        ]
      }
    },
    "unreachable_expression": {
      "type": "STRING",
      "value": "unreachable"
    },
    "binary_expression": {
      "type": "CHOICE",
      "members": [
        {
          "type": "PREC_LEFT",
          "value": 3,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "ALIAS",
                  "content": {
                    "type": "STRING",
                    "value": "and"
                  },
                  "named": true,
                  "value": "binary_operator"
                }
              },
              {
                "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": "ALIAS",
                  "content": {
                    "type": "STRING",
                    "value": "or"
                  },
                  "named": true,
                  "value": "binary_operator"
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 7,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "ALIAS",
                  "content": {
                    "type": "STRING",
                    "value": "&"
                  },
                  "named": true,
                  "value": "binary_operator"
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 5,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "ALIAS",
                  "content": {
                    "type": "STRING",
                    "value": "|"
                  },
                  "named": true,
                  "value": "binary_operator"
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 6,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "ALIAS",
                  "content": {
                    "type": "STRING",
                    "value": "^"
                  },
                  "named": true,
                  "value": "binary_operator"
                }
              },
              {
                "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": "ALIAS",
                  "content": {
                    "type": "CHOICE",
                    "members": [
                      {
                        "type": "STRING",
                        "value": "=="
                      },
                      {
                        "type": "STRING",
                        "value": "!="
                      },
                      {
                        "type": "STRING",
                        "value": "<"
                      },
                      {
                        "type": "STRING",
                        "value": "<="
                      },
                      {
                        "type": "STRING",
                        "value": ">"
                      },
                      {
                        "type": "STRING",
                        "value": ">="
                      }
                    ]
                  },
                  "named": true,
                  "value": "binary_operator"
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 8,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "ALIAS",
                  "content": {
                    "type": "CHOICE",
                    "members": [
                      {
                        "type": "STRING",
                        "value": "<<"
                      },
                      {
                        "type": "STRING",
                        "value": ">>"
                      }
                    ]
                  },
                  "named": true,
                  "value": "binary_operator"
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 9,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "ALIAS",
                  "content": {
                    "type": "CHOICE",
                    "members": [
                      {
                        "type": "STRING",
                        "value": "+"
                      },
                      {
                        "type": "STRING",
                        "value": "-"
                      },
                      {
                        "type": "STRING",
                        "value": "++"
                      },
                      {
                        "type": "STRING",
                        "value": "+%"
                      },
                      {
                        "type": "STRING",
                        "value": "-%"
                      }
                    ]
                  },
                  "named": true,
                  "value": "binary_operator"
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 10,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "ALIAS",
                  "content": {
                    "type": "CHOICE",
                    "members": [
                      {
                        "type": "STRING",
                        "value": "*"
                      },
                      {
                        "type": "STRING",
                        "value": "/"
                      },
                      {
                        "type": "STRING",
                        "value": "%"
                      },
                      {
                        "type": "STRING",
                        "value": "**"
                      },
                      {
                        "type": "STRING",
                        "value": "*%"
                      },
                      {
                        "type": "STRING",
                        "value": "||"
                      }
                    ]
                  },
                  "named": true,
                  "value": "binary_operator"
                }
              },
              {
                "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": "ALIAS",
                  "content": {
                    "type": "CHOICE",
                    "members": [
                      {
                        "type": "STRING",
                        "value": "orelse"
                      },
                      {
                        "type": "STRING",
                        "value": "catch"
                      }
                    ]
                  },
                  "named": true,
                  "value": "binary_operator"
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              }
            ]
          }
        }
      ]
    },
    "_literals": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "integer_literal"
        },
        {
          "type": "SYMBOL",
          "name": "float_literal"
        },
        {
          "type": "SYMBOL",
          "name": "boolean_literal"
        },
        {
          "type": "SYMBOL",
          "name": "null_literal"
        },
        {
          "type": "SYMBOL",
          "name": "undefined_literal"
        },
        {
          "type": "SYMBOL",
          "name": "char_literal"
        },
        {
          "type": "SYMBOL",
          "name": "string_literal"
        },
        {
          "type": "SYMBOL",
          "name": "multiline_string_literal"
        },
        {
          "type": "SYMBOL",
          "name": "enum_literal"
        }
      ]
    },
    "enum_literal": {
      "type": "PREC_RIGHT",
      "value": 0,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "STRING",
            "value": "."
          },
          {
            "type": "FIELD",
            "name": "variant",
            "content": {
              "type": "ALIAS",
              "content": {
                "type": "SYMBOL",
                "name": "identifier"
              },
              "named": true,
              "value": "enum_identifier"
            }
          }
        ]
      }
    },
    "integer_literal": {
      "type": "TOKEN",
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "PATTERN",
                "value": "[0-9]+"
              },
              {
                "type": "PATTERN",
                "value": "0x[0-9a-fA-F]+"
              },
              {
                "type": "PATTERN",
                "value": "0b[01]+"
              },
              {
                "type": "PATTERN",
                "value": "0o[0-7]+"
              }
            ]
          }
        ]
      }
    },
    "float_literal": {
      "type": "TOKEN",
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "SEQ",
                "members": [
                  {
                    "type": "PATTERN",
                    "value": "0[xX]"
                  },
                  {
                    "type": "PATTERN",
                    "value": "[0-9a-fA-F][0-9a-fA-F_]*"
                  },
                  {
                    "type": "CHOICE",
                    "members": [
                      {
                        "type": "STRING",
                        "value": "."
                      },
                      {
                        "type": "BLANK"
                      }
                    ]
                  },
                  {
                    "type": "CHOICE",
                    "members": [
                      {
                        "type": "PATTERN",
                        "value": "[0-9a-fA-F][0-9a-fA-F_]*"
                      },
                      {
                        "type": "BLANK"
                      }
                    ]
                  }
                ]
              },
              {
                "type": "SEQ",
                "members": [
                  {
                    "type": "PATTERN",
                    "value": "[0-9][0-9_]*"
                  },
                  {
                    "type": "CHOICE",
                    "members": [
                      {
                        "type": "STRING",
                        "value": "."
                      },
                      {
                        "type": "BLANK"
                      }
                    ]
                  },
                  {
                    "type": "CHOICE",
                    "members": [
                      {
                        "type": "PATTERN",
                        "value": "[0-9][0-9_]*"
                      },
                      {
                        "type": "BLANK"
                      }
                    ]
                  }
                ]
              }
            ]
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "PATTERN",
                "value": "[eEpP][+-]?\\d+"
              },
              {
                "type": "BLANK"
              }
            ]
          }
        ]
      }
    },
    "char_literal": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "'"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "escape_sequence"
                },
                {
                  "type": "PATTERN",
                  "value": "."
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "'"
        }
      ]
    },
    "string_literal": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": "\""
            },
            {
              "type": "STRING",
              "value": "c\""
            }
          ]
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "escape_sequence"
              },
              {
                "type": "PATTERN",
                "value": "[^\"\\\\]+"
              }
            ]
          }
        },
        {
          "type": "IMMEDIATE_TOKEN",
          "content": {
            "type": "STRING",
            "value": "\""
          }
        }
      ]
    },
    "multiline_string_literal": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": "\\\\"
            },
            {
              "type": "STRING",
              "value": "c\\\\"
            }
          ]
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "escape_sequence"
              },
              {
                "type": "PATTERN",
                "value": ".+"
              }
            ]
          }
        }
      ]
    },
    "escape_sequence": {
      "type": "IMMEDIATE_TOKEN",
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "STRING",
            "value": "\\"
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "PATTERN",
                "value": "[^xu]"
              },
              {
                "type": "PATTERN",
                "value": "u[0-9a-fA-F]{4}"
              },
              {
                "type": "PATTERN",
                "value": "u{[0-9a-fA-F]+}"
              },
              {
                "type": "PATTERN",
                "value": "x[0-9a-fA-F]{2}"
              }
            ]
          }
        ]
      }
    },
    "boolean_literal": {
      "type": "CHOICE",
      "members": [
        {
          "type": "STRING",
          "value": "true"
        },
        {
          "type": "STRING",
          "value": "false"
        }
      ]
    },
    "null_literal": {
      "type": "STRING",
      "value": "null"
    },
    "undefined_literal": {
      "type": "STRING",
      "value": "undefined"
    },
    "assignment_operator": {
      "type": "CHOICE",
      "members": [
        {
          "type": "STRING",
          "value": "+="
        },
        {
          "type": "STRING",
          "value": "-="
        },
        {
          "type": "STRING",
          "value": "*="
        },
        {
          "type": "STRING",
          "value": "+%="
        },
        {
          "type": "STRING",
          "value": "-%="
        },
        {
          "type": "STRING",
          "value": "*%="
        },
        {
          "type": "STRING",
          "value": "/="
        },
        {
          "type": "STRING",
          "value": "%="
        },
        {
          "type": "STRING",
          "value": "&="
        },
        {
          "type": "STRING",
          "value": "|="
        },
        {
          "type": "STRING",
          "value": "^="
        },
        {
          "type": "STRING",
          "value": "<<="
        },
        {
          "type": "STRING",
          "value": ">>="
        }
      ]
    },
    "unary_operator": {
      "type": "CHOICE",
      "members": [
        {
          "type": "STRING",
          "value": "~"
        },
        {
          "type": "STRING",
          "value": "!"
        },
        {
          "type": "STRING",
          "value": "-"
        },
        {
          "type": "STRING",
          "value": "-%"
        }
      ]
    },
    "identifier": {
      "type": "PATTERN",
      "value": "[a-zA-Zα-ωΑ-Ωµ_][a-zA-Zα-ωΑ-Ωµ\\d_]*"
    }
  },
  "extras": [
    {
      "type": "PATTERN",
      "value": "\\s"
    },
    {
      "type": "SYMBOL",
      "name": "line_comment"
    },
    {
      "type": "SYMBOL",
      "name": "doc_comment"
    }
  ],
  "conflicts": [
    [
      "optional_type",
      "unary_operator"
    ],
    [
      "array_type",
      "array_expression"
    ],
    [
      "anonymous_struct_enum",
      "anonymous_array_expr"
    ],
    [
      "assignment_expression"
    ],
    [
      "call_expression"
    ]
  ],
  "externals": [],
  "inline": [],
  "supertypes": []
}

