| summaryrefslogtreecommitdiff | 
diff options
Diffstat (limited to 'ast-to-instr/src/VHDLFile.java')
| -rw-r--r-- | ast-to-instr/src/VHDLFile.java | 44 | 
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;     }  } | 


