@@ -387,6 +387,7 @@ prog: statements;
387
387
388
388
statements :/* EMPTY*/
389
389
| statements statement
390
+ ;
390
391
391
392
statement :ecpgstart opt_at stmt ' ;' { connection =NULL ; }
392
393
| ecpgstart stmt ' ;'
@@ -1150,9 +1151,11 @@ key_actions: key_delete{ $$ = $1; }
1150
1151
1151
1152
key_delete :ON DELETE key_reference
1152
1153
{$$ = cat2_str(make_str(" on delete" ),$3 ); }
1154
+ ;
1153
1155
1154
1156
key_update :ON UPDATE key_reference
1155
1157
{$$ = cat2_str(make_str(" on update" ),$3 ); }
1158
+ ;
1156
1159
1157
1160
key_reference :NO ACTION {$$ = make_str(" no action" ); }
1158
1161
| RESTRICT {$$ = make_str(" restrict" ); }
@@ -1751,6 +1754,7 @@ func_as: StringConst
1751
1754
{$$ =$1 ; }
1752
1755
| StringConst ' ,' StringConst
1753
1756
{$$ = cat_str(3 ,$1 , make_str(" ," ),$3 ); }
1757
+ ;
1754
1758
1755
1759
func_return :func_type
1756
1760
{
@@ -3246,6 +3250,7 @@ attrs: attr_name
3246
3250
3247
3251
opt_empty_parentheses :' (' ' )' {$$ = make_str(" ()" ); }
3248
3252
| /* EMPTY*/ {$$ = EMPTY; }
3253
+ ;
3249
3254
3250
3255
3251
3256
/* ****************************************************************************
@@ -3412,6 +3417,7 @@ ECPGConnect: SQL_CONNECT TO connection_target opt_connection_name opt_user
3412
3417
/* also allow ORACLE syntax*/
3413
3418
| SQL_CONNECT ora_user
3414
3419
{$$ = cat_str(3 , make_str(" NULL," ),$2 , make_str(" ,NULL" )); }
3420
+ ;
3415
3421
3416
3422
connection_target :database_name opt_server opt_port
3417
3423
{
@@ -3470,6 +3476,7 @@ connection_target: database_name opt_server opt_port
3470
3476
else
3471
3477
$$ = make3_str(make_str(" \" " ),$1 , make_str(" \" " ));
3472
3478
}
3479
+ ;
3473
3480
3474
3481
db_prefix :ident cvariable
3475
3482
{
@@ -3487,6 +3494,7 @@ db_prefix: ident cvariable
3487
3494
3488
3495
$$ = make3_str($1 , make_str(" :" ),$2 );
3489
3496
}
3497
+ ;
3490
3498
3491
3499
server :Op server_name
3492
3500
{
@@ -3498,22 +3506,28 @@ server: Op server_name
3498
3506
3499
3507
$$ = make2_str($1 ,$2 );
3500
3508
}
3509
+ ;
3501
3510
3502
3511
opt_server :server {$$ =$1 ; }
3503
3512
| /* EMPTY*/ {$$ = EMPTY; }
3513
+ ;
3504
3514
3505
3515
server_name :ColId {$$ =$1 ; }
3506
3516
| ColId ' .' server_name {$$ = make3_str($1 , make_str(" ." ),$3 ); }
3507
3517
| IP {$$ = make_name(); }
3518
+ ;
3508
3519
3509
3520
opt_port :' :' PosIntConst {$$ = make2_str(make_str(" :" ),$2 ); }
3510
3521
| /* EMPTY*/ {$$ = EMPTY; }
3522
+ ;
3511
3523
3512
3524
opt_connection_name :AS connection_target {$$ =$2 ; }
3513
3525
| /* EMPTY*/ {$$ = make_str(" NULL" ); }
3526
+ ;
3514
3527
3515
3528
opt_user :USER ora_user {$$ =$2 ; }
3516
- | /* EMPTY*/ {$$ = make_str(" NULL,NULL" ); }
3529
+ | /* EMPTY*/ {$$ = make_str(" NULL,NULL" ); }
3530
+ ;
3517
3531
3518
3532
ora_user :user_name
3519
3533
{$$ = cat2_str($1 , make_str(" , NULL" )); }
@@ -3993,6 +4007,7 @@ ECPGDeclare: DECLARE STATEMENT ident
3993
4007
* the exec sql disconnect statement: disconnect from the given database
3994
4008
*/
3995
4009
ECPGDisconnect :SQL_DISCONNECT dis_name {$$ =$2 ; }
4010
+ ;
3996
4011
3997
4012
dis_name :connection_object {$$ =$1 ; }
3998
4013
| CURRENT {$$ = make_str(" \" CURRENT\" " ); }
@@ -4081,6 +4096,7 @@ opt_ecpg_into: /*EMPTY*/{ $$ = EMPTY; }
4081
4096
;
4082
4097
4083
4098
variable :civarind | civar
4099
+ ;
4084
4100
variablelist :variable | variable ' ,' variablelist ;
4085
4101
4086
4102
/*
@@ -4906,6 +4922,7 @@ civar: cvariable
4906
4922
;
4907
4923
4908
4924
cvariable :CVARIABLE {$$ =$1 ; }
4925
+ ;
4909
4926
4910
4927
indicator :CVARIABLE { check_indicator((find_variable($1 ))->type);$$ =$1 ; }
4911
4928
| SQL_INDICATOR cvariable { check_indicator((find_variable($2 ))->type);$$ =$2 ; }