Professional Documents
Culture Documents
АНАЛИЗА
ПРОГРАМСКИ ПРЕВОДИОЦИ
Проф. др Ненад Јовановић
© N. Jovanović, 2017-2022 1
Лексичка анализа
Реч лексикологија потиче од грчких речи
Λέξη (лекси), што значи „реч“ и Λόγια
(логиа) што значи „наука“, па је
лексикологија део науке о језику који
проучава речи у њиховом заначењу
основних градивних јединица језичких
конструкција.
© N. Jovanović, 2017-2022 2
Лексички анализатор
Програм на неком програмском језику се
састоји од кључних речи, идентификатора,
сепаратора, бројева...
Лексички анализатор је саставни део сваког
преводиоца програмских језика и он узима ток
карактера, групише их у најмање самосталне
јединице лексичког система (лексема) и
производи излазну секвенцу типова јединица
лексичког система (токена), који се предају
синтаксном анализатору.
© N. Jovanović, 2017-2022 3
Токен
Токен је пар који се састоји од имена токена
и, опционо, вредности атрибута.
Задатак лексичког анализатора је да
открије и обезбеди наредни улазни токен и
проследи га синтаксном анализатору.
© N. Jovanović, 2017-2022 4
Табеле
Такође, у току лексичке анализе се
формирају различите табеле које се користе
у осталим фазама преводења.
Константе се смештају у табелу константи,
променљиве у табелу променљивих...
© N. Jovanović, 2017-2022 5
Типови токена
Програмски језик класификује токене у
коначан скуп типова токена.
На пример, неки типови токена су:
• кључна реч,
• идентификатор,
• релација,
• додела,
• константа,
• граничник...
© N. Jovanović, 2017-2022 6
Образац
У процесу лексичке анализе проблем је
како низ симбола идентификовати
одређеним токеном.
За то се користе обрасци.
Образац или шаблон одређује начин који
једнозначно дефинише који низови
одговарају ком токену.
© N. Jovanović, 2017-2022 7
Лексема
Лексема је секвенца карактера изворног
програма која је идентификована од
лексичког анализатора као инстанца
токена.
Лексема се препознаје на основу
формалног описа помоћу шаблона за који
је генерисан одређени токен.
© N. Jovanović, 2017-2022 8
Пример
На пример, посматра се код на C језику:
printf(“Ukupno = %d\n”, rezultat);
© N. Jovanović, 2017-2022 9
Примери
На пример, нека је дат код у програмском језику
ФОРТРАН:
E = M * C ** 2
Токени са придруженим атрибутима су наведени у
наставку:
• <id, pointer na TS za E>
• <op_dod>
• <id, pointer na TS za M>
• <op_mul>
• <id, pointer na TS za C>
• <op_exp>
• <num, type integer, val 2>
© N. Jovanović, 2017-2022 10