From 63551aff281f1d289605fe2c9975a15124dbe643 Mon Sep 17 00:00:00 2001 From: bd-912 Date: Sat, 20 Apr 2024 00:23:21 -0600 Subject: Fun with GraphViz --- vaporize/library/CFGSimp.java | 45 +++++++++++++++++++++++++--------- vaporize/library/ControlFlowGraph.java | 13 +++++++--- 2 files changed, 42 insertions(+), 16 deletions(-) (limited to 'vaporize') diff --git a/vaporize/library/CFGSimp.java b/vaporize/library/CFGSimp.java index 9f2556d..f4d63cf 100644 --- a/vaporize/library/CFGSimp.java +++ b/vaporize/library/CFGSimp.java @@ -1,8 +1,10 @@ package vaporize.library; import cs132.vapor.ast.*; -import st.*; +import graphviz.*; import misc.*; + +import java.io.File; import java.util.*; public class CFGSimp extends VInstr.VisitorPR { @@ -11,6 +13,7 @@ public class CFGSimp extends VInstr.VisitorPR cfgs; private CFGNode curr; + private String dot_format; // a list of edges to be processed by graphviz public CFGSimp(VaporProgram vp, ArrayList vapor) { this.vp = vp; @@ -21,6 +24,7 @@ public class CFGSimp extends VInstr.VisitorPR%s (\"%s\":%s)", n.getClass().getSimpleName(), @@ -61,7 +82,7 @@ public class CFGSimp extends VInstr.VisitorPR %s", - source.getInstruction().sourcePos.line, - dest.getInstruction().sourcePos.line)); + protected String addEdge(CFGNode source, CFGNode dest) { + String ret = String.format("%d -> %d", + source.getInstruction().sourcePos.line, + dest.getInstruction().sourcePos.line); + MinimalLogger.info(String.format("Edge %s", + ret)); + source.addDest(dest); dest.addSource(source); + + return ret +";"; } protected void setStart(CFGNode start) { -- cgit v1.2.3