Лекция: 45 сағат С¤Ж: 45 саѓат обс¤Ж: 45 саѓат Барлыќ саѓат саны: 135 саѓ Ќорытынды баќылау: емтихан 2 семестр


Лекция 9 Тақырыбы: Транслятор блоктарының аралас өзараәрекеттесуі



бет17/31
Дата24.04.2016
өлшемі1.97 Mb.
#79257
түріЛекция
1   ...   13   14   15   16   17   18   19   20   ...   31

Лекция 9

Тақырыбы: Транслятор блоктарының аралас өзараәрекеттесуі



1. Транслятор блоктарының 2 өтпелі ұйымдастырылуы

2. Трансляторда код генераторы мен эмуляторды бірге қолдану
1. Көп өтімді мен бір өтімді трансляция схемаларын үйлестіру әртүрлі аралас вариантарды тудырды.Олардың көбісі табысты қолдануда. Мысал ретінде олардың кейбірін қарастырамыз.

Төмендегі суретте барлық процессті 2 өтуге болған транслятор блоктарының өзара әрекеттесу схемасы берілген. Бірінші өтуде прогрмманың толық аралық көрінісі жасалады, екіншісінде код генерациясы жүзеге асырылады. Мұндай схеманы қолдану трансляторды бір есептеу жүйесінен екіншісіне оңай өткізуге мүмкіндік береді. Бұл код генераторын қайта жазу жолымен жүзеге асады.

Єрі, код генераторы орнына эмуляторды ауыстырып ќосу оњай. Эмулятор єр т‰рлі орталарда пайдалануѓа баѓытталѓан программалау ж‰йесін кейбір тілдерде дайындауѓа оњай м‰мкіндік береді.
2. Код генераторы мен эмуляторды бірге қолданылған трасляторларда бар. Мұндай траслятор схемасы төмендегі суретте көрсетілген→

Трансляция процесі код генерациясын қоса өтулердің кез-келген санында орындалу мүмкін. (суретте бір өтпелі трансляция схемасы). Бірақ, құрылған обектілі код сәйкес есептеуіш жүйеге (ЭВМ-де )орындалмайды, өзге құрылымды (архиттектуралы) компютерде эмуляцияланады. Мұндай схема Java программалау тілінде құрылған ортада қолданылады. Транслятодың өзі виртуалды Java-машинаның кодын генерациялайды. Ал оның эмуляциясы Internet браузер ортасында не жеке (автономды) арнайы құралдар көмегі мен жүзеге асырылады.

Казіргі кезеңде есептеуіш машиналардың көпшілігі микропрограммалық басқаруды пайдаланып жүзеге асырылған. Ал басқаруды микропрграммалық құрылғысын машиналық кодты эмуляция жасайтын программа ретінде қарастыруға болады.

Бұл айтылғандар соңғы схеманы кеңінен қолданылуын көрсетеді.







Лекция 10

Тақырыбы: Компиляция этаптары





  1. Компилятордың логикалық құрылымы

  2. Компиляция этаптары

1. Трансляция құруда әртүрлі алгаритмдер мен техникалық әдістер қолданылады. Барлық трансляторларда (компиляторларда да интерпритаторларда да ) іс жүзінде төменде келтірілген процестердің көп бөлігі кездеседі:

-лексикалық анализ синтаксистік анализ.

-семантикалық анализ.

-программаның аралық көрінісін генерациялау.

-оптимизациялау.

-объектілі программа генерациясы.

Кеибір интерпретаторларда аралас вариантты трансляциялауларда кеибір этаптар мүлде жоқ болуы мүмкін.

Конкрет компеляторларда бұл процестердің реті өзгеруі,кеибіреулеріортақ фазаларға біріктірілуі мүмкін.

Біз жалпы компиляция этаптарын қарастырамыз.Төмендегі суретте компилятордың логикалық құрылымы келтірген.

Бұл жерде:

Бастапқы программа -жоғары деңгеилі тілде жазылған программа тексті.

Мәліметтік кесте -өзіндік жеке құрылым,лексикалық анализ барысында толтырылып, толықтырылып отырады. Сонымен компиляция келесі этаптардан тұрады.

1. Лексикалық анализ. .Лексемаларды аралық көріністерге келтіру (мысалы,идентификаторлар мен аиыру белгілерін сандармен ауыстыру.)

2. Синтаксистік анализ. Кеиде бұл этапта өңдеуді жеңілдету үшін қосымша аиыру белгілері енгізіледі,ал барлары ауыстырылады.

3. Аралық код генерациясы (трансляция).Бұл этапта барлық идентификатор және басқа операндалардың түрлері мен типтері не контроль жасалады.Мұнда әдетте бастапқы программаны арлық жазу формасына (көрінісіне)түрлендіру

(мысалы,польски формасына )синтаксистік анализбен бір мезгілде жүзеге асады.

4.Кодекстің оптимизациясы.

Даиын программадағы аинымалылар үшін жадыны үлестіру.

5.Объектілі код инерациясы және программалық сегменттер компоковкасы.

Бұл этаптардың барлығында да түрлі кестелермен жұмыс жүргізіледі.Дербес жағдаида әрбір блок үшін (егер тілде мұндаилар бар болса) ішкі сипатталған аинымалылар өз атрибуттарымен бірге есте сақталады. Шартты түрде бұл этаптарды келесі түрде беинелеуге болады.

Мынадай тәуелділіктердің болуы айқын :

