X-Git-Url: https://git.draconx.ca/gitweb/cdecl99.git/blobdiff_plain/d349b9bb3fde8fc1d1222d5b7ac8dbbaf6dee230..bf336dc52970daa394d119b11284a1b5016a74c0:/src/scan.l diff --git a/src/scan.l b/src/scan.l index bd1c5c5..5d460ed 100644 --- a/src/scan.l +++ b/src/scan.l @@ -18,12 +18,63 @@ */ #include +#include #include "parse.h" /* Disable various generated code we don't use */ #define YY_INPUT(a, b, c) do {} while (0) #define YY_NO_INPUT 1 #define YY_NO_UNPUT 1 + +/* + * The flex-generated scanner defines a huge pile of external functions of + * which we use almost none elsewhere. Explicitly declare any unneeded + * functions static, which allows better optimization (especially wrt. + * dead code elimination). + */ +#if !cdecl__yyIN_HEADER + +#if __GNUC__ +# define static __attribute__((__unused__)) static +#endif + +static struct yy_buffer_state *cdecl__yy_create_buffer(FILE *, int, void *); +static struct yy_buffer_state *cdecl__yy_scan_bytes(const char *, int, void *); +static struct yy_buffer_state *cdecl__yy_scan_buffer(char *, size_t, void *); +static void cdecl__yy_switch_to_buffer(struct yy_buffer_state *, void *); +static void cdecl__yy_flush_buffer(struct yy_buffer_state *, void *); +static void cdecl__yypush_buffer_state(struct yy_buffer_state *, void *); +static void cdecl__yypop_buffer_state(void *); +static void cdecl__yyrestart(FILE *, void *); +static int cdecl__yylex_init(void **); + +static int cdecl__yyget_extra(void *); +static YYLTYPE *cdecl__yyget_lloc(void *); +static YYSTYPE *cdecl__yyget_lval(void *); +static char *cdecl__yyget_text(void *); +static FILE *cdecl__yyget_out(void *); +static FILE *cdecl__yyget_in(void *); +static int cdecl__yyget_debug(void *); +static int cdecl__yyget_lineno(void *); +static int cdecl__yyget_column(void *); +static int cdecl__yyget_leng(void *); + +static void cdecl__yyset_extra(int, void *); +static void cdecl__yyset_lloc(YYLTYPE *, void *); +static void cdecl__yyset_lval(YYSTYPE *, void *); +static void cdecl__yyset_in(FILE *, void *); +static void cdecl__yyset_out(FILE *, void *); +static void cdecl__yyset_debug(int, void *); +static void cdecl__yyset_lineno(int, void *); +static void cdecl__yyset_column(int, void *); + +static void *cdecl__yyrealloc(void *, size_t, void *); +static void *cdecl__yyalloc(size_t, void *); +static void cdecl__yyfree(void *, void *); + +#undef static + +#endif } %option nodefault noyywrap bison-locations reentrant never-interactive @@ -132,7 +183,7 @@ IDENT [_[:alpha:]][-_[:alnum:]]* [1-9][0-9]* { intconv_base = INTCONV_DECIMAL; goto int_parse; } 0[Xx][[:xdigit:]]+ { unsigned char d; - uintmax_t v; + cdecl_uintmax v; yytext += 2; intconv_base = INTCONV_HEXADECIMAL; @@ -189,6 +240,6 @@ int_parse: c = yytext; invalid_char: to_readable_ch(buf, *c); - cdecl__err(CDECL_ENOPARSE, _("syntax error, unexpected %s"), buf); + cdecl__err(_("syntax error, unexpected %s"), buf); return T_LEX_ERROR; }