Allow '$ ' to escape spaces in identifiers.
authorJeremy Apthorp <jeremya@chromium.org>
Mon, 21 Nov 2011 03:07:56 +0000 (14:07 +1100)
committerJeremy Apthorp <jeremya@chromium.org>
Mon, 21 Nov 2011 03:07:56 +0000 (14:07 +1100)
src/eval_env.cc
src/parsers.cc

index a5127d3..fa5e35b 100644 (file)
@@ -58,6 +58,9 @@ bool EvalString::Parse(const string& input, string* err, size_t* err_index) {
     } else if (start < input.size() && input[start] == '$') {
       parsed_.push_back(make_pair("$", RAW));
       end = start + 1;
+    } else if (start < input.size() && input[start] == ' ') {
+      parsed_.push_back(make_pair(" ", RAW));
+      end = start + 1;
     } else {
       for (end = start; end < input.size(); ++end) {
         char c = input[end];
index 4920496..97fa4a6 100644 (file)
@@ -232,6 +232,9 @@ Token::Type Tokenizer::PeekToken() {
 
   if (IsIdentChar(*cur_)) {
     while (cur_ < end_ && IsIdentChar(*cur_)) {
+      if (*cur_ == '$' && cur_ + 1 < end_ && cur_[1] == ' ') {
+        ++cur_;
+      }
       ++cur_;
     }
     token_.end_ = cur_;