Э
ВМ құрылымына дәлірек, жүйе өнімділігіне компилятор құрылымының тәуелділігі.Мысалы жады аз болса, компиляцияның өту саны артады.(көп өтімді компиляторлар), жады үлкен болса компиляцияның барлық этаптарын бір өтуде орындауға болады (бір өтімді компилятор).

Лекция 11

Тақырыбы: Лексикалық анализ (сканер)





  1. Лексемалардың түзілуі

  2. Лексикалық анализатор типтері

  3. Сканердің кестелермен жұмысы

1. Сканердің кірісінде қайсыбір алфавит символдарының тізбегі тұрады.(сканер үшін бастапқы программамыз осындай болып көрінеді) Кейбір символдар комбинацияларын сканер бір объект ретінде қарастыру мүмкін. Мысалы:



  • бір не одан көп пробелдер (бос орын) бір пробелмен ауыстырылады;

  • кілттік сөздер (Begin, end, integer) сияқтылар;

  • константаны білдіретін символдар тізбегі;

  • индентификатроды білдіретін символдар тізбегі;

Осылайша, лексикалық анализатор (ла) белгілі бір терминал

символдарды (яғни енуші символдар) бірдей синтаксистік объектілерге – лексемаларға топтастырылады. Қарапайым жағдайда лексема бұл – мына түрдегі жұп <лексима типі, мәні > енуші тізбектерден лексемаларды белгілеп алу көбінесе коррект тілдің құрылымына тәуелді болады. Мынадай енуші тізбек “567АВ” қалай интерпетация жасалынады? Бұл бір ғана лексема (индентификатор ) болуы мүмкін, 2 лексима да болуы мүмкін; “567” константа және “АВС” атау. Екінші жағдайда лексемалар арасына айыру белгісін қою керек (мысалы, пробел), не алдын ала бұдан кейін не келетіні мәлім болуы керек.


2. Лексикалық анализатор типтері.

Лексикалық анализатордың екі негізгі типі бар:

тура (ТЛА) және тура емес (ЕЛА).

Тура ЛА ағымдағы көрсеткіштің дәл оң жанында орналасқан лексеманы анықтап, көрсеткішті лексеманы құраған текст бөлігінен оңға қарай жылжытып қояды. (ТЛА көрсеткіштің оң жағындағы символдардан құралған лексема типін анықтайды).

Тура емес ЛА көрсеткіштің дәл оң жанында орналасқан белгілер берілген типтей лексеманы құрай ма, жоқ па соны анықтайды. Басқаша, айтқанда ол үшін алдын ала лексема типі беріледі және ол көрсеткіштің оң жағындағы символдарды анықтап, берілген типті қанағаттандыруын тексереді.

ТЛА – ң құрылымы күрделірек. –Ол ЕЛА –ға қарағанда көбірек амалдар орындауға міндетті. Бұған қарамастан, қазіргі программалау тілдерінің көбісінде тура лексикалық анализатор синтаксисі пайдаланылады. (Бұл тіл сөйлемдерінің сыртқы көрінісімен де байқалуы мүмкін).

Фортран- бұл тура емес лексикалық анализаторды қолданатын тілдердің классикалық үлгісі. Мәселе, бұл тілде пробелдің қолданылмауында. Мысалы, мынадай конструкцияны қарастыралық:

DO5I=1,10….

Бұл сөйлемді түсіну үшін тура емес лексикалық анализатор қажет. Ол былайша топшаланады: “DOS1” идентификатор не кілттік сөз “DO”, бұдан соң белгі – 5, әрі қарай – айнымалы атауы “І”

Мұндай келеңсіздіктер С не С++ сияқты тілдердің компиллорын дайындаушылар да кездеседі. С және С++ тілдерінде қатар комментарийлері “/*.....*/” және “//,,,,” белгілерімен жазылады.

Лексикалық анализ жүргізу барысында “/” символын кездестіріп, алдын ала оның не оператор не қатар комментарий екендігі белгісіз болады.

Жалпы, көп символды лексемалар – анализ үшін оңай болмайды. Сонымен сканер шығысында – атаулардың, айыру белгілерінің және т.с.с ішкі арлық көрінісі. Мысалы: сканер кірісі: AVR:=B+CDE; // комментарий:

Сканер шығысы : 38, -8, 65, -2, 184.

(Егер біз меншіктеу операторын “:=” – 8кодты санмен, қосу амалын –2 санымен, айнымалы атауларын 38, 65 және 184 сандарымен белгілеуге келіссек).


3.Бұдан бөлек сканер түрліше типтегі кестелер құрумен айналысады. Ең алдымен атаулар кестесі. Мұнда ол танылған атауларды – идентификатор, константа, белгілер т.с.с ендіріп отырады.

Кестелермен жұмыс.

Атаулар кестесі төменде келтірілген кестеге ұқсас құрылымға ие:


Элемент номері

Идентификатор

Қосымша мәлімет

(типі, көлемі т.с.с)



1

А

Идентификатор, тип = қатар

...

...

...

П

3.1415

Константа, сан

Кестемен жұмыс істеу механизмі төмендегілерді қамтамасыз етуі қажет:

-жаңа идентификатор және ол туралы мәліметті жылдам тіркеу;

- мәліметті жылдам табу;




Достарыңызбен бөлісу:
1   ...   13   14   15   16   17   18   19   20   ...   31




©dereksiz.org 2024
әкімшілігінің қараңыз

    Басты бет