org.kiama.example.iswim.secd

SECDBase

abstract class SECDBase extends Machine

The basic SECD machine implementation

This only implements the bare bones of an operating SECD machine. In particular it does not provide any primitive builtin functions for operating on data values such as strings and integers. You can add these using traits to implement each one in a stackable manner.

Linear Supertypes
Machine, PrettyPrinter, PrettyPrinterBase, AnyRef, Any
Known Subclasses
Ordering
  1. Alphabetic
  2. By inheritance
Inherited
  1. SECDBase
  2. Machine
  3. PrettyPrinter
  4. PrettyPrinterBase
  5. AnyRef
  6. Any
  1. Hide All
  2. Show all
Learn more about member selection
Visibility
  1. Public
  2. All

Instance Constructors

  1. new SECDBase()

Type Members

  1. case class ClosureValue(pn: Name, bdy: Code, envir: Environment) extends Value with Product with Serializable

    Closure values

  2. case class ContValue(s: Stack, e: Environment, c: Code, d: Dump) extends Value with Continuation with Product with Serializable

  3. trait Continuation extends AnyRef

    Continuation values

  4. class Doc extends ((output.PrettyPrinter.Indent, output.PrettyPrinter.Width)) ⇒ ((Int, Queue[(Int, (Boolean) ⇒ ((Int) ⇒ output.PrettyPrinter.Layout) ⇒ (Int) ⇒ output.PrettyPrinter.Layout)]) ⇒ (Int) ⇒ output.PrettyPrinter.Layout) ⇒ (Int, Queue[(Int, (Boolean) ⇒ ((Int) ⇒ output.PrettyPrinter.Layout) ⇒ (Int) ⇒ output.PrettyPrinter.Layout)]) ⇒ (Int) ⇒ output.PrettyPrinter.Layout with output.PrettyPrinter.DocOps

    Definition Classes
    PrettyPrinter → PrettyPrinterBase
  5. trait DocOps extends AnyRef

    Definition Classes
    PrettyPrinterBase
  6. type Dump = Continuation

  7. case class EmptyCont() extends Continuation with Product with Serializable

  8. case class EmptyValue() extends Value with Product with Serializable

    Base machine value types Null value

  9. type Environment = Map[Name, Value]

    Type alias for environments, stacks and so forth

  10. type Indent = Int

    Definition Classes
    PrettyPrinterBase
  11. type Layout = String

    Definition Classes
    PrettyPrinterBase
  12. class ParamState[T, U] extends State[HashMap[T, U]]

    Definition Classes
    Machine
  13. class ParamUpdate[T, U] extends Update

    Definition Classes
    Machine
  14. class ParamUpdater[T, U] extends AnyRef

    Definition Classes
    Machine
  15. trait PrettyPrintable extends AnyRef

    Definition Classes
    PrettyPrinterBase
  16. case class PrimValue(bdy: Code) extends Value with Product with Serializable

    Primitives - values which contain simple code segments.

  17. class ScalarUpdate[T] extends Update

    Definition Classes
    Machine
  18. type Stack = List[Value]

  19. class State[T] extends AnyRef

    Definition Classes
    Machine
  20. abstract class Update extends AnyRef

    Definition Classes
    Machine
  21. type Width = Int

    Definition Classes
    PrettyPrinterBase

Abstract Value Members

  1. abstract def primTable: Map[Name, Value]

    Table of builtin primitives for this machine.

    Table of builtin primitives for this machine. These named values may be loaded into the environment using the BindPrims(nms) bytecode.

