kiama.example.lambda2

object AST

[source: kiama/example/lambda2/AST.scala]

object AST
extends AnyRef
A simple lambda calculus abstract syntax.
Type Summary
type Idn
Identifiers are represented as strings.
Methods inherited from AnyRef
getClass, hashCode, equals, clone, toString, notify, notifyAll, wait, wait, wait, finalize, ==, !=, eq, ne, synchronized
Methods inherited from Any
==, !=, isInstanceOf, asInstanceOf
Class Summary
case class App (val e1 : Exp, val e2 : Exp) extends Exp
Application of l to r.
case class Bind (val i : java.lang.String, val t : Type, val e : Exp) extends scala.Product
A single binding from a set of parallel bindings (Letp).
abstract class Exp extends Attributable
Expressions.
case class FunType (val t1 : Type, val t2 : Type) extends Type
Function type from an argument type arg to a result type res.
case class Lam (val i : java.lang.String, val t : Type, val e : Exp) extends Exp
Lambda expressions binding name of type tipe within body.
case class Let (val i : java.lang.String, val t : Type, val e1 : Exp, val e2 : Exp) extends Exp
Bind name of type tipe to the value of exp in body.
case class Letp (val bs : scala.List[Bind], val e : Exp) extends Exp
Parallel bindings in body.
case class Num (val n : Int) extends Exp
Numeric expressions.
abstract class Op extends AnyRef
Primitive binary operators.
case class Opn (val o : Op, val e1 : Exp, val e2 : Exp) extends Exp
An application of a primitive binary operation.
abstract class Type extends scala.Product
Types.
case class Var (val i : java.lang.String) extends Exp
Variable expressions.
Object Summary
case object AddOp extends Op with scala.Product
Primitive integer addition.
case object IntType extends Type
Primitive integer type.
case object SubOp extends Op with scala.Product
Primitive integer subtraction.
Type Details
type Idn
Identifiers are represented as strings.