%type ECPGWhenever ECPGConnect connection_target ECPGOpen open_opts
%type indicator ECPGExecute c_expr variable_list dotext
%type storage_clause opt_initializer vartext c_anything blockstart
-%type blockend variable_list variable var_anything sql_anything
-%type opt_pointer ecpg_ident cvariable ECPGDisconnect dis_name
+%type blockend variable_list variable var_anything do_anything
+%type opt_pointer cvariable ECPGDisconnect dis_name
%type stmt symbol opt_symbol ECPGRelease execstring server_name
%type connection_object opt_server opt_port
%type user_name opt_user char_variable ora_user ident
| ECPGOpen { output_statement($1, 0); }
| ECPGRelease { /* output already done */ }
| ECPGSetConnection {
- fprintf(yyout, "ECPGsetcon(__LINE__, %s);", $1);
+ fprintf(yyout, "ECPGsetconn(__LINE__, %s);", $1);
whenever_action(0);
free($1);
}
{
$$ = $1;
}
+ | Sconst
+ {
+ $$ = strdup($1);
+ $$[0] = '\"';
+ $$[strlen($$) - 1] = '\"';
+ free($1);
+ }
db_prefix: ident cvariable
{
$$ = make3_str($1, make1_str(","), $3);
}
-user_name: UserId { $$ = make3_str(make1_str("\""), $1, make1_str("\"")); }
+user_name: UserId { if ($1[0] == '\"')
+ $$ = $1;
+ else
+ $$ = make3_str(make1_str("\""), $1, make1_str("\""));
+ }
| char_variable { $$ = $1; }
- | CSTRING { $$ = make3_str(make1_str("\""), $1, make1_str("\"")); }
| SCONST { $$ = make3_str(make1_str("\""), $1, make1_str("\"")); }
char_variable: cvariable
*/
ECPGExecute : EXECUTE SQL_IMMEDIATE execstring { $$ = $3; };
-execstring: cvariable | CSTRING;
+execstring: cvariable |
+ CSTRING { $$ = make3_str(make1_str("\""), $1, make1_str("\"")); };
/*
* open is an open cursor, at the moment this has to be removed
ecpgstart: SQL_START { reset_variables();}
dotext: /* empty */ { $$ = make1_str(""); }
- | dotext sql_anything { $$ = make2_str($1, $2); }
+ | dotext do_anything { $$ = make2_str($1, $2); }
vartext: var_anything { $$ = $1; }
| vartext var_anything { $$ = make2_str($1, $2); }
| SQL_INDICATOR name { check_indicator((find_variable($2))->type); $$ = $2; }
ident: IDENT { $$ = make1_str($1); }
-
-ecpg_ident: ident { $$ = $1; }
- | CSTRING { $$ = make3_str(make1_str("\""), $1, make1_str("\"")); }
+ | CSTRING { $$ = $1; }
/*
* C stuff
*/
-symbol: ecpg_ident { $$ = $1; }
+symbol: IDENT { $$ = make1_str($1); }
-c_anything: ecpg_ident { $$ = $1; }
+c_anything: IDENT { $$ = make1_str($1); }
+ | CSTRING { $$ = make3_str(make1_str("\""), $1, make1_str("\"")); }
| Iconst { $$ = $1; }
| FCONST { $$ = make_name(); }
| '*' { $$ = make1_str("*"); }
| '=' { $$ = make1_str("="); }
| ',' { $$ = make1_str(","); }
-sql_anything: ecpg_ident { $$ = $1; }
- | Iconst { $$ = $1; }
+do_anything: IDENT { $$ = make1_str($1); }
+ | CSTRING { $$ = make3_str(make1_str("\""), $1, make1_str("\""));}
+ | Iconst { $$ = $1; }
| FCONST { $$ = make_name(); }
| ',' { $$ = make1_str(","); }
-var_anything: ecpg_ident { $$ = $1; }
+var_anything: IDENT { $$ = make1_str($1); }
+ | CSTRING { $$ = make3_str(make1_str("\""), $1, make1_str("\"")); }
| Iconst { $$ = $1; }
| FCONST { $$ = make_name(); }
/*FIXME: | ',' { $$ = make1_str(","); }*/