Concrete Value Members

  1. final def !=(arg0: AnyRef): Boolean

    Definition Classes
    AnyRef
  2. final def !=(arg0: Any): Boolean

    Definition Classes
    Any
  3. final def ##(): Int

    Definition Classes
    AnyRef → Any
  4. final def ==(arg0: AnyRef): Boolean

    Definition Classes
    AnyRef
  5. final def ==(arg0: Any): Boolean

    Definition Classes
    Any
  6. def ampersand: Doc

    Definition Classes
    PrettyPrinterBase
  7. def angles(d: Doc): Doc

    Definition Classes
    PrettyPrinterBase
  8. def any(a: Any): Doc

    Definition Classes
    PrettyPrinterBase
  9. implicit def anyToPrettyPrintable(a: Any): PrettyPrintable

    Definition Classes
    PrettyPrinterBase
  10. final def asInstanceOf[T0]: T0

    Definition Classes
    Any
  11. def asterisk: Doc

    Definition Classes
    PrettyPrinterBase
  12. def atsign: Doc

    Definition Classes
    PrettyPrinterBase
  13. def backquote: Doc

    Definition Classes
    PrettyPrinterBase
  14. def backslash: Doc

    Definition Classes
    PrettyPrinterBase
  15. def braces(d: Doc): Doc

    Definition Classes
    PrettyPrinterBase
  16. def brackets(d: Doc): Doc

    Definition Classes
    PrettyPrinterBase
  17. def caret: Doc

    Definition Classes
    PrettyPrinterBase
  18. def cat(ds: Seq[Doc]): Doc

    Definition Classes
    PrettyPrinterBase
  19. implicit def char(c: Char): Doc

    Definition Classes
    PrettyPrinterBase
  20. def clone(): AnyRef

    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws()
  21. def colon: Doc

    Definition Classes
    PrettyPrinterBase
  22. def comma: Doc

    Definition Classes
    PrettyPrinterBase
  23. lazy val control: State[Code] { def toDoc: SECDBase.this.Doc }

  24. def debug: Boolean

    Definition Classes
    Machine
  25. val defaultIndent: Int

    Definition Classes
    PrettyPrinterBase
  26. val defaultWidth: Int

    Definition Classes
    PrettyPrinterBase
  27. def dollar: Doc

    Definition Classes
    PrettyPrinterBase
  28. def dot: Doc

    Definition Classes
    PrettyPrinterBase
  29. def dquote: Doc

    Definition Classes
    PrettyPrinterBase
  30. def dquotes(d: Doc): Doc

    Definition Classes
    PrettyPrinterBase
  31. lazy val dump: State[Dump]

  32. def empty: Doc

    Definition Classes
    PrettyPrinter → PrettyPrinterBase
  33. def enclose(l: Doc, d: Doc, r: Doc): Doc

    Definition Classes
    PrettyPrinterBase
  34. lazy val envir: State[Environment] { def toDoc: SECDBase.this.Doc }

  35. final def eq(arg0: AnyRef): Boolean

    Definition Classes
    AnyRef
  36. def equal: Doc

    Definition Classes
    PrettyPrinterBase
  37. def equals(arg0: Any): Boolean

    Definition Classes
    AnyRef → Any
  38. def evalInst: ==>[Code, Unit]

    Evaluate a single instruction.

    Evaluate a single instruction.

    We implement this as a partial function, which may be overridden in traits in order to compose on handlers for new bytecode instructions (using orElse composition).

  39. def exclamation: Doc

    Definition Classes
    PrettyPrinterBase
  40. var execSrcPos: Position

    Rule to execute one step of this machine.

    Rule to execute one step of this machine.

    Attributes
    protected
  41. def fillcat(ds: Seq[Doc]): Doc

    Definition Classes
    PrettyPrinterBase
  42. def fillsep(ds: Seq[Doc], sep: Doc): Doc

    Definition Classes
    PrettyPrinterBase
  43. def fillsep(ds: Seq[Doc]): Doc

    Definition Classes
    PrettyPrinterBase
  44. def finalize(): Unit

    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws()
  45. def finit: Unit

    Definition Classes
    Machine
  46. def forwslash: Doc

    Definition Classes
    PrettyPrinterBase
  47. final def getClass(): Class[_]

    Definition Classes
    AnyRef → Any
  48. def group(d: Doc): Doc

    Definition Classes
    PrettyPrinter → PrettyPrinterBase
  49. def hash: Doc

    Definition Classes
    PrettyPrinterBase
  50. def hashCode(): Int

    Definition Classes
    AnyRef → Any
  51. def hcat(ds: Seq[Doc]): Doc

    Definition Classes
    PrettyPrinterBase
  52. def hsep(ds: Seq[Doc], sep: Doc): Doc

    Definition Classes
    PrettyPrinterBase
  53. def hsep(ds: Seq[Doc]): Doc

    Definition Classes
    PrettyPrinterBase
  54. def init: Unit

    Definition Classes
    Machine
  55. final def isInstanceOf[T0]: Boolean

    Definition Classes
    Any
  56. def langle: Doc

    Definition Classes
    PrettyPrinterBase
  57. def lbrace: Doc

    Definition Classes
    PrettyPrinterBase
  58. def lbracket: Doc

    Definition Classes
    PrettyPrinterBase
  59. def line: Doc

    Definition Classes
    PrettyPrinter → PrettyPrinterBase
  60. def linebreak: Doc

    Definition Classes
    PrettyPrinter → PrettyPrinterBase
  61. def list[T](l: List[T], prefix: String, elemToDoc: (T) ⇒ Doc, sep: Doc, sepfn: (Seq[Doc], Doc) ⇒ Doc): Doc

    Definition Classes
    PrettyPrinterBase
  62. def lparen: Doc

    Definition Classes
    PrettyPrinterBase
  63. def lsep(ds: Seq[Doc], sep: Doc): Doc

    Definition Classes
    PrettyPrinterBase
  64. def lsep2(ds: Seq[Doc], sep: Doc): Doc

    Definition Classes
    PrettyPrinterBase
  65. def lterm(ds: Seq[Doc], term: Doc): Doc

    Definition Classes
    PrettyPrinterBase
  66. def main(): Unit

    Definition Classes
    SECDBase → Machine
  67. def minus: Doc

    Definition Classes
    PrettyPrinterBase
  68. val name: String

    Definition Classes
    Machine
  69. final def ne(arg0: AnyRef): Boolean

    Definition Classes
    AnyRef
  70. def nest(d: Doc, j: Indent): Doc

    Definition Classes
    PrettyPrinter → PrettyPrinterBase
  71. final def notify(): Unit

    Definition Classes
    AnyRef
  72. final def notifyAll(): Unit

    Definition Classes
    AnyRef
  73. implicit def paramUpdaterToU[T, U, V >: U](up: ParamUpdater[T, U]): V

    Definition Classes
    Machine
  74. def parens(d: Doc): Doc

    Definition Classes
    PrettyPrinterBase
  75. def percent: Doc

    Definition Classes
    PrettyPrinterBase
  76. def performUpdates: Boolean

    Definition Classes
    Machine
  77. def plist(l: List[PrettyPrintable], prefix: String, elemToDoc: (PrettyPrintable) ⇒ Doc, sep: Doc, sepfn: (Seq[Doc], Doc) ⇒ Doc): Doc

    Definition Classes
    PrettyPrinterBase
  78. def plus: Doc

    Definition Classes
    PrettyPrinterBase
  79. def pretty(d: Doc, w: Width): Layout

    Definition Classes
    PrettyPrinter → PrettyPrinterBase
  80. def pretty(p: PrettyPrintable): Layout

    Definition Classes
    PrettyPrinterBase
  81. def pretty_any(a: Any): Layout

    Definition Classes
    PrettyPrinterBase
  82. def question: Doc

    Definition Classes
    PrettyPrinterBase
  83. def raiseException(ex: ExceptionValue): Unit

    Raise a machine exception

    Raise a machine exception

    This particular error handler assumes that the environment contains a binding of the name '@exnHandler' to a reference value containing a continuation. This continuation is resumed with the exception value passed to this function as its parameter.

    If '@exnHandler' is unbound in the environment or is bound to a value that is not a refernce to a continuation then this function reports a machine panic and stops the machine.

  84. def rangle: Doc

    Definition Classes
    PrettyPrinterBase
  85. def rbrace: Doc

    Definition Classes
    PrettyPrinterBase
  86. def rbracket: Doc

    Definition Classes
    PrettyPrinterBase
  87. def reset: Unit

    Definition Classes
    Machine
  88. def rparen: Doc

    Definition Classes
    PrettyPrinterBase
  89. def run: Unit

    Definition Classes
    Machine
  90. def semi: Doc

    Definition Classes
    PrettyPrinterBase
  91. def sep(ds: Seq[Doc]): Doc

    Definition Classes
    PrettyPrinterBase
  92. def softbreak: Doc

    Definition Classes
    PrettyPrinterBase
  93. def softline: Doc

    Definition Classes
    PrettyPrinterBase
  94. def space: Doc

    Definition Classes
    PrettyPrinterBase
  95. def spaces(n: Int): Doc

    Definition Classes
    PrettyPrinterBase
  96. def squote: Doc

    Definition Classes
    PrettyPrinterBase
  97. def squotes(d: Doc): Doc

    Definition Classes
    PrettyPrinterBase
  98. def ssep(ds: Seq[Doc], sep: Doc): Doc

    Definition Classes
    PrettyPrinterBase
  99. lazy val stack: State[Stack] { def toDoc: SECDBase.this.Doc }

    Machine registers

    Machine registers

    A little work is needed here to ensure that these registers are printed in a reasonable way when we turn on debugging.

  100. implicit def stateTToT[T, U >: T](t: State[T]): U

    Definition Classes
    Machine
  101. def step: Boolean

    Definition Classes
    Machine
  102. def steps: Unit

    Definition Classes
    Machine
  103. def sterm(ds: Seq[Doc], term: Doc): Doc

    Definition Classes
    PrettyPrinterBase
  104. def string(s: String): Doc

    Definition Classes
    PrettyPrinterBase
  105. def surround(d: Doc, b: Doc): Doc

    Definition Classes
    PrettyPrinterBase
  106. final def synchronized[T0](arg0: ⇒ T0): T0

    Definition Classes
    AnyRef
  107. implicit def text(t: String): Doc

    Definition Classes
    PrettyPrinter → PrettyPrinterBase
  108. def tilde: Doc

    Definition Classes
    PrettyPrinterBase
  109. def toString(): String

    Definition Classes
    AnyRef → Any
  110. def underscore: Doc

    Definition Classes
    PrettyPrinterBase
  111. def value(v: Any): Doc

    Definition Classes
    PrettyPrinterBase
  112. def vcat(ds: Seq[Doc]): Doc

    Definition Classes
    PrettyPrinterBase
  113. def verticalbar: Doc

    Definition Classes
    PrettyPrinterBase
  114. def vsep(ds: Seq[Doc], sep: Doc): Doc

    Definition Classes
    PrettyPrinterBase
  115. def vsep(ds: Seq[Doc]): Doc

    Definition Classes
    PrettyPrinterBase
  116. final def wait(): Unit

    Definition Classes
    AnyRef
    Annotations
    @throws()
  117. final def wait(arg0: Long, arg1: Int): Unit

    Definition Classes
    AnyRef
    Annotations
    @throws()
  118. final def wait(arg0: Long): Unit

    Definition Classes
    AnyRef
    Annotations
    @throws()

Deprecated Value Members

  1. def product(p: Any): Doc

    Definition Classes
    PrettyPrinterBase
    Annotations
    @deprecated
    Deprecated

    (Since version 1.2.1) Use PrettyPrinter.any instead.

Inherited from Machine

Inherited from PrettyPrinter

Inherited from PrettyPrinterBase

Inherited from AnyRef

Inherited from Any

Ungrouped