case class UnboundVariablesAnalysis[Abs, Addr, Time]()(implicit evidence$15: JoinLattice[Abs], evidence$16: Address[Addr], evidence$17: Timestamp[Time]) extends Analysis[Set[LamExp], LamExp, Abs, Addr, Time] with Product with Serializable
This is our unbound variables analysis. We want to detect, for a lambda-calculus program, which evaluated variables may be unbound. We represent this by a set of lambda expressions, which is the lattice computed by this analysis: Set[LamExp]. This class defines how to update the current state of the analysis.
- Alphabetic
- By Inheritance
- UnboundVariablesAnalysis
- Serializable
- Serializable
- Product
- Equals
- Analysis
- AnyRef
- Any
- by CollectionsHaveToParArray
- by any2stringadd
- by StringFormat
- by Ensuring
- by ArrowAssoc
- Hide All
- Show All
- Public
- All
Instance Constructors
- new UnboundVariablesAnalysis()(implicit arg0: JoinLattice[Abs], arg1: Address[Addr], arg2: Timestamp[Time])
Value Members
-
def
error(err: SemanticError, current: Set[LamExp]): Set[LamExp]
The checking for unbound variables could be done here, by looking at the "err" parameter, which is UnboundVariable(name).
The checking for unbound variables could be done here, by looking at the "err" parameter, which is UnboundVariable(name). But that's not how we proceed for this analysis, because we want the full expression (and also, we want to show how to describe the analysis in terms of stepEval).
- Definition Classes
- UnboundVariablesAnalysis → Analysis
-
def
init: Set[LamExp]
At the beginning of the program, no unbound variable has been evaluated
At the beginning of the program, no unbound variable has been evaluated
- Definition Classes
- UnboundVariablesAnalysis → Analysis
-
def
join(x: Set[LamExp], y: Set[LamExp]): Set[LamExp]
Joining two results is done by taking their union
Joining two results is done by taking their union
- Definition Classes
- UnboundVariablesAnalysis → Analysis
-
def
stepEval(e: LamExp, env: Environment[Addr], store: Store[Addr, Abs], t: Time, current: Set[LamExp]): Set[LamExp]
stepEval is called when the semantics' stepEval is called
stepEval is called when the semantics' stepEval is called
- Definition Classes
- UnboundVariablesAnalysis → Analysis
-
def
stepKont(v: Abs, frame: Frame, store: Store[Addr, Abs], t: Time, current: Set[LamExp]): Set[LamExp]
No unbound variables appear when a continuation is boing popped
No unbound variables appear when a continuation is boing popped
- Definition Classes
- UnboundVariablesAnalysis → Analysis
-
def
toParArray: ParArray[T]
- Implicit
- This member is added by an implicit conversion from UnboundVariablesAnalysis[Abs, Addr, Time] to CollectionsHaveToParArray[UnboundVariablesAnalysis[Abs, Addr, Time], T] performed by method CollectionsHaveToParArray in scala.collection.parallel. This conversion will take place only if an implicit value of type (UnboundVariablesAnalysis[Abs, Addr, Time]) ⇒ GenTraversableOnce[T] is in scope.
- Definition Classes
- CollectionsHaveToParArray