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


Лекция 12 Тақырыбы: Лексикалық анализ фазасының қажеттілігі. Транслитератор



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

Лекция 12

Тақырыбы: Лексикалық анализ фазасының қажеттілігі. Транслитератор.





  1. Лексикалық анализ фазасының қажеттілігі.

  2. Транслитератор.




  1. Сканер шешетін мәселелерді синтаксистік анализаторға жүктеуге болады. Бірақ бұл төмендегі себептерге байланысты қол айсыз болады:

  • Енуші символдарды тіл конструкцияларына - лексемаларға біріктіру пограмманың ішкі көрінісін танушының әрі қарай анализ жасауы үшін ыңғайлы етеді. Өйткені танушы жекелеген символдармен емес, аяқталған элементтер конструкцияларымен жұмыс істейді. Бұл оларды жалпы қабылдауды және кейінгі семантикалық анализді жеңілдетеді. Бұдан бөлек лексемаларды құру барысында қарапайым семантикалық өңдеулер жасалынуы мүмкін. Мысалы, сандық константаларды тексеру және түрлендіру.

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

  • Енуші символдар жиындары әртүрлі болуы мүмкін болған тілдер үшін синтаксистік анализаторды қайта жазып отырмауға мүмкінді к береді . Синтаксистік анализаторды жазудан жаңа лексикалық анализатор жазу анағұрлым жеңіл. Әртүрлі енуші символдар жиынына ие тілдердің бірі PL/1. Ол үшін 48 символды және 60 символды алфавиттер анықталған.

  • Лексикалық анализатор синтаксистік анализаторға қарағанда әлдеқайда қарапайым айқындау әдістерін қолданады.Демек сол бір конструкцияларды айқындау жұмысы барысында лексикалық анализатордың өнімділігі жоғары болатыны айқын .




  1. Траслитератор

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

Әрбір жекелеген символға оның классын сәйкес қою құрылғысы транслитератор деп аталады.

Көп кездесетін символдар классы төмендегіше:

-әріп - әріптер жиыны, тек бір алфавитке тиісті болуы міндетті емес.

-цифра – цифраларға жататын символдар жиыны (көбінесе 0 мен 3 аралығындағы )

-оқылмайтын – енуші тізбекте кездесуі мүмкін болған, бірақ оқылмайтын символдар ( мысалы: дыбыс сигналының коды тағы сол сияқты кодтар ).

-тиым салынған – тіл алфабитіне жатпайтын бірақ енуші тізбекте кездсуі мүмкін болған символдар.

-басқалары – берілген категориялардың ешқайсысына жатпайтын символдар.

Символ мәні және оның классы көрсетілген жұп сканер кірісіне беріледі. Осындай түрде берілуі сканер үшін анағұрлым ыңғайлы. Мысалы идентификатордың анализі кезінде “әріп ” ұғымымен жұмыс істеу ыңғайлы.

“Әріп ” және “цифра ” ұғымдары транслитератордан алынған терминалдар ретінде қарастырамыз. (Бұған дейін бұл ұғымдар бейтерминал символдар деп түсіндірілді).



Лексикалық анализ үшін грамматикалар және танушылар.

Лексикалық анализатор әдетте конструкцияларды тану үшін пайдаланады. Лексикалық анализаторлар әдетте оң сызықты (проволинейный) грамматикаларды қолдану арқылы синтаксистік бейнелеуде болатын элементар конструкцияларды пайдаланылады.

Бұл грамматикалардың ең қарапайымы, қуаты бойынша детерминирлі шекті автоматтарға эквивалент. Лексикалық анализдің қарапайымдылығы лексемалардың тану процесі барысында пайдаланылатын жалғыз бейтерминалдар екендігіне де байланысты. Шекті автоматтың енуші символдары транслитератор шығаратын терминал символдар болып табылады.

Ең жоғарғы деңгейде былай бөлінеді:

айқындау әдістері.

айқындау тізбегі

алдын көруді қолдану

қайтуды қолдану


Айқындау әдістері:

Синтаксистік айқындау әдістерінің 2 негізгі әдісі ерекшеленеді:

төменге қарай айқындау

жоғарыға қарай айқындау


