1. Компилятор фазалары
2. Транслятордың жалпыланған құрылымы
1. Әр түрлі программалау тілдерінің жалпы қасиеті мен заңдылықтары осы тілдердің трансляторларына да тән. Оларда берілген текстерді түрлендірудің ұқсас процестері жүреді. Бұл процестердің өзара әрекеті әр түрлі жолмен ұйымдастырылғанына қарамастан орындалу процесі бірдей нәтиже әкелетін функцияларды ерекше белгілеуге болады. Мұндай функцияларды трансляциялау процесінің фазасы деп атайды.
Компилятор мен интерпретатордың ұқсастығын ескере отырып, компиляторда бар фазаларды қарастырсақ. Онда
-
Лексикалық анализдің фазасы.
-
Синтаксистік анализдің фазасы. Ол мыналардан тұрады.
бейнелерді немесе объектілі моделін тудыратын семантикалық талдау.
-
Кодты генерациялау фазасы. Ол мыналарды іске асырады:
-
аралық бейнелердің немесе тілдің объектілі моделі
компонентінің семантикалық анализі.
-
Аралық берілгендерді немесе объектілі модельдерді
объектілі кодқа өткізу.
Трансляциялау процесінің негізгі фазалар мен қатар қосымша фазалары бар:
- аралық берілгендердің анализінің дұрыстығынан
- аралық берілгендердің оптимизациялаудан тұратын.
-
Аралық берілгендерді зерттеу және оптимизациялау фазасы.
-
Объектілі кодты оптимизациялау фазасы.
Интерпретатордағы айырмашылық, кодты генерациялау фазасы.
Аралық берілгендердің немесе тілдің объектілі моделінің элементтерінің эмуляция фазасымен ауыстырылған.
Сондай-ақ интерпретаторда әдетте аралық берілгендерді оптимизациялау жүрмейді, бірден оларда эмуляциялау жүреді.
2. Программаның өңделетін текстінде бар барлығына бірдей фаза-анализ процесі мен қателерді жөндеу компилятордың фазалары есепке алынған жалпыланған құрылымы төмендегі суреттегідей:
Ол лексикалық анализатордан, синтакситік анализатордан, код генераторынан, қателер анализаторынан тұрады.
Интерпретаторда код генераторының орнына эмулятор қолданылады, онда аралық берілгендерден басқа алғашқы берілгендер беріледі. Эмулятор шығысында есептеулер нәтижесі беріледі.
Интерпретатордың жалпыланған құрылымы:
Лекция 6 Тақырыбы: Транслятор фазаларының функциялары
1. Лексикалық және синтаксистік анализатор функциялары
2. Синтаксистік анализатордың жалпыланған құрылымы
1. Лексикалық анализатор (сканер деген атпен белгілі) лексемалар деп аталатын, кіретін символдар тізбегінің оқылуын және олардың элементар конструкцияларға бірігуін қамтамассыз етеді. Әрбір лексеманың классы және мәні бар. Әдетте лексемалар роліне тілдің элементар констукциялары, мысалы идинтификатор, нақты сандар, коментарилер кіреді. Алынған лексемалар синтаксистік анализаторға беріледі. Лексикалық анализатор транслятордың міндетті бөлігі болып есептелмейді. Бірақ ол трансляциялау процесінің тиімділігін жоғарылатады.
Синтаксистік анализатор, түсіп жатқан лексемаларды, программаның
синтаксистік құрылымы және тілдің объектілі моделін қалыптастыру арқылы семантикалық анализді пайдаланып берілген программаны жолдауды жүзеге асырады. Объектілі модель, ұғымдар мен семантикалық байланыстар арасындағы байланыстармен толықтырылған синтаксистік құрылымды көрсетеді. Бұл байланыстар:
- айнымалыларға сілтеме, берілгендер типтері және процедура аттары.
- командалардың орындалу ретін анықтайтын байланыстар.
- тілдің объектілі моделінің элементтерінің енгенін анықтайтын және басқа байланыстар.
Осылайша синтаксистік анализатор транслятордың күрделі блогы болып саналады. Сондықтан оны мынадай бөліктерге бөлуге болады:
- танушы (распознователь)
- семантикалық анализ блогы
- аттар таблицасынан және синтаксистік құрылымынан тұратын объектілі моделі немесе аралық берілгендер.
2. Синтаксистік анализатордың жалпыланған құрылымы төмендегі суретте көрсетілген:
Танушы лексемалар тізбегін қабылдап, соның негізінде қолданылатын ережелерге сәйкес айқындауды жүзеге асырады.
Ережелердің айқындау процессі дұрыс өткен лексемалар семантикалық анализаторға беріледі. Ол атаулар кестесін құрады және синтаксистік құрылым фрагменттерін белгілеп фиксирует қояды.
Бұдан бөлек атаулар кестесі мен синтаксистік құрылым арасында қосымша семантикалық байланыстар да фиксация жасалынады нәтижеде программалау тілінің синтаксиске байланыспаған программаның обьектті модель құрылады.
Тіл обьекттерінің толығымен көшіретін синтаксистік құрылымның орнына, оның ықшамдалған
аналогын құру жиі кездеседі. Оны аралық көрініс деп атайды.
Қателер анализаторы транслятордың әртүрлі блоктарында туындаған қателер
туралы мәлімет алып отырады. Алынған мәліметті пайдаланып пайдаланушыға берілетін хабарламаны дайындайды.
Бұдан басқа бұл блок айқындау разбор жұмысы әрі қарай жалғасу үшін қатені дұрыстап көруге тырысуы мүмкін.
Оған транслянушыны әрі қарай жалғастыру мүмкін болмаған жағдайларда программаның коррект аяқталуына тиісті әрекеттер де жүктеледі.
Код генераторы обьектілі моделіне аралық көрініс негізінде обьектілі машинаның кодын құрады. Кодты құру барысы жалпыланған командаларды конкрет есептеуіш машина кодына түрлендіру қажеттілігімен байланысты қосымша семантикалық анализбен қатар жүреді.
Мұндай анализ барысында түрлендіру мүмкіндіктері түпкілікті анықталып, ең тиімді варианты таңдалады
Кодты генерациялаудың өзі командаларды бір түрден басқа түріне кодтау болып табылады.
Достарыңызбен бөлісу: |