Package java_cup
Class lalr_item_set
java.lang.Object
java_cup.lalr_item_set
This class represents a set of LALR items. For purposes of building
these sets, items are considered unique only if they have unique cores
(i.e., ignoring differences in their lookahead sets).
This class provides fairly conventional set oriented operations (union, sub/super-set tests, etc.), as well as an LALR "closure" operation (see compute_closure()).
- See Also:
-
Field Summary
Fields -
Constructor Summary
ConstructorsConstructorDescriptionConstructor for an empty set.lalr_item_set
(lalr_item_set other) Constructor for cloning from another set. -
Method Summary
Modifier and TypeMethodDescriptionAdd a singleton item, merging lookahead sets if the item is already part of the set.void
add
(lalr_item_set other) Add a complete set, merging lookaheads where items are already in the setall()
Access to all elements of the set.void
Compute the closure of the set using the LALR closure rules.boolean
Does the set contain a particular item?boolean
equals
(lalr_item_set other) Equality comparison.boolean
Generic equality comparison.Return the item in the set matching a particular item (or null if not found)get_one()
Remove and return one item from the set (done in hash order).int
hashCode()
Return hash code.boolean
is_subset_of
(lalr_item_set other) Is this set an (improper) subset of another?boolean
is_superset_of
(lalr_item_set other) Is this set an (improper) superset of another?protected void
Helper function for null test.void
Remove a single item if it is in the set.void
remove
(lalr_item_set other) Remove (set subtract) a complete set.int
size()
Size of the settoString()
Convert to string.
-
Field Details
-
_all
A hash table to implement the set. We store the items using themselves as keys. -
hashcode_cache
Cached hashcode for this set.
-
-
Constructor Details
-
lalr_item_set
public lalr_item_set()Constructor for an empty set. -
lalr_item_set
Constructor for cloning from another set.- Parameters:
other
- indicates set we should copy from.- Throws:
internal_error
-
-
Method Details
-
all
Access to all elements of the set. -
size
public int size()Size of the set -
contains
Does the set contain a particular item?- Parameters:
itm
- the item in question.
-
find
Return the item in the set matching a particular item (or null if not found)- Parameters:
itm
- the item we are looking for.
-
is_subset_of
Is this set an (improper) subset of another?- Parameters:
other
- the other set in question.- Throws:
internal_error
-
is_superset_of
Is this set an (improper) superset of another?- Parameters:
other
- the other set in question.- Throws:
internal_error
-
add
Add a singleton item, merging lookahead sets if the item is already part of the set. returns the element of the set that was added or merged into.- Parameters:
itm
- the item being added.- Throws:
internal_error
-
remove
Remove a single item if it is in the set.- Parameters:
itm
- the item to remove.- Throws:
internal_error
-
add
Add a complete set, merging lookaheads where items are already in the set- Parameters:
other
- the set to be added.- Throws:
internal_error
-
remove
Remove (set subtract) a complete set.- Parameters:
other
- the set to remove.- Throws:
internal_error
-
get_one
Remove and return one item from the set (done in hash order).- Throws:
internal_error
-
not_null
Helper function for null test. Throws an interal_error exception if its parameter is null.- Parameters:
obj
- the object we are testing.- Throws:
internal_error
-
compute_closure
Compute the closure of the set using the LALR closure rules. Basically for every item of the form:[L ::= a *N alpha, l]
(where N is a a non terminal and alpha is a string of symbols) make sure there are also items of the form:[N ::= *beta, first(alpha l)]
corresponding to each production of N. Items with identical cores but differing lookahead sets are merged by creating a new item with the same core and the union of the lookahead sets (the LA in LALR stands for "lookahead merged" and this is where the merger is). This routine assumes that nullability and first sets have been computed for all productions before it is called.- Throws:
internal_error
-
equals
Equality comparison. -
equals
Generic equality comparison. -
hashCode
public int hashCode()Return hash code. -
toString
Convert to string.
-