Skip to content

Commit f3ba408

Browse files
committed
Uzupełnienie dokumentacji
1 parent ef1a13c commit f3ba408

File tree

7 files changed

+61
-0
lines changed

7 files changed

+61
-0
lines changed
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,17 @@
11
package pl.koder95.interpreter;
22

3+
/**
4+
* Interfejs dostarcza wyrażenie w formie ciągu znaków zwracany przez metodę {@code asString()}.
5+
* Ma dwie dopuszczalne odmiany, które różnią się ze względu na funkcje i znaczenie w procesie interpretacji.
6+
* <ol>
7+
* <li>{@link NonTerminalExpression} – wyrażenie nieterminalne, które stanowi podstawowy element budowania innych typów wyrażeń</li>
8+
* <li>{@link TerminalExpression} – wyrażenie terminalne, które można zinterpretować w ramach dostępnego kontekstu</li>
9+
* </ol>
10+
*/
311
public sealed interface Expression permits TerminalExpression, NonTerminalExpression {
412

13+
/**
14+
* @return wyrażenie w postaci ciągu znaków
15+
*/
516
String asString();
617
}

src/main/java/pl/koder95/interpreter/Interpreter.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,9 @@ public interface Interpreter<C extends Context, R> {
3434
*
3535
* @param readable dane odczytywane przez tokenizer i zamieniane na postać terminalną
3636
* @return wynik interpretacji
37+
* @throws IllegalStateException w przypadku niedostarczenia parsera lub
38+
* w przypadku niedostarczenia tokenizera przez parser
39+
* @throws SyntaxException w przypadku błędów składniowych w dostarczonych danych
3740
*/
3841
default R interpret(Readable readable) {
3942
Tokenizer tokenizer = getTokenizer();

src/main/java/pl/koder95/interpreter/NonTerminalExpression.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,18 @@
22

33
import java.util.Objects;
44

5+
/**
6+
* Wyrażenie nieterminalne to takie, któremu nie można przypisać żadnego znaczenia, ale jest podstawowym elementem,
7+
* z którego zbudowane mogą być {@link TerminalExpression wyrażenia terminalne}. Jest to odpowiednik tokena lub symbolu.
8+
* @param <T> typ obiektu, który może zostać skojarzony z wyrażeniem
9+
*/
510
public non-sealed interface NonTerminalExpression<T> extends Expression {
11+
/**
12+
* Zwraca obiekt skojarzony z wyrażeniem, czyli taki, który stanowi wartość wyrażenia, jego reprezentację
13+
* lub jego dookreślenie. Wykorzystywany jest podczas interpretowania
14+
* przez {@link TerminalExpression wyrażenia terminalne}.
15+
* @return obiekt skojarzony z wyrażeniem
16+
*/
617
T getObject();
718

819
@Override

src/main/java/pl/koder95/interpreter/Parser.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ public interface Parser<C extends Context, R> {
1313
* Buduje drzewo abstrakcyjnej syntaktyki.
1414
* @param tokens dane wejściowe poddane tokenizacji
1515
* @return wyrażenie terminalne najwyższego poziomu
16+
* @throws SyntaxException w przypadku błędów składniowych w dostarczonych danych
1617
*/
1718
TerminalExpression<C, R> buildAbstractSyntaxTree(Queue<NonTerminalExpression<?>> tokens);
1819
}

src/main/java/pl/koder95/interpreter/SyntaxException.java

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,17 +5,36 @@
55
*/
66
public class SyntaxException extends IllegalArgumentException {
77

8+
/**
9+
* Tworzy ogólny wyjątek.
10+
*/
811
public SyntaxException() {
912
}
1013

14+
/**
15+
* Tworzy wyjątek, który przekazuje wiadomość wyjaśniającą jego wyrzucenie.
16+
*
17+
* @param message wiadomość wyjaśniająca wyrzucenie wyjątku
18+
*/
1119
public SyntaxException(String message) {
1220
super(message);
1321
}
1422

23+
/**
24+
* Tworzy wyjątek, który przekazuje wiadomość wyjaśniającą jego wyrzucenie oraz powód wyrzucenia.
25+
*
26+
* @param message wiadomość wyjaśniająca wyrzucenie wyjątku
27+
* @param cause powód wyrzucenia wyjątku
28+
*/
1529
public SyntaxException(String message, Throwable cause) {
1630
super(message, cause);
1731
}
1832

33+
/**
34+
* Tworzy wyjątek, który przekazuje powód jego wyrzucenia.
35+
*
36+
* @param cause powód wyrzucenia wyjątku
37+
*/
1938
public SyntaxException(Throwable cause) {
2039
super(cause);
2140
}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,18 @@
11
package pl.koder95.interpreter;
22

3+
/**
4+
* Wyrażenie terminalne to takie, które można zinterpretować, dlatego interfejs dostarcza
5+
* metodę zwracającą obiekt żądanego typu uzyskany w wyniku interpretacji.
6+
* @param <C> typ kontekstu wykorzystywanego podczas interpretowania wyrażenia
7+
* @param <R> typ obiektu zwracanego w wyniku interpretacji
8+
*/
39
public non-sealed interface TerminalExpression<C extends Context, R> extends Expression {
10+
11+
/**
12+
* Poddaje wyrażenie interpretacji, korzystając z podanego kontekstu.
13+
* @param context kontekst wykorzystywany podczas interpretowania wyrażenia
14+
* @return wynik interpretacji
15+
* @throws SyntaxException błąd składniowy wewnątrz wyrażenia
16+
*/
417
R interpret(C context);
518
}

src/main/java/pl/koder95/interpreter/Tokenizer.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ protected final Scanner getScanner() {
4141
* Umieszcza w kolejce wszystkie możliwe do odczytania tokeny.
4242
* @param queue kolejka wyrażeń nieterminalnych (tokenów)
4343
* @return {@code queue}
44+
* @throws SyntaxException w przypadku błędów składniowych w dostarczonych danych
4445
*/
4546
public final Queue<NonTerminalExpression<?>> enqueue(Queue<NonTerminalExpression<?>> queue) {
4647
while (hasNext()) queue.add(next());
@@ -50,6 +51,7 @@ public final Queue<NonTerminalExpression<?>> enqueue(Queue<NonTerminalExpression
5051
/**
5152
* Tworzy nową kolejkę wyrażeń nieterminalnych (tokenów) i umieszcza w niej odczytane tokeny z wejścia.
5253
* @return nowa instancja kolejki {@link NonTerminalExpression wyrażeń nieterminalnych (tokenów)}
54+
* @throws SyntaxException w przypadku błędów składniowych w dostarczonych danych
5355
*/
5456
public Queue<NonTerminalExpression<?>> enqueue() {
5557
return enqueue(new LinkedBlockingQueue<>());
@@ -67,6 +69,7 @@ public boolean hasNext() {
6769
* Przetwarza dane wejściowe i zwraca je w postaci {@link NonTerminalExpression wyrażenia nieterminalnego},
6870
* czyli tokenu.
6971
* @return token typu {@link NonTerminalExpression}
72+
* @throws SyntaxException w przypadku błędów składniowych w dostarczonych danych
7073
*/
7174
public abstract NonTerminalExpression<?> next();
7275
}

0 commit comments

Comments
 (0)