The lexer will go with the longest match, so previously
the starting double quotes of a string would be swallowed by
the [^ \t\r\n()]+ pattern leaving the user no way to
actually use strings with escape sequences.
Fix this by not allowing this case to start with double
quotes.

Signed-off-by: Wolfgang Bumiller <w.bumil...@proxmox.com>
---
 tc/emp_ematch.l | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/tc/emp_ematch.l b/tc/emp_ematch.l
index dc106759..d7a99304 100644
--- a/tc/emp_ematch.l
+++ b/tc/emp_ematch.l
@@ -137,7 +137,7 @@
 ")"                                    {
                                                return yylval.i = *yytext;
                                        }
-[^ \t\r\n()]+                          {
+[^" \t\r\n()][^ \t\r\n()]*             {
                                                yylval.b = bstr_alloc(yytext);
                                                if (yylval.b == NULL)
                                                        return ERROR;
-- 
2.11.0


Reply via email to