Análisis léxico


En informática , el análisis léxico , lexing o tokenización es el proceso de convertir una secuencia de caracteres (como en un programa de computadora o página web ) en una secuencia de tokens ( cadenas con un significado asignado y, por lo tanto, identificado). Un programa que realiza análisis léxico puede denominarse lexer , tokenizer , [1] o scanner , aunque scanner también es un término para la primera etapa de un lexer. Un lexer generalmente se combina con un analizador , que juntos analizan elsintaxis de lenguajes de programación , páginas web , etc.

Un lexer forma la primera fase de una interfaz de compilación en el procesamiento moderno. El análisis generalmente ocurre en un solo paso.

En lenguajes más antiguos como ALGOL , la etapa inicial fue en cambio la reconstrucción de línea , que realizó unstrapping y eliminó espacios en blanco y comentarios (y tenía analizadores sin escáner, sin lexer separado). Estos pasos ahora se realizan como parte del lexer.

Los lexers y los analizadores se usan con mayor frecuencia para compiladores, pero se pueden usar para otras herramientas de lenguaje informático, como prettyprinters o linters . Lexing se puede dividir en dos etapas: el escaneo , que segmenta la cadena de entrada en unidades sintácticas llamadas lexemas y las clasifica en clases de tokens; y la evaluación , que convierte los lexemas en valores procesados.

Los lexers son generalmente bastante simples, con la mayor parte de la complejidad aplazada al analizador sintáctico o las fases de análisis semántico , y a menudo pueden ser generados por un generador lexer , en particular lex o derivados. Sin embargo, los lexers a veces pueden incluir cierta complejidad, como el procesamiento de la estructura de la frase para facilitar la entrada y simplificar el analizador, y pueden escribirse parcial o totalmente a mano, ya sea para admitir más funciones o para el rendimiento.

El análisis léxico también es una etapa temprana importante en el procesamiento del lenguaje natural , donde el texto o las ondas sonoras se segmentan en palabras y otras unidades. Esto requiere una variedad de decisiones que no están completamente estandarizadas, y la cantidad de tokens que producen los sistemas varía para cadenas como "1/2", "chair's", "can't", "and/or", "1/1/ 2010", "2x4", "...," y muchos otros. Esto contrasta con el análisis léxico para programación y lenguajes similares donde las reglas exactas se definen y conocen comúnmente.