| summaryrefslogtreecommitdiff | 
diff options
| author | Nathanael Sensfelder <SpamShield0@MultiAgentSystems.org> | 2017-07-20 18:07:47 +0200 | 
|---|---|---|
| committer | Nathanael Sensfelder <SpamShield0@MultiAgentSystems.org> | 2017-07-20 18:07:47 +0200 | 
| commit | 45b091f8a44c422d89f9d3bcaf25e5df91da31a7 (patch) | |
| tree | aaa809eed731bbc4650dbfb7cfde8076d6f047a0 /ast-to-instr/src/VHDLWNode.java | |
| parent | 72b3069a20b8573ceff73b27936a76213aacc344 (diff) | |
Fixes stupid mistakes, adds some nodes.
Diffstat (limited to 'ast-to-instr/src/VHDLWNode.java')
| -rw-r--r-- | ast-to-instr/src/VHDLWNode.java | 139 | 
1 files changed, 136 insertions, 3 deletions
| diff --git a/ast-to-instr/src/VHDLWNode.java b/ast-to-instr/src/VHDLWNode.java index de11c7b..ac23be8 100644 --- a/ast-to-instr/src/VHDLWNode.java +++ b/ast-to-instr/src/VHDLWNode.java @@ -9,7 +9,7 @@ import java.util.ArrayList;  import java.util.Collection;  /* If Statement Node */ -public class VHDLISNode extends VHDLNode +public class VHDLWNode extends VHDLNode  {     private static final XPathExpression XPE_FIND_SUB_NODES; @@ -18,7 +18,7 @@ public class VHDLISNode extends VHDLNode        XPE_FIND_SUB_NODES = XMLManager.compile_or_die("./el");     } -   public VHDLISNode +   public VHDLWNode     (        final IDs parent_id,        final Node xml_node, @@ -41,7 +41,140 @@ public class VHDLISNode extends VHDLNode     public Collection<ParsableXML> parse ()     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"); + +      /** Functions ***********************************************************/ +      handle_function_label(local_id); +      handle_function_kind(local_id); +      handle_function_depth(local_id); +      handle_function_expression(local_id); + +      /** Predicates **********************************************************/ +      handle_predicate_has_option(local_id); +      handle_predicate_expr_reads(local_id); + +      return result; +   } + +   /***************************************************************************/ +   /** Functions **************************************************************/ +   /***************************************************************************/ +   private void handle_function_label +   ( +      final IDs local_id +   ) +   { +      Functions.add_entry +      ( +         "label", +         local_id, +         Strings.get_id_from_string +         ( +            XMLManager.get_attribute(xml_node, "label") +         ) +      ); +   } + +   private void handle_function_kind +   ( +      final IDs local_id +   ) +   { +      Functions.add_entry +      ( +         "kind", +         local_id, +         Strings.get_id_from_string("when") +      ); +   } + +   private void handle_function_depth +   ( +      final IDs local_id +   ) +   { +      Functions.add_entry +      ( +         "depth", +         local_id, +         Strings.get_id_from_string +         ( +            Integer.toString(depth) +         ) +      ); +   } + +   private void handle_function_expression +   ( +      final IDs local_id +   ) +   {        /* TODO */ -      return null; +   } + +   /***************************************************************************/ +   /** Predicates *************************************************************/ +   /***************************************************************************/ +   private void handle_predicate_has_option +   ( +      final IDs local_id +   ) +   { +      for (final String s: attributes) +      { +         Predicates.add_entry +         ( +            "has_option", +            local_id, +            Strings.get_id_from_string(s) +         ); +      } +   } + +   private void handle_predicate_expr_reads +   ( +      final IDs local_id +   ) +   throws XPathExpressionException +   { +      final NodeList named_entities; +      final int named_entities_count; + +      named_entities = +         (NodeList) XPE_FIND_SOURCES.evaluate +         ( +            xml_node, +            XPathConstants.NODESET +         ); + +      named_entities_count = named_entities.getLength(); + +      for (int i = 0; i < named_entities_count; ++i) +      { +         final String ref; + +         ref = XMLManager.get_attribute(named_entities.item(0), "ref"); + +         if (!Main.node_is_function_or_literal(ref)) +         { +            Predicates.add_entry +            ( +               "expr_reads", +               local_id, +               Waveforms.get_associated_waveform_id +               ( +                  IDs.get_id_from_xml_id(ref, (String) null) +               ) +            ); +         } +      }     }  } | 


