Analisis Sintactatico

También podría gustarte

Está en la página 1de 19

COMPILADORES

AGENDA

1. Unidad #3
2. Tarea autonóma
3. Recordatorio de notas
4. Asistencia colaboración
5. Instrucciones examen
6. Exámen
CONTENIDO :ANÁLISIS SINTÁCTICO

3.1 Conceptos análisis sintáctico.


3.2 Manejo de errores.
3.3 Diseño de gramáticas.
3.4 Generador de analizadores sintáctico.
UNIDAD #3

TEMAS:
Análisis Sintáctico
Manejo de Errores
Diseño de gramáticas
Generador de Analizadores sintáctico

JOHAO FELIPE CASTILLO SALINAS


Análisis Sintactico
ANÁLISIS
SINTÁCTICO Recibe como entrada los tokens que le pasa el
analizados léxico y comprueba si estos van llegando
en el orden correcto. Su salida “teórica” sería un
3.1 CONCEPTOS árbol sintáctico.
ANÁLISIS SINTÁCTICO.
3.2 MANEJO DE Sus funciones son:
ERRORES. •Aceptar lo que es válido sintácticamente
3.3 DISEÑO DE y rechazar lo que no lo es
•Hacer explícito el orden jerárquico que
GRAMÁTICAS.
tienen los operadores en el lenguaje de que se trate
3.4 GENERADOR DE
•Guiar el proceso de traducción
ANALIZADORES (traducción dirigida por sintaxis)
SINTÁCTICO

JOHAO FELIPE CASTILLO SALINAS


LA
FUNCIÓN DEL ANALIADOR
SINTÁCTICO
LA principal tarea del analizador sintáctico (o parser) no es comprobar que la sintaxis del programa
fuENTE SEA CORRECTA, SINO CONSTRUIR UNA REPRESENTACIÓN INTERNA DE
ESE PROGRAMA Y, EN EL CASO DE QUE SEA UN PROGRAMA INCORRECTO, DAR UN
MENSAJE DE ERROR.

Token
Codigo Resto de
A.L. A.S.
fuente etapas
siguiente

Tabla de
simbolos
JOHAO FELIPE CASTILLO SALINAS
3.1 CONCEPTOS ANÁLISIS SINTÁCTICO.
ANÁLISIS
Se conoce al análisis sintáctico a una función que SINTÁCTICO
tiene componentes léxicos de tal que son proporcionadas
del análisis léxico y esto da como salida un árbol
sintáctico dando a lugar a la función del analizador
sintáctico para comprobar si puede ser generada por la
gramática que define el lenguaje fuente.

Donde se conoce dos Análisis Sintáctico:


Análisis sintáctico Ascendente
Análisis sintáctico Descendente

JOHAO FELIPE CASTILLO SALINAS


3.2 Manejo de errores.
RAZONES
MANEJO DE ERRORES •La cadena de componentes léxicos no obedece las reglas
SINTÁCTICOS gramaticales que definen al L.P.
•Precisión en los métodos modernos de A.S.
A menudo, gran parte de la detección y
recuperación de errores en un compilador El manejador de errores en un A.S. tiene objetivos fáciles de
establecer:
se centra en la fase de análisis sintáctico
•Debe informar de la presencia de errores
con claridad y exactitud
•Se debe recuperar de cada error con la suficiente rapidez
como para detectar errores posteriores
•El manejador de errores debe informar de la
•No debe retrasar de manera significativa el procesamiento
presencia de un error, indicando el lugar preciso
de programas correctos
en el programa, y si sabe cuál es el error, se
incluye un mensaje.

JOHAO FELIPE CASTILLO SALINAS


EJEMPLO: GRAMÁTICA PARA DEFINIR UN

RECURSIVIDAD NÚMERO ENTERO

Problema:
Un compilador debe procesar correctamente
un número infinito de programas, pero
DEFINICIÓN.
por otra parte la especificación sintáctica de
Una gramática es recursiva, si podemos
un lenguaje debe ser finita.
derivar una tira en la que nos vuelve a
aparecer el símbolo no terminal que aparece
Solucion: Recursividad
en la parte izquierda de la regla de derivación.
ESTRUCTURA DE LA RECURSIVIDAD A Þ aAb

• Regla no recursiva que se define como caso base


