1 package de.fhdw.wtf.common.stream; 2 3 import de.fhdw.wtf.common.token.Token; 4 5 /** 6 * Definition of a sequence of Token. 7 */ 8 public interface TokenStream { 9 10 /** 11 * Adds the {@link Token} <code>t</code> to the end of the stream. 12 * 13 * @param t 14 * {@link Token} to be added. 15 */ 16 void add(Token t); 17 18 /** 19 * Returns the next {@link Token} element from the stream. <br> 20 * <br> 21 * <code> 22 * TokenStream stream = new ...; <br> 23 * stream.next() // first element <br> 24 * stream.next() // second element <br> 25 * </code> and so on. <br> 26 * 27 * @return the next {@link Token}. 28 */ 29 Token next(); 30 31 /** 32 * Tests if there is at least one more {@link Token} at the Stream. 33 * 34 * @return <code>true</code> if there are {@link Token}s left at the Stream. <br> 35 * <code>false</code> if the Stream is empty. 36 */ 37 boolean hasNext(); 38 39 /** 40 * Removes the first Token in the stream. 41 * 42 * @return Returns true if an element is removed, false otherwise. 43 */ 44 boolean removeFirst(); 45 46 /** 47 * Returns the next {@link Token} element without removing it from the stream. 48 * 49 * @return the next {@link Token}. 50 */ 51 Token peek(); 52 53 /** 54 * Return a Copy of the {@link TokenStream}. 55 * 56 * @return copied Tokenstream 57 */ 58 TokenStream copy(); 59 60 }