summaryrefslogtreecommitdiffstats
path: root/src/parsers.cc
diff options
context:
space:
mode:
authorEvan Martin <martine@danga.com>2011-02-04 00:55:25 (GMT)
committerEvan Martin <martine@danga.com>2011-02-04 00:55:25 (GMT)
commitfab9170ff9161d7874bf9613e581f1c910a3fead (patch)
tree5532c2f20e845de45dd5bd49a4d46a4f63dd8c7f /src/parsers.cc
parentaeda4872d35137bdac0b2d7a313ec6f82b993b13 (diff)
downloadNinja-fab9170ff9161d7874bf9613e581f1c910a3fead.zip
Ninja-fab9170ff9161d7874bf9613e581f1c910a3fead.tar.gz
Ninja-fab9170ff9161d7874bf9613e581f1c910a3fead.tar.bz2
ignore whitespace in makefiles
Diffstat (limited to 'src/parsers.cc')
-rw-r--r--src/parsers.cc8
1 files changed, 6 insertions, 2 deletions
diff --git a/src/parsers.cc b/src/parsers.cc
index 532d98e..8e44a38 100644
--- a/src/parsers.cc
+++ b/src/parsers.cc
@@ -143,7 +143,7 @@ Token::Type Tokenizer::PeekToken() {
return token_.type_;
token_.pos_ = cur_;
- if (cur_indent_ == -1) {
+ if (whitespace_significant_ && cur_indent_ == -1) {
cur_indent_ = cur_ - cur_line_;
if (cur_indent_ != last_indent_) {
if (cur_indent_ > last_indent_) {
@@ -213,9 +213,13 @@ void Tokenizer::ConsumeToken() {
token_.Clear();
}
+MakefileParser::MakefileParser() : tokenizer_(false) {}
+
bool MakefileParser::Parse(const string& input, string* err) {
tokenizer_.Start(input.data(), input.data() + input.size());
+ tokenizer_.SkipWhitespace(true);
+
if (!tokenizer_.ReadIdent(&out_))
return tokenizer_.ErrorExpected("output filename", err);
if (!tokenizer_.ExpectToken(Token::COLON, err))
@@ -234,7 +238,7 @@ bool MakefileParser::Parse(const string& input, string* err) {
}
ManifestParser::ManifestParser(State* state, FileReader* file_reader)
- : state_(state), file_reader_(file_reader) {
+ : state_(state), file_reader_(file_reader), tokenizer_(true) {
env_ = &state->bindings_;
}
bool ManifestParser::Load(const string& filename, string* err) {