diff --git a/grammar.js b/grammar.js index 9af971c..3077318 100644 --- a/grammar.js +++ b/grammar.js @@ -355,11 +355,11 @@ module.exports = grammar({ optional(seq('=', $._expression)) ), - parameter_list: $ => seq( + parameter_list: $ => prec.dynamic(1, seq( '(', commaSep(choice($.parameter_declaration, '...')), ')' - ), + )), parameter_declaration: $ => seq( $._declaration_specifiers, diff --git a/src/grammar.json b/src/grammar.json index e477c1b..ae10eb1 100644 --- a/src/grammar.json +++ b/src/grammar.json @@ -1585,68 +1585,72 @@ ] }, "parameter_list": { - "type": "SEQ", - "members": [ - { - "type": "STRING", - "value": "(" - }, - { - "type": "CHOICE", - "members": [ - { - "type": "SEQ", - "members": [ - { - "type": "CHOICE", - "members": [ - { - "type": "SYMBOL", - "name": "parameter_declaration" - }, - { - "type": "STRING", - "value": "..." - } - ] - }, - { - "type": "REPEAT", - "content": { - "type": "SEQ", + "type": "PREC_DYNAMIC", + "value": 1, + "content": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "(" + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SEQ", + "members": [ + { + "type": "CHOICE", "members": [ { - "type": "STRING", - "value": "," + "type": "SYMBOL", + "name": "parameter_declaration" }, { - "type": "CHOICE", - "members": [ - { - "type": "SYMBOL", - "name": "parameter_declaration" - }, - { - "type": "STRING", - "value": "..." - } - ] + "type": "STRING", + "value": "..." } ] + }, + { + "type": "REPEAT", + "content": { + "type": "SEQ", + "members": [ + { + "type": "STRING", + "value": "," + }, + { + "type": "CHOICE", + "members": [ + { + "type": "SYMBOL", + "name": "parameter_declaration" + }, + { + "type": "STRING", + "value": "..." + } + ] + } + ] + } } - } - ] - }, - { - "type": "BLANK" - } - ] - }, - { - "type": "STRING", - "value": ")" - } - ] + ] + }, + { + "type": "BLANK" + } + ] + }, + { + "type": "STRING", + "value": ")" + } + ] + } }, "parameter_declaration": { "type": "SEQ", diff --git a/src/parser.c b/src/parser.c index b3fd04d..cd6b024 100644 --- a/src/parser.c +++ b/src/parser.c @@ -59090,7 +59090,7 @@ static TSParseActionEntry ts_parse_actions[] = { [750] = {.count = 1, .reusable = true, .depends_on_lookahead = false}, REDUCE(sym__declarator, 3), [752] = {.count = 1, .reusable = true, .depends_on_lookahead = false}, SHIFT(312), [754] = {.count = 1, .reusable = true, .depends_on_lookahead = false}, SHIFT(313), - [756] = {.count = 1, .reusable = true, .depends_on_lookahead = false}, REDUCE(sym_parameter_list, 2), + [756] = {.count = 1, .reusable = true, .depends_on_lookahead = false}, REDUCE(sym_parameter_list, 2, .dynamic_precedence = 1), [758] = {.count = 1, .reusable = true, .depends_on_lookahead = false}, SHIFT(315), [760] = {.count = 1, .reusable = true, .depends_on_lookahead = false}, REDUCE(sym_parameter_declaration, 1), [762] = {.count = 1, .reusable = true, .depends_on_lookahead = false}, SHIFT(316), @@ -59311,7 +59311,7 @@ static TSParseActionEntry ts_parse_actions[] = { [1199] = {.count = 1, .reusable = true, .depends_on_lookahead = false}, REDUCE(sym_abstract_function_declarator, 2), [1201] = {.count = 1, .reusable = true, .depends_on_lookahead = false}, REDUCE(sym_type_descriptor, 3), [1203] = {.count = 1, .reusable = true, .depends_on_lookahead = false}, SHIFT(522), - [1205] = {.count = 1, .reusable = true, .depends_on_lookahead = false}, REDUCE(sym_parameter_list, 3), + [1205] = {.count = 1, .reusable = true, .depends_on_lookahead = false}, REDUCE(sym_parameter_list, 3, .dynamic_precedence = 1), [1207] = {.count = 1, .reusable = true, .depends_on_lookahead = false}, SHIFT(523), [1209] = {.count = 1, .reusable = true, .depends_on_lookahead = false}, SHIFT(524), [1211] = {.count = 1, .reusable = true, .depends_on_lookahead = false}, SHIFT(525), @@ -59501,7 +59501,7 @@ static TSParseActionEntry ts_parse_actions[] = { [1580] = {.count = 1, .reusable = true, .depends_on_lookahead = false}, SHIFT(735), [1582] = {.count = 1, .reusable = true, .depends_on_lookahead = false}, REDUCE(aux_sym_parameter_list_repeat1, 2), [1584] = {.count = 1, .reusable = true, .depends_on_lookahead = false}, SHIFT(737), - [1586] = {.count = 1, .reusable = true, .depends_on_lookahead = false}, REDUCE(sym_parameter_list, 4), + [1586] = {.count = 1, .reusable = true, .depends_on_lookahead = false}, REDUCE(sym_parameter_list, 4, .dynamic_precedence = 1), [1588] = {.count = 3, .reusable = true, .depends_on_lookahead = false}, REDUCE(sym__declarator, 1, .fragile = true), REDUCE(sym__type_specifier, 1, .fragile = true, .alias_sequence_id = 1), SHIFT(40), [1592] = {.count = 2, .reusable = true, .depends_on_lookahead = false}, REDUCE(sym__declarator, 1, .fragile = true), REDUCE(sym__type_specifier, 1, .fragile = true, .alias_sequence_id = 1), [1595] = {.count = 1, .reusable = false, .depends_on_lookahead = false}, SHIFT(738),