Просмотр исходного кода

Boost the dynamic precedence of parameter lists (mostly for C++)

pull/8/head
Max Brunsfeld 8 лет назад
Родитель
Сommit
d80749fc3f
3 измененных файлов: 64 добавлений и 60 удалений
  1. +2
    -2
      grammar.js
  2. +59
    -55
      src/grammar.json
  3. +3
    -3
      src/parser.c

+ 2
- 2
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,

+ 59
- 55
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",

+ 3
- 3
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),

Загрузка…
Отмена
Сохранить