| 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) + ) + ); + } + } } } |


