9 static int verify_declspecs(struct cdecl_declspec *s)
11 unsigned num_storage = 0;
12 unsigned long typemap;
14 typemap = cdecl__build_typemap(s);
18 for (struct cdecl_declspec *c = s; c; c = c->next) {
19 switch (cdecl_spec_kind(c)) {
23 if (++num_storage > 1) {
24 fprintf(stderr, "too many storage-class specifiers\n");
30 * Restrict qualifiers are only valid in the
31 * pointer qualifier list, which isn't checked here.
33 if (c->type == CDECL_QUAL_RESTRICT) {
34 fprintf(stderr, "only pointer types can be restrict-qualified.\n");
40 * We don't support functions yet.
42 fprintf(stderr, "only function declarations may have function specifiers.\n");
52 static int verify_decl(struct cdecl *decl)
54 return verify_declspecs(decl->specifiers);
57 struct cdecl *cdecl_parse_decl(const char *declstr)
59 YY_BUFFER_STATE state;
63 state = yy_scan_string(declstr);
65 yy_delete_buffer(state);
70 rc = verify_decl(decl);