summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'ast-to-instr/src/VHDLFile.java')
-rw-r--r--ast-to-instr/src/VHDLFile.java44
1 files changed, 18 insertions, 26 deletions
diff --git a/ast-to-instr/src/VHDLFile.java b/ast-to-instr/src/VHDLFile.java
index c619a1b..50b6099 100644
--- a/ast-to-instr/src/VHDLFile.java
+++ b/ast-to-instr/src/VHDLFile.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;
public class VHDLFile extends ParsableXML
{
@@ -38,15 +37,15 @@ public class VHDLFile extends ParsableXML
}
@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, "file");
@@ -57,10 +56,8 @@ public class VHDLFile extends ParsableXML
/** Predicates **********************************************************/
/** Children ************************************************************/
- result.addAll(handle_child_entities(local_id));
- result.addAll(handle_child_architectures(local_id));
-
- return result;
+ handle_child_entities(local_id, waiting_list);
+ handle_child_architectures(local_id, waiting_list);
}
/***************************************************************************/
@@ -85,18 +82,16 @@ public class VHDLFile extends ParsableXML
/***************************************************************************/
/** Children ***************************************************************/
/***************************************************************************/
- private Collection<ParsableXML> handle_child_entities
+ private void handle_child_entities
(
- final IDs local_id
+ final IDs local_id,
+ final Stack<ParsableXML> waiting_list
)
throws XPathExpressionException
{
- final Collection<ParsableXML> result;
final NodeList entities;
final int children_count;
- result = new ArrayList<ParsableXML>();
-
entities =
(NodeList) XPE_FIND_ENTITIES.evaluate
(
@@ -108,24 +103,20 @@ public class VHDLFile extends ParsableXML
for (int i = 0; i < children_count; ++i)
{
- result.add(new VHDLEntity(local_id, entities.item(i)));
+ waiting_list.push(new VHDLEntity(local_id, entities.item(i)));
}
-
- return result;
}
- private Collection<ParsableXML> handle_child_architectures
+ private void handle_child_architectures
(
- final IDs local_id
+ final IDs local_id,
+ final Stack<ParsableXML> waiting_list
)
throws XPathExpressionException
{
- final Collection<ParsableXML> result;
final NodeList architectures;
final int children_count;
- result = new ArrayList<ParsableXML>();
-
architectures =
(NodeList) XPE_FIND_ARCHITECTURES.evaluate
(
@@ -137,9 +128,10 @@ public class VHDLFile extends ParsableXML
for (int i = 0; i < children_count; ++i)
{
- result.add(new VHDLArchitecture(local_id, architectures.item(i)));
+ waiting_list.push
+ (
+ new VHDLArchitecture(local_id, architectures.item(i))
+ );
}
-
- return result;
}
}