Pok-7-wyk-Slajd27

Z Studia Informatyczne
Wersja z dnia 19:18, 30 sie 2006 autorstwa Complak (dyskusja | edycje)
(różn.) ← poprzednia wersja | przejdź do aktualnej wersji (różn.) | następna wersja → (różn.)
Przejdź do nawigacjiPrzejdź do wyszukiwania

Obsługa błędów – nieterminal A

Obsługa błędów – nieterminal A


W trakcie implementowania funkcji dla każdego nieterminala osobno należy rozważyć akcje dla poprawnego wejścia i dla błędów.

Jakość detekcji i sygnalizacji błędów będzie zależeć od staranności analizy przeprowadzonej na tym etapie. Najprostszym rozwiązaniem jest oczywiście natychmiastowe przerwanie działania z komunikatem o błędzie. Ilość i jakość informacji o błędzie jaka zostaje przekazana użytkownikowi jest wtedy minimalna.

Dodanie kodu diagnostyki błędów zdecydowanie powiększa rozmiar analizatora, co widać w przedstawionym przykładzie (kod zaznaczony na czerwono służy do obsługi błędów). W analizatorze przedstawiono jedną z możliwych interpretacji błędów – nie w każdym przypadku da się jednoznacznie określić na czym polegał i w którym miejscu wystąpił błąd.

Funkcja implementująca nieterminal A podgląda jeden symbol z wejścia, którym może być:

  • litera a – wejście jest poprawne, przesuwamy głowicę, wywołujemy funkcję RA w celu obliczenia długości reszty ciągu, po powrocie zwiększamy długość o 1 (znak, który odczytaliśmy przed wywołaniem funkcji)
  • litery b i c – wejście jest błędne, zabrakło litery a, drukujemy komunikat diagnostyczny i powracamy z funkcji
  • koniec pliku – wejście jest puste, dalsza diagnostyka nie ma sensu, drukujemy komunikat i przerywamy program
  • dowolny inny znak – w pliku są znaki spoza zbioru rozpoznawanych znaków, również nie ma sensu kontynuować analizy, drukujemy komunikat i przerywamy program


<< Poprzedni slajd | Spis treści | Następny slajd >>