Rearrangement

unified_patch
sogaiu 2020-10-31 15:07:43 +07:00
parent 9c906812f9
commit f8006afc91
3 changed files with 4765 additions and 4765 deletions

@ -226,11 +226,7 @@ module.exports = grammar({
field('value', $._form)),
_form: $ =>
choice(// basic collection-ish
$.list_lit,
$.map_lit,
$.vec_lit,
// atom-ish
choice(// atom-ish
$.num_lit,
$.kwd_lit,
$.str_lit,
@ -238,6 +234,10 @@ module.exports = grammar({
$.nil_lit,
$.bool_lit,
$.sym_lit,
// basic collection-ish
$.list_lit,
$.map_lit,
$.vec_lit,
// dispatch reader macros
$.set_lit,
$.anon_fn_lit,
@ -250,11 +250,38 @@ module.exports = grammar({
$.evaling_lit,
$.tagged_or_ctor_lit,
// some other reader macros
$.syn_quoting_lit,
$.derefing_lit,
$.quoting_lit,
$.syn_quoting_lit,
$.unquote_splicing_lit,
$.unquoting_lit,
$.derefing_lit),
$.unquoting_lit),
num_lit: $ =>
NUMBER,
kwd_lit: $ =>
KEYWORD,
str_lit: $ =>
STRING,
char_lit: $ =>
CHARACTER,
nil_lit: $ =>
NIL,
bool_lit: $ =>
BOOLEAN,
sym_lit: $ =>
seq(repeat($._metadata_lit),
SYMBOL),
_metadata_lit: $ =>
seq(choice(field('meta', $.meta_lit),
field('old_meta', $.old_meta_lit)),
optional(repeat($._gap))),
meta_lit: $ =>
seq(field('marker', "^"),
@ -274,11 +301,6 @@ module.exports = grammar({
$.kwd_lit,
$.sym_lit))),
_metadata_lit: $ =>
seq(choice(field('meta', $.meta_lit),
field('old_meta', $.old_meta_lit)),
optional(repeat($._gap))),
list_lit: $ =>
seq(repeat($._metadata_lit),
$._bare_list_lit),
@ -309,28 +331,6 @@ module.exports = grammar({
$._gap)),
field('close', "]")),
num_lit: $ =>
NUMBER,
kwd_lit: $ =>
KEYWORD,
str_lit: $ =>
STRING,
char_lit: $ =>
CHARACTER,
nil_lit: $ =>
NIL,
bool_lit: $ =>
BOOLEAN,
sym_lit: $ =>
seq(repeat($._metadata_lit),
SYMBOL),
set_lit: $ =>
seq(repeat($._metadata_lit),
$._bare_set_lit),
@ -415,9 +415,9 @@ module.exports = grammar({
repeat($._gap),
field('value', $._form)),
syn_quoting_lit: $ =>
derefing_lit: $ =>
seq(repeat($._metadata_lit),
field('marker', "`"),
field('marker', "@"),
repeat($._gap),
field('value', $._form)),
@ -427,6 +427,12 @@ module.exports = grammar({
repeat($._gap),
field('value', $._form)),
syn_quoting_lit: $ =>
seq(repeat($._metadata_lit),
field('marker', "`"),
repeat($._gap),
field('value', $._form)),
unquote_splicing_lit: $ =>
// XXX: metadata here doesn't seem to make sense, but the repl
// will accept: `(^:x ~@[:a :b :c])
@ -440,11 +446,5 @@ module.exports = grammar({
field('marker', "~"),
repeat($._gap),
field('value', $._form)),
derefing_lit: $ =>
seq(repeat($._metadata_lit),
field('marker', "@"),
repeat($._gap),
field('value', $._form)),
}
});

@ -84,43 +84,43 @@
"members": [
{
"type": "SYMBOL",
"name": "list_lit"
"name": "num_lit"
},
{
"type": "SYMBOL",
"name": "map_lit"
"name": "kwd_lit"
},
{
"type": "SYMBOL",
"name": "vec_lit"
"name": "str_lit"
},
{
"type": "SYMBOL",
"name": "num_lit"
"name": "char_lit"
},
{
"type": "SYMBOL",
"name": "kwd_lit"
"name": "nil_lit"
},
{
"type": "SYMBOL",
"name": "str_lit"
"name": "bool_lit"
},
{
"type": "SYMBOL",
"name": "char_lit"
"name": "sym_lit"
},
{
"type": "SYMBOL",
"name": "nil_lit"
"name": "list_lit"
},
{
"type": "SYMBOL",
"name": "bool_lit"
"name": "map_lit"
},
{
"type": "SYMBOL",
"name": "sym_lit"
"name": "vec_lit"
},
{
"type": "SYMBOL",
@ -162,335 +162,25 @@
"type": "SYMBOL",
"name": "tagged_or_ctor_lit"
},
{
"type": "SYMBOL",
"name": "syn_quoting_lit"
},
{
"type": "SYMBOL",
"name": "quoting_lit"
},
{
"type": "SYMBOL",
"name": "unquote_splicing_lit"
},
{
"type": "SYMBOL",
"name": "unquoting_lit"
},
{
"type": "SYMBOL",
"name": "derefing_lit"
}
]
},
"meta_lit": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "marker",
"content": {
"type": "STRING",
"value": "^"
}
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_gap"
}
},
{
"type": "FIELD",
"name": "value",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "read_cond_lit"
},
{
"type": "SYMBOL",
"name": "map_lit"
},
{
"type": "SYMBOL",
"name": "str_lit"
},
{
"type": "SYMBOL",
"name": "kwd_lit"
},
{
"type": "SYMBOL",
"name": "sym_lit"
}
]
}
}
]
},
"old_meta_lit": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "marker",
"content": {
"type": "STRING",
"value": "#^"
}
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_gap"
}
},
{
"type": "FIELD",
"name": "value",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "read_cond_lit"
},
{
"type": "SYMBOL",
"name": "map_lit"
},
{
"type": "SYMBOL",
"name": "str_lit"
},
{
"type": "SYMBOL",
"name": "kwd_lit"
},
{
"type": "SYMBOL",
"name": "sym_lit"
}
]
}
}
]
},
"_metadata_lit": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "meta",
"content": {
"type": "SYMBOL",
"name": "meta_lit"
}
},
{
"type": "FIELD",
"name": "old_meta",
"content": {
"type": "SYMBOL",
"name": "old_meta_lit"
}
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_gap"
}
},
{
"type": "BLANK"
}
]
}
]
},
"list_lit": {
"type": "SEQ",
"members": [
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_metadata_lit"
}
},
{
"type": "SYMBOL",
"name": "_bare_list_lit"
}
]
},
"_bare_list_lit": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "open",
"content": {
"type": "STRING",
"value": "("
}
},
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "value",
"content": {
"type": "SYMBOL",
"name": "_form"
}
},
{
"type": "SYMBOL",
"name": "_gap"
}
]
}
},
{
"type": "FIELD",
"name": "close",
"content": {
"type": "STRING",
"value": ")"
}
}
]
},
"map_lit": {
"type": "SEQ",
"members": [
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_metadata_lit"
}
"name": "quoting_lit"
},
{
"type": "SYMBOL",
"name": "_bare_map_lit"
}
]
},
"_bare_map_lit": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "open",
"content": {
"type": "STRING",
"value": "{"
}
},
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "value",
"content": {
"type": "SYMBOL",
"name": "_form"
}
},
{
"type": "SYMBOL",
"name": "_gap"
}
]
}
},
{
"type": "FIELD",
"name": "close",
"content": {
"type": "STRING",
"value": "}"
}
}
]
},
"vec_lit": {
"type": "SEQ",
"members": [
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_metadata_lit"
}
"name": "syn_quoting_lit"
},
{
"type": "SYMBOL",
"name": "_bare_vec_lit"
}
]
},
"_bare_vec_lit": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "open",
"content": {
"type": "STRING",
"value": "["
}
},
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "value",
"content": {
"type": "SYMBOL",
"name": "_form"
}
},
{
"type": "SYMBOL",
"name": "_gap"
}
]
}
"name": "unquote_splicing_lit"
},
{
"type": "FIELD",
"name": "close",
"content": {
"type": "STRING",
"value": "]"
}
"type": "SYMBOL",
"name": "unquoting_lit"
}
]
},
@ -937,92 +627,328 @@
]
},
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "backspace"
},
{
"type": "STRING",
"value": "formfeed"
},
{
"type": "STRING",
"value": "newline"
},
{
"type": "STRING",
"value": "return"
},
{
"type": "STRING",
"value": "space"
},
{
"type": "STRING",
"value": "tab"
}
]
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "backspace"
},
{
"type": "STRING",
"value": "formfeed"
},
{
"type": "STRING",
"value": "newline"
},
{
"type": "STRING",
"value": "return"
},
{
"type": "STRING",
"value": "space"
},
{
"type": "STRING",
"value": "tab"
}
]
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "u"
},
{
"type": "PATTERN",
"value": "[0-9a-fA-F]"
},
{
"type": "PATTERN",
"value": "[0-9a-fA-F]"
},
{
"type": "PATTERN",
"value": "[0-9a-fA-F]"
},
{
"type": "PATTERN",
"value": "[0-9a-fA-F]"
}
]
},
{
"type": "PATTERN",
"value": ".|\\n"
}
]
}
]
}
},
"nil_lit": {
"type": "TOKEN",
"content": {
"type": "STRING",
"value": "nil"
}
},
"bool_lit": {
"type": "TOKEN",
"content": {
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "false"
},
{
"type": "STRING",
"value": "true"
}
]
}
},
"sym_lit": {
"type": "SEQ",
"members": [
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_metadata_lit"
}
},
{
"type": "TOKEN",
"content": {
"type": "SEQ",
"members": [
{
"type": "PATTERN",
"value": "[^\\f\\n\\r\\t ()\\[\\]{}\"@~^;`\\\\,:#'0-9\\u000B\\u001C\\u001D\\u001E\\u001F\\u2028\\u2029\\u1680\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2008\\u2009\\u200a\\u205f\\u3000]"
},
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "PATTERN",
"value": "[^\\f\\n\\r\\t ()\\[\\]{}\"@~^;`\\\\,:#'0-9\\u000B\\u001C\\u001D\\u001E\\u001F\\u2028\\u2029\\u1680\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2008\\u2009\\u200a\\u205f\\u3000]"
},
{
"type": "PATTERN",
"value": "[:#'0-9]"
}
]
}
}
]
}
}
]
},
"_metadata_lit": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "meta",
"content": {
"type": "SYMBOL",
"name": "meta_lit"
}
},
{
"type": "FIELD",
"name": "old_meta",
"content": {
"type": "SYMBOL",
"name": "old_meta_lit"
}
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_gap"
}
},
{
"type": "BLANK"
}
]
}
]
},
"meta_lit": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "marker",
"content": {
"type": "STRING",
"value": "^"
}
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_gap"
}
},
{
"type": "FIELD",
"name": "value",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "read_cond_lit"
},
{
"type": "SYMBOL",
"name": "map_lit"
},
{
"type": "SYMBOL",
"name": "str_lit"
},
{
"type": "SYMBOL",
"name": "kwd_lit"
},
{
"type": "SYMBOL",
"name": "sym_lit"
}
]
}
}
]
},
"old_meta_lit": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "marker",
"content": {
"type": "STRING",
"value": "#^"
}
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_gap"
}
},
{
"type": "FIELD",
"name": "value",
"content": {
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "read_cond_lit"
},
{
"type": "SYMBOL",
"name": "map_lit"
},
{
"type": "SYMBOL",
"name": "str_lit"
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "u"
},
{
"type": "PATTERN",
"value": "[0-9a-fA-F]"
},
{
"type": "PATTERN",
"value": "[0-9a-fA-F]"
},
{
"type": "PATTERN",
"value": "[0-9a-fA-F]"
},
{
"type": "PATTERN",
"value": "[0-9a-fA-F]"
}
]
"type": "SYMBOL",
"name": "kwd_lit"
},
{
"type": "PATTERN",
"value": ".|\\n"
"type": "SYMBOL",
"name": "sym_lit"
}
]
}
]
}
}
]
},
"nil_lit": {
"type": "TOKEN",
"content": {
"type": "STRING",
"value": "nil"
}
"list_lit": {
"type": "SEQ",
"members": [
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_metadata_lit"
}
},
{
"type": "SYMBOL",
"name": "_bare_list_lit"
}
]
},
"bool_lit": {
"type": "TOKEN",
"content": {
"type": "CHOICE",
"members": [
{
"_bare_list_lit": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "open",
"content": {
"type": "STRING",
"value": "false"
},
{
"value": "("
}
},
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "value",
"content": {
"type": "SYMBOL",
"name": "_form"
}
},
{
"type": "SYMBOL",
"name": "_gap"
}
]
}
},
{
"type": "FIELD",
"name": "close",
"content": {
"type": "STRING",
"value": "true"
"value": ")"
}
]
}
}
]
},
"sym_lit": {
"map_lit": {
"type": "SEQ",
"members": [
{
@ -1033,32 +959,106 @@
}
},
{
"type": "TOKEN",
"type": "SYMBOL",
"name": "_bare_map_lit"
}
]
},
"_bare_map_lit": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "open",
"content": {
"type": "SEQ",
"type": "STRING",
"value": "{"
}
},
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "PATTERN",
"value": "[^\\f\\n\\r\\t ()\\[\\]{}\"@~^;`\\\\,:#'0-9\\u000B\\u001C\\u001D\\u001E\\u001F\\u2028\\u2029\\u1680\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2008\\u2009\\u200a\\u205f\\u3000]"
"type": "FIELD",
"name": "value",
"content": {
"type": "SYMBOL",
"name": "_form"
}
},
{
"type": "REPEAT",
"type": "SYMBOL",
"name": "_gap"
}
]
}
},
{
"type": "FIELD",
"name": "close",
"content": {
"type": "STRING",
"value": "}"
}
}
]
},
"vec_lit": {
"type": "SEQ",
"members": [
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_metadata_lit"
}
},
{
"type": "SYMBOL",
"name": "_bare_vec_lit"
}
]
},
"_bare_vec_lit": {
"type": "SEQ",
"members": [
{
"type": "FIELD",
"name": "open",
"content": {
"type": "STRING",
"value": "["
}
},
{
"type": "REPEAT",
"content": {
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "value",
"content": {
"type": "CHOICE",
"members": [
{
"type": "PATTERN",
"value": "[^\\f\\n\\r\\t ()\\[\\]{}\"@~^;`\\\\,:#'0-9\\u000B\\u001C\\u001D\\u001E\\u001F\\u2028\\u2029\\u1680\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2008\\u2009\\u200a\\u205f\\u3000]"
},
{
"type": "PATTERN",
"value": "[:#'0-9]"
}
]
"type": "SYMBOL",
"name": "_form"
}
},
{
"type": "SYMBOL",
"name": "_gap"
}
]
}
},
{
"type": "FIELD",
"name": "close",
"content": {
"type": "STRING",
"value": "]"
}
}
]
},
@ -1488,7 +1488,7 @@
}
]
},
"syn_quoting_lit": {
"derefing_lit": {
"type": "SEQ",
"members": [
{
@ -1503,7 +1503,7 @@
"name": "marker",
"content": {
"type": "STRING",
"value": "`"
"value": "@"
}
},
{
@ -1558,7 +1558,7 @@
}
]
},
"unquote_splicing_lit": {
"syn_quoting_lit": {
"type": "SEQ",
"members": [
{
@ -1573,7 +1573,7 @@
"name": "marker",
"content": {
"type": "STRING",
"value": "~@"
"value": "`"
}
},
{
@ -1593,7 +1593,7 @@
}
]
},
"unquoting_lit": {
"unquote_splicing_lit": {
"type": "SEQ",
"members": [
{
@ -1608,7 +1608,7 @@
"name": "marker",
"content": {
"type": "STRING",
"value": "~"
"value": "~@"
}
},
{
@ -1628,7 +1628,7 @@
}
]
},
"derefing_lit": {
"unquoting_lit": {
"type": "SEQ",
"members": [
{
@ -1643,7 +1643,7 @@
"name": "marker",
"content": {
"type": "STRING",
"value": "@"
"value": "~"
}
},
{

File diff suppressed because it is too large Load Diff