Changeset a08ba92 for translator/Parser/ParseNode.cc
- Timestamp:
- May 19, 2015, 4:58:14 PM (9 years ago)
- Branches:
- ADT, aaron-thesis, arm-eh, ast-experimental, cleanup-dtors, ctor, deferred_resn, demangler, enum, forall-pointer-decay, gc_noraii, jacob/cs343-translation, jenkins-sandbox, master, memory, new-ast, new-ast-unique-expr, new-env, no_list, persistent-indexer, pthread-emulation, qualifiedEnum, resolv-new, string, with_gc
- Children:
- 843054c2
- Parents:
- 01aeade
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
translator/Parser/ParseNode.cc
r01aeade ra08ba92 10 10 // Created On : Sat May 16 13:26:29 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Sat May 16 13:27:51201513 // Update Count : 212 // Last Modified On : Tue May 19 16:48:30 2015 13 // Update Count : 3 14 14 // 15 15 … … 24 24 25 25 ParseNode *ParseNode::set_name( string _name ) { 26 27 26 name = _name; 27 return this; 28 28 } 29 29 30 30 ParseNode *ParseNode::set_name( string *_name ) { 31 32 31 name = *_name; // deep copy 32 delete _name; 33 33 34 34 return this; 35 35 } 36 36 37 37 ParseNode::~ParseNode( void ) { 38 38 delete next; 39 39 }; 40 40 41 41 string ParseNode::get_name( void ) { 42 42 return name; 43 43 } 44 44 45 45 ParseNode *ParseNode::get_link( void ) const { 46 46 return next; 47 47 } 48 48 49 49 ParseNode *ParseNode::get_last(void) { 50 50 ParseNode *current = this; 51 51 52 52 while ( current->get_link() != 0 ) 53 53 current = current->get_link(); 54 54 55 55 return current; 56 56 } 57 57 58 ParseNode *ParseNode::set_link(ParseNode *_next) {59 58 ParseNode *ParseNode::set_link(ParseNode *_next) { 59 ParseNode *follow; 60 60 61 61 if ( _next == 0 ) return this; 62 62 63 64 63 for ( follow = this; follow->next != 0; follow = follow->next ); 64 follow->next = _next; 65 65 66 66 return this; 67 67 } 68 68 69 69 const string ParseNode::get_name(void) const { 70 70 return name; 71 71 } 72 72 … … 75 75 76 76 void ParseNode::printList( std::ostream &os, int indent ) const { 77 77 print( os, indent ); 78 78 79 79 if ( next ) { 80 80 next->printList( os, indent ); 81 81 } 82 82 } 83 83 84 84 ParseNode &ParseNode::operator,( ParseNode &p ) { 85 85 set_link( &p ); 86 86 87 87 return *this; 88 88 } 89 89 90 90 ParseNode *mkList( ParseNode &pn ) { 91 92 93 94 91 // it just relies on `operator,' to take care of the "arguments" and provides a nice interface to an awful-looking 92 // address-of, rendering, for example (StatementNode *)(&(*$5 + *$7)) into (StatementNode *)mkList(($5, $7)) 93 // (although "nice" is probably not the word) 94 return &pn; 95 95 } 96 96
Note: See TracChangeset
for help on using the changeset viewer.