Compiladores

Páginas: 8 (1806 palabras) Publicado: 20 de febrero de 2013
Análisis léxico
COMPILADORES Unidad II: Diseño e implementación de analizadores léxicos
Flor Prof. Flor Narciso GIDyC-Departamento de Computación LABSIULA-Escuela de Ingeniería de Sistemas Facultad de Ingeniería Universidad de Los Andes fnarciso@ula.ve

Análisis léxico
La cadena de caracteres que constituye el programa fuente se lee de izquierda a derecha y se agrupa en componentes léxicos otokens, que son secuencias de caracteres que tienen un significado colectivo (identificadores, literales, operadores, palabras reservadas, signos de puntuación, etc.).

Análisis léxico
Leer los caracteres de entrada y elaborar como salida una secuencia de componentes léxicos que utiliza el analizador sintáctico para hacer en análisis. Programa fuente Analizador léxico
Componente léxico Obténel siguiente componente léxico

Ejemplo

p = i + v * 60 Analizador léxico
(IDENTIFICADOR, p) (OPASIGNACION, =) (IDENTIFICADOR, i) (OPARITMETICO, +) (IDENTIFICADOR, v) (OPARITMETICO, *) (NUMERO, 60)

Analizador sintáctico

Tabla de símbolos

1

Análisis léxico
Funciones
• Descomponer el programa fuente en componentes léxicos (palabras reservadas, operadores, identificadores,constantes, literales, delimitadores). •Eliminar del programa fuente comentarios y espacios en blanco en forma de caracteres de espacio en blanco, caracteres TAB y de línea nueva. •Relacionar los mensajes de error del compilador con el programa fuente (asociar un número de línea con un mensaje de error).

Análisis léxico: Componentes léxicos
Ejemplo: Dada la siguiente función
Entero: WCH(Entero:tarifa; Entero: principio; Entero: fin) Comienzo Entero: costo; costo = tarifa * (principio - fin) + 2; devolver(costo); Fin

Análisis léxico: Componentes léxicos
Ejemplo: Los lexemas de sus componentes léxicos son:
Entero : WCH ( Entero : tarifa ; Entero : principio ; Entero : fin ) Comienzo Entero costo ; costo = tarifa * ( principio - fin ) + 2 ; devolver ( costo ) ; Fin

Análisis léxico:Componentes léxicos
Lexema Entero WCH, tarifa, principio, fin, costo (, ), :, ; Comienzo, devolver, Fin = *, -, + 2 Token Patrón Entero ( | )* (|) |:|; Comienzo | Fin | devolver = +|-|* ()+

2

Análisis léxico: Espacios en blanco
Ejemplo: Eliminación de espacios en blanco, tabuladores y nueva línea → | | → b → TAB → EOL → +


Análisis léxico: Atributos
Reconocimiento deconstantes numéricas: Sea el componente léxico o token. Cuando una secuencia de dígitos aparece en la cadena de entrada, el analizador léxico pasará al analizador sintáctico y el valor del número se pasará como atributo del componente léxico . (, atributo)

Ejemplo 31 + 26 Cadena de componentes léxicos:
+

(, 31) (, +) (, 26)

Análisis léxico: Atributos


Diagramas de Transiciones
Reconocimiento de identificadores y palabras reservadas: Cuando el analizador léxico reconoce un identificador, si no está almacenado en la tabla de símbolos (TS), entonces se almacena. El atributo del componente léxico es un apuntador a esa entrada en la TS. Ejemplo: conta = conta + suma Cadena de componentes léxicos< id> = +

Diagrama que representan las acciones que tienen lugar cuando elanalizador léxico es llamado por el analizador sintáctico para obtener el siguiente componente léxico.
Inicio

# #

Estado inicial Estado final Transición

(,ap1 )(, )(,ap1)(, ) (,ap2)

3

Diagramas de Transiciones
Ejemplo: Diagrama de transiciones para el componente léxico < Inicio = Devuelve(, MEI) 1 2 0 > 3 otro 4 = > 5 6
Devuelve(, MEN) Devuelve(, DIF)

Diagramas de TransicionesEjemplo: Diagrama de transiciones para el componente léxico
Letra o dígito Inicio 0 letra 1 otro 2
Devuelve(, ap)

Devuelve(, IGU)

= otro

7 8

Devuelve(, MAI) Devuelve(, MAY)

Ejercicios


Ejercicios


Identifique los lexemas que forman los componentes léxicos en el siguiente programa en C++. Dé valores razonables de atributo para los componentes léxicos. int max (int i,...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • Compiladores
  • Compilador
  • COMPILADORES
  • Compiladores
  • Compiladores
  • Compiladores
  • compiladores
  • Compiladores

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS