Vad är lexikal analys?

Lexikal analys är processen att ta en sträng av tecken – eller, enklare, text – och omvandla den till meningsfulla grupper som kallas tokens. Denna metod har användningsområden i en mängd olika tillämpningar, från tolkning av datorspråk till analys av böcker. Lexikal analys är inte synonymt med parsning; snarare är det det första steget i den totala analysprocessen, och det skapar råmaterial för senare användning.

Byggstenarna i tokens, även kallade lexem, kan genereras på många sätt, beroende på vilken grammatik som krävs för lexikal analys. Ett vanligt exempel på detta är att dela meningar efter ord; detta görs ofta genom att dela meningar runt mellanslag. Varje kontinuerlig sträng av tecken som genereras utan mellanslag är ett lexem. Textsträngar kan delas på en eller flera typer av tecken, vilket skapar flera versioner av lexem med varierande komplexitet. Tokens genereras efter att varje lexem har utvärderats och parats med dess motsvarande värde; per definition hänvisar tokens till denna parning, inte bara lexem.

Lexikal analys, något kontraintuitivt, berövar en textsträng från sitt sammanhang. Dess syfte är endast att generera byggstenar för vidare studier, inte att avgöra om dessa bitar är giltiga eller ogiltiga. Vid datorspråktolkning görs validering genom syntaxanalys och validering av text kan göras i termer av sammanhang eller innehåll. Om en indatasträng är helt uppdelad i lämpliga lexem och var och en av dessa lexem har ett lämpligt värde, anses analysen vara framgångsrik.

Utan kontext eller förmåga att utföra validering kan lexikal analys inte på ett tillförlitligt sätt användas för att hitta fel i inmatning. En lexikal grammatik kan ha felvärden tilldelade specifika lexem, och sådan analys kan också upptäcka olagliga eller missformade tokens. Även om att hitta en olaglig eller missbildad token signalerar ogiltig inmatning, har det ingen betydelse för om de andra tokens är giltiga, och det är alltså inte strikt en typ av validering.

Även om lexikal analys är en integrerad del av många algoritmer, måste den ofta användas i kombination med andra metoder för att skapa meningsfulla resultat. Till exempel, att dela upp en textsträng i ord för att bestämma frekvenser använder sig av lexemskapande, men lexemskapande kan inte ensamt övervaka antalet gånger ett visst lexem visas i inmatning. Lexikanalys kan vara användbar i sig om själva lexem är av betydelse, men stora mängder input kan göra analys av rålexem svår på grund av mängden data.