java_cup

Class lr_item_core


public class lr_item_core
extends java.lang.Object

The "core" of an LR item. This includes a production and the position of a marker (the "dot") within the production. Typically item cores are written using a production with an embedded "dot" to indicate their position. For example:
     A ::= B * C d E
  
This represents a point in a parse where the parser is trying to match the given production, and has succeeded in matching everything before the "dot" (and hence is expecting to see the symbols after the dot next). See lalr_item, lalr_item_set, and lalr_start for full details on the meaning and use of items.
See Also:
lalr_item, lalr_item_set, lalr_state

Field Summary

protected int
_core_hash_cache
Cache of the hash code.
protected int
_dot_pos
The position of the "dot" -- this indicates the part of the production that the marker is before, so 0 indicates a dot at the beginning of the RHS.
protected symbol
_symbol_after_dot
Cache of symbol after the dot.
protected production
_the_production
The production for the item.

Constructor Summary

lr_item_core(production prod)
Constructor for dot at start of right hand side.
lr_item_core(production prod, int pos)
Full constructor.

Method Summary

boolean
core_equals(lr_item_core other)
Equality comparison for the core only.
int
core_hashCode()
Hash code for the core (separated so we keep non overridden version).
boolean
dot_at_end()
Is the dot at the end of the production?
non_terminal
dot_before_nt()
Determine if we have a dot before a non terminal, and if so which one (return null or the non terminal).
int
dot_pos()
The position of the "dot" -- this indicates the part of the production that the marker is before, so 0 indicates a dot at the beginning of the RHS.
boolean
equals(Object other)
Generic equality comparison.
boolean
equals(lr_item_core other)
Equality comparison.
int
hashCode()
Hash code for the item.
protected int
obj_hash()
Return the hash code that object would have provided for us so we have a (nearly) unique id for debugging.
lr_item_core
shift_core()
Produce a new lr_item_core that results from shifting the dot one position to the right.
symbol
symbol_after_dot()
Return the symbol after the dot.
production
the_production()
The production for the item.
String
toString()
Convert to a string
String
to_simple_string()
Convert to a string (separated out from toString() so we can call it from subclass that overrides toString()).

Field Details

_core_hash_cache

protected int _core_hash_cache
Cache of the hash code.

_dot_pos

protected int _dot_pos
The position of the "dot" -- this indicates the part of the production that the marker is before, so 0 indicates a dot at the beginning of the RHS.

_symbol_after_dot

protected symbol _symbol_after_dot
Cache of symbol after the dot.

_the_production

protected production _the_production
The production for the item.

Constructor Details

lr_item_core

public lr_item_core(production prod)
            throws internal_error
Constructor for dot at start of right hand side.
Parameters:
prod - production this item uses.

lr_item_core

public lr_item_core(production prod,
                    int pos)
            throws internal_error
Full constructor.
Parameters:
prod - production this item uses.
pos - position of the "dot" within the item.

Method Details

core_equals

public boolean core_equals(lr_item_core other)
Equality comparison for the core only. This is separate out because we need separate access in a super class.

core_hashCode

public int core_hashCode()
Hash code for the core (separated so we keep non overridden version).

dot_at_end

public boolean dot_at_end()
Is the dot at the end of the production?

dot_before_nt

public non_terminal dot_before_nt()
Determine if we have a dot before a non terminal, and if so which one (return null or the non terminal).

dot_pos

public int dot_pos()
The position of the "dot" -- this indicates the part of the production that the marker is before, so 0 indicates a dot at the beginning of the RHS.

equals

public boolean equals(Object other)
Generic equality comparison.

equals

public boolean equals(lr_item_core other)
Equality comparison.

hashCode

public int hashCode()
Hash code for the item.

obj_hash

protected int obj_hash()
Return the hash code that object would have provided for us so we have a (nearly) unique id for debugging.

shift_core

public lr_item_core shift_core()
            throws internal_error
Produce a new lr_item_core that results from shifting the dot one position to the right.

symbol_after_dot

public symbol symbol_after_dot()
Return the symbol after the dot. If there is no symbol after the dot we return null.

the_production

public production the_production()
The production for the item.

toString

public String toString()
Convert to a string

to_simple_string

public String to_simple_string()
            throws internal_error
Convert to a string (separated out from toString() so we can call it from subclass that overrides toString()).