Tarea finito

Solo disponible en BuenasTareas
  • Páginas : 6 (1293 palabras )
  • Descarga(s) : 0
  • Publicado : 2 de octubre de 2010
Leer documento completo
Vista previa del texto
Analizador léxico (scanner): lee la secuencia de caracteres del Programa fuente, carácter, y los agrupa para formarUnidades con significado propio, los componentes léxicos (tokens En ingles). Estos componentes léxicos representan: palabras reservadas: if, while, do, . . .
Identificadores: asociados a variables, nombres de funciones, tipos definidos por el usuario, etiquetas,... Por ejemplo:posición, Velocidad, tiempo, . . .Operadores: = * + - / == > < & ! = . . . Símbolos especiales: ; ( ) [ ] f g ...

Constantes numéricas: literales que representan valores enteros, en coma flotante, etc., 982, 0xF678, -83.2E+2,...constantes de caracteres: literales que representan cadenas concretas de caracteres, hola mundo",...

El analizador léxico opera bajo petición del analizadorsintáctico devolviendo un componente léxico conforme el analizador sintáctico lo va necesitando para avanzar en la gramática. Los componentes léxicos son los símbolos terminales de la gramática.
Suele implementarse como una subrutina del analizador sintáctico. Cuando recibe la orden obtén el siguiente componente léxico, el analizador léxico lee los caracteres de entrada hasta identificar elsiguiente componente léxico.

FUNCIONES DEL ANALIZADOR LEXICO
Otras funciones secundarias:
Manejo del chero 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 validos para formar un token).
Inclusion de ¯cheros: # include ...
La expansión de macros yfunciones inline: # dene ...
Contabilizar el número de líneas y columnas para emitir mensajes de error. Reconocimiento y ejecución de las directivas de compilación (por ejemplo, para depurar u optimizar el código fuente).

Ventajas de separar el análisis léxico y el análisis sintáctico: Facilita transportabilidad del traductor (por ejemplo, si decidimos en un momento dado cambiar las palabrasreservadas
begin y end de inicio y n de bloque, por f y g, solo hay que cambiar este modulo.
Se implica el diseño: el analizador es un objeto con el que se interactúa mediante ciertos métodos. Se localiza en un único modulo la lectura física de los caracteres, por lo que
Facilita tratamientos especializados de E/S.

Componentes Léxicos, Patrones, Lexemas
Patrón: es una regla que genera lasecuencia de caracteres que puede representar a un determinado componente léxico (una expresión regular).
Lexema: cadena de caracteres que concuerda con un patrón que describe un componente léxico. Un componente léxico puede tener uno o infinitos lexemas. Por ejemplo: palabras reservadas tienen un único lexema. Los números y los identificadores tienen
Infinitos lexemas.

Es importante conocer ellexema (para construir la tabla de símbolos). Los componentes léxicos se representan mediante una estructura registro con tipo de token y lexema:

typedef struct f
TokenType token;
char *lexema; //se reserva memoria din´amicamente
g TokenRecord;
TokenRecord getToken(void);

<TKN ID, a>
<TKN CORAPER, [>
<TKN ID, indice>
<TKN CORCIERRE, ]>
<TKN NUM, 2>
<TKNOPADD, +>
<TKN NUM, 4>

Especificacion de los componentes lexicos: expresiones regulares.

Una o más repeticiones +
R + indica una o más repeticiones de r
(0/1)+ = (0/1)(0/1)*
Cualquier carácter.
.*b.* indica cualquier cadena que contiene una letra b
Un rango de caracteres [ ] (clase)
[a-z] indica cualquier carácter entre la a y z minúsculas
[a-zA-Z] indica cualquier letradel abecedario minúscula o mayúscula
[0-9] indica cualquier digito de 0 a 9
[abc] indica ajbjc

Cualquier carácter excepto un conjunto dado
(a/b) indica cualquier carácter que no sea una a o b
Opcionalidad ?
r? Indica que la expresión r puede aparecer o no. En el caso de
Que aparezca solo lo haría una vez.
Cuando queremos usar estos símbolos con su significado tenemos que usar la barra...
tracking img