diff options
author | Adrian Thurston <thurston@complang.org> | 2012-05-16 13:58:15 -0400 |
---|---|---|
committer | Adrian Thurston <thurston@complang.org> | 2012-05-16 13:58:15 -0400 |
commit | 5618dc67f8d3d9cfed55330667d4d74ae5d594e7 (patch) | |
tree | a109d411a6548ada31aca49c18779ef41a5d35f6 /colm/pdabuild.cc | |
parent | 8e3e63bd314365ea47878c5b3016af21b2098ebc (diff) | |
download | colm-5618dc67f8d3d9cfed55330667d4d74ae5d594e7.tar.gz |
AF_TERM_DUP now stays out of the data parse tree node. The NAMED and ARTIFICIAL
flags not accessed in the fillNodes. Must complete the movement of those flags
too.
Diffstat (limited to 'colm/pdabuild.cc')
-rw-r--r-- | colm/pdabuild.cc | 18 |
1 files changed, 8 insertions, 10 deletions
diff --git a/colm/pdabuild.cc b/colm/pdabuild.cc index a0351ea9..eafc514b 100644 --- a/colm/pdabuild.cc +++ b/colm/pdabuild.cc @@ -1580,9 +1580,9 @@ void countNodes( Program *prg, int &count, ParseTree *parseTree, Kid *kid ) assert( ( parseTree->flags & AF_NAMED ) == ( kid->tree->flags & AF_NAMED ) ); assert( ( parseTree->flags & AF_ARTIFICIAL ) == ( kid->tree->flags & AF_ARTIFICIAL ) ); - if ( !( kid->tree->flags & AF_NAMED ) && - !( kid->tree->flags & AF_ARTIFICIAL ) && - treeChild( prg, kid->tree ) != 0 ) + if ( !( parseTree->flags & AF_NAMED ) && + !( parseTree->flags & AF_ARTIFICIAL ) && + treeChild( prg, kid->tree ) != 0 ) { countNodes( prg, count, parseTree->child, treeChild( prg, kid->tree ) ); } @@ -1600,15 +1600,15 @@ void fillNodes( Program *prg, int &nextAvail, Bindings *bindings, long &bindId, assert( ( parseTree->flags & AF_ARTIFICIAL ) == ( kid->tree->flags & AF_ARTIFICIAL ) ); Kid *child = - !( kid->tree->flags & AF_NAMED ) && - !( kid->tree->flags & AF_ARTIFICIAL ) && + !( parseTree->flags & AF_NAMED ) && + !( parseTree->flags & AF_ARTIFICIAL ) && treeChild( prg, kid->tree ) != 0 ? treeChild( prg, kid->tree ) : 0; ParseTree *ptChild = - !( kid->tree->flags & AF_NAMED ) && - !( kid->tree->flags & AF_ARTIFICIAL ) && + !( parseTree->flags & AF_NAMED ) && + !( parseTree->flags & AF_ARTIFICIAL ) && treeChild( prg, kid->tree ) != 0 ? parseTree->child : 0; @@ -1654,9 +1654,7 @@ void fillNodes( Program *prg, int &nextAvail, Bindings *bindings, long &bindId, // node.data = stringData( attr->tokdata ); //} - node.stop = kid->tree->flags & AF_TERM_DUP; - - assert( ( parseTree->flags & AF_TERM_DUP ) == ( kid->tree->flags & AF_TERM_DUP ) ); + node.stop = parseTree->flags & AF_TERM_DUP; node.child = child == 0 ? -1 : nextAvail++; |