Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(16)

Side by Side Diff: tools/gn/parse_tree.h

Issue 962003002: gn format: Have format sort sources (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: . Created 5 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef TOOLS_GN_PARSE_TREE_H_ 5 #ifndef TOOLS_GN_PARSE_TREE_H_
6 #define TOOLS_GN_PARSE_TREE_H_ 6 #define TOOLS_GN_PARSE_TREE_H_
7 7
8 #include <vector> 8 #include <vector>
9 9
10 #include "base/basictypes.h" 10 #include "base/basictypes.h"
(...skipping 14 matching lines...) Expand all
25 class LiteralNode; 25 class LiteralNode;
26 class Scope; 26 class Scope;
27 class UnaryOpNode; 27 class UnaryOpNode;
28 28
29 class Comments { 29 class Comments {
30 public: 30 public:
31 Comments(); 31 Comments();
32 virtual ~Comments(); 32 virtual ~Comments();
33 33
34 const std::vector<Token>& before() const { return before_; } 34 const std::vector<Token>& before() const { return before_; }
35 void append_before(Token c) { 35 void append_before(Token c) { before_.push_back(c); }
36 before_.push_back(c); 36 void clear_before() { before_.clear(); }
37 }
38 37
39 const std::vector<Token>& suffix() const { return suffix_; } 38 const std::vector<Token>& suffix() const { return suffix_; }
40 void append_suffix(Token c) { 39 void append_suffix(Token c) { suffix_.push_back(c); }
41 suffix_.push_back(c);
42 }
43 // Reverse the order of the suffix comments. When walking the tree in 40 // Reverse the order of the suffix comments. When walking the tree in
44 // post-order we append suffix comments in reverse order, so this fixes them 41 // post-order we append suffix comments in reverse order, so this fixes them
45 // up. 42 // up.
46 void ReverseSuffix(); 43 void ReverseSuffix();
47 44
48 const std::vector<Token>& after() const { return after_; } 45 const std::vector<Token>& after() const { return after_; }
49 void append_after(Token c) { 46 void append_after(Token c) { after_.push_back(c); }
50 after_.push_back(c);
51 }
52 47
53 private: 48 private:
54 // Whole line comments before the expression. 49 // Whole line comments before the expression.
55 std::vector<Token> before_; 50 std::vector<Token> before_;
56 51
57 // End-of-line comments after this expression. 52 // End-of-line comments after this expression.
58 std::vector<Token> suffix_; 53 std::vector<Token> suffix_;
59 54
60 // For top-level expressions only, after_ lists whole-line comments 55 // For top-level expressions only, after_ lists whole-line comments
61 // following the expression. 56 // following the expression.
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after
153 148
154 // Index is the expression inside the []. Will be null if member is set. 149 // Index is the expression inside the []. Will be null if member is set.
155 const ParseNode* index() const { return index_.get(); } 150 const ParseNode* index() const { return index_.get(); }
156 void set_index(scoped_ptr<ParseNode> i) { index_ = i.Pass(); } 151 void set_index(scoped_ptr<ParseNode> i) { index_ = i.Pass(); }
157 152
158 // The member is the identifier on the right hand side of the dot. Will be 153 // The member is the identifier on the right hand side of the dot. Will be
159 // null if the index is set. 154 // null if the index is set.
160 const IdentifierNode* member() const { return member_.get(); } 155 const IdentifierNode* member() const { return member_.get(); }
161 void set_member(scoped_ptr<IdentifierNode> i) { member_ = i.Pass(); } 156 void set_member(scoped_ptr<IdentifierNode> i) { member_ = i.Pass(); }
162 157
158 void SetNewLocation(int line_number);
159
163 private: 160 private:
164 Value ExecuteArrayAccess(Scope* scope, Err* err) const; 161 Value ExecuteArrayAccess(Scope* scope, Err* err) const;
165 Value ExecuteScopeAccess(Scope* scope, Err* err) const; 162 Value ExecuteScopeAccess(Scope* scope, Err* err) const;
166 163
167 Token base_; 164 Token base_;
168 165
169 // Either index or member will be set according to what type of access this 166 // Either index or member will be set according to what type of access this
170 // is. 167 // is.
171 scoped_ptr<ParseNode> index_; 168 scoped_ptr<ParseNode> index_;
172 scoped_ptr<IdentifierNode> member_; 169 scoped_ptr<IdentifierNode> member_;
(...skipping 168 matching lines...) Expand 10 before | Expand all | Expand 10 after
341 Value Execute(Scope* scope, Err* err) const override; 338 Value Execute(Scope* scope, Err* err) const override;
342 LocationRange GetRange() const override; 339 LocationRange GetRange() const override;
343 Err MakeErrorDescribing( 340 Err MakeErrorDescribing(
344 const std::string& msg, 341 const std::string& msg,
345 const std::string& help = std::string()) const override; 342 const std::string& help = std::string()) const override;
346 void Print(std::ostream& out, int indent) const override; 343 void Print(std::ostream& out, int indent) const override;
347 344
348 const Token& value() const { return value_; } 345 const Token& value() const { return value_; }
349 void set_value(const Token& t) { value_ = t; } 346 void set_value(const Token& t) { value_ = t; }
350 347
348 void SetNewLocation(int line_number);
349
351 private: 350 private:
352 Token value_; 351 Token value_;
353 352
354 DISALLOW_COPY_AND_ASSIGN(IdentifierNode); 353 DISALLOW_COPY_AND_ASSIGN(IdentifierNode);
355 }; 354 };
356 355
357 // ListNode -------------------------------------------------------------------- 356 // ListNode --------------------------------------------------------------------
358 357
359 class ListNode : public ParseNode { 358 class ListNode : public ParseNode {
360 public: 359 public:
(...skipping 10 matching lines...) Expand all
371 370
372 void set_begin_token(const Token& t) { begin_token_ = t; } 371 void set_begin_token(const Token& t) { begin_token_ = t; }
373 void set_end(scoped_ptr<EndNode> e) { end_ = e.Pass(); } 372 void set_end(scoped_ptr<EndNode> e) { end_ = e.Pass(); }
374 const EndNode* End() const { return end_.get(); } 373 const EndNode* End() const { return end_.get(); }
375 374
376 void append_item(scoped_ptr<ParseNode> s) { 375 void append_item(scoped_ptr<ParseNode> s) {
377 contents_.push_back(s.release()); 376 contents_.push_back(s.release());
378 } 377 }
379 const std::vector<const ParseNode*>& contents() const { return contents_; } 378 const std::vector<const ParseNode*>& contents() const { return contents_; }
380 379
380 void SortAsStringsList();
381
381 // During formatting, do we want this list to always be multliline? This is 382 // During formatting, do we want this list to always be multliline? This is
382 // used to make assignments to deps, sources, etc. always be multiline lists, 383 // used to make assignments to deps, sources, etc. always be multiline lists,
383 // rather than collapsed to a single line when they're one element. 384 // rather than collapsed to a single line when they're one element.
384 bool prefer_multiline() const { return prefer_multiline_; } 385 bool prefer_multiline() const { return prefer_multiline_; }
385 void set_prefer_multiline(bool prefer_multiline) { 386 void set_prefer_multiline(bool prefer_multiline) {
386 prefer_multiline_ = prefer_multiline; 387 prefer_multiline_ = prefer_multiline;
387 } 388 }
388 389
389 private: 390 private:
390 // Tokens corresponding to the [ and ]. The end token is stored in inside an 391 // Tokens corresponding to the [ and ]. The end token is stored in inside an
(...skipping 20 matching lines...) Expand all
411 Value Execute(Scope* scope, Err* err) const override; 412 Value Execute(Scope* scope, Err* err) const override;
412 LocationRange GetRange() const override; 413 LocationRange GetRange() const override;
413 Err MakeErrorDescribing( 414 Err MakeErrorDescribing(
414 const std::string& msg, 415 const std::string& msg,
415 const std::string& help = std::string()) const override; 416 const std::string& help = std::string()) const override;
416 void Print(std::ostream& out, int indent) const override; 417 void Print(std::ostream& out, int indent) const override;
417 418
418 const Token& value() const { return value_; } 419 const Token& value() const { return value_; }
419 void set_value(const Token& t) { value_ = t; } 420 void set_value(const Token& t) { value_ = t; }
420 421
422 void SetNewLocation(int line_number);
423
421 private: 424 private:
422 Token value_; 425 Token value_;
423 426
424 DISALLOW_COPY_AND_ASSIGN(LiteralNode); 427 DISALLOW_COPY_AND_ASSIGN(LiteralNode);
425 }; 428 };
426 429
427 // UnaryOpNode ----------------------------------------------------------------- 430 // UnaryOpNode -----------------------------------------------------------------
428 431
429 class UnaryOpNode : public ParseNode { 432 class UnaryOpNode : public ParseNode {
430 public: 433 public:
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after
505 const Token& value() const { return value_; } 508 const Token& value() const { return value_; }
506 void set_value(const Token& t) { value_ = t; } 509 void set_value(const Token& t) { value_ = t; }
507 510
508 private: 511 private:
509 Token value_; 512 Token value_;
510 513
511 DISALLOW_COPY_AND_ASSIGN(EndNode); 514 DISALLOW_COPY_AND_ASSIGN(EndNode);
512 }; 515 };
513 516
514 #endif // TOOLS_GN_PARSE_TREE_H_ 517 #endif // TOOLS_GN_PARSE_TREE_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698