summaryrefslogtreecommitdiff
path: root/colm/pdabuild.cc
diff options
context:
space:
mode:
authorAdrian Thurston <thurston@complang.org>2012-05-05 17:25:26 -0400
committerAdrian Thurston <thurston@complang.org>2012-05-05 17:25:26 -0400
commit0d28574aa4a452c49c5c4062017d1a76340a5059 (patch)
treeb7b1cbd52c6b92c0d203b05457ade92eb426add1 /colm/pdabuild.cc
parent3b2ba90ceacd37938c63815e1a10c0a44deab158 (diff)
downloadcolm-0d28574aa4a452c49c5c4062017d1a76340a5059.tar.gz
Named TREEs (patterns/replacements) have attribute children, but their parse
tree equivs don't. Was causings problems for construction of patterns and replacements.
Diffstat (limited to 'colm/pdabuild.cc')
-rw-r--r--colm/pdabuild.cc7
1 files changed, 5 insertions, 2 deletions
diff --git a/colm/pdabuild.cc b/colm/pdabuild.cc
index e001c9d5..dc540b39 100644
--- a/colm/pdabuild.cc
+++ b/colm/pdabuild.cc
@@ -1548,7 +1548,8 @@ void mapNodes( Program *prg, int &count, Kid *kid )
count += prg->rtd->lelInfo[kid->tree->id].numCaptureAttr;
- mapNodes( prg, count, treeChild( prg, kid->tree ) );
+ if ( !( pt(kid->tree)->shadow->tree->flags & AF_NAMED ) )
+ mapNodes( prg, count, treeChild( prg, kid->tree ) );
mapNodes( prg, count, kid->next );
}
}
@@ -1560,7 +1561,9 @@ void fillNodes( Program *prg, Bindings *bindings, long &bindId,
long ind = pt(kid->tree)->state;
PatReplNode &node = nodes[ind++];
- Kid *child = treeChild( prg, kid->tree );
+ Kid *child =
+ !( pt(kid->tree)->shadow->tree->flags & AF_NAMED ) ?
+ treeChild( prg, kid->tree ) : 0;
/* Set up the fields. */
node.id = kid->tree->id;