summaryrefslogtreecommitdiff
path: root/colm/pdabuild.cc
diff options
context:
space:
mode:
authorAdrian Thurston <thurston@complang.org>2012-05-16 13:58:15 -0400
committerAdrian Thurston <thurston@complang.org>2012-05-16 13:58:15 -0400
commit5618dc67f8d3d9cfed55330667d4d74ae5d594e7 (patch)
treea109d411a6548ada31aca49c18779ef41a5d35f6 /colm/pdabuild.cc
parent8e3e63bd314365ea47878c5b3016af21b2098ebc (diff)
downloadcolm-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.cc18
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++;