| Index: tools/gn/parser.h
|
| diff --git a/tools/gn/parser.h b/tools/gn/parser.h
|
| index 42d41efd7658f237c7f6eddb2b4228375f734b4e..de828a4ecdffddf78616b4331b489a8a3a648842 100644
|
| --- a/tools/gn/parser.h
|
| +++ b/tools/gn/parser.h
|
| @@ -8,18 +8,18 @@
|
| #include <stddef.h>
|
|
|
| #include <map>
|
| +#include <memory>
|
| #include <vector>
|
|
|
| #include "base/gtest_prod_util.h"
|
| #include "base/macros.h"
|
| -#include "base/memory/scoped_ptr.h"
|
| #include "tools/gn/err.h"
|
| #include "tools/gn/parse_tree.h"
|
|
|
| class Parser;
|
| -typedef scoped_ptr<ParseNode> (Parser::*PrefixFunc)(Token token);
|
| -typedef scoped_ptr<ParseNode> (Parser::*InfixFunc)(scoped_ptr<ParseNode> left,
|
| - Token token);
|
| +typedef std::unique_ptr<ParseNode> (Parser::*PrefixFunc)(Token token);
|
| +typedef std::unique_ptr<ParseNode> (
|
| + Parser::*InfixFunc)(std::unique_ptr<ParseNode> left, Token token);
|
|
|
| extern const char kGrammar_Help[];
|
|
|
| @@ -35,53 +35,58 @@ struct ParserHelper {
|
| class Parser {
|
| public:
|
| // Will return a null pointer and set the err on error.
|
| - static scoped_ptr<ParseNode> Parse(const std::vector<Token>& tokens,
|
| - Err* err);
|
| + static std::unique_ptr<ParseNode> Parse(const std::vector<Token>& tokens,
|
| + Err* err);
|
|
|
| // Alternative to parsing that assumes the input is an expression.
|
| - static scoped_ptr<ParseNode> ParseExpression(const std::vector<Token>& tokens,
|
| - Err* err);
|
| + static std::unique_ptr<ParseNode> ParseExpression(
|
| + const std::vector<Token>& tokens,
|
| + Err* err);
|
|
|
| // Alternative to parsing that assumes the input is a literal value.
|
| - static scoped_ptr<ParseNode> ParseValue(const std::vector<Token>& tokens,
|
| - Err* err);
|
| + static std::unique_ptr<ParseNode> ParseValue(const std::vector<Token>& tokens,
|
| + Err* err);
|
|
|
| private:
|
| // Vector must be valid for lifetime of call.
|
| Parser(const std::vector<Token>& tokens, Err* err);
|
| ~Parser();
|
|
|
| - scoped_ptr<ParseNode> ParseExpression();
|
| + std::unique_ptr<ParseNode> ParseExpression();
|
|
|
| // Parses an expression with the given precedence or higher.
|
| - scoped_ptr<ParseNode> ParseExpression(int precedence);
|
| + std::unique_ptr<ParseNode> ParseExpression(int precedence);
|
|
|
| // |PrefixFunc|s used in parsing expressions.
|
| - scoped_ptr<ParseNode> Literal(Token token);
|
| - scoped_ptr<ParseNode> Name(Token token);
|
| - scoped_ptr<ParseNode> Group(Token token);
|
| - scoped_ptr<ParseNode> Not(Token token);
|
| - scoped_ptr<ParseNode> List(Token token);
|
| - scoped_ptr<ParseNode> BlockComment(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);
|
|
|
| // |InfixFunc|s used in parsing expressions.
|
| - scoped_ptr<ParseNode> BinaryOperator(scoped_ptr<ParseNode> left, Token token);
|
| - scoped_ptr<ParseNode> IdentifierOrCall(scoped_ptr<ParseNode> left,
|
| + std::unique_ptr<ParseNode> BinaryOperator(std::unique_ptr<ParseNode> left,
|
| + Token token);
|
| + std::unique_ptr<ParseNode> IdentifierOrCall(std::unique_ptr<ParseNode> left,
|
| + Token token);
|
| + std::unique_ptr<ParseNode> Assignment(std::unique_ptr<ParseNode> left,
|
| + Token token);
|
| + std::unique_ptr<ParseNode> Subscript(std::unique_ptr<ParseNode> left,
|
| + Token token);
|
| + std::unique_ptr<ParseNode> DotOperator(std::unique_ptr<ParseNode> left,
|
| Token token);
|
| - scoped_ptr<ParseNode> Assignment(scoped_ptr<ParseNode> left, Token token);
|
| - scoped_ptr<ParseNode> Subscript(scoped_ptr<ParseNode> left, Token token);
|
| - scoped_ptr<ParseNode> DotOperator(scoped_ptr<ParseNode> left, Token token);
|
|
|
| // Helper to parse a comma separated list, optionally allowing trailing
|
| // commas (allowed in [] lists, not in function calls).
|
| - scoped_ptr<ListNode> ParseList(Token start_token,
|
| - Token::Type stop_before,
|
| - bool allow_trailing_comma);
|
| -
|
| - scoped_ptr<ParseNode> ParseFile();
|
| - scoped_ptr<ParseNode> ParseStatement();
|
| - scoped_ptr<BlockNode> ParseBlock();
|
| - scoped_ptr<ParseNode> ParseCondition();
|
| + std::unique_ptr<ListNode> ParseList(Token start_token,
|
| + Token::Type stop_before,
|
| + bool allow_trailing_comma);
|
| +
|
| + std::unique_ptr<ParseNode> ParseFile();
|
| + std::unique_ptr<ParseNode> ParseStatement();
|
| + std::unique_ptr<BlockNode> ParseBlock();
|
| + std::unique_ptr<ParseNode> ParseCondition();
|
|
|
| // Generates a pre- and post-order traversal of the tree.
|
| void TraverseOrder(const ParseNode* root,
|
|
|