{
  "name": "zuzu",
  "word": "identifier",
  "rules": {
    "source_file": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "shebang"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "_item"
          }
        }
      ]
    },
    "shebang": {
      "type": "TOKEN",
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "STRING",
            "value": "#!"
          },
          {
            "type": "PATTERN",
            "value": "[^\\n]*"
          }
        ]
      }
    },
    "_item": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "_declaration"
        },
        {
          "type": "SYMBOL",
          "name": "_statement"
        }
      ]
    },
    "comment": {
      "type": "TOKEN",
      "content": {
        "type": "CHOICE",
        "members": [
          {
            "type": "SEQ",
            "members": [
              {
                "type": "STRING",
                "value": "//"
              },
              {
                "type": "PATTERN",
                "value": "[^\\n]*"
              }
            ]
          },
          {
            "type": "SEQ",
            "members": [
              {
                "type": "STRING",
                "value": "/*"
              },
              {
                "type": "PATTERN",
                "value": "[^*]*\\*+([^/*][^*]*\\*+)*"
              },
              {
                "type": "STRING",
                "value": "/"
              }
            ]
          }
        ]
      }
    },
    "_declaration": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "import_statement"
        },
        {
          "type": "SYMBOL",
          "name": "variable_declaration"
        },
        {
          "type": "SYMBOL",
          "name": "function_declaration"
        },
        {
          "type": "SYMBOL",
          "name": "function_predeclaration"
        },
        {
          "type": "SYMBOL",
          "name": "class_declaration"
        },
        {
          "type": "SYMBOL",
          "name": "trait_declaration"
        }
      ]
    },
    "_statement": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "block"
        },
        {
          "type": "SYMBOL",
          "name": "if_statement"
        },
        {
          "type": "SYMBOL",
          "name": "while_statement"
        },
        {
          "type": "SYMBOL",
          "name": "for_statement"
        },
        {
          "type": "SYMBOL",
          "name": "switch_statement"
        },
        {
          "type": "SYMBOL",
          "name": "try_statement"
        },
        {
          "type": "SYMBOL",
          "name": "return_statement"
        },
        {
          "type": "SYMBOL",
          "name": "throw_statement"
        },
        {
          "type": "SYMBOL",
          "name": "loop_control_statement"
        },
        {
          "type": "SYMBOL",
          "name": "builtin_statement"
        },
        {
          "type": "SYMBOL",
          "name": "assignment_statement"
        },
        {
          "type": "SYMBOL",
          "name": "expression_statement"
        },
        {
          "type": "SYMBOL",
          "name": "empty_statement"
        }
      ]
    },
    "empty_statement": {
      "type": "STRING",
      "value": ";"
    },
    "block": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "{"
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "_item"
          }
        },
        {
          "type": "STRING",
          "value": "}"
        }
      ]
    },
    "import_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "from"
        },
        {
          "type": "FIELD",
          "name": "module",
          "content": {
            "type": "SYMBOL",
            "name": "module_path"
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": "try"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "import"
        },
        {
          "type": "FIELD",
          "name": "imports",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "STRING",
                "value": "*"
              },
              {
                "type": "SYMBOL",
                "name": "import_list"
              }
            ]
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SEQ",
                  "members": [
                    {
                      "type": "STRING",
                      "value": "if"
                    },
                    {
                      "type": "FIELD",
                      "name": "condition",
                      "content": {
                        "type": "SYMBOL",
                        "name": "_expression"
                      }
                    }
                  ]
                },
                {
                  "type": "SEQ",
                  "members": [
                    {
                      "type": "STRING",
                      "value": "unless"
                    },
                    {
                      "type": "FIELD",
                      "name": "condition",
                      "content": {
                        "type": "SYMBOL",
                        "name": "_expression"
                      }
                    }
                  ]
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": ";"
        }
      ]
    },
    "module_path": {
      "type": "TOKEN",
      "content": {
        "type": "PATTERN",
        "value": "[A-Za-z_][A-Za-z0-9_]*(\\/[A-Za-z_][A-Za-z0-9_]*)*"
      }
    },
    "import_list": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "import_specifier"
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "STRING",
                "value": ","
              },
              {
                "type": "SYMBOL",
                "name": "import_specifier"
              }
            ]
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": ","
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "import_specifier": {
      "type": "SEQ",
      "members": [
        {
          "type": "FIELD",
          "name": "name",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "identifier"
              },
              {
                "type": "SYMBOL",
                "name": "type_identifier"
              }
            ]
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "STRING",
                  "value": "as"
                },
                {
                  "type": "FIELD",
                  "name": "alias",
                  "content": {
                    "type": "SYMBOL",
                    "name": "identifier"
                  }
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "variable_declaration": {
      "type": "PREC",
      "value": 2,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "FIELD",
            "name": "kind",
            "content": {
              "type": "CHOICE",
              "members": [
                {
                  "type": "STRING",
                  "value": "let"
                },
                {
                  "type": "STRING",
                  "value": "const"
                }
              ]
            }
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "FIELD",
                "name": "pattern",
                "content": {
                  "type": "SYMBOL",
                  "name": "destructuring_pattern"
                }
              },
              {
                "type": "SEQ",
                "members": [
                  {
                    "type": "CHOICE",
                    "members": [
                      {
                        "type": "FIELD",
                        "name": "type",
                        "content": {
                          "type": "SYMBOL",
                          "name": "type_expression"
                        }
                      },
                      {
                        "type": "BLANK"
                      }
                    ]
                  },
                  {
                    "type": "FIELD",
                    "name": "name",
                    "content": {
                      "type": "SYMBOL",
                      "name": "binding_identifier"
                    }
                  }
                ]
              }
            ]
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "weak_modifier"
              },
              {
                "type": "BLANK"
              }
            ]
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "SEQ",
                "members": [
                  {
                    "type": "STRING",
                    "value": ":="
                  },
                  {
                    "type": "FIELD",
                    "name": "value",
                    "content": {
                      "type": "SYMBOL",
                      "name": "_expression"
                    }
                  }
                ]
              },
              {
                "type": "BLANK"
              }
            ]
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "weak_modifier"
              },
              {
                "type": "BLANK"
              }
            ]
          },
          {
            "type": "STRING",
            "value": ";"
          }
        ]
      }
    },
    "destructuring_pattern": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "{"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "destructuring_entry"
                },
                {
                  "type": "REPEAT",
                  "content": {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "STRING",
                        "value": ","
                      },
                      {
                        "type": "SYMBOL",
                        "name": "destructuring_entry"
                      }
                    ]
                  }
                },
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "STRING",
                      "value": ","
                    },
                    {
                      "type": "BLANK"
                    }
                  ]
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "}"
        }
      ]
    },
    "destructuring_entry": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "FIELD",
              "name": "key",
              "content": {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "SYMBOL",
                    "name": "identifier"
                  },
                  {
                    "type": "SYMBOL",
                    "name": "string"
                  },
                  {
                    "type": "SYMBOL",
                    "name": "template_string"
                  },
                  {
                    "type": "SYMBOL",
                    "name": "parenthesized_expression"
                  }
                ]
              }
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": ":"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "FIELD",
              "name": "type",
              "content": {
                "type": "SYMBOL",
                "name": "type_expression"
              }
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "FIELD",
          "name": "name",
          "content": {
            "type": "SYMBOL",
            "name": "identifier"
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "STRING",
                  "value": ":="
                },
                {
                  "type": "FIELD",
                  "name": "default",
                  "content": {
                    "type": "SYMBOL",
                    "name": "_expression"
                  }
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "weak_modifier"
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "weak_modifier": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "but"
        },
        {
          "type": "STRING",
          "value": "weak"
        }
      ]
    },
    "function_declaration": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": "async"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "function"
        },
        {
          "type": "FIELD",
          "name": "name",
          "content": {
            "type": "SYMBOL",
            "name": "identifier"
          }
        },
        {
          "type": "FIELD",
          "name": "parameters",
          "content": {
            "type": "SYMBOL",
            "name": "parameter_list"
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "FIELD",
              "name": "return_type",
              "content": {
                "type": "SYMBOL",
                "name": "return_type"
              }
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "FIELD",
          "name": "body",
          "content": {
            "type": "SYMBOL",
            "name": "block"
          }
        }
      ]
    },
    "function_predeclaration": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": "async"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "function"
        },
        {
          "type": "FIELD",
          "name": "name",
          "content": {
            "type": "SYMBOL",
            "name": "identifier"
          }
        },
        {
          "type": "STRING",
          "value": ";"
        }
      ]
    },
    "class_declaration": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "class"
        },
        {
          "type": "FIELD",
          "name": "name",
          "content": {
            "type": "SYMBOL",
            "name": "binding_identifier"
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "STRING",
                  "value": "extends"
                },
                {
                  "type": "FIELD",
                  "name": "superclass",
                  "content": {
                    "type": "SYMBOL",
                    "name": "type_expression"
                  }
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "trait_composition"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "FIELD",
              "name": "body",
              "content": {
                "type": "SYMBOL",
                "name": "class_body"
              }
            },
            {
              "type": "STRING",
              "value": ";"
            }
          ]
        }
      ]
    },
    "trait_declaration": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "trait"
        },
        {
          "type": "FIELD",
          "name": "name",
          "content": {
            "type": "SYMBOL",
            "name": "binding_identifier"
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "trait_composition"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "FIELD",
          "name": "body",
          "content": {
            "type": "SYMBOL",
            "name": "trait_body"
          }
        }
      ]
    },
    "trait_composition": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": "with"
            },
            {
              "type": "STRING",
              "value": "but"
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "type_expression"
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "STRING",
                "value": ","
              },
              {
                "type": "SYMBOL",
                "name": "type_expression"
              }
            ]
          }
        }
      ]
    },
    "class_body": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "{"
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "field_declaration"
              },
              {
                "type": "SYMBOL",
                "name": "method_declaration"
              },
              {
                "type": "SYMBOL",
                "name": "method_predeclaration"
              },
              {
                "type": "SYMBOL",
                "name": "class_declaration"
              },
              {
                "type": "SYMBOL",
                "name": "trait_declaration"
              },
              {
                "type": "STRING",
                "value": ";"
              }
            ]
          }
        },
        {
          "type": "STRING",
          "value": "}"
        }
      ]
    },
    "trait_body": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "{"
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "method_declaration"
              },
              {
                "type": "SYMBOL",
                "name": "method_predeclaration"
              },
              {
                "type": "SYMBOL",
                "name": "class_declaration"
              },
              {
                "type": "SYMBOL",
                "name": "trait_declaration"
              },
              {
                "type": "STRING",
                "value": ";"
              }
            ]
          }
        },
        {
          "type": "STRING",
          "value": "}"
        }
      ]
    },
    "field_declaration": {
      "type": "SEQ",
      "members": [
        {
          "type": "FIELD",
          "name": "kind",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "STRING",
                "value": "let"
              },
              {
                "type": "STRING",
                "value": "const"
              }
            ]
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "FIELD",
              "name": "type",
              "content": {
                "type": "SYMBOL",
                "name": "type_expression"
              }
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "FIELD",
          "name": "name",
          "content": {
            "type": "SYMBOL",
            "name": "identifier"
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "STRING",
                  "value": "with"
                },
                {
                  "type": "SYMBOL",
                  "name": "field_accessor_list"
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "weak_modifier"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "STRING",
                  "value": ":="
                },
                {
                  "type": "FIELD",
                  "name": "value",
                  "content": {
                    "type": "SYMBOL",
                    "name": "_expression"
                  }
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "weak_modifier"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": ";"
        }
      ]
    },
    "field_accessor_list": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": "get"
            },
            {
              "type": "STRING",
              "value": "set"
            },
            {
              "type": "STRING",
              "value": "clear"
            },
            {
              "type": "STRING",
              "value": "has"
            }
          ]
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "STRING",
                "value": ","
              },
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "STRING",
                    "value": "get"
                  },
                  {
                    "type": "STRING",
                    "value": "set"
                  },
                  {
                    "type": "STRING",
                    "value": "clear"
                  },
                  {
                    "type": "STRING",
                    "value": "has"
                  }
                ]
              }
            ]
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": ","
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "method_declaration": {
      "type": "SEQ",
      "members": [
        {
          "type": "REPEAT",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "STRING",
                "value": "static"
              },
              {
                "type": "STRING",
                "value": "async"
              }
            ]
          }
        },
        {
          "type": "STRING",
          "value": "method"
        },
        {
          "type": "FIELD",
          "name": "name",
          "content": {
            "type": "SYMBOL",
            "name": "identifier"
          }
        },
        {
          "type": "FIELD",
          "name": "parameters",
          "content": {
            "type": "SYMBOL",
            "name": "parameter_list"
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "FIELD",
              "name": "return_type",
              "content": {
                "type": "SYMBOL",
                "name": "return_type"
              }
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "FIELD",
          "name": "body",
          "content": {
            "type": "SYMBOL",
            "name": "block"
          }
        }
      ]
    },
    "method_predeclaration": {
      "type": "SEQ",
      "members": [
        {
          "type": "REPEAT",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "STRING",
                "value": "static"
              },
              {
                "type": "STRING",
                "value": "async"
              }
            ]
          }
        },
        {
          "type": "STRING",
          "value": "method"
        },
        {
          "type": "FIELD",
          "name": "name",
          "content": {
            "type": "SYMBOL",
            "name": "identifier"
          }
        },
        {
          "type": "STRING",
          "value": ";"
        }
      ]
    },
    "parameter_list": {
      "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": "CHOICE",
      "members": [
        {
          "type": "SEQ",
          "members": [
            {
              "type": "STRING",
              "value": "..."
            },
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "FIELD",
                  "name": "type",
                  "content": {
                    "type": "SYMBOL",
                    "name": "type_expression"
                  }
                },
                {
                  "type": "BLANK"
                }
              ]
            },
            {
              "type": "FIELD",
              "name": "name",
              "content": {
                "type": "SYMBOL",
                "name": "identifier"
              }
            }
          ]
        },
        {
          "type": "PREC",
          "value": 2,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "type",
                "content": {
                  "type": "SYMBOL",
                  "name": "identifier"
                }
              },
              {
                "type": "FIELD",
                "name": "name",
                "content": {
                  "type": "SYMBOL",
                  "name": "binding_identifier"
                }
              },
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "STRING",
                    "value": "?"
                  },
                  {
                    "type": "BLANK"
                  }
                ]
              },
              {
                "type": "STRING",
                "value": "..."
              },
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "FIELD",
                    "name": "variadic_type",
                    "content": {
                      "type": "SYMBOL",
                      "name": "type_expression"
                    }
                  },
                  {
                    "type": "BLANK"
                  }
                ]
              },
              {
                "type": "FIELD",
                "name": "variadic_name",
                "content": {
                  "type": "SYMBOL",
                  "name": "binding_identifier"
                }
              }
            ]
          }
        },
        {
          "type": "PREC",
          "value": 1,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "type",
                "content": {
                  "type": "SYMBOL",
                  "name": "type_expression"
                }
              },
              {
                "type": "FIELD",
                "name": "name",
                "content": {
                  "type": "SYMBOL",
                  "name": "binding_identifier"
                }
              },
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "STRING",
                    "value": "?"
                  },
                  {
                    "type": "BLANK"
                  }
                ]
              },
              {
                "type": "STRING",
                "value": "..."
              },
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "FIELD",
                    "name": "variadic_type",
                    "content": {
                      "type": "SYMBOL",
                      "name": "type_expression"
                    }
                  },
                  {
                    "type": "BLANK"
                  }
                ]
              },
              {
                "type": "FIELD",
                "name": "variadic_name",
                "content": {
                  "type": "SYMBOL",
                  "name": "binding_identifier"
                }
              }
            ]
          }
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "FIELD",
              "name": "name",
              "content": {
                "type": "SYMBOL",
                "name": "binding_identifier"
              }
            },
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "STRING",
                  "value": "?"
                },
                {
                  "type": "BLANK"
                }
              ]
            },
            {
              "type": "STRING",
              "value": "..."
            },
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "FIELD",
                  "name": "variadic_type",
                  "content": {
                    "type": "SYMBOL",
                    "name": "type_expression"
                  }
                },
                {
                  "type": "BLANK"
                }
              ]
            },
            {
              "type": "FIELD",
              "name": "variadic_name",
              "content": {
                "type": "SYMBOL",
                "name": "binding_identifier"
              }
            }
          ]
        },
        {
          "type": "PREC",
          "value": 2,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "type",
                "content": {
                  "type": "SYMBOL",
                  "name": "identifier"
                }
              },
              {
                "type": "FIELD",
                "name": "name",
                "content": {
                  "type": "SYMBOL",
                  "name": "binding_identifier"
                }
              },
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "STRING",
                    "value": "?"
                  },
                  {
                    "type": "BLANK"
                  }
                ]
              },
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "STRING",
                        "value": ":="
                      },
                      {
                        "type": "FIELD",
                        "name": "default",
                        "content": {
                          "type": "SYMBOL",
                          "name": "_expression"
                        }
                      }
                    ]
                  },
                  {
                    "type": "BLANK"
                  }
                ]
              }
            ]
          }
        },
        {
          "type": "PREC",
          "value": 1,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "type",
                "content": {
                  "type": "SYMBOL",
                  "name": "type_expression"
                }
              },
              {
                "type": "FIELD",
                "name": "name",
                "content": {
                  "type": "SYMBOL",
                  "name": "binding_identifier"
                }
              },
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "STRING",
                    "value": "?"
                  },
                  {
                    "type": "BLANK"
                  }
                ]
              },
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "STRING",
                        "value": ":="
                      },
                      {
                        "type": "FIELD",
                        "name": "default",
                        "content": {
                          "type": "SYMBOL",
                          "name": "_expression"
                        }
                      }
                    ]
                  },
                  {
                    "type": "BLANK"
                  }
                ]
              }
            ]
          }
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "FIELD",
              "name": "name",
              "content": {
                "type": "SYMBOL",
                "name": "binding_identifier"
              }
            },
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "STRING",
                  "value": "?"
                },
                {
                  "type": "BLANK"
                }
              ]
            },
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SEQ",
                  "members": [
                    {
                      "type": "STRING",
                      "value": ":="
                    },
                    {
                      "type": "FIELD",
                      "name": "default",
                      "content": {
                        "type": "SYMBOL",
                        "name": "_expression"
                      }
                    }
                  ]
                },
                {
                  "type": "BLANK"
                }
              ]
            }
          ]
        }
      ]
    },
    "return_type": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": "->"
            },
            {
              "type": "STRING",
              "value": "→"
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "type_expression"
        }
      ]
    },
    "type_expression": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "type_identifier"
        },
        {
          "type": "SYMBOL",
          "name": "private_type_identifier"
        },
        {
          "type": "PREC",
          "value": 1,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "SYMBOL",
                "name": "self"
              },
              {
                "type": "STRING",
                "value": "{"
              },
              {
                "type": "SYMBOL",
                "name": "type_identifier"
              },
              {
                "type": "STRING",
                "value": "}"
              }
            ]
          }
        },
        {
          "type": "SYMBOL",
          "name": "self"
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "SYMBOL",
              "name": "type_identifier"
            },
            {
              "type": "REPEAT",
              "content": {
                "type": "SEQ",
                "members": [
                  {
                    "type": "STRING",
                    "value": "::"
                  },
                  {
                    "type": "SYMBOL",
                    "name": "type_identifier"
                  }
                ]
              }
            }
          ]
        },
        {
          "type": "PREC",
          "value": 1,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "SYMBOL",
                "name": "type_identifier"
              },
              {
                "type": "STRING",
                "value": "["
              },
              {
                "type": "SYMBOL",
                "name": "type_expression"
              },
              {
                "type": "STRING",
                "value": "]"
              }
            ]
          }
        }
      ]
    },
    "if_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "if"
        },
        {
          "type": "FIELD",
          "name": "condition",
          "content": {
            "type": "SYMBOL",
            "name": "parenthesized_expression"
          }
        },
        {
          "type": "FIELD",
          "name": "consequence",
          "content": {
            "type": "SYMBOL",
            "name": "block"
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "STRING",
                  "value": "else"
                },
                {
                  "type": "FIELD",
                  "name": "alternative",
                  "content": {
                    "type": "CHOICE",
                    "members": [
                      {
                        "type": "SYMBOL",
                        "name": "if_statement"
                      },
                      {
                        "type": "SYMBOL",
                        "name": "block"
                      }
                    ]
                  }
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "while_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "while"
        },
        {
          "type": "FIELD",
          "name": "condition",
          "content": {
            "type": "SYMBOL",
            "name": "parenthesized_expression"
          }
        },
        {
          "type": "FIELD",
          "name": "body",
          "content": {
            "type": "SYMBOL",
            "name": "block"
          }
        }
      ]
    },
    "for_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "for"
        },
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "PREC",
              "value": 1,
              "content": {
                "type": "SEQ",
                "members": [
                  {
                    "type": "CHOICE",
                    "members": [
                      {
                        "type": "CHOICE",
                        "members": [
                          {
                            "type": "STRING",
                            "value": "let"
                          },
                          {
                            "type": "STRING",
                            "value": "const"
                          }
                        ]
                      },
                      {
                        "type": "BLANK"
                      }
                    ]
                  },
                  {
                    "type": "FIELD",
                    "name": "name",
                    "content": {
                      "type": "SYMBOL",
                      "name": "identifier"
                    }
                  },
                  {
                    "type": "STRING",
                    "value": "in"
                  },
                  {
                    "type": "FIELD",
                    "name": "iterable",
                    "content": {
                      "type": "SYMBOL",
                      "name": "_expression"
                    }
                  }
                ]
              }
            },
            {
              "type": "FIELD",
              "name": "iterable",
              "content": {
                "type": "SYMBOL",
                "name": "_expression"
              }
            }
          ]
        },
        {
          "type": "STRING",
          "value": ")"
        },
        {
          "type": "FIELD",
          "name": "body",
          "content": {
            "type": "SYMBOL",
            "name": "block"
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "STRING",
                  "value": "else"
                },
                {
                  "type": "FIELD",
                  "name": "alternative",
                  "content": {
                    "type": "SYMBOL",
                    "name": "block"
                  }
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "switch_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "switch"
        },
        {
          "type": "FIELD",
          "name": "value",
          "content": {
            "type": "SYMBOL",
            "name": "switch_header"
          }
        },
        {
          "type": "STRING",
          "value": "{"
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "case_clause"
              },
              {
                "type": "SYMBOL",
                "name": "default_clause"
              }
            ]
          }
        },
        {
          "type": "STRING",
          "value": "}"
        }
      ]
    },
    "switch_header": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "FIELD",
          "name": "value",
          "content": {
            "type": "SYMBOL",
            "name": "_expression"
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "STRING",
                  "value": ":"
                },
                {
                  "type": "FIELD",
                  "name": "mode",
                  "content": {
                    "type": "CHOICE",
                    "members": [
                      {
                        "type": "SYMBOL",
                        "name": "identifier"
                      },
                      {
                        "type": "SYMBOL",
                        "name": "regexp"
                      },
                      {
                        "type": "SYMBOL",
                        "name": "operator_name"
                      }
                    ]
                  }
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": ")"
        }
      ]
    },
    "operator_name": {
      "type": "TOKEN",
      "content": {
        "type": "PREC",
        "value": 2,
        "content": {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": "=="
            },
            {
              "type": "STRING",
              "value": "≡"
            },
            {
              "type": "STRING",
              "value": "!="
            },
            {
              "type": "STRING",
              "value": "≢"
            },
            {
              "type": "STRING",
              "value": "="
            },
            {
              "type": "STRING",
              "value": "≠"
            },
            {
              "type": "STRING",
              "value": "<"
            },
            {
              "type": "STRING",
              "value": ">"
            },
            {
              "type": "STRING",
              "value": "<="
            },
            {
              "type": "STRING",
              "value": "≤"
            },
            {
              "type": "STRING",
              "value": ">="
            },
            {
              "type": "STRING",
              "value": "≥"
            },
            {
              "type": "STRING",
              "value": "<=>"
            },
            {
              "type": "STRING",
              "value": "≶"
            },
            {
              "type": "STRING",
              "value": "≷"
            },
            {
              "type": "STRING",
              "value": "eq"
            },
            {
              "type": "STRING",
              "value": "ne"
            },
            {
              "type": "STRING",
              "value": "gt"
            },
            {
              "type": "STRING",
              "value": "ge"
            },
            {
              "type": "STRING",
              "value": "lt"
            },
            {
              "type": "STRING",
              "value": "le"
            },
            {
              "type": "STRING",
              "value": "cmp"
            },
            {
              "type": "STRING",
              "value": "eqi"
            },
            {
              "type": "STRING",
              "value": "nei"
            },
            {
              "type": "STRING",
              "value": "gti"
            },
            {
              "type": "STRING",
              "value": "gei"
            },
            {
              "type": "STRING",
              "value": "lti"
            },
            {
              "type": "STRING",
              "value": "lei"
            },
            {
              "type": "STRING",
              "value": "cmpi"
            },
            {
              "type": "STRING",
              "value": "∣"
            },
            {
              "type": "STRING",
              "value": "divides"
            },
            {
              "type": "STRING",
              "value": "∤"
            },
            {
              "type": "STRING",
              "value": "in"
            },
            {
              "type": "STRING",
              "value": "∈"
            },
            {
              "type": "STRING",
              "value": "∉"
            },
            {
              "type": "STRING",
              "value": "subsetof"
            },
            {
              "type": "STRING",
              "value": "⊂"
            },
            {
              "type": "STRING",
              "value": "supersetof"
            },
            {
              "type": "STRING",
              "value": "⊃"
            },
            {
              "type": "STRING",
              "value": "equivalentof"
            },
            {
              "type": "STRING",
              "value": "⊂⊃"
            },
            {
              "type": "STRING",
              "value": "instanceof"
            },
            {
              "type": "STRING",
              "value": "does"
            },
            {
              "type": "STRING",
              "value": "can"
            },
            {
              "type": "STRING",
              "value": "~"
            },
            {
              "type": "STRING",
              "value": "@"
            },
            {
              "type": "STRING",
              "value": "@?"
            },
            {
              "type": "STRING",
              "value": "@@"
            }
          ]
        }
      }
    },
    "case_clause": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "case"
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "case_match_value"
                },
                {
                  "type": "SYMBOL",
                  "name": "case_operator_value"
                },
                {
                  "type": "SYMBOL",
                  "name": "case_value"
                }
              ]
            },
            {
              "type": "REPEAT",
              "content": {
                "type": "SEQ",
                "members": [
                  {
                    "type": "STRING",
                    "value": ","
                  },
                  {
                    "type": "CHOICE",
                    "members": [
                      {
                        "type": "SYMBOL",
                        "name": "case_match_value"
                      },
                      {
                        "type": "SYMBOL",
                        "name": "case_operator_value"
                      },
                      {
                        "type": "SYMBOL",
                        "name": "case_value"
                      }
                    ]
                  }
                ]
              }
            },
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "STRING",
                  "value": ","
                },
                {
                  "type": "BLANK"
                }
              ]
            }
          ]
        },
        {
          "type": "STRING",
          "value": ":"
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "_item"
          }
        }
      ]
    },
    "case_value": {
      "type": "SYMBOL",
      "name": "_expression"
    },
    "case_match_value": {
      "type": "PREC",
      "value": 1,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "STRING",
            "value": "~"
          },
          {
            "type": "SYMBOL",
            "name": "_expression"
          }
        ]
      }
    },
    "case_operator_value": {
      "type": "PREC",
      "value": 1,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "SYMBOL",
            "name": "operator_name"
          },
          {
            "type": "SYMBOL",
            "name": "_expression"
          }
        ]
      }
    },
    "default_clause": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "default"
        },
        {
          "type": "STRING",
          "value": ":"
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "_item"
          }
        }
      ]
    },
    "try_statement": {
      "type": "PREC",
      "value": 1,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "STRING",
            "value": "try"
          },
          {
            "type": "FIELD",
            "name": "body",
            "content": {
              "type": "SYMBOL",
              "name": "block"
            }
          },
          {
            "type": "REPEAT1",
            "content": {
              "type": "SYMBOL",
              "name": "catch_clause"
            }
          }
        ]
      }
    },
    "catch_clause": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "catch"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "STRING",
                  "value": "("
                },
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "FIELD",
                      "name": "type",
                      "content": {
                        "type": "SYMBOL",
                        "name": "type_expression"
                      }
                    },
                    {
                      "type": "BLANK"
                    }
                  ]
                },
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "FIELD",
                      "name": "name",
                      "content": {
                        "type": "SYMBOL",
                        "name": "identifier"
                      }
                    },
                    {
                      "type": "BLANK"
                    }
                  ]
                },
                {
                  "type": "STRING",
                  "value": ")"
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "FIELD",
          "name": "body",
          "content": {
            "type": "SYMBOL",
            "name": "block"
          }
        }
      ]
    },
    "return_statement": {
      "type": "CHOICE",
      "members": [
        {
          "type": "PREC",
          "value": 1,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "STRING",
                "value": "return"
              },
              {
                "type": "FIELD",
                "name": "value",
                "content": {
                  "type": "SYMBOL",
                  "name": "function_expression"
                }
              }
            ]
          }
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "STRING",
              "value": "return"
            },
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "FIELD",
                  "name": "value",
                  "content": {
                    "type": "SYMBOL",
                    "name": "_expression"
                  }
                },
                {
                  "type": "BLANK"
                }
              ]
            },
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "SEQ",
                      "members": [
                        {
                          "type": "STRING",
                          "value": "if"
                        },
                        {
                          "type": "SYMBOL",
                          "name": "_expression"
                        }
                      ]
                    },
                    {
                      "type": "SEQ",
                      "members": [
                        {
                          "type": "STRING",
                          "value": "unless"
                        },
                        {
                          "type": "SYMBOL",
                          "name": "_expression"
                        }
                      ]
                    }
                  ]
                },
                {
                  "type": "BLANK"
                }
              ]
            },
            {
              "type": "STRING",
              "value": ";"
            }
          ]
        }
      ]
    },
    "throw_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": "throw"
            },
            {
              "type": "STRING",
              "value": "die"
            }
          ]
        },
        {
          "type": "FIELD",
          "name": "value",
          "content": {
            "type": "SYMBOL",
            "name": "_expression"
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SEQ",
                  "members": [
                    {
                      "type": "STRING",
                      "value": "if"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "_expression"
                    }
                  ]
                },
                {
                  "type": "SEQ",
                  "members": [
                    {
                      "type": "STRING",
                      "value": "unless"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "_expression"
                    }
                  ]
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": ";"
        }
      ]
    },
    "loop_control_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": "next"
            },
            {
              "type": "STRING",
              "value": "continue"
            },
            {
              "type": "STRING",
              "value": "last"
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SEQ",
                  "members": [
                    {
                      "type": "STRING",
                      "value": "if"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "_expression"
                    }
                  ]
                },
                {
                  "type": "SEQ",
                  "members": [
                    {
                      "type": "STRING",
                      "value": "unless"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "_expression"
                    }
                  ]
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": ";"
        }
      ]
    },
    "builtin_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "FIELD",
          "name": "name",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "STRING",
                "value": "say"
              },
              {
                "type": "STRING",
                "value": "print"
              },
              {
                "type": "STRING",
                "value": "warn"
              },
              {
                "type": "STRING",
                "value": "assert"
              },
              {
                "type": "STRING",
                "value": "debug"
              }
            ]
          }
        },
        {
          "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": "CHOICE",
          "members": [
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SEQ",
                  "members": [
                    {
                      "type": "STRING",
                      "value": "if"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "_expression"
                    }
                  ]
                },
                {
                  "type": "SEQ",
                  "members": [
                    {
                      "type": "STRING",
                      "value": "unless"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "_expression"
                    }
                  ]
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": ";"
        }
      ]
    },
    "assignment_statement": {
      "type": "PREC_RIGHT",
      "value": 1,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "SYMBOL",
            "name": "assignment_expression"
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "STRING",
                        "value": "if"
                      },
                      {
                        "type": "SYMBOL",
                        "name": "_expression"
                      }
                    ]
                  },
                  {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "STRING",
                        "value": "unless"
                      },
                      {
                        "type": "SYMBOL",
                        "name": "_expression"
                      }
                    ]
                  },
                  {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "STRING",
                        "value": "for"
                      },
                      {
                        "type": "SYMBOL",
                        "name": "_expression"
                      }
                    ]
                  }
                ]
              },
              {
                "type": "BLANK"
              }
            ]
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "STRING",
                "value": ";"
              },
              {
                "type": "BLANK"
              }
            ]
          }
        ]
      }
    },
    "expression_statement": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "_non_assignment_expression"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SEQ",
                  "members": [
                    {
                      "type": "STRING",
                      "value": "if"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "_expression"
                    }
                  ]
                },
                {
                  "type": "SEQ",
                  "members": [
                    {
                      "type": "STRING",
                      "value": "unless"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "_expression"
                    }
                  ]
                },
                {
                  "type": "SEQ",
                  "members": [
                    {
                      "type": "STRING",
                      "value": "for"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "_expression"
                    }
                  ]
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": ";"
        }
      ]
    },
    "_expression": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "assignment_expression"
        },
        {
          "type": "SYMBOL",
          "name": "_non_assignment_expression"
        }
      ]
    },
    "_non_assignment_expression": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "chain_expression"
        },
        {
          "type": "SYMBOL",
          "name": "ternary_expression"
        },
        {
          "type": "SYMBOL",
          "name": "binary_expression"
        },
        {
          "type": "SYMBOL",
          "name": "unary_expression"
        },
        {
          "type": "SYMBOL",
          "name": "postfix_expression"
        },
        {
          "type": "SYMBOL",
          "name": "call_expression"
        },
        {
          "type": "SYMBOL",
          "name": "member_expression"
        },
        {
          "type": "SYMBOL",
          "name": "dynamic_member_expression"
        },
        {
          "type": "SYMBOL",
          "name": "index_expression"
        },
        {
          "type": "SYMBOL",
          "name": "slice_expression"
        },
        {
          "type": "SYMBOL",
          "name": "dict_access_expression"
        },
        {
          "type": "SYMBOL",
          "name": "lambda_expression"
        },
        {
          "type": "SYMBOL",
          "name": "function_expression"
        },
        {
          "type": "SYMBOL",
          "name": "let_expression"
        },
        {
          "type": "SYMBOL",
          "name": "try_expression"
        },
        {
          "type": "SYMBOL",
          "name": "do_expression"
        },
        {
          "type": "SYMBOL",
          "name": "await_expression"
        },
        {
          "type": "SYMBOL",
          "name": "spawn_expression"
        },
        {
          "type": "SYMBOL",
          "name": "new_expression"
        },
        {
          "type": "SYMBOL",
          "name": "_primary_expression"
        }
      ]
    },
    "assignment_expression": {
      "type": "PREC_RIGHT",
      "value": 1,
      "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"
            }
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "weak_modifier"
              },
              {
                "type": "BLANK"
              }
            ]
          }
        ]
      }
    },
    "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": "?:="
        }
      ]
    },
    "ternary_expression": {
      "type": "CHOICE",
      "members": [
        {
          "type": "PREC_RIGHT",
          "value": 3,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "condition",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              },
              {
                "type": "STRING",
                "value": "?"
              },
              {
                "type": "FIELD",
                "name": "consequence",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              },
              {
                "type": "STRING",
                "value": ":"
              },
              {
                "type": "FIELD",
                "name": "alternative",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_RIGHT",
          "value": 3,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "condition",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              },
              {
                "type": "STRING",
                "value": "?:"
              },
              {
                "type": "FIELD",
                "name": "alternative",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              }
            ]
          }
        }
      ]
    },
    "chain_expression": {
      "type": "CHOICE",
      "members": [
        {
          "type": "PREC_LEFT",
          "value": 2,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "STRING",
                      "value": "▷"
                    },
                    {
                      "type": "STRING",
                      "value": "|>"
                    }
                  ]
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_RIGHT",
          "value": 2,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "STRING",
                      "value": "◁"
                    },
                    {
                      "type": "STRING",
                      "value": "<|"
                    }
                  ]
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              }
            ]
          }
        }
      ]
    },
    "binary_expression": {
      "type": "CHOICE",
      "members": [
        {
          "type": "PREC_LEFT",
          "value": 4,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "STRING",
                      "value": "or"
                    },
                    {
                      "type": "STRING",
                      "value": "⋁"
                    },
                    {
                      "type": "STRING",
                      "value": "or?"
                    },
                    {
                      "type": "STRING",
                      "value": "⋁?"
                    }
                  ]
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 5,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "STRING",
                      "value": "onlyif"
                    },
                    {
                      "type": "STRING",
                      "value": "⊨"
                    },
                    {
                      "type": "STRING",
                      "value": "onlyif?"
                    },
                    {
                      "type": "STRING",
                      "value": "⊨?"
                    }
                  ]
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 6,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "STRING",
                      "value": "xor"
                    },
                    {
                      "type": "STRING",
                      "value": "⊻"
                    },
                    {
                      "type": "STRING",
                      "value": "xor?"
                    },
                    {
                      "type": "STRING",
                      "value": "⊻?"
                    },
                    {
                      "type": "STRING",
                      "value": "nor"
                    },
                    {
                      "type": "STRING",
                      "value": "⊽"
                    },
                    {
                      "type": "STRING",
                      "value": "nor?"
                    },
                    {
                      "type": "STRING",
                      "value": "⊽?"
                    },
                    {
                      "type": "STRING",
                      "value": "xnor"
                    },
                    {
                      "type": "STRING",
                      "value": "↔"
                    },
                    {
                      "type": "STRING",
                      "value": "xnor?"
                    },
                    {
                      "type": "STRING",
                      "value": "↔?"
                    }
                  ]
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 7,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "STRING",
                      "value": "and"
                    },
                    {
                      "type": "STRING",
                      "value": "⋀"
                    },
                    {
                      "type": "STRING",
                      "value": "and?"
                    },
                    {
                      "type": "STRING",
                      "value": "⋀?"
                    },
                    {
                      "type": "STRING",
                      "value": "nand"
                    },
                    {
                      "type": "STRING",
                      "value": "⊼"
                    },
                    {
                      "type": "STRING",
                      "value": "nand?"
                    },
                    {
                      "type": "STRING",
                      "value": "⊼?"
                    },
                    {
                      "type": "STRING",
                      "value": "butnot"
                    },
                    {
                      "type": "STRING",
                      "value": "⊭"
                    },
                    {
                      "type": "STRING",
                      "value": "butnot?"
                    },
                    {
                      "type": "STRING",
                      "value": "⊭?"
                    }
                  ]
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 8,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "STRING",
                      "value": "=="
                    },
                    {
                      "type": "STRING",
                      "value": "≡"
                    },
                    {
                      "type": "STRING",
                      "value": "!="
                    },
                    {
                      "type": "STRING",
                      "value": "≢"
                    },
                    {
                      "type": "STRING",
                      "value": "default"
                    }
                  ]
                }
              },
              {
                "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": "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": "divides"
                    },
                    {
                      "type": "STRING",
                      "value": "∤"
                    },
                    {
                      "type": "STRING",
                      "value": "eq"
                    },
                    {
                      "type": "STRING",
                      "value": "ne"
                    },
                    {
                      "type": "STRING",
                      "value": "gt"
                    },
                    {
                      "type": "STRING",
                      "value": "ge"
                    },
                    {
                      "type": "STRING",
                      "value": "lt"
                    },
                    {
                      "type": "STRING",
                      "value": "le"
                    },
                    {
                      "type": "STRING",
                      "value": "cmp"
                    },
                    {
                      "type": "STRING",
                      "value": "eqi"
                    },
                    {
                      "type": "STRING",
                      "value": "nei"
                    },
                    {
                      "type": "STRING",
                      "value": "gti"
                    },
                    {
                      "type": "STRING",
                      "value": "gei"
                    },
                    {
                      "type": "STRING",
                      "value": "lti"
                    },
                    {
                      "type": "STRING",
                      "value": "lei"
                    },
                    {
                      "type": "STRING",
                      "value": "cmpi"
                    },
                    {
                      "type": "STRING",
                      "value": "in"
                    },
                    {
                      "type": "STRING",
                      "value": "∈"
                    },
                    {
                      "type": "STRING",
                      "value": "∉"
                    },
                    {
                      "type": "STRING",
                      "value": "subsetof"
                    },
                    {
                      "type": "STRING",
                      "value": "⊂"
                    },
                    {
                      "type": "STRING",
                      "value": "supersetof"
                    },
                    {
                      "type": "STRING",
                      "value": "⊃"
                    },
                    {
                      "type": "STRING",
                      "value": "equivalentof"
                    },
                    {
                      "type": "STRING",
                      "value": "⊂⊃"
                    },
                    {
                      "type": "STRING",
                      "value": "instanceof"
                    },
                    {
                      "type": "STRING",
                      "value": "does"
                    },
                    {
                      "type": "STRING",
                      "value": "can"
                    },
                    {
                      "type": "STRING",
                      "value": "~"
                    },
                    {
                      "type": "STRING",
                      "value": "@"
                    },
                    {
                      "type": "STRING",
                      "value": "@?"
                    },
                    {
                      "type": "STRING",
                      "value": "@@"
                    },
                    {
                      "type": "STRING",
                      "value": "->"
                    },
                    {
                      "type": "STRING",
                      "value": "→"
                    }
                  ]
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 10,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "STRING",
                  "value": "..."
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 11,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "STRING",
                  "value": "|"
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 12,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "STRING",
                  "value": "^"
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 13,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "STRING",
                  "value": "&"
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 14,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "STRING",
                      "value": "<<"
                    },
                    {
                      "type": "STRING",
                      "value": "«"
                    },
                    {
                      "type": "STRING",
                      "value": ">>"
                    },
                    {
                      "type": "STRING",
                      "value": "»"
                    }
                  ]
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 15,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "STRING",
                      "value": "union"
                    },
                    {
                      "type": "STRING",
                      "value": "⋃"
                    },
                    {
                      "type": "STRING",
                      "value": "intersection"
                    },
                    {
                      "type": "STRING",
                      "value": "⋂"
                    },
                    {
                      "type": "STRING",
                      "value": "\\"
                    },
                    {
                      "type": "STRING",
                      "value": "∖"
                    }
                  ]
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 16,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "STRING",
                  "value": "_"
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 17,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "STRING",
                      "value": "+"
                    },
                    {
                      "type": "STRING",
                      "value": "-"
                    }
                  ]
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 18,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "STRING",
                      "value": "*"
                    },
                    {
                      "type": "STRING",
                      "value": "/"
                    },
                    {
                      "type": "STRING",
                      "value": "×"
                    },
                    {
                      "type": "STRING",
                      "value": "÷"
                    },
                    {
                      "type": "STRING",
                      "value": "mod"
                    }
                  ]
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              }
            ]
          }
        },
        {
          "type": "PREC_RIGHT",
          "value": 19,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "left",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              },
              {
                "type": "FIELD",
                "name": "operator",
                "content": {
                  "type": "STRING",
                  "value": "**"
                }
              },
              {
                "type": "FIELD",
                "name": "right",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              }
            ]
          }
        }
      ]
    },
    "unary_expression": {
      "type": "PREC",
      "value": 20,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "FIELD",
            "name": "operator",
            "content": {
              "type": "CHOICE",
              "members": [
                {
                  "type": "STRING",
                  "value": "+"
                },
                {
                  "type": "STRING",
                  "value": "-"
                },
                {
                  "type": "STRING",
                  "value": "!"
                },
                {
                  "type": "STRING",
                  "value": "¬"
                },
                {
                  "type": "STRING",
                  "value": "~"
                },
                {
                  "type": "STRING",
                  "value": "√"
                },
                {
                  "type": "STRING",
                  "value": "#"
                },
                {
                  "type": "STRING",
                  "value": "\\"
                },
                {
                  "type": "STRING",
                  "value": "not"
                },
                {
                  "type": "STRING",
                  "value": "abs"
                },
                {
                  "type": "STRING",
                  "value": "sqrt"
                },
                {
                  "type": "STRING",
                  "value": "floor"
                },
                {
                  "type": "STRING",
                  "value": "ceil"
                },
                {
                  "type": "STRING",
                  "value": "round"
                },
                {
                  "type": "STRING",
                  "value": "int"
                },
                {
                  "type": "STRING",
                  "value": "uc"
                },
                {
                  "type": "STRING",
                  "value": "lc"
                },
                {
                  "type": "STRING",
                  "value": "length"
                },
                {
                  "type": "STRING",
                  "value": "typeof"
                },
                {
                  "type": "STRING",
                  "value": "++"
                },
                {
                  "type": "STRING",
                  "value": "--"
                }
              ]
            }
          },
          {
            "type": "FIELD",
            "name": "argument",
            "content": {
              "type": "SYMBOL",
              "name": "_expression"
            }
          }
        ]
      }
    },
    "postfix_expression": {
      "type": "PREC_LEFT",
      "value": 21,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "FIELD",
            "name": "argument",
            "content": {
              "type": "SYMBOL",
              "name": "_expression"
            }
          },
          {
            "type": "FIELD",
            "name": "operator",
            "content": {
              "type": "CHOICE",
              "members": [
                {
                  "type": "STRING",
                  "value": "++"
                },
                {
                  "type": "STRING",
                  "value": "--"
                }
              ]
            }
          }
        ]
      }
    },
    "call_expression": {
      "type": "PREC_LEFT",
      "value": 22,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "FIELD",
            "name": "function",
            "content": {
              "type": "SYMBOL",
              "name": "_expression"
            }
          },
          {
            "type": "FIELD",
            "name": "arguments",
            "content": {
              "type": "SYMBOL",
              "name": "argument_list"
            }
          }
        ]
      }
    },
    "argument_list": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "spread_argument"
              },
              {
                "type": "SYMBOL",
                "name": "_expression"
              },
              {
                "type": "SYMBOL",
                "name": "pair_entry"
              },
              {
                "type": "STRING",
                "value": ","
              }
            ]
          }
        },
        {
          "type": "STRING",
          "value": ")"
        }
      ]
    },
    "spread_argument": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "..."
        },
        {
          "type": "FIELD",
          "name": "value",
          "content": {
            "type": "SYMBOL",
            "name": "_expression"
          }
        }
      ]
    },
    "member_expression": {
      "type": "PREC_LEFT",
      "value": 21,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "FIELD",
            "name": "object",
            "content": {
              "type": "SYMBOL",
              "name": "_expression"
            }
          },
          {
            "type": "STRING",
            "value": "."
          },
          {
            "type": "FIELD",
            "name": "property",
            "content": {
              "type": "SYMBOL",
              "name": "identifier"
            }
          }
        ]
      }
    },
    "dynamic_member_expression": {
      "type": "PREC_LEFT",
      "value": 21,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "FIELD",
            "name": "object",
            "content": {
              "type": "SYMBOL",
              "name": "_expression"
            }
          },
          {
            "type": "STRING",
            "value": ".("
          },
          {
            "type": "FIELD",
            "name": "property",
            "content": {
              "type": "SYMBOL",
              "name": "_expression"
            }
          },
          {
            "type": "STRING",
            "value": ")"
          }
        ]
      }
    },
    "index_expression": {
      "type": "PREC_LEFT",
      "value": 21,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "FIELD",
            "name": "object",
            "content": {
              "type": "SYMBOL",
              "name": "_expression"
            }
          },
          {
            "type": "STRING",
            "value": "["
          },
          {
            "type": "FIELD",
            "name": "index",
            "content": {
              "type": "SYMBOL",
              "name": "_expression"
            }
          },
          {
            "type": "STRING",
            "value": "]"
          }
        ]
      }
    },
    "slice_expression": {
      "type": "PREC_LEFT",
      "value": 21,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "FIELD",
            "name": "object",
            "content": {
              "type": "SYMBOL",
              "name": "_expression"
            }
          },
          {
            "type": "STRING",
            "value": "["
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "FIELD",
                "name": "start",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              },
              {
                "type": "BLANK"
              }
            ]
          },
          {
            "type": "STRING",
            "value": ":"
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "FIELD",
                "name": "length",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              },
              {
                "type": "BLANK"
              }
            ]
          },
          {
            "type": "STRING",
            "value": "]"
          }
        ]
      }
    },
    "dict_access_expression": {
      "type": "PREC_LEFT",
      "value": 21,
      "content": {
        "type": "CHOICE",
        "members": [
          {
            "type": "PREC",
            "value": 22,
            "content": {
              "type": "SEQ",
              "members": [
                {
                  "type": "FIELD",
                  "name": "object",
                  "content": {
                    "type": "SYMBOL",
                    "name": "_expression"
                  }
                },
                {
                  "type": "STRING",
                  "value": "{"
                },
                {
                  "type": "FIELD",
                  "name": "key",
                  "content": {
                    "type": "SYMBOL",
                    "name": "bare_key"
                  }
                },
                {
                  "type": "STRING",
                  "value": "}"
                }
              ]
            }
          },
          {
            "type": "PREC",
            "value": 21,
            "content": {
              "type": "SEQ",
              "members": [
                {
                  "type": "FIELD",
                  "name": "object",
                  "content": {
                    "type": "SYMBOL",
                    "name": "_expression"
                  }
                },
                {
                  "type": "STRING",
                  "value": "{"
                },
                {
                  "type": "FIELD",
                  "name": "key",
                  "content": {
                    "type": "SYMBOL",
                    "name": "_expression"
                  }
                },
                {
                  "type": "STRING",
                  "value": "}"
                }
              ]
            }
          }
        ]
      }
    },
    "lambda_expression": {
      "type": "CHOICE",
      "members": [
        {
          "type": "PREC",
          "value": 20,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "STRING",
                "value": "fn"
              },
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "FIELD",
                    "name": "parameters",
                    "content": {
                      "type": "CHOICE",
                      "members": [
                        {
                          "type": "SYMBOL",
                          "name": "parameter_list"
                        },
                        {
                          "type": "SYMBOL",
                          "name": "lambda_parameter"
                        }
                      ]
                    }
                  },
                  {
                    "type": "BLANK"
                  }
                ]
              },
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "STRING",
                    "value": "->"
                  },
                  {
                    "type": "STRING",
                    "value": "→"
                  }
                ]
              },
              {
                "type": "FIELD",
                "name": "body",
                "content": {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "SYMBOL",
                      "name": "block"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "_expression"
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "type": "PREC",
          "value": 20,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "STRING",
                    "value": "->"
                  },
                  {
                    "type": "STRING",
                    "value": "→"
                  }
                ]
              },
              {
                "type": "FIELD",
                "name": "body",
                "content": {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "SYMBOL",
                      "name": "block"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "_expression"
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "type": "PREC",
          "value": 20,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "STRING",
                "value": "async"
              },
              {
                "type": "STRING",
                "value": "fn"
              },
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "FIELD",
                    "name": "parameters",
                    "content": {
                      "type": "CHOICE",
                      "members": [
                        {
                          "type": "SYMBOL",
                          "name": "parameter_list"
                        },
                        {
                          "type": "SYMBOL",
                          "name": "lambda_parameter"
                        }
                      ]
                    }
                  },
                  {
                    "type": "BLANK"
                  }
                ]
              },
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "STRING",
                    "value": "->"
                  },
                  {
                    "type": "STRING",
                    "value": "→"
                  }
                ]
              },
              {
                "type": "FIELD",
                "name": "body",
                "content": {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "SYMBOL",
                      "name": "block"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "_expression"
                    }
                  ]
                }
              }
            ]
          }
        }
      ]
    },
    "lambda_parameter": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "FIELD",
              "name": "type",
              "content": {
                "type": "SYMBOL",
                "name": "type_expression"
              }
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "FIELD",
          "name": "name",
          "content": {
            "type": "SYMBOL",
            "name": "identifier"
          }
        }
      ]
    },
    "function_expression": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": "async"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "function"
        },
        {
          "type": "FIELD",
          "name": "parameters",
          "content": {
            "type": "SYMBOL",
            "name": "parameter_list"
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "FIELD",
              "name": "return_type",
              "content": {
                "type": "SYMBOL",
                "name": "return_type"
              }
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "FIELD",
          "name": "body",
          "content": {
            "type": "SYMBOL",
            "name": "block"
          }
        }
      ]
    },
    "let_expression": {
      "type": "PREC",
      "value": -1,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "FIELD",
            "name": "kind",
            "content": {
              "type": "CHOICE",
              "members": [
                {
                  "type": "STRING",
                  "value": "let"
                },
                {
                  "type": "STRING",
                  "value": "const"
                }
              ]
            }
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "FIELD",
                "name": "pattern",
                "content": {
                  "type": "SYMBOL",
                  "name": "destructuring_pattern"
                }
              },
              {
                "type": "SEQ",
                "members": [
                  {
                    "type": "CHOICE",
                    "members": [
                      {
                        "type": "FIELD",
                        "name": "type",
                        "content": {
                          "type": "SYMBOL",
                          "name": "type_expression"
                        }
                      },
                      {
                        "type": "BLANK"
                      }
                    ]
                  },
                  {
                    "type": "FIELD",
                    "name": "name",
                    "content": {
                      "type": "SYMBOL",
                      "name": "identifier"
                    }
                  }
                ]
              }
            ]
          },
          {
            "type": "STRING",
            "value": ":="
          },
          {
            "type": "FIELD",
            "name": "value",
            "content": {
              "type": "SYMBOL",
              "name": "_expression"
            }
          }
        ]
      }
    },
    "try_expression": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "try"
        },
        {
          "type": "FIELD",
          "name": "body",
          "content": {
            "type": "SYMBOL",
            "name": "block"
          }
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "catch_clause"
          }
        }
      ]
    },
    "do_expression": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "do"
        },
        {
          "type": "FIELD",
          "name": "body",
          "content": {
            "type": "SYMBOL",
            "name": "block"
          }
        }
      ]
    },
    "await_expression": {
      "type": "PREC",
      "value": 20,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "STRING",
            "value": "await"
          },
          {
            "type": "FIELD",
            "name": "argument",
            "content": {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "block"
                },
                {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              ]
            }
          }
        ]
      }
    },
    "spawn_expression": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "spawn"
        },
        {
          "type": "FIELD",
          "name": "body",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "block"
              },
              {
                "type": "SYMBOL",
                "name": "_expression"
              }
            ]
          }
        }
      ]
    },
    "new_expression": {
      "type": "CHOICE",
      "members": [
        {
          "type": "PREC",
          "value": 20,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "STRING",
                "value": "new"
              },
              {
                "type": "FIELD",
                "name": "class",
                "content": {
                  "type": "SYMBOL",
                  "name": "constructor_target"
                }
              },
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "SYMBOL",
                    "name": "trait_composition"
                  },
                  {
                    "type": "BLANK"
                  }
                ]
              },
              {
                "type": "FIELD",
                "name": "arguments",
                "content": {
                  "type": "SYMBOL",
                  "name": "argument_list"
                }
              }
            ]
          }
        },
        {
          "type": "PREC",
          "value": 19,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "STRING",
                "value": "new"
              },
              {
                "type": "FIELD",
                "name": "class",
                "content": {
                  "type": "SYMBOL",
                  "name": "constructor_target"
                }
              },
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "SYMBOL",
                    "name": "trait_composition"
                  },
                  {
                    "type": "BLANK"
                  }
                ]
              }
            ]
          }
        }
      ]
    },
    "constructor_target": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "type_expression"
        },
        {
          "type": "SYMBOL",
          "name": "identifier"
        }
      ]
    },
    "_primary_expression": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "identifier"
        },
        {
          "type": "SYMBOL",
          "name": "type_identifier"
        },
        {
          "type": "SYMBOL",
          "name": "magic_global"
        },
        {
          "type": "SYMBOL",
          "name": "self"
        },
        {
          "type": "SYMBOL",
          "name": "super"
        },
        {
          "type": "SYMBOL",
          "name": "_literal"
        },
        {
          "type": "SYMBOL",
          "name": "parenthesized_expression"
        },
        {
          "type": "SYMBOL",
          "name": "list_literal"
        },
        {
          "type": "SYMBOL",
          "name": "dict_literal"
        },
        {
          "type": "SYMBOL",
          "name": "pair_list_literal"
        },
        {
          "type": "SYMBOL",
          "name": "bag_literal"
        },
        {
          "type": "SYMBOL",
          "name": "set_literal"
        },
        {
          "type": "SYMBOL",
          "name": "floor_expression"
        },
        {
          "type": "SYMBOL",
          "name": "ceil_expression"
        },
        {
          "type": "SYMBOL",
          "name": "placeholder"
        }
      ]
    },
    "parenthesized_expression": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "SYMBOL",
          "name": "_expression"
        },
        {
          "type": "STRING",
          "value": ")"
        }
      ]
    },
    "floor_expression": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "⌊"
        },
        {
          "type": "SYMBOL",
          "name": "_expression"
        },
        {
          "type": "STRING",
          "value": "⌋"
        }
      ]
    },
    "ceil_expression": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "⌈"
        },
        {
          "type": "SYMBOL",
          "name": "_expression"
        },
        {
          "type": "STRING",
          "value": "⌉"
        }
      ]
    },
    "list_literal": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "["
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "spread_argument"
              },
              {
                "type": "SYMBOL",
                "name": "_expression"
              },
              {
                "type": "STRING",
                "value": ","
              }
            ]
          }
        },
        {
          "type": "STRING",
          "value": "]"
        }
      ]
    },
    "dict_literal": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "{"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "pair_entry"
                },
                {
                  "type": "REPEAT",
                  "content": {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "STRING",
                        "value": ","
                      },
                      {
                        "type": "SYMBOL",
                        "name": "pair_entry"
                      }
                    ]
                  }
                },
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "STRING",
                      "value": ","
                    },
                    {
                      "type": "BLANK"
                    }
                  ]
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "}"
        }
      ]
    },
    "bag_literal": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "<<<"
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "_expression"
              },
              {
                "type": "STRING",
                "value": ","
              }
            ]
          }
        },
        {
          "type": "STRING",
          "value": ">>>"
        }
      ]
    },
    "pair_list_literal": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "{{"
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "pair_entry"
              },
              {
                "type": "STRING",
                "value": ","
              }
            ]
          }
        },
        {
          "type": "STRING",
          "value": "}}"
        }
      ]
    },
    "set_literal": {
      "type": "CHOICE",
      "members": [
        {
          "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": "SYMBOL",
              "name": "set_close"
            }
          ]
        },
        {
          "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": "»"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "∅"
        }
      ]
    },
    "pair_entry": {
      "type": "CHOICE",
      "members": [
        {
          "type": "PREC",
          "value": 1,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "key",
                "content": {
                  "type": "SYMBOL",
                  "name": "bare_key"
                }
              },
              {
                "type": "STRING",
                "value": ":"
              },
              {
                "type": "FIELD",
                "name": "value",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              }
            ]
          }
        },
        {
          "type": "PREC",
          "value": -1,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "FIELD",
                "name": "key",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              },
              {
                "type": "STRING",
                "value": ":"
              },
              {
                "type": "FIELD",
                "name": "value",
                "content": {
                  "type": "SYMBOL",
                  "name": "_expression"
                }
              }
            ]
          }
        }
      ]
    },
    "_literal": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "number"
        },
        {
          "type": "SYMBOL",
          "name": "string"
        },
        {
          "type": "SYMBOL",
          "name": "template_string"
        },
        {
          "type": "SYMBOL",
          "name": "regexp"
        },
        {
          "type": "SYMBOL",
          "name": "boolean"
        },
        {
          "type": "SYMBOL",
          "name": "null"
        }
      ]
    },
    "boolean": {
      "type": "CHOICE",
      "members": [
        {
          "type": "STRING",
          "value": "true"
        },
        {
          "type": "STRING",
          "value": "false"
        },
        {
          "type": "STRING",
          "value": "⊤"
        },
        {
          "type": "STRING",
          "value": "⊥"
        }
      ]
    },
    "null": {
      "type": "STRING",
      "value": "null"
    },
    "magic_global": {
      "type": "CHOICE",
      "members": [
        {
          "type": "STRING",
          "value": "__argc__"
        },
        {
          "type": "STRING",
          "value": "__file__"
        },
        {
          "type": "STRING",
          "value": "__global__"
        },
        {
          "type": "STRING",
          "value": "__system__"
        }
      ]
    },
    "self": {
      "type": "STRING",
      "value": "self"
    },
    "super": {
      "type": "STRING",
      "value": "super"
    },
    "placeholder": {
      "type": "STRING",
      "value": "^^"
    },
    "number": {
      "type": "TOKEN",
      "content": {
        "type": "CHOICE",
        "members": [
          {
            "type": "PATTERN",
            "value": "0x[\\da-fA-F]+"
          },
          {
            "type": "PATTERN",
            "value": "0b[01]+"
          },
          {
            "type": "PATTERN",
            "value": "0o[0-7]+"
          },
          {
            "type": "PATTERN",
            "value": "\\d+\\.\\d+([eE][+-]?\\d+)?"
          },
          {
            "type": "PATTERN",
            "value": "\\d+([eE][+-]?\\d+)?"
          }
        ]
      }
    },
    "string": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "double_quoted_string"
        },
        {
          "type": "SYMBOL",
          "name": "single_quoted_string"
        },
        {
          "type": "SYMBOL",
          "name": "triple_double_quoted_string"
        },
        {
          "type": "SYMBOL",
          "name": "triple_single_quoted_string"
        }
      ]
    },
    "double_quoted_string": {
      "type": "TOKEN",
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "STRING",
            "value": "\""
          },
          {
            "type": "REPEAT",
            "content": {
              "type": "CHOICE",
              "members": [
                {
                  "type": "PATTERN",
                  "value": "\\\\."
                },
                {
                  "type": "PATTERN",
                  "value": "[^\"\\\\\\n]"
                }
              ]
            }
          },
          {
            "type": "STRING",
            "value": "\""
          }
        ]
      }
    },
    "single_quoted_string": {
      "type": "TOKEN",
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "STRING",
            "value": "'"
          },
          {
            "type": "REPEAT",
            "content": {
              "type": "CHOICE",
              "members": [
                {
                  "type": "PATTERN",
                  "value": "\\\\."
                },
                {
                  "type": "PATTERN",
                  "value": "[^'\\\\\\n]"
                }
              ]
            }
          },
          {
            "type": "STRING",
            "value": "'"
          }
        ]
      }
    },
    "triple_double_quoted_string": {
      "type": "TOKEN",
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "STRING",
            "value": "\"\"\""
          },
          {
            "type": "REPEAT",
            "content": {
              "type": "CHOICE",
              "members": [
                {
                  "type": "PATTERN",
                  "value": "\\\\."
                },
                {
                  "type": "PATTERN",
                  "value": "[^\\\\]"
                }
              ]
            }
          },
          {
            "type": "STRING",
            "value": "\"\"\""
          }
        ]
      }
    },
    "triple_single_quoted_string": {
      "type": "TOKEN",
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "STRING",
            "value": "'''"
          },
          {
            "type": "REPEAT",
            "content": {
              "type": "CHOICE",
              "members": [
                {
                  "type": "PATTERN",
                  "value": "\\\\."
                },
                {
                  "type": "PATTERN",
                  "value": "[^\\\\]"
                }
              ]
            }
          },
          {
            "type": "STRING",
            "value": "'''"
          }
        ]
      }
    },
    "template_string": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SEQ",
          "members": [
            {
              "type": "STRING",
              "value": "`"
            },
            {
              "type": "REPEAT",
              "content": {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "SYMBOL",
                    "name": "template_interpolation"
                  },
                  {
                    "type": "SYMBOL",
                    "name": "template_fragment"
                  }
                ]
              }
            },
            {
              "type": "STRING",
              "value": "`"
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "STRING",
              "value": "```"
            },
            {
              "type": "REPEAT",
              "content": {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "SYMBOL",
                    "name": "template_interpolation"
                  },
                  {
                    "type": "SYMBOL",
                    "name": "template_fragment"
                  }
                ]
              }
            },
            {
              "type": "STRING",
              "value": "```"
            }
          ]
        }
      ]
    },
    "template_interpolation": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "${"
        },
        {
          "type": "FIELD",
          "name": "value",
          "content": {
            "type": "SYMBOL",
            "name": "_expression"
          }
        },
        {
          "type": "STRING",
          "value": "}"
        }
      ]
    },
    "template_fragment": {
      "type": "TOKEN",
      "content": {
        "type": "PREC",
        "value": -1,
        "content": {
          "type": "REPEAT1",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "PATTERN",
                "value": "\\\\."
              },
              {
                "type": "PATTERN",
                "value": "[^`\\\\$]+"
              },
              {
                "type": "PATTERN",
                "value": "\\$[^{`\\\\]"
              }
            ]
          }
        }
      }
    },
    "regexp": {
      "type": "TOKEN",
      "content": {
        "type": "PREC",
        "value": -1,
        "content": {
          "type": "SEQ",
          "members": [
            {
              "type": "STRING",
              "value": "/"
            },
            {
              "type": "REPEAT1",
              "content": {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "PATTERN",
                    "value": "\\\\."
                  },
                  {
                    "type": "PATTERN",
                    "value": "\\[[^\\]\\n]*(\\\\.[^\\]\\n]*)*\\]"
                  },
                  {
                    "type": "PATTERN",
                    "value": "[^\\/\\\\\\n]"
                  }
                ]
              }
            },
            {
              "type": "STRING",
              "value": "/"
            },
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "PATTERN",
                  "value": "[A-Za-z]+"
                },
                {
                  "type": "BLANK"
                }
              ]
            }
          ]
        }
      }
    },
    "bare_key": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "identifier"
        },
        {
          "type": "SYMBOL",
          "name": "reserved_word_key"
        }
      ]
    },
    "reserved_word_key": {
      "type": "CHOICE",
      "members": [
        {
          "type": "STRING",
          "value": "async"
        },
        {
          "type": "STRING",
          "value": "await"
        },
        {
          "type": "STRING",
          "value": "do"
        },
        {
          "type": "STRING",
          "value": "false"
        },
        {
          "type": "STRING",
          "value": "fn"
        },
        {
          "type": "STRING",
          "value": "function"
        },
        {
          "type": "STRING",
          "value": "new"
        },
        {
          "type": "STRING",
          "value": "null"
        },
        {
          "type": "STRING",
          "value": "self"
        },
        {
          "type": "STRING",
          "value": "spawn"
        },
        {
          "type": "STRING",
          "value": "super"
        },
        {
          "type": "STRING",
          "value": "true"
        },
        {
          "type": "STRING",
          "value": "try"
        },
        {
          "type": "STRING",
          "value": "not"
        },
        {
          "type": "STRING",
          "value": "abs"
        },
        {
          "type": "STRING",
          "value": "sqrt"
        },
        {
          "type": "STRING",
          "value": "floor"
        },
        {
          "type": "STRING",
          "value": "ceil"
        },
        {
          "type": "STRING",
          "value": "round"
        },
        {
          "type": "STRING",
          "value": "int"
        },
        {
          "type": "STRING",
          "value": "uc"
        },
        {
          "type": "STRING",
          "value": "lc"
        },
        {
          "type": "STRING",
          "value": "length"
        },
        {
          "type": "STRING",
          "value": "typeof"
        }
      ]
    },
    "binding_identifier": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "identifier"
        },
        {
          "type": "SYMBOL",
          "name": "type_identifier"
        }
      ]
    },
    "identifier": {
      "type": "PATTERN",
      "value": "[\\p{L}_][\\p{L}\\p{N}_]*"
    },
    "type_identifier": {
      "type": "TOKEN",
      "content": {
        "type": "PREC",
        "value": 1,
        "content": {
          "type": "PATTERN",
          "value": "[A-Z][A-Za-z0-9_]*"
        }
      }
    },
    "private_type_identifier": {
      "type": "TOKEN",
      "content": {
        "type": "PREC",
        "value": -1,
        "content": {
          "type": "PATTERN",
          "value": "_[A-Z][A-Za-z0-9_]*"
        }
      }
    },
    "set_close": {
      "type": "TOKEN",
      "content": {
        "type": "PREC",
        "value": 20,
        "content": {
          "type": "STRING",
          "value": ">>"
        }
      }
    }
  },
  "extras": [
    {
      "type": "PATTERN",
      "value": "\\s"
    },
    {
      "type": "SYMBOL",
      "name": "comment"
    },
    {
      "type": "SYMBOL",
      "name": "pod_block"
    }
  ],
  "conflicts": [
    [
      "block",
      "dict_literal"
    ],
    [
      "bare_key",
      "_primary_expression"
    ],
    [
      "reserved_word_key",
      "boolean"
    ],
    [
      "reserved_word_key",
      "null"
    ],
    [
      "reserved_word_key",
      "self"
    ],
    [
      "reserved_word_key",
      "super"
    ],
    [
      "trait_composition"
    ]
  ],
  "precedences": [],
  "externals": [
    {
      "type": "SYMBOL",
      "name": "pod_block"
    }
  ],
  "inline": [],
  "supertypes": [
    "_statement",
    "_declaration",
    "_expression",
    "_literal"
  ]
}
