KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > ro > infoiasi > donald > compiler > parser > LR1Item


1 // find better name than getSufixAndLookahead
2

3 package ro.infoiasi.donald.compiler.parser;
4
5 import ro.infoiasi.donald.compiler.cfg.*;
6
7 public class LR1Item {
8     private LR0Item lr0item;
9     private Terminal lookahead;
10
11     public LR1Item(LR0Item lr0item, Terminal lookahead) {
12         this.lr0item = lr0item;
13         this.lookahead = lookahead;
14     }
15     
16     public boolean equals(Object JavaDoc o) {
17         return (o instanceof LR1Item &&
18             lr0item.equals(((LR1Item)o).lr0item) &&
19             lookahead == ((LR1Item)o).lookahead);
20     }
21
22     public int hashCode() {
23         return 17+lr0item.hashCode()*37+lookahead.hashCode();
24     }
25
26     public LR1Item nextItem() {
27         return new LR1Item(lr0item.nextItem(), lookahead);
28     }
29     
30     public boolean isComplete() {
31         return lr0item.isComplete();
32     }
33
34     public boolean isNew() {
35         return lr0item.isNew();
36     }
37
38     public Symbol getNextSymbol() {
39         return lr0item.getNextSymbol();
40     }
41     
42     public Word getSufixAndLookahead() {
43         if (!getNextSymbol().isTerminal()) {
44             Word w = new Word(lr0item.suffix());
45             w.removeFirst();
46             w.addLast(lookahead);
47             return w;
48         } else {
49             throw new UnsupportedOperationException JavaDoc();
50         }
51     }
52
53     public LR0Item getLR0Item() {
54         return lr0item;
55     }
56     
57     public Production getProduction() {
58         return lr0item.getProduction();
59     }
60
61     public int getPosition() {
62         return lr0item.getPosition();
63     }
64
65     public Terminal getLookahead() {
66         return lookahead;
67     }
68
69     public String JavaDoc toString() {
70         return "("+lr0item+", "+lookahead+")";
71     }
72 }
73
Popular Tags