From 74a09d92101f36a5fe66f4f74253708931546e4c Mon Sep 17 00:00:00 2001 From: Heikki Linnakangas Date: Thu, 10 Mar 2011 09:01:27 +0200 Subject: [PATCH] Fix bugs in the isolation tester flex rules. Tom Lane pointed out that it was giving a warning: "-s option given but default rule can be matched". That was because there was no rule to handle newline in a quoted string. I made that throw an error. Also, line number tracking was broken, giving incorrect line number on error. Fixed that too. --- src/test/isolation/specscanner.l | 26 +++++++++++++++++--------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/src/test/isolation/specscanner.l b/src/test/isolation/specscanner.l index 6752aca82d..c3193917c0 100644 --- a/src/test/isolation/specscanner.l +++ b/src/test/isolation/specscanner.l @@ -32,10 +32,9 @@ static void addlitchar(const char c); %x qstr non_newline [^\n\r] -space [ \t\n\r\f] +space [ \t\r\f] comment ("#"{non_newline}*) -whitespace ({space}+|{comment}) %% @@ -46,10 +45,10 @@ step { return(STEP); } teardown { return(TEARDOWN); } [\n] { yyline++; } -{whitespace} { - /* ignore */ - } +{comment} { /* ignore */ } +{space} { /* ignore */ } + /* Quoted strings: "foo" */ \" { litbufpos = 0; BEGIN(qstr); @@ -61,27 +60,36 @@ teardown { return(TEARDOWN); } return(string); } . { addlitchar(yytext[0]); } +\n { yyerror("unexpected newline in quoted string"); } +<> { yyerror("unterminated quoted string"); } + /* SQL blocks: { UPDATE ... } */ "{" { litbufpos = 0; BEGIN(sql); } - "}" { litbuf[litbufpos] = '\0'; yylval.str = strdup(litbuf); BEGIN(INITIAL); return(sqlblock); } -[^}] { addlitchar(yytext[0]);} - +. { + addlitchar(yytext[0]); + } +\n { + yyline++; + addlitchar(yytext[0]); + } +<> { + yyerror("unterminated sql block"); + } . { fprintf(stderr, "syntax error at line %d: unexpected character \"%s\"\n", yyline, yytext); exit(1); } - %% static void -- 2.50.0