diff options
author | Eelco Dolstra <eelco.dolstra@logicblox.com> | 2018-03-16 12:14:58 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-03-16 12:14:58 +0100 |
commit | 64441f055194e9fd9e924a58e67cadb030ba918f (patch) | |
tree | bdb9efbf4241073fd5c28d6ef13d683683d20f56 /src | |
parent | eb75bc5afbaf2891a2db71e7932105223da94ac9 (diff) | |
parent | a0e38c16bc7773d0fc62771a9935e079c00899ef (diff) |
Merge pull request #1939 from dezgeg/lexer-fix
libexpr: Recognize newline in more places in lexer
Diffstat (limited to 'src')
-rw-r--r-- | src/libexpr/lexer.l | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/src/libexpr/lexer.l b/src/libexpr/lexer.l index e5e01fb58..1e9c29afa 100644 --- a/src/libexpr/lexer.l +++ b/src/libexpr/lexer.l @@ -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\_\'\-]* INT [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>\" { PUSH_STATE(STRING); return '"'; } -<STRING>([^\$\"\\]|\$[^\{\"\\]|\\.|\$\\.)*\$/\" | -<STRING>([^\$\"\\]|\$[^\{\"\\]|\\.|\$\\.)+ { +<STRING>([^\$\"\\]|\$[^\{\"\\]|\\{ANY}|\$\\{ANY})*\$/\" | +<STRING>([^\$\"\\]|\$[^\{\"\\]|\\{ANY}|\$\\{ANY})+ { /* It is impossible to match strings ending with '$' with one regex because trailing contexts are only valid at the end of a rule. (A sane but undocumented limitation.) */ @@ -178,7 +179,7 @@ or { return OR_KW; } yylval->e = new ExprIndStr("''"); return IND_STR; } -<IND_STRING>\'\'\\. { +<IND_STRING>\'\'\\{ANY} { yylval->e = unescapeStr(data->symbols, yytext + 2, yyleng - 2); return IND_STR; } @@ -208,7 +209,7 @@ or { return OR_KW; } \#[^\r\n]* /* single-line comments */ \/\*([^*]|\*+[^*/])*\*+\/ /* long comments */ -. return yytext[0]; +{ANY} return yytext[0]; } |