1 package org.simantics.scl.compiler.parser.generator.table;
3 import java.util.Arrays;
4 import java.util.Collection;
6 import org.simantics.scl.compiler.parser.generator.grammar.AnaGrammar;
9 public final Item[] items;
12 public ItemSet(Item[] items) {
17 public ItemSet(Collection<Item> items) {
18 this(items.toArray(new Item[items.size()]));
21 private static final int PROD = 31*31;
24 public int hashCode() {
27 for(Item item : items)
28 h = PROD*h + item.hashCode();
35 public boolean equals(Object obj) {
38 if(obj == null || obj.getClass() != getClass())
40 ItemSet other = (ItemSet)obj;
41 if(other.items.length != items.length)
43 for(int i=0;i<items.length;++i)
44 if(!items[i].equals(other.items[i]))
49 public String toString(AnaGrammar grammar) {
50 StringBuilder b = new StringBuilder();
52 for(Item item : items) {
57 b.append(" ").append(item.toString(grammar));