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

поправка на правопис
(поправка на правопис)
[[Податотека:lekser.jpg|мини|десно|300п|Шема на лексер]]
'''Лексичка анализа''' е процес во кој некој влез од низа од знаци (на пример изворниот код кај компјутерски програм) да произведе како излез низа од симболи наречени “лексички„лексички токени” или само “токени”„токени”. На пример, лексерите кај многу програмски јазици низата од знаци 123 abc ја делат на два токена: 123 и abc , празното место не се зема во предвид. Целта на создавањето на токените е обично тие да се предадат на друга програма како што е [[расчленување (информатика)|расчленувачот]] (парсер).
 
За многу јазици правењето на лексичка анализа може да се направи во едно поминување - со читање на знак по знак од влезот. Но, моногумногу комерцијални компајлери користат лексери напишани на рака напишани (не автоматски генерирани) лексери бидејќи во нив е возможно многу полесно да се интегрираат справувачи со грешки.
 
Лексерот или лексичкиот анализатор се состои од два дела: скенер и евалуатор. (Овие делови обично се интегрирани поради ефикасноста т.е. за да работат паралелно).
 
 
Иако е возможно, а, понекогаш и пожелно да се пишуваат лексери, тие обично се генерираат од автоматски алатки. Овие алатки генерално прифаќаат регуларни изрази кои што ги опишуваат токените кои се дозволени на влез. Секој регуларен израз е проследен со продукција на лексичката граматика на програмскиот јазик којшто ги евалуира токените спојувајќи ги со регуларните изрази. Овие алатки можат да генерираат изворен код којшто може да биде компајлиран и извршен, или можат да конструираат табела на состојби за детерминистички автомат.
 
Пример за лексички анализатор
"begin", "call", "const", "do", "end", "if", "odd", "procedure", "then", "var", "while"
 
Скенирањето започнува со повикување на init_scan, со кое се предава името на изворната датодекадатотека. Ако изворната податотека успешно се отвори, тогаш расчленувачот ја повикува getsym последователно за сукцесивно да ги врати симболите од изворната датотека.
 
Срцето на скенерот, getsym, ги извршува акциите одејкиодејќи само нанапред. Прво, празните места се прескокнуваат, потоа знаците се класифицираат. Ако знаците претставуваат некој повеќезнаковен симбол тогаш треба да се направи некое дополнително процесирање. Броевите се претвараатпретвораат во интерна форма, а идентификаторите се проверуваат за да се види дали имаат значење на некој клучен збор.
 
 
 
Околу 50 реда код за FLEX наспроти 100 реда на рачно напишан код.
Обично скенерите не се тешки за пишување. Ако се напишани точно , рачно напичшанитенапишаните скенери можат да бидат побрзи и пофлексибилни за разли од скенерите кои сецсе направени со помош нагенераторна генератор за скенер.