PROCESADORES DE LENGUAJES - uco.es ma1fegan/2011-2012/pl/temas/Tema-5-   Procesadores de Lenguajes

  • View
    215

  • Download
    0

Embed Size (px)

Text of PROCESADORES DE LENGUAJES - uco.es ma1fegan/2011-2012/pl/temas/Tema-5-   Procesadores de...

Procesadores de Lenguajes Tema V: Analisis Ascendente

PROCESADORES DE LENGUAJESTEMA V: ANALISIS ASCENDENTE

Prof. Dr. Nicolas Luis Fernandez Garca

Departamento de Informatica y Analisis NumericoEscuela Politecnica Superior de Cordoba

Universidad de Cordoba

Universidad de Cordoba: Escuela Politecnica Superior Ingeniera Informatica 1 / 88

Procesadores de Lenguajes Tema V: Analisis Ascendente

Introduccion

1 Introduccion

Universidad de Cordoba: Escuela Politecnica Superior Ingeniera Informatica 2 / 88

Procesadores de Lenguajes Tema V: Analisis Ascendente

IntroduccionDescripcion general

1 IntroduccionDescripcion generalConcepto de pivoteConflictosTipos de analisis sintactico ascendente

Metodos basados en reglas de precedenciaMetodos de analisis LRJustificacion de los metodos LR

Gramaticas LRTabla de analisis sintactico ascendente LR

Universidad de Cordoba: Escuela Politecnica Superior Ingeniera Informatica 3 / 88

Procesadores de Lenguajes Tema V: Analisis Ascendente

IntroduccionDescripcion general

Analisis Sintactico Ascendente

Objetivo: construir un arbol sintactico asociado a la cadena deentrada.

La construccion del arbol sintactico es ascendente: comienzapor las hojas y termina en la raz.

Objetivo equivalente: obtener una derivacion por la derecha enorden inverso.

Se fundamenta en los conceptos de desplazamiento yreduccion.

Universidad de Cordoba: Escuela Politecnica Superior Ingeniera Informatica 4 / 88

Procesadores de Lenguajes Tema V: Analisis Ascendente

IntroduccionDescripcion general

Analisis Sintactico Ascendente

Objetivo: construir un arbol sintactico asociado a la cadena deentrada.

La construccion del arbol sintactico es ascendente: comienzapor las hojas y termina en la raz.

Objetivo equivalente: obtener una derivacion por la derecha enorden inverso.

Se fundamenta en los conceptos de desplazamiento yreduccion.

Universidad de Cordoba: Escuela Politecnica Superior Ingeniera Informatica 5 / 88

Procesadores de Lenguajes Tema V: Analisis Ascendente

IntroduccionDescripcion general

Analisis Sintactico Ascendente

Objetivo: construir un arbol sintactico asociado a la cadena deentrada.

La construccion del arbol sintactico es ascendente: comienzapor las hojas y termina en la raz.

Objetivo equivalente: obtener una derivacion por la derecha enorden inverso.

Se fundamenta en los conceptos de desplazamiento yreduccion.

Universidad de Cordoba: Escuela Politecnica Superior Ingeniera Informatica 6 / 88

Procesadores de Lenguajes Tema V: Analisis Ascendente

IntroduccionDescripcion general

Analisis Sintactico Ascendente

Objetivo: construir un arbol sintactico asociado a la cadena deentrada.

La construccion del arbol sintactico es ascendente: comienzapor las hojas y termina en la raz.

Objetivo equivalente: obtener una derivacion por la derecha enorden inverso.

Se fundamenta en los conceptos de desplazamiento yreduccion.

Universidad de Cordoba: Escuela Politecnica Superior Ingeniera Informatica 7 / 88

Procesadores de Lenguajes Tema V: Analisis Ascendente

IntroduccionDescripcion general

Ejemplo (Ejemplo de Analisis Ascendente)

P = {(1) S T id (L) ;(2) T T *(3) T int(4) L P(5) L (6) P P,T(7) P T}

Universidad de Cordoba: Escuela Politecnica Superior Ingeniera Informatica 8 / 88

Procesadores de Lenguajes Tema V: Analisis Ascendente

IntroduccionDescripcion general

Ejemplo (Ejemplo de Analisis Ascendente)

Esta gramatica genera prototipos de funciones del lenguaje deprogramacion C.

Un ejemplo de estos prototipos podra ser:

int * reservarMemoria ( int);

Universidad de Cordoba: Escuela Politecnica Superior Ingeniera Informatica 9 / 88

Procesadores de Lenguajes Tema V: Analisis Ascendente

IntroduccionDescripcion general

Ejemplo (Ejemplo de Analisis sintactico Ascendente (1 de 2))

Pila Entrada Accionint * id ( int ) ; $ desplazar int

int * id ( int ) ; $ reducir (3) T intT * id ( int ) ; $ desplazar *T * id ( int ) ; $ reducir (2) T T *T id ( int ) ; $ desplazar idT id ( int ) ; $ desplazar (T id ( int ) ; $ desplazar intT id ( int ) ; $ reducir (3) T int

Universidad de Cordoba: Escuela Politecnica Superior Ingeniera Informatica 10 / 88

Procesadores de Lenguajes Tema V: Analisis Ascendente

IntroduccionDescripcion general

Ejemplo (Ejemplo de Analisis sintactico Ascendente (2 de 2))

Pila Entrada AccionT id ( T ) ; $ reducir (7) P TT id ( P ) ; $ reducir (4) L PT id ( L ); $ desplazar )T id ( L ) ; $ desplazar ;T id ( L ) ; $ reducir (1) S T id (L);S $ ACEPTAR

