Skip to content

Commit 618cda4

Browse files
committed
Switch to new generics syntax.
1 parent e8e4326 commit 618cda4

File tree

5 files changed

+93947
-92380
lines changed

5 files changed

+93947
-92380
lines changed

CHANGELOG.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,12 @@
11
# tree-sitter-c3 Changelog
22

3+
## 0.4.0
4+
5+
### Changes
6+
- Switch to new generics syntax
7+
- Removed `Type {...}` grammar
8+
- Added rule `typed_initializer_list` for `(Type) {...}` with precedence over cast
9+
310
## 0.3.2
411

512
Final grammar for C3 0.6.7.

grammar.js

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -236,7 +236,10 @@ module.exports = grammar({
236236
$._expr,
237237
$.type,
238238
)),
239-
generic_arguments: $ => seq('(<', $._generic_arg_list, '>)'),
239+
generic_arguments: $ => choice(
240+
seq('(<', $._generic_arg_list, '>)'),
241+
seq('{', $._generic_arg_list, '}'),
242+
),
240243

241244
// Helpers
242245
// -------------------------
@@ -337,7 +340,10 @@ module.exports = grammar({
337340
// Module
338341
// -------------------------
339342
_module_param: $ => choice($.const_ident, $.type_ident),
340-
generic_module_parameters: $ => seq('(<', commaSep1($._module_param), '>)'),
343+
generic_module_parameters: $ => choice(
344+
seq('(<', commaSep1($._module_param), '>)'),
345+
seq('{', commaSep1($._module_param), '}'),
346+
),
341347
module: $ => seq(
342348
'module',
343349
field('path', $.path_ident),
@@ -1087,6 +1093,9 @@ module.exports = grammar({
10871093
bytes_expr: $ => repeat1($.bytes_literal),
10881094
paren_expr: $ => seq('(', $._expr, ')'),
10891095

1096+
// Precedence over cast
1097+
typed_initializer_list: $ => prec(3, seq('(', $.type, ')', $.initializer_list)),
1098+
10901099
_base_expr: $ => prec(2, choice(
10911100
'true',
10921101
'false',
@@ -1105,7 +1114,7 @@ module.exports = grammar({
11051114
$._local_ident_expr,
11061115

11071116
$.initializer_list,
1108-
seq($.type, $.initializer_list),
1117+
$.typed_initializer_list,
11091118

11101119
$.field_expr,
11111120
$.type_access_expr,

src/grammar.json

Lines changed: 123 additions & 42 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)