Подручја рада
Претрага
33. Програмски интерпретатори и преводиоци.

Уводни део часа ( 5 мин.)
1. Шта је софтвер ?
2. Која је улога системског софтвера ?
___________________________________________________________________________________
Главни део часа :

Програмски ( развојни ) систем - програми који служе за аутоматизацију припреме и тестирања корисничких програма.
То су програмски језици, програмски преводиоци ( асемблери, компилатори и интерпретатори ), едитори, библиотеке потпрограма и услужни програми.
Основна подела програмског система је на програмске преводиоце ( језичке процесоре ) и услужне програме.
Програмски преводиоци - језички процесори који прихватају програме писане на неком од програмских језика и генеришу функционално еквивалентне програме на неком другом језику.
За разлику од асемблера компилатор и интерпретатор, по правилу, за једну наредбу написану у вишем програмском језику генеришу више инструкција машинског језика.

image008.gif                                                                                 


                                                                           Компилатори

Компилатор - преводилац чији је улазни језик виши програмски језик, а излазни језик је машински језик.
Компилатор преводи на интерни машински језик читав програм па се тек онда приступа његовом извршавању.
Компилација се може разложити на 2 главна задатка :
1) анализу - утврђивање структуре изворног програма ;
2) синтезу - генерисање ( конструкцију ) циљног програма еквивалентног изворном програму.
У процесу анализе изворни програм се конвертује у апстрактну форму која садржи сва битна својства алгоритма. Анализа обухвата лексичку и синтаксну анализу. Лексичком анализом се разлажу улазне јединице одређеног значења ( имена, константе, резервисане речи, оператори ). Семантичка нализа представља процес одлучивања да ли је низ улазних симбола реченица датог језика и, ако јесте, одређивање синтаксне структуре тога низа.
Процес синтезе садржи генерисање кода и асемблирање. Генерисање кода трансформише апстрактни изворни програм у еквивалентни машински програм. Асемблирањем се врши конверзија машинских наредби у одговарајући излазни формат и формира објектни модул прилагођен обради повезивача циљне машине.


                                                                         Интерпретатори

Интерпретатор - преводилац чији је улазни језик виши програмски језик, а излазни језик је нека посредна форма која се интерпретира ( извршава ).
Интерпретатор преводи једну наредбу из вишег програмског језика на низ инструкција машинског језика, приступа извршавању ових инструкција, потом прелази на превођење и извршавање следеће наредбе.
Интерпретаторски начин реализације преводиоца највише се примењује код интерактивних програмских језика ( нпр. BASIC ) и код разних командних језика. Кад год стигне нова улазна линија, даље акције преузима контролер обраде који позива :
1) програм хомогенизатор ради конверзије улазне програмске линије у неки стандардни интерни формат ;
2) синтаксни анализатор и генератор кода ради синтаксне провере и генерисања машинског кода ;
3) процесор команди ради обраде управљачке ( контролне ) наредбе, нпр. RUN, али не и њеног извршења.
Извршење преведеног програма спада у надлежност извршиоца. Реализује се читањем одговарајућег машинског кода и његовим извршавањем. Стварно извршавање је мешавина интерпретативног и машинског кода, с тим што се већина наредби извршава преко машинског кода, а контрола преласка с једне на другу наредбу подржава се интерпретативно.


                                                                          Претпроцесори

Претпроцесор - програм који извршава неку модификацију изворног програма да би га учинио погодним за улаз у компилатор. Модификације могу бити једноставне промене формата, али су најчешће то проширења ( експанзије ) макронаредби виших програмских језика којима се проширује језик за неке специјалне намене.

Одговорити на питања :
1. Шта спада у програмски систем ?
2. Шта спада у програмске преводиоце, а шта у услужне програме ?
3. Објаснити компилаторе.
4. Објаснити интерпретаторе.
5. Објаснити претпроцесоре.