]> granicus.if.org Git - icinga2/blobdiff - lib/config/config_lexer.ll
Fix escape sequence for backslashes
[icinga2] / lib / config / config_lexer.ll
index a32163fddb6c5aa6ce54e99970540706ac3c67e6..3e238286ca3e79d130098d3a251f132643307eb7 100644 (file)
@@ -89,7 +89,7 @@ do {                                                  \
 
        if (result > 0xff) {
                /* error, constant is out-of-bounds */
-               BOOST_THROW_EXCEPTION(ScriptError("Constant is out of bounds: " + String(yytext), DebugInfoRange(yyextra->m_LocationBegin, *yylloc)));
+               BOOST_THROW_EXCEPTION(ScriptError("Constant is out of bounds: " + String(yytext), *yylloc));
        }
 
        yyextra->m_LexBuffer << static_cast<char>(result);
@@ -99,15 +99,18 @@ do {                                                        \
        /* generate error - bad escape sequence; something
         * like '\48' or '\0777777'
         */
-       BOOST_THROW_EXCEPTION(ScriptError("Bad escape sequence found: " + String(yytext), DebugInfoRange(yyextra->m_LocationBegin, *yylloc)));
+       BOOST_THROW_EXCEPTION(ScriptError("Bad escape sequence found: " + String(yytext), *yylloc));
                                }
-
 <STRING>\\n                    { yyextra->m_LexBuffer << "\n"; }
+<STRING>\\\\                   { yyextra->m_LexBuffer << "\\"; }
 <STRING>\\t                    { yyextra->m_LexBuffer << "\t"; }
 <STRING>\\r                    { yyextra->m_LexBuffer << "\r"; }
 <STRING>\\b                    { yyextra->m_LexBuffer << "\b"; }
 <STRING>\\f                    { yyextra->m_LexBuffer << "\f"; }
-<STRING>\\(.|\n)               { yyextra->m_LexBuffer << yytext[1]; }
+<STRING>\\\n                   { yyextra->m_LexBuffer << yytext[1]; }
+<STRING>\\.                    {
+       BOOST_THROW_EXCEPTION(ScriptError("Bad escape sequence found: " + String(yytext), *yylloc));
+                               }
 
 <STRING>[^\\\n\"]+             {
        char *yptr = yytext;