Presentaci - PowerPoint PPT Presentation

About This Presentation
Title:

Presentaci

Description:

S mbolo inicial de la gram tica, debe ubicarse como raiz del rbol de derivaci n. ... An lisis sint ctico I: Problemas del AS. Compiladores e int rpretes ... – PowerPoint PPT presentation

Number of Views:392
Avg rating:3.0/5.0
Slides: 16
Provided by: erida
Category:
Tags: as | como | presentaci

less

Transcript and Presenter's Notes

Title: Presentaci


1
Compiladores e intérpretes Análisis Sintáctico
I Profesor Eridan Otto
2
Análisis Sintáctico I
  • Introducción
  • Tipos de análisis sintáctico

3
Compiladores e intérpretes
Análisis sintáctico I Introducción
  • Cada lenguaje de programación tiene reglas que
    determinan la estructura sintáctica que indica la
    correcta formación de los mismos.
  • La sintaxis de un lenguaje de programación puede
    ser descrita por gramáticas libres de contexto o
    notación BNF (Bakus-Naur Form)
  • Ventajas de usar gramáticas
  • Son especificaciones sintácticas precisas de los
    lenguajes
  • Fáciles de comprender
  • Para algunas clases de gramáticas se puede
    construir un parser automáticamente
  • El proceso de construcción de un abalizador
    sintáctico puede llevar a descubrir ambigüedades
  • Una gramática bien diseñada, imparte estructura
    al lenguaje de programación, siendo más fácil
    generar código y detectar errores.
  • Los lenguajes evolucionan en el tiempo, una
    gramática bien definida permite ampliar o
    modificar más fácilmente el lenguaje y la
    implementación de su compliador

4
Compiladores e intérpretes
Análisis sintáctico I Introducción
  • Funciones
  • Comprobar que los componentes léxicos entregados
    por el analizador léxico, cumple con las reglas
    de la gramática.
  • Reporte de errores de sintaxis y recuperación de
    los mismos, de manera que reporte la mayor
    cantidas posible de errores
  • Generar el árbol sintáctico par la próxima fase
    de compilación.

Manejo de Errores
Componente léxico
Analizador léxico
Programa Fuente
Analizador sintáctico
Arbol sintáctico
Obtener otro
Componente léxico
Tabla de Símbolos
5
Compiladores e intérpretes
Análisis sintáctico I Tipos
  • Tres tipos generales de analizadores sintácticos.
  • Métodos universales Cocke-Younger-Kasami y
    Early
  • Sirven para cualquier gramática
  • Son ineficientes para su uso en lenguajes reales
  • Descendentes (TOP-DOWN)
  • Construyen el árbol de análisis sintáctico de
    arriba (No terminal inicial) hacia abajo
    (terminales), todos los analizadores de este tipo
    reconocen un subconjunto de gramáticas
  • Analizadores descendentes recursivos
  • Analizadores LL(1) con tabla (PDA determinista)
  • Ascendentes (BOTTOM-UP)
  • Construyen el árbol de análisis sintáctico de
    abajo hacia arriba, tampoco son capaces de
    reconocer todas las GLC
  • Analizadores de precedencia de operador
  • Analizadores LR(1)

6
Compiladores e intérpretes
Análisis sintáctico I Tipos
  • Tanto para el análisis descendente como para el
    ascendente
  • La entrada se examina de izquierda a derecha, un
    símbolo cada vez
  • Se trabaja con subclases de gramática
  • En general las gramáticas serán LL y LR
  • LL(K) es subconjunto de LR(k)
  • En la práctica sólo seutilizan LL(1) y LR(1)
  • Muchos compiladores se denomina parse diriven,
    debido a que la fáse sintáctica es muy relevante
    y va dirigiendo al analizador léxico.
  • Al igual que con los analizadores léxicos existen
    herramientas para generar automáticamente
    analizadores sintácticos como YACC y Bison.

7
Compiladores e intérpretes
Análisis sintáctico I Tipos
  • Descendente (visión general)
  • Algoritmo
  • Símbolo inicial de la gramática, debe ubicarse
    como raiz del árbol de derivación.
  • Hata que sólo hayan símbolos terminales, derivar
    por la izquierda.
  • Ejemplo
  • Gramática de expresiones
  • EXPRESION EXPRESION TERMINO
    EXPRESION TERMINO TERMINO
  • TERMINO Id Numero
  • Entrada Id Id Id
  • Derivación
  • EXPRESION ? EXPRESION TERMINO ?
  • EXPRESION
    TERMINO TERMINO ?
  • TERMINO TERMINO
    TERMINO ?
  • Id TERMINO TERMINO ?
  • Id Id TERMINO ?
  • Id Id Id

