aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/interfaces/ecpg/preproc/descriptor.c28
-rw-r--r--src/interfaces/ecpg/preproc/ecpg.addons30
-rw-r--r--src/interfaces/ecpg/preproc/ecpg.c40
-rw-r--r--src/interfaces/ecpg/preproc/ecpg.header12
-rw-r--r--src/interfaces/ecpg/preproc/ecpg.trailer18
-rw-r--r--src/interfaces/ecpg/preproc/extern.h10
-rw-r--r--src/interfaces/ecpg/preproc/output.c66
-rw-r--r--src/interfaces/ecpg/preproc/parser.c10
-rw-r--r--src/interfaces/ecpg/preproc/pgc.l66
-rw-r--r--src/interfaces/ecpg/preproc/variable.c2
10 files changed, 138 insertions, 144 deletions
diff --git a/src/interfaces/ecpg/preproc/descriptor.c b/src/interfaces/ecpg/preproc/descriptor.c
index 9b4eb630a9a..c6442c18058 100644
--- a/src/interfaces/ecpg/preproc/descriptor.c
+++ b/src/interfaces/ecpg/preproc/descriptor.c
@@ -58,7 +58,7 @@ ECPGnumeric_lvalue(char *name)
case ECPGt_unsigned_long:
case ECPGt_unsigned_long_long:
case ECPGt_const:
- fputs(name, yyout);
+ fputs(name, base_yyout);
break;
default:
mmerror(PARSE_ERROR, ET_ERROR, "variable \"%s\" must have a numeric type", name);
@@ -152,7 +152,7 @@ output_get_descr_header(char *desc_name)
{
struct assignment *results;
- fprintf(yyout, "{ ECPGget_desc_header(__LINE__, %s, &(", desc_name);
+ fprintf(base_yyout, "{ ECPGget_desc_header(__LINE__, %s, &(", desc_name);
for (results = assignments; results != NULL; results = results->next)
{
if (results->value == ECPGd_count)
@@ -162,7 +162,7 @@ output_get_descr_header(char *desc_name)
}
drop_assignments();
- fprintf(yyout, "));\n");
+ fprintf(base_yyout, "));\n");
whenever_action(3);
}
@@ -171,7 +171,7 @@ output_get_descr(char *desc_name, char *index)
{
struct assignment *results;
- fprintf(yyout, "{ ECPGget_desc(__LINE__, %s, %s,", desc_name, index);
+ fprintf(base_yyout, "{ ECPGget_desc(__LINE__, %s, %s,", desc_name, index);
for (results = assignments; results != NULL; results = results->next)
{
const struct variable *v = find_variable(results->variable);
@@ -188,12 +188,13 @@ output_get_descr(char *desc_name, char *index)
default:
break;
}
- fprintf(yyout, "%s,", get_dtype(results->value));
- ECPGdump_a_type(yyout, v->name, v->type, v->brace_level, NULL, NULL, -1, NULL, NULL, str_zero, NULL, NULL);
+ fprintf(base_yyout, "%s,", get_dtype(results->value));
+ ECPGdump_a_type(base_yyout, v->name, v->type, v->brace_level,
+ NULL, NULL, -1, NULL, NULL, str_zero, NULL, NULL);
free(str_zero);
}
drop_assignments();
- fputs("ECPGd_EODT);\n", yyout);
+ fputs("ECPGd_EODT);\n", base_yyout);
whenever_action(2 | 1);
}
@@ -203,7 +204,7 @@ output_set_descr_header(char *desc_name)
{
struct assignment *results;
- fprintf(yyout, "{ ECPGset_desc_header(__LINE__, %s, (int)(", desc_name);
+ fprintf(base_yyout, "{ ECPGset_desc_header(__LINE__, %s, (int)(", desc_name);
for (results = assignments; results != NULL; results = results->next)
{
if (results->value == ECPGd_count)
@@ -213,7 +214,7 @@ output_set_descr_header(char *desc_name)
}
drop_assignments();
- fprintf(yyout, "));\n");
+ fprintf(base_yyout, "));\n");
whenever_action(3);
}
@@ -264,7 +265,7 @@ output_set_descr(char *desc_name, char *index)
{
struct assignment *results;
- fprintf(yyout, "{ ECPGset_desc(__LINE__, %s, %s,", desc_name, index);
+ fprintf(base_yyout, "{ ECPGset_desc(__LINE__, %s, %s,", desc_name, index);
for (results = assignments; results != NULL; results = results->next)
{
const struct variable *v = find_variable(results->variable);
@@ -297,8 +298,9 @@ output_set_descr(char *desc_name, char *index)
{
char *str_zero = mm_strdup("0");
- fprintf(yyout, "%s,", get_dtype(results->value));
- ECPGdump_a_type(yyout, v->name, v->type, v->brace_level, NULL, NULL, -1, NULL, NULL, str_zero, NULL, NULL);
+ fprintf(base_yyout, "%s,", get_dtype(results->value));
+ ECPGdump_a_type(base_yyout, v->name, v->type, v->brace_level,
+ NULL, NULL, -1, NULL, NULL, str_zero, NULL, NULL);
free(str_zero);
}
break;
@@ -308,7 +310,7 @@ output_set_descr(char *desc_name, char *index)
}
}
drop_assignments();
- fputs("ECPGd_EODT);\n", yyout);
+ fputs("ECPGd_EODT);\n", base_yyout);
whenever_action(2 | 1);
}
diff --git a/src/interfaces/ecpg/preproc/ecpg.addons b/src/interfaces/ecpg/preproc/ecpg.addons
index b3b36cf72da..ca3efadc481 100644
--- a/src/interfaces/ecpg/preproc/ecpg.addons
+++ b/src/interfaces/ecpg/preproc/ecpg.addons
@@ -8,7 +8,7 @@ ECPG: stmtClosePortalStmt block
if (connection)
mmerror(PARSE_ERROR, ET_ERROR, "AT option not allowed in CLOSE DATABASE statement");
- fprintf(yyout, "{ ECPGdisconnect(__LINE__, \"CURRENT\");");
+ fprintf(base_yyout, "{ ECPGdisconnect(__LINE__, \"CURRENT\");");
whenever_action(2);
free($1);
break;
@@ -42,14 +42,14 @@ ECPG: stmtPrepareStmt block
}
ECPG: stmtTransactionStmt block
{
- fprintf(yyout, "{ ECPGtrans(__LINE__, %s, \"%s\");", connection ? connection : "NULL", $1);
+ fprintf(base_yyout, "{ ECPGtrans(__LINE__, %s, \"%s\");", connection ? connection : "NULL", $1);
whenever_action(2);
free($1);
}
ECPG: stmtViewStmt rule
| ECPGAllocateDescr
{
- fprintf(yyout,"ECPGallocate_desc(__LINE__, %s);",$1);
+ fprintf(base_yyout,"ECPGallocate_desc(__LINE__, %s);",$1);
whenever_action(0);
free($1);
}
@@ -58,7 +58,7 @@ ECPG: stmtViewStmt rule
if (connection)
mmerror(PARSE_ERROR, ET_ERROR, "AT option not allowed in CONNECT statement");
- fprintf(yyout, "{ ECPGconnect(__LINE__, %d, %s, %d); ", compat, $1, autocommit);
+ fprintf(base_yyout, "{ ECPGconnect(__LINE__, %d, %s, %d); ", compat, $1, autocommit);
reset_variables();
whenever_action(2);
free($1);
@@ -69,7 +69,7 @@ ECPG: stmtViewStmt rule
}
| ECPGDeallocateDescr
{
- fprintf(yyout,"ECPGdeallocate_desc(__LINE__, %s);",$1);
+ fprintf(base_yyout,"ECPGdeallocate_desc(__LINE__, %s);",$1);
whenever_action(0);
free($1);
}
@@ -79,10 +79,10 @@ ECPG: stmtViewStmt rule
}
| ECPGDescribe
{
- fprintf(yyout, "{ ECPGdescribe(__LINE__, %d, %s,", compat, $1);
+ fprintf(base_yyout, "{ ECPGdescribe(__LINE__, %d, %s,", compat, $1);
dump_variables(argsresult, 1);
- fputs("ECPGt_EORT);", yyout);
- fprintf(yyout, "}");
+ fputs("ECPGt_EORT);", base_yyout);
+ fprintf(base_yyout, "}");
output_line_number();
free($1);
@@ -92,7 +92,7 @@ ECPG: stmtViewStmt rule
if (connection)
mmerror(PARSE_ERROR, ET_ERROR, "AT option not allowed in DISCONNECT statement");
- fprintf(yyout, "{ ECPGdisconnect(__LINE__, %s);",
+ fprintf(base_yyout, "{ ECPGdisconnect(__LINE__, %s);",
$1 ? $1 : "\"CURRENT\"");
whenever_action(2);
free($1);
@@ -103,11 +103,11 @@ ECPG: stmtViewStmt rule
const char *con = connection ? connection : "NULL";
if (strcmp($1, "all") == 0)
- fprintf(yyout, "{ ECPGdeallocate_all(__LINE__, %d, %s);", compat, con);
+ fprintf(base_yyout, "{ ECPGdeallocate_all(__LINE__, %d, %s);", compat, con);
else if ($1[0] == ':')
- fprintf(yyout, "{ ECPGdeallocate(__LINE__, %d, %s, %s);", compat, con, $1+1);
+ fprintf(base_yyout, "{ ECPGdeallocate(__LINE__, %d, %s, %s);", compat, con, $1+1);
else
- fprintf(yyout, "{ ECPGdeallocate(__LINE__, %d, %s, \"%s\");", compat, con, $1);
+ fprintf(base_yyout, "{ ECPGdeallocate(__LINE__, %d, %s, \"%s\");", compat, con, $1);
whenever_action(2);
free($1);
@@ -138,7 +138,7 @@ ECPG: stmtViewStmt rule
}
| ECPGSetAutocommit
{
- fprintf(yyout, "{ ECPGsetcommit(__LINE__, \"%s\", %s);", $1, connection ? connection : "NULL");
+ fprintf(base_yyout, "{ ECPGsetcommit(__LINE__, \"%s\", %s);", $1, connection ? connection : "NULL");
whenever_action(2);
free($1);
}
@@ -147,7 +147,7 @@ ECPG: stmtViewStmt rule
if (connection)
mmerror(PARSE_ERROR, ET_ERROR, "AT option not allowed in SET CONNECTION statement");
- fprintf(yyout, "{ ECPGsetconn(__LINE__, %s);", $1);
+ fprintf(base_yyout, "{ ECPGsetconn(__LINE__, %s);", $1);
whenever_action(2);
free($1);
}
@@ -169,7 +169,7 @@ ECPG: stmtViewStmt rule
if (connection)
mmerror(PARSE_ERROR, ET_ERROR, "AT option not allowed in TYPE statement");
- fprintf(yyout, "%s", $1);
+ fprintf(base_yyout, "%s", $1);
free($1);
output_line_number();
}
diff --git a/src/interfaces/ecpg/preproc/ecpg.c b/src/interfaces/ecpg/preproc/ecpg.c
index 46bacb0e8ee..3b0de973210 100644
--- a/src/interfaces/ecpg/preproc/ecpg.c
+++ b/src/interfaces/ecpg/preproc/ecpg.c
@@ -165,11 +165,11 @@ main(int argc, char *const argv[])
case 'o':
output_filename = mm_strdup(optarg);
if (strcmp(output_filename, "-") == 0)
- yyout = stdout;
+ base_yyout = stdout;
else
- yyout = fopen(output_filename, PG_BINARY_W);
+ base_yyout = fopen(output_filename, PG_BINARY_W);
- if (yyout == NULL)
+ if (base_yyout == NULL)
{
fprintf(stderr, _("%s: could not open file \"%s\": %s\n"),
progname, output_filename, strerror(errno));
@@ -232,7 +232,7 @@ main(int argc, char *const argv[])
break;
case 'd':
#ifdef YYDEBUG
- yydebug = 1;
+ base_yydebug = 1;
#else
fprintf(stderr, _("%s: parser debug support (-d) not available\n"),
progname);
@@ -280,7 +280,7 @@ main(int argc, char *const argv[])
{
input_filename = mm_alloc(strlen("stdin") + 1);
strcpy(input_filename, "stdin");
- yyin = stdin;
+ base_yyin = stdin;
}
else
{
@@ -304,13 +304,13 @@ main(int argc, char *const argv[])
ptr2ext[4] = '\0';
}
- yyin = fopen(input_filename, PG_BINARY_R);
+ base_yyin = fopen(input_filename, PG_BINARY_R);
}
if (out_option == 0) /* calculate the output name */
{
if (strcmp(input_filename, "stdin") == 0)
- yyout = stdout;
+ base_yyout = stdout;
else
{
output_filename = mm_strdup(input_filename);
@@ -320,8 +320,8 @@ main(int argc, char *const argv[])
ptr2ext[1] = (header_mode == true) ? 'h' : 'c';
ptr2ext[2] = '\0';
- yyout = fopen(output_filename, PG_BINARY_W);
- if (yyout == NULL)
+ base_yyout = fopen(output_filename, PG_BINARY_W);
+ if (base_yyout == NULL)
{
fprintf(stderr, _("%s: could not open file \"%s\": %s\n"),
progname, output_filename, strerror(errno));
@@ -332,7 +332,7 @@ main(int argc, char *const argv[])
}
}
- if (yyin == NULL)
+ if (base_yyin == NULL)
fprintf(stderr, _("%s: could not open file \"%s\": %s\n"),
progname, argv[fnr], strerror(errno));
else
@@ -427,23 +427,23 @@ main(int argc, char *const argv[])
/* we need several includes */
/* but not if we are in header mode */
if (regression_mode)
- fprintf(yyout, "/* Processed by ecpg (regression mode) */\n");
+ fprintf(base_yyout, "/* Processed by ecpg (regression mode) */\n");
else
- fprintf(yyout, "/* Processed by ecpg (%s) */\n", PG_VERSION);
+ fprintf(base_yyout, "/* Processed by ecpg (%s) */\n", PG_VERSION);
if (header_mode == false)
{
- fprintf(yyout, "/* These include files are added by the preprocessor */\n#include <ecpglib.h>\n#include <ecpgerrno.h>\n#include <sqlca.h>\n");
+ fprintf(base_yyout, "/* These include files are added by the preprocessor */\n#include <ecpglib.h>\n#include <ecpgerrno.h>\n#include <sqlca.h>\n");
/* add some compatibility headers */
if (INFORMIX_MODE)
- fprintf(yyout, "/* Needed for informix compatibility */\n#include <ecpg_informix.h>\n");
+ fprintf(base_yyout, "/* Needed for informix compatibility */\n#include <ecpg_informix.h>\n");
- fprintf(yyout, "/* End of automatic include section */\n");
+ fprintf(base_yyout, "/* End of automatic include section */\n");
}
if (regression_mode)
- fprintf(yyout, "#define ECPGdebug(X,Y) ECPGdebug((X)+100,(Y))\n");
+ fprintf(base_yyout, "#define ECPGdebug(X,Y) ECPGdebug((X)+100,(Y))\n");
output_line_number();
@@ -458,10 +458,10 @@ main(int argc, char *const argv[])
if (!(ptr->opened))
mmerror(PARSE_ERROR, ET_WARNING, "cursor \"%s\" has been declared but not opened", ptr->name);
- if (yyin != NULL && yyin != stdin)
- fclose(yyin);
- if (out_option == 0 && yyout != stdout)
- fclose(yyout);
+ if (base_yyin != NULL && base_yyin != stdin)
+ fclose(base_yyin);
+ if (out_option == 0 && base_yyout != stdout)
+ fclose(base_yyout);
/*
* If there was an error, delete the output file.
diff --git a/src/interfaces/ecpg/preproc/ecpg.header b/src/interfaces/ecpg/preproc/ecpg.header
index f41999a86f1..672f0b45d48 100644
--- a/src/interfaces/ecpg/preproc/ecpg.header
+++ b/src/interfaces/ecpg/preproc/ecpg.header
@@ -72,7 +72,7 @@ vmmerror(int error_code, enum errortype type, const char *error, va_list ap)
/* localize the error message string */
error = _(error);
- fprintf(stderr, "%s:%d: ", input_filename, yylineno);
+ fprintf(stderr, "%s:%d: ", input_filename, base_yylineno);
switch(type)
{
@@ -117,10 +117,10 @@ mmfatal(int error_code, const char *error, ...)
vmmerror(error_code, ET_ERROR, error, ap);
va_end(ap);
- if (yyin)
- fclose(yyin);
- if (yyout)
- fclose(yyout);
+ if (base_yyin)
+ fclose(base_yyin);
+ if (base_yyout)
+ fclose(base_yyout);
if (strcmp(output_filename, "-") != 0 && unlink(output_filename) != 0)
fprintf(stderr, _("could not remove output file \"%s\"\n"), output_filename);
@@ -195,7 +195,7 @@ make3_str(char *str1, char *str2, char *str3)
static char *
make_name(void)
{
- return mm_strdup(yytext);
+ return mm_strdup(base_yytext);
}
static char *
diff --git a/src/interfaces/ecpg/preproc/ecpg.trailer b/src/interfaces/ecpg/preproc/ecpg.trailer
index de0df7440f0..31e765ccd39 100644
--- a/src/interfaces/ecpg/preproc/ecpg.trailer
+++ b/src/interfaces/ecpg/preproc/ecpg.trailer
@@ -8,14 +8,14 @@ statement: ecpgstart at stmt ';' { connection = NULL; }
| ecpgstart stmt ';'
| ecpgstart ECPGVarDeclaration
{
- fprintf(yyout, "%s", $2);
+ fprintf(base_yyout, "%s", $2);
free($2);
output_line_number();
}
| ECPGDeclaration
- | c_thing { fprintf(yyout, "%s", $1); free($1); }
- | CPP_LINE { fprintf(yyout, "%s", $1); free($1); }
- | '{' { braces_open++; fputs("{", yyout); }
+ | c_thing { fprintf(base_yyout, "%s", $1); free($1); }
+ | CPP_LINE { fprintf(base_yyout, "%s", $1); free($1); }
+ | '{' { braces_open++; fputs("{", base_yyout); }
| '}'
{
remove_typedefs(braces_open);
@@ -25,7 +25,7 @@ statement: ecpgstart at stmt ';' { connection = NULL; }
free(current_function);
current_function = NULL;
}
- fputs("}", yyout);
+ fputs("}", base_yyout);
}
;
@@ -380,10 +380,10 @@ ecpg_interval: opt_interval { $$ = $1; }
* variable declaration inside exec sql declare block
*/
ECPGDeclaration: sql_startdeclare
- { fputs("/* exec sql begin declare section */", yyout); }
+ { fputs("/* exec sql begin declare section */", base_yyout); }
var_type_declarations sql_enddeclare
{
- fprintf(yyout, "%s/* exec sql end declare section */", $3);
+ fprintf(base_yyout, "%s/* exec sql end declare section */", $3);
free($3);
output_line_number();
}
@@ -417,7 +417,7 @@ type_declaration: S_TYPEDEF
{
add_typedef($5, $6.index1, $6.index2, $3.type_enum, $3.type_dimension, $3.type_index, initializer, *$4 ? 1 : 0);
- fprintf(yyout, "typedef %s %s %s %s;\n", $3.type_str, *$4 ? "*" : "", $5, $6.str);
+ fprintf(base_yyout, "typedef %s %s %s %s;\n", $3.type_str, *$4 ? "*" : "", $5, $6.str);
output_line_number();
$$ = mm_strdup("");
};
@@ -1909,7 +1909,7 @@ void base_yyerror(const char *error)
{
/* translator: %s is typically the translation of "syntax error" */
mmerror(PARSE_ERROR, ET_ERROR, "%s at or near \"%s\"",
- _(error), token_start ? token_start : yytext);
+ _(error), token_start ? token_start : base_yytext);
}
void parser_init(void)
diff --git a/src/interfaces/ecpg/preproc/extern.h b/src/interfaces/ecpg/preproc/extern.h
index f6841726e4a..0ce3a6e4248 100644
--- a/src/interfaces/ecpg/preproc/extern.h
+++ b/src/interfaces/ecpg/preproc/extern.h
@@ -35,15 +35,15 @@ extern char *descriptor_index;
extern char *descriptor_name;
extern char *connection;
extern char *input_filename;
-extern char *yytext,
+extern char *base_yytext,
*token_start;
#ifdef YYDEBUG
-extern int yydebug;
+extern int base_yydebug;
#endif
-extern int yylineno;
-extern FILE *yyin,
- *yyout;
+extern int base_yylineno;
+extern FILE *base_yyin,
+ *base_yyout;
extern char *output_filename;
extern struct _include_path *include_paths;
diff --git a/src/interfaces/ecpg/preproc/output.c b/src/interfaces/ecpg/preproc/output.c
index c1ba55d5170..59d5d30df4a 100644
--- a/src/interfaces/ecpg/preproc/output.c
+++ b/src/interfaces/ecpg/preproc/output.c
@@ -11,7 +11,7 @@ output_line_number(void)
{
char *line = hashline_number();
- fprintf(yyout, "%s", line);
+ fprintf(base_yyout, "%s", line);
free(line);
}
@@ -37,22 +37,22 @@ print_action(struct when * w)
switch (w->code)
{
case W_SQLPRINT:
- fprintf(yyout, "sqlprint();");
+ fprintf(base_yyout, "sqlprint();");
break;
case W_GOTO:
- fprintf(yyout, "goto %s;", w->command);
+ fprintf(base_yyout, "goto %s;", w->command);
break;
case W_DO:
- fprintf(yyout, "%s;", w->command);
+ fprintf(base_yyout, "%s;", w->command);
break;
case W_STOP:
- fprintf(yyout, "exit (1);");
+ fprintf(base_yyout, "exit (1);");
break;
case W_BREAK:
- fprintf(yyout, "break;");
+ fprintf(base_yyout, "break;");
break;
default:
- fprintf(yyout, "{/* %d not implemented yet */}", w->code);
+ fprintf(base_yyout, "{/* %d not implemented yet */}", w->code);
break;
}
}
@@ -63,24 +63,24 @@ whenever_action(int mode)
if ((mode & 1) == 1 && when_nf.code != W_NOTHING)
{
output_line_number();
- fprintf(yyout, "\nif (sqlca.sqlcode == ECPG_NOT_FOUND) ");
+ fprintf(base_yyout, "\nif (sqlca.sqlcode == ECPG_NOT_FOUND) ");
print_action(&when_nf);
}
if (when_warn.code != W_NOTHING)
{
output_line_number();
- fprintf(yyout, "\nif (sqlca.sqlwarn[0] == 'W') ");
+ fprintf(base_yyout, "\nif (sqlca.sqlwarn[0] == 'W') ");
print_action(&when_warn);
}
if (when_error.code != W_NOTHING)
{
output_line_number();
- fprintf(yyout, "\nif (sqlca.sqlcode < 0) ");
+ fprintf(base_yyout, "\nif (sqlca.sqlcode < 0) ");
print_action(&when_error);
}
if ((mode & 2) == 2)
- fputc('}', yyout);
+ fputc('}', base_yyout);
output_line_number();
}
@@ -91,7 +91,7 @@ hashline_number(void)
/* do not print line numbers if we are in debug mode */
if (input_filename
#ifdef YYDEBUG
- && !yydebug
+ && !base_yydebug
#endif
)
{
@@ -100,7 +100,7 @@ hashline_number(void)
char *src,
*dest;
- sprintf(line, "\n#line %d \"", yylineno);
+ sprintf(line, "\n#line %d \"", base_yylineno);
src = input_filename;
dest = line + strlen(line);
while (*src)
@@ -128,27 +128,27 @@ static char *ecpg_statement_type_name[] = {
void
output_statement(char *stmt, int whenever_mode, enum ECPG_statement_type st)
{
- fprintf(yyout, "{ ECPGdo(__LINE__, %d, %d, %s, %d, ", compat, force_indicator, connection ? connection : "NULL", questionmarks);
+ fprintf(base_yyout, "{ ECPGdo(__LINE__, %d, %d, %s, %d, ", compat, force_indicator, connection ? connection : "NULL", questionmarks);
if (st == ECPGst_execute || st == ECPGst_exec_immediate)
{
- fprintf(yyout, "%s, %s, ", ecpg_statement_type_name[st], stmt);
+ fprintf(base_yyout, "%s, %s, ", ecpg_statement_type_name[st], stmt);
}
else
{
if (st == ECPGst_prepnormal && auto_prepare)
- fputs("ECPGst_prepnormal, \"", yyout);
+ fputs("ECPGst_prepnormal, \"", base_yyout);
else
- fputs("ECPGst_normal, \"", yyout);
+ fputs("ECPGst_normal, \"", base_yyout);
output_escaped_str(stmt, false);
- fputs("\", ", yyout);
+ fputs("\", ", base_yyout);
}
/* dump variables to C file */
dump_variables(argsinsert, 1);
- fputs("ECPGt_EOIT, ", yyout);
+ fputs("ECPGt_EOIT, ", base_yyout);
dump_variables(argsresult, 1);
- fputs("ECPGt_EORT);", yyout);
+ fputs("ECPGt_EORT);", base_yyout);
reset_variables();
whenever_action(whenever_mode | 2);
@@ -160,11 +160,11 @@ output_statement(char *stmt, int whenever_mode, enum ECPG_statement_type st)
void
output_prepare_statement(char *name, char *stmt)
{
- fprintf(yyout, "{ ECPGprepare(__LINE__, %s, %d, ", connection ? connection : "NULL", questionmarks);
+ fprintf(base_yyout, "{ ECPGprepare(__LINE__, %s, %d, ", connection ? connection : "NULL", questionmarks);
output_escaped_str(name, true);
- fputs(", ", yyout);
+ fputs(", ", base_yyout);
output_escaped_str(stmt, true);
- fputs(");", yyout);
+ fputs(");", base_yyout);
whenever_action(2);
free(name);
if (connection != NULL)
@@ -178,12 +178,12 @@ output_deallocate_prepare_statement(char *name)
if (strcmp(name, "all") != 0)
{
- fprintf(yyout, "{ ECPGdeallocate(__LINE__, %d, %s, ", compat, con);
+ fprintf(base_yyout, "{ ECPGdeallocate(__LINE__, %d, %s, ", compat, con);
output_escaped_str(name, true);
- fputs(");", yyout);
+ fputs(");", base_yyout);
}
else
- fprintf(yyout, "{ ECPGdeallocate_all(__LINE__, %d, %s);", compat, con);
+ fprintf(base_yyout, "{ ECPGdeallocate_all(__LINE__, %d, %s);", compat, con);
whenever_action(2);
free(name);
@@ -203,16 +203,16 @@ output_escaped_str(char *str, bool quoted)
{
i = 1;
len--;
- fputs("\"", yyout);
+ fputs("\"", base_yyout);
}
/* output this char by char as we have to filter " and \n */
for (; i < len; i++)
{
if (str[i] == '"')
- fputs("\\\"", yyout);
+ fputs("\\\"", base_yyout);
else if (str[i] == '\n')
- fputs("\\\n", yyout);
+ fputs("\\\n", base_yyout);
else if (str[i] == '\\')
{
int j = i;
@@ -230,17 +230,17 @@ output_escaped_str(char *str, bool quoted)
if ((str[j] != '\n') && (str[j] != '\r' || str[j + 1] != '\n')) /* not followed by a
* newline */
- fputs("\\\\", yyout);
+ fputs("\\\\", base_yyout);
}
else if (str[i] == '\r' && str[i + 1] == '\n')
{
- fputs("\\\r\n", yyout);
+ fputs("\\\r\n", base_yyout);
i++;
}
else
- fputc(str[i], yyout);
+ fputc(str[i], base_yyout);
}
if (quoted && str[0] == '"' && str[len] == '"')
- fputs("\"", yyout);
+ fputs("\"", base_yyout);
}
diff --git a/src/interfaces/ecpg/preproc/parser.c b/src/interfaces/ecpg/preproc/parser.c
index 40830f62267..94aee0d0dea 100644
--- a/src/interfaces/ecpg/preproc/parser.c
+++ b/src/interfaces/ecpg/preproc/parser.c
@@ -60,7 +60,7 @@ filtered_base_yylex(void)
cur_token = lookahead_token;
base_yylval = lookahead_yylval;
base_yylloc = lookahead_yylloc;
- yytext = lookahead_yytext;
+ base_yytext = lookahead_yytext;
*lookahead_end = lookahead_hold_char;
have_lookahead = false;
}
@@ -93,13 +93,13 @@ filtered_base_yylex(void)
* '\0' here, and will undo that when we call it again. We need to redo
* it to fully revert the lookahead call for error reporting purposes.
*/
- lookahead_end = yytext + cur_token_length;
+ lookahead_end = base_yytext + cur_token_length;
Assert(*lookahead_end == '\0');
/* Save and restore lexer output variables around the call */
cur_yylval = base_yylval;
cur_yylloc = base_yylloc;
- cur_yytext = yytext;
+ cur_yytext = base_yytext;
/* Get next token, saving outputs into lookahead variables */
next_token = base_yylex();
@@ -107,11 +107,11 @@ filtered_base_yylex(void)
lookahead_token = next_token;
lookahead_yylval = base_yylval;
lookahead_yylloc = base_yylloc;
- lookahead_yytext = yytext;
+ lookahead_yytext = base_yytext;
base_yylval = cur_yylval;
base_yylloc = cur_yylloc;
- yytext = cur_yytext;
+ base_yytext = cur_yytext;
/* Now revert the un-truncation of the current token */
lookahead_hold_char = *lookahead_end;
diff --git a/src/interfaces/ecpg/preproc/pgc.l b/src/interfaces/ecpg/preproc/pgc.l
index 222049624d7..283343d8228 100644
--- a/src/interfaces/ecpg/preproc/pgc.l
+++ b/src/interfaces/ecpg/preproc/pgc.l
@@ -24,19 +24,10 @@
#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;
}
}
diff --git a/src/interfaces/ecpg/preproc/variable.c b/src/interfaces/ecpg/preproc/variable.c
index bb4b664b859..232b9409388 100644
--- a/src/interfaces/ecpg/preproc/variable.c
+++ b/src/interfaces/ecpg/preproc/variable.c
@@ -452,7 +452,7 @@ dump_variables(struct arguments * list, int mode)
dump_variables(list->next, mode);
/* Then the current element and its indicator */
- ECPGdump_a_type(yyout, list->variable->name, list->variable->type, list->variable->brace_level,
+ ECPGdump_a_type(base_yyout, list->variable->name, list->variable->type, list->variable->brace_level,
list->indicator->name, list->indicator->type, list->indicator->brace_level,
NULL, NULL, str_zero, NULL, NULL);