diff --git a/src/kernel_internals/parsing/cparser.mly b/src/kernel_internals/parsing/cparser.mly
index 7da75c2c4a11cc2ee4e1c1d97e3be8f2341c9254..29da754e5d2dcedfd17436d73e428c2f74a49467 100644
--- a/src/kernel_internals/parsing/cparser.mly
+++ b/src/kernel_internals/parsing/cparser.mly
@@ -1035,9 +1035,22 @@ declaration:                                /* ISO 6.7.*/
 
 init_declarator_list:                       /* ISO 6.7 */
     init_declarator                              { [$1] }
-|   init_declarator COMMA init_declarator_list   { $1 :: $3 }
+|   init_declarator COMMA init_declarator_attr_list   { $1 :: $3 }
 
 ;
+
+init_declarator_attr_list:
+  init_declarator_attr { [ $1 ] }
+| init_declarator_attr COMMA init_declarator_attr_list { $1 :: $3 }
+;
+
+init_declarator_attr:
+  attribute_nocv_list init_declarator {
+    let ((name, decl, attrs, loc), init) = $2 in
+    ((name, PARENTYPE ($1,decl,[]), attrs, loc), init)
+  }
+;
+
 init_declarator:                             /* ISO 6.7 */
     declarator                          { ($1, NO_INIT) }
 |   declarator EQ init_expression
diff --git a/tests/syntax/attributes-declarations-definitions.c b/tests/syntax/attributes-declarations-definitions.c
index f090ff912c4773b6d1d3d96dba6be6f682f2c7fd..82a097052500564c5c727a77eca45e7fba8e9a4d 100644
--- a/tests/syntax/attributes-declarations-definitions.c
+++ b/tests/syntax/attributes-declarations-definitions.c
@@ -41,3 +41,7 @@ iptr h(volatile iptr ip2) {
 }
 
 iptr volatile h(const iptr ip3);
+
+void test(void) {
+  int a, __attribute__((unused)) b;
+}
diff --git a/tests/syntax/oracle/attributes-declarations-definitions.res.oracle b/tests/syntax/oracle/attributes-declarations-definitions.res.oracle
index 89fcae3ec667358c1ce4539fc167e80b92007777..57fdf7c199509f4598052b6bda6914f92e5934f4 100644
--- a/tests/syntax/oracle/attributes-declarations-definitions.res.oracle
+++ b/tests/syntax/oracle/attributes-declarations-definitions.res.oracle
@@ -42,4 +42,11 @@ iptr h(iptr volatile ip3)
   return __retres;
 }
 
+void test(void)
+{
+  int a;
+  int b __attribute__((__unused__));
+  return;
+}
+