X-Git-Url: https://git.draconx.ca/gitweb/cdecl99.git/blobdiff_plain/28f34e6425c63edd0db0e20effda20e1e71ba193..41ff7ec97691:/src/parse.y diff --git a/src/parse.y b/src/parse.y index 1542c09..f507d5b 100644 --- a/src/parse.y +++ b/src/parse.y @@ -53,6 +53,13 @@ ALLOC(ptr, sizeof (type)); \ *(ptr) = (type) { __VA_ARGS__ }; \ } while (0) + +/* + * With the postprocessing performed by fix-yytname.awk, all the symbol + * name strings can be used directly in error messages and there is no + * need for any string processing. + */ +#define yytnamerr(a, b) cdecl__strlcpy(a, b, (a) ? INT_MAX : 0) %} %code requires { @@ -343,7 +350,7 @@ typespec_simple: T_VOID | T_COMPLEX | T_IMAGINARY -typespec_tagged: T_STRUCT | T_UNION | T_ENUM +typespec_tagged: T_STRUCT | T_UNION | T_ENUM | { $$ = CDECL_TYPE_IDENT; } qualifier_simple: T_CONST | T_RESTRICT @@ -365,10 +372,6 @@ typespec: typespec_noid | typespec_tagged T_IDENT { ALLOC_STRUCT($$, struct cdecl_declspec, .type = $1, .ident = $2); -} | T_IDENT { - ALLOC_STRUCT($$, struct cdecl_declspec, - .type = CDECL_TYPE_IDENT, - .ident = $1); } declspec_noid: declspec_notype | typespec_noid