diff options
author | Adrian Thurston <thurston@complang.org> | 2012-05-05 17:25:26 -0400 |
---|---|---|
committer | Adrian Thurston <thurston@complang.org> | 2012-05-05 17:25:26 -0400 |
commit | 0d28574aa4a452c49c5c4062017d1a76340a5059 (patch) | |
tree | b7b1cbd52c6b92c0d203b05457ade92eb426add1 | |
parent | 3b2ba90ceacd37938c63815e1a10c0a44deab158 (diff) | |
download | colm-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.
-rw-r--r-- | colm/pdabuild.cc | 7 |
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; |