Разлика помеѓу преработките на „Лексички анализатор“

с
нема опис на уредувањето
с
с
'''Лексичка анализа''' е процес во кој некој влез од низа од знаци (на пример изворниот код кај компјутерски програм) да произведе како излез низа од симболи наречени “лексички токени” или само “токени”. На пример, лексерите кај многу програмски јазици низата од знаци 123 abc ја делат на два токена: 123 и abc , празноропразното место не се зема во предвид. Целта на создавањето на токените е обично тие да се предадат на друга програма како чтошто е парсерот[[парсер]]от.
 
[[Слика:lekser.jpg|рамка|Википедија Енциклопедија]]
 
За многу јазици правењето на лексичка анализа може да се направи во едно поминување- со читање на знак по знак од влезот. Но, моногу комерцијални компајлери користат на рака напишани (не автоматски генерирани) лексери бидејќи во нив е возможно многу полесно да се интегрираат справувачи со грешки.
 
Лексерот или лексичкиот анализатор работи во се состои од два дела: скенер и евалуатор. (Овие делови обично се интегрирани поради ефикасноста т.е. за да работат паралелно).
 
Во ''првата фаза'', скенирањето, е базирано на [[детерминистички автомат]]. Тој ги енкодира информациите барајќи одредени токени. На пример токенот integer може да содржи некаква низа нумерички цифри. Во многу случаи првиот знак кој не е празно место може да се одреди за да се добие токенот кој следи, потоа влезот се процесира знак по знак се додека не се стигне до знак кој не е прифатлив за таква секвенца.
 
''Втората фаза'' , евалуацијата, кој ја ги поминува токените и им дава вредност т.е. создава стек на вредности. Токените комбинирани со нивните вредности потоа се даваат на парсерот.
На пример, во изворниот код нанекојна некој програм стринготнизата:
 
net_worth_future = (assets - liabilities);
 
може да биде конвертиранконвертирана во тек на лексички токени:
 
може да биде конвертиран во тек на лексички токени:
 
NAME "net_worth_future"
 
Пример за лексички анализатор
 
 
Ова е пример за скенер напишан во програмскиот јазик С.