{
  "name": "janet",
  "word": "symbol",
  "rules": {
    "source_file": {
      "type": "REPEAT",
      "content": {
        "type": "SYMBOL",
        "name": "_expr"
      }
    },
    "line_comment": {
      "type": "TOKEN",
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "STRING",
            "value": "#"
          },
          {
            "type": "PATTERN",
            "value": ".*"
          }
        ]
      }
    },
    "_expr": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "_literals"
        },
        {
          "type": "SYMBOL",
          "name": "_identifier"
        },
        {
          "type": "SYMBOL",
          "name": "_special_forms"
        },
        {
          "type": "SYMBOL",
          "name": "_shorthand"
        },
        {
          "type": "SYMBOL",
          "name": "_specials"
        },
        {
          "type": "SYMBOL",
          "name": "array"
        },
        {
          "type": "SYMBOL",
          "name": "sqr_array"
        },
        {
          "type": "SYMBOL",
          "name": "tuple"
        },
        {
          "type": "SYMBOL",
          "name": "sqr_tuple"
        },
        {
          "type": "SYMBOL",
          "name": "struct"
        },
        {
          "type": "SYMBOL",
          "name": "table"
        },
        {
          "type": "SYMBOL",
          "name": "peg_set"
        }
      ]
    },
    "tuple": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "FIELD",
            "name": "item",
            "content": {
              "type": "SYMBOL",
              "name": "_expr"
            }
          }
        },
        {
          "type": "STRING",
          "value": ")"
        }
      ]
    },
    "sqr_tuple": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "["
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "FIELD",
            "name": "item",
            "content": {
              "type": "SYMBOL",
              "name": "_expr"
            }
          }
        },
        {
          "type": "STRING",
          "value": "]"
        }
      ]
    },
    "array": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "@("
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "FIELD",
            "name": "item",
            "content": {
              "type": "SYMBOL",
              "name": "_expr"
            }
          }
        },
        {
          "type": "STRING",
          "value": ")"
        }
      ]
    },
    "sqr_array": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "@["
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "FIELD",
            "name": "item",
            "content": {
              "type": "SYMBOL",
              "name": "_expr"
            }
          }
        },
        {
          "type": "STRING",
          "value": "]"
        }
      ]
    },
    "struct": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "{"
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "_struct_tables_commom"
          }
        },
        {
          "type": "STRING",
          "value": "}"
        }
      ]
    },
    "table": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "@{"
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SYMBOL",
            "name": "_struct_tables_commom"
          }
        },
        {
          "type": "STRING",
          "value": "}"
        }
      ]
    },
    "_struct_tables_commom": {
      "type": "SEQ",
      "members": [
        {
          "type": "FIELD",
          "name": "key",
          "content": {
            "type": "SYMBOL",
            "name": "_expr"
          }
        },
        {
          "type": "FIELD",
          "name": "value",
          "content": {
            "type": "SYMBOL",
            "name": "_expr"
          }
        }
      ]
    },
    "peg_set": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "STRING",
          "value": "set"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "str_literal"
            },
            {
              "type": "SYMBOL",
              "name": "long_str_literal"
            },
            {
              "type": "SYMBOL",
              "name": "quote"
            },
            {
              "type": "SYMBOL",
              "name": "short_quote"
            }
          ]
        },
        {
          "type": "STRING",
          "value": ")"
        }
      ]
    },
    "_special_forms": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "def"
        },
        {
          "type": "SYMBOL",
          "name": "var"
        },
        {
          "type": "SYMBOL",
          "name": "quote"
        },
        {
          "type": "SYMBOL",
          "name": "splice"
        },
        {
          "type": "SYMBOL",
          "name": "quasiquote"
        },
        {
          "type": "SYMBOL",
          "name": "unquote"
        },
        {
          "type": "SYMBOL",
          "name": "break"
        },
        {
          "type": "SYMBOL",
          "name": "set"
        },
        {
          "type": "SYMBOL",
          "name": "if"
        },
        {
          "type": "SYMBOL",
          "name": "do"
        },
        {
          "type": "SYMBOL",
          "name": "while"
        },
        {
          "type": "SYMBOL",
          "name": "fn"
        },
        {
          "type": "SYMBOL",
          "name": "upscope"
        }
      ]
    },
    "def": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "STRING",
          "value": "def"
        },
        {
          "type": "FIELD",
          "name": "name",
          "content": {
            "type": "SYMBOL",
            "name": "_expr"
          }
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "FIELD",
            "name": "metadata",
            "content": {
              "type": "SYMBOL",
              "name": "metadata"
            }
          }
        },
        {
          "type": "FIELD",
          "name": "value",
          "content": {
            "type": "SYMBOL",
            "name": "_expr"
          }
        },
        {
          "type": "STRING",
          "value": ")"
        }
      ]
    },
    "var": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "STRING",
          "value": "var"
        },
        {
          "type": "FIELD",
          "name": "name",
          "content": {
            "type": "SYMBOL",
            "name": "_expr"
          }
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "FIELD",
            "name": "metadata",
            "content": {
              "type": "SYMBOL",
              "name": "metadata"
            }
          }
        },
        {
          "type": "FIELD",
          "name": "value",
          "content": {
            "type": "SYMBOL",
            "name": "_expr"
          }
        },
        {
          "type": "STRING",
          "value": ")"
        }
      ]
    },
    "quote": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "STRING",
          "value": "quote"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_expr"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": ")"
        }
      ]
    },
    "splice": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "STRING",
          "value": "splice"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_expr"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": ")"
        }
      ]
    },
    "quasiquote": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "STRING",
          "value": "quasiquote"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_expr"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": ")"
        }
      ]
    },
    "unquote": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "STRING",
          "value": "unquote"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_expr"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": ")"
        }
      ]
    },
    "break": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "STRING",
          "value": "break"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SYMBOL",
              "name": "_expr"
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": ")"
        }
      ]
    },
    "set": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "STRING",
          "value": "set"
        },
        {
          "type": "FIELD",
          "name": "l_value",
          "content": {
            "type": "SYMBOL",
            "name": "_expr"
          }
        },
        {
          "type": "FIELD",
          "name": "r_value",
          "content": {
            "type": "SYMBOL",
            "name": "_expr"
          }
        },
        {
          "type": "STRING",
          "value": ")"
        }
      ]
    },
    "if": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "STRING",
          "value": "if"
        },
        {
          "type": "FIELD",
          "name": "condition",
          "content": {
            "type": "SYMBOL",
            "name": "_expr"
          }
        },
        {
          "type": "FIELD",
          "name": "then",
          "content": {
            "type": "SYMBOL",
            "name": "_expr"
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "FIELD",
              "name": "else",
              "content": {
                "type": "SYMBOL",
                "name": "_expr"
              }
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": ")"
        }
      ]
    },
    "do": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "STRING",
          "value": "do"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "FIELD",
              "name": "body",
              "content": {
                "type": "SYMBOL",
                "name": "body"
              }
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": ")"
        }
      ]
    },
    "while": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "STRING",
          "value": "while"
        },
        {
          "type": "FIELD",
          "name": "condition",
          "content": {
            "type": "SYMBOL",
            "name": "_expr"
          }
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "FIELD",
            "name": "form",
            "content": {
              "type": "SYMBOL",
              "name": "_expr"
            }
          }
        },
        {
          "type": "STRING",
          "value": ")"
        }
      ]
    },
    "fn": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "STRING",
          "value": "fn"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "FIELD",
              "name": "name",
              "content": {
                "type": "SYMBOL",
                "name": "_name"
              }
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "FIELD",
          "name": "parameters",
          "content": {
            "type": "SYMBOL",
            "name": "_parameters"
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "FIELD",
              "name": "body",
              "content": {
                "type": "SYMBOL",
                "name": "body"
              }
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": ")"
        }
      ]
    },
    "upscope": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "STRING",
          "value": "upscope"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "FIELD",
              "name": "body",
              "content": {
                "type": "SYMBOL",
                "name": "body"
              }
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": ")"
        }
      ]
    },
    "_parameters": {
      "type": "PREC",
      "value": 1,
      "content": {
        "type": "CHOICE",
        "members": [
          {
            "type": "SYMBOL",
            "name": "_identifier"
          },
          {
            "type": "SYMBOL",
            "name": "quote"
          },
          {
            "type": "SYMBOL",
            "name": "splice"
          },
          {
            "type": "SYMBOL",
            "name": "quasiquote"
          },
          {
            "type": "SYMBOL",
            "name": "unquote"
          },
          {
            "type": "SYMBOL",
            "name": "short_quote"
          },
          {
            "type": "SYMBOL",
            "name": "short_splice"
          },
          {
            "type": "SYMBOL",
            "name": "short_quasiquote"
          },
          {
            "type": "SYMBOL",
            "name": "short_unquote"
          },
          {
            "type": "SYMBOL",
            "name": "parameters"
          },
          {
            "type": "SYMBOL",
            "name": "tuple_parameters"
          }
        ]
      }
    },
    "parameters": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "["
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "FIELD",
            "name": "parameter",
            "content": {
              "type": "SYMBOL",
              "name": "_expr"
            }
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "SYMBOL",
                      "name": "variadic_marker"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "optional_marker"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "keys_marker"
                    }
                  ]
                },
                {
                  "type": "REPEAT",
                  "content": {
                    "type": "FIELD",
                    "name": "parameter",
                    "content": {
                      "type": "SYMBOL",
                      "name": "_expr"
                    }
                  }
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": "]"
        }
      ]
    },
    "tuple_parameters": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "FIELD",
            "name": "parameter",
            "content": {
              "type": "SYMBOL",
              "name": "_expr"
            }
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "SYMBOL",
                      "name": "variadic_marker"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "optional_marker"
                    },
                    {
                      "type": "SYMBOL",
                      "name": "keys_marker"
                    }
                  ]
                },
                {
                  "type": "REPEAT",
                  "content": {
                    "type": "FIELD",
                    "name": "parameter",
                    "content": {
                      "type": "SYMBOL",
                      "name": "_expr"
                    }
                  }
                }
              ]
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": ")"
        }
      ]
    },
    "variadic_marker": {
      "type": "STRING",
      "value": "&"
    },
    "optional_marker": {
      "type": "STRING",
      "value": "&opt"
    },
    "keys_marker": {
      "type": "STRING",
      "value": "&keys"
    },
    "_shorthand": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "short_quote"
        },
        {
          "type": "SYMBOL",
          "name": "short_splice"
        },
        {
          "type": "SYMBOL",
          "name": "short_quasiquote"
        },
        {
          "type": "SYMBOL",
          "name": "short_unquote"
        },
        {
          "type": "SYMBOL",
          "name": "short_fn"
        }
      ]
    },
    "short_quote": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "'"
        },
        {
          "type": "SYMBOL",
          "name": "_expr"
        }
      ]
    },
    "short_splice": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": ";"
        },
        {
          "type": "SYMBOL",
          "name": "_expr"
        }
      ]
    },
    "short_quasiquote": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "~"
        },
        {
          "type": "SYMBOL",
          "name": "_expr"
        }
      ]
    },
    "short_unquote": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": ","
        },
        {
          "type": "SYMBOL",
          "name": "_expr"
        }
      ]
    },
    "short_fn": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "|"
        },
        {
          "type": "FIELD",
          "name": "body",
          "content": {
            "type": "SYMBOL",
            "name": "_expr"
          }
        }
      ]
    },
    "_specials": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "extra_defs"
        }
      ]
    },
    "extra_defs": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "("
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "STRING",
              "value": "defn"
            },
            {
              "type": "STRING",
              "value": "defn-"
            },
            {
              "type": "STRING",
              "value": "varfn"
            },
            {
              "type": "STRING",
              "value": "varfn-"
            },
            {
              "type": "STRING",
              "value": "defmacro"
            },
            {
              "type": "STRING",
              "value": "defmacro-"
            }
          ]
        },
        {
          "type": "FIELD",
          "name": "name",
          "content": {
            "type": "SYMBOL",
            "name": "_name"
          }
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "FIELD",
            "name": "metadata",
            "content": {
              "type": "SYMBOL",
              "name": "metadata"
            }
          }
        },
        {
          "type": "FIELD",
          "name": "parameters",
          "content": {
            "type": "SYMBOL",
            "name": "_parameters"
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "FIELD",
              "name": "body",
              "content": {
                "type": "SYMBOL",
                "name": "body"
              }
            },
            {
              "type": "BLANK"
            }
          ]
        },
        {
          "type": "STRING",
          "value": ")"
        }
      ]
    },
    "_literals": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "bool_literal"
        },
        {
          "type": "SYMBOL",
          "name": "nil_literal"
        },
        {
          "type": "SYMBOL",
          "name": "number_literal"
        },
        {
          "type": "SYMBOL",
          "name": "str_literal"
        },
        {
          "type": "SYMBOL",
          "name": "long_str_literal"
        },
        {
          "type": "SYMBOL",
          "name": "buffer_literal"
        },
        {
          "type": "SYMBOL",
          "name": "long_buffer_literal"
        }
      ]
    },
    "str_literal": {
      "type": "TOKEN",
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "STRING",
            "value": "\""
          },
          {
            "type": "REPEAT",
            "content": {
              "type": "CHOICE",
              "members": [
                {
                  "type": "PATTERN",
                  "value": "[^\"\\\\]+"
                },
                {
                  "type": "PATTERN",
                  "value": "\\\\[^xu]"
                },
                {
                  "type": "PATTERN",
                  "value": "\\\\u[0-9a-fA-F]{4}"
                },
                {
                  "type": "PATTERN",
                  "value": "\\\\u{[0-9a-fA-F]+}"
                },
                {
                  "type": "PATTERN",
                  "value": "\\\\x[0-9a-fA-F]{2}"
                }
              ]
            }
          },
          {
            "type": "STRING",
            "value": "\""
          }
        ]
      }
    },
    "long_str_literal": {
      "type": "SYMBOL",
      "name": "_long_str"
    },
    "buffer_literal": {
      "type": "TOKEN",
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "STRING",
            "value": "@\""
          },
          {
            "type": "REPEAT",
            "content": {
              "type": "CHOICE",
              "members": [
                {
                  "type": "PATTERN",
                  "value": "[^\"\\\\]+"
                },
                {
                  "type": "PATTERN",
                  "value": "\\\\[^xu]"
                },
                {
                  "type": "PATTERN",
                  "value": "\\\\u[0-9a-fA-F]{4}"
                },
                {
                  "type": "PATTERN",
                  "value": "\\\\u{[0-9a-fA-F]+}"
                },
                {
                  "type": "PATTERN",
                  "value": "\\\\x[0-9a-fA-F]{2}"
                }
              ]
            }
          },
          {
            "type": "STRING",
            "value": "\""
          }
        ]
      }
    },
    "long_buffer_literal": {
      "type": "SYMBOL",
      "name": "_long_buffer"
    },
    "number_literal": {
      "type": "CHOICE",
      "members": [
        {
          "type": "PATTERN",
          "value": "[-+]?(\\d[_\\d]*|\\d[_\\d]*\\.[_\\d]*|\\.[_\\d]+)([eE&][+-]?[\\d]+)?"
        },
        {
          "type": "PATTERN",
          "value": "[-+]?0x([_\\da-fA-F]+|[_\\da-fA-F]+\\.[_\\da-fA-F]*|\\.[_\\da-fA-F]+)(&[+-]?[\\da-fA-F]+)?"
        },
        {
          "type": "PATTERN",
          "value": "[-+]?\\d\\d?r([_\\w]+|[_\\w]+\\.[_\\w]*|\\.[_\\w]+)(&[+-]?[\\w]+)?"
        }
      ]
    },
    "bool_literal": {
      "type": "CHOICE",
      "members": [
        {
          "type": "STRING",
          "value": "true"
        },
        {
          "type": "STRING",
          "value": "false"
        }
      ]
    },
    "nil_literal": {
      "type": "STRING",
      "value": "nil"
    },
    "escape_sequence": {
      "type": "IMMEDIATE_TOKEN",
      "content": {
        "type": "CHOICE",
        "members": [
          {
            "type": "PATTERN",
            "value": "\\\\[^xu]"
          },
          {
            "type": "PATTERN",
            "value": "\\\\u[0-9a-fA-F]{4}"
          },
          {
            "type": "PATTERN",
            "value": "\\\\u{[0-9a-fA-F]+}"
          },
          {
            "type": "PATTERN",
            "value": "\\\\x[0-9a-fA-F]{2}"
          }
        ]
      }
    },
    "metadata": {
      "type": "PREC_LEFT",
      "value": 2,
      "content": {
        "type": "CHOICE",
        "members": [
          {
            "type": "SYMBOL",
            "name": "keyword"
          },
          {
            "type": "SYMBOL",
            "name": "str_literal"
          },
          {
            "type": "SYMBOL",
            "name": "long_str_literal"
          },
          {
            "type": "SYMBOL",
            "name": "struct"
          },
          {
            "type": "SYMBOL",
            "name": "quote"
          },
          {
            "type": "SYMBOL",
            "name": "splice"
          },
          {
            "type": "SYMBOL",
            "name": "quasiquote"
          },
          {
            "type": "SYMBOL",
            "name": "unquote"
          },
          {
            "type": "SYMBOL",
            "name": "short_quote"
          },
          {
            "type": "SYMBOL",
            "name": "short_splice"
          },
          {
            "type": "SYMBOL",
            "name": "short_quasiquote"
          },
          {
            "type": "SYMBOL",
            "name": "short_unquote"
          }
        ]
      }
    },
    "_name": {
      "type": "PREC",
      "value": 3,
      "content": {
        "type": "CHOICE",
        "members": [
          {
            "type": "SYMBOL",
            "name": "_identifier"
          },
          {
            "type": "SYMBOL",
            "name": "quote"
          },
          {
            "type": "SYMBOL",
            "name": "splice"
          },
          {
            "type": "SYMBOL",
            "name": "quasiquote"
          },
          {
            "type": "SYMBOL",
            "name": "unquote"
          },
          {
            "type": "SYMBOL",
            "name": "short_quote"
          },
          {
            "type": "SYMBOL",
            "name": "short_splice"
          },
          {
            "type": "SYMBOL",
            "name": "short_quasiquote"
          },
          {
            "type": "SYMBOL",
            "name": "short_unquote"
          }
        ]
      }
    },
    "doc_str": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "str_literal"
        },
        {
          "type": "SYMBOL",
          "name": "long_str_literal"
        }
      ]
    },
    "body": {
      "type": "REPEAT1",
      "content": {
        "type": "FIELD",
        "name": "form",
        "content": {
          "type": "SYMBOL",
          "name": "_expr"
        }
      }
    },
    "_identifier": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "symbol"
        },
        {
          "type": "SYMBOL",
          "name": "keyword"
        }
      ]
    },
    "keyword": {
      "type": "PATTERN",
      "value": ":[^({\\[\"'|`;,~\\]}\\s)]*"
    },
    "symbol": {
      "type": "PATTERN",
      "value": "[^({\\[\"'|`;,~\\]}\\s):][^({\\[\"'|`;,~\\]}\\s)]*"
    }
  },
  "extras": [
    {
      "type": "PATTERN",
      "value": "\\s"
    },
    {
      "type": "SYMBOL",
      "name": "line_comment"
    }
  ],
  "conflicts": [],
  "precedences": [],
  "externals": [
    {
      "type": "SYMBOL",
      "name": "_long_str"
    },
    {
      "type": "SYMBOL",
      "name": "_long_buffer"
    }
  ],
  "inline": [],
  "supertypes": [
    "_expr",
    "_literals",
    "_special_forms",
    "_shorthand",
    "_specials",
    "_identifier"
  ]
}

