From 6c6c3df104ee187acf97a5350996fc2e3dfb42cd Mon Sep 17 00:00:00 2001 From: Paul Beckingham Date: Tue, 20 May 2014 18:25:47 -0400 Subject: [PATCH] A3t - ::findIDSequence now creates sub nodes. --- src/A3t.cpp | 66 ++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 63 insertions(+), 3 deletions(-) diff --git a/src/A3t.cpp b/src/A3t.cpp index 60259a3bd..59c457047 100644 --- a/src/A3t.cpp +++ b/src/A3t.cpp @@ -1074,13 +1074,73 @@ void A3t::findIdSequence () (*i)->unTag ("?"); (*i)->tag ("ID"); + (*i)->tag ("EXPANDED"); + + Tree* branch = (*i)->addBranch (new Tree ("argSeq")); + branch->attribute ("value", "("); + branch->tag ("OP"); + std::vector >::iterator r; for (r = ranges.begin (); r != ranges.end (); ++r) { - Tree* branch = (*i)->addBranch (new Tree ("range")); - branch->attribute ("min", r->first); - branch->attribute ("max", r->second); + if (r != ranges.begin ()) + { + branch = (*i)->addBranch (new Tree ("argSeq")); + branch->attribute ("value", "or"); + branch->tag ("OP"); + } + + if (r->first == r->second) + { + branch = (*i)->addBranch (new Tree ("argSeq")); + branch->attribute ("value", "id"); + + branch = (*i)->addBranch (new Tree ("argSeq")); + branch->attribute ("value", "=="); + branch->tag ("OP"); + + branch = (*i)->addBranch (new Tree ("argSeq")); + branch->attribute ("value", r->first); + } + else + { + branch = (*i)->addBranch (new Tree ("argSeq")); + branch->attribute ("value", "("); + branch->tag ("OP"); + + branch = (*i)->addBranch (new Tree ("argSeq")); + branch->attribute ("value", "id"); + + branch = (*i)->addBranch (new Tree ("argSeq")); + branch->attribute ("value", ">="); + branch->tag ("OP"); + + branch = (*i)->addBranch (new Tree ("argSeq")); + branch->attribute ("value", r->first); + + branch = (*i)->addBranch (new Tree ("argSeq")); + branch->attribute ("value", "and"); + branch->tag ("OP"); + + branch = (*i)->addBranch (new Tree ("argSeq")); + branch->attribute ("value", "id"); + + branch = (*i)->addBranch (new Tree ("argSeq")); + branch->attribute ("value", "<="); + branch->tag ("OP"); + + branch = (*i)->addBranch (new Tree ("argSeq")); + branch->attribute ("value", r->second); + + branch = (*i)->addBranch (new Tree ("argSeq")); + branch->attribute ("value", ")"); + branch->tag ("OP"); + } } + + branch = (*i)->addBranch (new Tree ("argSeq")); + branch->attribute ("value", ")"); + branch->tag ("OP"); } } }