Što je leksička analiza?

Leksička analiza je proces uzimanja niza znakova – ili, jednostavnije, teksta – i pretvaranja u smislene grupe koje se nazivaju tokeni. Ova se metodologija koristi u raznim primjenama, od tumačenja računalnih jezika do analize knjiga. Leksička analiza nije sinonim za raščlanjivanje; već je to prvi korak cjelokupnog procesa raščlanjivanja i stvara sirovi materijal za kasniju upotrebu.

Građevinski blokovi leksema, koji se također nazivaju leksemi, mogu se generirati na mnogo načina, ovisno o gramatici potrebnoj za leksičku analizu. Čest primjer za to je dijeljenje rečenica po riječima; to se često radi dijeljenjem rečenica po razmacima. Svaki kontinuirani niz znakova generiran bez razmaka je leksem. Tekstualni nizovi mogu se podijeliti na jednu ili više vrsta znakova, stvarajući više verzija leksema različite složenosti. Tokeni se generiraju nakon što je svaki leksem ocijenjen i uparen s odgovarajućom vrijednošću; po definiciji, tokeni se odnose na ovo uparivanje, a ne samo na leksem.

Leksička analiza, pomalo kontraintuitivno, oduzima tekstualni niz od njegovog konteksta. Njegova je svrha samo generiranje građevnih blokova za daljnje proučavanje, a ne utvrđivanje jesu li ti dijelovi valjani ili nevažeći. U slučaju interpretacije računalnog jezika, validacija se vrši analizom sintakse, a validacija teksta se može obaviti u smislu konteksta ili sadržaja. Ako je ulazni niz potpuno podijeljen na odgovarajuće lekseme i svaki od tih leksema ima odgovarajuću vrijednost, analiza se smatra uspješnom.

Bez konteksta ili mogućnosti provjere valjanosti, leksička analiza ne može se pouzdano koristiti za pronalaženje pogrešaka u unosu. Leksička gramatika može imati vrijednosti pogreške dodijeljene određenim leksemima, a takva analiza također može otkriti nezakonite ili neispravno oblikovane tokene. Iako pronalaženje ilegalnog ili krivo oblikovanog tokena signalizira nevažeći unos, nema utjecaja na to jesu li ostali tokeni valjani, pa stoga nije striktno vrsta provjere valjanosti.

Iako je leksička analiza sastavni dio mnogih algoritama, često se mora koristiti u sprezi s drugim metodologijama kako bi se stvorili smisleni rezultati. Na primjer, dijeljenje tekstualnog niza na riječi radi određivanja učestalosti koristi se stvaranjem leksema, ali samo stvaranje leksema ne može pratiti koliko se puta određeni leksem pojavljuje u unosu. Leksička analiza mogla bi biti korisna sama po sebi ako su sami leksemi važni, ali velike količine inputa mogu otežati analizu sirovih leksema zbog količine podataka.