@@ -12,14 +12,6 @@ public interface Interpreter<C extends Context, R> {
12
12
* @return kontekst używany podczas interpretacji wyrażeń terminalnych
13
13
*/
14
14
C getContext ();
15
-
16
- /**
17
- * @return {@link Tokenizer tokenizer} używany przez {@link Parser parser} do budowy drzewa składni
18
- */
19
- default Tokenizer getTokenizer () {
20
- Parser <C , R > parser = getParser ();
21
- return parser == null ? null : parser .getTokenizer ();
22
- }
23
15
24
16
/**
25
17
* @return {@link Parser parser}, który pobiera tokeny, aby stworzyć drzewo składniowe
@@ -44,12 +36,12 @@ default Tokenizer getTokenizer() {
44
36
* @throws SyntaxException w przypadku błędów składniowych w dostarczonych danych
45
37
*/
46
38
default R interpret (Readable readable ) {
47
- Tokenizer tokenizer = getTokenizer ();
39
+ Parser <C , R > parser = getParser ();
40
+ if (parser == null ) throw new IllegalStateException ("Cannot use readable when parser is null" , new NullPointerException ());
41
+ Tokenizer tokenizer = parser .getTokenizer ();
48
42
ScannerFactory factory = getScannerFactory ();
49
43
if (tokenizer != null && factory != null ) tokenizer .useScanner (factory .create (readable ));
50
44
else throw new IllegalStateException ("Cannot use readable when tokenizer or scanner factory are null" , new NullPointerException ());
51
- Parser <C , R > parser = getParser ();
52
- if (parser == null ) throw new IllegalStateException ("Cannot use readable when parser is null" , new NullPointerException ());
53
45
TerminalExpression <C , R > ast = parser .buildAbstractSyntaxTree ();
54
46
return ast .interpret (getContext ());
55
47
}
0 commit comments