diff options
author | Brad King <brad.king@kitware.com> | 2015-10-01 19:19:28 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2019-04-18 12:21:44 (GMT) |
commit | c4b0c21ba9c60c2af99ea8d1961cbc1e4f217810 (patch) | |
tree | ed8a6a591734881a0f68dc4ff570d9e9da11184f /src/dyndep_parser.h | |
parent | 325602ca41c76753470b991c7a47b76b15e4241b (diff) | |
download | Ninja-c4b0c21ba9c60c2af99ea8d1961cbc1e4f217810.zip Ninja-c4b0c21ba9c60c2af99ea8d1961cbc1e4f217810.tar.gz Ninja-c4b0c21ba9c60c2af99ea8d1961cbc1e4f217810.tar.bz2 |
Add a parser for a new "dyndep" file format
Define a file format suitable for specifying dynamically-discovered
dependency information for build edges. Design a format inspired by the
build manifest format and using the same lexer. Start with a required
format version specification followed by "build" statements that add
implicit inputs and outputs to existing edges.
Diffstat (limited to 'src/dyndep_parser.h')
-rw-r--r-- | src/dyndep_parser.h | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/src/dyndep_parser.h b/src/dyndep_parser.h new file mode 100644 index 0000000..09a3722 --- /dev/null +++ b/src/dyndep_parser.h @@ -0,0 +1,46 @@ +// Copyright 2015 Google Inc. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#ifndef NINJA_DYNDEP_PARSER_H_ +#define NINJA_DYNDEP_PARSER_H_ + +#include "eval_env.h" +#include "parser.h" + +struct DyndepFile; +struct EvalString; + +/// Parses dyndep files. +struct DyndepParser: public Parser { + DyndepParser(State* state, FileReader* file_reader, + DyndepFile* dyndep_file); + + /// Parse a text string of input. Used by tests. + bool ParseTest(const string& input, string* err) { + return Parse("input", input, err); + } + +private: + /// Parse a file, given its contents as a string. + bool Parse(const string& filename, const string& input, string* err); + + bool ParseDyndepVersion(string* err); + bool ParseLet(string* key, EvalString* val, string* err); + bool ParseEdge(string* err); + + DyndepFile* dyndep_file_; + BindingEnv env_; +}; + +#endif // NINJA_DYNDEP_PARSER_H_ |