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.AvailableExpressions(it.unive.lisa.symbolic.value.ValueExpression expression)
Builds the available expressions object.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description boolean
equals(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()
int
hashCode()
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)
AvailableExpressions
popScope(it.unive.lisa.analysis.ScopeToken scope)
AvailableExpressions
pushScope(it.unive.lisa.analysis.ScopeToken scope)
it.unive.lisa.analysis.representation.DomainRepresentation
representation()
java.lang.String
toString()
-
-
-
Constructor Detail
-
AvailableExpressions
public AvailableExpressions()
Builds an empty available expressions object.
-
AvailableExpressions
public AvailableExpressions(it.unive.lisa.symbolic.value.ValueExpression expression)
Builds the available expressions object.- Parameters:
expression
- the expression of this element
-
-
Method Detail
-
toString
public java.lang.String toString()
- Overrides:
toString
in classjava.lang.Object
-
getInvolvedIdentifiers
public java.util.Collection<it.unive.lisa.symbolic.value.Identifier> getInvolvedIdentifiers()
- Specified by:
getInvolvedIdentifiers
in 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:
gen
in 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:
gen
in 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:
kill
in 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:
kill
in interfaceit.unive.lisa.analysis.dataflow.DataflowElement<it.unive.lisa.analysis.dataflow.DefiniteForwardDataflowDomain<AvailableExpressions>,AvailableExpressions>
-
hashCode
public int hashCode()
- Overrides:
hashCode
in classjava.lang.Object
-
equals
public boolean equals(java.lang.Object obj)
- Overrides:
equals
in classjava.lang.Object
-
representation
public it.unive.lisa.analysis.representation.DomainRepresentation representation()
- Specified by:
representation
in 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:
pushScope
in 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:
popScope
in interfaceit.unive.lisa.analysis.dataflow.DataflowElement<it.unive.lisa.analysis.dataflow.DefiniteForwardDataflowDomain<AvailableExpressions>,AvailableExpressions>
- Throws:
it.unive.lisa.analysis.SemanticException
-
-