{
"$schema": "https://tree-sitter.github.io/tree-sitter/assets/schemas/grammar.schema.json",
"name": "mdn",
"word": "ident",
"rules": {
"doc": {
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "macro_tag"
},
{
"type": "SYMBOL",
"name": "text"
}
]
}
},
"macro_tag": {
"type": "SEQ",
"members": [
{
"type": "IMMEDIATE_TOKEN",
"content": {
"type": "STRING",
"value": "{{"
}
},
{
"type": "SYMBOL",
"name": "ident"
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "args"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "}}"
}
]
},
"text": {
"type": "TOKEN",
"content": {
"type": "REPEAT1",
"content": {
"type": "CHOICE",
"members": [
{
"type": "PATTERN",
"value": "[^{]"
},
{
"type": "PATTERN",
"value": "\\\\\\{"
},
{
"type": "PATTERN",
"value": "\\{\\{ *\\}\\}"
},
{
"type": "PATTERN",
"value": "\\{\\{ *[^a-zA-Z_ ][^}]*\\}\\}"
},
{
"type": "PATTERN",
"value": "\\{[^{]"
}
]
}
}
},
"args": {
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_arg"
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ")"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "SYMBOL",
"name": "none"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "SYMBOL",
"name": "_arg"
},
{
"type": "STRING",
"value": ","
}
]
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_arg"
},
{
"type": "STRING",
"value": ","
}
]
},
{
"type": "SYMBOL",
"name": "none"
}
]
}
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_arg"
},
{
"type": "SYMBOL",
"name": "none"
},
{
"type": "STRING",
"value": ")"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_arg"
},
{
"type": "STRING",
"value": ")"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "none"
},
{
"type": "STRING",
"value": ")"
},
{
"type": "ALIAS",
"content": {
"type": "STRING",
"value": ")"
},
"named": true,
"value": "none"
}
]
}
]
}
]
}
]
},
"_arg": {
"type": "CHOICE",
"members": [
{
"type": "ALIAS",
"content": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "\"\""
},
{
"type": "STRING",
"value": "''"
}
]
},
"named": true,
"value": "none"
},
{
"type": "SYMBOL",
"name": "string"
},
{
"type": "SYMBOL",
"name": "float"
},
{
"type": "SYMBOL",
"name": "int"
},
{
"type": "SYMBOL",
"name": "boolean"
}
]
},
"boolean": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "true"
},
{
"type": "STRING",
"value": "false"
}
]
},
"none": {
"type": "PREC",
"value": 1,
"content": {
"type": "STRING",
"value": ","
}
},
"ident": {
"type": "PATTERN",
"value": "[a-zA-Z_][a-zA-Z0-9_\\-]*"
},
"int": {
"type": "TOKEN",
"content": {
"type": "CHOICE",
"members": [
{
"type": "PATTERN",
"value": "-?0"
},
{
"type": "PATTERN",
"value": "-?[1-9]\\d*"
}
]
}
},
"float": {
"type": "TOKEN",
"content": {
"type": "CHOICE",
"members": [
{
"type": "PATTERN",
"value": "-?0\\.\\d+"
},
{
"type": "PATTERN",
"value": "-?[1-9]\\d*\\.\\d+"
}
]
}
},
"string": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "double_quoted_string"
},
{
"type": "SYMBOL",
"name": "single_quoted_string"
},
{
"type": "SYMBOL",
"name": "backquoted_quoted_string"
}
]
},
"double_quoted_string": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "\""
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_dq_char"
}
},
{
"type": "STRING",
"value": "\""
}
]
},
"single_quoted_string": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "'"
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_sq_char"
}
},
{
"type": "STRING",
"value": "'"
}
]
},
"backquoted_quoted_string": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "`"
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_bq_char"
}
},
{
"type": "STRING",
"value": "`"
}
]
},
"_dq_char": {
"type": "IMMEDIATE_TOKEN",
"content": {
"type": "CHOICE",
"members": [
{
"type": "PATTERN",
"value": "[^\"\\\\]"
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "\\"
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "\""
},
{
"type": "STRING",
"value": "\\"
},
{
"type": "STRING",
"value": "/"
},
{
"type": "STRING",
"value": "b"
},
{
"type": "STRING",
"value": "f"
},
{
"type": "STRING",
"value": "n"
},
{
"type": "STRING",
"value": "r"
},
{
"type": "STRING",
"value": "t"
}
]
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "\\u"
},
{
"type": "PATTERN",
"value": "[0-9A-Fa-f]{4}"
}
]
}
]
}
},
"_sq_char": {
"type": "IMMEDIATE_TOKEN",
"content": {
"type": "CHOICE",
"members": [
{
"type": "PATTERN",
"value": "[^'\\\\]"
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "\\"
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "'"
},
{
"type": "STRING",
"value": "\\"
},
{
"type": "STRING",
"value": "/"
},
{
"type": "STRING",
"value": "b"
},
{
"type": "STRING",
"value": "f"
},
{
"type": "STRING",
"value": "n"
},
{
"type": "STRING",
"value": "r"
},
{
"type": "STRING",
"value": "t"
}
]
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "\\u"
},
{
"type": "PATTERN",
"value": "[0-9A-Fa-f]{4}"
}
]
}
]
}
},
"_bq_char": {
"type": "IMMEDIATE_TOKEN",
"content": {
"type": "CHOICE",
"members": [
{
"type": "PATTERN",
"value": "[^`\\\\]"
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "\\"
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "`"
},
{
"type": "STRING",
"value": "\\"
},
{
"type": "STRING",
"value": "/"
},
{
"type": "STRING",
"value": "b"
},
{
"type": "STRING",
"value": "f"
},
{
"type": "STRING",
"value": "n"
},
{
"type": "STRING",
"value": "r"
},
{
"type": "STRING",
"value": "t"
}
]
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "\\u"
},
{
"type": "PATTERN",
"value": "[0-9A-Fa-f]{4}"
}
]
}
]
}
}
},
"extras": [
{
"type": "PATTERN",
"value": "\\s"
}
],
"conflicts": [],
"precedences": [],
"externals": [],
"inline": [],
"supertypes": [],
"reserved": {}
}