Leksikalsk analyse

Leksikalsk analyse er indenfor datalogi den proces, som består i at en serie tegn tolkes, evt. sammensættes med nabotegn og omsættes til et leksikalt element (eng. token). Leksikalisering omfatter at input (tekstfilens) tekststreng omdannes til eksempelvis reserverede ord, konstanter, operatorer og parametre.

Grammatikken til den leksikalske analyse beskrives ofte på Backus-Naur-form eller Udvidet Backus-Naur form.

Eksempel

Input til en Google-søgning (altså det brugeren skriver i søgefeltet) kan se ud sådan her:

bison OR okse

Den funktion som udfører selve søgningen må på en eller anden måde få at vide, at brugeren vil finde alle sider som indeholder enten ordet "bison" eller ordet "okse". Leksikaliseringen er det trin i parsningen af søgeudtrykket som identificerer "bison" og "okse" som de ord brugeren vil søge efter, og "OR" som den operator, der indebærer, at brugeren er interesseret i at søge efter både sider som indeholder "bison" og sider som indeholder "okse". I eksemplet før er "bison" og "okse" konstanter, og "OR" er et reserveret ord. Leksikaliseringen indebærer, at dette søgeudtryk skilles fra for eksempel bison or okse eller "bison OR okse".

Derimod kan syntaktiske fejl ikke identificeres under leksikaliseringen. Ansvaret for syntaktisk analyse vedrører den proces, der tager imod de leksikale elementer, som leksikaliseringen genererer. Et udtryk i programmeringssproget C som

int hej(int "text" int)
{
 printf void "mere text" if;
};

kan tolkes korrekt under leksikaliseringen, men er syntaktisk forkert. Den proces, som kontrollerer et udtryks syntaktiske eller grammatiske korrekthed kaldes en parser.

En almindelig måde at skabe den komponent, som håndterer lexikaliseringen er at anvende et program som lex[1] eller flex[2]. Et eksempel på et Java-baseret lexikaliseringsprogram er JFlex[3].

Referencer

Eksterne henvisninger