#include <stdbool.h>
#include "scan.h"
-#include "cdecl.h"
#include "cdecl-internal.h"
#include "errmsg.h"
* name strings can be used directly in error messages and there is no
* need for any string processing.
*/
-#define yytnamerr(a, b) ( (a) ? yytnamerr_copy(a, b) \
- : strlen(b) )
-
-static size_t yytnamerr_copy(char *dst, const char *src)
-{
- return cdecl__strlcpy(dst, src, strlen(src)+1);
-}
+#define yytnamerr(a, b) ( (a) ? cdecl__strlcpy(a, b, -1) : strlen(b) )
%}
%code requires {
#include <inttypes.h>
#include <stdbool.h>
+#include "cdecl.h"
}
%code provides {
}
%union {
- uintmax_t uintval;
+ cdecl_uintmax uintval;
unsigned spectype;
bool boolval;
struct cdecl_declspec *declspec;
%destructor { free_decl($$); } <decl>
/* Magic tokens */
-%token T_LEX_ERROR
+%token T_LEX_ERROR "@@@"
%token <item> T_IDENT "identifier"
%token <uintval> T_UINT "integer constant"