Skip to content

Commit b14614e

Browse files
authored
Merge pull request #176 from yoff/patch-1
Update grammar to accept `except*`
2 parents de221ec + 87c3f4c commit b14614e

File tree

5 files changed

+52969
-45563
lines changed

5 files changed

+52969
-45563
lines changed

grammar.js

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -324,6 +324,11 @@ module.exports = grammar({
324324
optional($.else_clause),
325325
optional($.finally_clause)
326326
),
327+
seq(
328+
repeat1($.except_group_clause),
329+
optional($.else_clause),
330+
optional($.finally_clause)
331+
),
327332
$.finally_clause
328333
)
329334
),
@@ -341,7 +346,20 @@ module.exports = grammar({
341346
$._suite
342347
),
343348

344-
finally_clause: $ => seq(
349+
except_group_clause: $ => seq(
350+
'except*',
351+
seq(
352+
$.expression,
353+
optional(seq(
354+
'as',
355+
$.expression
356+
))
357+
),
358+
':',
359+
$._suite
360+
),
361+
362+
finally_clause: $ => seq(
345363
'finally',
346364
':',
347365
$._suite

src/grammar.json

Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1254,6 +1254,42 @@
12541254
}
12551255
]
12561256
},
1257+
{
1258+
"type": "SEQ",
1259+
"members": [
1260+
{
1261+
"type": "REPEAT1",
1262+
"content": {
1263+
"type": "SYMBOL",
1264+
"name": "except_group_clause"
1265+
}
1266+
},
1267+
{
1268+
"type": "CHOICE",
1269+
"members": [
1270+
{
1271+
"type": "SYMBOL",
1272+
"name": "else_clause"
1273+
},
1274+
{
1275+
"type": "BLANK"
1276+
}
1277+
]
1278+
},
1279+
{
1280+
"type": "CHOICE",
1281+
"members": [
1282+
{
1283+
"type": "SYMBOL",
1284+
"name": "finally_clause"
1285+
},
1286+
{
1287+
"type": "BLANK"
1288+
}
1289+
]
1290+
}
1291+
]
1292+
},
12571293
{
12581294
"type": "SYMBOL",
12591295
"name": "finally_clause"
@@ -1326,6 +1362,53 @@
13261362
}
13271363
]
13281364
},
1365+
"except_group_clause": {
1366+
"type": "SEQ",
1367+
"members": [
1368+
{
1369+
"type": "STRING",
1370+
"value": "except*"
1371+
},
1372+
{
1373+
"type": "SEQ",
1374+
"members": [
1375+
{
1376+
"type": "SYMBOL",
1377+
"name": "expression"
1378+
},
1379+
{
1380+
"type": "CHOICE",
1381+
"members": [
1382+
{
1383+
"type": "SEQ",
1384+
"members": [
1385+
{
1386+
"type": "STRING",
1387+
"value": "as"
1388+
},
1389+
{
1390+
"type": "SYMBOL",
1391+
"name": "expression"
1392+
}
1393+
]
1394+
},
1395+
{
1396+
"type": "BLANK"
1397+
}
1398+
]
1399+
}
1400+
]
1401+
},
1402+
{
1403+
"type": "STRING",
1404+
"value": ":"
1405+
},
1406+
{
1407+
"type": "SYMBOL",
1408+
"name": "_suite"
1409+
}
1410+
]
1411+
},
13291412
"finally_clause": {
13301413
"type": "SEQ",
13311414
"members": [

src/node-types.json

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1256,6 +1256,25 @@
12561256
]
12571257
}
12581258
},
1259+
{
1260+
"type": "except_group_clause",
1261+
"named": true,
1262+
"fields": {},
1263+
"children": {
1264+
"multiple": true,
1265+
"required": true,
1266+
"types": [
1267+
{
1268+
"type": "block",
1269+
"named": true
1270+
},
1271+
{
1272+
"type": "expression",
1273+
"named": true
1274+
}
1275+
]
1276+
}
1277+
},
12591278
{
12601279
"type": "exec_statement",
12611280
"named": true,
@@ -2353,6 +2372,10 @@
23532372
"type": "except_clause",
23542373
"named": true
23552374
},
2375+
{
2376+
"type": "except_group_clause",
2377+
"named": true
2378+
},
23562379
{
23572380
"type": "finally_clause",
23582381
"named": true
@@ -2882,6 +2905,10 @@
28822905
"type": "except",
28832906
"named": false
28842907
},
2908+
{
2909+
"type": "except*",
2910+
"named": false
2911+
},
28852912
{
28862913
"type": "exec",
28872914
"named": false

0 commit comments

Comments
 (0)