UNPKG

tree-sitter-janet

Version:
1,558 lines (1,556 loc) 31.3 kB
{ "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" ] }