Procesadores de Lenguaje Tema 4: Analizador sintáctico ...
Procesadores de Lenguaje Tema 4: Analizador sintáctico ...
Procesadores de Lenguaje Tema 4: Analizador sintáctico ...
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
<strong>Analizador</strong> <strong>sintáctico</strong><br />
Conceptos: clases <strong>de</strong> estrategias <strong>de</strong> análisis <strong>sintáctico</strong><br />
• Segundo enfoque:<br />
• A partir <strong>de</strong> la ca<strong>de</strong>na <strong>de</strong> “tokens” <strong>de</strong>vueltos por el analizador morfológico, se<br />
comienza a leer intentando i<strong>de</strong>ntificar las partes <strong>de</strong>rechas <strong>de</strong> las reglas <strong>de</strong> la<br />
gramática.<br />
• Cuando esto ocurre se sustituye la ca<strong>de</strong>na <strong>de</strong> “tokens” por el no terminal <strong>de</strong> la<br />
parte izquierda <strong>de</strong> la regla y se continúa el mismo análisis teniendo en cuenta<br />
esta sustitución<br />
• Si en algún momento ninguna secuencia <strong>de</strong> la ca<strong>de</strong>na se correspon<strong>de</strong> con la<br />
parte <strong>de</strong>recha <strong>de</strong> ninguna regla tal vez se tenga que <strong>de</strong>shacer alguna elección<br />
para probar si con otra <strong>de</strong>cisión se consigue terminar el análisis<br />
• Cuando se han probado sistemáticamente todas las opciones sin po<strong>de</strong>r terminar<br />
el análisis se concluye que el programa es sintácticamente incorrecto.<br />
• La otra forma <strong>de</strong> terminar el análisis es cuando se consigue obtener por el<br />
mecanismo <strong>de</strong>scrito el axioma <strong>de</strong> la gramática.<br />
• En este último caso se concluye que el programa es sintácticamente correcto.<br />
<strong>Analizador</strong> <strong>sintáctico</strong><br />
Conceptos: clases <strong>de</strong> estrategias <strong>de</strong> análisis <strong>sintáctico</strong><br />
• Al primer enfoque, por la manera y el or<strong>de</strong>n en que proce<strong>de</strong> se le conoce también<br />
como análisis <strong>de</strong>scen<strong>de</strong>nte o “top down”.<br />
• Por la misma razón al segundo enfoque se le conoce también como análisis<br />
ascen<strong>de</strong>nte o “bottom up”.<br />
5<br />
6<br />
Análisis <strong>sintáctico</strong> <strong>de</strong>scen<strong>de</strong>nte<br />
Introducción<br />
• El alumno pue<strong>de</strong> imaginar alguna solución a este problema con las herramientas que<br />
ha adquirido en otras materias <strong>de</strong> la carrera.<br />
• Se está ante una situación en la que se <strong>de</strong>be encontrar una <strong>de</strong>rivación (secuencia <strong>de</strong><br />
aplicación <strong>de</strong> reglas <strong>de</strong> la gramática en lugares concretos) que lleve <strong>de</strong>s<strong>de</strong> el no<br />
terminal inicial (el axioma) hasta la situación final (el programa proporcionado como<br />
entrada)<br />
• A<strong>de</strong>más, el número <strong>de</strong> posibles <strong>de</strong>rivaciones es muy gran<strong>de</strong> (potencialmente infinito)<br />
• Esta situación pue<strong>de</strong> a los problemas <strong>de</strong> búsqueda <strong>de</strong> un camino que llevara <strong>de</strong> una<br />
situación inicial a otra final atravesando un espacio enorme <strong>de</strong> posibles situaciones.<br />
• Ya se ha estudiado en asignaturas como IA la existencia <strong>de</strong> estrategias generales<br />
(para cualquier problema) <strong>de</strong> búsqueda ciega y sus propieda<strong>de</strong>s <strong>de</strong> las que se<br />
mencionan algunas:<br />
• Las dos estrategias básicas son en anchura y en profundidad<br />
• En anchura siempre se pue<strong>de</strong> conseguir encontrar la solución óptima (aquella<br />
para la que se requiere un menor número <strong>de</strong> pasos)<br />
• En profundidad, excepto árboles infinitos, se suele tener oportunidad <strong>de</strong><br />
encontrar alguna solución con menos esfuerzo<br />
Análisis <strong>sintáctico</strong> <strong>de</strong>scen<strong>de</strong>nte<br />
“Top-down” con vuelta atrás lenta: conceptos<br />
• Podríamos consi<strong>de</strong>rar el análisis <strong>sintáctico</strong> top-down con vuelta atrás lenta como un<br />
caso particular <strong>de</strong> búsqueda ciega en profundidad (se <strong>de</strong>sempate <strong>de</strong> izquierda a<br />
<strong>de</strong>recha)<br />
• El criterio para <strong>de</strong>cidir si una regla es aplicable en una posición es la coinci<strong>de</strong>ncia <strong>de</strong><br />
esa posición con el no terminal que está en la parte izquierda <strong>de</strong> la regla.<br />
• No podremos continuar por un camino cuando tengamos terminales que discrepen<br />
con el programa (po<strong>de</strong>mos suponer el or<strong>de</strong>n <strong>de</strong> recorrido natural <strong>de</strong>l programa (<strong>de</strong><br />
izquierda a <strong>de</strong>recha)<br />
• Habremos terminado el proceso en dos situaciones:<br />
• Si el árbol <strong>de</strong> <strong>de</strong>rivación “se cierra” porque se ha llegado a eliminar todos los no<br />
terminales y se obtiene la misma secuencia <strong>de</strong> terminales <strong>de</strong>l programa. En este<br />
caso se ha construido un árbol <strong>sintáctico</strong> para el programa que resulta ser<br />
correcto<br />
• Si no se ha podido “cerrar” el árbol <strong>de</strong> <strong>de</strong>rivación pero se ha probado todas las<br />
reglas en cada posición y no se pue<strong>de</strong> aplicar ninguna otra opción. En ese caso<br />
se ha <strong>de</strong>mostrado que el programa es sintácticamente incorrecto.<br />
• Describiremos esta técnica mediante los siguientes ejemplos<br />
7<br />
8