Bladeren bron

Use dynamic precedence to distinguish pointer declarators from multiplication

pull/16/merge
Max Brunsfeld 8 jaren geleden
bovenliggende
commit
07cafeac95
4 gewijzigde bestanden met toevoegingen van 290 en 264 verwijderingen
  1. +6
    -2
      corpus/ambiguities.txt
  2. +11
    -10
      grammar.js
  3. +252
    -231
      src/grammar.json
  4. +21
    -21
      src/parser.c

+ 6
- 2
corpus/ambiguities.txt Bestand weergeven

@ -6,8 +6,9 @@ int main() {
// declare a function pointer
T1 * b(T2 a);
// evaluate an expression
// evaluate expressions
c * d(5);
e(f * g);
}
---
@ -25,7 +26,10 @@ int main() {
(comment)
(expression_statement (math_expression
(identifier)
(call_expression (identifier) (argument_list (number_literal))))))))
(call_expression (identifier) (argument_list (number_literal)))))
(expression_statement (call_expression
(identifier)
(argument_list (math_expression (identifier) (identifier))))))))
========================================================================
casts vs multiplications

+ 11
- 10
grammar.js Bestand weergeven

@ -1,4 +1,5 @@
const PREC = {
PAREN_DECLARATOR: -10,
ASSIGNMENT: -1,
CONDITIONAL: -2,
DEFAULT: 0,
@ -174,7 +175,7 @@ module.exports = grammar({
$.pointer_declarator,
$.function_declarator,
$.array_declarator,
seq('(', $._declarator, ')'),
prec.dynamic(PREC.PAREN_DECLARATOR, seq('(', $._declarator, ')')),
$.identifier
),
@ -182,7 +183,7 @@ module.exports = grammar({
alias($.pointer_field_declarator, $.pointer_declarator),
alias($.function_field_declarator, $.function_declarator),
alias($.array_field_declarator, $.array_declarator),
seq('(', $._field_declarator, ')'),
prec.dynamic(PREC.PAREN_DECLARATOR, seq('(', $._field_declarator, ')')),
$._field_identifier
),
@ -190,7 +191,7 @@ module.exports = grammar({
alias($.pointer_type_declarator, $.pointer_declarator),
alias($.function_type_declarator, $.function_declarator),
alias($.array_type_declarator, $.array_declarator),
seq('(', $._type_declarator, ')'),
prec.dynamic(PREC.PAREN_DECLARATOR, seq('(', $._type_declarator, ')')),
$._type_identifier
),
@ -201,10 +202,10 @@ module.exports = grammar({
prec(1, seq('(', $._abstract_declarator, ')'))
),
pointer_declarator: $ => prec.right(seq('*', repeat($.type_qualifier), $._declarator)),
pointer_field_declarator: $ => prec.right(seq('*', repeat($.type_qualifier), $._field_declarator)),
pointer_type_declarator: $ => prec.right(seq('*', repeat($.type_qualifier), $._type_declarator)),
abstract_pointer_declarator: $ => prec.right(seq('*', repeat($.type_qualifier), optional($._abstract_declarator))),
pointer_declarator: $ => prec.dynamic(1, prec.right(seq('*', repeat($.type_qualifier), $._declarator))),
pointer_field_declarator: $ => prec.dynamic(1, prec.right(seq('*', repeat($.type_qualifier), $._field_declarator))),
pointer_type_declarator: $ => prec.dynamic(1, prec.right(seq('*', repeat($.type_qualifier), $._type_declarator))),
abstract_pointer_declarator: $ => prec.dynamic(1, prec.right(seq('*', repeat($.type_qualifier), optional($._abstract_declarator)))),
function_declarator: $ => prec(1, seq($._declarator, $.parameter_list)),
function_field_declarator: $ => prec(1, seq($._field_declarator, $.parameter_list)),
@ -371,11 +372,11 @@ module.exports = grammar({
optional(seq('=', $._expression))
),
parameter_list: $ => prec.dynamic(1, seq(
parameter_list: $ => seq(
'(',
commaSep(choice($.parameter_declaration, '...')),
')'
)),
),
parameter_declaration: $ => seq(
$._declaration_specifiers,
@ -619,7 +620,7 @@ module.exports = grammar({
call_expression: $ => prec(PREC.CALL, seq($._expression, $.argument_list)),
argument_list: $ => prec.dynamic(1, seq('(', commaSep($._expression), ')')),
argument_list: $ => seq('(', commaSep($._expression), ')'),
field_expression: $ => seq(
prec(PREC.FIELD, seq(

+ 252
- 231
src/grammar.json Bestand weergeven

@ -1172,21 +1172,25 @@
"name": "array_declarator"
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "SYMBOL",
"name": "_declarator"
},
{
"type": "STRING",
"value": ")"
}
]
"type": "PREC_DYNAMIC",
"value": -10,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "SYMBOL",
"name": "_declarator"
},
{
"type": "STRING",
"value": ")"
}
]
}
},
{
"type": "SYMBOL",
@ -1225,21 +1229,25 @@
"value": "array_declarator"
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "SYMBOL",
"name": "_field_declarator"
},
{
"type": "STRING",
"value": ")"
}
]
"type": "PREC_DYNAMIC",
"value": -10,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "SYMBOL",
"name": "_field_declarator"
},
{
"type": "STRING",
"value": ")"
}
]
}
},
{
"type": "SYMBOL",
@ -1278,21 +1286,25 @@
"value": "array_declarator"
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "SYMBOL",
"name": "_type_declarator"
},
{
"type": "STRING",
"value": ")"
}
]
"type": "PREC_DYNAMIC",
"value": -10,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "SYMBOL",
"name": "_type_declarator"
},
{
"type": "STRING",
"value": ")"
}
]
}
},
{
"type": "SYMBOL",
@ -1339,107 +1351,123 @@
]
},
"pointer_declarator": {
"type": "PREC_RIGHT",
"value": 0,
"type": "PREC_DYNAMIC",
"value": 1,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "*"
},
{
"type": "REPEAT",
"content": {
"type": "PREC_RIGHT",
"value": 0,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "*"
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "type_qualifier"
}
},
{
"type": "SYMBOL",
"name": "type_qualifier"
"name": "_declarator"
}
},
{
"type": "SYMBOL",
"name": "_declarator"
}
]
]
}
}
},
"pointer_field_declarator": {
"type": "PREC_RIGHT",
"value": 0,
"type": "PREC_DYNAMIC",
"value": 1,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "*"
},
{
"type": "REPEAT",
"content": {
"type": "PREC_RIGHT",
"value": 0,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "*"
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "type_qualifier"
}
},
{
"type": "SYMBOL",
"name": "type_qualifier"
"name": "_field_declarator"
}
},
{
"type": "SYMBOL",
"name": "_field_declarator"
}
]
]
}
}
},
"pointer_type_declarator": {
"type": "PREC_RIGHT",
"value": 0,
"type": "PREC_DYNAMIC",
"value": 1,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "*"
},
{
"type": "REPEAT",
"content": {
"type": "PREC_RIGHT",
"value": 0,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "*"
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "type_qualifier"
}
},
{
"type": "SYMBOL",
"name": "type_qualifier"
"name": "_type_declarator"
}
},
{
"type": "SYMBOL",
"name": "_type_declarator"
}
]
]
}
}
},
"abstract_pointer_declarator": {
"type": "PREC_RIGHT",
"value": 0,
"type": "PREC_DYNAMIC",
"value": 1,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "*"
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "type_qualifier"
}
},
{
"type": "CHOICE",
"members": [
{
"type": "PREC_RIGHT",
"value": 0,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "*"
},
{
"type": "REPEAT",
"content": {
"type": "SYMBOL",
"name": "_abstract_declarator"
},
{
"type": "BLANK"
"name": "type_qualifier"
}
]
}
]
},
{
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "_abstract_declarator"
},
{
"type": "BLANK"
}
]
}
]
}
}
},
"function_declarator": {
@ -2305,72 +2333,68 @@
]
},
"parameter_list": {
"type": "PREC_DYNAMIC",
"value": 1,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "CHOICE",
"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",
"members": [
{
"type": "SYMBOL",
"name": "parameter_declaration"
"type": "STRING",
"value": ","
},
{
"type": "STRING",
"value": "..."
"type": "CHOICE",
"members": [
{
"type": "SYMBOL",
"name": "parameter_declaration"
},
{
"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",
@ -3658,54 +3682,50 @@
}
},
"argument_list": {
"type": "PREC_DYNAMIC",
"value": 1,
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "_expression"
}
]
}
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "CHOICE",
"members": [
{
"type": "SEQ",
"members": [
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "REPEAT",
"content": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": ","
},
{
"type": "SYMBOL",
"name": "_expression"
}
]
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ")"
}
]
}
}
]
},
{
"type": "BLANK"
}
]
},
{
"type": "STRING",
"value": ")"
}
]
},
"field_expression": {
"type": "SEQ",
@ -4349,6 +4369,7 @@
"_statement_identifier"
],
"PREC": {
"PAREN_DECLARATOR": -10,
"ASSIGNMENT": -1,
"CONDITIONAL": -2,
"DEFAULT": 0,

+ 21
- 21
src/parser.c Bestand weergeven

@ -56009,7 +56009,7 @@ static TSParseActionEntry ts_parse_actions[] = {
[520] = {.count = 1, .reusable = false}, SHIFT(215),
[522] = {.count = 1, .reusable = false}, SHIFT(53),
[524] = {.count = 1, .reusable = true}, SHIFT(217),
[526] = {.count = 1, .reusable = true}, REDUCE(sym_pointer_declarator, 2),
[526] = {.count = 1, .reusable = true}, REDUCE(sym_pointer_declarator, 2, .dynamic_precedence = 1),
[528] = {.count = 1, .reusable = false}, SHIFT(218),
[530] = {.count = 1, .reusable = true}, SHIFT(220),
[532] = {.count = 1, .reusable = true}, SHIFT(221),
@ -56126,7 +56126,7 @@ static TSParseActionEntry ts_parse_actions[] = {
[763] = {.count = 1, .reusable = false}, REDUCE(sym_preproc_ifdef, 4, .alias_sequence_id = 17),
[765] = {.count = 1, .reusable = true}, SHIFT(327),
[767] = {.count = 1, .reusable = true}, SHIFT(329),
[769] = {.count = 1, .reusable = true}, REDUCE(sym_pointer_type_declarator, 2),
[769] = {.count = 1, .reusable = true}, REDUCE(sym_pointer_type_declarator, 2, .dynamic_precedence = 1),
[771] = {.count = 1, .reusable = true}, REDUCE(sym_type_definition, 4),
[773] = {.count = 1, .reusable = false}, REDUCE(sym_type_definition, 4),
[775] = {.count = 1, .reusable = true}, SHIFT(331),
@ -56192,7 +56192,7 @@ static TSParseActionEntry ts_parse_actions[] = {
[905] = {.count = 2, .reusable = false}, REDUCE(aux_sym_preproc_if_in_field_declaration_list_repeat1, 2), SHIFT_REPEAT(14),
[908] = {.count = 2, .reusable = false}, REDUCE(aux_sym_preproc_if_in_field_declaration_list_repeat1, 2), SHIFT_REPEAT(15),
[911] = {.count = 2, .reusable = false}, REDUCE(aux_sym_sized_type_specifier_repeat1, 2), SHIFT_REPEAT(207),
[914] = {.count = 1, .reusable = true}, REDUCE(sym_abstract_pointer_declarator, 1),
[914] = {.count = 1, .reusable = true}, REDUCE(sym_abstract_pointer_declarator, 1, .dynamic_precedence = 1),
[916] = {.count = 1, .reusable = true}, SHIFT(11),
[918] = {.count = 1, .reusable = true}, SHIFT(388),
[920] = {.count = 1, .reusable = true}, SHIFT(390),
@ -56203,8 +56203,8 @@ static TSParseActionEntry ts_parse_actions[] = {
[930] = {.count = 1, .reusable = true}, REDUCE(sym_macro_type_specifier, 4),
[932] = {.count = 1, .reusable = false}, REDUCE(sym_macro_type_specifier, 4),
[934] = {.count = 2, .reusable = false}, REDUCE(aux_sym_sized_type_specifier_repeat1, 2), SHIFT_REPEAT(215),
[937] = {.count = 1, .reusable = true}, REDUCE(sym__declarator, 3),
[939] = {.count = 1, .reusable = true}, REDUCE(sym_pointer_declarator, 3),
[937] = {.count = 1, .reusable = true}, REDUCE(sym__declarator, 3, .dynamic_precedence = -10),
[939] = {.count = 1, .reusable = true}, REDUCE(sym_pointer_declarator, 3, .dynamic_precedence = 1),
[941] = {.count = 1, .reusable = true}, REDUCE(aux_sym_type_definition_repeat1, 2),
[943] = {.count = 1, .reusable = true}, REDUCE(aux_sym_declaration_repeat1, 2),
[945] = {.count = 1, .reusable = true}, SHIFT(395),
@ -56298,7 +56298,7 @@ static TSParseActionEntry ts_parse_actions[] = {
[1125] = {.count = 1, .reusable = true}, SHIFT(467),
[1127] = {.count = 1, .reusable = true}, SHIFT(469),
[1129] = {.count = 1, .reusable = true}, SHIFT(470),
[1131] = {.count = 1, .reusable = true}, REDUCE(sym_parameter_list, 2, .dynamic_precedence = 1),
[1131] = {.count = 1, .reusable = true}, REDUCE(sym_parameter_list, 2),
[1133] = {.count = 1, .reusable = true}, REDUCE(sym_parameter_declaration, 1),
[1135] = {.count = 1, .reusable = true}, SHIFT(472),
[1137] = {.count = 1, .reusable = true}, SHIFT(473),
@ -56385,8 +56385,8 @@ static TSParseActionEntry ts_parse_actions[] = {
[1308] = {.count = 1, .reusable = false}, REDUCE(sym_preproc_ifdef, 5, .alias_sequence_id = 20),
[1310] = {.count = 1, .reusable = true}, REDUCE(sym_preproc_ifdef, 5, .alias_sequence_id = 21),
[1312] = {.count = 1, .reusable = false}, REDUCE(sym_preproc_ifdef, 5, .alias_sequence_id = 21),
[1314] = {.count = 1, .reusable = true}, REDUCE(sym__type_declarator, 3),
[1316] = {.count = 1, .reusable = true}, REDUCE(sym_pointer_type_declarator, 3),
[1314] = {.count = 1, .reusable = true}, REDUCE(sym__type_declarator, 3, .dynamic_precedence = -10),
[1316] = {.count = 1, .reusable = true}, REDUCE(sym_pointer_type_declarator, 3, .dynamic_precedence = 1),
[1318] = {.count = 1, .reusable = true}, REDUCE(sym_array_type_declarator, 3),
[1320] = {.count = 1, .reusable = true}, SHIFT(552),
[1322] = {.count = 1, .reusable = true}, SHIFT(553),
@ -56436,7 +56436,7 @@ static TSParseActionEntry ts_parse_actions[] = {
[1411] = {.count = 1, .reusable = true}, SHIFT(586),
[1413] = {.count = 1, .reusable = true}, SHIFT(587),
[1415] = {.count = 1, .reusable = true}, SHIFT(591),
[1417] = {.count = 1, .reusable = true}, REDUCE(sym_pointer_field_declarator, 2),
[1417] = {.count = 1, .reusable = true}, REDUCE(sym_pointer_field_declarator, 2, .dynamic_precedence = 1),
[1419] = {.count = 1, .reusable = true}, SHIFT(594),
[1421] = {.count = 1, .reusable = true}, SHIFT(595),
[1423] = {.count = 1, .reusable = false}, SHIFT(595),
@ -56465,7 +56465,7 @@ static TSParseActionEntry ts_parse_actions[] = {
[1469] = {.count = 1, .reusable = true}, REDUCE(sym_function_field_declarator, 2),
[1471] = {.count = 1, .reusable = true}, SHIFT(615),
[1473] = {.count = 1, .reusable = true}, SHIFT(617),
[1475] = {.count = 1, .reusable = true}, REDUCE(sym_abstract_pointer_declarator, 2),
[1475] = {.count = 1, .reusable = true}, REDUCE(sym_abstract_pointer_declarator, 2, .dynamic_precedence = 1),
[1477] = {.count = 1, .reusable = true}, REDUCE(sym_abstract_array_declarator, 2),
[1479] = {.count = 1, .reusable = true}, SHIFT(620),
[1481] = {.count = 1, .reusable = true}, SHIFT(621),
@ -56656,7 +56656,7 @@ static TSParseActionEntry ts_parse_actions[] = {
[1888] = {.count = 2, .reusable = false}, REDUCE(aux_sym_preproc_if_in_compound_statement_repeat1, 2), SHIFT_REPEAT(251),
[1891] = {.count = 2, .reusable = false}, REDUCE(aux_sym_preproc_if_in_compound_statement_repeat1, 2), SHIFT_REPEAT(247),
[1894] = {.count = 1, .reusable = true}, SHIFT(748),
[1896] = {.count = 1, .reusable = true}, REDUCE(sym_parameter_list, 3, .dynamic_precedence = 1),
[1896] = {.count = 1, .reusable = true}, REDUCE(sym_parameter_list, 3),
[1898] = {.count = 1, .reusable = true}, SHIFT(749),
[1900] = {.count = 1, .reusable = true}, SHIFT(751),
[1902] = {.count = 1, .reusable = false}, SHIFT(752),
@ -56774,8 +56774,8 @@ static TSParseActionEntry ts_parse_actions[] = {
[2129] = {.count = 1, .reusable = true}, REDUCE(sym_preproc_ifdef_in_field_declaration_list, 4, .alias_sequence_id = 17),
[2131] = {.count = 1, .reusable = true}, SHIFT(827),
[2133] = {.count = 1, .reusable = true}, SHIFT(828),
[2135] = {.count = 1, .reusable = true}, REDUCE(sym__field_declarator, 3),
[2137] = {.count = 1, .reusable = true}, REDUCE(sym_pointer_field_declarator, 3),
[2135] = {.count = 1, .reusable = true}, REDUCE(sym__field_declarator, 3, .dynamic_precedence = -10),
[2137] = {.count = 1, .reusable = true}, REDUCE(sym_pointer_field_declarator, 3, .dynamic_precedence = 1),
[2139] = {.count = 1, .reusable = true}, SHIFT(829),
[2141] = {.count = 1, .reusable = false}, REDUCE(sym_field_declaration, 4),
[2143] = {.count = 1, .reusable = true}, REDUCE(sym_field_declaration, 4),
@ -56811,7 +56811,7 @@ static TSParseActionEntry ts_parse_actions[] = {
[2203] = {.count = 1, .reusable = false}, SHIFT(846),
[2205] = {.count = 2, .reusable = true}, REDUCE(aux_sym_field_declaration_repeat1, 2), SHIFT_REPEAT(377),
[2208] = {.count = 1, .reusable = true}, REDUCE(sym__abstract_declarator, 3),
[2210] = {.count = 1, .reusable = true}, REDUCE(sym_abstract_pointer_declarator, 3),
[2210] = {.count = 1, .reusable = true}, REDUCE(sym_abstract_pointer_declarator, 3, .dynamic_precedence = 1),
[2212] = {.count = 2, .reusable = true}, REDUCE(aux_sym_type_definition_repeat1, 2), SHIFT_REPEAT(11),
[2215] = {.count = 1, .reusable = true}, REDUCE(sym_abstract_array_declarator, 3),
[2217] = {.count = 1, .reusable = true}, SHIFT(847),
@ -56963,8 +56963,8 @@ static TSParseActionEntry ts_parse_actions[] = {
[2509] = {.count = 1, .reusable = false}, REDUCE(sym_labeled_statement, 3, .alias_sequence_id = 29),
[2511] = {.count = 1, .reusable = true}, REDUCE(sym_labeled_statement, 3, .alias_sequence_id = 29),
[2513] = {.count = 1, .reusable = true}, REDUCE(sym_comma_expression, 3),
[2515] = {.count = 1, .reusable = true}, REDUCE(sym_argument_list, 2, .dynamic_precedence = 1),
[2517] = {.count = 1, .reusable = false}, REDUCE(sym_argument_list, 2, .dynamic_precedence = 1),
[2515] = {.count = 1, .reusable = true}, REDUCE(sym_argument_list, 2),
[2517] = {.count = 1, .reusable = false}, REDUCE(sym_argument_list, 2),
[2519] = {.count = 1, .reusable = true}, SHIFT(966),
[2521] = {.count = 1, .reusable = true}, SHIFT(967),
[2523] = {.count = 1, .reusable = true}, REDUCE(sym_math_expression, 3),
@ -56988,7 +56988,7 @@ static TSParseActionEntry ts_parse_actions[] = {
[2559] = {.count = 1, .reusable = false}, REDUCE(aux_sym_concatenated_string_repeat1, 2),
[2561] = {.count = 2, .reusable = true}, REDUCE(aux_sym_concatenated_string_repeat1, 2), SHIFT_REPEAT(22),
[2564] = {.count = 1, .reusable = true}, REDUCE(aux_sym_parameter_list_repeat1, 2),
[2566] = {.count = 1, .reusable = true}, REDUCE(sym_parameter_list, 4, .dynamic_precedence = 1),
[2566] = {.count = 1, .reusable = true}, REDUCE(sym_parameter_list, 4),
[2568] = {.count = 2, .reusable = true}, REDUCE(aux_sym_parameter_list_repeat1, 2), SHIFT_REPEAT(469),
[2571] = {.count = 2, .reusable = true}, REDUCE(sym__declarator, 1), REDUCE(sym__type_specifier, 1, .alias_sequence_id = 1),
[2574] = {.count = 3, .reusable = true}, REDUCE(sym__declarator, 1), REDUCE(sym__type_specifier, 1, .alias_sequence_id = 1), SHIFT(42),
@ -57167,8 +57167,8 @@ static TSParseActionEntry ts_parse_actions[] = {
[2947] = {.count = 1, .reusable = false}, SHIFT(242),
[2949] = {.count = 1, .reusable = true}, SHIFT(1086),
[2951] = {.count = 1, .reusable = false}, SHIFT(1086),
[2953] = {.count = 1, .reusable = true}, REDUCE(sym_argument_list, 3, .dynamic_precedence = 1),
[2955] = {.count = 1, .reusable = false}, REDUCE(sym_argument_list, 3, .dynamic_precedence = 1),
[2953] = {.count = 1, .reusable = true}, REDUCE(sym_argument_list, 3),
[2955] = {.count = 1, .reusable = false}, REDUCE(sym_argument_list, 3),
[2957] = {.count = 1, .reusable = true}, SHIFT(1087),
[2959] = {.count = 1, .reusable = true}, REDUCE(sym_subscript_expression, 4),
[2961] = {.count = 1, .reusable = false}, REDUCE(sym_subscript_expression, 4),
@ -57307,8 +57307,8 @@ static TSParseActionEntry ts_parse_actions[] = {
[3251] = {.count = 1, .reusable = false}, SHIFT(1178),
[3253] = {.count = 1, .reusable = true}, SHIFT(1179),
[3255] = {.count = 1, .reusable = true}, REDUCE(aux_sym_for_statement_repeat1, 2),
[3257] = {.count = 1, .reusable = true}, REDUCE(sym_argument_list, 4, .dynamic_precedence = 1),
[3259] = {.count = 1, .reusable = false}, REDUCE(sym_argument_list, 4, .dynamic_precedence = 1),
[3257] = {.count = 1, .reusable = true}, REDUCE(sym_argument_list, 4),
[3259] = {.count = 1, .reusable = false}, REDUCE(sym_argument_list, 4),
[3261] = {.count = 2, .reusable = true}, REDUCE(aux_sym_for_statement_repeat1, 2), SHIFT_REPEAT(966),
[3264] = {.count = 1, .reusable = true}, REDUCE(sym_conditional_expression, 5),
[3266] = {.count = 1, .reusable = true}, REDUCE(sym_initializer_list, 5),

Laden…
Annuleren
Opslaan