Analisis lexico

Solo disponible en BuenasTareas
  • Páginas : 18 (4368 palabras )
  • Descarga(s) : 4
  • Publicado : 18 de mayo de 2010
Leer documento completo
Vista previa del texto
Tema 2 An´lisis L´xico a e
Bibliograf´ ıa: Aho, A.V., Sethi, R., Ullman, J.D. (1990), Compiladores: principios, t´cnicas y herramientas, Tema 3, p´ginas: 85-158. e a Louden, K.C. (1997), Compiler Construction: Principles and Practice, Tema 2, p´ginas: 31-93. a Contenido:
1. Funciones del analizador l´xico. e o e 2. Especificaci´n de los componentes l´xicos: expresiones regulares. 3.Reconocimiento de los componentes l´xicos: aut´matas finitos. e o 4. Implementaci´n de un analizador l´xico: o e a) Dirigido por tabla b) Mediante bucles anidados. 5. Aspectos pr´cticos en la implementaci´n de un an´lisis l´xico: a o a e a) Principio de m´xima longitud. a b) Palabras reservadas versus identificadores. c) Gesti´n del buffer de entrada. o 6. Errores l´xicos y su tratamiento. e 7. Generadoresautom´ticos de analizadores l´xicos: Lex. a e

35

36

´ ´ TEMA 2. ANALISIS LEXICO

2.1.

Funciones del analizador l´xico. e

Analizador l´xico (scanner): lee la secuencia de caracteres del e programa fuente, caracter a caracter, y los agrupa para formar unidades con significado propio, los componentes l´xicos (tokens e en ingl´s). Estos componentes l´xicos representan: e e palabrasreservadas: if, while, do, . . . identificadores: asociados a variables, nombres de funciones, tipos definidos por el usuario, etiquetas,... Por ejemplo: posicion, velocidad, tiempo, . . . operadores: = * + - / == > < & ! = . . . s´ ımbolos especiales: ; ( ) [ ] { } ... constantes num´ricas: literales que representan valores ene teros, en coma flotante, etc, 982, 0xF678, -83.2E+2,... constantes decaracteres: literales que representan cadenas concretas de caracteres, “hola mundo”,... El analizador l´xico opera bajo petici´n del analizador sint´ctico e o a devolviendo un componente l´xico conforme el analizador sint´ctie a co lo va necesitando para avanzar en la gram´tica. Los coma ponentes l´xicos son los s´ e ımbolos terminales de la gram´tica. a Suele implementarse como una subrutina del analizadorsint´ctia co. Cuando recibe la orden obt´n el siguiente componente l´xico, e e el analizador l´xico lee los caracteres de entrada hasta identificar e el siguiente componente l´xico. e
componente léxico programa fuente analizador léxico obtén siguiente componente léxico analizador sintáctico árbol de anál. sintáctico

´ 2.1. FUNCIONES DEL ANALIZADOR LEXICO.

37

Otras funciones secundarias:Manejo del fichero de entrada del programa fuente: abrirlo, leer sus caracteres, cerrarlo y gestionar posibles errores de lectura. Eliminar comentarios, espacios en blanco, tabuladores y saltos de l´ ınea (caracteres no v´lidos para formar un token). a Inclusi´n de ficheros: # include ... o La expansi´n de macros y funciones inline: # define ... o Contabilizar el n´mero de lineas y columnas paraemitir menu sajes de error. Reconocimiento y ejecuci´n de las directivas de compilaci´n o o (por ejemplo, para depurar u optimizar el c´digo fuente). o Ventajas de separar el an´lisis l´xico y el an´lisis sint´ctico: a e a a Facilita transportabilidad del traductor (por ejemplo, si decidimos en un momento dado cambiar las palabras reservadas begin y end de inicio y fin de bloque, por { y }, s´lo hayque o cambiar este modulo. Se simplifica el dise˜o: el analizador es un objeto con el que n se interact´a mediante ciertos m´todos. Se localiza en un u e unico m´dulo la lectura f´ ´ o ısica de los caracteres, por lo que facilita tratamientos especializados de E/S. Componentes L´xicos, Patrones, Lexemas e Patr´n: es una regla que genera la secuencia de caracteres que o puede representar a undeterminado componente l´xico (una exe presi´n regular). o Lexema: cadena de caracteres que concuerda con un patr´n o que describe un componente l´xico. Un componente l´xico puede e e tener uno o infinitos lexemas. Por ejemplo: palabras reservadas tienen un unico lexema. Los n´meros y los identificadores tienen ´ u infinitos lexemas.

38 Compon. l´xico e identificador num entero if do op div op asig...
tracking img