| summaryrefslogtreecommitdiff |
diff options
| author | Nathanael Sensfelder <SpamShield0@MultiAgentSystems.org> | 2018-05-25 19:49:26 +0200 |
|---|---|---|
| committer | Nathanael Sensfelder <SpamShield0@MultiAgentSystems.org> | 2018-05-25 19:49:26 +0200 |
| commit | 9b7c8cd0088f06d09bc723d4a6eaddf07da31521 (patch) | |
| tree | a100c08002e032c2808d2d944e49d66e8732b5ec | |
| parent | ce631dbbec6ffa518dd2e3511a77ec4fecb836d7 (diff) | |
IDP structure and vocabulary support jokers.
| -rw-r--r-- | src/hastabel2idp/IDP.java | 214 |
1 files changed, 147 insertions, 67 deletions
diff --git a/src/hastabel2idp/IDP.java b/src/hastabel2idp/IDP.java index 3e00b64..641d65f 100644 --- a/src/hastabel2idp/IDP.java +++ b/src/hastabel2idp/IDP.java @@ -7,7 +7,6 @@ import hastabel.lang.Type; import hastabel.lang.Element; import java.util.Collection; -import java.util.Set; import java.util.List; public class IDP @@ -63,12 +62,26 @@ public class IDP { if (predicate.is_used()) { - final Set<List<Type>> relevant_signatures; + final Collection<List<Type>> relevant_signatures, partial_signatures; relevant_signatures = predicate.get_relevant_signatures(); - - add_predicate_to_vocabulary(vocabulary, predicate, relevant_signatures); - add_predicate_to_structure(structure, predicate, relevant_signatures); + partial_signatures = predicate.get_partial_signatures(); + + add_predicate_to_vocabulary + ( + vocabulary, + predicate, + relevant_signatures, + partial_signatures + ); + + add_predicate_to_structure + ( + structure, + predicate, + relevant_signatures, + partial_signatures + ); } } @@ -130,102 +143,169 @@ public class IDP structure.insert_newline(); } - private static void add_predicate_to_vocabulary + private static void add_predicate_signature_to_vocabulary ( final OutputFile vocabulary, final Predicate predicate, - final Set<List<Type>> relevant_signatures + final List<Type> signature ) { - for (final List<Type> signature: relevant_signatures) - { - boolean is_first; + boolean is_first; - is_first = true; + is_first = true; - vocabulary.write(" "); - vocabulary.write(predicate.get_name()); - vocabulary.write(signature_to_suffix(signature)); - vocabulary.write("("); + vocabulary.write(" "); + vocabulary.write(predicate.get_name()); + vocabulary.write(signature_to_suffix(signature)); + vocabulary.write("("); - for (final Type sig_type:signature) + for (final Type sig_type: signature) + { + if (sig_type == null) { - if (is_first) - { - is_first = false; - } - else - { - vocabulary.write(", "); - } + continue; + } - vocabulary.write(sig_type.get_name()); + if (is_first) + { + is_first = false; + } + else + { + vocabulary.write(", "); } - vocabulary.write(")"); - vocabulary.insert_newline(); + vocabulary.write(sig_type.get_name()); } + + vocabulary.write(")"); + vocabulary.insert_newline(); } - private static void add_predicate_to_structure + private static void add_predicate_to_vocabulary ( - final OutputFile structure, + final OutputFile vocabulary, final Predicate predicate, - final Set<List<Type>> relevant_signatures + final Collection<List<Type>> relevant_signatures, + final Collection<List<Type>> partial_signatures ) { for (final List<Type> signature: relevant_signatures) { - boolean is_first_member; + add_predicate_signature_to_vocabulary + ( + vocabulary, + predicate, + signature + ); + } + + for (final List<Type> signature: partial_signatures) + { + add_predicate_signature_to_vocabulary + ( + vocabulary, + predicate, + signature + ); + } + } + + private static void add_predicate_signature_to_structure + ( + final OutputFile structure, + final Predicate predicate, + final List<Type> signature, + final boolean is_partial + ) + { + boolean is_first_member; + final Collection<List<Element>> relevant_members; - structure.write(" "); - structure.write(predicate.get_name()); - structure.write(signature_to_suffix(signature)); - structure.write("={"); - structure.insert_newline(); + structure.write(" "); + structure.write(predicate.get_name()); + structure.write(signature_to_suffix(signature)); + structure.write("={"); + structure.insert_newline(); - is_first_member = true; + is_first_member = true; - for - ( - final List<Element> member: - predicate.get_relevant_members(signature) - ) - { - boolean is_first_member_param; + if (is_partial) + { + relevant_members = predicate.get_relevant_partial_members(signature); + } + else + { + relevant_members = predicate.get_relevant_members(signature); + } + + for (final List<Element> member: relevant_members) + { + boolean is_first_member_param; - is_first_member_param = true; + is_first_member_param = true; - if (is_first_member) + if (is_first_member) + { + is_first_member = false; + structure.write(" "); + } + else + { + structure.write(";"); + structure.insert_newline(); + structure.write(" "); + } + + for (final Element member_param: member) + { + if (is_first_member_param) { - is_first_member = false; - structure.write(" "); + is_first_member_param = false; } else { - structure.write(";"); - structure.insert_newline(); - structure.write(" "); + structure.write(", "); } - for (final Element member_param: member) - { - if (is_first_member_param) - { - is_first_member_param = false; - } - else - { - structure.write(", "); - } - - structure.write(member_param.get_name()); - } + structure.write(member_param.get_name()); } + } + + structure.insert_newline(); + structure.write(" }"); + structure.insert_newline(); + + } + + private static void add_predicate_to_structure + ( + final OutputFile structure, + final Predicate predicate, + final Collection<List<Type>> relevant_signatures, + final Collection<List<Type>> partial_signatures + ) + { + for (final List<Type> signature: relevant_signatures) + { + add_predicate_signature_to_structure + ( + structure, + predicate, + signature, + false + ); + } - structure.insert_newline(); - structure.write(" }"); - structure.insert_newline(); + for (final List<Type> signature: partial_signatures) + { + add_predicate_signature_to_structure + ( + structure, + predicate, + signature, + true + ); } } |


