From 20fee37fd0032f783a606869211e61bd0dcf6a57 Mon Sep 17 00:00:00 2001 From: Amaan Qureshi Date: Mon, 22 May 2023 20:26:35 -0400 Subject: [PATCH] feat: add _Generic expressions and missing type qualifiers _Generic is a C11 feature, __restrict__ and _Noreturn were added to type_qualifiers --- grammar.js | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/grammar.js b/grammar.js index 8aa9176..19de8d6 100644 --- a/grammar.js +++ b/grammar.js @@ -475,7 +475,9 @@ module.exports = grammar({ 'const', 'volatile', 'restrict', + '__restrict__', '_Atomic', + '_Noreturn', ), _type_specifier: $ => choice( @@ -736,6 +738,7 @@ module.exports = grammar({ $.cast_expression, $.pointer_expression, $.sizeof_expression, + $.generic_expression, $.subscript_expression, $.call_expression, $.field_expression, @@ -865,6 +868,15 @@ module.exports = grammar({ ), )), + generic_expression: $ => prec(PREC.CALL, seq( + '_Generic', + '(', + $._expression, + ',', + commaSep1(seq($.type_descriptor, ':', $._expression)), + ')', + )), + subscript_expression: $ => prec(PREC.SUBSCRIPT, seq( field('argument', $._expression), '[',