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()).
- Version:
- last updated: 3/6/96
- Author:
- Scott Hudson
- 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.voidadd(lalr_item_set other) Add a complete set, merging lookaheads where items are already in the setall()Access to all elements of the set.voidCompute the closure of the set using the LALR closure rules.booleanDoes the set contain a particular item?booleanequals(lalr_item_set other) Equality comparison.booleanGeneric 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).inthashCode()Return hash code.booleanis_subset_of(lalr_item_set other) Is this set an (improper) subset of another?booleanis_superset_of(lalr_item_set other) Is this set an (improper) superset of another?protected voidHelper function for null test.voidRemove a single item if it is in the set.voidremove(lalr_item_set other) Remove (set subtract) a complete set.intsize()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.
-