Ninja
Public Member Functions | Private Member Functions | Private Attributes | List of all members
ManifestParser Struct Reference

Parses .ninja files. More...

#include <manifest_parser.h>

Public Member Functions

bool Load (const string &filename, string *err, Lexer *parent=NULL)
 Load and parse a file. More...
 
 ManifestParser (State *state, FileReader *file_reader, ManifestParserOptions options=ManifestParserOptions())
 
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

BindingEnvenv_
 
FileReaderfile_reader_
 
Lexer lexer_
 
ManifestParserOptions options_
 
bool quiet_
 
Statestate_
 

Detailed Description

Parses .ninja files.

Definition at line 48 of file manifest_parser.h.

Constructor & Destructor Documentation

◆ ManifestParser()

ManifestParser::ManifestParser ( State state,
FileReader file_reader,
ManifestParserOptions  options = ManifestParserOptions() 
)

Definition at line 28 of file manifest_parser.cc.

References State::bindings_, and env_.

Member Function Documentation

◆ ExpectToken()

bool ManifestParser::ExpectToken ( Lexer::Token  expected,
string *  err 
)
private

If the next token is not expected, produce an error string saying "expectd foo, got bar".

Definition at line 438 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().

◆ Load()

bool ManifestParser::Load ( const string &  filename,
string *  err,
Lexer parent = NULL 
)

Load and parse a file.

Definition at line 35 of file manifest_parser.cc.

References Lexer::Error(), file_reader_, METRIC_RECORD, FileReader::Okay, Parse(), and FileReader::ReadFile().

Referenced by LoadManifests(), ParseFileInclude(), and TEST_F().

◆ Parse()

bool ManifestParser::Parse ( const string &  filename,
const string &  input,
string *  err 
)
private

◆ ParseDefault()

bool ManifestParser::ParseDefault ( string *  err)
private

◆ ParseEdge()

bool ManifestParser::ParseEdge ( string *  err)
private

◆ ParseFileInclude()

bool ManifestParser::ParseFileInclude ( bool  new_scope,
string *  err 
)
private

Parse either a 'subninja' or 'include' line.

Definition at line 416 of file manifest_parser.cc.

References env_, EvalString::Evaluate(), ExpectToken(), file_reader_, lexer_, Load(), Lexer::NEWLINE, options_, Lexer::ReadPath(), and state_.

Referenced by Parse().

◆ ParseLet()

bool ManifestParser::ParseLet ( string *  key,
EvalString val,
string *  err 
)
private

◆ ParsePool()

bool ManifestParser::ParsePool ( string *  err)
private

◆ ParseRule()

bool ManifestParser::ParseRule ( string *  err)
private

◆ ParseTest()

bool ManifestParser::ParseTest ( const string &  input,
string *  err 
)
inline

Parse a text string of input. Used by tests.

Definition at line 56 of file manifest_parser.h.

Referenced by ParserTest::AssertParse(), AssertParse(), TEST_F(), and WriteTestData().

Member Data Documentation

◆ env_

BindingEnv* ManifestParser::env_
private

◆ file_reader_

FileReader* ManifestParser::file_reader_
private

Definition at line 81 of file manifest_parser.h.

Referenced by Load(), and ParseFileInclude().

◆ lexer_

Lexer ManifestParser::lexer_
private

◆ options_

ManifestParserOptions ManifestParser::options_
private

Definition at line 83 of file manifest_parser.h.

Referenced by ParseEdge(), and ParseFileInclude().

◆ quiet_

bool ManifestParser::quiet_
private

Definition at line 84 of file manifest_parser.h.

Referenced by ParseEdge().

◆ state_

State* ManifestParser::state_
private

Definition at line 79 of file manifest_parser.h.

Referenced by ParseDefault(), ParseEdge(), ParseFileInclude(), and ParsePool().


The documentation for this struct was generated from the following files: