Loading src/main/java/tfm/programs/pdg/Example1.java +2 −2 Original line number Diff line number Diff line Loading @@ -14,8 +14,8 @@ public class Example1 { while (x < y) { y = x; for(int i : Arrays.asList(1, 2, 3, 4,5 )) { y += x; for(int i=0; i < y; i++) { y += i; if (x > y) continue; x = y; Loading src/main/java/tfm/visitors/CFGVisitor.java +12 −11 Original line number Diff line number Diff line Loading @@ -10,6 +10,7 @@ import tfm.nodes.CFGNode; import tfm.utils.Utils; import java.util.*; import java.util.stream.Collectors; public class CFGVisitor extends VoidVisitorAdapter<Void> { Loading Loading @@ -120,20 +121,20 @@ public class CFGVisitor extends VoidVisitorAdapter<Void> { @Override public void visit(ForStmt forStmt, Void arg) { // String inizialization = forStmt.getInitialization().stream() // .map(Node::toString) // .collect(Collectors.joining(",")); // // String update = forStmt.getUpdate().stream() // .map(Node::toString) // .collect(Collectors.joining(",")); String inizialization = forStmt.getInitialization().stream() .map(Node::toString) .collect(Collectors.joining(",")); Expression comparison = forStmt.getCompare().orElse(new BooleanLiteralExpr(true)); String update = forStmt.getUpdate().stream() .map(Node::toString) .collect(Collectors.joining(",")); forStmt.getInitialization().forEach(expression -> new ExpressionStmt(expression).accept(this, null)); Expression comparison = forStmt.getCompare().orElse(new BooleanLiteralExpr(true)); // // forStmt.getInitialization().forEach(expression -> new ExpressionStmt(expression).accept(this, null)); CFGNode forNode = addNodeAndArcs( String.format("for (;%s;)", comparison), String.format("for (%s;%s;%s)", inizialization, comparison, update), forStmt ); Loading @@ -141,7 +142,7 @@ public class CFGVisitor extends VoidVisitorAdapter<Void> { BlockStmt body = Utils.blockWrapper(forStmt.getBody()); forStmt.getUpdate().forEach(body::addStatement); // forStmt.getUpdate().forEach(body::addStatement); body.accept(this, arg); Loading Loading
src/main/java/tfm/programs/pdg/Example1.java +2 −2 Original line number Diff line number Diff line Loading @@ -14,8 +14,8 @@ public class Example1 { while (x < y) { y = x; for(int i : Arrays.asList(1, 2, 3, 4,5 )) { y += x; for(int i=0; i < y; i++) { y += i; if (x > y) continue; x = y; Loading
src/main/java/tfm/visitors/CFGVisitor.java +12 −11 Original line number Diff line number Diff line Loading @@ -10,6 +10,7 @@ import tfm.nodes.CFGNode; import tfm.utils.Utils; import java.util.*; import java.util.stream.Collectors; public class CFGVisitor extends VoidVisitorAdapter<Void> { Loading Loading @@ -120,20 +121,20 @@ public class CFGVisitor extends VoidVisitorAdapter<Void> { @Override public void visit(ForStmt forStmt, Void arg) { // String inizialization = forStmt.getInitialization().stream() // .map(Node::toString) // .collect(Collectors.joining(",")); // // String update = forStmt.getUpdate().stream() // .map(Node::toString) // .collect(Collectors.joining(",")); String inizialization = forStmt.getInitialization().stream() .map(Node::toString) .collect(Collectors.joining(",")); Expression comparison = forStmt.getCompare().orElse(new BooleanLiteralExpr(true)); String update = forStmt.getUpdate().stream() .map(Node::toString) .collect(Collectors.joining(",")); forStmt.getInitialization().forEach(expression -> new ExpressionStmt(expression).accept(this, null)); Expression comparison = forStmt.getCompare().orElse(new BooleanLiteralExpr(true)); // // forStmt.getInitialization().forEach(expression -> new ExpressionStmt(expression).accept(this, null)); CFGNode forNode = addNodeAndArcs( String.format("for (;%s;)", comparison), String.format("for (%s;%s;%s)", inizialization, comparison, update), forStmt ); Loading @@ -141,7 +142,7 @@ public class CFGVisitor extends VoidVisitorAdapter<Void> { BlockStmt body = Utils.blockWrapper(forStmt.getBody()); forStmt.getUpdate().forEach(body::addStatement); // forStmt.getUpdate().forEach(body::addStatement); body.accept(this, arg); Loading