1
1
package pl .koder95 .interpreter ;
2
2
3
3
import java .util .Queue ;
4
- import java .util .Scanner ;
5
4
import java .util .concurrent .LinkedBlockingQueue ;
6
5
7
6
/**
8
7
* Definiuje sposób podziału danych wejściowych na tokeny.
9
- * Standardowo korzysta ze {@link Scanner skanera}, aby dzielić i analizować ciąg odczytywanych wartości.
10
- * Nic nie stoi na przeszkodzie, aby użyć innego sposobu. Wystarczy oprócz implementacji metody {@link #next()}
11
- * nadpisać metodę {@link #hasNext()}.
8
+ * Korzysta ze {@link Readable źródła znaków}, aby dostarczać ciąg odczytywanych znaków.
12
9
*/
13
10
public abstract class Tokenizer {
14
11
15
- private Scanner scanner ;
12
+ private Readable source ;
16
13
17
14
/**
18
- * Tworzy nową instancję tokenizera ustawiając skaner na wartość {@code null}.
19
- * Dla poprawnego funkcjonowania należy wywołać metodę {@link #useScanner(Scanner )}.
15
+ * Tworzy nową instancję tokenizera ustawiając źródło znaków na wartość {@code null}.
16
+ * Dla poprawnego funkcjonowania należy wywołać metodę {@link #setSource(Readable )}.
20
17
*/
21
18
public Tokenizer () {
22
- this .scanner = null ;
19
+ this .source = null ;
23
20
}
24
21
25
22
/**
26
- * @param scanner skaner używany podczas procesu tokenizacji danych wejściowych
23
+ * @param source źródło znaków wczytywanych podczas procesu tokenizacji
27
24
*/
28
- public void useScanner ( Scanner scanner ) {
29
- this .scanner = scanner ;
25
+ public void setSource ( Readable source ) {
26
+ this .source = source ;
30
27
}
31
28
32
29
/**
33
30
* Metoda używana podczas procesu tworzenia tokenów w metodzie {@link #next()}.
34
- * @return zwraca aktualnie ustawiony skaner
31
+ * @return zwraca aktualnie ustawione źródło
35
32
*/
36
- protected final Scanner getScanner () {
37
- return scanner ;
33
+ protected final Readable getSource () {
34
+ return source ;
38
35
}
39
36
40
37
/**
@@ -61,9 +58,7 @@ public Queue<NonTerminalExpression<?>> enqueue() {
61
58
* Sprawdza, czy istnieje możliwość pobrania następnego tokenu.
62
59
* @return {@code true} – jeśli istnieje następny token, {@code false} w przeciwnym razie
63
60
*/
64
- public boolean hasNext () {
65
- return scanner != null && scanner .hasNext ();
66
- }
61
+ public abstract boolean hasNext ();
67
62
68
63
/**
69
64
* Przetwarza dane wejściowe i zwraca je w postaci {@link NonTerminalExpression wyrażenia nieterminalnego},
0 commit comments