summaryrefslogtreecommitdiff
path: root/src/interfaces/ecpg/preproc/parser.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/interfaces/ecpg/preproc/parser.c')
-rw-r--r--src/interfaces/ecpg/preproc/parser.c22
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 */