summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNathanael Sensfelder <SpamShield0@MultiAgentSystems.org>2017-07-17 16:16:27 +0200
committerNathanael Sensfelder <SpamShield0@MultiAgentSystems.org>2017-07-17 16:16:27 +0200
commitc5caca06e411066828cec2a6008c126d64ffabb6 (patch)
tree0ec591283648f273dbb5ef1b5e47303385c21a01
parent580018e419c1c0d6cdc4f47103be2d7c1aad1eb7 (diff)
First shot at cfg-to-paths.
-rw-r--r--cfg-to-paths/src/ControlFlow.java2
-rw-r--r--cfg-to-paths/src/Main.java58
2 files changed, 59 insertions, 1 deletions
diff --git a/cfg-to-paths/src/ControlFlow.java b/cfg-to-paths/src/ControlFlow.java
index a0863d8..bca72d5 100644
--- a/cfg-to-paths/src/ControlFlow.java
+++ b/cfg-to-paths/src/ControlFlow.java
@@ -51,7 +51,7 @@ public class ControlFlow
{
success = handle_add_element(input);
}
- else if (input[0].equals("connect_to"))
+ else if (input[0].equals("node_connect"))
{
success = handle_add_connect_to(input);
}
diff --git a/cfg-to-paths/src/Main.java b/cfg-to-paths/src/Main.java
index f81b22f..f49a357 100644
--- a/cfg-to-paths/src/Main.java
+++ b/cfg-to-paths/src/Main.java
@@ -1,12 +1,16 @@
/* FIXME: Finer imports */
import java.util.*;
+import java.io.*;
+
public class Main
{
private static Parameters PARAMETERS;
+ private static int path_counter = 0;
public static void main (final String... args)
{
+ final FileWriter output;
final Collection<Path> all_paths;
final Collection<List<Node>> all_subpaths;
@@ -43,5 +47,59 @@ public class Main
{
all_subpaths.addAll(p.get_all_subpaths());
}
+
+ try
+ {
+ output = new FileWriter(PARAMETERS.get_output_file());
+
+ for (final List<Node> tuple: all_subpaths)
+ {
+ node_tuple_to_predicates(tuple, output);
+ }
+
+ output.close();
+ }
+ catch (final Exception e)
+ {
+ System.err.println
+ (
+ "[E] Could not write to output file \""
+ + PARAMETERS.get_model_file()
+ + "\":"
+ );
+
+ e.printStackTrace();
+
+ return;
+ }
+ }
+
+ private static void node_tuple_to_predicates
+ (
+ final List<Node> tuple,
+ final FileWriter out
+ )
+ throws IOException
+ {
+ final String id;
+ final int tuple_size;
+
+ tuple_size = tuple.size();
+
+ if (tuple_size == 1)
+ {
+ return;
+ }
+
+ id = (PARAMETERS.get_id_prefix() + path_counter);
+ path_counter += 1;
+
+ out.write("(add_element path " + id + ")\n");
+ out.write("(is_path_of " + id + " " + tuple.get(0) + ")\n");
+
+ for (int i = 1; i < tuple_size; ++i)
+ {
+ out.write("(contains_node " + id + " " + tuple.get(i) + ")\n");
+ }
}
}