8
Compiladores e intérpretes
Análisis sintáctico I Tipos
  • Ascendente (visión general)
  • DefiniciónPivote
  • Secuencia más larga de símbolos (Terminales y No
    Terminales) en la parte más izquierda de la
    entrada que se puede encontrar en la parte
    derecha de una producción y tal que los símbolos
    a su derecha son terminales.
  • Ejemplo para la gramatica de expersiones
    anterior
  • Si la entrada es EXPRESION TERMINO Id
  • El pivote es EXPRESION TERMINO
  • Algoritmo
  • Empezar con la cadena de entrada
  • Intentar llegar hasta el símbolo inicial,
    encontrando en cada paso un pivote y reduciéndolo
    con el no terminal de la producción
    correspondiente.
  • Ejemplo Id Id Id? TERMINO Id Id ?
    EXPRESION Id Id ? EXPRESION TERMINO
    Id ? EXPRESION Id ? EXPRESION TERMINO ?
    EXPRESION

9
Compiladores e intérpretes
Análisis sintáctico I Problemas del AS
  • Descendentes
  • Más de una opción A con el mismo
    terminal o secuencia de terminales como primeros
    símbolo de cada producción
  • Esto implica que el analizador debe poder
    retroceder (Backtracking)
  • Analizar varios elementos de la entrada hacia
    delante.
  • Recursividad izquierda
  • Eliminación de la recursividad
  • Ambigüedad
  • Factorización por la izquierda
  • Ascendentes
  • Más de una opción A y es el
    pivote
  • Otros
  • Problemas semánticos

10
Compiladores e intérpretes
Análisis sintáctico I Problemas del AS
  • Recursividad Izquierda en un paso, caso una
    producción simple
  • Se produce cuando una producción tiene la forma
  • A A
  • Se resuelve transformando la producción o regla
    de derivación original en dos reglas
  • A
  • A
  • Ejemplo Considere la gramática de expresiones
    siguiente y elimine su recursividad izquierda
  • E ETT
  • T T FF
  • F (E) Id, aplicando la regla anterior
    la gramática queda
  • E TE
  • E TE
  • T FT
  • T FT
  • F (E) Id

11
Compiladores e intérpretes
Análisis sintáctico I Problemas del AS
  • Recursividad Izquierda en un paso, caso múltiples
    producciones
  • Se produce cuando una producción tiene la forma
  • A
  • Se resuelve transformando la producción o regla
    de derivación original en dos reglas
  • A
  • A
  • Ejemplo Considere la gramática de expresiones
    siguiente y elimine su recursividad izquierda
  • EXPRESION EXPRESION TERMINO EXPRESION
    TERMINO TERMINO
  • aplicando la regla anterior, las producciones
    quedan
  • EXPRESION TERMINO A
  • A TERMINO A
    TERMINOA

12
Compiladores e intérpretes
Análisis sintáctico I Problemas del AS
  • Una gramática es recursiva por la izquierda si
    tiene un no terminal tal que exista una
    derivación A para alguna cadena
  • Ejemplo
  • S Aa b
  • A Ac Sd
  • El no terminal S es recursivo en más de un paso
    S -gt Aa -gt Sda
  • El siguiente algoritmo elimina sistemáticamente
    la recursividad izquierda de una gramática
  • Disponer de los símbolos no términales en algún
    orden
  • For i1 to n
  • For j1 to i-1
  • - Reemplazar cada producción
    por
  • donde
    son todas las producciones de
  • - Eliminar recursividad izquierda
    de las

Este algoritmo está asegurado cuando en la
gramática no existen ciclos (derivaciones que
llevan exactamente al mismo no terminal) ni
producciones
13
Compiladores e intérpretes
Análisis sintáctico I Problemas del AS
  • Para el ejemplo, la producción epsilon no afecta
    el resultado.
  • Se ordena S, A. Para i1 no sucede nada y
    tampoco hay recursividad izquierda en las
    producciones de S.
  • Para i 2, se sustituyen las producciones de S
    (j1) en ASd obteniendo
  • A Ac Aad
    bd
  • Eliminando la recursividad inmediata
  • S Aa b
  • A bdAA
  • A cAadA

14
Compiladores e intérpretes
Análisis sintáctico I Problemas del AS
  • Factorización por la izquierda
  • La idea básica, es que cuando no está claro cuál,
    entre dos producciones alternativas usar para
    expandir un no terminal A , se deben re escribir
    las producciones de A para diferir la decisión
    hasta que el analizador haya procesado suficiente
    entrada como para hacer la elección correcta.
  • Ejemplo
  • sent IF expr THEN sent ELSE sent
  • IF expr THEN sent
  • REPEAT sent UNTIL expr
  • REPEAT sent FOREVER
  • Algoritmo , deja gramática factorizada por la
    izquierda
  • Para cada noterminal A, encuentre el prefijo
    común a dos o más alternativas de la forma
    donde
    representa todas las alternativas que no
    comienzan con , por
  • Aquí A es un nuevo no terminal. Aplicar
    repetidamente esta transformación hasta que no
    existan dos alternativas para un no terminal con
    el mismo prefijo.

15
Compiladores e intérpretes
Análisis sintáctico I Problemas del AS
  • Para el ejemplo, se deben corregir los IF THEN y
    REPEAT. Aplicando el algoritmo las producciones
    quedan
  • sent IF expr THEN sentA1
  • REPEAT sentA2
  • A1ELSE sent
  • A2UNTIL expr FOREVER
Write a Comment
User Comments (0)
About PowerShow.com