java_cup
public class lalr_item extends lr_item_core
[A ::= B * C d E , {a,b,c}]indicates that the parser is in the middle of parsing the production
A ::= B C d Ethat B has already been parsed, and that we will expect to see a lookahead of either a, b, or c once the complete RHS of this production has been found.
Items may initially be missing some items from their lookahead sets. Links are maintained from each item to the set of items that would need to be updated if symbols are added to its lookahead set. During "lookahead propagation", we add symbols to various lookahead sets and propagate these changes across these dependency links as needed.
Version: last updated: 11/25/95
See Also: lalr_item_set lalr_state
Field Summary | |
---|---|
protected boolean | needs_propagation Flag to indicate that this item needs to propagate its lookahead
(whether it has changed or not). |
protected terminal_set | _lookahead The lookahead symbols of the item. |
protected Stack | _propagate_items Links to items that the lookahead needs to be propagated to. |
Constructor Summary | |
---|---|
lalr_item(production prod, int pos, terminal_set look) Full constructor. | |
lalr_item(production prod, terminal_set look) Constructor with default position (dot at start). | |
lalr_item(production prod) Constructor with default position and empty lookahead set. |
Method Summary | |
---|---|
void | add_propagate(lalr_item prop_to) Add a new item to the set of items we propagate to. |
terminal_set | calc_lookahead(terminal_set lookahead_after) Calculate lookahead representing symbols that could appear after the
symbol that the dot is currently in front of. |
boolean | equals(lalr_item other) Equality comparison -- here we only require the cores to be equal since
we need to do sets of items based only on core equality (ignoring
lookahead sets). |
boolean | equals(Object other) Generic equality comparison. |
int | hashCode() Return a hash code -- here we only hash the core since we only test core
matching in LALR items. |
terminal_set | lookahead() The lookahead symbols of the item. |
boolean | lookahead_visible() Determine if everything from the symbol one beyond the dot all the
way to the end of the right hand side is nullable. |
Stack | propagate_items() Links to items that the lookahead needs to be propagated to |
void | propagate_lookaheads(terminal_set incoming) Propagate incoming lookaheads through this item to others need to
be changed. |
lalr_item | shift() Produce the new lalr_item that results from shifting the dot one position
to the right. |
String | toString() Convert to string. |
Parameters: prod the production for the item. pos the position of the "dot" within the production. look the set of lookahead symbols.
Parameters: prod the production for the item. look the set of lookahead symbols.
Parameters: prod the production for the item.
UNKNOWN: incoming symbols to potentially be added to lookahead of this item.