Skip to content

Commit

Permalink
Fix regex generation
Browse files Browse the repository at this point in the history
  • Loading branch information
colder committed Jun 29, 2012
1 parent f9aab9b commit 58fc61a
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 8 deletions.
11 changes: 9 additions & 2 deletions src/insane/alias/EffectRepresentations.scala
Expand Up @@ -149,12 +149,13 @@ trait EffectRepresentations extends PointToGraphsDefs with PointToEnvs {
}
}

var finals = Set[State[S]]();
val finalState = newState()
val finals = Set[State[S]](finalState);

val transitions = env.ptGraph.E.collect {
case IEdge(v1, l, v2) =>
finals += nToS(nodeToID(v2))
Transition(nToS(nodeToID(v1)), Label(WrappedSymbol(l.sym): AbsWrappedSymbol), nToS(nodeToID(v2)))
Transition(nToS(nodeToID(v1)), Label(WrappedSymbol(l.sym): AbsWrappedSymbol), finalState)
case OEdge(v1, l, v2) =>
Transition(nToS(nodeToID(v1)), Label(WrappedSymbol(l.sym): AbsWrappedSymbol), nToS(nodeToID(v2)))
}
Expand All @@ -179,9 +180,15 @@ trait EffectRepresentations extends PointToGraphsDefs with PointToEnvs {
import utils.RegularExpressions._

def getRegex(): Regex[AbsWrappedSymbol] = {
//val cnt = GlobalCounters.getDebugCounter

//dumpPTE(env, "env-"+cnt+".dot")
val nfa = new NFAEffectRepresentation(env).getNFA
//dumpFA(nfa, "nfa-"+cnt+".dot")
val dfa = nfa.determinize
//dumpFA(dfa, "dfa-"+cnt+".dot")
val mdfa = dfa.minimize
//dumpFA(mdfa, "mdfa-"+cnt+".dot")
RegexHelpers.nfaToRegex(mdfa)
}

Expand Down
14 changes: 8 additions & 6 deletions src/insane/alias/PointToAnalysis.scala
Expand Up @@ -1761,12 +1761,12 @@ trait PointToAnalysis extends PointToGraphsDefs with PointToEnvs with PointToLat
}
} else {
reporter.msg(" Result is a CFG! Remaining method calls:");
withDebugCounter { cnt =>
dumpCFG(result, "result-"+cnt+".dot")
}
for (aam <- result.graph.E.collect { case CFGEdge(_, aam: CFGTrees.AssignApplyMeth, _) => aam }) {
reporter.msg(" -> "+aam)
}
withDebugCounter { cnt =>
dumpCFG(result, "result-"+cnt+".dot")
}
}
reporter.msg("... continuing analyzing "+analysisStack.top.cfg.symbol.fullName)

Expand Down Expand Up @@ -2128,11 +2128,13 @@ trait PointToAnalysis extends PointToGraphsDefs with PointToEnvs with PointToLat

val columns = Seq(TableColumn("Function Name", Some(80)),
TableColumn("Signature", Some(40)),
TableColumn("Effect", Some(80)))
TableColumn("Effect", Some(200)))

val table = new Table(columns)

for ((s, fun) <- allFunctions if settings.displayPure(safeFullName(s))) {
var toDump = allFunctions.values.collect { case f: AbsFunction if settings.displayPure(safeFullName(f.symbol)) => (f.symbol, f) }

for ((s, fun) <- toDump.toSeq.sortBy(x => safeFullName(x._1))) {
if (!fun.flatPTCFGs.isEmpty) {
for(((sig, res), i) <- fun.flatPTCFGs.zipWithIndex) {
val effect = res.getFlatEffect
Expand All @@ -2157,7 +2159,7 @@ trait PointToAnalysis extends PointToGraphsDefs with PointToEnvs with PointToLat
val preciseCFGs = fun.ptCFGs.filter { case (_, (cfg, isAnalyzed)) => !cfg.isFlat && isAnalyzed }

for((sig, (res, _)) <- preciseCFGs) {
val callsRemaining = res.graph.E.collect { case CFGEdge(_, aam: CFG.AssignApplyMeth, _) => "_."+aam.meth.name.toString+"()" }
val callsRemaining = res.graph.E.collect { case CFGEdge(_, aam: CFG.AssignApplyMeth, _) => aam.meth.fullName.split("\\.").takeRight(2).mkString(".")+"()" }
table.addRow(TableRow() | fun.symbol.fullName | sig.toString | "Calls "+callsRemaining.mkString(", ") )
}
}
Expand Down

0 comments on commit 58fc61a

Please sign in to comment.