1
0

Add supertypes to grammar definition

This commit is contained in:
Jip J. Dekker 2021-01-11 16:21:59 +11:00
parent 32c7271384
commit 686f3154ce
5 changed files with 1596 additions and 2452 deletions

View File

@ -150,7 +150,7 @@ annotation_bind = 1 ^ 1::some_ann;
---
(source_file
(assignment (identifier) (infix_operator (infix_operator (integer_literal) (integer_literal)) (integer_literal)))
(assignment (identifier) (infix_operator (parenthesised_expression (infix_operator (integer_literal) (integer_literal))) (integer_literal)))
(assignment (identifier) (infix_operator (integer_literal) (infix_operator (integer_literal) (integer_literal))))
(assignment (identifier) (infix_operator (integer_literal) (infix_operator (integer_literal) (integer_literal))))
(assignment (identifier) (infix_operator (integer_literal) (infix_operator (integer_literal) (identifier)))))

View File

@ -29,6 +29,11 @@ module.exports = grammar({
[$._expression, $.generator],
],
supertypes: $ => [
$._expression,
$._item,
],
rules: {
source_file: $ => seq(sepBy(';', $._item)),
@ -56,10 +61,11 @@ module.exports = grammar({
$.prefix_operator,
$.set_comprehension,
$.string_interpolation,
// TODO: Other expression types
seq('(', $._expression, ')'),
$.parenthesised_expression,
),
parenthesised_expression: $ => seq('(', $._expression, ')'),
array_comprehension: $ => seq(
'[', $._expression, '|', sepBy1(',', $.generator), ']',
),

39
src/grammar.json vendored
View File

@ -122,21 +122,25 @@
"name": "string_interpolation"
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "STRING",
"value": ")"
}
]
"type": "SYMBOL",
"name": "parenthesised_expression"
}
]
},
"parenthesised_expression": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "("
},
{
"type": "SYMBOL",
"name": "_expression"
},
{
"type": "STRING",
"value": ")"
}
]
},
@ -1568,6 +1572,9 @@
],
"externals": [],
"inline": [],
"supertypes": []
"supertypes": [
"_expression",
"_item"
]
}

1161
src/node-types.json vendored

File diff suppressed because it is too large Load Diff

2836
src/parser.c vendored

File diff suppressed because it is too large Load Diff