From fbd3c230d3861084b7316a6d5a8597cb00c9510b Mon Sep 17 00:00:00 2001 From: Boris Kolpackov Date: Mon, 2 Mar 2015 09:10:28 +0200 Subject: Implement value lexing mode So that we can do foo=g++ without having to resort to quoting --- build/lexer | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) (limited to 'build/lexer') diff --git a/build/lexer b/build/lexer index 1944727..1723ae0 100644 --- a/build/lexer +++ b/build/lexer @@ -100,10 +100,17 @@ namespace build std::uint64_t l_ {1}; std::uint64_t c_ {1}; - bool eos_ {false}; - bool unget_ {false}; xchar buf_ {0, 0, 0}; + + bool eos_ {false}; + + // Context-dependent lexing mode. In the value mode we don't treat + // certain characters (e.g., +, =) as special so that we can use + // them in the variable values, e.g., 'foo = g++'. + // + enum class mode {normal, value}; + mode mode_ {mode::normal}; }; } -- cgit v1.1