Class OperandStack

java.lang.Object
EDU.purdue.cs.bloat.tree.OperandStack

public class OperandStack extends Object
OperandStack is used to simulate the JVM stack. A stack of expressions is maintained. OperandStack has methods to push and pop (both wide and non-wide) expressions, replace an expression at a given depth in the stack, peek into the stack, etc.
See Also:
  • Constructor Summary

    Constructors
    Constructor
    Description
    Constructor.
  • Method Summary

    Modifier and Type
    Method
    Description
    get(int index)
    Returns the expression at index from the bottom of the stack.
    int
     
    boolean
     
    Returns the expression at the top of the stack, but does not modify the stack.
    peek(int depth)
    Get the expression that is depth expressions from the top of the stack, but do not modify the stack.
    pop(Type type)
    Pops an operand off the stack.
    Pops a non-wide expression off the stack.
    Pops a (possibly) wide expression off of the stack and returns the result as an array of Expr.
    void
    push(Expr expr)
    Push an expression onto the stack.
    void
    replace(int depth, Expr expr)
    Replaces the expression that is depth expressions from the top of the stack.
    void
    set(int index, Expr expr)
    Sets the entry at a specified index from the bottom of the stack
    int
    Returns the number of expressions on the stack.
    Returns a String represntation of this stack.

    Methods inherited from class Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
  • Constructor Details

    • OperandStack

      public OperandStack()
      Constructor.
  • Method Details

    • isEmpty

      public boolean isEmpty()
      Returns:
      True, if the stack is empty.
    • pop

      public Expr pop(Type type)
      Pops an operand off the stack. Checks to make sure the top of the stack is of the expected Type.
      Parameters:
      type - The expected Type of the top of the stack
      Returns:
      Expression on the top of the stack
    • peek

      public Expr peek()
      Returns the expression at the top of the stack, but does not modify the stack.
    • set

      public void set(int index, Expr expr)
      Sets the entry at a specified index from the bottom of the stack
      Parameters:
      index - The position in the stack.
      expr - The new value of the expression.
    • height

      public int height()
      Returns:
      The number of elements in the stack.
    • replace

      public void replace(int depth, Expr expr)
      Replaces the expression that is depth expressions from the top of the stack.
      Parameters:
      depth - The number of expressions from the top of the stack.
      expr - The new expression
    • peek

      public Expr peek(int depth)
      Get the expression that is depth expressions from the top of the stack, but do not modify the stack.
      Parameters:
      depth - Number of expressions deep to get.
      Returns:
      The expression that is depth expression from the top of the stack.
    • pop1

      public Expr pop1()
      Pops a non-wide expression off the stack.
    • pop2

      public Expr[] pop2()
      Pops a (possibly) wide expression off of the stack and returns the result as an array of Expr. If the expression at the top of the stack is indeed wide, it is returned in element [0] of the array. If the expression at the top of the stack is not wide, the top two expressions are returned in the array as elements 0 and 1.
    • push

      public void push(Expr expr)
      Push an expression onto the stack.
      See Also:
    • size

      public int size()
      Returns the number of expressions on the stack.
    • get

      public Expr get(int index)
      Returns the expression at index from the bottom of the stack.
    • toString

      public String toString()
      Returns a String represntation of this stack.
      Overrides:
      toString in class Object