Revert "next try for "don't abort when given unmatched '}' with 'start-condition stack underflow'. This fixes #751""

This reverts commit ed23c8568e. Let's
merge this *after* the 1.11.1 release.
This commit is contained in:
Eelco Dolstra 2016-01-20 00:05:28 +01:00
parent 7db05781a6
commit b669d3d2e8
4 changed files with 8 additions and 23 deletions

View file

@ -8,7 +8,6 @@
%x STRING %x STRING
%x IND_STRING %x IND_STRING
%x INSIDE_DOLLAR_CURLY
%{ %{
@ -94,8 +93,6 @@ URI [a-zA-Z][a-zA-Z0-9\+\-\.]*\:[a-zA-Z0-9\%\/\?\:\@\&\=\+\$\,\-\_\.\!\~
%% %%
<INITIAL,INSIDE_DOLLAR_CURLY>{
if { return IF; } if { return IF; }
then { return THEN; } then { return THEN; }
@ -127,15 +124,11 @@ or { return OR_KW; }
return INT; return INT;
} }
\$\{ { PUSH_STATE(INSIDE_DOLLAR_CURLY); return DOLLAR_CURLY; } \$\{ { PUSH_STATE(INITIAL); return DOLLAR_CURLY; }
} \{ { PUSH_STATE(INITIAL); return '{'; }
\} { POP_STATE(); return '}'; }
\} { return '}'; } \" { PUSH_STATE(STRING); return '"'; }
<INSIDE_DOLLAR_CURLY>\} { POP_STATE(); return '}'; }
\{ { return '{'; }
<INSIDE_DOLLAR_CURLY>\{ { PUSH_STATE(INSIDE_DOLLAR_CURLY); return '{'; }
<INITIAL,INSIDE_DOLLAR_CURLY>\" { PUSH_STATE(STRING); return '"'; }
<STRING>([^\$\"\\]|\$[^\{\"\\]|\\.|\$\\.)*\$/\" | <STRING>([^\$\"\\]|\$[^\{\"\\]|\\.|\$\\.)*\$/\" |
<STRING>([^\$\"\\]|\$[^\{\"\\]|\\.|\$\\.)+ { <STRING>([^\$\"\\]|\$[^\{\"\\]|\\.|\$\\.)+ {
/* It is impossible to match strings ending with '$' with one /* It is impossible to match strings ending with '$' with one
@ -144,11 +137,11 @@ or { return OR_KW; }
yylval->e = unescapeStr(data->symbols, yytext); yylval->e = unescapeStr(data->symbols, yytext);
return STR; return STR;
} }
<STRING>\$\{ { PUSH_STATE(INSIDE_DOLLAR_CURLY); return DOLLAR_CURLY; } <STRING>\$\{ { PUSH_STATE(INITIAL); return DOLLAR_CURLY; }
<STRING>\" { POP_STATE(); return '"'; } <STRING>\" { POP_STATE(); return '"'; }
<STRING>. return yytext[0]; /* just in case: shouldn't be reached */ <STRING>. return yytext[0]; /* just in case: shouldn't be reached */
<INITIAL,INSIDE_DOLLAR_CURLY>\'\'(\ *\n)? { PUSH_STATE(IND_STRING); return IND_STRING_OPEN; } \'\'(\ *\n)? { PUSH_STATE(IND_STRING); return IND_STRING_OPEN; }
<IND_STRING>([^\$\']|\$[^\{\']|\'[^\'\$])+ { <IND_STRING>([^\$\']|\$[^\{\']|\'[^\'\$])+ {
yylval->e = new ExprIndStr(yytext); yylval->e = new ExprIndStr(yytext);
return IND_STR; return IND_STR;
@ -165,7 +158,7 @@ or { return OR_KW; }
yylval->e = unescapeStr(data->symbols, yytext + 2); yylval->e = unescapeStr(data->symbols, yytext + 2);
return IND_STR; return IND_STR;
} }
<IND_STRING>\$\{ { PUSH_STATE(INSIDE_DOLLAR_CURLY); return DOLLAR_CURLY; } <IND_STRING>\$\{ { PUSH_STATE(INITIAL); return DOLLAR_CURLY; }
<IND_STRING>\'\' { POP_STATE(); return IND_STRING_CLOSE; } <IND_STRING>\'\' { POP_STATE(); return IND_STRING_CLOSE; }
<IND_STRING>\' { <IND_STRING>\' {
yylval->e = new ExprIndStr("'"); yylval->e = new ExprIndStr("'");
@ -173,8 +166,6 @@ or { return OR_KW; }
} }
<IND_STRING>. return yytext[0]; /* just in case: shouldn't be reached */ <IND_STRING>. return yytext[0]; /* just in case: shouldn't be reached */
<INITIAL,INSIDE_DOLLAR_CURLY>{
{PATH} { yylval->path = strdup(yytext); return PATH; } {PATH} { yylval->path = strdup(yytext); return PATH; }
{HPATH} { yylval->path = strdup(yytext); return HPATH; } {HPATH} { yylval->path = strdup(yytext); return HPATH; }
{SPATH} { yylval->path = strdup(yytext); return SPATH; } {SPATH} { yylval->path = strdup(yytext); return SPATH; }
@ -186,7 +177,6 @@ or { return OR_KW; }
. return yytext[0]; . return yytext[0];
}
%% %%

View file

@ -1,2 +0,0 @@
let const = a: "const"; in
''${ const { x = "q"; }}''

View file

@ -1,3 +0,0 @@
source common.sh
nix-instantiate --eval ./lexer.nix

View file

@ -11,7 +11,7 @@ nix_tests = \
binary-patching.sh timeout.sh secure-drv-outputs.sh nix-channel.sh \ binary-patching.sh timeout.sh secure-drv-outputs.sh nix-channel.sh \
multiple-outputs.sh import-derivation.sh fetchurl.sh optimise-store.sh \ multiple-outputs.sh import-derivation.sh fetchurl.sh optimise-store.sh \
binary-cache.sh nix-profile.sh repair.sh dump-db.sh case-hack.sh \ binary-cache.sh nix-profile.sh repair.sh dump-db.sh case-hack.sh \
check-reqs.sh pass-as-file.sh tarball.sh lexer.sh check-reqs.sh pass-as-file.sh tarball.sh
# parallel.sh # parallel.sh
install-tests += $(foreach x, $(nix_tests), tests/$(x)) install-tests += $(foreach x, $(nix_tests), tests/$(x))