Fix "#" in front of symbols

pull/70/head
Stephan Seitz 2021-04-16 09:40:20 +07:00
parent 2febacbac7
commit a80e38cb47
5 changed files with 57160 additions and 62282 deletions

@ -21,6 +21,7 @@ const PREC = {
DOTTET_LIT: 3,
KWD_LIT: 4,
SPECIAL: 5,
META_LIT: 6,
}
const SYMBOL_HEAD =
@ -39,7 +40,7 @@ module.exports = grammar(clojure, {
name: 'commonlisp',
extras: ($, original) => [...original, $.block_comment],
conflicts: ($, original) => [...original, [$.for_clause], [$.accumulation_clause], [$.accumulation_clause],],
conflicts: ($, original) => [...original, [$.for_clause], [$.accumulation_clause],],
rules: {
block_comment: _ => token(seq('#|', repeat(choice(/[^|]/, /\|[^#]/)), '|#')),
@ -101,7 +102,7 @@ module.exports = grammar(clojure, {
do_clause: $ => prec.left(seq('do', repeat1(prec.left(seq(repeat($._gap), $._form, repeat($._gap)))))),
while_clause: $ => prec.left(seq(choice('while', 'until'), optional($._gap), $._form)),
repeat_clause: $ => prec.left(seq('repeat', optional($._gap), $._form)),
condition_clause: $ => prec.left(seq(choice('when', 'if', 'unless', 'always', 'thereis', 'never', 'else'), optional($._gap), $._form)),
condition_clause: $ => prec.left(choice(seq(choice('when', 'if', 'unless', 'always', 'thereis', 'never'), repeat($._gap), $._form), "else")),
accumulation_clause: $ => seq($.accumulation_verb, optional($._gap), $._form, optional(seq(optional($._gap), 'into', optional($._gap), $._form))),
termination_clause: $ => prec.left(seq(choice('finally', 'return', 'initially'), optional($._gap), $._form)),
@ -145,14 +146,15 @@ module.exports = grammar(clojure, {
array_dimension: $ => seq($.num_lit, choice('A', 'a')),
char_lit: (_, original) =>
seq(optional('#'), original),
seq(original),
num_lit: (_, original) =>
prec(PREC.NUM_LIT, original),
_bare_vec_lit: $ =>
choice(seq(field('open', choice('#0A', '#0a')), $.num_lit),
seq(field('open', '#'), optional(field('dimension_indicator', $.array_dimension)), $.list_lit)),
prec(PREC.SPECIAL, choice(seq(field('open', choice('#0A', '#0a')), $.num_lit),
seq(field('open', '#'), optional(field('dimension_indicator', $.array_dimension)), $.list_lit))),
_bare_list_lit: $ =>
choice(prec(PREC.SPECIAL, $.defun),
@ -170,16 +172,15 @@ module.exports = grammar(clojure, {
)),
kwd_lit: $ => prec(PREC.KWD_LIT, seq(
optional('#'),
choice(':', '::'),
$.sym_lit,
)),
sym_lit: $ =>
seq(repeat($._metadata_lit),
SYMBOL),
sym_lit: _ =>
seq(SYMBOL),
_form: $ =>
seq(optional('#'),
choice(// atom-ish
$.num_lit,
$.fancy_literal,
@ -216,7 +217,7 @@ module.exports = grammar(clojure, {
$.complex_num_lit,
".",
//seq($._gap, '.'),
),
)),
include_reader_macro: $ =>
seq(repeat($._metadata_lit),

@ -80,6 +80,21 @@
]
},
"_form": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "#"
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
{
@ -179,6 +194,8 @@
"value": "."
}
]
}
]
},
"num_lit": {
"type": "PREC",
@ -433,18 +450,6 @@
"content": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "#"
},
{
"type": "BLANK"
}
]
},
{
"type": "CHOICE",
"members": [
@ -514,18 +519,6 @@
"char_lit": {
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "#"
},
{
"type": "BLANK"
}
]
},
{
"type": "TOKEN",
"content": {
@ -682,13 +675,6 @@
"sym_lit": {
"type": "SEQ",
"members": [
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_metadata_lit"
}
},
{
"type": "TOKEN",
"content": {
@ -1010,6 +996,9 @@
]
},
"_bare_vec_lit": {
"type": "PREC",
"value": 5,
"content": {
"type": "CHOICE",
"members": [
{
@ -1072,6 +1061,7 @@
]
}
]
}
},
"set_lit": {
"type": "SEQ",
@ -2106,6 +2096,9 @@
"type": "PREC_LEFT",
"value": 0,
"content": {
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
@ -2138,20 +2131,21 @@
]
},
{
"type": "CHOICE",
"members": [
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_gap"
}
},
{
"type": "BLANK"
"type": "SYMBOL",
"name": "_form"
}
]
},
{
"type": "SYMBOL",
"name": "_form"
"type": "STRING",
"value": "else"
}
]
}
@ -2721,9 +2715,6 @@
[
"for_clause"
],
[
"accumulation_clause"
],
[
"accumulation_clause"
]

@ -352,6 +352,10 @@
"multiple": true,
"required": false,
"types": [
{
"type": "#",
"named": false
},
{
"type": ".",
"named": false
@ -475,9 +479,13 @@
"named": true,
"fields": {
"function_name": {
"multiple": false,
"multiple": true,
"required": false,
"types": [
{
"type": "#",
"named": false
},
{
"type": ".",
"named": false
@ -670,9 +678,13 @@
]
},
"value": {
"multiple": false,
"multiple": true,
"required": true,
"types": [
{
"type": "#",
"named": false
},
{
"type": ".",
"named": false
@ -802,9 +814,13 @@
]
},
"value": {
"multiple": false,
"multiple": true,
"required": true,
"types": [
{
"type": "#",
"named": false
},
{
"type": ".",
"named": false
@ -1103,9 +1119,13 @@
"named": true,
"fields": {
"variable": {
"multiple": false,
"multiple": true,
"required": true,
"types": [
{
"type": "#",
"named": false
},
{
"type": ".",
"named": false
@ -1326,9 +1346,13 @@
"named": true,
"fields": {
"condition": {
"multiple": false,
"multiple": true,
"required": true,
"types": [
{
"type": "#",
"named": false
},
{
"type": ".",
"named": false
@ -1462,9 +1486,13 @@
]
},
"target": {
"multiple": false,
"multiple": true,
"required": true,
"types": [
{
"type": "#",
"named": false
},
{
"type": ".",
"named": false
@ -1642,6 +1670,10 @@
"multiple": true,
"required": false,
"types": [
{
"type": "#",
"named": false
},
{
"type": ".",
"named": false
@ -1903,6 +1935,10 @@
"multiple": true,
"required": false,
"types": [
{
"type": "#",
"named": false
},
{
"type": ".",
"named": false
@ -2195,9 +2231,13 @@
]
},
"value": {
"multiple": false,
"multiple": true,
"required": true,
"types": [
{
"type": "#",
"named": false
},
{
"type": ".",
"named": false
@ -2370,6 +2410,10 @@
"multiple": true,
"required": false,
"types": [
{
"type": "#",
"named": false
},
{
"type": ".",
"named": false
@ -2661,6 +2705,10 @@
"multiple": true,
"required": false,
"types": [
{
"type": "#",
"named": false
},
{
"type": ".",
"named": false
@ -2944,6 +2992,10 @@
"multiple": true,
"required": false,
"types": [
{
"type": "#",
"named": false
},
{
"type": ".",
"named": false
@ -3074,42 +3126,7 @@
{
"type": "sym_lit",
"named": true,
"fields": {
"meta": {
"multiple": true,
"required": false,
"types": [
{
"type": "meta_lit",
"named": true
}
]
},
"old_meta": {
"multiple": true,
"required": false,
"types": [
{
"type": "old_meta_lit",
"named": true
}
]
}
},
"children": {
"multiple": true,
"required": false,
"types": [
{
"type": "comment",
"named": true
},
{
"type": "dis_expr",
"named": true
}
]
}
"fields": {}
},
{
"type": "sym_val_lit",
@ -3337,9 +3354,13 @@
]
},
"value": {
"multiple": false,
"multiple": true,
"required": true,
"types": [
{
"type": "#",
"named": false
},
{
"type": ".",
"named": false
@ -3469,9 +3490,13 @@
]
},
"value": {
"multiple": false,
"multiple": true,
"required": true,
"types": [
{
"type": "#",
"named": false
},
{
"type": ".",
"named": false
@ -3621,9 +3646,13 @@
]
},
"value": {
"multiple": false,
"multiple": true,
"required": true,
"types": [
{
"type": "#",
"named": false
},
{
"type": ".",
"named": false
@ -4224,6 +4253,10 @@
"type": "downto",
"named": false
},
{
"type": "else",
"named": false
},
{
"type": "fancy_literal",
"named": true

File diff suppressed because it is too large Load Diff

@ -612,6 +612,49 @@ foo. bar
(sym_lit)
(sym_lit)
(sym_lit)
(char_lit
(MISSING "char_lit_token1"))
(sym_lit))
================================================================================
Loop (else)
================================================================================
(loop for input-index from 0
for input-constraint across (transformation-input-mask transformation)
if (not input-constraint)
collect (transformation-input-symbol input-index)
else
collect input-constraint)
--------------------------------------------------------------------------------
(source
(list_lit
(loop_macro
(loop_clause
(for_clause
(sym_lit)
(for_clause_word)
(num_lit)))
(loop_clause
(for_clause
(sym_lit)
(for_clause_word)
(list_lit
(sym_lit)
(sym_lit))))
(loop_clause
(condition_clause
(list_lit
(sym_lit)
(sym_lit))))
(loop_clause
(accumulation_clause
(accumulation_verb)
(list_lit
(sym_lit)
(sym_lit))))
(loop_clause
(condition_clause))
(loop_clause
(accumulation_clause
(accumulation_verb)
(sym_lit))))))