Skip to content

Commit 8371c86

Browse files
committed
Add enumeration type
1 parent 2ec113c commit 8371c86

File tree

5 files changed

+470186
-457896
lines changed

5 files changed

+470186
-457896
lines changed

grammar.js

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -493,6 +493,7 @@ module.exports = grammar({
493493
$.public_statement,
494494
$.private_statement,
495495
$.enum,
496+
$.enumeration_type,
496497
$.interface,
497498
$.derived_type_definition,
498499
seq($.namelist_statement, $._end_of_statement),
@@ -1623,6 +1624,21 @@ module.exports = grammar({
16231624
$.language_binding
16241625
),
16251626

1627+
enumeration_type: $ => seq(
1628+
$.enumeration_type_statement,
1629+
repeat($.enumerator_statement),
1630+
$.end_enumeration_type_statement,
1631+
$._end_of_statement
1632+
),
1633+
1634+
enumeration_type_statement: $ => seq(
1635+
caseInsensitive('enumeration'),
1636+
caseInsensitive('type'),
1637+
optional(seq(',', $.access_specifier)),
1638+
optional('::'),
1639+
$._type_name,
1640+
),
1641+
16261642
enumerator_statement: $ => seq(
16271643
caseInsensitive('enumerator'),
16281644
optional('::'),
@@ -1633,6 +1649,12 @@ module.exports = grammar({
16331649
),
16341650

16351651
end_enum_statement: $ => whiteSpacedKeyword('end', 'enum'),
1652+
end_enumeration_type_statement: $ => seq(
1653+
caseInsensitive('end'),
1654+
caseInsensitive('enumeration'),
1655+
caseInsensitive('type'),
1656+
optional($._name)
1657+
),
16361658

16371659
// precedence is used to override a conflict with the complex literal
16381660
unit_identifier: $ => prec(1, choice(

src/grammar.json

Lines changed: 132 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9019,6 +9019,10 @@
90199019
"type": "SYMBOL",
90209020
"name": "enum"
90219021
},
9022+
{
9023+
"type": "SYMBOL",
9024+
"name": "enumeration_type"
9025+
},
90229026
{
90239027
"type": "SYMBOL",
90249028
"name": "interface"
@@ -16609,6 +16613,90 @@
1660916613
}
1661016614
]
1661116615
},
16616+
"enumeration_type": {
16617+
"type": "SEQ",
16618+
"members": [
16619+
{
16620+
"type": "SYMBOL",
16621+
"name": "enumeration_type_statement"
16622+
},
16623+
{
16624+
"type": "REPEAT",
16625+
"content": {
16626+
"type": "SYMBOL",
16627+
"name": "enumerator_statement"
16628+
}
16629+
},
16630+
{
16631+
"type": "SYMBOL",
16632+
"name": "end_enumeration_type_statement"
16633+
},
16634+
{
16635+
"type": "SYMBOL",
16636+
"name": "_end_of_statement"
16637+
}
16638+
]
16639+
},
16640+
"enumeration_type_statement": {
16641+
"type": "SEQ",
16642+
"members": [
16643+
{
16644+
"type": "ALIAS",
16645+
"content": {
16646+
"type": "PATTERN",
16647+
"value": "[eE][nN][uU][mM][eE][rR][aA][tT][iI][oO][nN]"
16648+
},
16649+
"named": false,
16650+
"value": "enumeration"
16651+
},
16652+
{
16653+
"type": "ALIAS",
16654+
"content": {
16655+
"type": "PATTERN",
16656+
"value": "[tT][yY][pP][eE]"
16657+
},
16658+
"named": false,
16659+
"value": "type"
16660+
},
16661+
{
16662+
"type": "CHOICE",
16663+
"members": [
16664+
{
16665+
"type": "SEQ",
16666+
"members": [
16667+
{
16668+
"type": "STRING",
16669+
"value": ","
16670+
},
16671+
{
16672+
"type": "SYMBOL",
16673+
"name": "access_specifier"
16674+
}
16675+
]
16676+
},
16677+
{
16678+
"type": "BLANK"
16679+
}
16680+
]
16681+
},
16682+
{
16683+
"type": "CHOICE",
16684+
"members": [
16685+
{
16686+
"type": "STRING",
16687+
"value": "::"
16688+
},
16689+
{
16690+
"type": "BLANK"
16691+
}
16692+
]
16693+
},
16694+
{
16695+
"type": "SYMBOL",
16696+
"name": "_type_name"
16697+
}
16698+
]
16699+
},
1661216700
"enumerator_statement": {
1661316701
"type": "SEQ",
1661416702
"members": [
@@ -16723,6 +16811,50 @@
1672316811
"named": false,
1672416812
"value": "endenum"
1672516813
},
16814+
"end_enumeration_type_statement": {
16815+
"type": "SEQ",
16816+
"members": [
16817+
{
16818+
"type": "ALIAS",
16819+
"content": {
16820+
"type": "PATTERN",
16821+
"value": "[eE][nN][dD]"
16822+
},
16823+
"named": false,
16824+
"value": "end"
16825+
},
16826+
{
16827+
"type": "ALIAS",
16828+
"content": {
16829+
"type": "PATTERN",
16830+
"value": "[eE][nN][uU][mM][eE][rR][aA][tT][iI][oO][nN]"
16831+
},
16832+
"named": false,
16833+
"value": "enumeration"
16834+
},
16835+
{
16836+
"type": "ALIAS",
16837+
"content": {
16838+
"type": "PATTERN",
16839+
"value": "[tT][yY][pP][eE]"
16840+
},
16841+
"named": false,
16842+
"value": "type"
16843+
},
16844+
{
16845+
"type": "CHOICE",
16846+
"members": [
16847+
{
16848+
"type": "SYMBOL",
16849+
"name": "_name"
16850+
},
16851+
{
16852+
"type": "BLANK"
16853+
}
16854+
]
16855+
}
16856+
]
16857+
},
1672616858
"unit_identifier": {
1672716859
"type": "PREC",
1672816860
"value": 1,

0 commit comments

Comments
 (0)