parser: accept trailing comma in enums; __restrict for arrays
[m6w6/ext-psi] / src / parser_proc_grammar.y
index 4a1cc1957ec2336d6e60dcee3d8747b21f24e569..d2a16b6d2211d04bb787a57e8f21c4ec79f0fba3 100644 (file)
@@ -1412,7 +1412,7 @@ decl_vars_with_layout[vars]:
 ;
 
 decl_enum[enum]:
-       enum_name LBRACE decl_enum_items[list] RBRACE {
+       enum_name LBRACE decl_enum_items[list] optional_comma RBRACE {
        $enum = psi_decl_enum_init($enum_name->text, $list);
        $enum->token = $enum_name;
 }
@@ -1581,6 +1581,11 @@ optional_name[name]:
 }
 ;
 
+optional_comma:
+       %empty
+|      COMMA
+;
+
 decl_layout[l]:
        %empty {
        $l = NULL;
@@ -1614,6 +1619,9 @@ array_size[as]:
 |      LBRACKET RBRACKET {
        $as = 0;
 }
+|      LBRACKET CPP_RESTRICT RBRACKET {
+       $as = 0;
+}
 |      LBRACKET num_exp RBRACKET {
        if (psi_num_exp_validate(PSI_DATA(P), $num_exp, NULL, NULL, NULL, NULL, NULL)) {
                $as = psi_long_num_exp($num_exp, NULL, &P->preproc->defs);