aboutsummaryrefslogtreecommitdiff
path: root/build2/lexer.cxx
diff options
context:
space:
mode:
authorBoris Kolpackov <boris@codesynthesis.com>2016-11-25 15:17:01 +0200
committerBoris Kolpackov <boris@codesynthesis.com>2016-11-25 15:17:01 +0200
commit757f42e7dea94f8b79b3d55074dedeafd853ddc5 (patch)
tree8fa27fd27e36a85a6348d85b746d49a676a27027 /build2/lexer.cxx
parenta3dad2118fb3925ef4f9baa90cea0dfd44ca93c6 (diff)
Implement literal here-document support
Diffstat (limited to 'build2/lexer.cxx')
-rw-r--r--build2/lexer.cxx10
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 ();