View Javadoc

1   /*
2    * #%L
3    * prolobjectlink-jpi-jtrolog
4    * %%
5    * Copyright (C) 2012 - 2018 WorkLogic Project
6    * %%
7    * This program is free software: you can redistribute it and/or modify
8    * it under the terms of the GNU Lesser General Public License as
9    * published by the Free Software Foundation, either version 2.1 of the
10   * License, or (at your option) any later version.
11   * 
12   * This program is distributed in the hope that it will be useful,
13   * but WITHOUT ANY WARRANTY; without even the implied warranty of
14   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15   * GNU General Lesser Public License for more details.
16   * 
17   * You should have received a copy of the GNU General Lesser Public
18   * License along with this program.  If not, see
19   * <http://www.gnu.org/licenses/lgpl-2.1.html>.
20   * #L%
21   */
22  package jTrolog.parser;
23  
24  import jTrolog.terms.Term;
25  
26  import java.util.NoSuchElementException;
27  
28  /**
29   * This class represents an iterator of terms from a string.
30   * 
31   * @see jTrolog.terms.Term
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  }