0 calificaciones0% encontró este documento útil (0 votos)
5 vistas17 páginas
Es un agente basado en objetivos y estos deciden que hacer para encontrar una secuencia de acciones que conduzcan a los estados deseables
Se debe hacer dos formulaciones:
1. Formulación del objetivo
Alcanzar todo lo que le interesa al agente
Se pueden eliminar estados basándose en 2 cosas la medida del rendimiento y en la situación actual de nuestro problema
2. Formulación del problema
Se debe
Es un agente basado en objetivos y estos deciden que hacer para encontrar una secuencia de acciones que conduzcan a los estados deseables
Se debe hacer dos formulaciones:
1. Formulación del objetivo
Alcanzar todo lo que le interesa al agente
Se pueden eliminar estados basándose en 2 cosas la medida del rendimiento y en la situación actual de nuestro problema
2. Formulación del problema
Se debe
Es un agente basado en objetivos y estos deciden que hacer para encontrar una secuencia de acciones que conduzcan a los estados deseables
Se debe hacer dos formulaciones:
1. Formulación del objetivo
Alcanzar todo lo que le interesa al agente
Se pueden eliminar estados basándose en 2 cosas la medida del rendimiento y en la situación actual de nuestro problema
2. Formulación del problema
Se debe
ANALIZADOR LXICO (AL) El Analizador lxico (scanner), lee la secuencia de caracteres del programa fuente, caracter a caracter, y los agrupa para formar unidades con significado propio, los componentes lxicos (tokens en ingls). El analizador lxico representa una interfaz entre el programa fuente y el analizador sintctico o parser. ANALIZADOR LXICO Secuencia de caracteres Programa fuente Componentes lxicos Tokens Funciones del Analizador Lxico Funcin principal: El analizador lxico opera bajo peticin del analizador sintctico devolviendo un componente lxico conforme el analizador sintctico lo va necesitando para avanzar en la gramtica. Los componentes lxicos son los smbolos terminales de la gramtica. El AL Suele implementarse como una subrutina del analizador sintctico. Cuando recibe la orden obtn el siguiente componente lxico, el analizador lxico lee los caracteres de entrada hasta identificar el siguiente componente lxico, el cual devuelve al sintctico segn el formato convenido. ANALIZADOR LXICO Programa fuente ANALIZADOR SINTCTICO Obtn el siguiente componente lxico Componente lxico rbol de anlisis sintctico Funciones del Analizador Lxico Otras funciones secundarias: Eliminar: comentarios, espacios en blanco, tabuladores, retorno de carro, etc, y en general, todo aquello que carezca de significado segn la sintaxis del lenguaje. Reconocer los identificadores de usuario, nmeros, palabras reservadas del lenguaje, etc., y tratarlos correctamente con respecto a la tabla de smbolos (solo en los casos en que este analizador deba tratar con dicha estructura). Llevar la cuenta del nmero de lnea por la que va leyendo, por si se produce algn error, dar informacin acerca de dnde se ha producido. Avisar de errores lxicos. Por ejemplo, si el carcter @ no pertenece al lenguaje, se debe emitir un error. Tambin puede hacer funciones de preprocesador. Patrn Representa la regla para que una secuencia de caracteres sea considerada dentro de cierto componente lxico. Regla que describe cmo se forma un token. Cmo se especifican los tokens (patrones)? Mediante expresiones regulares Ejemplo: El patrn para un identificador de Pascal es: Una letra seguida por letras, dgitos o subguiones (_) Token Es la categora lxica asociada a un patrn. Cada token se convierte en un nmero o cdigo identificador nico. En algunos casos, cada nmero tiene asociada informacin adicional necesaria para las fases posteriores de la etapa de anlisis. Token Los componentes lxicos o tokens ms importantes son: Palabras reservadas: if, while, do, . . . Identificadores: asociados a variables, nombres de funciones, tipos definidos por el usuario, etiquetas,... Por ejemplo: posicion, velocidad, tiempo, . . . Operadores: = * + - / == > < & ! = . . . Smbolos especiales: ; ( ) [ ] { } ... Constantes numricas: 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",... Lexema Instancia particular de un token: Secuencia de caracteres en el programa fuente que se corresponden con un patrn. Ejemplos: Este_es_1_ejemplo es el lexema que satisface el patrn de un identificador 8", 23" y 50" son algunos lexemas que encajan con el patrn (0'|1'|2'| ... |9') + , de nmeros enteros. Un componente lxico puede tener uno o infinitos lexemas. Por ejemplo: palabras reservadas tienen un nico lexema. Los nmeros y los identificadores tienen infinitos lexemas. En el patrn WHILE slo encaja el lexema WHILE. Ejemplos token, lexema y patrn Componente lxico (Token) Lexema Patrn identificador indice, a, temp, pi, cuenta, d2 Letra seguida de letras o dgitos num_entero 1456, 4, 1, 2 Dgito seguido de ms dgitos If if Letra i seguida de letra f do do Letra d seguida de letra o op_div / Caracter / op_asig = Caracter = num_real 4.78, 3.141592, 0.65 Uno o ms dgitos seguido de un punto seguido de uno o ms dgitos (0 ... 9) + . (0 ... 9) + Ejemplos de Anlisis Lxico posicion := inicial + velocidad * 60 Componentes lxicos: 1. El identificador posicion 2. El smbolo de asignacin := 3. El identificador inicial 4. El signo de suma: + 5. El identificador velocidad 6. El signo de multiplicacin:* 7. El nmero 60 Componentes lxicos o tokens T_While T_ParentesisIzquierdo T_Identificador y T_Menos T_Identificador z T_ParentesisDerecho T_LlaveApertura T_Int T_Identificador x T_Asignacion T_Identificador a T_Mas T_Identificador b T_PuntoyComa T_Identificador y T_MasAsignacion T_Identificador x T_PuntoyComa T_LlaveCierre while (y < z) { int x = a + b; y += x; } Implementacin de un AL Para crear un AL hay que: Especificar todos los tokens del lenguaje Puede haber varios tokens que correspondan a una misma expresin regular En este caso el algoritmo asociado a la expresin regular deber diferenciar a partir del lexema el token. Implementacin de un AL Mtodos para la construccin de un Analizador Lxico: Implementacin manual del AL Generador automtico de AL Implementacin manual de AL Este mecanismo consiste en construir los patrones necesarios para cada categora lxica (tokens), construir sus autmatas finitos individuales, fusionarlos por opcionalidad y, finalmente, implementar los autmatas resultantes. Aunque la construccin de analizadores mediante este mtodo es sistemtica y no propensa a errores, cualquier actualizacin de los patrones reconocedores implica la modificacin del cdigo que los implementa, por lo que el mantenimiento se hace muy costoso. Implementacin manual de AL Las ER se convierten a AFD Un AL se implementa con un AFD + acciones semnticas. Un AFD se representa: Diagrama transiciones Matriz de estados Las acciones semnticas ejecutan una serie de acciones. Generador automtico de AL En este caso, se utiliza un programa especial que tiene como entrada pares de la forma (expresin regular, accin). El metacompilador genera todos los autmatas finitos, los convierte a autmata finito determinista, y lo implementa en C. El programa C as generado se compila y se genera un ejecutable que es el anlizador lxico de nuestro lenguaje. Por supuesto, existen metacompiladores que generan cdigo Java, Pascal, etc. en lugar de C. Generador automtico de AL Flex (Fast Lexical Analyzer Generator) es un generador automtico de analizadores lxicos en lenguaje C. Es software de GNU. Entrada: un fichero texto con la especificacin de los componentes lxicos, las expresiones regulares que los definen. Salida: un programa en C que implementa dicho analizador, preparado para ser compilado y utilizado. Existen muchas herramientas para la generacin automtica de AL. Las ms conocidas: Lex Flex Jflex PClex Coco