harpoon.Tools.PatMat
Class Spec.ExpBinop

java.lang.Object
  extended by harpoon.Tools.PatMat.Spec.Exp
      extended by harpoon.Tools.PatMat.Spec.ExpBinop
Enclosing class:
Spec

public static class Spec.ExpBinop
extends Spec.Exp

Extension of Spec.Exp that represents a Binary Operation in the code. An implicit restriction on our binary operations is that both operands must have equivalent domains (there is only one Spec.TypeSet for a given Spec.ExpBinop).

See Also:
BINOP

Field Summary
 Spec.Exp left
          Expression on the left side of this.
 Spec.Leaf opcode
          Opcode for this.
 Spec.Exp right
          Expression on the right side of this.
 Spec.TypeSet types
          Types of values that this operates on.
 
Constructor Summary
Spec.ExpBinop(Spec.TypeSet types, Spec.Leaf opcode, Spec.Exp left, Spec.Exp right)
          Constructs a Spec.ExpBinop that operates on expressions of types.
 
Method Summary
 void accept(Spec.ExpVisitor v)
          Applies v's visit method to this.
 Spec.Exp build(Spec.ExpList kids)
          Creates a new Spec.Exp similar to this one, using the provided Spec.ExpList of children.
 Spec.ExpList kids()
          Creates an Spec.ExpList of children of this Spec.Exp.
 String toString()
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

types

public final Spec.TypeSet types
Types of values that this operates on.


opcode

public final Spec.Leaf opcode
Opcode for this.

See Also:
Bop

left

public final Spec.Exp left
Expression on the left side of this.


right

public final Spec.Exp right
Expression on the right side of this.

Constructor Detail

Spec.ExpBinop

public Spec.ExpBinop(Spec.TypeSet types,
                     Spec.Leaf opcode,
                     Spec.Exp left,
                     Spec.Exp right)
Constructs a Spec.ExpBinop that operates on expressions of types.

Parameters:
types - Types that left and right may be.
opcode - The binary operation that is being performed on left and right.
left - The left operand.
right - The right operand.
Method Detail

accept

public void accept(Spec.ExpVisitor v)
Description copied from class: Spec.Exp
Applies v's visit method to this. This is effectively a gludge to emulate multiple dispatch. Must be reimplemented by all subclasses of Spec.Exp.
effects: Calls v.visit(this).

Specified by:
accept in class Spec.Exp
See Also:
"Design Patterns pgs. 331-344"

build

public Spec.Exp build(Spec.ExpList kids)
Description copied from class: Spec.Exp
Creates a new Spec.Exp similar to this one, using the provided Spec.ExpList of children.

Specified by:
build in class Spec.Exp

kids

public Spec.ExpList kids()
Description copied from class: Spec.Exp
Creates an Spec.ExpList of children of this Spec.Exp.

Specified by:
kids in class Spec.Exp

toString

public String toString()
Overrides:
toString in class Object