Ninja
|
Parses .ninja files. More...
#include <manifest_parser.h>
Classes | |
struct | FileReader |
Public Member Functions | |
bool | Load (const string &filename, string *err) |
Load and parse a file. More... | |
ManifestParser (State *state, FileReader *file_reader) | |
bool | ParseTest (const string &input, string *err) |
Parse a text string of input. Used by tests. More... | |
Private Member Functions | |
bool | ExpectToken (Lexer::Token expected, string *err) |
If the next token is not expected, produce an error string saying "expectd foo, got bar". More... | |
bool | Parse (const string &filename, const string &input, string *err) |
Parse a file, given its contents as a string. More... | |
bool | ParseDefault (string *err) |
bool | ParseEdge (string *err) |
bool | ParseFileInclude (bool new_scope, string *err) |
Parse either a 'subninja' or 'include' line. More... | |
bool | ParseLet (string *key, EvalString *val, string *err) |
bool | ParsePool (string *err) |
Parse various statement types. More... | |
bool | ParseRule (string *err) |
Private Attributes | |
BindingEnv * | env_ |
FileReader * | file_reader_ |
Lexer | lexer_ |
State * | state_ |
Parses .ninja files.
Definition at line 29 of file manifest_parser.h.
ManifestParser::ManifestParser | ( | State * | state, |
FileReader * | file_reader | ||
) |
Definition at line 26 of file manifest_parser.cc.
References State::bindings_, and env_.
|
private |
If the next token is not expected, produce an error string saying "expectd foo, got bar".
Definition at line 369 of file manifest_parser.cc.
References Lexer::Error(), lexer_, Lexer::ReadToken(), Lexer::TokenErrorHint(), and Lexer::TokenName().
Referenced by ParseDefault(), ParseEdge(), ParseFileInclude(), ParseLet(), ParsePool(), and ParseRule().
bool ManifestParser::Load | ( | const string & | filename, |
string * | err | ||
) |
Load and parse a file.
Definition at line 30 of file manifest_parser.cc.
References file_reader_, Parse(), and ManifestParser::FileReader::ReadFile().
Referenced by TEST_F().
|
private |
Parse a file, given its contents as a string.
Definition at line 41 of file manifest_parser.cc.
References BindingEnv::AddBinding(), Lexer::BUILD, CheckNinjaVersion(), Lexer::DEFAULT, Lexer::DescribeLastError(), env_, Lexer::ERROR, Lexer::Error(), EvalString::Evaluate(), Lexer::IDENT, Lexer::INCLUDE, lexer_, METRIC_RECORD, Lexer::NEWLINE, ParseDefault(), ParseEdge(), ParseFileInclude(), ParseLet(), ParsePool(), ParseRule(), Lexer::POOL, Lexer::ReadToken(), Lexer::RULE, Lexer::Start(), Lexer::SUBNINJA, Lexer::TEOF, Lexer::TokenName(), and Lexer::UnreadToken().
Referenced by Load(), and ParseFileInclude().
|
private |
Definition at line 193 of file manifest_parser.cc.
References State::AddDefault(), CanonicalizePath(), EvalString::Clear(), EvalString::empty(), env_, Lexer::Error(), EvalString::Evaluate(), ExpectToken(), lexer_, Lexer::NEWLINE, Lexer::ReadPath(), and state_.
Referenced by Parse().
|
private |
Definition at line 219 of file manifest_parser.cc.
References BindingEnv::AddBinding(), State::AddEdge(), State::AddIn(), State::AddOut(), CanonicalizePath(), EvalString::Clear(), Lexer::COLON, EvalString::empty(), env_, Edge::env_, Lexer::Error(), EvalString::Evaluate(), ExpectToken(), Edge::GetBinding(), Edge::implicit_deps_, Lexer::INDENT, lexer_, State::LookupPool(), State::LookupRule(), Lexer::NEWLINE, Edge::order_only_deps_, Edge::outputs_, ParseLet(), Lexer::PeekToken(), Lexer::PIPE, Lexer::PIPE2, Edge::pool_, Lexer::ReadIdent(), Lexer::ReadPath(), and state_.
Referenced by Parse().
|
private |
Parse either a 'subninja' or 'include' line.
Definition at line 341 of file manifest_parser.cc.
References env_, Lexer::Error(), EvalString::Evaluate(), ExpectToken(), file_reader_, lexer_, Lexer::NEWLINE, Parse(), ManifestParser::FileReader::ReadFile(), Lexer::ReadPath(), and state_.
Referenced by Parse().
|
private |
Definition at line 183 of file manifest_parser.cc.
References Lexer::EQUALS, ExpectToken(), lexer_, Lexer::ReadIdent(), and Lexer::ReadVarValue().
Referenced by Parse(), ParseEdge(), ParsePool(), and ParseRule().
|
private |
Parse various statement types.
Definition at line 103 of file manifest_parser.cc.
References State::AddPool(), env_, Lexer::Error(), EvalString::Evaluate(), ExpectToken(), Lexer::INDENT, lexer_, State::LookupPool(), Lexer::NEWLINE, ParseLet(), Lexer::PeekToken(), Lexer::ReadIdent(), and state_.
Referenced by Parse().
|
private |
Definition at line 140 of file manifest_parser.cc.
References Rule::AddBinding(), State::AddRule(), Rule::bindings_, Lexer::Error(), ExpectToken(), Lexer::INDENT, Rule::IsReservedBinding(), lexer_, State::LookupRule(), Lexer::NEWLINE, ParseLet(), Lexer::PeekToken(), Lexer::ReadIdent(), and state_.
Referenced by Parse().
|
inline |
Parse a text string of input. Used by tests.
Definition at line 41 of file manifest_parser.h.
Referenced by ParserTest::AssertParse(), AssertParse(), TEST_F(), and WriteTestData().
|
private |
Definition at line 64 of file manifest_parser.h.
Referenced by ManifestParser(), Parse(), ParseDefault(), ParseEdge(), ParseFileInclude(), and ParsePool().
|
private |
Definition at line 65 of file manifest_parser.h.
Referenced by Load(), and ParseFileInclude().
|
private |
Definition at line 66 of file manifest_parser.h.
Referenced by ExpectToken(), Parse(), ParseDefault(), ParseEdge(), ParseFileInclude(), ParseLet(), ParsePool(), and ParseRule().
|
private |
Definition at line 63 of file manifest_parser.h.
Referenced by ParseDefault(), ParseEdge(), ParseFileInclude(), ParsePool(), and ParseRule().