Жұмыс үрдісінде -түрлендіруші дүкен шыңындағы символды оқып, кіріс шынжырын тану мен шығыс шынжырын құрумен байланысты іс-әрекеттерді ғана емес, сонымен қатар төменде келтірілген ережелер түрінде мазмұндауға болатын атрибуттарды өңдеу іс-әрекеттерін де орындау керек.
Кіріс шынжырын өңдеу дүкенде грамматикалық бастапқы символы мен түбір маркері болғанда ғана басталады. Түрлендірушінің бірінші символы дүкенге грамматиканың бастапқы символын енгізіп, бастапқы символдың мұра етілуші символдарына бастапқы мағынаны беру керек. Және де синтезделінуші атрибуттарының өрістері бос көрсеткіштермен толтырылады.
Егер дүкен шыңында атрибуты бар кіріс символы тұрса, онда кіріс лентадан келетін символдар саналады да, бұл символдар өзара салыстырылады. Егер олар дәл келсе, онда лентадан кезекті кіріс символының атрибуты санау жүргізілуі жүргізіледі және қарастырылып жатқан кіріс символының атрибут өрісіне жазылған көрсеткіш сүйенетін шынжырды тудыратын дүкен торына жазылады. Одан кейін кіріс символы мен оның атрибуты дүкеннен жойылады да кіріс бүршігі жылжиды.
Егер дүкен шыңында атрибуты жоқ кіріс символы тұрса, онда кіріс лентасынан кезекті кіріс символы оқылады да бұл символдар салыстырылады. Егер олар дәл келсе, онда символ дүкеннен жойылып, кіріс бүршігі бір позицияға жылжиды.
Егер дүкен шыңында іс-әрекет символы тұрса, онда оның аргументтеріне сәйкес келетін атрибуттар оқылады, одан кейін синтезделінетін атрибуттар іс-әрекет символы функциясына сәйкес мағыналары табылады да, бұл мағыналар синтезделіну атрибут өрісінде көрсеткішке сүйенетін, көрсеткіш шынжырымен анықталатын барлық өрістерге орналастырылады.
Егер іс-әрекет символы шығысқа берілуі қажет болса, онда бұл символ мен оның атрибуттарын шығыс лентаға жазу іске асырылады.
Егер дүкен шыңында терминал емес символ тұрса, онда ол дүкеннен жойылады да оның орнына дүкенде грамматика ережесінің оң жағына сәйкес келетін фрагмент құрылады және бұл фрагменттің тұдырылып жатқан фрагмен астында орналасқан жойылған символ атрибуттарымен байланысы табылады. Бұндай байланыстар фрагменті тұрғызу нұсқауларында анықталуы керек.
Егер дүкен шыңында мағынасы анықталған атрибут тұрса, онда ол дүкеннен жойылады.
Детерминалданған атрибуттық түрлендірушіні тұрғызуда кіріс грамматикасы грамматикасы класына қатысты жай иемдену пішініндегі кез келген -грамматикасы үшін орындауға болады. Түрлендірушіні тұрғызуды мүмкін екендігін анықтайтын фактор болып, жай иемдену пішінінің – атрибутының қасиеті табылады.
–атрибутының қасиеті өрлемейтін түрлендіруші жұмысы кезінде стектен атрибуттарды алып шығу реттілігіне сәйкес келетін атрибуттарды есептеу ретін қамтамасыз етеді.
Тек қана көшірме ережелерінің атрибут мағыналарын есептеуді ереже ретінде қолдануды беретін жай иемдену пішінінің қасиеті атрибуттарды есептеуді мағынаны беру үрдісіне теңестіруге мүмкіндік береді. Бұл жағдайда қойып қойған иемдену туралы мәліметтер иемдену ретін анықтайтын көрсеткіш шынжыры түрінде сақталады.
Келтірілген тұжырымдарды қортындылай келе берілген жай иемдену пішініндегі -грамматикасы бойынша -түрлендірушісі тұрғызу ретін келесі тәсілмен мазмұндаймыз:
Берілген -грамматика ережелерінен барлық атрибуттар мен оларды есептеу ережелерін жоямыз. Нәтижесінде трансляциялау грамматикасын аламыз.
Алынған трансляциялау грамматикасы үшін түрлендіруші құрамыз. Бұндай түрлендіруші кейін атрибуттармен жұмыста қолданылатынын ескеріп, оны құру ережесінде келесі өзгерістерді енгіземіз:
а) түрлендірушінің бірінші командасы грамматикалық алғашқы символының келесі реттегі алғашқы мағыналарын таба аласын десек, бастапқы ретінде ( ,<берілген шынжыр>, ) түріндегі конфигурацияны аламыз.
б) түріндегі ережелерге командаларды біріктіруден бас тартамыз, бұнда атрибуты бар терминал, ал -терминалды және терминалды емес символдардан құрылған шынжыр.
командасының орнына екі командасын қолданамыз, себебі бір команданы орындағанда терминалды символ және оның сәйкес атрибуттары дүкенге жазылмайды. Ал ол жазылмағандықтан терминалының атрибуты қолданылатын атрибутты есептеу ережесі үшін көрсеткіштің тудырылуына мүмкіндікті жояды.
Берілген -грамматиканың әрбір ережесі үшін оң жақ ережесін стекке жазу кезіндегі стек фрагментін тұрғызуды мазмұндайтын нұсқауды құрамыз.
Нұсқауды нөмірлейміз де, нұсқаудың кезекті нөмірімен # символы ретінде нұсқау белгілерін енгіземіз. Шынжырды стекқа жазуды орныдайтын құрылған түрлендірушілердің барлық крмандаларында атрибуттық шынжырды стекқа жазуды орындайтын сәйкес нұсқау шынжырларын белгілермен ауыстырамыз. Нәтижесінде ауысым функциясын келесі түрде аламыз:
( ,<кіріс символы>,<дүкен шыңындағы символ>)=( , <орындайтын нұсқау нөмірі>).
Бұл тәсілмен құрылған -түрлендіруші 1-6 ережелеріне сәйкес жұмыс істеу, нұсқауда жазылған іс-әрекеттерді орындау керек деп тұспалданады.
грамматикасы үшін түрлендірушілер командасы келесі түрде болады:
Дүкенге символдар шынжырын жазуды орныдайтын әр команда үшін, біздің жағдайда бұл (1)-(5) командалары көрсеткіш мағынасын анықтайтын нұсқау құрамыз.
Құрылған нұсқау белгілерін түрлендіруші командаларын енгізе отырып, және іс-әрекет символынан өңдеу жұмысының ережесіне енгізіледі деп ескеріп, (7) - (12) командаларын команда тізімінен шығарып тастауға болады. Нәтижесінде келесі түрдегі командалар жүйесін аламыз:
Дүкен шыңында шығысқа берілу қажет операциялық символ бар, сондықтан түрлендіруші дүкеннен бұл символмен оның атрибутын оқиды және оларды шығыс лентесына жазады.
Достарыңызбен бөлісу: |