• Una o mas reglas recursivas que permiten el
crecimiento a partir del caso base
JOHAO FELIPE CASTILLO SALINAS
ALGUNAS DE LAS CARACTERÍSTICAS QUE TIENE LAS
GRAMÁTICAS AMBIGUAS SON LAS SIGUIENTES:

• Gramáticas con •Alguna regla con Un conjunto de Producciones Variables


ciclos simples o una forma reglas de forma recursivas en las que puedan derivar a la
menos simples parecida a que las variables no cadena vacía y a la misma
recursivas de la cadena de terminales, y
producción puedan que aparezcan juntas en la
derivar a la cadena parte derecha de una regla
vacía o en alguna forma
sentencial

JOHAO FELIPE CASTILLO SALINAS


ASOCIATIVIDAD

La asociatividad de un operador se define cómo


se operan tres o más operandos.
Tipos de asociatividad:
• Asociatividad izquierda (se evalúa de izquierda
a derecha)
•Asociatividad derecha (se evalúa de derecha a
izquierda)
ASOCIATIVIDAD Y
PRECEDENCIA DE La asociatividad en una gramática se
OPERADORES refleja en el tipo de recursividad que se emplea.
Si la asociatividad del operador es por la
izquierda, la regla sintáctica en la que interviene
dicho operador debe ser recursiva por
la izquierda; en el caso de asociatividad por
la derecha se utiliza recursión por
la derecha.
TIPOS DE ANÁLISIS
SINTÁCTICO
ESTRATEGIAS PARA CONSTRUIR EL ÁRBOL
SINTÁCTICO:
•Análisis ascendente
•Análisis descendente

Ambas estrategias recorren la cadena de entrada de izquierda a


derecha una sola vez, y necesitan que la gramática no se ambigua.
Para
las GLC los algoritmos de análisis sintáctico tienen un coste de
O(n3), por lo tanto es necesario buscar subclases de gramáticas que
permitan un análisis sintáctico en orden lineal.

JOHAO FELIPE CASTILLO SALINAS


3.4 GENERADOR DE
ANALIZADORES
SINTÁCTICO
YACC, BISON, PCYACC Y
YACCOV

JOHAO FELIPE CASTILLO SALINAS


YACC, BISON,
PCYACC Y
A la hora de diseñar YACCOV, se ha tratado de hacerlo
YACCOV compatible con yacc (generador de analizadores
sintácticos incorporado al sistema operativo UNIX) y con
Yacc es un generador de analizadores
PCYACC (implementación de yacc para PC’s de Abraxas
sintácticos, es decir, un programa que, a
Software Inc.), de forma que la utilización de ambos
partir de la descripción de una gramática,
programas sea similar. Esto hará posible que los
genera un analizador sintáctico para el
usuarios de YACC puedan utilizar YACCOV sin ningún
lenguaje descrito por ella.
problema y de la misma forma, que los usuarios de
YACCOV puedan utilizar YACC o PCYACC.
YACCOV es una versión de yacc creada en la
Universidad de Oviedo (YACCOViedo)
basado en otro generador BISON (GNU
versión de yacc).

DIRECTRICES DE MARCA DE LA ESCUELA DE ARTE DINÁMICA, OTOÑO DE


2020
TAREA AUTÓNOMA
INSTRUCCIONES PARA COLGAR AL
FORO: GENERADOR DE ANALIZADORES
LÉXICO LEX CON MANEJO DE ERRORES
• Realizar un mapa mental referente al ANÁLISIS
LÉXICO LEX, SINTÁCTICO,
CON MANEJO DE ERROR que sea entendible, no repetido de lo visto.
• Realizar un mapa mental que proporcione los pasos del análisis sintáctico con 2
ejemplos, aplicando el generador de analizadores sintáctico.

• Los dos ejemplo debe colocar un comentario la funcionalidad de cada línea de


Código.

• La tutora creara un evento la próxima semana donde usted lo subirá en document


word capacidad de hasta 5 MB, con los prints respectivos del resultado generado del
analizador sintactico. Recuerde colocar las lineas de Código de ejemplo.
• Finalmente de forma aleatoria expondra el ejemplo
RECORDATORIO NOTA
8. FORMAS DE EVALUAR

También podría gustarte