| Index: tools/gn/parser.h
|
| diff --git a/tools/gn/parser.h b/tools/gn/parser.h
|
| index 22acb472876b799becbf4d04ce51d150c5cbb65e..69dc8cf604e568d0fb103af33c84f02a93e00a3d 100644
|
| --- a/tools/gn/parser.h
|
| +++ b/tools/gn/parser.h
|
| @@ -17,9 +17,9 @@
|
| #include "tools/gn/parse_tree.h"
|
|
|
| class Parser;
|
| -typedef std::unique_ptr<ParseNode> (Parser::*PrefixFunc)(Token token);
|
| +typedef std::unique_ptr<ParseNode> (Parser::*PrefixFunc)(const Token& token);
|
| typedef std::unique_ptr<ParseNode> (
|
| - Parser::*InfixFunc)(std::unique_ptr<ParseNode> left, Token token);
|
| + Parser::*InfixFunc)(std::unique_ptr<ParseNode> left, const Token& token);
|
|
|
| extern const char kGrammar_Help[];
|
|
|
| @@ -58,29 +58,29 @@ class Parser {
|
| std::unique_ptr<ParseNode> ParseExpression(int precedence);
|
|
|
| // |PrefixFunc|s used in parsing expressions.
|
| - std::unique_ptr<ParseNode> Block(Token token);
|
| - std::unique_ptr<ParseNode> Literal(Token token);
|
| - std::unique_ptr<ParseNode> Name(Token token);
|
| - std::unique_ptr<ParseNode> Group(Token token);
|
| - std::unique_ptr<ParseNode> Not(Token token);
|
| - std::unique_ptr<ParseNode> List(Token token);
|
| - std::unique_ptr<ParseNode> BlockComment(Token token);
|
| + std::unique_ptr<ParseNode> Block(const Token& token);
|
| + std::unique_ptr<ParseNode> Literal(const Token& token);
|
| + std::unique_ptr<ParseNode> Name(const Token& token);
|
| + std::unique_ptr<ParseNode> Group(const Token& token);
|
| + std::unique_ptr<ParseNode> Not(const Token& token);
|
| + std::unique_ptr<ParseNode> List(const Token& token);
|
| + std::unique_ptr<ParseNode> BlockComment(const Token& token);
|
|
|
| // |InfixFunc|s used in parsing expressions.
|
| std::unique_ptr<ParseNode> BinaryOperator(std::unique_ptr<ParseNode> left,
|
| - Token token);
|
| + const Token& token);
|
| std::unique_ptr<ParseNode> IdentifierOrCall(std::unique_ptr<ParseNode> left,
|
| - Token token);
|
| + const Token& token);
|
| std::unique_ptr<ParseNode> Assignment(std::unique_ptr<ParseNode> left,
|
| - Token token);
|
| + const Token& token);
|
| std::unique_ptr<ParseNode> Subscript(std::unique_ptr<ParseNode> left,
|
| - Token token);
|
| + const Token& token);
|
| std::unique_ptr<ParseNode> DotOperator(std::unique_ptr<ParseNode> left,
|
| - Token token);
|
| + const Token& token);
|
|
|
| // Helper to parse a comma separated list, optionally allowing trailing
|
| // commas (allowed in [] lists, not in function calls).
|
| - std::unique_ptr<ListNode> ParseList(Token start_token,
|
| + std::unique_ptr<ListNode> ParseList(const Token& start_token,
|
| Token::Type stop_before,
|
| bool allow_trailing_comma);
|
|
|
| @@ -88,7 +88,7 @@ class Parser {
|
| std::unique_ptr<ParseNode> ParseStatement();
|
| // Expects to be passed the token corresponding to the '{' and that the
|
| // current token is the one following the '{'.
|
| - std::unique_ptr<BlockNode> ParseBlock(Token being_brace,
|
| + std::unique_ptr<BlockNode> ParseBlock(const Token& begin_brace,
|
| BlockNode::ResultMode result_mode);
|
| std::unique_ptr<ParseNode> ParseCondition();
|
|
|
| @@ -105,11 +105,11 @@ class Parser {
|
|
|
| bool LookAhead(Token::Type type);
|
| bool Match(Token::Type type);
|
| - Token Consume(Token::Type type, const char* error_message);
|
| - Token Consume(Token::Type* types,
|
| - size_t num_types,
|
| - const char* error_message);
|
| - Token Consume();
|
| + const Token& Consume(Token::Type type, const char* error_message);
|
| + const Token& Consume(Token::Type* types,
|
| + size_t num_types,
|
| + const char* error_message);
|
| + const Token& Consume();
|
|
|
| // Call this only if !at_end().
|
| const Token& cur_token() const { return tokens_[cur_]; }
|
| @@ -128,6 +128,7 @@ class Parser {
|
|
|
| static ParserHelper expressions_[Token::NUM_TYPES];
|
|
|
| + Token invalid_token_;
|
| Err* err_;
|
|
|
| // Current index into the tokens.
|
|
|