Análisis léxico

Solo disponible en BuenasTareas
  • Páginas : 6 (1270 palabras )
  • Descarga(s) : 0
  • Publicado : 19 de septiembre de 2010
Leer documento completo
Vista previa del texto
Análisis Léxico

El analizador léxico o scanner lee los caracteres del programa fuente para agruparlos en palabras o lexemas y luego clasificarlos en componentes léxicos o tokens que son entregados al analizador sintáctico.

Un analizador de léxico tiene como función principal el tomar secuencias de caracteres o símbolos del alfabeto del lenguaje y ubicarlas dentro de categorías, conocidascomo unidades de léxico.

Las unidades de léxico son empleadas por el analizador gramatical para determinar si lo escrito en el programa fuente es correcto o no gramaticalmente.

El Analizador Léxico es la etapa del compilador que va a permitir saber si es un lenguaje de formato libre o no. Frecuentemente va unido al analizador sintáctico en la misma pasada, funcionando entonces como unasubrutina de este último. Ya que es el que va leyendo los caracteres del programa, ignorará aquellos elementos innecesarios para la siguiente fase, como los tabuladores, comentarios, espacios en blanco, etc.

Aunque el analizador de léxico es la primera etapa del proceso de compilación, no es quien lo inicia. La compilación empieza con el analizador gramatical quien solicita un token para realizarsu trabajo; el analizador de léxico reúne símbolos y envía el token correspondiente a la unidad de léxico que conformó al analizador gramatical y espera una nueva solicitud de token.

El analizador de léxico está supeditado por el analizador gramatical.

Componentes Léxicos o tokens
• Palabras reservadas: if, while, do, break

• Identificadores:

asociados a variables, nombres defunciones, tipos definidos por el usuario, etiquetas,... Por ejemplo: velocidad, y11, suma, _100

• Operadores: = * + - / ==
• Símbolos especiales: ; [ ] ( ) { } , • Constantes numéricas: valores enteros, valores en coma flotante, etc.:

982, 0xF678, -83.2E+2,...

• Constantes de caracteres: cadenas de caracteres, “hola mundo”,... • Comentarios: /** abcde **/

Otras funciones del AnalizadorLéxico
•Administrar el archivo del programa fuente: abrirlo, leerlo,

cerrarlo y gestionar posibles errores de lectura.

•“Eliminar” comentarios, espacios en blanco, tabuladores y saltos

de línea (caracteres no validos para formar un token).
•Incluir archivos: # include ...
•Expandir macros y funciones inline: # define ...

•Contabilizar líneas y columnas para emitir mensajes de error.•Reconocer las marcas de fin de archivo. •Insertar los identificadores en la Tabla de Símbolos.

•Reconocer errores léxicos.

•Token: elemento léxico o categoría sintáctica del lenguaje fuente
•En Español: Nombres, verbos, adjetivos, …
•En un lenguaje de programación: Identificadores, Enteros,

palabras reservadas, espacios en blanco, …
•Patrón: regla que describe cómo se forma un token. Lospatrones

se especifican mediante expresiones regulares
•Lexema: Secuencia de caracteres del programa fuente que

concuerda con un patrón.
•Atributos: Información adicional asociada a un token y que será utilizada en el análisis semántico y/o en la etapa de síntesis

Ejemplos Token identificador cte_entera pr_if pr_do op_div Lexema total, b52, i 1492, 1, 512 if do / Patrón Letra seguidade letras o dígitos Digito seguido de mas dígitos Letra i seguida de letra f Letra d seguida de letra o Símbolo /

op_mayig cte_cadena

>= “hola…!!!”

Símbolo > seguido de = Símbolos entre comillas

• Definir el conjunto de elementos léxicos

(tokens)

• Elaborar la tabla de tokens, detallando: token,

código asignado al token y patrón (ER)

• Construir un AFD (Autómata FinitoDeterminista) para cada ER asociada a cada token.

• Combinar todos los AFDs en un único AFD

• De los estados finales no deben salir transiciones. • En el caso de las cadenas no específicas, se debe leer

hasta hallar un carácter que no forma parte del patrón. En este último estado se debe devolver al buffer de entrada el carácter leído (que puede ser parte del siguiente token),...
tracking img