Package com.aquima.interactions.java_cup
Class virtual_parse_stack
java.lang.Object
com.aquima.interactions.java_cup.virtual_parse_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.
- Version:
- last updated: 7/3/96
- Author:
- Frank Flannery
- See Also:
-
java_cup.runtime.lr_parser
-
Field Summary
Fields -
Constructor Summary
ConstructorsConstructorDescriptionvirtual_parse_stack
(Stack<Symbol> shadowing_stack) Constructor to build a virtual stack out of a real stack. -
Method Summary
Modifier and TypeMethodDescriptionboolean
empty()
Indicate whether the stack is empty.protected void
Transfer an element from the real to the virtual stack.void
pop()
Pop the stack.void
push
(int state_num) Push a state number onto the stack.int
top()
Return value on the top of the stack (without popping it).
-
Field Details
-
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. -
real_next
protected int real_nextTop 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. -
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 Details
-
virtual_parse_stack
Constructor to build a virtual stack out of a real stack.- Throws:
Exception
-
-
Method Details
-
get_from_real
protected void get_from_real()Transfer an element from the real to the virtual stack. This assumes that the virtual stack is currently empty. -
empty
public boolean empty()Indicate whether the stack is empty. -
top
Return value on the top of the stack (without popping it).- Throws:
Exception
-
pop
Pop the stack.- Throws:
Exception
-
push
public void push(int state_num) Push a state number onto the stack.
-