diff options
Diffstat (limited to 'src/interfaces/ecpg/preproc/parser.c')
-rw-r--r-- | src/interfaces/ecpg/preproc/parser.c | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/src/interfaces/ecpg/preproc/parser.c b/src/interfaces/ecpg/preproc/parser.c index f447dc5d84b..a40f4bef093 100644 --- a/src/interfaces/ecpg/preproc/parser.c +++ b/src/interfaces/ecpg/preproc/parser.c @@ -78,9 +78,11 @@ filtered_base_yylex(void) */ switch (cur_token) { + case FORMAT: case NOT: case NULLS_P: case WITH: + case WITHOUT: case UIDENT: case USCONST: break; @@ -110,6 +112,16 @@ filtered_base_yylex(void) /* Replace cur_token if needed, based on lookahead */ switch (cur_token) { + case FORMAT: + /* Replace FORMAT by FORMAT_LA if it's followed by JSON */ + switch (next_token) + { + case JSON: + cur_token = FORMAT_LA; + break; + } + break; + case NOT: /* Replace NOT by NOT_LA if it's followed by BETWEEN, IN, etc */ switch (next_token) @@ -145,6 +157,16 @@ filtered_base_yylex(void) break; } break; + + case WITHOUT: + /* Replace WITHOUT by WITHOUT_LA if it's followed by UNIQUE */ + switch (next_token) + { + case UNIQUE: + cur_token = WITHOUT_LA; + break; + } + break; case UIDENT: case USCONST: /* Look ahead for UESCAPE */ |