From c5caca06e411066828cec2a6008c126d64ffabb6 Mon Sep 17 00:00:00 2001 From: Nathanael Sensfelder Date: Mon, 17 Jul 2017 16:16:27 +0200 Subject: First shot at cfg-to-paths. --- cfg-to-paths/src/ControlFlow.java | 2 +- cfg-to-paths/src/Main.java | 58 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 59 insertions(+), 1 deletion(-) (limited to 'cfg-to-paths') 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 all_paths; final Collection> 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 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 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"); + } } } -- cgit v1.2.3-70-g09d2