summaryrefslogtreecommitdiff
path: root/contrib/seg/segscan.l
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/seg/segscan.l')
-rw-r--r--contrib/seg/segscan.l28
1 files changed, 18 insertions, 10 deletions
diff --git a/contrib/seg/segscan.l b/contrib/seg/segscan.l
index 5f6595e9eb..4744fd5e9e 100644
--- a/contrib/seg/segscan.l
+++ b/contrib/seg/segscan.l
@@ -1,8 +1,18 @@
-%{
+%top{
/*
* A scanner for EMP-style numeric ranges
*/
+#include "postgres.h"
+
+/*
+ * NB: include segparse.h only AFTER including segdata.h, because segdata.h
+ * contains the definition for SEG.
+ */
+#include "segdata.h"
+#include "segparse.h"
+}
+%{
/* LCOV_EXCL_START */
/* No reason to constrain amount of data slurped */
@@ -21,7 +31,6 @@ fprintf_to_ereport(const char *fmt, const char *msg)
/* Handles to the buffer that the lexer uses internally */
static YY_BUFFER_STATE scanbufhandle;
static char *scanbuf;
-static int scanbuflen;
%}
%option 8bit
@@ -42,12 +51,12 @@ float ({integer}|{real})([eE]{integer})?
%%
-{range} yylval.text = yytext; return RANGE;
-{plumin} yylval.text = yytext; return PLUMIN;
-{float} yylval.text = yytext; return SEGFLOAT;
-\< yylval.text = "<"; return EXTENSION;
-\> yylval.text = ">"; return EXTENSION;
-\~ yylval.text = "~"; return EXTENSION;
+{range} seg_yylval.text = yytext; return RANGE;
+{plumin} seg_yylval.text = yytext; return PLUMIN;
+{float} seg_yylval.text = yytext; return SEGFLOAT;
+\< seg_yylval.text = "<"; return EXTENSION;
+\> seg_yylval.text = ">"; return EXTENSION;
+\~ seg_yylval.text = "~"; return EXTENSION;
[ \t\n\r\f]+ /* discard spaces */
. return yytext[0]; /* alert parser of the garbage */
@@ -56,7 +65,7 @@ float ({integer}|{real})([eE]{integer})?
/* LCOV_EXCL_STOP */
void
-yyerror(SEG *result, const char *message)
+seg_yyerror(SEG *result, const char *message)
{
if (*yytext == YY_END_OF_BUFFER_CHAR)
{
@@ -94,7 +103,6 @@ seg_scanner_init(const char *str)
/*
* Make a scan buffer with special termination needed by flex.
*/
- scanbuflen = slen;
scanbuf = palloc(slen + 2);
memcpy(scanbuf, str, slen);
scanbuf[slen] = scanbuf[slen + 1] = YY_END_OF_BUFFER_CHAR;