{
  "name": "pkl",
  "word": "identifier",
  "rules": {
    "module": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "moduleHeader"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "importClause"
              },
              {
                "type": "SYMBOL",
                "name": "importGlobClause"
              }
            ]
          }
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "_moduleMember"
          }
        }
      ]
    },
    "moduleHeader": {
      "type": "SEQ",
      "members": [
        {
          "type": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "annotation"
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "moduleClause"
                },
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "SYMBOL",
                      "name": "extendsOrAmendsClause"
                    },
                    {
                      "type": "BLANK"
                    }
                  ]
                }
              ]
            },
            {
              "type": "SYMBOL",
              "name": "extendsOrAmendsClause"
            }
          ]
        }
      ]
    },
    "moduleClause": {
      "type": "SEQ",
      "members": [
        {
          "type": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "modifier"
          }
        },
        {
          "type": "STRING",
          "value": "module"
        },
        {
          "type": "SYMBOL",
          "name": "qualifiedIdentifier"
        }
      ]
    },
    "extendsOrAmendsClause": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": "extends"
            },
            {
              "type": "STRING",
              "value": "amends"
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "stringConstant"
        }
      ]
    },
    "importClause": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "import"
        },
        {
          "type": "SYMBOL",
          "name": "stringConstant"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "STRING",
                  "value": "as"
                },
                {
                  "type": "SYMBOL",
                  "name": "identifier"
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "importGlobClause": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "import*"
        },
        {
          "type": "SYMBOL",
          "name": "stringConstant"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "STRING",
                  "value": "as"
                },
                {
                  "type": "SYMBOL",
                  "name": "identifier"
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "_moduleMember": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "clazz"
        },
        {
          "type": "SYMBOL",
          "name": "typeAlias"
        },
        {
          "type": "SYMBOL",
          "name": "classProperty"
        },
        {
          "type": "SYMBOL",
          "name": "classMethod"
        }
      ]
    },
    "clazz": {
      "type": "SEQ",
      "members": [
        {
          "type": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "annotation"
          }
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "modifier"
          }
        },
        {
          "type": "STRING",
          "value": "class"
        },
        {
          "type": "SYMBOL",
          "name": "identifier"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "typeParameterList"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "classExtendsClause"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "classBody"
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "classExtendsClause": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "extends"
        },
        {
          "type": "SYMBOL",
          "name": "qualifiedIdentifier"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "typeArgumentList"
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "classBody": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "{"
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "classProperty"
              },
              {
                "type": "SYMBOL",
                "name": "classMethod"
              }
            ]
          }
        },
        {
          "type": "STRING",
          "value": "}"
        }
      ]
    },
    "typeAlias": {
      "type": "SEQ",
      "members": [
        {
          "type": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "annotation"
          }
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "modifier"
          }
        },
        {
          "type": "STRING",
          "value": "typealias"
        },
        {
          "type": "SYMBOL",
          "name": "identifier"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "typeParameterList"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "="
        },
        {
          "type": "SYMBOL",
          "name": "type"
        }
      ]
    },
    "classProperty": {
      "type": "SEQ",
      "members": [
        {
          "type": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "annotation"
          }
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "modifier"
          }
        },
        {
          "type": "SYMBOL",
          "name": "identifier"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "typeAnnotation"
            },
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "SYMBOL",
                      "name": "typeAnnotation"
                    },
                    {
                      "type": "BLANK"
                    }
                  ]
                },
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "SEQ",
                      "members": [
                        {
                          "type": "STRING",
                          "value": "="
                        },
                        {
                          "type": "SYMBOL",
                          "name": "_expr"
                        }
                      ]
                    },
                    {
                      "type": "REPEAT1",
                      "content": {
                        "type": "SYMBOL",
                        "name": "objectBody"
                      }
                    }
                  ]
                }
              ]
            }
          ]
        }
      ]
    },
    "classMethod": {
      "type": "SEQ",
      "members": [
        {
          "type": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "annotation"
          }
        },
        {
          "type": "SYMBOL",
          "name": "methodHeader"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "STRING",
                  "value": "="
                },
                {
                  "type": "SYMBOL",
                  "name": "_expr"
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "methodHeader": {
      "type": "SEQ",
      "members": [
        {
          "type": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "modifier"
          }
        },
        {
          "type": "STRING",
          "value": "function"
        },
        {
          "type": "SYMBOL",
          "name": "identifier"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "typeParameterList"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "parameterList"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "typeAnnotation"
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "annotation": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "@"
        },
        {
          "type": "SYMBOL",
          "name": "qualifiedIdentifier"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "objectBody"
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "objectBody": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "{"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "objectBodyParameters"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "_objectMember"
          }
        },
        {
          "type": "STRING",
          "value": "}"
        }
      ]
    },
    "_objectMember": {
      "type": "PREC",
      "value": -1,
      "content": {
        "type": "CHOICE",
        "members": [
          {
            "type": "SYMBOL",
            "name": "objectProperty"
          },
          {
            "type": "SYMBOL",
            "name": "objectMethod"
          },
          {
            "type": "SYMBOL",
            "name": "objectEntry"
          },
          {
            "type": "SYMBOL",
            "name": "objectElement"
          },
          {
            "type": "SYMBOL",
            "name": "objectPredicate"
          },
          {
            "type": "SYMBOL",
            "name": "forGenerator"
          },
          {
            "type": "SYMBOL",
            "name": "whenGenerator"
          },
          {
            "type": "SYMBOL",
            "name": "objectSpread"
          }
        ]
      }
    },
    "objectProperty": {
      "type": "SEQ",
      "members": [
        {
          "type": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "modifier"
          }
        },
        {
          "type": "SYMBOL",
          "name": "identifier"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "SYMBOL",
                      "name": "typeAnnotation"
                    },
                    {
                      "type": "BLANK"
                    }
                  ]
                },
                {
                  "type": "STRING",
                  "value": "="
                },
                {
                  "type": "SYMBOL",
                  "name": "_expr"
                }
              ]
            },
            {
              "type": "REPEAT1",
              "content": {
                "type": "SYMBOL",
                "name": "objectBody"
              }
            }
          ]
        }
      ]
    },
    "objectMethod": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "methodHeader"
        },
        {
          "type": "STRING",
          "value": "="
        },
        {
          "type": "SYMBOL",
          "name": "_expr"
        }
      ]
    },
    "objectEntry": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "_open_entry_bracket"
        },
        {
          "type": "SYMBOL",
          "name": "_expr"
        },
        {
          "type": "STRING",
          "value": "]"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "STRING",
                  "value": "="
                },
                {
                  "type": "SYMBOL",
                  "name": "_expr"
                }
              ]
            },
            {
              "type": "REPEAT1",
              "content": {
                "type": "SYMBOL",
                "name": "objectBody"
              }
            }
          ]
        }
      ]
    },
    "objectElement": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "variableExpr"
        },
        {
          "type": "SYMBOL",
          "name": "_expr2"
        }
      ]
    },
    "objectPredicate": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "[["
        },
        {
          "type": "SYMBOL",
          "name": "_expr"
        },
        {
          "type": "STRING",
          "value": "]]"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "STRING",
                  "value": "="
                },
                {
                  "type": "SYMBOL",
                  "name": "_expr"
                }
              ]
            },
            {
              "type": "REPEAT1",
              "content": {
                "type": "SYMBOL",
                "name": "objectBody"
              }
            }
          ]
        }
      ]
    },
    "forGenerator": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "for"
        },
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "SYMBOL",
          "name": "typedIdentifier"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "STRING",
                  "value": ","
                },
                {
                  "type": "SYMBOL",
                  "name": "typedIdentifier"
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "in"
        },
        {
          "type": "SYMBOL",
          "name": "_expr"
        },
        {
          "type": "STRING",
          "value": ")"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "objectBody"
            },
            {
              "type": "SYMBOL",
              "name": "_objectMember"
            }
          ]
        }
      ]
    },
    "whenGenerator": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "when"
        },
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "SYMBOL",
          "name": "_expr"
        },
        {
          "type": "STRING",
          "value": ")"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "objectBody"
            },
            {
              "type": "SYMBOL",
              "name": "_objectMember"
            }
          ]
        }
      ]
    },
    "objectSpread": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": "..."
            },
            {
              "type": "STRING",
              "value": "...?"
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "_expr"
        }
      ]
    },
    "objectBodyParameters": {
      "type": "SEQ",
      "members": [
        {
          "type": "SEQ",
          "members": [
            {
              "type": "SYMBOL",
              "name": "typedIdentifier"
            },
            {
              "type": "REPEAT",
              "content": {
                "type": "SEQ",
                "members": [
                  {
                    "type": "STRING",
                    "value": ","
                  },
                  {
                    "type": "SYMBOL",
                    "name": "typedIdentifier"
                  }
                ]
              }
            }
          ]
        },
        {
          "type": "STRING",
          "value": "->"
        }
      ]
    },
    "typeAnnotation": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": ":"
        },
        {
          "type": "SYMBOL",
          "name": "type"
        }
      ]
    },
    "type": {
      "type": "CHOICE",
      "members": [
        {
          "type": "STRING",
          "value": "unknown"
        },
        {
          "type": "STRING",
          "value": "nothing"
        },
        {
          "type": "SYMBOL",
          "name": "stringConstant"
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "SYMBOL",
              "name": "qualifiedIdentifier"
            },
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "typeArgumentList"
                },
                {
                  "type": "BLANK"
                }
              ]
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "STRING",
              "value": "("
            },
            {
              "type": "SYMBOL",
              "name": "type"
            },
            {
              "type": "STRING",
              "value": ")"
            }
          ]
        },
        {
          "type": "PREC",
          "value": 5,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "SYMBOL",
                "name": "type"
              },
              {
                "type": "STRING",
                "value": "?"
              }
            ]
          }
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "SYMBOL",
              "name": "type"
            },
            {
              "type": "STRING",
              "value": "("
            },
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "_expr"
                },
                {
                  "type": "REPEAT",
                  "content": {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "STRING",
                        "value": ","
                      },
                      {
                        "type": "SYMBOL",
                        "name": "_expr"
                      }
                    ]
                  }
                }
              ]
            },
            {
              "type": "STRING",
              "value": ")"
            }
          ]
        },
        {
          "type": "PREC_LEFT",
          "value": -6,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "SYMBOL",
                "name": "type"
              },
              {
                "type": "STRING",
                "value": "|"
              },
              {
                "type": "SYMBOL",
                "name": "type"
              }
            ]
          }
        },
        {
          "type": "PREC",
          "value": -7,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "STRING",
                "value": "*"
              },
              {
                "type": "SYMBOL",
                "name": "type"
              }
            ]
          }
        },
        {
          "type": "PREC",
          "value": -5,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "STRING",
                "value": "("
              },
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "SYMBOL",
                        "name": "type"
                      },
                      {
                        "type": "REPEAT",
                        "content": {
                          "type": "SEQ",
                          "members": [
                            {
                              "type": "STRING",
                              "value": ","
                            },
                            {
                              "type": "SYMBOL",
                              "name": "type"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  {
                    "type": "BLANK"
                  }
                ]
              },
              {
                "type": "STRING",
                "value": ")"
              },
              {
                "type": "STRING",
                "value": "->"
              },
              {
                "type": "SYMBOL",
                "name": "type"
              }
            ]
          }
        }
      ]
    },
    "typeArgumentList": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "<"
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "SYMBOL",
              "name": "type"
            },
            {
              "type": "REPEAT",
              "content": {
                "type": "SEQ",
                "members": [
                  {
                    "type": "STRING",
                    "value": ","
                  },
                  {
                    "type": "SYMBOL",
                    "name": "type"
                  }
                ]
              }
            }
          ]
        },
        {
          "type": "STRING",
          "value": ">"
        }
      ]
    },
    "typeParameterList": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "<"
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "SYMBOL",
              "name": "typeParameter"
            },
            {
              "type": "REPEAT",
              "content": {
                "type": "SEQ",
                "members": [
                  {
                    "type": "STRING",
                    "value": ","
                  },
                  {
                    "type": "SYMBOL",
                    "name": "typeParameter"
                  }
                ]
              }
            }
          ]
        },
        {
          "type": "STRING",
          "value": ">"
        }
      ]
    },
    "typeParameter": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "STRING",
                  "value": "in"
                },
                {
                  "type": "STRING",
                  "value": "out"
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "identifier"
        }
      ]
    },
    "parameterList": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "typedIdentifier"
                },
                {
                  "type": "REPEAT",
                  "content": {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "STRING",
                        "value": ","
                      },
                      {
                        "type": "SYMBOL",
                        "name": "typedIdentifier"
                      }
                    ]
                  }
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": ")"
        }
      ]
    },
    "argumentList": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "_expr"
                },
                {
                  "type": "REPEAT",
                  "content": {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "STRING",
                        "value": ","
                      },
                      {
                        "type": "SYMBOL",
                        "name": "_expr"
                      }
                    ]
                  }
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": ")"
        }
      ]
    },
    "modifier": {
      "type": "CHOICE",
      "members": [
        {
          "type": "STRING",
          "value": "external"
        },
        {
          "type": "STRING",
          "value": "abstract"
        },
        {
          "type": "STRING",
          "value": "open"
        },
        {
          "type": "STRING",
          "value": "local"
        },
        {
          "type": "STRING",
          "value": "hidden"
        },
        {
          "type": "STRING",
          "value": "fixed"
        },
        {
          "type": "STRING",
          "value": "const"
        }
      ]
    },
    "_expr": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "variableExpr"
        },
        {
          "type": "SYMBOL",
          "name": "variableObjectLiteral"
        },
        {
          "type": "SYMBOL",
          "name": "_expr2"
        }
      ]
    },
    "variableObjectLiteral": {
      "type": "PREC",
      "value": 2,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "SYMBOL",
            "name": "identifier"
          },
          {
            "type": "SYMBOL",
            "name": "objectBody"
          }
        ]
      }
    },
    "_expr2": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "parenthesizedExpr"
        },
        {
          "type": "SYMBOL",
          "name": "thisExpr"
        },
        {
          "type": "SYMBOL",
          "name": "outerExpr"
        },
        {
          "type": "SYMBOL",
          "name": "moduleExpr"
        },
        {
          "type": "SYMBOL",
          "name": "nullLiteral"
        },
        {
          "type": "SYMBOL",
          "name": "trueLiteral"
        },
        {
          "type": "SYMBOL",
          "name": "falseLiteral"
        },
        {
          "type": "SYMBOL",
          "name": "intLiteral"
        },
        {
          "type": "SYMBOL",
          "name": "floatLiteral"
        },
        {
          "type": "SYMBOL",
          "name": "slStringLiteral"
        },
        {
          "type": "SYMBOL",
          "name": "mlStringLiteral"
        },
        {
          "type": "SYMBOL",
          "name": "newExpr"
        },
        {
          "type": "SYMBOL",
          "name": "objectLiteral"
        },
        {
          "type": "SYMBOL",
          "name": "methodCallExpr"
        },
        {
          "type": "SYMBOL",
          "name": "propertyCallExpr"
        },
        {
          "type": "SYMBOL",
          "name": "subscriptExpr"
        },
        {
          "type": "SYMBOL",
          "name": "unaryExpr"
        },
        {
          "type": "SYMBOL",
          "name": "binaryExpr"
        },
        {
          "type": "SYMBOL",
          "name": "binaryExprRightAssoc"
        },
        {
          "type": "SYMBOL",
          "name": "isExpr"
        },
        {
          "type": "SYMBOL",
          "name": "asExpr"
        },
        {
          "type": "SYMBOL",
          "name": "ifExpr"
        },
        {
          "type": "SYMBOL",
          "name": "letExpr"
        },
        {
          "type": "SYMBOL",
          "name": "throwExpr"
        },
        {
          "type": "SYMBOL",
          "name": "traceExpr"
        },
        {
          "type": "SYMBOL",
          "name": "readExpr"
        },
        {
          "type": "SYMBOL",
          "name": "readOrNullExpr"
        },
        {
          "type": "SYMBOL",
          "name": "readGlobExpr"
        },
        {
          "type": "SYMBOL",
          "name": "importExpr"
        },
        {
          "type": "SYMBOL",
          "name": "importGlobExpr"
        },
        {
          "type": "SYMBOL",
          "name": "functionLiteral"
        }
      ]
    },
    "parenthesizedExpr": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "SYMBOL",
          "name": "_expr"
        },
        {
          "type": "STRING",
          "value": ")"
        }
      ]
    },
    "thisExpr": {
      "type": "STRING",
      "value": "this"
    },
    "outerExpr": {
      "type": "STRING",
      "value": "outer"
    },
    "moduleExpr": {
      "type": "STRING",
      "value": "module"
    },
    "variableExpr": {
      "type": "SYMBOL",
      "name": "identifier"
    },
    "nullLiteral": {
      "type": "STRING",
      "value": "null"
    },
    "trueLiteral": {
      "type": "STRING",
      "value": "true"
    },
    "falseLiteral": {
      "type": "STRING",
      "value": "false"
    },
    "intLiteral": {
      "type": "TOKEN",
      "content": {
        "type": "CHOICE",
        "members": [
          {
            "type": "SEQ",
            "members": [
              {
                "type": "PATTERN",
                "value": "\\d"
              },
              {
                "type": "PATTERN",
                "value": "[\\d_]*"
              }
            ]
          },
          {
            "type": "SEQ",
            "members": [
              {
                "type": "STRING",
                "value": "0x"
              },
              {
                "type": "PATTERN",
                "value": "[\\da-fA-F]"
              },
              {
                "type": "PATTERN",
                "value": "[\\da-fA-F_]*"
              }
            ]
          },
          {
            "type": "SEQ",
            "members": [
              {
                "type": "STRING",
                "value": "0b"
              },
              {
                "type": "PATTERN",
                "value": "[0-1]"
              },
              {
                "type": "PATTERN",
                "value": "[0-1_]*"
              }
            ]
          },
          {
            "type": "SEQ",
            "members": [
              {
                "type": "STRING",
                "value": "0o"
              },
              {
                "type": "PATTERN",
                "value": "[0-7]"
              },
              {
                "type": "PATTERN",
                "value": "[0-7_]*"
              }
            ]
          }
        ]
      }
    },
    "floatLiteral": {
      "type": "TOKEN",
      "content": {
        "type": "CHOICE",
        "members": [
          {
            "type": "SEQ",
            "members": [
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "PATTERN",
                        "value": "\\d"
                      },
                      {
                        "type": "PATTERN",
                        "value": "[\\d_]*"
                      }
                    ]
                  },
                  {
                    "type": "BLANK"
                  }
                ]
              },
              {
                "type": "STRING",
                "value": "."
              },
              {
                "type": "SEQ",
                "members": [
                  {
                    "type": "PATTERN",
                    "value": "\\d"
                  },
                  {
                    "type": "PATTERN",
                    "value": "[\\d_]*"
                  }
                ]
              },
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "CHOICE",
                        "members": [
                          {
                            "type": "STRING",
                            "value": "e"
                          },
                          {
                            "type": "STRING",
                            "value": "E"
                          }
                        ]
                      },
                      {
                        "type": "CHOICE",
                        "members": [
                          {
                            "type": "CHOICE",
                            "members": [
                              {
                                "type": "STRING",
                                "value": "+"
                              },
                              {
                                "type": "STRING",
                                "value": "-"
                              }
                            ]
                          },
                          {
                            "type": "BLANK"
                          }
                        ]
                      },
                      {
                        "type": "SEQ",
                        "members": [
                          {
                            "type": "PATTERN",
                            "value": "\\d"
                          },
                          {
                            "type": "PATTERN",
                            "value": "[\\d_]*"
                          }
                        ]
                      }
                    ]
                  },
                  {
                    "type": "BLANK"
                  }
                ]
              }
            ]
          },
          {
            "type": "SEQ",
            "members": [
              {
                "type": "SEQ",
                "members": [
                  {
                    "type": "PATTERN",
                    "value": "\\d"
                  },
                  {
                    "type": "PATTERN",
                    "value": "[\\d_]*"
                  }
                ]
              },
              {
                "type": "SEQ",
                "members": [
                  {
                    "type": "CHOICE",
                    "members": [
                      {
                        "type": "STRING",
                        "value": "e"
                      },
                      {
                        "type": "STRING",
                        "value": "E"
                      }
                    ]
                  },
                  {
                    "type": "CHOICE",
                    "members": [
                      {
                        "type": "CHOICE",
                        "members": [
                          {
                            "type": "STRING",
                            "value": "+"
                          },
                          {
                            "type": "STRING",
                            "value": "-"
                          }
                        ]
                      },
                      {
                        "type": "BLANK"
                      }
                    ]
                  },
                  {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "PATTERN",
                        "value": "\\d"
                      },
                      {
                        "type": "PATTERN",
                        "value": "[\\d_]*"
                      }
                    ]
                  }
                ]
              }
            ]
          }
        ]
      }
    },
    "stringConstant": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SEQ",
          "members": [
            {
              "type": "STRING",
              "value": "\""
            },
            {
              "type": "REPEAT",
              "content": {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "IMMEDIATE_TOKEN",
                    "content": {
                      "type": "PATTERN",
                      "value": "[^\"\\\\\\n\\r]+"
                    }
                  },
                  {
                    "type": "SYMBOL",
                    "name": "escapeSequence"
                  }
                ]
              }
            },
            {
              "type": "STRING",
              "value": "\""
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "STRING",
              "value": "#\""
            },
            {
              "type": "REPEAT",
              "content": {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "SYMBOL",
                    "name": "_sl1_string_chars"
                  },
                  {
                    "type": "ALIAS",
                    "content": {
                      "type": "SYMBOL",
                      "name": "escapeSequence1"
                    },
                    "named": true,
                    "value": "escapeSequence"
                  }
                ]
              }
            },
            {
              "type": "STRING",
              "value": "\"#"
            }
          ]
        }
      ]
    },
    "slStringLiteral": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SEQ",
          "members": [
            {
              "type": "STRING",
              "value": "\""
            },
            {
              "type": "REPEAT",
              "content": {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "IMMEDIATE_TOKEN",
                    "content": {
                      "type": "PATTERN",
                      "value": "[^\"\\\\\\n\\r]+"
                    }
                  },
                  {
                    "type": "SYMBOL",
                    "name": "escapeSequence"
                  },
                  {
                    "type": "SYMBOL",
                    "name": "interpolationExpr"
                  }
                ]
              }
            },
            {
              "type": "STRING",
              "value": "\""
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "STRING",
              "value": "#\""
            },
            {
              "type": "REPEAT",
              "content": {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "SYMBOL",
                    "name": "_sl1_string_chars"
                  },
                  {
                    "type": "ALIAS",
                    "content": {
                      "type": "SYMBOL",
                      "name": "escapeSequence1"
                    },
                    "named": true,
                    "value": "escapeSequence"
                  },
                  {
                    "type": "ALIAS",
                    "content": {
                      "type": "SYMBOL",
                      "name": "interpolationExpr1"
                    },
                    "named": true,
                    "value": "interpolationExpr"
                  }
                ]
              }
            },
            {
              "type": "STRING",
              "value": "\"#"
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "STRING",
              "value": "##\""
            },
            {
              "type": "REPEAT",
              "content": {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "SYMBOL",
                    "name": "_sl2_string_chars"
                  },
                  {
                    "type": "ALIAS",
                    "content": {
                      "type": "SYMBOL",
                      "name": "escapeSequence2"
                    },
                    "named": true,
                    "value": "escapeSequence"
                  },
                  {
                    "type": "ALIAS",
                    "content": {
                      "type": "SYMBOL",
                      "name": "interpolationExpr2"
                    },
                    "named": true,
                    "value": "interpolationExpr"
                  }
                ]
              }
            },
            {
              "type": "STRING",
              "value": "\"##"
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "STRING",
              "value": "###\""
            },
            {
              "type": "REPEAT",
              "content": {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "SYMBOL",
                    "name": "_sl3_string_chars"
                  },
                  {
                    "type": "ALIAS",
                    "content": {
                      "type": "SYMBOL",
                      "name": "escapeSequence3"
                    },
                    "named": true,
                    "value": "escapeSequence"
                  },
                  {
                    "type": "ALIAS",
                    "content": {
                      "type": "SYMBOL",
                      "name": "interpolationExpr3"
                    },
                    "named": true,
                    "value": "interpolationExpr"
                  }
                ]
              }
            },
            {
              "type": "STRING",
              "value": "\"###"
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "STRING",
              "value": "####\""
            },
            {
              "type": "REPEAT",
              "content": {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "SYMBOL",
                    "name": "_sl4_string_chars"
                  },
                  {
                    "type": "ALIAS",
                    "content": {
                      "type": "SYMBOL",
                      "name": "escapeSequence4"
                    },
                    "named": true,
                    "value": "escapeSequence"
                  },
                  {
                    "type": "ALIAS",
                    "content": {
                      "type": "SYMBOL",
                      "name": "interpolationExpr4"
                    },
                    "named": true,
                    "value": "interpolationExpr"
                  }
                ]
              }
            },
            {
              "type": "STRING",
              "value": "\"####"
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "STRING",
              "value": "#####\""
            },
            {
              "type": "REPEAT",
              "content": {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "SYMBOL",
                    "name": "_sl5_string_chars"
                  },
                  {
                    "type": "ALIAS",
                    "content": {
                      "type": "SYMBOL",
                      "name": "escapeSequence5"
                    },
                    "named": true,
                    "value": "escapeSequence"
                  },
                  {
                    "type": "ALIAS",
                    "content": {
                      "type": "SYMBOL",
                      "name": "interpolationExpr5"
                    },
                    "named": true,
                    "value": "interpolationExpr"
                  }
                ]
              }
            },
            {
              "type": "STRING",
              "value": "\"#####"
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "STRING",
              "value": "######\""
            },
            {
              "type": "REPEAT",
              "content": {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "SYMBOL",
                    "name": "_sl6_string_chars"
                  },
                  {
                    "type": "ALIAS",
                    "content": {
                      "type": "SYMBOL",
                      "name": "escapeSequence6"
                    },
                    "named": true,
                    "value": "escapeSequence"
                  },
                  {
                    "type": "ALIAS",
                    "content": {
                      "type": "SYMBOL",
                      "name": "interpolationExpr6"
                    },
                    "named": true,
                    "value": "interpolationExpr"
                  }
                ]
              }
            },
            {
              "type": "STRING",
              "value": "\"######"
            }
          ]
        }
      ]
    },
    "mlStringLiteral": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SEQ",
          "members": [
            {
              "type": "STRING",
              "value": "\"\"\""
            },
            {
              "type": "REPEAT",
              "content": {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "SYMBOL",
                    "name": "_ml_string_chars"
                  },
                  {
                    "type": "SYMBOL",
                    "name": "escapeSequence"
                  },
                  {
                    "type": "SYMBOL",
                    "name": "interpolationExpr"
                  }
                ]
              }
            },
            {
              "type": "STRING",
              "value": "\"\"\""
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "STRING",
              "value": "#\"\"\""
            },
            {
              "type": "REPEAT",
              "content": {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "SYMBOL",
                    "name": "_ml1_string_chars"
                  },
                  {
                    "type": "ALIAS",
                    "content": {
                      "type": "SYMBOL",
                      "name": "escapeSequence1"
                    },
                    "named": true,
                    "value": "escapeSequence"
                  },
                  {
                    "type": "ALIAS",
                    "content": {
                      "type": "SYMBOL",
                      "name": "interpolationExpr1"
                    },
                    "named": true,
                    "value": "interpolationExpr"
                  }
                ]
              }
            },
            {
              "type": "STRING",
              "value": "\"\"\"#"
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "STRING",
              "value": "##\"\"\""
            },
            {
              "type": "REPEAT",
              "content": {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "SYMBOL",
                    "name": "_ml2_string_chars"
                  },
                  {
                    "type": "ALIAS",
                    "content": {
                      "type": "SYMBOL",
                      "name": "escapeSequence2"
                    },
                    "named": true,
                    "value": "escapeSequence"
                  },
                  {
                    "type": "ALIAS",
                    "content": {
                      "type": "SYMBOL",
                      "name": "interpolationExpr2"
                    },
                    "named": true,
                    "value": "interpolationExpr"
                  }
                ]
              }
            },
            {
              "type": "STRING",
              "value": "\"\"\"##"
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "STRING",
              "value": "###\"\"\""
            },
            {
              "type": "REPEAT",
              "content": {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "SYMBOL",
                    "name": "_ml3_string_chars"
                  },
                  {
                    "type": "ALIAS",
                    "content": {
                      "type": "SYMBOL",
                      "name": "escapeSequence3"
                    },
                    "named": true,
                    "value": "escapeSequence"
                  },
                  {
                    "type": "ALIAS",
                    "content": {
                      "type": "SYMBOL",
                      "name": "interpolationExpr3"
                    },
                    "named": true,
                    "value": "interpolationExpr"
                  }
                ]
              }
            },
            {
              "type": "STRING",
              "value": "\"\"\"###"
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "STRING",
              "value": "####\"\"\""
            },
            {
              "type": "REPEAT",
              "content": {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "SYMBOL",
                    "name": "_ml4_string_chars"
                  },
                  {
                    "type": "ALIAS",
                    "content": {
                      "type": "SYMBOL",
                      "name": "escapeSequence4"
                    },
                    "named": true,
                    "value": "escapeSequence"
                  },
                  {
                    "type": "ALIAS",
                    "content": {
                      "type": "SYMBOL",
                      "name": "interpolationExpr4"
                    },
                    "named": true,
                    "value": "interpolationExpr"
                  }
                ]
              }
            },
            {
              "type": "STRING",
              "value": "\"\"\"####"
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "STRING",
              "value": "#####\"\"\""
            },
            {
              "type": "REPEAT",
              "content": {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "SYMBOL",
                    "name": "_ml5_string_chars"
                  },
                  {
                    "type": "ALIAS",
                    "content": {
                      "type": "SYMBOL",
                      "name": "escapeSequence5"
                    },
                    "named": true,
                    "value": "escapeSequence"
                  },
                  {
                    "type": "ALIAS",
                    "content": {
                      "type": "SYMBOL",
                      "name": "interpolationExpr5"
                    },
                    "named": true,
                    "value": "interpolationExpr"
                  }
                ]
              }
            },
            {
              "type": "STRING",
              "value": "\"\"\"#####"
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "STRING",
              "value": "######\"\"\""
            },
            {
              "type": "REPEAT",
              "content": {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "SYMBOL",
                    "name": "_ml6_string_chars"
                  },
                  {
                    "type": "ALIAS",
                    "content": {
                      "type": "SYMBOL",
                      "name": "escapeSequence6"
                    },
                    "named": true,
                    "value": "escapeSequence"
                  },
                  {
                    "type": "ALIAS",
                    "content": {
                      "type": "SYMBOL",
                      "name": "interpolationExpr6"
                    },
                    "named": true,
                    "value": "interpolationExpr"
                  }
                ]
              }
            },
            {
              "type": "STRING",
              "value": "\"\"\"######"
            }
          ]
        }
      ]
    },
    "escapeSequence": {
      "type": "IMMEDIATE_TOKEN",
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "STRING",
            "value": "\\"
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "PATTERN",
                "value": "[tnr\\\\\"]"
              },
              {
                "type": "PATTERN",
                "value": "u\\{[0-9a-fA-F]+\\}"
              }
            ]
          }
        ]
      }
    },
    "escapeSequence1": {
      "type": "IMMEDIATE_TOKEN",
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "STRING",
            "value": "\\#"
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "PATTERN",
                "value": "[tnr\\\\\"]"
              },
              {
                "type": "PATTERN",
                "value": "u\\{[0-9a-fA-F]+\\}"
              }
            ]
          }
        ]
      }
    },
    "escapeSequence2": {
      "type": "IMMEDIATE_TOKEN",
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "STRING",
            "value": "\\##"
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "PATTERN",
                "value": "[tnr\\\\\"]"
              },
              {
                "type": "PATTERN",
                "value": "u\\{[0-9a-fA-F]+\\}"
              }
            ]
          }
        ]
      }
    },
    "escapeSequence3": {
      "type": "IMMEDIATE_TOKEN",
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "STRING",
            "value": "\\###"
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "PATTERN",
                "value": "[tnr\\\\\"]"
              },
              {
                "type": "PATTERN",
                "value": "u\\{[0-9a-fA-F]+\\}"
              }
            ]
          }
        ]
      }
    },
    "escapeSequence4": {
      "type": "IMMEDIATE_TOKEN",
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "STRING",
            "value": "\\####"
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "PATTERN",
                "value": "[tnr\\\\\"]"
              },
              {
                "type": "PATTERN",
                "value": "u\\{[0-9a-fA-F]+\\}"
              }
            ]
          }
        ]
      }
    },
    "escapeSequence5": {
      "type": "IMMEDIATE_TOKEN",
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "STRING",
            "value": "\\#####"
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "PATTERN",
                "value": "[tnr\\\\\"]"
              },
              {
                "type": "PATTERN",
                "value": "u\\{[0-9a-fA-F]+\\}"
              }
            ]
          }
        ]
      }
    },
    "escapeSequence6": {
      "type": "IMMEDIATE_TOKEN",
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "STRING",
            "value": "\\######"
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "PATTERN",
                "value": "[tnr\\\\\"]"
              },
              {
                "type": "PATTERN",
                "value": "u\\{[0-9a-fA-F]+\\}"
              }
            ]
          }
        ]
      }
    },
    "interpolationExpr": {
      "type": "SEQ",
      "members": [
        {
          "type": "IMMEDIATE_TOKEN",
          "content": {
            "type": "STRING",
            "value": "\\("
          }
        },
        {
          "type": "SYMBOL",
          "name": "_expr"
        },
        {
          "type": "STRING",
          "value": ")"
        }
      ]
    },
    "interpolationExpr1": {
      "type": "SEQ",
      "members": [
        {
          "type": "IMMEDIATE_TOKEN",
          "content": {
            "type": "STRING",
            "value": "\\#("
          }
        },
        {
          "type": "SYMBOL",
          "name": "_expr"
        },
        {
          "type": "STRING",
          "value": ")"
        }
      ]
    },
    "interpolationExpr2": {
      "type": "SEQ",
      "members": [
        {
          "type": "IMMEDIATE_TOKEN",
          "content": {
            "type": "STRING",
            "value": "\\##("
          }
        },
        {
          "type": "SYMBOL",
          "name": "_expr"
        },
        {
          "type": "STRING",
          "value": ")"
        }
      ]
    },
    "interpolationExpr3": {
      "type": "SEQ",
      "members": [
        {
          "type": "IMMEDIATE_TOKEN",
          "content": {
            "type": "STRING",
            "value": "\\###("
          }
        },
        {
          "type": "SYMBOL",
          "name": "_expr"
        },
        {
          "type": "STRING",
          "value": ")"
        }
      ]
    },
    "interpolationExpr4": {
      "type": "SEQ",
      "members": [
        {
          "type": "IMMEDIATE_TOKEN",
          "content": {
            "type": "STRING",
            "value": "\\####("
          }
        },
        {
          "type": "SYMBOL",
          "name": "_expr"
        },
        {
          "type": "STRING",
          "value": ")"
        }
      ]
    },
    "interpolationExpr5": {
      "type": "SEQ",
      "members": [
        {
          "type": "IMMEDIATE_TOKEN",
          "content": {
            "type": "STRING",
            "value": "\\#####("
          }
        },
        {
          "type": "SYMBOL",
          "name": "_expr"
        },
        {
          "type": "STRING",
          "value": ")"
        }
      ]
    },
    "interpolationExpr6": {
      "type": "SEQ",
      "members": [
        {
          "type": "IMMEDIATE_TOKEN",
          "content": {
            "type": "STRING",
            "value": "\\######("
          }
        },
        {
          "type": "SYMBOL",
          "name": "_expr"
        },
        {
          "type": "STRING",
          "value": ")"
        }
      ]
    },
    "newExpr": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "new"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "type"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "objectBody"
        }
      ]
    },
    "objectLiteral": {
      "type": "PREC",
      "value": 1,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "SYMBOL",
            "name": "_expr2"
          },
          {
            "type": "SYMBOL",
            "name": "objectBody"
          }
        ]
      }
    },
    "methodCallExpr": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "STRING",
                      "value": "super"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "_expr"
                    }
                  ]
                },
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "STRING",
                      "value": "."
                    },
                    {
                      "type": "STRING",
                      "value": "?."
                    }
                  ]
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "identifier"
        },
        {
          "type": "SYMBOL",
          "name": "argumentList"
        }
      ]
    },
    "propertyCallExpr": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": "super"
            },
            {
              "type": "SYMBOL",
              "name": "_expr"
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": "."
            },
            {
              "type": "STRING",
              "value": "?."
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "identifier"
        }
      ]
    },
    "subscriptExpr": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": "super"
            },
            {
              "type": "SYMBOL",
              "name": "_expr"
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "_open_square_bracket"
        },
        {
          "type": "SYMBOL",
          "name": "_expr"
        },
        {
          "type": "STRING",
          "value": "]"
        }
      ]
    },
    "unaryExpr": {
      "type": "CHOICE",
      "members": [
        {
          "type": "PREC_LEFT",
          "value": 20,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "SYMBOL",
                "name": "_expr"
              },
              {
                "type": "STRING",
                "value": "!!"
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 20,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "STRING",
                "value": "-"
              },
              {
                "type": "SYMBOL",
                "name": "_expr"
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 19,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "STRING",
                "value": "!"
              },
              {
                "type": "SYMBOL",
                "name": "_expr"
              }
            ]
          }
        }
      ]
    },
    "binaryExprRightAssoc": {
      "type": "CHOICE",
      "members": [
        {
          "type": "PREC_RIGHT",
          "value": 18,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "SYMBOL",
                "name": "_expr"
              },
              {
                "type": "STRING",
                "value": "**"
              },
              {
                "type": "SYMBOL",
                "name": "_expr"
              }
            ]
          }
        },
        {
          "type": "PREC_RIGHT",
          "value": 8,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "SYMBOL",
                "name": "_expr"
              },
              {
                "type": "STRING",
                "value": "??"
              },
              {
                "type": "SYMBOL",
                "name": "_expr"
              }
            ]
          }
        }
      ]
    },
    "binaryExpr": {
      "type": "CHOICE",
      "members": [
        {
          "type": "PREC_LEFT",
          "value": 17,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "SYMBOL",
                "name": "_expr"
              },
              {
                "type": "STRING",
                "value": "*"
              },
              {
                "type": "SYMBOL",
                "name": "_expr"
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 17,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "SYMBOL",
                "name": "_expr"
              },
              {
                "type": "STRING",
                "value": "/"
              },
              {
                "type": "SYMBOL",
                "name": "_expr"
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 17,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "SYMBOL",
                "name": "_expr"
              },
              {
                "type": "STRING",
                "value": "~/"
              },
              {
                "type": "SYMBOL",
                "name": "_expr"
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 17,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "SYMBOL",
                "name": "_expr"
              },
              {
                "type": "STRING",
                "value": "%"
              },
              {
                "type": "SYMBOL",
                "name": "_expr"
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 16,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "SYMBOL",
                "name": "_expr"
              },
              {
                "type": "STRING",
                "value": "+"
              },
              {
                "type": "SYMBOL",
                "name": "_expr"
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 16,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "SYMBOL",
                "name": "_expr"
              },
              {
                "type": "STRING",
                "value": "-"
              },
              {
                "type": "SYMBOL",
                "name": "_expr"
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 15,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "SYMBOL",
                "name": "_expr"
              },
              {
                "type": "STRING",
                "value": "<"
              },
              {
                "type": "SYMBOL",
                "name": "_expr"
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 15,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "SYMBOL",
                "name": "_expr"
              },
              {
                "type": "STRING",
                "value": "<="
              },
              {
                "type": "SYMBOL",
                "name": "_expr"
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 15,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "SYMBOL",
                "name": "_expr"
              },
              {
                "type": "STRING",
                "value": ">="
              },
              {
                "type": "SYMBOL",
                "name": "_expr"
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 15,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "SYMBOL",
                "name": "_expr"
              },
              {
                "type": "STRING",
                "value": ">"
              },
              {
                "type": "SYMBOL",
                "name": "_expr"
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 12,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "SYMBOL",
                "name": "_expr"
              },
              {
                "type": "STRING",
                "value": "=="
              },
              {
                "type": "SYMBOL",
                "name": "_expr"
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 12,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "SYMBOL",
                "name": "_expr"
              },
              {
                "type": "STRING",
                "value": "!="
              },
              {
                "type": "SYMBOL",
                "name": "_expr"
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 11,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "SYMBOL",
                "name": "_expr"
              },
              {
                "type": "STRING",
                "value": "&&"
              },
              {
                "type": "SYMBOL",
                "name": "_expr"
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 10,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "SYMBOL",
                "name": "_expr"
              },
              {
                "type": "STRING",
                "value": "||"
              },
              {
                "type": "SYMBOL",
                "name": "_expr"
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 9,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "SYMBOL",
                "name": "_expr"
              },
              {
                "type": "STRING",
                "value": "|>"
              },
              {
                "type": "SYMBOL",
                "name": "_expr"
              }
            ]
          }
        }
      ]
    },
    "isExpr": {
      "type": "PREC",
      "value": 14,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "SYMBOL",
            "name": "_expr"
          },
          {
            "type": "STRING",
            "value": "is"
          },
          {
            "type": "SYMBOL",
            "name": "type"
          }
        ]
      }
    },
    "asExpr": {
      "type": "PREC",
      "value": 14,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "SYMBOL",
            "name": "_expr"
          },
          {
            "type": "STRING",
            "value": "as"
          },
          {
            "type": "SYMBOL",
            "name": "type"
          }
        ]
      }
    },
    "ifExpr": {
      "type": "PREC",
      "value": -4,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "STRING",
            "value": "if"
          },
          {
            "type": "STRING",
            "value": "("
          },
          {
            "type": "SYMBOL",
            "name": "_expr"
          },
          {
            "type": "STRING",
            "value": ")"
          },
          {
            "type": "SYMBOL",
            "name": "_expr"
          },
          {
            "type": "STRING",
            "value": "else"
          },
          {
            "type": "SYMBOL",
            "name": "_expr"
          }
        ]
      }
    },
    "letExpr": {
      "type": "PREC",
      "value": -5,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "STRING",
            "value": "let"
          },
          {
            "type": "STRING",
            "value": "("
          },
          {
            "type": "SYMBOL",
            "name": "typedIdentifier"
          },
          {
            "type": "STRING",
            "value": "="
          },
          {
            "type": "SYMBOL",
            "name": "_expr"
          },
          {
            "type": "STRING",
            "value": ")"
          },
          {
            "type": "SYMBOL",
            "name": "_expr"
          }
        ]
      }
    },
    "throwExpr": {
      "type": "PREC",
      "value": -6,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "STRING",
            "value": "throw"
          },
          {
            "type": "SYMBOL",
            "name": "_expr"
          }
        ]
      }
    },
    "traceExpr": {
      "type": "PREC",
      "value": -7,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "STRING",
            "value": "trace"
          },
          {
            "type": "SYMBOL",
            "name": "_expr"
          }
        ]
      }
    },
    "readExpr": {
      "type": "PREC",
      "value": -8,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "STRING",
            "value": "read"
          },
          {
            "type": "SYMBOL",
            "name": "_expr"
          }
        ]
      }
    },
    "readOrNullExpr": {
      "type": "PREC",
      "value": -9,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "STRING",
            "value": "read?"
          },
          {
            "type": "SYMBOL",
            "name": "_expr"
          }
        ]
      }
    },
    "readGlobExpr": {
      "type": "PREC",
      "value": -10,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "STRING",
            "value": "read*"
          },
          {
            "type": "SYMBOL",
            "name": "_expr"
          }
        ]
      }
    },
    "importExpr": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "import"
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "STRING",
              "value": "("
            },
            {
              "type": "SYMBOL",
              "name": "stringConstant"
            },
            {
              "type": "STRING",
              "value": ")"
            }
          ]
        }
      ]
    },
    "importGlobExpr": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "import*"
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "STRING",
              "value": "("
            },
            {
              "type": "SYMBOL",
              "name": "stringConstant"
            },
            {
              "type": "STRING",
              "value": ")"
            }
          ]
        }
      ]
    },
    "functionLiteral": {
      "type": "PREC",
      "value": -11,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "SYMBOL",
            "name": "parameterList"
          },
          {
            "type": "STRING",
            "value": "->"
          },
          {
            "type": "SYMBOL",
            "name": "_expr"
          }
        ]
      }
    },
    "qualifiedIdentifier": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "identifier"
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "STRING",
                "value": "."
              },
              {
                "type": "SYMBOL",
                "name": "identifier"
              }
            ]
          }
        }
      ]
    },
    "typedIdentifier": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "identifier"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "typeAnnotation"
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "identifier": {
      "type": "TOKEN",
      "content": {
        "type": "CHOICE",
        "members": [
          {
            "type": "SEQ",
            "members": [
              {
                "type": "PATTERN",
                "value": "[^\\s0-9:;`\"'@#.,|^&<=>+\\-*/\\\\%?!~()\\[\\]{}\\uFEFF\\u2060\\u200B\\u00A0]"
              },
              {
                "type": "REPEAT",
                "content": {
                  "type": "PATTERN",
                  "value": "[^\\s:;`\"'@#.,|^&<=>+\\-*/\\\\%?!~()\\[\\]{}\\uFEFF\\u2060\\u200B\\u00A0]"
                }
              }
            ]
          },
          {
            "type": "PATTERN",
            "value": "`[^`]*`"
          }
        ]
      }
    },
    "lineComment": {
      "type": "TOKEN",
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "STRING",
            "value": "//"
          },
          {
            "type": "PATTERN",
            "value": ".*"
          }
        ]
      }
    },
    "docComment": {
      "type": "TOKEN",
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "STRING",
            "value": "///"
          },
          {
            "type": "PATTERN",
            "value": ".*"
          }
        ]
      }
    },
    "blockComment": {
      "type": "TOKEN",
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "STRING",
            "value": "/*"
          },
          {
            "type": "PATTERN",
            "value": "[^*]*\\*+([^/*][^*]*\\*+)*"
          },
          {
            "type": "STRING",
            "value": "/"
          }
        ]
      }
    }
  },
  "extras": [
    {
      "type": "SYMBOL",
      "name": "lineComment"
    },
    {
      "type": "SYMBOL",
      "name": "docComment"
    },
    {
      "type": "SYMBOL",
      "name": "blockComment"
    },
    {
      "type": "PATTERN",
      "value": "[ \\t\\f\\r\\n;]"
    }
  ],
  "conflicts": [
    [
      "objectProperty",
      "subscriptExpr"
    ],
    [
      "objectMethod",
      "subscriptExpr"
    ],
    [
      "objectEntry",
      "subscriptExpr"
    ],
    [
      "objectPredicate",
      "subscriptExpr"
    ],
    [
      "propertyCallExpr",
      "methodCallExpr"
    ],
    [
      "variableExpr",
      "methodCallExpr"
    ],
    [
      "variableExpr",
      "typedIdentifier"
    ],
    [
      "objectElement",
      "_expr"
    ],
    [
      "qualifiedIdentifier"
    ],
    [
      "type"
    ]
  ],
  "precedences": [],
  "externals": [
    {
      "type": "SYMBOL",
      "name": "_sl1_string_chars"
    },
    {
      "type": "SYMBOL",
      "name": "_sl2_string_chars"
    },
    {
      "type": "SYMBOL",
      "name": "_sl3_string_chars"
    },
    {
      "type": "SYMBOL",
      "name": "_sl4_string_chars"
    },
    {
      "type": "SYMBOL",
      "name": "_sl5_string_chars"
    },
    {
      "type": "SYMBOL",
      "name": "_sl6_string_chars"
    },
    {
      "type": "SYMBOL",
      "name": "_ml_string_chars"
    },
    {
      "type": "SYMBOL",
      "name": "_ml1_string_chars"
    },
    {
      "type": "SYMBOL",
      "name": "_ml2_string_chars"
    },
    {
      "type": "SYMBOL",
      "name": "_ml3_string_chars"
    },
    {
      "type": "SYMBOL",
      "name": "_ml4_string_chars"
    },
    {
      "type": "SYMBOL",
      "name": "_ml5_string_chars"
    },
    {
      "type": "SYMBOL",
      "name": "_ml6_string_chars"
    },
    {
      "type": "SYMBOL",
      "name": "_open_square_bracket"
    },
    {
      "type": "SYMBOL",
      "name": "_open_entry_bracket"
    }
  ],
  "inline": [],
  "supertypes": []
}

