Полезное:
Как сделать разговор полезным и приятным
Как сделать объемную звезду своими руками
Как сделать то, что делать не хочется?
Как сделать погремушку
Как сделать так чтобы женщины сами знакомились с вами
Как сделать идею коммерческой
Как сделать хорошую растяжку ног?
Как сделать наш разум здоровым?
Как сделать, чтобы люди обманывали меньше
Вопрос 4. Как сделать так, чтобы вас уважали и ценили?
Как сделать лучше себе и другим людям
Как сделать свидание интересным?
Категории:
АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника
|
Атрибуттық трансляциялау грамматикалары мен түрлендірушілер
Синтаксистік-басқармалы кестелер мен трансляциялау грамматикаларыауысым деп аталатын кіріс және шығыс тілдер шынжырларының арасында сәйкетікті беруге мүмкіндік береді. Семантиканы тапсыру үшін түрлі тәсілдер қолданылады, яғни олар: Бұл бөлімде қарастырылатын Констант мағынасын қисық сызықпен, мысалы
Ал синтезделу атрибутының мағынасының есептелуі шығыс қадамының келесі қадамдары орындалған кезде анықталуы немесе қалдырылуы мүмкін. Жалпы түрде - Егер грамматика символдарына бір немесе бірнеше атрибуттар қосылып жазылған және әр атрибут үшін жіберілетін мағына жиыны анықталған болса. - Егер атрибуттар мұра етуші және синтезделуші болса. - Әр грамматика ережесіне солда орналасқан атрибут мағынасын анықтайтын оң жақтағы иемдену функциясымен оператор түрінде атрибуттарды есептеу ережесі берілген болса. - Бастапқы символды мұра етілетін атрибут үшін бастапқы мағына берілген болса. - Іс-әрекет символдарының синтезделу атрибуттарының мағынасын есептейтін функциялар бұл символдың басқа атрибуттарына бағыныңқы болса. Сол жақты шығарумен атрибут мағыналарын есептеуді көрсету Егер атрибут мағынасы әлі анықталмаса және іс-әрекетті орындай алмаса, онда есептеу ережесін қойып қойған есептеулер тізіміне қосамыз. Егер атрибуттарды есптеу ережесін орындауға болып және нәтижесінде кейбір атрибуттар мағынасы анықталатын болса, онда қойып қойған ережелер тізімін қарастырып алынған мағына көмегімен есептеуге келетін барлық атрибуттар мағынасын табамыз. Жаңа мағыналар жаңа ережелерді табуға әкелуі мүмкін, сондықтан есептеу үрдісін мүмкін болғанша қайталай береміз және атрибуттарды есептеу ережелерін қолданған соң жоямыз. Берілген шығаруды келтірілген грамматикада орындауды Есептеуді қолдану алынып қойылған шығару ережелерінің нәтижелері тізімі
1 2
3
4
5
6
7
8 9
10
11
Шығару шынжырында бірінші константтың пайда болуы тізімдегі үш ереженің орындалуына әкеледі. Осыған ұқсас алынып қойылған есептеулер тізімінің қысқартылуы
5.2 АТ-грамматикаларын қолданумен жасалған синтаксистік талдау. Синтаксистік талдау үрдісі
Айтарлық бұндай шынжырдың синтаксистік талдауының міндеті Қарастырылып жатқан түрдің шынжыр синтаксисі
Бастапқы 5.3
Бұл бөлімде тек қана ауысымдардың атрибуттық мазмұндауларымен таныстық емес, сонымен қатар өрмелемейтін атрибуттық түрлендірушілермен де танысамыз. Олар атрибуттармен кіріс символдарды шын атрибутты кіріс символддарының шынжырын өңдеп, әрбір кіріс шынжырына оның ауысымы ретінде кіріс шынжырын құру немесе мүлдем кіріс тіліне жатпайтынын мойындап, бетін қайтаруы қажет. Бұндай құрылғылар өрлемейтін талдау кіре берісінде атрибуттарды есептеуді қамтамасыз ету керек. Кез келген
1 Грамматика ережесінің оң жағының әрбір мұра етілуші атрибут символы ереженің сол мұра етілуші атрибут символдарын қолданып, не атаулы символдың сол жағында орналасқан оң жақ ереженің еркін атрибут символдарын қолданумен есептелуі керек. 2 Грамматика ережесінің сол жақтағы әрбір синтезделінетін символ атрибуты ереженің сол жағындағы мұра етілуші символ атрибуттарының немесе бұл ереженің оң жағындағы еркін символ атрибуттарын қолданып, есептелуі керек. 3 Іс-әрекеттің әрбір синтезделінетін символ атрибуты бұл іс-әрекет символының мұра етілуші атрибуттары бойынша есептелуі керек.
1 мұра етілушілер
Түрлендірушілерді тұрғызуға арналған Бұндай ережелі грамматика жай иемдену Егер көшірме ережелер бағыныңқы болып келсе, онда кейбір жағдайларда оларды бір ережеге біріктіруге болады. Мысалы: Көшіруші ережелердің егемендік түсінігін қолдана отырып, келесі анықтамаға келеміз:
а) іс-әрекеттің синтезделінетін символдарын есептеу ережелерінен басқа барлық атрибуттарды есептеу ережелері көшіруші болып табылады. б) грамматиканың әрбір ережесіне көшіруші ережелер жиыны егеменді болып табылады.
Егер берілген Көшірмейтін ережелер түрленуінің реттілігін мазмұндамас бұрын, бұндай түрлену қалай болатынын көрсететін мысалды қарастырайық. Айтарлық көшірмейтін атрибуттық ереже келесі түрде берілген дейік:
Алдымен Осыдан соң грамматика ережесіне іс-әрекеттің жаңа символын енгіземіз және
Бұнда екі ережесі аргумент, ал біреуі нәтиже көшіретін тек қана көшіру ережелері бар. Грамматика ережесіне жаңа терминал емес символды жағу жерін таңдауда берілген грамматиканың
бұнда Егер де іс-әрекеттің жаңа символын
бұнда
Жүргізілген талдау нәтижесі ретінде 1 Грамматиканың кейбір ережелермен байланысты атрибуттарды есептеу ережелеріне енетін әрбір 2 Грамматиканың кейбір ережелерімен байланысты әрбір көшірмейтін 3 а) іс-әрекет символы б) іс-әрекет символы в) егер іс-әрекет символын орналастыру позициясының бірнеше түрі болса, онда мүмкін позициялардан сол жақтағысы таңдалуы керек. 4 Егер грамматика ережесінің біреуінің қайнар көзі екіншісіне енетін болса, онда грамматика ережесінің екі көшірме ережесін бір ережеге біріктіру керек. Бұл біріктіру бос қайнар көзі бар ережені жою жолымен іске асырылады. Параметрлерсіз оң жақта қолданылған процедуралар бағыныңқы ережелерді біріктірген кезде қауіптік сақтау керегін атап өтейік, себебі түрлі шақыру процедуралары түрлі мағына беретін болғандықтан қателік тууы мүмкін. Жай иемдену формасындағы Егер Осыған
Бұндай атрибуттарды сақтау үшін дүкен қолданылуы мүмкін. Атрибуттарды жай сақтау жеткіліксіз, себебі атрибут қандай мағына алуы қажет туралы мәліметтерді де сақтау керек. Жай иемдену формасында мағынаны анықтаудың бір ғана тәсілі қолданылатынын ескереотырып, иемдену операторының көмегімен иемдену мәліметтерін дүкенде көрсеткіш көмегімен көрсетуге болады. Ол үшін дүкеннің қайнар көзіне сәйкес келетін элементін қабылдағышқа сәйкес келетін элементіне көрсететін көрсеткішті жазуға болады. Бұндай көрсеткіштерді дүкенде оған грамматика ережесінің оң жағын жазған кезде орналастыруға болады. Бұл жағдайда алдымен қайнар көзі, ал одан кейін қабылдағыш анықталатын атрибут мағынасының анықталу реті қамтамасыз етілуі қажет. Бұндай реттіліктің есептеуінің орындалуы
Атрибуттарды өңдеудің мазмұндалған тәсілінің илюстрациясы ретінде Бұндай шығаруға тек қана терминалды, терминалды емес және операциялық символдар ғана емес, сонымен қатар мағынасы әлі анықталмаған атрибуттар да енеді. Иемдену операцияларына сәйкес келетін атрибуттар арасындағы байланысты көрсету үшін желілік шығарумен қолданамыз. Бұндай шығару келесідей құрылады: - Атрибуттарды индекс позициясынан жолға ауыстырамыз да грамматиканың сәйкес келетін символына орналастырамыз. - Қойып қойған есептеу қадамына сәйкес келетін әрбір көшіру ережесіне қайнар көзден қабылдағышқа бағытталған, қайнар көз бен қабылдағышты шығару шынжырына байланыстыратын доғаны сәйкесінше қоямыз.. - Көптік көшірме ережелеріне сәйкесінше қайнар көзді қабылдағышпен байланыстыратын шығару шынжырында доғалар ретін қоямыз. - Егер шығару үрдісінде атрибут мағына алса, онда ол мағынаны атрибут есімінің орнына шығару шынжырына жазамыз, ал сәйкес доғаны жоямыз. - Терминал емес символды ауыстырғанда ол шығару шынжырында жойылады, бірақ оның атрибуттары орындарында қалу керек. Келтірілген шығаруда әрбір ауыстырылатын терминал емес символдардың атрибуты шығару шынжырында сақталуы қажет. Атрибуттық түрлендірушілер Алдыңғы бөлімде қарастырылған атрибуттық мазмұндау ауысымды мазмұндаудың синтаксистік бағытталған тәсілінің жалпыламасы болып табылады, ал бұл бөлімде қарастырылатын атрибуттың түрлендірушілердің тұрғызылуы мен жұмысының ережелері жасанды тілдер үшін компилярларды құру кезінде бұндай мазмұндауларды тәжірибеде қолдануға мүмкіндігін беруді көрсетеді. Қарастырылатын
Date: 2016-07-25; view: 483; Нарушение авторских прав |