Packages

  • package root
    Definition Classes
    root
  • package be
    Definition Classes
    root
  • package opimedia
    Definition Classes
    be
  • package scala_par_am
    Definition Classes
    opimedia
  • abstract class Semantics[Exp, Abs, Addr, Time] extends AnyRef

    This is where the interface of a language's semantics is defined.

    This is where the interface of a language's semantics is defined. By defining the semantics of a language, you get an abstract abstract machine for free (but you might need to adapt existing lattices to support values from your language).

    Semantics should be defined as small-step operational semantics. To define a semantics, you have to implement the Semantics trait. You'll need to specialize it on the type of expression of your language (e.g., ??? for ANF, ANFSemantics specializes on ANFExp). To do so, you need to define what actions should be taken when:

    1. Evaluating an expression e (stepEval) 2. Continuing evaluation when a value v has been reached (stepKont)

    To have a simple overview of how semantics should be defined, look at the ANFSemantics.scala, as it defines semantics of ANF Scheme, a very lightweight language. A more complex definition resides in SchemeSemantics.scala.

    Definition Classes
    scala_par_am
  • Action

object Action extends ActionHelpers[Exp, Abs, Addr]

Linear Supertypes
ActionHelpers[Exp, Abs, Addr], AnyRef, Any
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. Action
  2. ActionHelpers
  3. AnyRef
  4. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. All

Type Members

  1. type Act = Action[Exp, Abs, Addr]
    Definition Classes
    ActionHelpers
  2. type Effs = Set[Effect[Addr]]
    Definition Classes
    ActionHelpers
  3. type Env = Environment[Addr]
    Definition Classes
    ActionHelpers
  4. type Sto = Store[Addr, Abs]
    Definition Classes
    ActionHelpers

Value Members

  1. def error(err: SemanticError): Act
    Definition Classes
    ActionHelpers
  2. def eval(e: Exp, env: Env, store: Sto, effects: Effs = Set.empty): Act
    Definition Classes
    ActionHelpers
  3. def none: Set[Act]
    Definition Classes
    ActionHelpers
  4. def push(frame: Frame, e: Exp, env: Env, store: Sto, effects: Effs = Set.empty): Act
    Definition Classes
    ActionHelpers
  5. def stepIn(fexp: Exp, clo: (Exp, Env), e: Exp, env: Env, store: Sto, argsv: List[(Exp, Abs)], effects: Effs = Set.empty): Act
    Definition Classes
    ActionHelpers
  6. def value(v: Abs, store: Sto, effects: Effs = Set.empty): Act
    Definition Classes
    ActionHelpers