INTERPRETER


Funkcja interpretera

Ostatnim etapem w projekcie jest uruchomienie kodu. Wcześniejsze etapy (skanowanie i parsowanie) miały za zadanie przygotować wszystko co jest niezbędne do tego aby program mógł być wykonany.
Skaner wyodrębnił pewne części w kodzie programu po to aby parser mógł dokonać sprawdzenia poprawności składni wszystkich instrukcji.
Parser swoją pracą przygotował i umożliwił wejście w ostatni etap - prawdziwe uruchomienie kodu.

Jak działa interpreter?

Interpreter jest uruchamiany w momencie klikniecia przycisku INTERPRETUJ. Uruchomiona zostaje wtedy odpowiednia funkcja, która w pętli while analizuje wcześniej utworzoną listę z wszystkich leksem występujących w kodzie programu od pierwszego słowa begin do ostaniego end.
Główną funkcją jest funkcja i_blok() która w pętli przegląda wszystkie instrukcje zawarte w bloku begin end. Gdy napotyka kolejnego begina po prostu rekurencyjnie wywołuje sama siebie a gdy leksem na liscie jest rozny od słowa kluczowego begin uruchamiana jest odpowiednia do danej leksemy funkcja.
Funkcje obsługuja wykonanie poszczególnych instrukcji z bloku i odpowiednio pzesuwają wskaźnik który bada leksemy na koniec danej instruckji.
Bardzo ważnymi funkcjami odpowiedzialnymi za działanie interpretera są funkcje: i_wyr_arytmetyczne() oraz i_wyr_logiczne(). Wywoływane są one poprzez funkcje opisane wczesniej obsługujące poszczególne instrujce (są to punkcje typu:i_funkcja_while(), i_funkcja_for(), i_funkcja_if()) . Wyliczają one wartosci wyrażen arytmetycznych oraz logicznych. Te wartości przekazują do funkcji które je wywołały umożliwiając ty samym poprawne wykonywanie kodu programu.
Innymi typami funkcji są funkcje obsługujące we/wy języka: write(), writeln(), read() oraz readln().
Write() oraz writeln() sąbaardzo prostymi funkcjami wypisującymi ciagiznaków bądź zmienne w polu memo. Natomiast read() i readln() są nieco bardziej skomplikowane gdyż przerywaja wykonywanie się podanego kodu programu do czasu gdy użytkownik wprowadzi wartośc z klawiatury i zakończy wprowadzanie klawiszem enter. Wprowadzane znaki zostają zczytywane i następnie sprawdzane jest czy typ zmienej odpowiada wprowadzonym wartosciom.

Kod źródłowy funkcji interpretera