1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 package jTrolog.parser;
23
24 import jTrolog.terms.Term;
25
26 import java.util.NoSuchElementException;
27
28
29
30
31
32
33 @SuppressWarnings({ "rawtypes", "serial" })
34 class TermIterator implements java.util.Iterator, java.io.Serializable {
35
36 private Parser parser;
37 private boolean hasNext;
38 private Term next;
39
40 TermIterator(Parser p) {
41 parser = p;
42 next = parser.nextTerm(true);
43 hasNext = (next != null);
44 }
45
46 public Object next() {
47 if (hasNext) {
48 if (next == null)
49 next = parser.nextTerm(true);
50 hasNext = false;
51 Term temp = next;
52 next = null;
53 return temp;
54 } else if (hasNext()) {
55 hasNext = false;
56 Term temp = next;
57 next = null;
58 return temp;
59 }
60 throw new NoSuchElementException();
61 }
62
63 public boolean hasNext() {
64 if (hasNext)
65 return hasNext;
66 next = parser.nextTerm(true);
67 if (next != null)
68 hasNext = true;
69 return hasNext;
70 }
71
72 public void remove() {
73 throw new UnsupportedOperationException();
74 }
75 }