{
  "$schema": "https://tree-sitter.github.io/tree-sitter/assets/schemas/grammar.schema.json",
  "name": "cedar",
  "word": "identifier",
  "rules": {
    "policy_set": {
      "type": "REPEAT",
      "content": {
        "type": "SYMBOL",
        "name": "policy"
      }
    },
    "policy": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "template_declaration"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "annotation"
          }
        },
        {
          "type": "SYMBOL",
          "name": "effect"
        },
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "SYMBOL",
          "name": "scope"
        },
        {
          "type": "STRING",
          "value": ")"
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "condition"
          }
        },
        {
          "type": "STRING",
          "value": ";"
        }
      ]
    },
    "template_declaration": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "template"
        },
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "slot"
                },
                {
                  "type": "REPEAT",
                  "content": {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "STRING",
                        "value": ","
                      },
                      {
                        "type": "SYMBOL",
                        "name": "slot"
                      }
                    ]
                  }
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": ")"
        },
        {
          "type": "STRING",
          "value": "=>"
        }
      ]
    },
    "effect": {
      "type": "CHOICE",
      "members": [
        {
          "type": "STRING",
          "value": "permit"
        },
        {
          "type": "STRING",
          "value": "forbid"
        }
      ]
    },
    "annotation": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "@"
        },
        {
          "type": "SYMBOL",
          "name": "identifier"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "STRING",
                  "value": "("
                },
                {
                  "type": "SYMBOL",
                  "name": "string"
                },
                {
                  "type": "STRING",
                  "value": ")"
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "scope": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "principal"
        },
        {
          "type": "STRING",
          "value": ","
        },
        {
          "type": "SYMBOL",
          "name": "action"
        },
        {
          "type": "STRING",
          "value": ","
        },
        {
          "type": "SYMBOL",
          "name": "resource"
        }
      ]
    },
    "principal": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "principal"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "scope_constraint"
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "action": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "action"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "scope_constraint"
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "resource": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "resource"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "scope_constraint"
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "scope_constraint": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SEQ",
          "members": [
            {
              "type": "STRING",
              "value": "=="
            },
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "entity_reference"
                },
                {
                  "type": "SYMBOL",
                  "name": "slot"
                }
              ]
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "STRING",
              "value": "in"
            },
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "entity_reference"
                },
                {
                  "type": "SYMBOL",
                  "name": "entity_list"
                },
                {
                  "type": "SYMBOL",
                  "name": "slot"
                }
              ]
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "STRING",
              "value": "is"
            },
            {
              "type": "SYMBOL",
              "name": "name"
            },
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "SEQ",
                  "members": [
                    {
                      "type": "STRING",
                      "value": "in"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "entity_reference"
                    }
                  ]
                },
                {
                  "type": "BLANK"
                }
              ]
            }
          ]
        }
      ]
    },
    "condition": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": "when"
            },
            {
              "type": "STRING",
              "value": "unless"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "{"
        },
        {
          "type": "SYMBOL",
          "name": "expression"
        },
        {
          "type": "STRING",
          "value": "}"
        }
      ]
    },
    "expression": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "if_expression"
        },
        {
          "type": "SYMBOL",
          "name": "or_expression"
        }
      ]
    },
    "if_expression": {
      "type": "PREC_RIGHT",
      "value": 0,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "STRING",
            "value": "if"
          },
          {
            "type": "SYMBOL",
            "name": "expression"
          },
          {
            "type": "STRING",
            "value": "then"
          },
          {
            "type": "SYMBOL",
            "name": "expression"
          },
          {
            "type": "STRING",
            "value": "else"
          },
          {
            "type": "SYMBOL",
            "name": "expression"
          }
        ]
      }
    },
    "or_expression": {
      "type": "PREC_LEFT",
      "value": 1,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "SYMBOL",
            "name": "and_expression"
          },
          {
            "type": "REPEAT",
            "content": {
              "type": "SEQ",
              "members": [
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "STRING",
                      "value": "||"
                    },
                    {
                      "type": "STRING",
                      "value": "|"
                    }
                  ]
                },
                {
                  "type": "SYMBOL",
                  "name": "and_expression"
                }
              ]
            }
          }
        ]
      }
    },
    "and_expression": {
      "type": "PREC_LEFT",
      "value": 2,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "SYMBOL",
            "name": "relation_expression"
          },
          {
            "type": "REPEAT",
            "content": {
              "type": "SEQ",
              "members": [
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "STRING",
                      "value": "&&"
                    },
                    {
                      "type": "STRING",
                      "value": "&"
                    }
                  ]
                },
                {
                  "type": "SYMBOL",
                  "name": "relation_expression"
                }
              ]
            }
          }
        ]
      }
    },
    "relation_expression": {
      "type": "CHOICE",
      "members": [
        {
          "type": "PREC_LEFT",
          "value": 3,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "SYMBOL",
                "name": "_add_expression"
              },
              {
                "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": "SYMBOL",
                "name": "_add_expression"
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 3,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "SYMBOL",
                "name": "_add_expression"
              },
              {
                "type": "STRING",
                "value": "has"
              },
              {
                "type": "SYMBOL",
                "name": "_add_expression"
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 3,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "SYMBOL",
                "name": "_add_expression"
              },
              {
                "type": "STRING",
                "value": "like"
              },
              {
                "type": "SYMBOL",
                "name": "string"
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 3,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "SYMBOL",
                "name": "_add_expression"
              },
              {
                "type": "STRING",
                "value": "is"
              },
              {
                "type": "SYMBOL",
                "name": "name"
              },
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "STRING",
                        "value": "in"
                      },
                      {
                        "type": "SYMBOL",
                        "name": "_add_expression"
                      }
                    ]
                  },
                  {
                    "type": "BLANK"
                  }
                ]
              }
            ]
          }
        },
        {
          "type": "PREC_LEFT",
          "value": 3,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "SYMBOL",
                "name": "_add_expression"
              },
              {
                "type": "STRING",
                "value": "in"
              },
              {
                "type": "SYMBOL",
                "name": "_add_expression"
              }
            ]
          }
        },
        {
          "type": "SYMBOL",
          "name": "_add_expression"
        }
      ]
    },
    "_add_expression": {
      "type": "PREC_LEFT",
      "value": 4,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "SYMBOL",
            "name": "_multiply_expression"
          },
          {
            "type": "REPEAT",
            "content": {
              "type": "SEQ",
              "members": [
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "STRING",
                      "value": "+"
                    },
                    {
                      "type": "STRING",
                      "value": "-"
                    }
                  ]
                },
                {
                  "type": "SYMBOL",
                  "name": "_multiply_expression"
                }
              ]
            }
          }
        ]
      }
    },
    "_multiply_expression": {
      "type": "PREC_LEFT",
      "value": 5,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "SYMBOL",
            "name": "unary_expression"
          },
          {
            "type": "REPEAT",
            "content": {
              "type": "SEQ",
              "members": [
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "STRING",
                      "value": "*"
                    },
                    {
                      "type": "STRING",
                      "value": "/"
                    },
                    {
                      "type": "STRING",
                      "value": "%"
                    }
                  ]
                },
                {
                  "type": "SYMBOL",
                  "name": "unary_expression"
                }
              ]
            }
          }
        ]
      }
    },
    "unary_expression": {
      "type": "CHOICE",
      "members": [
        {
          "type": "PREC",
          "value": 6,
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "CHOICE",
                "members": [
                  {
                    "type": "STRING",
                    "value": "!"
                  },
                  {
                    "type": "STRING",
                    "value": "-"
                  }
                ]
              },
              {
                "type": "SYMBOL",
                "name": "unary_expression"
              }
            ]
          }
        },
        {
          "type": "SYMBOL",
          "name": "member_expression"
        }
      ]
    },
    "member_expression": {
      "type": "PREC_LEFT",
      "value": 7,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "SYMBOL",
            "name": "_primary"
          },
          {
            "type": "REPEAT",
            "content": {
              "type": "SYMBOL",
              "name": "_accessor"
            }
          }
        ]
      }
    },
    "_accessor": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "field_access"
        },
        {
          "type": "SYMBOL",
          "name": "method_call"
        },
        {
          "type": "SYMBOL",
          "name": "index_access"
        }
      ]
    },
    "field_access": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "."
        },
        {
          "type": "SYMBOL",
          "name": "identifier"
        }
      ]
    },
    "method_call": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "."
        },
        {
          "type": "SYMBOL",
          "name": "identifier"
        },
        {
          "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": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": ")"
        }
      ]
    },
    "index_access": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "["
        },
        {
          "type": "SYMBOL",
          "name": "string"
        },
        {
          "type": "STRING",
          "value": "]"
        }
      ]
    },
    "_primary": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "true"
        },
        {
          "type": "SYMBOL",
          "name": "false"
        },
        {
          "type": "SYMBOL",
          "name": "integer"
        },
        {
          "type": "SYMBOL",
          "name": "string"
        },
        {
          "type": "SYMBOL",
          "name": "slot"
        },
        {
          "type": "SYMBOL",
          "name": "entity_reference"
        },
        {
          "type": "SYMBOL",
          "name": "extension_call"
        },
        {
          "type": "SYMBOL",
          "name": "parenthesized_expression"
        },
        {
          "type": "SYMBOL",
          "name": "list_expression"
        },
        {
          "type": "SYMBOL",
          "name": "record_expression"
        },
        {
          "type": "SYMBOL",
          "name": "variable"
        },
        {
          "type": "SYMBOL",
          "name": "identifier"
        }
      ]
    },
    "extension_call": {
      "type": "PREC",
      "value": 8,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "SYMBOL",
            "name": "name"
          },
          {
            "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": "BLANK"
              }
            ]
          },
          {
            "type": "STRING",
            "value": ")"
          }
        ]
      }
    },
    "parenthesized_expression": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "SYMBOL",
          "name": "expression"
        },
        {
          "type": "STRING",
          "value": ")"
        }
      ]
    },
    "list_expression": {
      "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": "BLANK"
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": ","
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "]"
        }
      ]
    },
    "record_expression": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "{"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "record_entry"
                },
                {
                  "type": "REPEAT",
                  "content": {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "STRING",
                        "value": ","
                      },
                      {
                        "type": "SYMBOL",
                        "name": "record_entry"
                      }
                    ]
                  }
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": ","
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "}"
        }
      ]
    },
    "record_entry": {
      "type": "SEQ",
      "members": [
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "identifier"
            },
            {
              "type": "SYMBOL",
              "name": "string"
            }
          ]
        },
        {
          "type": "STRING",
          "value": ":"
        },
        {
          "type": "SYMBOL",
          "name": "expression"
        }
      ]
    },
    "entity_reference": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "identifier"
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "STRING",
                "value": "::"
              },
              {
                "type": "SYMBOL",
                "name": "identifier"
              }
            ]
          }
        },
        {
          "type": "STRING",
          "value": "::"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "string"
            },
            {
              "type": "SYMBOL",
              "name": "entity_record"
            }
          ]
        }
      ]
    },
    "entity_record": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "{"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "SYMBOL",
                  "name": "ref_init"
                },
                {
                  "type": "REPEAT",
                  "content": {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "STRING",
                        "value": ","
                      },
                      {
                        "type": "SYMBOL",
                        "name": "ref_init"
                      }
                    ]
                  }
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": ","
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "}"
        }
      ]
    },
    "ref_init": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "identifier"
        },
        {
          "type": "STRING",
          "value": ":"
        },
        {
          "type": "SYMBOL",
          "name": "_literal"
        }
      ]
    },
    "_literal": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "true"
        },
        {
          "type": "SYMBOL",
          "name": "false"
        },
        {
          "type": "SYMBOL",
          "name": "integer"
        },
        {
          "type": "SYMBOL",
          "name": "string"
        }
      ]
    },
    "entity_list": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "["
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "SYMBOL",
              "name": "entity_reference"
            },
            {
              "type": "REPEAT",
              "content": {
                "type": "SEQ",
                "members": [
                  {
                    "type": "STRING",
                    "value": ","
                  },
                  {
                    "type": "SYMBOL",
                    "name": "entity_reference"
                  }
                ]
              }
            }
          ]
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": ","
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "]"
        }
      ]
    },
    "name": {
      "type": "PREC_RIGHT",
      "value": 0,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "SYMBOL",
            "name": "identifier"
          },
          {
            "type": "REPEAT",
            "content": {
              "type": "SEQ",
              "members": [
                {
                  "type": "STRING",
                  "value": "::"
                },
                {
                  "type": "SYMBOL",
                  "name": "identifier"
                }
              ]
            }
          }
        ]
      }
    },
    "slot": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "?"
        },
        {
          "type": "SYMBOL",
          "name": "identifier"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "STRING",
                  "value": ":"
                },
                {
                  "type": "SYMBOL",
                  "name": "type_reference"
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "type_reference": {
      "type": "PREC_LEFT",
      "value": 0,
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "SYMBOL",
            "name": "name"
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "SEQ",
                "members": [
                  {
                    "type": "STRING",
                    "value": "<"
                  },
                  {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "SYMBOL",
                        "name": "type_reference"
                      },
                      {
                        "type": "REPEAT",
                        "content": {
                          "type": "SEQ",
                          "members": [
                            {
                              "type": "STRING",
                              "value": ","
                            },
                            {
                              "type": "SYMBOL",
                              "name": "type_reference"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  {
                    "type": "STRING",
                    "value": ">"
                  }
                ]
              },
              {
                "type": "BLANK"
              }
            ]
          }
        ]
      }
    },
    "variable": {
      "type": "CHOICE",
      "members": [
        {
          "type": "STRING",
          "value": "principal"
        },
        {
          "type": "STRING",
          "value": "action"
        },
        {
          "type": "STRING",
          "value": "resource"
        },
        {
          "type": "STRING",
          "value": "context"
        }
      ]
    },
    "true": {
      "type": "STRING",
      "value": "true"
    },
    "false": {
      "type": "STRING",
      "value": "false"
    },
    "integer": {
      "type": "TOKEN",
      "content": {
        "type": "PATTERN",
        "value": "[0-9]+"
      }
    },
    "string_content": {
      "type": "IMMEDIATE_TOKEN",
      "content": {
        "type": "PATTERN",
        "value": "[^\"\\\\\\r\\n]+"
      }
    },
    "string": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "\""
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "CHOICE",
            "members": [
              {
                "type": "SYMBOL",
                "name": "string_content"
              },
              {
                "type": "SYMBOL",
                "name": "escape_sequence"
              }
            ]
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "IMMEDIATE_TOKEN",
              "content": {
                "type": "STRING",
                "value": "\""
              }
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "escape_sequence": {
      "type": "IMMEDIATE_TOKEN",
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "STRING",
            "value": "\\"
          },
          {
            "type": "CHOICE",
            "members": [
              {
                "type": "PATTERN",
                "value": "[^xu]"
              },
              {
                "type": "PATTERN",
                "value": "x[0-9a-fA-F]{2}"
              },
              {
                "type": "PATTERN",
                "value": "u\\{[0-9a-fA-F]+\\}"
              }
            ]
          }
        ]
      }
    },
    "identifier": {
      "type": "TOKEN",
      "content": {
        "type": "PATTERN",
        "value": "[_a-zA-Z][_a-zA-Z0-9]*"
      }
    },
    "comment": {
      "type": "TOKEN",
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "STRING",
            "value": "//"
          },
          {
            "type": "PATTERN",
            "value": ".*"
          }
        ]
      }
    }
  },
  "extras": [
    {
      "type": "PATTERN",
      "value": "\\s"
    },
    {
      "type": "SYMBOL",
      "name": "comment"
    }
  ],
  "conflicts": [],
  "precedences": [],
  "externals": [],
  "inline": [],
  "supertypes": [],
  "reserved": {}
}