Skip to content

Commit d72ba8e

Browse files
committed
Add Cray pointers
Closes stadelmanma#135
1 parent 4bef32b commit d72ba8e

File tree

5 files changed

+639262
-633423
lines changed

5 files changed

+639262
-633423
lines changed

grammar.js

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,7 @@ module.exports = grammar({
100100
[$.format_statement, $.identifier],
101101
[$._inline_if_statement, $.arithmetic_if_statement, $._block_if_statement, $.identifier],
102102
[$.file_position_statement, $.identifier],
103+
[$.cray_pointer_declaration, $.identifier],
103104
],
104105

105106
rules: {
@@ -547,6 +548,7 @@ module.exports = grammar({
547548
seq($.data_statement, $._end_of_statement),
548549
seq($.assignment_statement, $._end_of_statement),
549550
prec(1, seq($.statement_label, $.format_statement, $._end_of_statement)),
551+
$.cray_pointer_declaration,
550552
$.preproc_include,
551553
$.preproc_def,
552554
$.preproc_function_def,
@@ -1034,6 +1036,19 @@ module.exports = grammar({
10341036
')'
10351037
),
10361038

1039+
cray_pointer_declaration: $ => seq(
1040+
caseInsensitive('pointer'),
1041+
commaSep1($.cray_pointer_pair),
1042+
$._end_of_statement
1043+
),
1044+
cray_pointer_pair: $ => seq(
1045+
'(',
1046+
field('pointer', $.identifier),
1047+
',',
1048+
field('target', $._variable_declarator),
1049+
')',
1050+
),
1051+
10371052
// Statements
10381053

10391054
_statement: $ => choice(

src/grammar.json

Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9417,6 +9417,10 @@
94179417
]
94189418
}
94199419
},
9420+
{
9421+
"type": "SYMBOL",
9422+
"name": "cray_pointer_declaration"
9423+
},
94209424
{
94219425
"type": "SYMBOL",
94229426
"name": "preproc_include"
@@ -12946,6 +12950,82 @@
1294612950
}
1294712951
]
1294812952
},
12953+
"cray_pointer_declaration": {
12954+
"type": "SEQ",
12955+
"members": [
12956+
{
12957+
"type": "ALIAS",
12958+
"content": {
12959+
"type": "PATTERN",
12960+
"value": "[pP][oO][iI][nN][tT][eE][rR]"
12961+
},
12962+
"named": false,
12963+
"value": "pointer"
12964+
},
12965+
{
12966+
"type": "SEQ",
12967+
"members": [
12968+
{
12969+
"type": "SYMBOL",
12970+
"name": "cray_pointer_pair"
12971+
},
12972+
{
12973+
"type": "REPEAT",
12974+
"content": {
12975+
"type": "SEQ",
12976+
"members": [
12977+
{
12978+
"type": "STRING",
12979+
"value": ","
12980+
},
12981+
{
12982+
"type": "SYMBOL",
12983+
"name": "cray_pointer_pair"
12984+
}
12985+
]
12986+
}
12987+
}
12988+
]
12989+
},
12990+
{
12991+
"type": "SYMBOL",
12992+
"name": "_end_of_statement"
12993+
}
12994+
]
12995+
},
12996+
"cray_pointer_pair": {
12997+
"type": "SEQ",
12998+
"members": [
12999+
{
13000+
"type": "STRING",
13001+
"value": "("
13002+
},
13003+
{
13004+
"type": "FIELD",
13005+
"name": "pointer",
13006+
"content": {
13007+
"type": "SYMBOL",
13008+
"name": "identifier"
13009+
}
13010+
},
13011+
{
13012+
"type": "STRING",
13013+
"value": ","
13014+
},
13015+
{
13016+
"type": "FIELD",
13017+
"name": "target",
13018+
"content": {
13019+
"type": "SYMBOL",
13020+
"name": "_variable_declarator"
13021+
}
13022+
},
13023+
{
13024+
"type": "STRING",
13025+
"value": ")"
13026+
}
13027+
]
13028+
},
1294913029
"_statement": {
1295013030
"type": "CHOICE",
1295113031
"members": [
@@ -21435,6 +21515,10 @@
2143521515
[
2143621516
"file_position_statement",
2143721517
"identifier"
21518+
],
21519+
[
21520+
"cray_pointer_declaration",
21521+
"identifier"
2143821522
]
2143921523
],
2144021524
"precedences": [],

src/node-types.json

Lines changed: 103 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1068,6 +1068,10 @@
10681068
"type": "common_statement",
10691069
"named": true
10701070
},
1071+
{
1072+
"type": "cray_pointer_declaration",
1073+
"named": true
1074+
},
10711075
{
10721076
"type": "data_statement",
10731077
"named": true
@@ -1283,6 +1287,10 @@
12831287
"type": "common_statement",
12841288
"named": true
12851289
},
1290+
{
1291+
"type": "cray_pointer_declaration",
1292+
"named": true
1293+
},
12861294
{
12871295
"type": "data_statement",
12881296
"named": true
@@ -3501,6 +3509,55 @@
35013509
"named": true,
35023510
"fields": {}
35033511
},
3512+
{
3513+
"type": "cray_pointer_declaration",
3514+
"named": true,
3515+
"fields": {},
3516+
"children": {
3517+
"multiple": true,
3518+
"required": true,
3519+
"types": [
3520+
{
3521+
"type": "cray_pointer_pair",
3522+
"named": true
3523+
}
3524+
]
3525+
}
3526+
},
3527+
{
3528+
"type": "cray_pointer_pair",
3529+
"named": true,
3530+
"fields": {
3531+
"pointer": {
3532+
"multiple": false,
3533+
"required": true,
3534+
"types": [
3535+
{
3536+
"type": "identifier",
3537+
"named": true
3538+
}
3539+
]
3540+
},
3541+
"target": {
3542+
"multiple": false,
3543+
"required": true,
3544+
"types": [
3545+
{
3546+
"type": "coarray_declarator",
3547+
"named": true
3548+
},
3549+
{
3550+
"type": "identifier",
3551+
"named": true
3552+
},
3553+
{
3554+
"type": "sized_declarator",
3555+
"named": true
3556+
}
3557+
]
3558+
}
3559+
}
3560+
},
35043561
{
35053562
"type": "cuda_kernel_argument_list",
35063563
"named": true,
@@ -5851,6 +5908,10 @@
58515908
"type": "common_statement",
58525909
"named": true
58535910
},
5911+
{
5912+
"type": "cray_pointer_declaration",
5913+
"named": true
5914+
},
58545915
{
58555916
"type": "data_statement",
58565917
"named": true
@@ -7784,6 +7845,10 @@
77847845
"type": "common_statement",
77857846
"named": true
77867847
},
7848+
{
7849+
"type": "cray_pointer_declaration",
7850+
"named": true
7851+
},
77877852
{
77887853
"type": "data_statement",
77897854
"named": true
@@ -7970,6 +8035,10 @@
79708035
"type": "common_statement",
79718036
"named": true
79728037
},
8038+
{
8039+
"type": "cray_pointer_declaration",
8040+
"named": true
8041+
},
79738042
{
79748043
"type": "data_statement",
79758044
"named": true
@@ -9163,6 +9232,10 @@
91639232
"type": "common_statement",
91649233
"named": true
91659234
},
9235+
{
9236+
"type": "cray_pointer_declaration",
9237+
"named": true
9238+
},
91669239
{
91679240
"type": "data_statement",
91689241
"named": true
@@ -9491,6 +9564,10 @@
94919564
"type": "common_statement",
94929565
"named": true
94939566
},
9567+
{
9568+
"type": "cray_pointer_declaration",
9569+
"named": true
9570+
},
94949571
{
94959572
"type": "data_statement",
94969573
"named": true
@@ -9790,6 +9867,10 @@
97909867
"type": "common_statement",
97919868
"named": true
97929869
},
9870+
{
9871+
"type": "cray_pointer_declaration",
9872+
"named": true
9873+
},
97939874
{
97949875
"type": "data_statement",
97959876
"named": true
@@ -10182,6 +10263,10 @@
1018210263
"type": "common_statement",
1018310264
"named": true
1018410265
},
10266+
{
10267+
"type": "cray_pointer_declaration",
10268+
"named": true
10269+
},
1018510270
{
1018610271
"type": "data_statement",
1018710272
"named": true
@@ -10510,6 +10595,10 @@
1051010595
"type": "common_statement",
1051110596
"named": true
1051210597
},
10598+
{
10599+
"type": "cray_pointer_declaration",
10600+
"named": true
10601+
},
1051310602
{
1051410603
"type": "data_statement",
1051510604
"named": true
@@ -10982,6 +11071,10 @@
1098211071
"type": "common_statement",
1098311072
"named": true
1098411073
},
11074+
{
11075+
"type": "cray_pointer_declaration",
11076+
"named": true
11077+
},
1098511078
{
1098611079
"type": "data_statement",
1098711080
"named": true
@@ -12270,6 +12363,10 @@
1227012363
"type": "common_statement",
1227112364
"named": true
1227212365
},
12366+
{
12367+
"type": "cray_pointer_declaration",
12368+
"named": true
12369+
},
1227312370
{
1227412371
"type": "data_statement",
1227512372
"named": true
@@ -12477,6 +12574,10 @@
1247712574
"type": "common_statement",
1247812575
"named": true
1247912576
},
12577+
{
12578+
"type": "cray_pointer_declaration",
12579+
"named": true
12580+
},
1248012581
{
1248112582
"type": "data_statement",
1248212583
"named": true
@@ -14600,11 +14701,11 @@
1460014701
},
1460114702
{
1460214703
"type": "none",
14603-
"named": false
14704+
"named": true
1460414705
},
1460514706
{
1460614707
"type": "none",
14607-
"named": true
14708+
"named": false
1460814709
},
1460914710
{
1461014711
"type": "nopass",

0 commit comments

Comments
 (0)