Narzędzia użytkownika

Narzędzia witryny


interpreter

To jest stara wersja strony!


Wzorzec projektowy interpreter

Wzorzec projektowy interpretera korzysta z reprezentacji gramatyki analizowanego języka formalnego w celu interpretacji wyrażeń w tym języku. Wykorzystywany jest, gdy możliwe jest zapisanie zadań (problemów) w prostym, sformalizowanym języku. Rozwiązanie problemu polega wtedy na odpowiedniej interpretacji wyrażenia tego języka.

Typowe możliwości wykorzystania:

  • interpretacja języków (programowania, matematycznych) w kompilatorach, interpreterach
  • dopasowywanie wzorców, np. opisanych za pomocą wyrażeń regularnych
  • inne, dające się formalnie opisać problemy, np. walidacja/interpretacja protokołów komunikacyjnych

Struktura

AbstractExpression

wyrażenie abstrakcyjne, z nich składa się wyrażenie w analizowanym języku

TerminalExpression

Wyrażenie (symbol) terminalne w danej gramatyce, czyli wyrażenie, które nie składa się z podwyrażeń. Przykładowo, dla gramatyki wyrażeń arytmetycznych liczby są terminalami.

NonterminalExpression

Wyrażenie składające się (dające się podzielić) na podwyrażenia (terminalne lub nie). Na przykład dla gramatyki wyrażeń arytmetycznych takim wyrażeniem jest „3 + 5”.

Context

Aktualny kontekst, który przechowuje stan, w którym znajduje się w danym momencie interpreter, co dla gramatyk kontekstowych pozwala m.in. decydować jak na danym etapie należy interpretować dalsze elementy ciągu wejściowego. Kontekst jest globalnym elementem interpretera. Na przykład analizując kolejne cyfry liczby dziesiętnej kontekst może reprezentować miejsce dziesiętne, np. dziesiątki, setki itd.

Client

Tworzy drzewo, reprezentujące konkretne zdanie wejściowe w języku zdefiniowanym przez gramatykę. Drzewo to jest budowane z konkretnych instancji wyrażeń terminalnych i nieterminalnych. Następnie wywołuje operację interpretacji na korzeniu tego drzewa.

interpreter.1228641292.txt.gz · ostatnio zmienione: 2008/12/07 10:14 przez posciak