From b363f6d8c456e24efb47b1b8d3c48f93c53ae5a4 Mon Sep 17 00:00:00 2001 From: Jeremy Apthorp Date: Mon, 21 Nov 2011 14:07:56 +1100 Subject: [PATCH] Allow '$ ' to escape spaces in identifiers. --- src/eval_env.cc | 3 +++ src/parsers.cc | 3 +++ 2 files changed, 6 insertions(+) diff --git a/src/eval_env.cc b/src/eval_env.cc index a5127d3..fa5e35b 100644 --- a/src/eval_env.cc +++ b/src/eval_env.cc @@ -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]; diff --git a/src/parsers.cc b/src/parsers.cc index 4920496..97fa4a6 100644 --- a/src/parsers.cc +++ b/src/parsers.cc @@ -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_; -- 2.7.4