diff --git a/src/interfaces/ecpg/ChangeLog b/src/interfaces/ecpg/ChangeLog index 00befad7ff46a2110d31c5ecf5a90e6c074a77ed..99f6f26355e62f43a59206afebf3d848cfe46ed1 100644 --- a/src/interfaces/ecpg/ChangeLog +++ b/src/interfaces/ecpg/ChangeLog @@ -982,5 +982,8 @@ Sun Oct 22 15:35:53 CEST 2000 - Fixed typos in descriptor.c. +Wed Oct 25 08:53:07 CEST 2000 + + - Added some more C constructs to the parser. - Set ecpg version to 2.8.0. - Set library version to 3.2.0. diff --git a/src/interfaces/ecpg/preproc/pgc.l b/src/interfaces/ecpg/preproc/pgc.l index 08457d4b0834c26a1688c2922180787249e7b5d0..d6b4b28dff9018e22d6df6beb8207722a916288e 100644 --- a/src/interfaces/ecpg/preproc/pgc.l +++ b/src/interfaces/ecpg/preproc/pgc.l @@ -12,7 +12,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/interfaces/ecpg/preproc/pgc.l,v 1.65 2000/10/17 15:38:25 meskes Exp $ + * $Header: /cvsroot/pgsql/src/interfaces/ecpg/preproc/pgc.l,v 1.66 2000/10/25 07:00:33 meskes Exp $ * *------------------------------------------------------------------------- */ @@ -681,6 +681,17 @@ cppline {space}*#(.*\\{line_end})*.* <C>"<<" { return(S_LSHIFT); } <C>"||" { return(S_OR); } <C>"&&" { return(S_AND); } +<C>"++" { return(S_INC); } +<C>"--" { return(S_DEC); } +<C>"==" { return(S_EQUAL); } +<C>"!=" { return(S_NEQUAL); } +<C>"+=" { return(S_ADD); } +<C>"-=" { return(S_SUB); } +<C>"*=" { return(S_MUL); } +<C>"/=" { return(S_DIV); } +<C>"%=" { return(S_MOD); } +<C>"->*" { return(S_MEMPOINT); } +<C>".*" { return(S_DOTPOINT); } <C>{other} { return S_ANYTHING; } <C>{exec_sql}{define}{space_or_nl}* { BEGIN(def_ident); } diff --git a/src/interfaces/ecpg/preproc/preproc.y b/src/interfaces/ecpg/preproc/preproc.y index 9e6eaaa09aa09a309313667d46600cd8867ecb44..895b1b2cfe84e0016f5a509a50c76b874f99aa83 100644 --- a/src/interfaces/ecpg/preproc/preproc.y +++ b/src/interfaces/ecpg/preproc/preproc.y @@ -174,8 +174,10 @@ make_name(void) %token SQL_VALUE SQL_VAR SQL_WHENEVER /* C token */ -%token S_AND S_ANYTHING S_AUTO S_CONST S_EXTERN S_LSHIFT -%token S_MEMBER S_OR S_REGISTER S_RSHIFT S_STATIC S_VOLATILE +%token S_ADD S_AND S_ANYTHING S_AUTO S_CONST S_DEC S_DIV S_DOTPOINT +%token S_EQUAL S_EXTERN S_INC S_LSHIFT +%token S_MEMPOINT S_MEMBER S_MOD S_MUL S_NEQUAL S_OR +%token S_REGISTER S_RSHIFT S_STATIC S_SUB S_VOLATILE /* I need this and don't know where it is defined inside the backend */ %token TYPECAST @@ -5298,17 +5300,28 @@ c_anything: IDENT { $$ = $1; } | '-' { $$ = make_str("-"); } | '/' { $$ = make_str("/"); } | '%' { $$ = make_str("%"); } + | NULL_P { $$ = make_str("NULL"); } + | S_ADD { $$ = make_str("+="); } | S_AND { $$ = make_str("&&"); } | S_ANYTHING { $$ = make_name(); } | S_AUTO { $$ = make_str("auto"); } | S_CONST { $$ = make_str("const"); } + | S_DEC { $$ = make_str("--"); } + | S_DIV { $$ = make_str("/="); } + | S_DOTPOINT { $$ = make_str(".*"); } + | S_EQUAL { $$ = make_str("=="); } | S_EXTERN { $$ = make_str("extern"); } + | S_INC { $$ = make_str("++"); } | S_LSHIFT { $$ = make_str("<<"); } | S_MEMBER { $$ = make_str("->"); } + | S_MEMPOINT { $$ = make_str("->*"); } + | S_MUL { $$ = make_str("*="); } + | S_NEQUAL { $$ = make_str("!="); } | S_OR { $$ = make_str("||"); } | S_REGISTER { $$ = make_str("register"); } | S_RSHIFT { $$ = make_str(">>"); } | S_STATIC { $$ = make_str("static"); } + | S_SUB { $$ = make_str("-="); } | SQL_BOOL { $$ = make_str("bool"); } | SQL_ENUM { $$ = make_str("enum"); } | SQL_INT { $$ = make_str("int"); }