| summaryrefslogtreecommitdiff |
diff options
| author | Nathanael Sensfelder <SpamShield0@MultiAgentSystems.org> | 2017-07-17 10:13:31 +0200 |
|---|---|---|
| committer | Nathanael Sensfelder <SpamShield0@MultiAgentSystems.org> | 2017-07-17 10:13:31 +0200 |
| commit | 3e019d57fab57afe7aad373385f32a23bd178941 (patch) | |
| tree | c11e3440e4f199c8da54e649f01f9598df87e46b /instr-to-kodkod/src/VHDLLevel.java | |
Initial commit.
Diffstat (limited to 'instr-to-kodkod/src/VHDLLevel.java')
| -rw-r--r-- | instr-to-kodkod/src/VHDLLevel.java | 157 |
1 files changed, 157 insertions, 0 deletions
diff --git a/instr-to-kodkod/src/VHDLLevel.java b/instr-to-kodkod/src/VHDLLevel.java new file mode 100644 index 0000000..738adaf --- /dev/null +++ b/instr-to-kodkod/src/VHDLLevel.java @@ -0,0 +1,157 @@ +/* FIXME: Finer imports */ +import java.util.*; + +import java.io.*; + +public class VHDLLevel +{ + /* Utility Class */ + private VHDLLevel () {} + + public static boolean add_to_model + ( + final VHDLModel m, + final String filename + ) + throws FileNotFoundException + { + final QuickParser qp; + String[] input; + boolean success; + + qp = new QuickParser(filename); + + for (;;) + { + try + { + input = qp.parse_line(); + + if (input == null) + { + qp.finalize(); + + return false; + } + else if (input.length == 0) + { + qp.finalize(); + + break; + } + } + catch (final IOException e) + { + System.err.println + ( + "[E] IO error while parsing file \"" + + filename + + "\":" + /* FIXME: can be null */ + + e.getMessage() + ); + + return false; + } + + if (input[0].equals("add_type")) + { + success = handle_add_type(input, m); + } + else if (input[0].equals("add_predicate")) + { + success = handle_add_predicate(input, m); + } + else + { + System.err.println + ( + "[E] Unknown instruction type \"" + + input[0] + + "\" in file \"" + + filename + + "\"." + ); + + return false; + } + + if (!success) + { + System.err.println + ( + "[E] An erroneous instruction was found in file \"" + + filename + + "\"." + ); + + try + { + qp.finalize(); + } + catch (final Exception e) + { + System.err.println("[E] Additionally:"); + e.printStackTrace(); + } + + return false; + } + } + + return true; + } + + private static boolean handle_add_type + ( + final String[] cmd, + final VHDLModel m + ) + { + if (cmd.length != 2) + { + System.err.println + ( + "[E] Badly formed \"add_type\" instruction: \"" + + String.join(" ", cmd) + + "\"." + ); + + return false; + } + + m.add_type(cmd[1]); + + return true; + } + + private static boolean handle_add_predicate + ( + final String[] cmd, + final VHDLModel m + ) + { + final String[] signature; + + if (cmd.length < 2) + { + System.err.println + ( + "[E] Badly formed \"add_predicate\" instruction: \"" + + String.join(" ", cmd) + + "\"." + ); + + return false; + } + + signature = new String[cmd.length - 2]; + + for (int i = 2; i < cmd.length; ++i) + { + signature[i - 2] = cmd[i]; + } + + return m.add_predicate(cmd[1], signature); + } +} |


