{
  "name": "biber",
  "rules": {
    "program": {
      "type": "REPEAT",
      "content": {
        "type": "CHOICE",
        "members": [
          {
            "type": "SYMBOL",
            "name": "_command_or_entry"
          },
          {
            "type": "SYMBOL",
            "name": "comment"
          },
          {
            "type": "SYMBOL",
            "name": "junk"
          }
        ]
      }
    },
    "comment": {
      "type": "TOKEN",
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "STRING",
            "value": "%"
          },
          {
            "type": "PATTERN",
            "value": ".*"
          }
        ]
      }
    },
    "junk": {
      "type": "SEQ",
      "members": [
        {
          "type": "PATTERN",
          "value": "[^%@\\s\\n\\t\\r]"
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "PATTERN",
            "value": "[^%@\\n]+\\n"
          }
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "PATTERN",
              "value": "[^%@\\n]+"
            },
            {
              "type": "BLANK"
            }
          ]
        }
      ]
    },
    "_command_or_entry": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "comment_command"
        },
        {
          "type": "SYMBOL",
          "name": "preamble_command"
        },
        {
          "type": "SYMBOL",
          "name": "string_command"
        },
        {
          "type": "SYMBOL",
          "name": "entry"
        }
      ]
    },
    "comment_command": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "@"
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "PATTERN",
            "value": "[cC][oO][mM][mM][eE][nN][tT]"
          },
          "named": true,
          "value": "name"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "STRING",
                  "value": "{"
                },
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "ALIAS",
                      "content": {
                        "type": "SYMBOL",
                        "name": "text_brace_balanced"
                      },
                      "named": true,
                      "value": "comment"
                    },
                    {
                      "type": "BLANK"
                    }
                  ]
                },
                {
                  "type": "STRING",
                  "value": "}"
                }
              ]
            },
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "STRING",
                  "value": "("
                },
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "ALIAS",
                      "content": {
                        "type": "SYMBOL",
                        "name": "text_paren_balanced"
                      },
                      "named": true,
                      "value": "comment"
                    },
                    {
                      "type": "BLANK"
                    }
                  ]
                },
                {
                  "type": "STRING",
                  "value": ")"
                }
              ]
            }
          ]
        }
      ]
    },
    "string_command": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "@"
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "PATTERN",
            "value": "[sS][tT][rR][iI][nN][gG]"
          },
          "named": true,
          "value": "name"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "STRING",
                  "value": "{"
                },
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "SEQ",
                      "members": [
                        {
                          "type": "SYMBOL",
                          "name": "identifier"
                        },
                        {
                          "type": "STRING",
                          "value": "="
                        },
                        {
                          "type": "SYMBOL",
                          "name": "value"
                        }
                      ]
                    },
                    {
                      "type": "BLANK"
                    }
                  ]
                },
                {
                  "type": "STRING",
                  "value": "}"
                }
              ]
            },
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "STRING",
                  "value": "("
                },
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "SEQ",
                      "members": [
                        {
                          "type": "SYMBOL",
                          "name": "identifier"
                        },
                        {
                          "type": "STRING",
                          "value": "="
                        },
                        {
                          "type": "SYMBOL",
                          "name": "value"
                        }
                      ]
                    },
                    {
                      "type": "BLANK"
                    }
                  ]
                },
                {
                  "type": "STRING",
                  "value": ")"
                }
              ]
            }
          ]
        }
      ]
    },
    "preamble_command": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "@"
        },
        {
          "type": "ALIAS",
          "content": {
            "type": "PATTERN",
            "value": "[pP][rR][eE][aA][mM][bB][lL][eE]"
          },
          "named": true,
          "value": "name"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "STRING",
                  "value": "{"
                },
                {
                  "type": "SYMBOL",
                  "name": "value"
                },
                {
                  "type": "STRING",
                  "value": "}"
                }
              ]
            },
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "STRING",
                  "value": "("
                },
                {
                  "type": "SYMBOL",
                  "name": "value"
                },
                {
                  "type": "STRING",
                  "value": ")"
                }
              ]
            }
          ]
        }
      ]
    },
    "entry": {
      "type": "SEQ",
      "members": [
        {
          "type": "STRING",
          "value": "@"
        },
        {
          "type": "SYMBOL",
          "name": "name"
        },
        {
          "type": "CHOICE",
          "members": [
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "STRING",
                  "value": "{"
                },
                {
                  "type": "SYMBOL",
                  "name": "key"
                },
                {
                  "type": "REPEAT",
                  "content": {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "STRING",
                        "value": ","
                      },
                      {
                        "type": "SYMBOL",
                        "name": "field"
                      }
                    ]
                  }
                },
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "STRING",
                      "value": ","
                    },
                    {
                      "type": "BLANK"
                    }
                  ]
                },
                {
                  "type": "STRING",
                  "value": "}"
                }
              ]
            },
            {
              "type": "SEQ",
              "members": [
                {
                  "type": "STRING",
                  "value": "("
                },
                {
                  "type": "SYMBOL",
                  "name": "key"
                },
                {
                  "type": "REPEAT",
                  "content": {
                    "type": "SEQ",
                    "members": [
                      {
                        "type": "STRING",
                        "value": ","
                      },
                      {
                        "type": "SYMBOL",
                        "name": "field"
                      }
                    ]
                  }
                },
                {
                  "type": "CHOICE",
                  "members": [
                    {
                      "type": "STRING",
                      "value": ","
                    },
                    {
                      "type": "BLANK"
                    }
                  ]
                },
                {
                  "type": "STRING",
                  "value": ")"
                }
              ]
            }
          ]
        }
      ]
    },
    "key": {
      "type": "PATTERN",
      "value": "[^\\\"\\#%'\\(\\),=\\{\\}\\\\\\~\\s\\t\\n]+"
    },
    "name": {
      "type": "PATTERN",
      "value": "[^\\\"\\#%'\\(\\),=\\{\\}\\\\\\~\\s\\t\\n]+"
    },
    "field": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "identifier"
        },
        {
          "type": "STRING",
          "value": "="
        },
        {
          "type": "SYMBOL",
          "name": "value"
        }
      ]
    },
    "identifier": {
      "type": "TOKEN",
      "content": {
        "type": "SEQ",
        "members": [
          {
            "type": "PATTERN",
            "value": "[^0-9\\\"\\#%'\\(\\),=\\{\\}\\\\\\~\\s\\t\\n]"
          },
          {
            "type": "REPEAT",
            "content": {
              "type": "PATTERN",
              "value": "[^\\\"\\#%'\\(\\),=\\{\\}\\\\\\~\\s\\t\\n]"
            }
          }
        ]
      }
    },
    "value": {
      "type": "SEQ",
      "members": [
        {
          "type": "SYMBOL",
          "name": "_token"
        },
        {
          "type": "REPEAT",
          "content": {
            "type": "SEQ",
            "members": [
              {
                "type": "STRING",
                "value": "#"
              },
              {
                "type": "SYMBOL",
                "name": "_token"
              }
            ]
          }
        }
      ]
    },
    "_token": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SYMBOL",
          "name": "string"
        },
        {
          "type": "SYMBOL",
          "name": "integer"
        },
        {
          "type": "SYMBOL",
          "name": "identifier"
        }
      ]
    },
    "integer": {
      "type": "PATTERN",
      "value": "[0-9]+"
    },
    "string": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SEQ",
          "members": [
            {
              "type": "STRING",
              "value": "{"
            },
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "ALIAS",
                  "content": {
                    "type": "SYMBOL",
                    "name": "text_brace_balanced"
                  },
                  "named": true,
                  "value": "text"
                },
                {
                  "type": "BLANK"
                }
              ]
            },
            {
              "type": "STRING",
              "value": "}"
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "STRING",
              "value": "\""
            },
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "ALIAS",
                  "content": {
                    "type": "SYMBOL",
                    "name": "text_quote_balanced"
                  },
                  "named": true,
                  "value": "text"
                },
                {
                  "type": "BLANK"
                }
              ]
            },
            {
              "type": "STRING",
              "value": "\""
            }
          ]
        },
        {
          "type": "SEQ",
          "members": [
            {
              "type": "STRING",
              "value": "'"
            },
            {
              "type": "CHOICE",
              "members": [
                {
                  "type": "ALIAS",
                  "content": {
                    "type": "SYMBOL",
                    "name": "text_quote_balanced"
                  },
                  "named": true,
                  "value": "text"
                },
                {
                  "type": "BLANK"
                }
              ]
            },
            {
              "type": "STRING",
              "value": "'"
            }
          ]
        }
      ]
    },
    "text_brace_balanced": {
      "type": "REPEAT1",
      "content": {
        "type": "SYMBOL",
        "name": "_brace_balanced"
      }
    },
    "text_quote_balanced": {
      "type": "REPEAT1",
      "content": {
        "type": "SYMBOL",
        "name": "_quote_balanced"
      }
    },
    "text_paren_balanced": {
      "type": "REPEAT1",
      "content": {
        "type": "SYMBOL",
        "name": "_paren_balanced"
      }
    },
    "_brace_balanced": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SEQ",
          "members": [
            {
              "type": "STRING",
              "value": "{"
            },
            {
              "type": "REPEAT",
              "content": {
                "type": "SYMBOL",
                "name": "_brace_balanced"
              }
            },
            {
              "type": "STRING",
              "value": "}"
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "_brace_text"
        }
      ]
    },
    "_quote_balanced": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SEQ",
          "members": [
            {
              "type": "STRING",
              "value": "{"
            },
            {
              "type": "REPEAT",
              "content": {
                "type": "SYMBOL",
                "name": "_brace_balanced"
              }
            },
            {
              "type": "STRING",
              "value": "}"
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "_quote_text"
        }
      ]
    },
    "_paren_balanced": {
      "type": "CHOICE",
      "members": [
        {
          "type": "SEQ",
          "members": [
            {
              "type": "STRING",
              "value": "("
            },
            {
              "type": "REPEAT",
              "content": {
                "type": "SYMBOL",
                "name": "_paren_balanced"
              }
            },
            {
              "type": "STRING",
              "value": ")"
            }
          ]
        },
        {
          "type": "SYMBOL",
          "name": "_paren_text"
        }
      ]
    },
    "_brace_text": {
      "type": "PATTERN",
      "value": "[^\\{\\}]+"
    },
    "_quote_text": {
      "type": "PATTERN",
      "value": "[^\\\"\\{\\}]+"
    },
    "_paren_text": {
      "type": "PATTERN",
      "value": "[^\\(\\)]+"
    }
  },
  "extras": [
    {
      "type": "PATTERN",
      "value": "[\\s\\n\\t\\r]"
    },
    {
      "type": "SYMBOL",
      "name": "comment"
    }
  ],
  "conflicts": [],
  "externals": [],
  "inline": [],
  "supertypes": []
}

