diff options
author | Eelco Dolstra <eelco.dolstra@logicblox.com> | 2016-01-19T23·05+0100 |
---|---|---|
committer | Eelco Dolstra <eelco.dolstra@logicblox.com> | 2016-01-19T23·05+0100 |
commit | b669d3d2e83d3c50238751b57cff3ed0ca39bc8a (patch) | |
tree | da6578e8885e1c12a7d4d94634bfa4fb31b0c171 | |
parent | 7db05781a680028380aed6a01f2a74c68907bad7 (diff) |
Revert "next try for "don't abort when given unmatched '}' with 'start-condition stack underflow'. This fixes #751""
This reverts commit ed23c8568e10d15196bb4ff2b79fc14191d28109. Let's merge this *after* the 1.11.1 release.
-rw-r--r-- | src/libexpr/lexer.l | 24 | ||||
-rw-r--r-- | tests/lexer.nix | 2 | ||||
-rw-r--r-- | tests/lexer.sh | 3 | ||||
-rw-r--r-- | tests/local.mk | 2 |
4 files changed, 8 insertions, 23 deletions
diff --git a/src/libexpr/lexer.l b/src/libexpr/lexer.l index 478f4164106a..1f2957ec71ad 100644 --- a/src/libexpr/lexer.l +++ b/src/libexpr/lexer.l @@ -8,7 +8,6 @@ %x 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; } then { return THEN; } @@ -127,15 +124,11 @@ or { return OR_KW; } return INT; } -\$\{ { PUSH_STATE(INSIDE_DOLLAR_CURLY); return DOLLAR_CURLY; } -} - -\} { return '}'; } -<INSIDE_DOLLAR_CURLY>\} { POP_STATE(); return '}'; } -\{ { return '{'; } -<INSIDE_DOLLAR_CURLY>\{ { PUSH_STATE(INSIDE_DOLLAR_CURLY); return '{'; } +\$\{ { PUSH_STATE(INITIAL); return DOLLAR_CURLY; } +\{ { PUSH_STATE(INITIAL); return '{'; } +\} { POP_STATE(); return '}'; } -<INITIAL,INSIDE_DOLLAR_CURLY>\" { PUSH_STATE(STRING); return '"'; } +\" { PUSH_STATE(STRING); return '"'; } <STRING>([^\$\"\\]|\$[^\{\"\\]|\\.|\$\\.)*\$/\" | <STRING>([^\$\"\\]|\$[^\{\"\\]|\\.|\$\\.)+ { /* It is impossible to match strings ending with '$' with one @@ -144,11 +137,11 @@ or { return OR_KW; } yylval->e = unescapeStr(data->symbols, yytext); return STR; } -<STRING>\$\{ { PUSH_STATE(INSIDE_DOLLAR_CURLY); return DOLLAR_CURLY; } +<STRING>\$\{ { PUSH_STATE(INITIAL); return DOLLAR_CURLY; } <STRING>\" { POP_STATE(); return '"'; } <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>([^\$\']|\$[^\{\']|\'[^\'\$])+ { yylval->e = new ExprIndStr(yytext); return IND_STR; @@ -165,7 +158,7 @@ or { return OR_KW; } yylval->e = unescapeStr(data->symbols, yytext + 2); 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>\' { yylval->e = new ExprIndStr("'"); @@ -173,8 +166,6 @@ or { return OR_KW; } } <IND_STRING>. return yytext[0]; /* just in case: shouldn't be reached */ -<INITIAL,INSIDE_DOLLAR_CURLY>{ - {PATH} { yylval->path = strdup(yytext); return PATH; } {HPATH} { yylval->path = strdup(yytext); return HPATH; } {SPATH} { yylval->path = strdup(yytext); return SPATH; } @@ -186,7 +177,6 @@ or { return OR_KW; } . return yytext[0]; -} %% diff --git a/tests/lexer.nix b/tests/lexer.nix deleted file mode 100644 index 05c78b3016d3..000000000000 --- a/tests/lexer.nix +++ /dev/null @@ -1,2 +0,0 @@ -let const = a: "const"; in -''${ const { x = "q"; }}'' diff --git a/tests/lexer.sh b/tests/lexer.sh deleted file mode 100644 index e45a6b00a542..000000000000 --- a/tests/lexer.sh +++ /dev/null @@ -1,3 +0,0 @@ -source common.sh - -nix-instantiate --eval ./lexer.nix diff --git a/tests/local.mk b/tests/local.mk index 05c6e04ee17e..03f53b44c275 100644 --- a/tests/local.mk +++ b/tests/local.mk @@ -11,7 +11,7 @@ nix_tests = \ binary-patching.sh timeout.sh secure-drv-outputs.sh nix-channel.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 \ - check-reqs.sh pass-as-file.sh tarball.sh lexer.sh + check-reqs.sh pass-as-file.sh tarball.sh # parallel.sh install-tests += $(foreach x, $(nix_tests), tests/$(x)) |