[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.
java_cup.lalr_item_set , java_cup.lalr_state
| Modifier and Type | Field and Description |
|---|---|
| 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. |
| protected boolean | needs_propagation
Flag to indicate that this item needs to propagate its lookahead (whether it has changed or not). |
| Access | Constructor and Description |
|---|---|
| public | lalr_item(production
the production for the item. prod, int the position of the "dot" within the production. pos, terminal_set the set of lookahead symbols. look)Full constructor. |
| public | lalr_item(production
the production for the item. prod, terminal_set the set of lookahead symbols. look)Constructor with default position (dot at start). |
| public | lalr_item(production
the production for the item. prod)Constructor with default position and empty lookahead set. |
| Modifier and Type | Method and Description |
|---|---|
| public void | |
| public 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. |
| public boolean | |
| public boolean | equals(Object
the reference object with which to compare. other)Overrides java_cup. |
| public int | hashCode()
Overrides java_cup. |
| public terminal_set | |
| public 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. |
| public Stack | |
| public void | propagate_lookaheads(terminal_set
symbols to potentially be added to lookahead of this item. incoming)Propagate incoming lookaheads through this item to others need to be changed. |
| public lalr_item | |
| public String |
| _lookahead | back to summary |
|---|---|
| protected terminal_set _lookahead The lookahead symbols of the item. | |
| _propagate_items | back to summary |
|---|---|
| protected Stack<E> _propagate_items Links to items that the lookahead needs to be propagated to. | |
| needs_propagation | back to summary |
|---|---|
| protected boolean needs_propagation Flag to indicate that this item needs to propagate its lookahead (whether it has changed or not). | |
| lalr_item | back to summary |
|---|---|
| public lalr_item(production prod, int pos, terminal_set look) throws internal_error Full constructor.
| |
| lalr_item | back to summary |
|---|---|
| public lalr_item(production prod, terminal_set look) throws internal_error Constructor with default position (dot at start).
| |
| lalr_item | back to summary |
|---|---|
| public lalr_item(production prod) throws internal_error Constructor with default position and empty lookahead set.
| |
| add_propagate | back to summary |
|---|---|
| public void add_propagate(lalr_item prop_to) Add a new item to the set of items we propagate to. | |
| calc_lookahead | back to summary |
|---|---|
| public terminal_set calc_lookahead(terminal_set lookahead_after) throws internal_error Calculate lookahead representing symbols that could appear after the symbol that the dot is currently in front of. Note this routine must not be invoked before first sets and nullability has been calculated for all non terminals. | |
| equals | back to summary |
|---|---|
| public 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). | |
| equals | back to summary |
|---|---|
| public boolean equals(Object other) Overrides java_cup. Generic equality comparison.
| |
| hashCode | back to summary |
|---|---|
| public int hashCode() Overrides java_cup. Return a hash code -- here we only hash the core since we only test core matching in LALR items.
| |
| lookahead | back to summary |
|---|---|
| public terminal_set lookahead() The lookahead symbols of the item. | |
| lookahead_visible | back to summary |
|---|---|
| public boolean lookahead_visible() throws internal_error Determine if everything from the symbol one beyond the dot all the way to the end of the right hand side is nullable. This would indicate that the lookahead of this item must be included in the lookaheads of all items produced as a closure of this item. Note this routine should not be invoked until after first sets and nullability have been calculated for all non terminals. | |
| propagate_items | back to summary |
|---|---|
| public Stack Links to items that the lookahead needs to be propagated to | |
| propagate_lookaheads | back to summary |
|---|---|
| public void propagate_lookaheads(terminal_set incoming) throws internal_error Propagate incoming lookaheads through this item to others need to be changed.
| |
| shift | back to summary |
|---|---|
| public lalr_item shift() throws internal_error Produce the new lalr_item that results from shifting the dot one position to the right. | |
| toString | back to summary |
|---|---|
| public String toString() Overrides java_cup. Convert to string.
| |