]> granicus.if.org Git - postgresql/blobdiff - src/interfaces/ecpg/preproc/pgc.l
Use "%option prefix" to set API names in ecpg's lexer.
[postgresql] / src / interfaces / ecpg / preproc / pgc.l
index 222049624d7c4f3fdd59d22365cdd7d442218de9..283343d822844d6d47ceaa5ac29555bccf5e1775 100644 (file)
 
 #include "extern.h"
 #include "preproc.h"
-
-/*
- * Change symbol names as expected by preproc.y.  It'd be better to do this
- * with %option prefix="base_yy", but that affects some other names that
- * various files expect *not* to be prefixed with "base_".  Cleaning it up
- * is not worth the trouble right now.
- */
-#define yylex           base_yylex
-#define yylval          base_yylval
 }
 
 %{
-extern YYSTYPE yylval;
+extern YYSTYPE base_yylval;
 
 static int             xcdepth = 0;    /* depth of nesting in slash-star comments */
 static char       *dolqstart = NULL;   /* current $foo$ quote start string */
@@ -97,6 +88,7 @@ static struct _if_value
 %option noinput
 %option noyywrap
 %option warn
+%option prefix="base_yy"
 
 %option yylineno
 
@@ -451,7 +443,7 @@ cppline                     {space}*#([^i][A-Za-z]*|{if}|{ifdef}|{ifndef}|{import})((\/\*[^*/]*\*+
                                        BEGIN(SQL);
                                        if (literalbuf[strspn(literalbuf, "01") + 1] != '\0')
                                                mmerror(PARSE_ERROR, ET_ERROR, "invalid bit string literal");
-                                       yylval.str = mm_strdup(literalbuf);
+                                       base_yylval.str = mm_strdup(literalbuf);
                                        return BCONST;
                                }
 
@@ -471,7 +463,7 @@ cppline                     {space}*#([^i][A-Za-z]*|{if}|{ifdef}|{ifndef}|{import})((\/\*[^*/]*\*+
 <xh>{quotefail}        {
                                yyless(1);
                                BEGIN(SQL);
-                               yylval.str = mm_strdup(literalbuf);
+                               base_yylval.str = mm_strdup(literalbuf);
                                return XCONST;
                        }
 
@@ -514,27 +506,27 @@ cppline                   {space}*#([^i][A-Za-z]*|{if}|{ifdef}|{ifndef}|{import})((\/\*[^*/]*\*+
 <xq,xqc>{quotefail} {
                                yyless(1);
                                BEGIN(state_before);
-                               yylval.str = mm_strdup(literalbuf);
+                               base_yylval.str = mm_strdup(literalbuf);
                                return SCONST;
                        }
 <xe>{quotestop} |
 <xe>{quotefail} {
                                yyless(1);
                                BEGIN(state_before);
-                               yylval.str = mm_strdup(literalbuf);
+                               base_yylval.str = mm_strdup(literalbuf);
                                return ECONST;
                        }
 <xn>{quotestop} |
 <xn>{quotefail} {
                                yyless(1);
                                BEGIN(state_before);
-                               yylval.str = mm_strdup(literalbuf);
+                               base_yylval.str = mm_strdup(literalbuf);
                                return NCONST;
                        }
 <xus>{xusstop} {
                                addlit(yytext, yyleng);
                                BEGIN(state_before);
-                               yylval.str = mm_strdup(literalbuf);
+                               base_yylval.str = mm_strdup(literalbuf);
                                return UCONST;
                        }
 <xq,xe,xn,xus>{xqdouble}       { addlitchar('\''); }
@@ -575,7 +567,7 @@ cppline                     {space}*#([^i][A-Za-z]*|{if}|{ifdef}|{ifndef}|{import})((\/\*[^*/]*\*+
                                        addlit(yytext, yyleng);
                                        free(dolqstart);
                                        BEGIN(SQL);
-                                       yylval.str = mm_strdup(literalbuf);
+                                       base_yylval.str = mm_strdup(literalbuf);
                                        return DOLCONST;
                                }
                                else
@@ -612,12 +604,12 @@ cppline                   {space}*#([^i][A-Za-z]*|{if}|{ifdef}|{ifndef}|{import})((\/\*[^*/]*\*+
                                                if (literallen == 0)
                                                        mmerror(PARSE_ERROR, ET_ERROR, "zero-length delimited identifier");
                                                /* The backend will truncate the identifier here. We do not as it does not change the result. */
-                                               yylval.str = mm_strdup(literalbuf);
+                                               base_yylval.str = mm_strdup(literalbuf);
                                                return CSTRING;
                                        }
 <xdc>{xdstop}          {
                                                BEGIN(state_before);
-                                               yylval.str = mm_strdup(literalbuf);
+                                               base_yylval.str = mm_strdup(literalbuf);
                                                return CSTRING;
                                        }
 <xui>{xuistop}         {
@@ -626,7 +618,7 @@ cppline                     {space}*#([^i][A-Za-z]*|{if}|{ifdef}|{ifndef}|{import})((\/\*[^*/]*\*+
                                                        mmerror(PARSE_ERROR, ET_ERROR, "zero-length delimited identifier");
                                                /* The backend will truncate the identifier here. We do not as it does not change the result. */
                                                addlit(yytext, yyleng);
-                                               yylval.str = mm_strdup(literalbuf);
+                                               base_yylval.str = mm_strdup(literalbuf);
                                                return UIDENT;
                                        }
 <xd,xui>{xddouble}             { addlitchar('"'); }
