Package EDU.purdue.cs.bloat.tree
Class OperandStack
- java.lang.Object
-
- EDU.purdue.cs.bloat.tree.OperandStack
-
public class OperandStack extends java.lang.ObjectOperandStack 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.
-
-
Constructor Summary
Constructors Constructor Description OperandStack()Constructor.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description Exprget(int index)Returns the expression at index from the bottom of the stack.intheight()booleanisEmpty()Exprpeek()Returns the expression at the top of the stack, but does not modify the stack.Exprpeek(int depth)Get the expression that is depth expressions from the top of the stack, but do not modify the stack.Exprpop(Type type)Pops an operand off the stack.Exprpop1()Pops a non-wide expression off the stack.Expr[]pop2()Pops a (possibly) wide expression off of the stack and returns the result as an array of Expr.voidpush(Expr expr)Push an expression onto the stack.voidreplace(int depth, Expr expr)Replaces the expression that is depth expressions from the top of the stack.voidset(int index, Expr expr)Sets the entry at a specified index from the bottom of the stackintsize()Returns the number of expressions on the stack.java.lang.StringtoString()Returns a String represntation of this stack.
-
-
-
Method Detail
-
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:
Type.stackHeight()
-
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 java.lang.String toString()
Returns a String represntation of this stack.- Overrides:
toStringin classjava.lang.Object
-
-