1- %{
1+ %top {
22/*
33 * A scanner for EMP-style numeric ranges
44 * contrib/cube/cubescan.l
55 */
66
7+ #include "postgres.h"
8+
9+ /*
10+ * NB: include cubeparse.h only AFTER defining YYSTYPE (to match cubeparse.y)
11+ * and cubedata.h for NDBOX.
12+ */
13+ #include "cubedata.h"
14+ #define YYSTYPE char *
15+ #include "cubeparse.h"
16+ }
17+
18+ %{
719/* LCOV_EXCL_START */
820
921/* No reason to constrain amount of data slurped */
@@ -21,9 +33,7 @@ fprintf_to_ereport(const char *fmt, const char *msg)
2133
2234/* Handles to the buffer that the lexer uses internally */
2335static YY_BUFFER_STATE scanbufhandle;
24- /* this is now declared in cubeparse.y: */
25- /* static char *scanbuf; */
26- /* static int scanbuflen; */
36+ static char *scanbuf;
2737%}
2838
2939%option 8bit
@@ -45,24 +55,24 @@ NaN [nN][aA][nN]
4555
4656%%
4757
48- {float } yylval = yytext; return CUBEFLOAT;
49- {infinity } yylval = yytext; return CUBEFLOAT;
50- {NaN } yylval = yytext; return CUBEFLOAT;
51- \[ yylval = " (" ; return O_BRACKET;
52- \] yylval = " )" ; return C_BRACKET;
53- \( yylval = " (" ; return O_PAREN;
54- \) yylval = " )" ; return C_PAREN;
55- \, yylval = " ," ; return COMMA;
58+ {float } cube_yylval = yytext; return CUBEFLOAT;
59+ {infinity } cube_yylval = yytext; return CUBEFLOAT;
60+ {NaN } cube_yylval = yytext; return CUBEFLOAT;
61+ \[ cube_yylval = " (" ; return O_BRACKET;
62+ \] cube_yylval = " )" ; return C_BRACKET;
63+ \( cube_yylval = " (" ; return O_PAREN;
64+ \) cube_yylval = " )" ; return C_PAREN;
65+ \, cube_yylval = " ," ; return COMMA;
5666[ \t\n\r\f ]+ /* discard spaces */
5767. return yytext[0 ]; /* alert parser of the garbage */
5868
5969%%
6070
6171/* LCOV_EXCL_STOP */
6272
63- /* result is not used, but Bison expects this signature */
73+ /* result and scanbuflen are not used, but Bison expects this signature */
6474void
65- yyerror (NDBOX **result, const char *message)
75+ cube_yyerror (NDBOX **result, Size scanbuflen , const char *message)
6676{
6777 if (*yytext == YY_END_OF_BUFFER_CHAR)
6878 {
@@ -87,9 +97,9 @@ yyerror(NDBOX **result, const char *message)
8797 * Called before any actual parsing is done
8898 */
8999void
90- cube_scanner_init (const char *str)
100+ cube_scanner_init (const char *str, Size *scanbuflen )
91101{
92- Size slen = strlen (str);
102+ Size slen = strlen (str);
93103
94104 /*
95105 * Might be left over after ereport()
@@ -100,7 +110,7 @@ cube_scanner_init(const char *str)
100110 /*
101111 * Make a scan buffer with special termination needed by flex.
102112 */
103- scanbuflen = slen;
113+ * scanbuflen = slen;
104114 scanbuf = palloc (slen + 2 );
105115 memcpy (scanbuf, str, slen);
106116 scanbuf[slen] = scanbuf[slen + 1 ] = YY_END_OF_BUFFER_CHAR;
0 commit comments