Top Description Fields Constructors Methods
java_cup.runtime

public Class virtual_parse_stack

extends Object
Class Inheritance
Imports
java.util.Stack

This class implements a temporary or "virtual" parse stack that replaces the top portion of the actual parse stack (the part that has been changed by some set of operations) while maintaining its original contents. This data structure is used when the parse needs to "parse ahead" to determine if a given error recovery attempt will allow the parse to continue far enough to consider it successful. Once success or failure of parse ahead is determined the system then reverts to the original parse stack (which has not actually been modified). Since parse ahead does not execute actions, only parse state is maintained on the virtual stack, not full Symbol objects.
Author
Frank Flannery
Version
last updated: 7/3/96
See Also
java_cup.runtime.lr_parser

Field Summary

Modifier and TypeField and Description
protected int
real_next

Top of stack indicator for where we leave off in the real stack.

protected Stack<E>
real_stack

The real stack that we shadow.

protected Stack<E>
vstack

The virtual top portion of the stack.

Constructor Summary

AccessConstructor and Description
public
virtual_parse_stack(Stack<E> shadowing_stack)

Constructor to build a virtual stack out of a real stack.

Method Summary

Modifier and TypeMethod and Description
public boolean
empty()

Indicate whether the stack is empty.

protected void
get_from_real()

Transfer an element from the real to the virtual stack.

public void
pop()

Pop the stack.

public void
push(int state_num)

Push a state number onto the stack.

public int
top()

Return value on the top of the stack (without popping it).

Inherited from java.lang.Object:
cloneequalsfinalizegetClasshashCodenotifynotifyAlltoStringwaitwaitwait

Field Detail

real_nextback to summary
protected int real_next

Top of stack indicator for where we leave off in the real stack. This is measured from top of stack, so 0 would indicate that no elements have been "moved" from the real to virtual stack.

real_stackback to summary
protected Stack<E> real_stack

The real stack that we shadow. This is accessed when we move off the bottom of the virtual portion of the stack, but is always left unmodified.

vstackback to summary
protected Stack<E> vstack

The virtual top portion of the stack. This stack contains Integer objects with state numbers. This stack shadows the top portion of the real stack within the area that has been modified (via operations on the virtual stack). When this portion of the stack becomes empty we transfer elements from the underlying stack onto this stack.

Constructor Detail

virtual_parse_stackback to summary
public virtual_parse_stack(Stack<E> shadowing_stack) throws Exception

Constructor to build a virtual stack out of a real stack.

Method Detail

emptyback to summary
public boolean empty()

Indicate whether the stack is empty.

get_from_realback to summary
protected void get_from_real()

Transfer an element from the real to the virtual stack. This assumes that the virtual stack is currently empty.

popback to summary
public void pop() throws Exception

Pop the stack.

pushback to summary
public void push(int state_num)

Push a state number onto the stack.

topback to summary
public int top() throws Exception

Return value on the top of the stack (without popping it).