Package de.breakpointsec.pushdown
Class WPDS<L,S,W extends Semiring>
- java.lang.Object
-
- de.breakpointsec.pushdown.WPDS<L,S,W>
-
-
Constructor Summary
Constructors Constructor Description WPDS()
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Deprecated Methods Modifier and Type Method Description booleanaddRule(Rule<L,S,W> rule)abstract Lepsilon()Set<Rule<L,S,W>>getAllRules()Set<NormalRule<L,S,W>>getNormalRules()Set<NormalRule<L,S,W>>getNormalRulesEnding(S start, L string)Set<PopRule<L,S,W>>getPopRules()Set<PushRule<L,S,W>>getPushRules()Set<PushRule<L,S,W>>getPushRulesEnding(S start, L string)Set<Rule<L,S,W>>getRulesStarting(S start, L string)Deprecated.Set<S>getStates()Deprecated.voidpoststar(WeightedAutomaton<L,S,W> fa)Implementation of post*, according to Reps, T., Schwoon, S., Jha, S., & Melski, D.WeightedAutomaton<L,S,W>prestar(WeightedAutomaton<L,S,W> fa)pre*-saturation algorithm returns a finite automaton representing the backwards reachable set of the configuration represented by the initial automaton.StringtoString()protected booleanupdatePostStar(Transition<L,S> t, W w, Rule rule, WeightedAutomaton<L,S,W> fa, LinkedList<Transition<L,S>> worklist)protected voidupdatePrestar(LinkedList<Transition<L,S>> worklist, Transition<L,S> t, W w, WeightedAutomaton<L,S,W> fa)Add transitiontransto fa, assign a weight to it that is computed of the rule'sweightwith that of theprevioustransitions.
-
-
-
Method Detail
-
getNormalRules
public Set<NormalRule<L,S,W>> getNormalRules()
-
getRulesStarting
@Deprecated public Set<Rule<L,S,W>> getRulesStarting(S start, L string)
Deprecated.
-
getStates
@Deprecated public Set<S> getStates()
Deprecated.
-
updatePostStar
protected boolean updatePostStar(Transition<L,S> t, W w, Rule rule, WeightedAutomaton<L,S,W> fa, LinkedList<Transition<L,S>> worklist) throws IllegalTransitionException
- Throws:
IllegalTransitionException
-
poststar
public void poststar(WeightedAutomaton<L,S,W> fa) throws IllegalTransitionException
Implementation of post*, according to Reps, T., Schwoon, S., Jha, S., & Melski, D. (2005). Weighted pushdown systems and their application to interprocedural dataflow analysis. In Science of Computer Programming. https://doi.org/10.1016/j.scico.2005.02.009 Algorithm 3, Figure 17- Parameters:
fa- initial P-automaton- Throws:
IllegalTransitionException
-
prestar
public WeightedAutomaton<L,S,W> prestar(WeightedAutomaton<L,S,W> fa) throws IllegalTransitionException
pre*-saturation algorithm returns a finite automaton representing the backwards reachable set of the configuration represented by the initial automaton. Implementation according to Reps, T., Lal, A., & Kidd, N. (2007). Program Analysis Using Weighted Pushdown Systems, 23–51. https://doi.org/10.1007/978-3-540-77050-3_4 Algorithm 1 (Figure 9).- Parameters:
fa- initial P-automaton- Returns:
- Throws:
IllegalTransitionException
-
updatePrestar
protected void updatePrestar(LinkedList<Transition<L,S>> worklist, Transition<L,S> t, W w, WeightedAutomaton<L,S,W> fa) throws IllegalTransitionException
Add transitiontransto fa, assign a weight to it that is computed of the rule'sweightwith that of theprevioustransitions.- Parameters:
worklist-t-w-fa-- Throws:
IllegalTransitionException
-
epsilon
public abstract L epsilon()
-
-