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

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

BindingEnvenv_
 
FileReaderfile_reader_
 
Lexer lexer_
 
Statestate_
 

Detailed Description

Parses .ninja files.

Definition at line 29 of file manifest_parser.h.

Constructor & Destructor Documentation

ManifestParser::ManifestParser ( State state,
FileReader file_reader 
)

Definition at line 26 of file manifest_parser.cc.

References State::bindings_, and env_.

Member Function Documentation

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 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().

bool ManifestParser::Parse ( const string &  filename,
const string &  input,
string *  err 
)
private
bool ManifestParser::ParseDefault ( string *  err)
private
bool ManifestParser::ParseEdge ( string *  err)
private
bool ManifestParser::ParseFileInclude ( bool  new_scope,
string *  err 
)
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().

bool ManifestParser::ParseLet ( string *  key,
EvalString val,
string *  err 
)
private
bool ManifestParser::ParsePool ( string *  err)
private
bool ManifestParser::ParseRule ( string *  err)
private
bool ManifestParser::ParseTest ( const string &  input,
string *  err 
)
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().

Member Data Documentation

BindingEnv* ManifestParser::env_
private
FileReader* ManifestParser::file_reader_
private

Definition at line 65 of file manifest_parser.h.

Referenced by Load(), and ParseFileInclude().

Lexer ManifestParser::lexer_
private
State* ManifestParser::state_
private

Definition at line 63 of file manifest_parser.h.

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


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