Skip to content

Commit 5fc069e

Browse files
authored
Merge pull request stadelmanma#124 from stadelmanma/declarator-field-for-procedure-statements
Add parent node for procedure bindings and enumerator initialisation
2 parents 7ee481d + 11ea166 commit 5fc069e

File tree

7 files changed

+369257
-370444
lines changed

7 files changed

+369257
-370444
lines changed

grammar.js

Lines changed: 9 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -706,7 +706,7 @@ module.exports = grammar({
706706
),
707707

708708
procedure_statement: $ => seq(
709-
$._procedure_kind,
709+
$.procedure_kind,
710710
optional(seq(
711711
'(', alias($.identifier, $.procedure_interface), ')'
712712
)),
@@ -715,20 +715,20 @@ module.exports = grammar({
715715
commaSep1($.procedure_attribute)
716716
)),
717717
optional('::'),
718-
commaSep1(choice(
718+
commaSep1(field('declarator', choice(
719719
$.method_name,
720-
seq($.binding_name, '=>', $.method_name),
721-
)),
720+
$.binding,
721+
))),
722722
$._end_of_statement,
723723
),
724-
724+
binding: $ => seq($.binding_name, '=>', $.method_name),
725725
binding_name: $ => choice(
726726
$.identifier,
727727
$._generic_procedure
728728
),
729729
method_name: $ => alias($.identifier, 'method_name'),
730730

731-
_procedure_kind: $ => choice(
731+
procedure_kind: $ => choice(
732732
caseInsensitive('generic'),
733733
caseInsensitive('initial'),
734734
caseInsensitive('procedure'),
@@ -1589,13 +1589,10 @@ module.exports = grammar({
15891589
enumerator_statement: $ => seq(
15901590
caseInsensitive('enumerator'),
15911591
optional('::'),
1592-
commaSep1(choice(
1592+
commaSep1(field('declarator', choice(
15931593
$.identifier,
1594-
seq($.identifier, '=', choice(
1595-
$.number_literal,
1596-
$.unary_expression,
1597-
))
1598-
))
1594+
alias($._declaration_assignment, $.init_declarator),
1595+
)))
15991596
),
16001597

16011598
end_enum_statement: $ => whiteSpacedKeyword('end', 'enum'),

src/grammar.json

Lines changed: 85 additions & 112 deletions
Original file line numberDiff line numberDiff line change
@@ -10662,7 +10662,7 @@
1066210662
"members": [
1066310663
{
1066410664
"type": "SYMBOL",
10665-
"name": "_procedure_kind"
10665+
"name": "procedure_kind"
1066610666
},
1066710667
{
1066810668
"type": "CHOICE",
@@ -10752,30 +10752,21 @@
1075210752
"type": "SEQ",
1075310753
"members": [
1075410754
{
10755-
"type": "CHOICE",
10756-
"members": [
10757-
{
10758-
"type": "SYMBOL",
10759-
"name": "method_name"
10760-
},
10761-
{
10762-
"type": "SEQ",
10763-
"members": [
10764-
{
10765-
"type": "SYMBOL",
10766-
"name": "binding_name"
10767-
},
10768-
{
10769-
"type": "STRING",
10770-
"value": "=>"
10771-
},
10772-
{
10773-
"type": "SYMBOL",
10774-
"name": "method_name"
10775-
}
10776-
]
10777-
}
10778-
]
10755+
"type": "FIELD",
10756+
"name": "declarator",
10757+
"content": {
10758+
"type": "CHOICE",
10759+
"members": [
10760+
{
10761+
"type": "SYMBOL",
10762+
"name": "method_name"
10763+
},
10764+
{
10765+
"type": "SYMBOL",
10766+
"name": "binding"
10767+
}
10768+
]
10769+
}
1077910770
},
1078010771
{
1078110772
"type": "REPEAT",
@@ -10787,30 +10778,21 @@
1078710778
"value": ","
1078810779
},
1078910780
{
10790-
"type": "CHOICE",
10791-
"members": [
10792-
{
10793-
"type": "SYMBOL",
10794-
"name": "method_name"
10795-
},
10796-
{
10797-
"type": "SEQ",
10798-
"members": [
10799-
{
10800-
"type": "SYMBOL",
10801-
"name": "binding_name"
10802-
},
10803-
{
10804-
"type": "STRING",
10805-
"value": "=>"
10806-
},
10807-
{
10808-
"type": "SYMBOL",
10809-
"name": "method_name"
10810-
}
10811-
]
10812-
}
10813-
]
10781+
"type": "FIELD",
10782+
"name": "declarator",
10783+
"content": {
10784+
"type": "CHOICE",
10785+
"members": [
10786+
{
10787+
"type": "SYMBOL",
10788+
"name": "method_name"
10789+
},
10790+
{
10791+
"type": "SYMBOL",
10792+
"name": "binding"
10793+
}
10794+
]
10795+
}
1081410796
}
1081510797
]
1081610798
}
@@ -10823,6 +10805,23 @@
1082310805
}
1082410806
]
1082510807
},
10808+
"binding": {
10809+
"type": "SEQ",
10810+
"members": [
10811+
{
10812+
"type": "SYMBOL",
10813+
"name": "binding_name"
10814+
},
10815+
{
10816+
"type": "STRING",
10817+
"value": "=>"
10818+
},
10819+
{
10820+
"type": "SYMBOL",
10821+
"name": "method_name"
10822+
}
10823+
]
10824+
},
1082610825
"binding_name": {
1082710826
"type": "CHOICE",
1082810827
"members": [
@@ -10845,7 +10844,7 @@
1084510844
"named": false,
1084610845
"value": "method_name"
1084710846
},
10848-
"_procedure_kind": {
10847+
"procedure_kind": {
1084910848
"type": "CHOICE",
1085010849
"members": [
1085110850
{
@@ -16405,39 +16404,26 @@
1640516404
"type": "SEQ",
1640616405
"members": [
1640716406
{
16408-
"type": "CHOICE",
16409-
"members": [
16410-
{
16411-
"type": "SYMBOL",
16412-
"name": "identifier"
16413-
},
16414-
{
16415-
"type": "SEQ",
16416-
"members": [
16417-
{
16407+
"type": "FIELD",
16408+
"name": "declarator",
16409+
"content": {
16410+
"type": "CHOICE",
16411+
"members": [
16412+
{
16413+
"type": "SYMBOL",
16414+
"name": "identifier"
16415+
},
16416+
{
16417+
"type": "ALIAS",
16418+
"content": {
1641816419
"type": "SYMBOL",
16419-
"name": "identifier"
16420-
},
16421-
{
16422-
"type": "STRING",
16423-
"value": "="
16420+
"name": "_declaration_assignment"
1642416421
},
16425-
{
16426-
"type": "CHOICE",
16427-
"members": [
16428-
{
16429-
"type": "SYMBOL",
16430-
"name": "number_literal"
16431-
},
16432-
{
16433-
"type": "SYMBOL",
16434-
"name": "unary_expression"
16435-
}
16436-
]
16437-
}
16438-
]
16439-
}
16440-
]
16422+
"named": true,
16423+
"value": "init_declarator"
16424+
}
16425+
]
16426+
}
1644116427
},
1644216428
{
1644316429
"type": "REPEAT",
@@ -16449,39 +16435,26 @@
1644916435
"value": ","
1645016436
},
1645116437
{
16452-
"type": "CHOICE",
16453-
"members": [
16454-
{
16455-
"type": "SYMBOL",
16456-
"name": "identifier"
16457-
},
16458-
{
16459-
"type": "SEQ",
16460-
"members": [
16461-
{
16438+
"type": "FIELD",
16439+
"name": "declarator",
16440+
"content": {
16441+
"type": "CHOICE",
16442+
"members": [
16443+
{
16444+
"type": "SYMBOL",
16445+
"name": "identifier"
16446+
},
16447+
{
16448+
"type": "ALIAS",
16449+
"content": {
1646216450
"type": "SYMBOL",
16463-
"name": "identifier"
16451+
"name": "_declaration_assignment"
1646416452
},
16465-
{
16466-
"type": "STRING",
16467-
"value": "="
16468-
},
16469-
{
16470-
"type": "CHOICE",
16471-
"members": [
16472-
{
16473-
"type": "SYMBOL",
16474-
"name": "number_literal"
16475-
},
16476-
{
16477-
"type": "SYMBOL",
16478-
"name": "unary_expression"
16479-
}
16480-
]
16481-
}
16482-
]
16483-
}
16484-
]
16453+
"named": true,
16454+
"value": "init_declarator"
16455+
}
16456+
]
16457+
}
1648516458
}
1648616459
]
1648716460
}

0 commit comments

Comments
 (0)