Merge pull request #1939 from dezgeg/lexer-fix

libexpr: Recognize newline in more places in lexer
This commit is contained in:
Eelco Dolstra 2018-03-16 12:14:58 +01:00 committed by GitHub
commit 64441f0551
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 11 additions and 4 deletions

View file

@ -85,6 +85,7 @@ static Expr * unescapeStr(SymbolTable & symbols, const char * s, size_t length)
%} %}
ANY .|\n
ID [a-zA-Z\_][a-zA-Z0-9\_\'\-]* ID [a-zA-Z\_][a-zA-Z0-9\_\'\-]*
INT [0-9]+ INT [0-9]+
FLOAT (([1-9][0-9]*\.[0-9]*)|(0?\.[0-9]+))([Ee][+-]?[0-9]+)? FLOAT (([1-9][0-9]*\.[0-9]*)|(0?\.[0-9]+))([Ee][+-]?[0-9]+)?
@ -146,8 +147,8 @@ or { return OR_KW; }
<INITIAL,INSIDE_DOLLAR_CURLY>\" { <INITIAL,INSIDE_DOLLAR_CURLY>\" {
PUSH_STATE(STRING); return '"'; PUSH_STATE(STRING); return '"';
} }
<STRING>([^\$\"\\]|\$[^\{\"\\]|\\.|\$\\.)*\$/\" | <STRING>([^\$\"\\]|\$[^\{\"\\]|\\{ANY}|\$\\{ANY})*\$/\" |
<STRING>([^\$\"\\]|\$[^\{\"\\]|\\.|\$\\.)+ { <STRING>([^\$\"\\]|\$[^\{\"\\]|\\{ANY}|\$\\{ANY})+ {
/* It is impossible to match strings ending with '$' with one /* It is impossible to match strings ending with '$' with one
regex because trailing contexts are only valid at the end regex because trailing contexts are only valid at the end
of a rule. (A sane but undocumented limitation.) */ of a rule. (A sane but undocumented limitation.) */
@ -178,7 +179,7 @@ or { return OR_KW; }
yylval->e = new ExprIndStr("''"); yylval->e = new ExprIndStr("''");
return IND_STR; return IND_STR;
} }
<IND_STRING>\'\'\\. { <IND_STRING>\'\'\\{ANY} {
yylval->e = unescapeStr(data->symbols, yytext + 2, yyleng - 2); yylval->e = unescapeStr(data->symbols, yytext + 2, yyleng - 2);
return IND_STR; return IND_STR;
} }
@ -208,7 +209,7 @@ or { return OR_KW; }
\#[^\r\n]* /* single-line comments */ \#[^\r\n]* /* single-line comments */
\/\*([^*]|\*+[^*/])*\*+\/ /* long comments */ \/\*([^*]|\*+[^*/])*\*+\/ /* long comments */
. return yytext[0]; {ANY} return yytext[0];
} }

View file

@ -0,0 +1 @@
"a\nb"

View file

@ -0,0 +1,2 @@
"a\
b"

View file

@ -0,0 +1 @@
"a\nb"

View file

@ -0,0 +1,2 @@
''a''\
b''