tree-sitter-nuon
Version:
NUON grammar for tree-sitter
1,218 lines • 27.1 kB
JSON
{
"$schema": "https://tree-sitter.github.io/tree-sitter/assets/schemas/grammar.schema.json",
"name": "nuon",
"inherits": "json",
"word": "identifier",
"rules": {
"document": {
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_value"
}
]
}
},
"_value": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "list"
},
{
"type": "SYMBOL",
"name": "number"
},
{
"type": "SYMBOL",
"name": "string"
},
{
"type": "SYMBOL",
"name": "null"
},
{
"type": "SYMBOL",
"name": "_nuon_value"
}
]
},
"pair": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "key",
"content": {
"type": "SYMBOL",
"name": "string"
}
},
{
"type": "STRING",
"value": ":"
},
{
"type": "FIELD",
"name": "value",
"content": {
"type": "SYMBOL",
"name": "_value"
}
}
]
},
"array": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "["
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_value"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "_value"
}
]
}
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "]"
}
]
},
"string": {
"type": "CHOICE",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "\""
},
{
"type": "STRING",
"value": "\""
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "\""
},
{
"type": "SYMBOL",
"name": "string_content"
},
{
"type": "STRING",
"value": "\""
}
]
}
]
},
{
"type": "PREC",
"value": 1,
"content": {
"type": "SYMBOL",
"name": "identifier"
}
}
]
},
"string_content": {
"type": "REPEAT1",
"content": {
"type": "CHOICE",
"members": [
{
"type": "IMMEDIATE_TOKEN",
"content": {
"type": "PREC",
"value": 1,
"content": {
"type": "PATTERN",
"value": "[^\\\\\"\\n]+"
}
}
},
{
"type": "SYMBOL",
"name": "escape_sequence"
}
]
}
},
"escape_sequence": {
"type": "IMMEDIATE_TOKEN",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "\\"
},
{
"type": "PATTERN",
"value": "(\\\"|\\\\|\\/|b|f|n|r|t|u)"
}
]
}
},
"number": {
"type": "TOKEN",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "-"
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "0"
},
{
"type": "SEQ",
"members": [
{
"type": "PATTERN",
"value": "[1-9]"
},
{
"type": "CHOICE",
"members": [
{
"type": "PATTERN",
"value": "\\d+"
},
{
"type": "BLANK"
}
]
}
]
}
]
}
]
},
{
"type": "STRING",
"value": "."
},
{
"type": "CHOICE",
"members": [
{
"type": "PATTERN",
"value": "\\d+"
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "e"
},
{
"type": "STRING",
"value": "E"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "-"
},
{
"type": "BLANK"
}
]
},
{
"type": "PATTERN",
"value": "\\d+"
}
]
}
]
},
{
"type": "BLANK"
}
]
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "-"
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "0"
},
{
"type": "SEQ",
"members": [
{
"type": "PATTERN",
"value": "[1-9]"
},
{
"type": "CHOICE",
"members": [
{
"type": "PATTERN",
"value": "\\d+"
},
{
"type": "BLANK"
}
]
}
]
}
]
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "e"
},
{
"type": "STRING",
"value": "E"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "-"
},
{
"type": "BLANK"
}
]
},
{
"type": "PATTERN",
"value": "\\d+"
}
]
}
]
},
{
"type": "BLANK"
}
]
}
]
}
]
}
},
"true": {
"type": "STRING",
"value": "true"
},
"false": {
"type": "STRING",
"value": "false"
},
"null": {
"type": "STRING",
"value": "null"
},
"comment": {
"type": "TOKEN",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "#"
},
{
"type": "PATTERN",
"value": ".*"
}
]
}
},
"table_header": {
"type": "PREC",
"value": 2,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "["
},
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "identifier"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "identifier"
}
]
}
}
]
},
{
"type": "STRING",
"value": "]"
},
{
"type": "STRING",
"value": ";"
}
]
}
},
"table_values": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "["
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_value"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "_value"
}
]
}
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "]"
}
]
},
"table": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "["
},
{
"type": "FIELD",
"name": "head",
"content": {
"type": "SYMBOL",
"name": "table_header"
}
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "table_values"
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "BLANK"
}
]
}
]
}
},
{
"type": "STRING",
"value": "]"
}
]
},
"duration_unit": {
"type": "TOKEN",
"content": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "ns"
},
{
"type": "STRING",
"value": "µs"
},
{
"type": "STRING",
"value": "us"
},
{
"type": "STRING",
"value": "ms"
},
{
"type": "STRING",
"value": "sec"
},
{
"type": "STRING",
"value": "min"
},
{
"type": "STRING",
"value": "hr"
},
{
"type": "STRING",
"value": "day"
},
{
"type": "STRING",
"value": "wk"
}
]
}
},
"filesize_unit": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "b"
},
{
"type": "STRING",
"value": "B"
},
{
"type": "STRING",
"value": "kb"
},
{
"type": "STRING",
"value": "kB"
},
{
"type": "STRING",
"value": "Kb"
},
{
"type": "STRING",
"value": "KB"
},
{
"type": "STRING",
"value": "mb"
},
{
"type": "STRING",
"value": "mB"
},
{
"type": "STRING",
"value": "Mb"
},
{
"type": "STRING",
"value": "MB"
},
{
"type": "STRING",
"value": "gb"
},
{
"type": "STRING",
"value": "gB"
},
{
"type": "STRING",
"value": "Gb"
},
{
"type": "STRING",
"value": "GB"
},
{
"type": "STRING",
"value": "tb"
},
{
"type": "STRING",
"value": "tB"
},
{
"type": "STRING",
"value": "Tb"
},
{
"type": "STRING",
"value": "TB"
},
{
"type": "STRING",
"value": "pb"
},
{
"type": "STRING",
"value": "pB"
},
{
"type": "STRING",
"value": "Pb"
},
{
"type": "STRING",
"value": "PB"
},
{
"type": "STRING",
"value": "eb"
},
{
"type": "STRING",
"value": "eB"
},
{
"type": "STRING",
"value": "Eb"
},
{
"type": "STRING",
"value": "EB"
},
{
"type": "STRING",
"value": "kib"
},
{
"type": "STRING",
"value": "kiB"
},
{
"type": "STRING",
"value": "kIB"
},
{
"type": "STRING",
"value": "kIb"
},
{
"type": "STRING",
"value": "Kib"
},
{
"type": "STRING",
"value": "KIb"
},
{
"type": "STRING",
"value": "KIB"
},
{
"type": "STRING",
"value": "mib"
},
{
"type": "STRING",
"value": "miB"
},
{
"type": "STRING",
"value": "mIB"
},
{
"type": "STRING",
"value": "mIb"
},
{
"type": "STRING",
"value": "Mib"
},
{
"type": "STRING",
"value": "MIb"
},
{
"type": "STRING",
"value": "MIB"
},
{
"type": "STRING",
"value": "gib"
},
{
"type": "STRING",
"value": "giB"
},
{
"type": "STRING",
"value": "gIB"
},
{
"type": "STRING",
"value": "gIb"
},
{
"type": "STRING",
"value": "Gib"
},
{
"type": "STRING",
"value": "GIb"
},
{
"type": "STRING",
"value": "GIB"
},
{
"type": "STRING",
"value": "tib"
},
{
"type": "STRING",
"value": "tiB"
},
{
"type": "STRING",
"value": "tIB"
},
{
"type": "STRING",
"value": "tIb"
},
{
"type": "STRING",
"value": "Tib"
},
{
"type": "STRING",
"value": "TIb"
},
{
"type": "STRING",
"value": "TIB"
},
{
"type": "STRING",
"value": "pib"
},
{
"type": "STRING",
"value": "piB"
},
{
"type": "STRING",
"value": "pIB"
},
{
"type": "STRING",
"value": "pIb"
},
{
"type": "STRING",
"value": "Pib"
},
{
"type": "STRING",
"value": "PIb"
},
{
"type": "STRING",
"value": "PIB"
},
{
"type": "STRING",
"value": "eib"
},
{
"type": "STRING",
"value": "eiB"
},
{
"type": "STRING",
"value": "eIB"
},
{
"type": "STRING",
"value": "eIb"
},
{
"type": "STRING",
"value": "Eib"
},
{
"type": "STRING",
"value": "EIb"
},
{
"type": "STRING",
"value": "EIB"
}
]
},
"binary": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "0x"
},
{
"type": "PATTERN",
"value": "\\["
},
{
"type": "REPEAT1",
"content": {
"type": "SEQ",
"members": [
{
"type": "PATTERN",
"value": "[0-9a-fA-F]{2}"
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "BLANK"
}
]
}
]
}
},
{
"type": "PATTERN",
"value": "\\]"
}
]
},
"filesize": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "value",
"content": {
"type": "SYMBOL",
"name": "number"
}
},
{
"type": "FIELD",
"name": "unit",
"content": {
"type": "SYMBOL",
"name": "filesize_unit"
}
}
]
},
"duration": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "value",
"content": {
"type": "SYMBOL",
"name": "number"
}
},
{
"type": "FIELD",
"name": "unit",
"content": {
"type": "SYMBOL",
"name": "duration_unit"
}
}
]
},
"_bool": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "true"
},
{
"type": "SYMBOL",
"name": "false"
}
]
},
"date": {
"type": "TOKEN",
"content": {
"type": "CHOICE",
"members": [
{
"type": "PATTERN",
"value": "[0-9]{4}-[0-9]{2}-[0-9]{2}",
"flags": "i"
},
{
"type": "PATTERN",
"value": "[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}(\\.[0-9]+)?([Zz]|([\\+-])([01]\\d|2[0-3]):?([0-5]\\d)?)?"
}
]
}
},
"_nuon_value": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "filesize"
},
{
"type": "SYMBOL",
"name": "record"
},
{
"type": "SYMBOL",
"name": "table"
},
{
"type": "SYMBOL",
"name": "duration"
},
{
"type": "SYMBOL",
"name": "_bool"
},
{
"type": "SYMBOL",
"name": "date"
},
{
"type": "SYMBOL",
"name": "binary"
}
]
},
"identifier": {
"type": "TOKEN",
"content": {
"type": "FIELD",
"name": "variable",
"content": {
"type": "PATTERN",
"value": "[A-Za-z_\\.\\-]+[A-Za-z0-9_\\.\\-]*"
}
}
},
"list": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "["
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_value"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "_value"
}
]
}
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "]"
}
]
},
"record": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "{"
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "pair"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "BLANK"
}
]
},
{
"type": "SYMBOL",
"name": "pair"
}
]
}
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": "}"
}
]
}
},
"extras": [
{
"type": "PATTERN",
"value": "\\s"
},
{
"type": "SYMBOL",
"name": "comment"
},
{
"type": "PATTERN",
"value": "\\s"
},
{
"type": "SYMBOL",
"name": "comment"
}
],
"conflicts": [],
"precedences": [],
"externals": [],
"inline": [],
"supertypes": [
"_value"
],
"reserved": {}
}