|
Ninja
|
Parses .ninja files. More...
#include <manifest_parser.h>

Public Member Functions | |
| bool | Load (const std::string &filename, std::string *err, Lexer *parent=NULL) |
| Load and parse a file. | |
| ManifestParser (State *state, FileReader *file_reader, ManifestParserOptions options=ManifestParserOptions()) | |
| bool | ParseTest (const std::string &input, std::string *err) |
| Parse a text string of input. Used by tests. | |
Protected Member Functions | |
| bool | ExpectToken (Lexer::Token expected, std::string *err) |
| If the next token is not expected, produce an error string saying "expected foo, got bar". | |
Protected Attributes | |
| FileReader * | file_reader_ |
| Lexer | lexer_ |
| State * | state_ |
Private Member Functions | |
| bool | Parse (const std::string &filename, const std::string &input, std::string *err) |
| Parse a file, given its contents as a string. | |
| bool | ParseDefault (std::string *err) |
| bool | ParseEdge (std::string *err) |
| bool | ParseFileInclude (bool new_scope, std::string *err) |
| Parse either a 'subninja' or 'include' line. | |
| bool | ParseLet (std::string *key, EvalString *val, std::string *err) |
| bool | ParsePool (std::string *err) |
| Parse various statement types. | |
| bool | ParseRule (std::string *err) |
Private Attributes | |
| BindingEnv * | env_ |
| std::vector< EvalString > | ins_ |
| ManifestParserOptions | options_ |
| std::vector< EvalString > | outs_ |
| bool | quiet_ |
| std::unique_ptr< ManifestParser > | subparser_ |
| std::vector< EvalString > | validations_ |
Parses .ninja files.
Definition at line 41 of file manifest_parser.h.
| ManifestParser::ManifestParser | ( | State * | state, |
| FileReader * | file_reader, | ||
| ManifestParserOptions | options = ManifestParserOptions() ) |
Definition at line 31 of file manifest_parser.cc.
References State::bindings_, env_, options_, Parser::Parser(), and quiet_.
Referenced by ParseFileInclude().
|
protectedinherited |
If the next token is not expected, produce an error string saying "expected foo, got bar".
Definition at line 40 of file parser.cc.
References lexer_, Lexer::TokenErrorHint(), and Lexer::TokenName().
Referenced by ManifestParser::ParseDefault(), DyndepParser::ParseEdge(), ManifestParser::ParseEdge(), ManifestParser::ParseFileInclude(), DyndepParser::ParseLet(), ManifestParser::ParseLet(), ManifestParser::ParsePool(), and ManifestParser::ParseRule().
|
inherited |
Load and parse a file.
Definition at line 22 of file parser.cc.
References Lexer::Error(), file_reader_, METRIC_RECORD_IF, FileReader::Okay, and Parse().
Referenced by DyndepLoader::LoadDyndepFile(), LoadManifests(), and TEST_F().
|
privatevirtual |
Parse a file, given its contents as a string.
Implements Parser.
Definition at line 38 of file manifest_parser.cc.
References Lexer::BUILD, CheckNinjaVersion(), Lexer::DEFAULT, env_, Lexer::ERROR, EvalString::Evaluate(), Lexer::IDENT, Lexer::INCLUDE, Parser::lexer_, Lexer::NEWLINE, ParseDefault(), ParseEdge(), ParseFileInclude(), ParseLet(), ParsePool(), ParseRule(), Lexer::POOL, Lexer::RULE, Lexer::SUBNINJA, Lexer::TEOF, and Lexer::TokenName().
Referenced by ParseTest().
|
private |
Definition at line 187 of file manifest_parser.cc.
References CanonicalizePath(), EvalString::Clear(), EvalString::empty(), env_, EvalString::Evaluate(), Parser::ExpectToken(), Parser::lexer_, Lexer::NEWLINE, and Parser::state_.
Referenced by Parse().
|
private |
Definition at line 212 of file manifest_parser.cc.
References BindingEnv::AddBinding(), CanonicalizePath(), EvalString::Clear(), Lexer::COLON, Edge::dyndep_, EvalString::empty(), Edge::env_, env_, EvalString::Evaluate(), Parser::ExpectToken(), Node::generated_by_dep_loader(), Edge::GetBinding(), Edge::GetUnescapedDyndep(), Edge::implicit_deps_, Edge::implicit_outs_, Lexer::INDENT, Edge::inputs_, ins_, kPhonyCycleActionWarn, Parser::lexer_, Edge::maybe_phonycycle_diagnostic(), Lexer::NEWLINE, options_, Edge::order_only_deps_, Edge::outputs_, outs_, ParseLet(), Node::path(), Lexer::PIPE, Lexer::PIPE2, Lexer::PIPEAT, Edge::pool_, quiet_, Node::set_dyndep_pending(), Parser::state_, Edge::validations_, validations_, and Warning().
Referenced by Parse().
|
private |
Parse either a 'subninja' or 'include' line.
Definition at line 419 of file manifest_parser.cc.
References env_, EvalString::Evaluate(), Parser::ExpectToken(), Parser::file_reader_, Parser::lexer_, ManifestParser(), Lexer::NEWLINE, options_, Parser::state_, and subparser_.
Referenced by Parse().
|
private |
Definition at line 177 of file manifest_parser.cc.
References Lexer::EQUALS, Parser::ExpectToken(), and Parser::lexer_.
Referenced by Parse(), ParseEdge(), ParsePool(), and ParseRule().
|
private |
Parse various statement types.
Definition at line 99 of file manifest_parser.cc.
References env_, EvalString::Evaluate(), Parser::ExpectToken(), Lexer::INDENT, Parser::lexer_, Lexer::NEWLINE, ParseLet(), and Parser::state_.
Referenced by Parse().
|
private |
Definition at line 136 of file manifest_parser.cc.
References env_, Parser::ExpectToken(), Lexer::INDENT, Rule::IsReservedBinding(), Parser::lexer_, Lexer::NEWLINE, and ParseLet().
Referenced by Parse().
|
inline |
Parse a text string of input. Used by tests.
Definition at line 46 of file manifest_parser.h.
References Parse(), and quiet_.
Referenced by AssertParse(), ParserTest::AssertParse(), TEST_F(), TEST_F(), TEST_F(), TEST_F(), TEST_F(), TEST_F(), TEST_F(), TEST_F(), TEST_F(), TEST_F(), TEST_F(), TEST_F(), TEST_F(), TEST_F(), TEST_F(), and WriteTestData().
|
private |
Definition at line 66 of file manifest_parser.h.
Referenced by ManifestParser(), Parse(), ParseDefault(), ParseEdge(), ParseFileInclude(), ParsePool(), and ParseRule().
|
protectedinherited |
Definition at line 40 of file parser.h.
Referenced by Load(), ManifestParser::ParseFileInclude(), and Parser().
|
private |
Definition at line 74 of file manifest_parser.h.
Referenced by ParseEdge().
|
protectedinherited |
Definition at line 41 of file parser.h.
Referenced by ExpectToken(), DyndepParser::Parse(), ManifestParser::Parse(), ManifestParser::ParseDefault(), DyndepParser::ParseDyndepVersion(), DyndepParser::ParseEdge(), ManifestParser::ParseEdge(), ManifestParser::ParseFileInclude(), DyndepParser::ParseLet(), ManifestParser::ParseLet(), ManifestParser::ParsePool(), and ManifestParser::ParseRule().
|
private |
Definition at line 67 of file manifest_parser.h.
Referenced by ManifestParser(), ParseEdge(), and ParseFileInclude().
|
private |
Definition at line 74 of file manifest_parser.h.
Referenced by ParseEdge().
|
private |
Definition at line 68 of file manifest_parser.h.
Referenced by ManifestParser(), ParseEdge(), and ParseTest().
|
protectedinherited |
Definition at line 39 of file parser.h.
Referenced by ManifestParser::ParseDefault(), DyndepParser::ParseEdge(), ManifestParser::ParseEdge(), ManifestParser::ParseFileInclude(), ManifestParser::ParsePool(), and Parser().
|
private |
Definition at line 73 of file manifest_parser.h.
Referenced by ParseFileInclude().
|
private |
Definition at line 74 of file manifest_parser.h.
Referenced by ParseEdge().