Skip to content

Commit b3b9be2

Browse files
committed
Add deallocate and nullify statements
Previously these were parsed as standalone `call_expression`s, but the previous change made these ungrammatical.
1 parent cda402d commit b3b9be2

File tree

5 files changed

+568959
-559724
lines changed

5 files changed

+568959
-559724
lines changed

grammar.js

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1078,6 +1078,8 @@ module.exports = grammar({
10781078
$.associate_statement,
10791079
$.file_position_statement,
10801080
$.allocate_statement,
1081+
$.deallocate_statement,
1082+
$.nullify_statement,
10811083
$.entry_statement,
10821084
$.assign_statement,
10831085
$.coarray_statement,
@@ -1776,6 +1778,21 @@ module.exports = grammar({
17761778
alias($.coarray_index, $.coarray_size),
17771779
),
17781780

1781+
deallocate_statement: $ => seq(
1782+
caseInsensitive('deallocate'),
1783+
'(',
1784+
commaSep1(choice($.identifier, $.derived_type_member_expression)),
1785+
optional(seq(',', commaSep1($.keyword_argument))),
1786+
')',
1787+
),
1788+
1789+
nullify_statement: $ => seq(
1790+
caseInsensitive('nullify'),
1791+
'(',
1792+
commaSep1(choice($.identifier, $.derived_type_member_expression)),
1793+
')',
1794+
),
1795+
17791796
// Obsolescent feature
17801797
entry_statement: $ => seq(
17811798
caseInsensitive('entry'),

src/grammar.json

Lines changed: 180 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13125,6 +13125,14 @@
1312513125
"type": "SYMBOL",
1312613126
"name": "allocate_statement"
1312713127
},
13128+
{
13129+
"type": "SYMBOL",
13130+
"name": "deallocate_statement"
13131+
},
13132+
{
13133+
"type": "SYMBOL",
13134+
"name": "nullify_statement"
13135+
},
1312813136
{
1312913137
"type": "SYMBOL",
1313013138
"name": "entry_statement"
@@ -17888,6 +17896,178 @@
1788817896
}
1788917897
]
1789017898
},
17899+
"deallocate_statement": {
17900+
"type": "SEQ",
17901+
"members": [
17902+
{
17903+
"type": "ALIAS",
17904+
"content": {
17905+
"type": "PATTERN",
17906+
"value": "[dD][eE][aA][lL][lL][oO][cC][aA][tT][eE]"
17907+
},
17908+
"named": false,
17909+
"value": "deallocate"
17910+
},
17911+
{
17912+
"type": "STRING",
17913+
"value": "("
17914+
},
17915+
{
17916+
"type": "SEQ",
17917+
"members": [
17918+
{
17919+
"type": "CHOICE",
17920+
"members": [
17921+
{
17922+
"type": "SYMBOL",
17923+
"name": "identifier"
17924+
},
17925+
{
17926+
"type": "SYMBOL",
17927+
"name": "derived_type_member_expression"
17928+
}
17929+
]
17930+
},
17931+
{
17932+
"type": "REPEAT",
17933+
"content": {
17934+
"type": "SEQ",
17935+
"members": [
17936+
{
17937+
"type": "STRING",
17938+
"value": ","
17939+
},
17940+
{
17941+
"type": "CHOICE",
17942+
"members": [
17943+
{
17944+
"type": "SYMBOL",
17945+
"name": "identifier"
17946+
},
17947+
{
17948+
"type": "SYMBOL",
17949+
"name": "derived_type_member_expression"
17950+
}
17951+
]
17952+
}
17953+
]
17954+
}
17955+
}
17956+
]
17957+
},
17958+
{
17959+
"type": "CHOICE",
17960+
"members": [
17961+
{
17962+
"type": "SEQ",
17963+
"members": [
17964+
{
17965+
"type": "STRING",
17966+
"value": ","
17967+
},
17968+
{
17969+
"type": "SEQ",
17970+
"members": [
17971+
{
17972+
"type": "SYMBOL",
17973+
"name": "keyword_argument"
17974+
},
17975+
{
17976+
"type": "REPEAT",
17977+
"content": {
17978+
"type": "SEQ",
17979+
"members": [
17980+
{
17981+
"type": "STRING",
17982+
"value": ","
17983+
},
17984+
{
17985+
"type": "SYMBOL",
17986+
"name": "keyword_argument"
17987+
}
17988+
]
17989+
}
17990+
}
17991+
]
17992+
}
17993+
]
17994+
},
17995+
{
17996+
"type": "BLANK"
17997+
}
17998+
]
17999+
},
18000+
{
18001+
"type": "STRING",
18002+
"value": ")"
18003+
}
18004+
]
18005+
},
18006+
"nullify_statement": {
18007+
"type": "SEQ",
18008+
"members": [
18009+
{
18010+
"type": "ALIAS",
18011+
"content": {
18012+
"type": "PATTERN",
18013+
"value": "[nN][uU][lL][lL][iI][fF][yY]"
18014+
},
18015+
"named": false,
18016+
"value": "nullify"
18017+
},
18018+
{
18019+
"type": "STRING",
18020+
"value": "("
18021+
},
18022+
{
18023+
"type": "SEQ",
18024+
"members": [
18025+
{
18026+
"type": "CHOICE",
18027+
"members": [
18028+
{
18029+
"type": "SYMBOL",
18030+
"name": "identifier"
18031+
},
18032+
{
18033+
"type": "SYMBOL",
18034+
"name": "derived_type_member_expression"
18035+
}
18036+
]
18037+
},
18038+
{
18039+
"type": "REPEAT",
18040+
"content": {
18041+
"type": "SEQ",
18042+
"members": [
18043+
{
18044+
"type": "STRING",
18045+
"value": ","
18046+
},
18047+
{
18048+
"type": "CHOICE",
18049+
"members": [
18050+
{
18051+
"type": "SYMBOL",
18052+
"name": "identifier"
18053+
},
18054+
{
18055+
"type": "SYMBOL",
18056+
"name": "derived_type_member_expression"
18057+
}
18058+
]
18059+
}
18060+
]
18061+
}
18062+
}
18063+
]
18064+
},
18065+
{
18066+
"type": "STRING",
18067+
"value": ")"
18068+
}
18069+
]
18070+
},
1789118071
"entry_statement": {
1789218072
"type": "SEQ",
1789318073
"members": [

0 commit comments

Comments
 (0)