From 878705688b42837b615067f0a479f31614910f38 Mon Sep 17 00:00:00 2001 From: Nathanael Sensfelder Date: Fri, 21 Jul 2017 11:06:12 +0200 Subject: Optimization pass. --- ast-to-instr/src/VHDLFile.java | 44 +++++++++++++++++------------------------- 1 file changed, 18 insertions(+), 26 deletions(-) (limited to 'ast-to-instr/src/VHDLFile.java') 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 parse () + public void parse + ( + final Stack waiting_list + ) throws XPathExpressionException { - final Collection result; final String xml_id; final IDs local_id; - result = new ArrayList(); - 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 handle_child_entities + private void handle_child_entities ( - final IDs local_id + final IDs local_id, + final Stack waiting_list ) throws XPathExpressionException { - final Collection result; final NodeList entities; final int children_count; - result = new ArrayList(); - 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 handle_child_architectures + private void handle_child_architectures ( - final IDs local_id + final IDs local_id, + final Stack waiting_list ) throws XPathExpressionException { - final Collection result; final NodeList architectures; final int children_count; - result = new ArrayList(); - 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; } } -- cgit v1.2.3-70-g09d2