diff options
author | Boris Kolpackov <boris@codesynthesis.com> | 2016-11-25 15:17:01 +0200 |
---|---|---|
committer | Boris Kolpackov <boris@codesynthesis.com> | 2016-11-25 15:17:01 +0200 |
commit | 757f42e7dea94f8b79b3d55074dedeafd853ddc5 (patch) | |
tree | 8fa27fd27e36a85a6348d85b746d49a676a27027 /build2/lexer.cxx | |
parent | a3dad2118fb3925ef4f9baa90cea0dfd44ca93c6 (diff) |
Implement literal here-document support
Diffstat (limited to 'build2/lexer.cxx')
-rw-r--r-- | build2/lexer.cxx | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/build2/lexer.cxx b/build2/lexer.cxx index b73c291..3c8eb5a 100644 --- a/build2/lexer.cxx +++ b/build2/lexer.cxx @@ -30,7 +30,7 @@ namespace build2 } void lexer:: - mode (lexer_mode m, char ps) + mode (lexer_mode m, char ps, const char* esc) { const char* s1 (nullptr); const char* s2 (nullptr); @@ -76,7 +76,7 @@ namespace build2 default: assert (false); // Unhandled custom mode. } - state_.push (state {m, ps, s, q, s1, s2}); + state_.push (state {m, ps, s, q, esc, s1, s2}); } token lexer:: @@ -329,8 +329,10 @@ namespace build2 get (); xchar p (peek ()); - if (escapes_ == nullptr || - (!eos (p) && strchr (escapes_, p) != nullptr)) + const char* esc (st.escapes); + + if (esc == nullptr || + (*esc != '\0' && !eos (p) && strchr (esc, p) != nullptr)) { get (); |