@@ -673,8 +673,8 @@ output_statement(char * stmt, int mode)
673
673
%type <str> ECPGWhenever ECPGConnect connection_target ECPGOpen open_opts
674
674
%type <str> indicator ECPGExecute c_expr variable_list dotext
675
675
%type <str> storage_clause opt_initializer vartext c_anything blockstart
676
- %type <str> blockend variable_list variable var_anything sql_anything
677
- %type <str> opt_pointer ecpg_ident cvariable ECPGDisconnect dis_name
676
+ %type <str> blockend variable_list variable var_anything do_anything
677
+ %type <str> opt_pointer cvariable ECPGDisconnect dis_name
678
678
%type <str> stmt symbol opt_symbol ECPGRelease execstring server_name
679
679
%type <str> connection_object opt_server opt_port
680
680
%type <str> user_name opt_user char_variable ora_user ident
@@ -762,7 +762,7 @@ stmt: AddAttrStmt { output_statement($1, 0); }
762
762
| ECPGOpen { output_statement($1 , 0 ); }
763
763
| ECPGRelease { /* output already done */ }
764
764
| ECPGSetConnection {
765
- fprintf (yyout, " ECPGsetcon (__LINE__, %s);" , $1 );
765
+ fprintf (yyout, " ECPGsetconn (__LINE__, %s);" , $1 );
766
766
whenever_action (0 );
767
767
free ($1 );
768
768
}
@@ -4014,6 +4014,13 @@ connection_target: database_name opt_server opt_port
4014
4014
{
4015
4015
$$ = $1 ;
4016
4016
}
4017
+ | Sconst
4018
+ {
4019
+ $$ = strdup($1 );
4020
+ $$ [0 ] = ' \" ' ;
4021
+ $$ [strlen($$ ) - 1 ] = ' \" ' ;
4022
+ free ($1 );
4023
+ }
4017
4024
4018
4025
db_prefix : ident cvariable
4019
4026
{
@@ -4075,9 +4082,12 @@ ora_user: user_name
4075
4082
$$ = make3_str($1 , make1_str(" ," ), $3 );
4076
4083
}
4077
4084
4078
- user_name : UserId { $$ = make3_str(make1_str(" \" " ), $1 , make1_str(" \" " )); }
4085
+ user_name : UserId { if ($1 [0 ] == ' \" ' )
4086
+ $$ = $1 ;
4087
+ else
4088
+ $$ = make3_str(make1_str(" \" " ), $1 , make1_str(" \" " ));
4089
+ }
4079
4090
| char_variable { $$ = $1 ; }
4080
- | CSTRING { $$ = make3_str(make1_str(" \" " ), $1 , make1_str(" \" " )); }
4081
4091
| SCONST { $$ = make3_str(make1_str(" \" " ), $1 , make1_str(" \" " )); }
4082
4092
4083
4093
char_variable : cvariable
@@ -4137,7 +4147,8 @@ connection_object: connection_target { $$ = $1; }
4137
4147
*/
4138
4148
ECPGExecute : EXECUTE SQL_IMMEDIATE execstring { $$ = $3 ; };
4139
4149
4140
- execstring : cvariable | CSTRING ;
4150
+ execstring : cvariable |
4151
+ CSTRING { $$ = make3_str(make1_str(" \" " ), $1 , make1_str(" \" " )); };
4141
4152
4142
4153
/*
4143
4154
* open is an open cursor, at the moment this has to be removed
@@ -4534,7 +4545,7 @@ into_list : coutputvariable | into_list ',' coutputvariable;
4534
4545
ecpgstart : SQL_START { reset_variables();}
4535
4546
4536
4547
dotext : /* empty */ { $$ = make1_str(" " ); }
4537
- | dotext sql_anything { $$ = make2_str($1 , $2 ); }
4548
+ | dotext do_anything { $$ = make2_str($1 , $2 ); }
4538
4549
4539
4550
vartext : var_anything { $$ = $1 ; }
4540
4551
| vartext var_anything { $$ = make2_str($1 , $2 ); }
@@ -4559,16 +4570,15 @@ indicator: /* empty */ { $$ = NULL; }
4559
4570
| SQL_INDICATOR name { check_indicator((find_variable($2 ))->type); $$ = $2 ; }
4560
4571
4561
4572
ident : IDENT { $$ = make1_str($1 ); }
4562
-
4563
- ecpg_ident : ident { $$ = $1 ; }
4564
- | CSTRING { $$ = make3_str(make1_str(" \" " ), $1 , make1_str(" \" " )); }
4573
+ | CSTRING { $$ = $1 ; }
4565
4574
/*
4566
4575
* C stuff
4567
4576
*/
4568
4577
4569
- symbol : ecpg_ident { $$ = $1 ; }
4578
+ symbol : IDENT { $$ = make1_str( $1 ) ; }
4570
4579
4571
- c_anything : ecpg_ident { $$ = $1 ; }
4580
+ c_anything : IDENT { $$ = make1_str($1 ); }
4581
+ | CSTRING { $$ = make3_str(make1_str(" \" " ), $1 , make1_str(" \" " )); }
4572
4582
| Iconst { $$ = $1 ; }
4573
4583
| FCONST { $$ = make_name(); }
4574
4584
| ' *' { $$ = make1_str(" *" ); }
@@ -4597,12 +4607,14 @@ c_anything: ecpg_ident { $$ = $1; }
4597
4607
| ' =' { $$ = make1_str(" =" ); }
4598
4608
| ' ,' { $$ = make1_str(" ," ); }
4599
4609
4600
- sql_anything : ecpg_ident { $$ = $1 ; }
4601
- | Iconst { $$ = $1 ; }
4610
+ do_anything : IDENT { $$ = make1_str($1 ); }
4611
+ | CSTRING { $$ = make3_str(make1_str(" \" " ), $1 , make1_str(" \" " ));}
4612
+ | Iconst { $$ = $1 ; }
4602
4613
| FCONST { $$ = make_name(); }
4603
4614
| ' ,' { $$ = make1_str(" ," ); }
4604
4615
4605
- var_anything : ecpg_ident { $$ = $1 ; }
4616
+ var_anything : IDENT { $$ = make1_str($1 ); }
4617
+ | CSTRING { $$ = make3_str(make1_str(" \" " ), $1 , make1_str(" \" " )); }
4606
4618
| Iconst { $$ = $1 ; }
4607
4619
| FCONST { $$ = make_name(); }
4608
4620
/* FIXME: | ',' { $$ = make1_str(","); }*/
0 commit comments