Universidad de Cordoba: Escuela Politecnica Superior Ingeniera Informatica 11 / 88

Procesadores de Lenguajes Tema V: Analisis Ascendente

IntroduccionDescripcion general

Ejemplo (Derivacion)

La derivacion por la derecha se ha obtenido en orden inverso.

S 1

T id ( L ) ;

4

T id ( P ) ;

7

T id ( T ) ;

3

T id ( int ) ;

2

T * id ( int ) ;

3

int * id ( int );

Universidad de Cordoba: Escuela Politecnica Superior Ingeniera Informatica 12 / 88

Procesadores de Lenguajes Tema V: Analisis Ascendente

IntroduccionDescripcion general

Ejemplo (Arbol sintactico asociado a la derivacion)

T

T *

int

id L

S

) ;(

P

T

int

Universidad de Cordoba: Escuela Politecnica Superior Ingeniera Informatica 13 / 88

Procesadores de Lenguajes Tema V: Analisis Ascendente

IntroduccionDescripcion general

Nota (Acciones del analisis ascendente)

Desplazar: traslada el primer smbolo de la entrada a la pila.

Reducir:sustituye, en la pila, los smbolos de la alternativa de una reglapor el smbolo de su parte izquierda.Se utiliza el concepto de pivote.

Aceptar: la cadena de entrada es reconocida.

Error: la cadena de entrada es rechazada.

Universidad de Cordoba: Escuela Politecnica Superior Ingeniera Informatica 14 / 88

Procesadores de Lenguajes Tema V: Analisis Ascendente

IntroduccionConcepto de pivote

1 IntroduccionDescripcion generalConcepto de pivoteConflictosTipos de analisis sintactico ascendente

Metodos basados en reglas de precedenciaMetodos de analisis LRJustificacion de los metodos LR

Gramaticas LRTabla de analisis sintactico ascendente LR

Universidad de Cordoba: Escuela Politecnica Superior Ingeniera Informatica 15 / 88

Procesadores de Lenguajes Tema V: Analisis Ascendente

IntroduccionConcepto de pivote

Definicion (Concepto de pivote (1/2))

Si G =(VN , VT , P, S) es gramatica de contexto libre y

SkD

entonces

un pivote se define comouna regla de produccion de la forma A y una posicion en , en la cual se encuentra .

de forma que,

al sustituir por A en ,se obtiene el paso anterior de una derivacion por la derecha.

Universidad de Cordoba: Escuela Politecnica Superior Ingeniera Informatica 16 / 88

Procesadores de Lenguajes Tema V: Analisis Ascendente

IntroduccionConcepto de pivote

Definicion (Concepto de pivote (2/2))

Si = z entonces

SD

Az A

z =

Pila Entrada Accion. . . . . . . . . z $ reducir A A z $ . . .. . . . . . . . .

donde , V = (VN VT ), z V TUniversidad de Cordoba: Escuela Politecnica Superior Ingeniera Informatica 17 / 88

Procesadores de Lenguajes Tema V: Analisis Ascendente

IntroduccionConcepto de pivote

Ejemplo (Pivote)

SD

T id (T ) ; Tint

T id (int ) ; =

Pila Entrada Accionint * id ( int ) ; $ desplazar int

. . . . . . . . .T id ( int ) ; $ reducir (3) T intT id ( T ) ; $ . . .. . . . . . . . .

Universidad de Cordoba: Escuela Politecnica Superior Ingeniera Informatica 18 / 88

Procesadores de Lenguajes Tema V: Analisis Ascendente

IntroduccionConcepto de pivote

Nota (Analisis sintactico ascendente)

El analisis ascendente intenta obtener una derivacion por laderecha en orden inverso.

Un pivote es una regla de produccion y una posicion.

Al obtener el pivote, se puede generar el paso anterior de unaderivacion por la derecha.

Cada paso anterior se genera mediante una reduccion delpivote.

Al aplicar las reducciones, se alcanza el smbolo inicial de lagramatica (raz del arbol sintactico) y la cadena de entradaes reconocida.

Universidad de Cordoba: Escuela Politecnica Superior Ingeniera Informatica 19 / 88

Procesadores de Lenguajes Tema V: Analisis Ascendente

IntroduccionConcepto de pivote

Nota (Analisis sintactico ascendente)

El analisis ascendente intenta obtener una derivacion por laderecha en orden inverso.

Un pivote es una regla de produccion y una posicion.

Al obtener el pivote, se puede generar el paso anterior de unaderivacion por la derecha.

Cada paso anterior se genera mediante una reduccion delpivote.

Al aplicar las reducciones, se alcanza el smbolo inicial de lagramatica (raz del arbol sintactico) y la cadena de entradaes reconocida.

Universidad de Cordoba: Escuela Politecnica Superior Ingeniera Informatica 20 / 88

Procesadores de Lenguajes Tema V: Analisis Ascendente

IntroduccionConcepto de pivote

Nota (Analisis sintactico ascendente)

El analisis ascendente intenta obtener una derivacion por l