Skip to content

Method: create()

1: package de.fhdw.wtf.common.stream;
2:
3: import java.util.ArrayList;
4: import java.util.List;
5:
6: import de.fhdw.wtf.common.token.Token;
7:
8: /**
9: * Implementation of a tokenstream that uses a list of token.
10: *
11: */
12: public final class SimpleTokenStream implements TokenStream {
13:         
14:         /**
15:          * Representing all tokens in the correct order.
16:          */
17:         private final List<Token> data;
18:         
19:         /**
20:          * Constructor of {@link SimpleTokenStream}.
21:          */
22:         private SimpleTokenStream() {
23:                 this.data = new ArrayList<>();
24:         }
25:         
26:         /**
27:          * Constructor of {@link SimpleTokenStream}.
28:          *
29:          * @param data
30:          * data
31:          */
32:         private SimpleTokenStream(final List<Token> data) {
33:                 this.data = data;
34:         }
35:         
36:         /**
37:          * Creates a {@link SimpleTokenStream}-Object.
38:          *
39:          * @return The {@link SimpleTokenStream}-Object
40:          */
41:         public static SimpleTokenStream create() {
42:                 return new SimpleTokenStream();
43:         }
44:         
45:         @Override
46:         public void add(final Token t) {
47:                 this.data.add(t);
48:         }
49:         
50:         @Override
51:         public Token next() {
52:                 final Token result = this.data.get(0);
53:                 this.data.remove(0);
54:                 return result;
55:         }
56:         
57:         @Override
58:         public boolean hasNext() {
59:                 return !this.data.isEmpty();
60:         }
61:         
62:         @Override
63:         public boolean removeFirst() {
64:                 if (this.hasNext()) {
65:                         this.data.remove(0);
66:                         return true;
67:                 }
68:                 return false;
69:         }
70:         
71:         @Override
72:         public Token peek() {
73:                 return this.data.get(0);
74:         }
75:         
76:         @Override
77:         public TokenStream copy() {
78:                 final List<Token> copiedData = new ArrayList<>();
79:                 copiedData.addAll(this.data);
80:                 return new SimpleTokenStream(copiedData);
81:         }
82:         
83: }