Package java_cup
Class lr_item_core
java.lang.Object
java_cup.lr_item_core
- Direct Known Subclasses:
lalr_item
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 EThis 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.
- Version:
- last updated: 11/25/95
- Author:
- Scott Hudson
- See Also:
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected int
Cache of the hash code.protected int
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
Cache of symbol after the dot.protected production
The production for the item. -
Constructor Summary
ConstructorsConstructorDescriptionlr_item_core
(production prod) Constructor for dot at start of right hand side.lr_item_core
(production prod, int pos) Full constructor. -
Method Summary
Modifier and TypeMethodDescriptionboolean
core_equals
(lr_item_core other) Equality comparison for the core only.int
Hash code for the core (separated so we keep non overridden version).boolean
Is the dot at the end of the production?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
(lr_item_core other) Equality comparison.boolean
Generic 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.Produce a new lr_item_core that results from shifting the dot one position to the right.Return the symbol after the dot.The production for the item.Convert to a string (separated out from toString() so we can call it from subclass that overrides toString()).toString()
Convert to a string
-
Field Details
-
_the_production
The production for the item. -
_dot_pos
protected int _dot_posThe 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. -
_core_hash_cache
protected int _core_hash_cacheCache of the hash code. -
_symbol_after_dot
Cache of symbol after the dot.
-
-
Constructor Details
-
lr_item_core
Full constructor.- Parameters:
prod
- production this item uses.pos
- position of the "dot" within the item.- Throws:
internal_error
-
lr_item_core
Constructor for dot at start of right hand side.- Parameters:
prod
- production this item uses.- Throws:
internal_error
-
-
Method Details
-
the_production
The production for the item. -
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. -
dot_at_end
public boolean dot_at_end()Is the dot at the end of the production? -
symbol_after_dot
Return the symbol after the dot. If there is no symbol after the dot we return null. -
dot_before_nt
Determine if we have a dot before a non terminal, and if so which one (return null or the non terminal). -
shift_core
Produce a new lr_item_core that results from shifting the dot one position to the right.- Throws:
internal_error
-
core_equals
Equality comparison for the core only. This is separate out because we need separate access in a super class. -
equals
Equality comparison. -
equals
Generic equality comparison. -
core_hashCode
public int core_hashCode()Hash code for the core (separated so we keep non overridden version). -
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. -
to_simple_string
Convert to a string (separated out from toString() so we can call it from subclass that overrides toString()).- Throws:
internal_error
-
toString
Convert to a string
-