Бұдан бөлек жоғарыдағы 2 әдістің ерекшеліктерін біріктірген комбинирленген айқындауды қолдануға болады.

Лекция 13

Тақырыбы: Синтаксистік және семантикалық анализ





  1. Синтаксистік анализ.

  2. Жазу формалары.

1. Синтаксистік анализ -- лексемалар тізбегі тексеріліп, тіл синтаксисінің анықтамасында анық көрсетілген құрылымдылық шарттарыды қанағаттандыруы анықталатын процесс. Бұл – компилятордың ең күрделі бөлігі. Синтаксистік анализатор бастапқы программаны құрамдас бөліктерге ажыратады, оның ішкі аралық көрінісін түзеді, мәліметтерді символдар кестесіне және басқа кестелерге ендіреді. Бұларды орындау барысында толық синтаксистік контроль және мүмкіндігінше семантикалық контроль жүргізіледі. Іс жүзінде, бұл – синтаксистік басқарылатын программа. Мұнда синтаксисті семантикадан мүмкіндігіше айыруға тырысады. Синтаксистік анализатор бастапқы тіл конструкциясын тани алса, семантикалық процедураны шақырады. Өз кезінде семантикалық процедура берілген конструкцияға контроль жасап, мәліметтерді керек жерлерге ендіріп, айнымалылар сипаттамасынның қайталанбауын, типтерге сәйкес келуін т.б. тексереді.


2. Бастапқы программа сөйлемдері әдетте инфиксті формада жазылады. Операторы опералдары арасында жазылатын бұл форма біз үшін үйреншікті болғанымен., автоматтық есептеу үшін қолдануға келмейді. Мәселә оператордың деңгейлерін әрдайым есте ұстау және өрнекті анализдеу барысында “алдыңға” қарай жүгіріп көріп келіп отыруға тура келеді. Бұған қоса есетеу кезегін білдірген пайдалану да жұмысты күрделендіре түседі.

Жазудың поляк формасы инфексті формада альтернатив болып табылады (Польша математигі Лукович құрметіне аталған). Оның екі түрі бар: пост фиксті және префиксті. Әдетте поляк форма дегенде посфиксті жазу формасы түсініледі. Бұлардан бөлек, бастапқы программаның ішкі көрінісінің ағаш (синтаксистік) және тетрада формалары да қолданылады.



Ағаш. Айталық мынадай енуші тізбек берілсін і=(а+в)*с. Ағаш көрінісі былай беріледі.

Әрбір ағаш элементінің тек бір ғана “түбі” (“предок”) болады.

Ағаш төменнен жоғары қарай және солдан оңға қарай “оқылады. Ағаш бұл ең алдымен ыңғайлы математикалық обстракция

Іс жүзінде ағаш тізімдік құрылым түрінде жүзеге асуы мүмкін.



Жазудың поляк формасы. Өрнектерді жазудың 3 түрі бар:

  • Инфексті форма, мұнда оператор операндар арасында оранласады ( мысалы, “а+в”)

  • Постфиксті форма, мұнда оператор операндалардан соң орналасады ( Жоғарыдағы өрнек “а*в+””);

  • Префиксті форма, мұнда оператор операндолардың алдында орналасады (“+ав”)

Постфиксті және префиксті формалар жазудың поляк формасын құрайтыны бізге белгілі. Поляк формасы ең әуелі жақшалардың жоқтығымен ыңғайлы.

Практикада постфиксті форма жиі қолданылады. Сондықтан, поляк формасы дегенде постфиксті форма түсініледі.

Бұл жазу формасында і=(а+в)*с өрнегі “іав+с*=” деп бейнеленіледі. Бұл өрнек ағаш бойына оңай орналастрылады. Төмеңгі қатарда “а” және “в”, одан жоғарғы қатарға “+” және “с”, одан соң – “і” және “*”, ең төбесінде “=” белгісі орналасады.

Тетрада – бұл амал коды, меншіктеуші және 2 операнда кодтарынан құралған төрттік.



Бастапқы өрнек

Код


Меншіктеуші

Операнд 1

Операнд 2

a+b(p)T1

+

T1

a

b


T1+c(p)T2

*

T2

T1

c


i=T2

=

I

T2

(туындаған тетрада)


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




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

    Басты бет