From ea66709a853255c7957a8a7907fd21fa7f6cfd3f Mon Sep 17 00:00:00 2001 From: Boris Kolpackov Date: Wed, 9 Sep 2015 15:56:54 +0200 Subject: Add support for quoting directive names Now only unquoted, literal names are recognized as directives, for example: 'print' = abc print $print --- build/lexer.cxx | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'build/lexer.cxx') diff --git a/build/lexer.cxx b/build/lexer.cxx index 133375b..e083b4a 100644 --- a/build/lexer.cxx +++ b/build/lexer.cxx @@ -152,6 +152,7 @@ namespace build string lexeme; lexer_mode m (mode_.top ()); + bool quoted (m == lexer_mode::quoted); for (; !eos (c); c = peek ()) { @@ -247,6 +248,7 @@ namespace build if (eos (c)) fail (c) << "unterminated single-quoted sequence"; + quoted = true; continue; } } @@ -281,7 +283,10 @@ namespace build if (m == lexer_mode::quoted) mode_.pop (); else + { mode_.push (lexer_mode::quoted); + quoted = true; + } m = mode_.top (); continue; @@ -307,7 +312,7 @@ namespace build if (m == lexer_mode::variable) mode_.pop (); - return token (lexeme, sep, ln, cn); + return token (lexeme, sep, quoted, ln, cn); } bool lexer:: -- cgit v1.1