summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'ast-to-instr/src/VHDLCSNode.java')
-rw-r--r--ast-to-instr/src/VHDLCSNode.java41
1 files changed, 15 insertions, 26 deletions
diff --git a/ast-to-instr/src/VHDLCSNode.java b/ast-to-instr/src/VHDLCSNode.java
index 7ed0ff5..05a7450 100644
--- a/ast-to-instr/src/VHDLCSNode.java
+++ b/ast-to-instr/src/VHDLCSNode.java
@@ -5,8 +5,7 @@ import javax.xml.xpath.XPathConstants;
import javax.xml.xpath.XPathExpression;
import javax.xml.xpath.XPathExpressionException;
-import java.util.ArrayList;
-import java.util.Collection;
+import java.util.Stack;
/* Case Statement Node */
public class VHDLCSNode extends VHDLNode
@@ -57,15 +56,15 @@ public class VHDLCSNode extends VHDLNode
}
@Override
- public Collection<ParsableXML> parse ()
+ public void parse
+ (
+ final Stack<ParsableXML> waiting_list
+ )
throws XPathExpressionException
{
- final Collection<ParsableXML> result;
final String xml_id;
final IDs local_id;
- result = new ArrayList<ParsableXML>();
-
xml_id = XMLManager.get_attribute(xml_node, "id");
local_id = IDs.get_id_from_xml_id(xml_id, "node");
@@ -81,10 +80,8 @@ public class VHDLCSNode extends VHDLNode
handle_predicate_expr_reads(local_id);
/** Children ************************************************************/
- result.addAll(handle_when_branches(local_id));
- result.addAll(handle_others_branch(local_id));
-
- return result;
+ handle_when_branches(local_id, waiting_list);
+ handle_others_branch(local_id, waiting_list);
}
/***************************************************************************/
@@ -204,18 +201,16 @@ public class VHDLCSNode extends VHDLNode
/***************************************************************************/
/** Children ***************************************************************/
/***************************************************************************/
- private Collection<ParsableXML> handle_when_branches
+ private void handle_when_branches
(
- final IDs local_id
+ final IDs local_id,
+ final Stack<ParsableXML> waiting_list
)
throws XPathExpressionException
{
- final Collection<ParsableXML> result;
final NodeList when_branches;
final int when_branches_length;
- result = new ArrayList<ParsableXML>();
-
when_branches =
(NodeList) XPE_FIND_WHEN_BRANCHES.evaluate
(
@@ -228,7 +223,7 @@ public class VHDLCSNode extends VHDLNode
for (int i = 0; i < when_branches_length; ++i)
{
- result.add
+ waiting_list.add
(
new VHDLWNode
(
@@ -240,21 +235,17 @@ public class VHDLCSNode extends VHDLNode
)
);
}
-
- return result;
}
- private Collection<ParsableXML> handle_others_branch
+ private void handle_others_branch
(
- final IDs local_id
+ final IDs local_id,
+ final Stack<ParsableXML> waiting_list
)
throws XPathExpressionException
{
- final Collection<ParsableXML> result;
final Node others_branch;
- result = new ArrayList<ParsableXML>();
-
others_branch =
(Node) XPE_FIND_OTHERS_BRANCH.evaluate
(
@@ -284,7 +275,7 @@ public class VHDLCSNode extends VHDLNode
}
else
{
- result.add
+ waiting_list.push
(
new VHDLWNode
(
@@ -296,7 +287,5 @@ public class VHDLCSNode extends VHDLNode
)
);
}
-
- return result;
}
}