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 intscanbuflen;*/
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- /* resultis not used, but Bison expects this signature */
73+ /* resultand 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{
6777if (*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- Sizeslen =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;
104114scanbuf =palloc (slen +2 );
105115memcpy (scanbuf, str, slen);
106116scanbuf[slen] = scanbuf[slen +1 ] = YY_END_OF_BUFFER_CHAR;