Package it.unive.lisa.analysis.dataflow
Class AvailableExpressions
- java.lang.Object
-
- it.unive.lisa.analysis.dataflow.AvailableExpressions
-
- All Implemented Interfaces:
it.unive.lisa.analysis.dataflow.DataflowElement<it.unive.lisa.analysis.dataflow.DefiniteForwardDataflowDomain<AvailableExpressions>,AvailableExpressions>,it.unive.lisa.analysis.SemanticEvaluator
public class AvailableExpressions extends java.lang.Object implements it.unive.lisa.analysis.dataflow.DataflowElement<it.unive.lisa.analysis.dataflow.DefiniteForwardDataflowDomain<AvailableExpressions>,AvailableExpressions>
An implementation of the available expressions dataflow analysis, that focuses only on the expressions that are stored into some variable.
-
-
Constructor Summary
Constructors Constructor Description AvailableExpressions()Builds an empty available expressions object.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description booleancanProcess(it.unive.lisa.symbolic.SymbolicExpression expression)booleanequals(java.lang.Object obj)java.util.Collection<AvailableExpressions>gen(it.unive.lisa.symbolic.value.Identifier id, it.unive.lisa.symbolic.value.ValueExpression expression, it.unive.lisa.program.cfg.ProgramPoint pp, it.unive.lisa.analysis.dataflow.DefiniteForwardDataflowDomain<AvailableExpressions> domain)java.util.Collection<AvailableExpressions>gen(it.unive.lisa.symbolic.value.ValueExpression expression, it.unive.lisa.program.cfg.ProgramPoint pp, it.unive.lisa.analysis.dataflow.DefiniteForwardDataflowDomain<AvailableExpressions> domain)java.util.Collection<it.unive.lisa.symbolic.value.Identifier>getInvolvedIdentifiers()inthashCode()java.util.Collection<AvailableExpressions>kill(it.unive.lisa.symbolic.value.Identifier id, it.unive.lisa.symbolic.value.ValueExpression expression, it.unive.lisa.program.cfg.ProgramPoint pp, it.unive.lisa.analysis.dataflow.DefiniteForwardDataflowDomain<AvailableExpressions> domain)java.util.Collection<AvailableExpressions>kill(it.unive.lisa.symbolic.value.ValueExpression expression, it.unive.lisa.program.cfg.ProgramPoint pp, it.unive.lisa.analysis.dataflow.DefiniteForwardDataflowDomain<AvailableExpressions> domain)AvailableExpressionspopScope(it.unive.lisa.analysis.ScopeToken scope)AvailableExpressionspushScope(it.unive.lisa.analysis.ScopeToken scope)it.unive.lisa.analysis.representation.DomainRepresentationrepresentation()java.lang.StringtoString()booleantracksIdentifiers(it.unive.lisa.symbolic.value.Identifier id)
-
-
-
Method Detail
-
toString
public java.lang.String toString()
- Overrides:
toStringin classjava.lang.Object
-
getInvolvedIdentifiers
public java.util.Collection<it.unive.lisa.symbolic.value.Identifier> getInvolvedIdentifiers()
- Specified by:
getInvolvedIdentifiersin interfaceit.unive.lisa.analysis.dataflow.DataflowElement<it.unive.lisa.analysis.dataflow.DefiniteForwardDataflowDomain<AvailableExpressions>,AvailableExpressions>
-
gen
public java.util.Collection<AvailableExpressions> gen(it.unive.lisa.symbolic.value.Identifier id, it.unive.lisa.symbolic.value.ValueExpression expression, it.unive.lisa.program.cfg.ProgramPoint pp, it.unive.lisa.analysis.dataflow.DefiniteForwardDataflowDomain<AvailableExpressions> domain)
- Specified by:
genin interfaceit.unive.lisa.analysis.dataflow.DataflowElement<it.unive.lisa.analysis.dataflow.DefiniteForwardDataflowDomain<AvailableExpressions>,AvailableExpressions>
-
gen
public java.util.Collection<AvailableExpressions> gen(it.unive.lisa.symbolic.value.ValueExpression expression, it.unive.lisa.program.cfg.ProgramPoint pp, it.unive.lisa.analysis.dataflow.DefiniteForwardDataflowDomain<AvailableExpressions> domain)
- Specified by:
genin interfaceit.unive.lisa.analysis.dataflow.DataflowElement<it.unive.lisa.analysis.dataflow.DefiniteForwardDataflowDomain<AvailableExpressions>,AvailableExpressions>
-
kill
public java.util.Collection<AvailableExpressions> kill(it.unive.lisa.symbolic.value.Identifier id, it.unive.lisa.symbolic.value.ValueExpression expression, it.unive.lisa.program.cfg.ProgramPoint pp, it.unive.lisa.analysis.dataflow.DefiniteForwardDataflowDomain<AvailableExpressions> domain)
- Specified by:
killin interfaceit.unive.lisa.analysis.dataflow.DataflowElement<it.unive.lisa.analysis.dataflow.DefiniteForwardDataflowDomain<AvailableExpressions>,AvailableExpressions>
-
kill
public java.util.Collection<AvailableExpressions> kill(it.unive.lisa.symbolic.value.ValueExpression expression, it.unive.lisa.program.cfg.ProgramPoint pp, it.unive.lisa.analysis.dataflow.DefiniteForwardDataflowDomain<AvailableExpressions> domain)
- Specified by:
killin interfaceit.unive.lisa.analysis.dataflow.DataflowElement<it.unive.lisa.analysis.dataflow.DefiniteForwardDataflowDomain<AvailableExpressions>,AvailableExpressions>
-
hashCode
public int hashCode()
- Overrides:
hashCodein classjava.lang.Object
-
equals
public boolean equals(java.lang.Object obj)
- Overrides:
equalsin classjava.lang.Object
-
tracksIdentifiers
public boolean tracksIdentifiers(it.unive.lisa.symbolic.value.Identifier id)
- Specified by:
tracksIdentifiersin interfaceit.unive.lisa.analysis.SemanticEvaluator
-
canProcess
public boolean canProcess(it.unive.lisa.symbolic.SymbolicExpression expression)
- Specified by:
canProcessin interfaceit.unive.lisa.analysis.SemanticEvaluator
-
representation
public it.unive.lisa.analysis.representation.DomainRepresentation representation()
- Specified by:
representationin interfaceit.unive.lisa.analysis.dataflow.DataflowElement<it.unive.lisa.analysis.dataflow.DefiniteForwardDataflowDomain<AvailableExpressions>,AvailableExpressions>
-
pushScope
public AvailableExpressions pushScope(it.unive.lisa.analysis.ScopeToken scope) throws it.unive.lisa.analysis.SemanticException
- Specified by:
pushScopein interfaceit.unive.lisa.analysis.dataflow.DataflowElement<it.unive.lisa.analysis.dataflow.DefiniteForwardDataflowDomain<AvailableExpressions>,AvailableExpressions>- Throws:
it.unive.lisa.analysis.SemanticException
-
popScope
public AvailableExpressions popScope(it.unive.lisa.analysis.ScopeToken scope) throws it.unive.lisa.analysis.SemanticException
- Specified by:
popScopein interfaceit.unive.lisa.analysis.dataflow.DataflowElement<it.unive.lisa.analysis.dataflow.DefiniteForwardDataflowDomain<AvailableExpressions>,AvailableExpressions>- Throws:
it.unive.lisa.analysis.SemanticException
-
-