Skip to content

Commit 2b6adc1

Browse files
committed
Remove statement_function
Unfortunately, the syntax is completely ambiguous and impossible to tell apart from `assignment_statement` until after parsing is done and types and attributes can be looked up. This removes `statement_function` but allows `assignment_statement` in the specification part.
1 parent 01078e7 commit 2b6adc1

File tree

6 files changed

+476779
-471267
lines changed

6 files changed

+476779
-471267
lines changed

grammar.js

Lines changed: 1 addition & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,6 @@ module.exports = grammar({
9696
[$.type_statement],
9797
[$.preproc_ifdef_in_specification_part, $.program],
9898
[$.preproc_else_in_specification_part, $.program],
99-
[$.statement_function, $._expression],
10099
[$.coarray_critical_statement, $.identifier],
101100
],
102101

@@ -539,7 +538,7 @@ module.exports = grammar({
539538
seq($.parameter_statement, $._end_of_statement),
540539
seq($.equivalence_statement, $._end_of_statement),
541540
seq($.data_statement, $._end_of_statement),
542-
seq($.statement_function, $._end_of_statement),
541+
seq($.assignment_statement, $._end_of_statement),
543542
prec(1, seq($.statement_label, $.format_statement, $._end_of_statement)),
544543
$.preproc_include,
545544
$.preproc_def,
@@ -1764,16 +1763,6 @@ module.exports = grammar({
17641763
alias($.coarray_index, $.coarray_size),
17651764
),
17661765

1767-
// Obsolescent feature
1768-
statement_function: $ => prec.right(seq(
1769-
$.identifier,
1770-
alias($._statement_function_arg_list, $.argument_list),
1771-
'=',
1772-
$._expression,
1773-
)),
1774-
1775-
_statement_function_arg_list: $ => seq('(', commaSep1($.identifier), ')'),
1776-
17771766
// Obsolescent feature
17781767
entry_statement: $ => seq(
17791768
caseInsensitive('entry'),

src/grammar.json

Lines changed: 1 addition & 73 deletions
Original file line numberDiff line numberDiff line change
@@ -9304,7 +9304,7 @@
93049304
"members": [
93059305
{
93069306
"type": "SYMBOL",
9307-
"name": "statement_function"
9307+
"name": "assignment_statement"
93089308
},
93099309
{
93109310
"type": "SYMBOL",
@@ -17564,74 +17564,6 @@
1756417564
}
1756517565
]
1756617566
},
17567-
"statement_function": {
17568-
"type": "PREC_RIGHT",
17569-
"value": 0,
17570-
"content": {
17571-
"type": "SEQ",
17572-
"members": [
17573-
{
17574-
"type": "SYMBOL",
17575-
"name": "identifier"
17576-
},
17577-
{
17578-
"type": "ALIAS",
17579-
"content": {
17580-
"type": "SYMBOL",
17581-
"name": "_statement_function_arg_list"
17582-
},
17583-
"named": true,
17584-
"value": "argument_list"
17585-
},
17586-
{
17587-
"type": "STRING",
17588-
"value": "="
17589-
},
17590-
{
17591-
"type": "SYMBOL",
17592-
"name": "_expression"
17593-
}
17594-
]
17595-
}
17596-
},
17597-
"_statement_function_arg_list": {
17598-
"type": "SEQ",
17599-
"members": [
17600-
{
17601-
"type": "STRING",
17602-
"value": "("
17603-
},
17604-
{
17605-
"type": "SEQ",
17606-
"members": [
17607-
{
17608-
"type": "SYMBOL",
17609-
"name": "identifier"
17610-
},
17611-
{
17612-
"type": "REPEAT",
17613-
"content": {
17614-
"type": "SEQ",
17615-
"members": [
17616-
{
17617-
"type": "STRING",
17618-
"value": ","
17619-
},
17620-
{
17621-
"type": "SYMBOL",
17622-
"name": "identifier"
17623-
}
17624-
]
17625-
}
17626-
}
17627-
]
17628-
},
17629-
{
17630-
"type": "STRING",
17631-
"value": ")"
17632-
}
17633-
]
17634-
},
1763517567
"entry_statement": {
1763617568
"type": "SEQ",
1763717569
"members": [
@@ -20870,10 +20802,6 @@
2087020802
"preproc_else_in_specification_part",
2087120803
"program"
2087220804
],
20873-
[
20874-
"statement_function",
20875-
"_expression"
20876-
],
2087720805
[
2087820806
"coarray_critical_statement",
2087920807
"identifier"

src/node-types.json

Lines changed: 12 additions & 139 deletions
Original file line numberDiff line numberDiff line change
@@ -1212,10 +1212,6 @@
12121212
"type": "select_type_statement",
12131213
"named": true
12141214
},
1215-
{
1216-
"type": "statement_function",
1217-
"named": true
1218-
},
12191215
{
12201216
"type": "statement_label",
12211217
"named": true
@@ -1259,6 +1255,10 @@
12591255
"multiple": true,
12601256
"required": true,
12611257
"types": [
1258+
{
1259+
"type": "assignment_statement",
1260+
"named": true
1261+
},
12621262
{
12631263
"type": "block_data_statement",
12641264
"named": true
@@ -1355,10 +1355,6 @@
13551355
"type": "save_statement",
13561356
"named": true
13571357
},
1358-
{
1359-
"type": "statement_function",
1360-
"named": true
1361-
},
13621358
{
13631359
"type": "statement_label",
13641360
"named": true
@@ -5908,10 +5904,6 @@
59085904
"type": "select_type_statement",
59095905
"named": true
59105906
},
5911-
{
5912-
"type": "statement_function",
5913-
"named": true
5914-
},
59155907
{
59165908
"type": "statement_label",
59175909
"named": true
@@ -7657,6 +7649,10 @@
76577649
"multiple": true,
76587650
"required": true,
76597651
"types": [
7652+
{
7653+
"type": "assignment_statement",
7654+
"named": true
7655+
},
76607656
{
76617657
"type": "common_statement",
76627658
"named": true
@@ -7757,10 +7753,6 @@
77577753
"type": "save_statement",
77587754
"named": true
77597755
},
7760-
{
7761-
"type": "statement_function",
7762-
"named": true
7763-
},
77647756
{
77657757
"type": "statement_label",
77667758
"named": true
@@ -8011,10 +8003,6 @@
80118003
"type": "select_type_statement",
80128004
"named": true
80138005
},
8014-
{
8015-
"type": "statement_function",
8016-
"named": true
8017-
},
80188006
{
80198007
"type": "statement_label",
80208008
"named": true
@@ -9201,10 +9189,6 @@
92019189
"type": "select_type_statement",
92029190
"named": true
92039191
},
9204-
{
9205-
"type": "statement_function",
9206-
"named": true
9207-
},
92089192
{
92099193
"type": "statement_label",
92109194
"named": true
@@ -9525,10 +9509,6 @@
95259509
"type": "select_type_statement",
95269510
"named": true
95279511
},
9528-
{
9529-
"type": "statement_function",
9530-
"named": true
9531-
},
95329512
{
95339513
"type": "statement_label",
95349514
"named": true
@@ -9820,10 +9800,6 @@
98209800
"type": "select_type_statement",
98219801
"named": true
98229802
},
9823-
{
9824-
"type": "statement_function",
9825-
"named": true
9826-
},
98279803
{
98289804
"type": "statement_label",
98299805
"named": true
@@ -10208,10 +10184,6 @@
1020810184
"type": "select_type_statement",
1020910185
"named": true
1021010186
},
10211-
{
10212-
"type": "statement_function",
10213-
"named": true
10214-
},
1021510187
{
1021610188
"type": "statement_label",
1021710189
"named": true
@@ -10532,10 +10504,6 @@
1053210504
"type": "select_type_statement",
1053310505
"named": true
1053410506
},
10535-
{
10536-
"type": "statement_function",
10537-
"named": true
10538-
},
1053910507
{
1054010508
"type": "statement_label",
1054110509
"named": true
@@ -10980,10 +10948,6 @@
1098010948
"type": "select_type_statement",
1098110949
"named": true
1098210950
},
10983-
{
10984-
"type": "statement_function",
10985-
"named": true
10986-
},
1098710951
{
1098810952
"type": "statement_label",
1098910953
"named": true
@@ -11971,93 +11935,6 @@
1197111935
]
1197211936
}
1197311937
},
11974-
{
11975-
"type": "statement_function",
11976-
"named": true,
11977-
"fields": {},
11978-
"children": {
11979-
"multiple": true,
11980-
"required": true,
11981-
"types": [
11982-
{
11983-
"type": "argument_list",
11984-
"named": true
11985-
},
11986-
{
11987-
"type": "array_literal",
11988-
"named": true
11989-
},
11990-
{
11991-
"type": "boolean_literal",
11992-
"named": true
11993-
},
11994-
{
11995-
"type": "call_expression",
11996-
"named": true
11997-
},
11998-
{
11999-
"type": "coarray_expression",
12000-
"named": true
12001-
},
12002-
{
12003-
"type": "complex_literal",
12004-
"named": true
12005-
},
12006-
{
12007-
"type": "concatenation_expression",
12008-
"named": true
12009-
},
12010-
{
12011-
"type": "conditional_expression",
12012-
"named": true
12013-
},
12014-
{
12015-
"type": "derived_type_member_expression",
12016-
"named": true
12017-
},
12018-
{
12019-
"type": "identifier",
12020-
"named": true
12021-
},
12022-
{
12023-
"type": "implied_do_loop_expression",
12024-
"named": true
12025-
},
12026-
{
12027-
"type": "logical_expression",
12028-
"named": true
12029-
},
12030-
{
12031-
"type": "math_expression",
12032-
"named": true
12033-
},
12034-
{
12035-
"type": "null_literal",
12036-
"named": true
12037-
},
12038-
{
12039-
"type": "number_literal",
12040-
"named": true
12041-
},
12042-
{
12043-
"type": "parenthesized_expression",
12044-
"named": true
12045-
},
12046-
{
12047-
"type": "relational_expression",
12048-
"named": true
12049-
},
12050-
{
12051-
"type": "string_literal",
12052-
"named": true
12053-
},
12054-
{
12055-
"type": "unary_expression",
12056-
"named": true
12057-
}
12058-
]
12059-
}
12060-
},
1206111938
{
1206211939
"type": "statement_label",
1206311940
"named": true,
@@ -12175,6 +12052,10 @@
1217512052
"multiple": true,
1217612053
"required": true,
1217712054
"types": [
12055+
{
12056+
"type": "assignment_statement",
12057+
"named": true
12058+
},
1217812059
{
1217912060
"type": "common_statement",
1218012061
"named": true
@@ -12271,10 +12152,6 @@
1227112152
"type": "save_statement",
1227212153
"named": true
1227312154
},
12274-
{
12275-
"type": "statement_function",
12276-
"named": true
12277-
},
1227812155
{
1227912156
"type": "statement_label",
1228012157
"named": true
@@ -12546,10 +12423,6 @@
1254612423
"type": "select_type_statement",
1254712424
"named": true
1254812425
},
12549-
{
12550-
"type": "statement_function",
12551-
"named": true
12552-
},
1255312426
{
1255412427
"type": "statement_label",
1255512428
"named": true

0 commit comments

Comments
 (0)