tree-sitter-janet
Version:
Janet grammar for tree-sitter
1,558 lines (1,556 loc) • 31.3 kB
JSON
{
"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"
]
}