tree-sitter-biber
Version:
Tree sitter grammar for biber
758 lines (756 loc) • 17.1 kB
JSON
{
"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": []
}