@@ -725,11 +717,11 @@ cppline                   {space}*#([^i][A-Za-z]*|{if}|{ifdef}|{ifndef}|{import})((\/\*[^*/]*\*+
                                                                return yytext[0];
                                                }
 
-                                               yylval.str = mm_strdup(yytext);
+                                               base_yylval.str = mm_strdup(yytext);
                                                return Op;
                                        }
 <SQL>{param}           {
-                                               yylval.ival = atol(yytext+1);
+                                               base_yylval.ival = atol(yytext+1);
                                                return PARAM;
                                        }
 <C,SQL>{integer}       {
@@ -746,36 +738,36 @@ cppline                   {space}*#([^i][A-Za-z]*|{if}|{ifdef}|{ifndef}|{import})((\/\*[^*/]*\*+
                                                        )
                                                {
                                                        errno = 0;
-                                                       yylval.str = mm_strdup(yytext);
+                                                       base_yylval.str = mm_strdup(yytext);
                                                        return FCONST;
                                                }
-                                               yylval.ival = val;
+                                               base_yylval.ival = val;
                                                return ICONST;
                                        }
 <SQL>{ip}                      {
-                                               yylval.str = mm_strdup(yytext);
+                                               base_yylval.str = mm_strdup(yytext);
                                                return IP;
                                }
 <C,SQL>{decimal}       {
-                                               yylval.str = mm_strdup(yytext);
+                                               base_yylval.str = mm_strdup(yytext);
                                                return FCONST;
                        }
 <C,SQL>{real}          {
-                                               yylval.str = mm_strdup(yytext);
+                                               base_yylval.str = mm_strdup(yytext);
                                                return FCONST;
                        }
 <SQL>{realfail1}       {
                                                yyless(yyleng-1);
-                                               yylval.str = mm_strdup(yytext);
+                                               base_yylval.str = mm_strdup(yytext);
                                                return FCONST;
                                        }
 <SQL>{realfail2}       {
                                                yyless(yyleng-2);
-                                               yylval.str = mm_strdup(yytext);
+                                               base_yylval.str = mm_strdup(yytext);
                                                return FCONST;
                                        }
 <SQL>:{identifier}((("->"|\.){identifier})|(\[{array}\]))*     {
-                                               yylval.str = mm_strdup(yytext+1);
+                                               base_yylval.str = mm_strdup(yytext+1);
                                                return(CVARIABLE);
                                        }
 <SQL>{identifier}      {
@@ -801,7 +793,7 @@ cppline                     {space}*#([^i][A-Za-z]*|{if}|{ifdef}|{ifndef}|{import})((\/\*[^*/]*\*+
                                                         * to do so; that's just another way that ecpg could get
                                                         * out of step with the backend.
                                                         */
-                                                       yylval.str = mm_strdup(yytext);
+                                                       base_yylval.str = mm_strdup(yytext);
                                                        return IDENT;
                                                }
                                        }
@@ -822,11 +814,11 @@ cppline                   {space}*#([^i][A-Za-z]*|{if}|{ifdef}|{ifndef}|{import})((\/\*[^*/]*\*+
                                                char* endptr;
 
                                                errno = 0;
-                                               yylval.ival = strtoul((char *)yytext,&endptr,16);
+                                               base_yylval.ival = strtoul((char *)yytext,&endptr,16);
                                                if (*endptr != '\0' || errno == ERANGE)
                                                {
                                                        errno = 0;
-                                                       yylval.str = mm_strdup(yytext);
+                                                       base_yylval.str = mm_strdup(yytext);
                                                        return SCONST;
                                                }
                                                return ICONST;
@@ -839,7 +831,7 @@ cppline                     {space}*#([^i][A-Za-z]*|{if}|{ifdef}|{ifndef}|{import})((\/\*[^*/]*\*+
                                                }
                                                else
                                                {
-                                                       yylval.str = mm_strdup(yytext);
+                                                       base_yylval.str = mm_strdup(yytext);
                                                        return(CPP_LINE);
                                                }
                                        }
@@ -851,12 +843,12 @@ cppline                   {space}*#([^i][A-Za-z]*|{if}|{ifdef}|{ifndef}|{import})((\/\*[^*/]*\*+
                                                }
                                                else
                                                {
-                                                       yylval.str = mm_strdup(yytext);
+                                                       base_yylval.str = mm_strdup(yytext);
                                                        return(CPP_LINE);
                                                }
                                        }
 <C,SQL>{cppline}       {
-                                               yylval.str = mm_strdup(yytext);
+                                               base_yylval.str = mm_strdup(yytext);
                                                return(CPP_LINE);
                                        }
 <C>{identifier}                {
@@ -881,7 +873,7 @@ cppline                     {space}*#([^i][A-Za-z]*|{if}|{ifdef}|{ifndef}|{import})((\/\*[^*/]*\*+
                                                                return keyword->value;
                                                        else
                                                        {
-                                                               yylval.str = mm_strdup(yytext);
+                                                               base_yylval.str = mm_strdup(yytext);
                                                                return IDENT;
                                                        }
                                                }