Allow sole `and` in for_clause

pull/70/head
Stephan Seitz 2021-04-16 10:21:45 +07:00
parent 2219fcb63d
commit d9a8bba658
4 changed files with 73357 additions and 58953 deletions

@ -95,8 +95,8 @@ module.exports = grammar(clojure, {
accumulation_verb: _ => /((collect|append|nconc|count|maximize|minimize)(ing)?|sum(ming)?)/,
for_clause: $ => seq(choice('for', 'and', 'as'), repeat($._gap), field('variable', $._form),
repeat1($._for_part)),
for_clause: $ => choice(seq(choice('for', 'and', 'as'), repeat($._gap), field('variable', $._form), optional(field('type', seq(repeat($._gap), $._form))),
repeat1($._for_part)), 'and'),
with_clause: $ => prec.left(seq('with', repeat($._gap), $._form, repeat($._gap), "=", repeat($._gap), $._form)),
do_clause: $ => prec.left(seq('do', repeat1(prec.left(seq(repeat($._gap), $._form, repeat($._gap)))))),
@ -140,7 +140,7 @@ module.exports = grammar(clojure, {
field('lambda_list', choice($.list_lit, $.unquoting_lit))),
seq(field('keyword', alias('lambda', $.defun_keyword)),
repeat($._gap),
field('lambda_list', $.list_lit))
field('lambda_list', choice($.list_lit, $.unquoting_lit)))
),
array_dimension: $ => seq($.num_lit, choice('A', 'a')),

@ -1863,46 +1863,83 @@
"value": "((collect|append|nconc|count|maximize|minimize)(ing)?|sum(ming)?)"
},
"for_clause": {
"type": "SEQ",
"type": "CHOICE",
"members": [
{
"type": "CHOICE",
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "for"
"type": "CHOICE",
"members": [
{
"type": "STRING",
"value": "for"
},
{
"type": "STRING",
"value": "and"
},
{
"type": "STRING",
"value": "as"
}
]
},
{
"type": "STRING",
"value": "and"
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_gap"
}
},
{
"type": "STRING",
"value": "as"
"type": "FIELD",
"name": "variable",
"content": {
"type": "SYMBOL",
"name": "_form"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "FIELD",
"name": "type",
"content": {
"type": "SEQ",
"members": [
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_gap"
}
},
{
"type": "SYMBOL",
"name": "_form"
}
]
}
},
{
"type": "BLANK"
}
]
},
{
"type": "REPEAT1",
"content": {
"type": "SYMBOL",
"name": "_for_part"
}
}
]
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_gap"
}
},
{
"type": "FIELD",
"name": "variable",
"content": {
"type": "SYMBOL",
"name": "_form"
}
},
{
"type": "REPEAT1",
"content": {
"type": "SYMBOL",
"name": "_for_part"
}
"type": "STRING",
"value": "and"
}
]
},
@ -2454,8 +2491,17 @@
"type": "FIELD",
"name": "lambda_list",
"content": {
"type": "SYMBOL",
"name": "list_lit"
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "list_lit"
},
{
"type": "SYMBOL",
"name": "unquoting_lit"
}
]
}
}
]

@ -1126,9 +1126,123 @@
"type": "for_clause",
"named": true,
"fields": {
"type": {
"multiple": true,
"required": false,
"types": [
{
"type": "#",
"named": false
},
{
"type": ".",
"named": false
},
{
"type": "char_lit",
"named": true
},
{
"type": "comment",
"named": true
},
{
"type": "complex_num_lit",
"named": true
},
{
"type": "derefing_lit",
"named": true
},
{
"type": "dis_expr",
"named": true
},
{
"type": "evaling_lit",
"named": true
},
{
"type": "fancy_literal",
"named": true
},
{
"type": "include_reader_macro",
"named": true
},
{
"type": "kwd_lit",
"named": true
},
{
"type": "list_lit",
"named": true
},
{
"type": "nil_lit",
"named": true
},
{
"type": "num_lit",
"named": true
},
{
"type": "package_lit",
"named": true
},
{
"type": "quoting_lit",
"named": true
},
{
"type": "read_cond_lit",
"named": true
},
{
"type": "set_lit",
"named": true
},
{
"type": "splicing_read_cond_lit",
"named": true
},
{
"type": "str_lit",
"named": true
},
{
"type": "sym_lit",
"named": true
},
{
"type": "sym_val_lit",
"named": true
},
{
"type": "syn_quoting_lit",
"named": true
},
{
"type": "unquote_splicing_lit",
"named": true
},
{
"type": "unquoting_lit",
"named": true
},
{
"type": "var_quoting_lit",
"named": true
},
{
"type": "vec_lit",
"named": true
}
]
},
"variable": {
"multiple": true,
"required": true,
"required": false,
"types": [
{
"type": "#",
@ -1235,7 +1349,7 @@
},
"children": {
"multiple": true,
"required": true,
"required": false,
"types": [
{
"type": "char_lit",

File diff suppressed because it is too large Load Diff