Fix #2: allow @ in sym_lit

pull/70/head
Stephan Seitz 2021-11-25 22:02:55 +07:00
parent 5928e2e36d
commit 6a9b2cb1d6
5 changed files with 242 additions and 302 deletions

@ -25,10 +25,10 @@ const PREC = {
}
const SYMBOL_HEAD =
/[^:\f\n\r\t ()\[\]{}"@^;`\\,#'\u000B\u001C\u001D\u001E\u001F\u2028\u2029\u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2008\u2009\u200a\u205f\u3000]/;
/[^:\f\n\r\t ()\[\]{}"^;`\\,#'\u000B\u001C\u001D\u001E\u001F\u2028\u2029\u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2008\u2009\u200a\u205f\u3000]/;
const SYMBOL_WITHOUT_SLASH =
/[^:\f\n\r\t ()\[\]{}"@^;/`\\,#'\u000B\u001C\u001D\u001E\u001F\u2028\u2029\u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2008\u2009\u200a\u205f\u3000]/;
/[^:\f\n\r\t ()\[\]{}"^;/`\\,#'\u000B\u001C\u001D\u001E\u001F\u2028\u2029\u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2008\u2009\u200a\u205f\u3000]/;
const SYMBOL_BODY =
choice(SYMBOL_HEAD,
@ -320,7 +320,7 @@ module.exports = grammar(clojure, {
kwd_symbol: _ =>
seq(SYMBOL),
self_referential_reader_macro: _ => /#\d+[=#]/,
self_referential_reader_macro: _ => /#\d+[=#]/,
_form: $ =>
seq(optional('#'),

@ -807,7 +807,7 @@
"members": [
{
"type": "PATTERN",
"value": "[^:\\f\\n\\r\\t ()\\[\\]{}\"@^;`\\\\,#'\\u000B\\u001C\\u001D\\u001E\\u001F\\u2028\\u2029\\u1680\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2008\\u2009\\u200a\\u205f\\u3000]"
"value": "[^:\\f\\n\\r\\t ()\\[\\]{}\"^;`\\\\,#'\\u000B\\u001C\\u001D\\u001E\\u001F\\u2028\\u2029\\u1680\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2008\\u2009\\u200a\\u205f\\u3000]"
},
{
"type": "REPEAT",
@ -816,7 +816,7 @@
"members": [
{
"type": "PATTERN",
"value": "[^:\\f\\n\\r\\t ()\\[\\]{}\"@^;`\\\\,#'\\u000B\\u001C\\u001D\\u001E\\u001F\\u2028\\u2029\\u1680\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2008\\u2009\\u200a\\u205f\\u3000]"
"value": "[^:\\f\\n\\r\\t ()\\[\\]{}\"^;`\\\\,#'\\u000B\\u001C\\u001D\\u001E\\u001F\\u2028\\u2029\\u1680\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2008\\u2009\\u200a\\u205f\\u3000]"
},
{
"type": "PATTERN",
@ -1645,39 +1645,8 @@
]
},
"derefing_lit": {
"type": "SEQ",
"members": [
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_metadata_lit"
}
},
{
"type": "FIELD",
"name": "marker",
"content": {
"type": "STRING",
"value": "@"
}
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_gap"
}
},
{
"type": "FIELD",
"name": "value",
"content": {
"type": "SYMBOL",
"name": "_form"
}
}
]
"type": "SYMBOL",
"name": "complex_num_lit"
},
"quoting_lit": {
"type": "SEQ",
@ -4131,7 +4100,7 @@
"type": "REPEAT1",
"content": {
"type": "PATTERN",
"value": "[^:\\f\\n\\r\\t ()\\[\\]{}\"@^;/`\\\\,#'\\u000B\\u001C\\u001D\\u001E\\u001F\\u2028\\u2029\\u1680\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2008\\u2009\\u200a\\u205f\\u3000]"
"value": "[^:\\f\\n\\r\\t ()\\[\\]{}\"^;/`\\\\,#'\\u000B\\u001C\\u001D\\u001E\\u001F\\u2028\\u2029\\u1680\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2008\\u2009\\u200a\\u205f\\u3000]"
}
},
"named": true,
@ -4147,7 +4116,7 @@
"members": [
{
"type": "PATTERN",
"value": "[^:\\f\\n\\r\\t ()\\[\\]{}\"@^;`\\\\,#'\\u000B\\u001C\\u001D\\u001E\\u001F\\u2028\\u2029\\u1680\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2008\\u2009\\u200a\\u205f\\u3000]"
"value": "[^:\\f\\n\\r\\t ()\\[\\]{}\"^;`\\\\,#'\\u000B\\u001C\\u001D\\u001E\\u001F\\u2028\\u2029\\u1680\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2008\\u2009\\u200a\\u205f\\u3000]"
},
{
"type": "REPEAT",
@ -4156,7 +4125,7 @@
"members": [
{
"type": "PATTERN",
"value": "[^:\\f\\n\\r\\t ()\\[\\]{}\"@^;`\\\\,#'\\u000B\\u001C\\u001D\\u001E\\u001F\\u2028\\u2029\\u1680\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2008\\u2009\\u200a\\u205f\\u3000]"
"value": "[^:\\f\\n\\r\\t ()\\[\\]{}\"^;`\\\\,#'\\u000B\\u001C\\u001D\\u001E\\u001F\\u2028\\u2029\\u1680\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2008\\u2009\\u200a\\u205f\\u3000]"
},
{
"type": "PATTERN",

File diff suppressed because it is too large Load Diff

@ -102,8 +102,8 @@ struct TSLanguage {
const uint16_t *small_parse_table;
const uint32_t *small_parse_table_map;
const TSParseActionEntry *parse_actions;
const char **symbol_names;
const char **field_names;
const char * const *symbol_names;
const char * const *field_names;
const TSFieldMapSlice *field_map_slices;
const TSFieldMapEntry *field_map_entries;
const TSSymbolMetadata *symbol_metadata;

@ -1075,3 +1075,17 @@ Self-references
(kwd_lit
(kwd_symbol))
(sym_lit))))))
================================================================================
@ in defun identifiers
================================================================================
;; this highlights properly
(defun foo (bar)
(baz))
;; this doesn't and breaks all highlighting below
(defun @foo (bar)
(baz))
--------------------------------------------------------------------------------