From 757f42e7dea94f8b79b3d55074dedeafd853ddc5 Mon Sep 17 00:00:00 2001 From: Boris Kolpackov Date: Fri, 25 Nov 2016 15:17:01 +0200 Subject: Implement literal here-document support --- build2/lexer.cxx | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) (limited to 'build2/lexer.cxx') 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 (); -- cgit v1.1