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), '[',