Transcript

Procesadores de Lenguajes Tema V: Analisis Ascendente

PROCESADORES DE LENGUAJESTEMA V: ANALISIS ASCENDENTE

Prof. Dr. Nicolas Luis Fernandez Garcıa

Departamento de Informatica y Analisis NumericoEscuela Politecnica Superior de Cordoba

Universidad de Cordoba

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 1 / 88

Procesadores de Lenguajes Tema V: Analisis Ascendente

Introduccion

1 Introduccion

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa 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 Ingenierıa 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 raız.

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

Se fundamenta en los conceptos de desplazamiento yreduccion.

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa 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 raız.

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

Se fundamenta en los conceptos de desplazamiento yreduccion.

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa 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 raız.

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

Se fundamenta en los conceptos de desplazamiento yreduccion.

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa 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 raız.

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

Se fundamenta en los conceptos de desplazamiento yreduccion.

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa 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 Ingenierıa 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 podrıa ser:

int * reservarMemoria ( int);

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa 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 Ingenierıa 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 Ingenierıa 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 Ingenierıa 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 Ingenierıa Informatica 13 / 88

Procesadores de Lenguajes Tema V: Analisis Ascendente

IntroduccionDescripcion general

Nota (Acciones del analisis ascendente)

Desplazar: traslada el primer sımbolo de la entrada a la pila.

Reducir:

sustituye, en la pila, los sımbolos de la alternativa de una reglapor el sımbolo 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 Ingenierıa 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 Ingenierıa 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

Sk⇒D

γ

entonces

un pivote se define como

una 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 Ingenierıa Informatica 16 / 88

Procesadores de Lenguajes Tema V: Analisis Ascendente

IntroduccionConcepto de pivote

Definicion (Concepto de pivote (2/2))

Si γ = α β z entonces

S∗⇒D

αAz ⇒A→ β

αβz = γ

Pila Entrada Accion. . . . . . . . .α β z $ reducir A −→ βα A z $ . . .. . . . . . . . .

donde α, β ∈ V ∗ = (VN ∪ VT )∗, z ∈ V ∗T

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 17 / 88

Procesadores de Lenguajes Tema V: Analisis Ascendente

IntroduccionConcepto de pivote

Ejemplo (Pivote)

S∗⇒D

T id (T ) ; ⇒T−→int

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 Ingenierıa 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 sımbolo inicial de lagramatica (raız del arbol sintactico) y la cadena de entradaes reconocida.

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa 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 sımbolo inicial de lagramatica (raız del arbol sintactico) y la cadena de entradaes reconocida.

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa 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 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 sımbolo inicial de lagramatica (raız del arbol sintactico) y la cadena de entradaes reconocida.

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 21 / 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 sımbolo inicial de lagramatica (raız del arbol sintactico) y la cadena de entradaes reconocida.

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 22 / 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 sımbolo inicial de lagramatica (raız del arbol sintactico) y la cadena de entradaes reconocida.

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 23 / 88

Procesadores de Lenguajes Tema V: Analisis Ascendente

IntroduccionConcepto de pivote

Nota (Caracterısticas de los pivotes)

El pivote siempre debe aparecer en la cima de la pila.

Se realizara una reduccion cuando se encuentre un pivote.

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 24 / 88

Procesadores de Lenguajes Tema V: Analisis Ascendente

IntroduccionConcepto de pivote

Nota (Caracterısticas de los pivotes)

El pivote siempre debe aparecer en la cima de la pila.

Se realizara una reduccion cuando se encuentre un pivote.

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 25 / 88

Procesadores de Lenguajes Tema V: Analisis Ascendente

IntroduccionConcepto de pivote

Ejemplo (Pivote en la cima de la pila)

En este caso, la eleccion del pivote es correcta.

Pila Entrada Accion. . . . . . . . .

α β δ y z $ reducir B → δ

α β B y z $ desplazar y

α β B y z $ reducir A→ βBy

α A z $ · · ·

S∗⇒D

α A z ⇒A−→βBy

α β B y z ⇒B−→δ

α β δ y z

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 26 / 88

Procesadores de Lenguajes Tema V: Analisis Ascendente

IntroduccionConcepto de pivote

Ejemplo (Pivote en el interior de la pila)

La eleccion del pivote no es correcta: no se genera una derivacionpor la derecha en orden inverso

Pila Entrada Accion. . . . . . . . .

α β γ δ y z $ reducir B → δ

α β γ B y z $ se busca en el interior

α β γ B y z $ reducir C → β

α C γ B y z $ . . .

S∗⇒D

αCγByz ⇒C−→β

αβ γByz ⇒B−→δ

α β δ y z

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 27 / 88

Procesadores de Lenguajes Tema V: Analisis Ascendente

IntroduccionConflictos

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 Ingenierıa Informatica 28 / 88

Procesadores de Lenguajes Tema V: Analisis Ascendente

IntroduccionConflictos

Definicion (Conflictos en el Analisis Sintactico Ascendente)

Un conflicto representa una situacion en la cual el analisissintactico ascendente puede elegir entre acciones diferentes

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 29 / 88

Procesadores de Lenguajes Tema V: Analisis Ascendente

IntroduccionConflictos

Definicion (Tipos de conflicto)

Los conflictos pueden ser de dos tipos:

Desplazamiento-reduccion:

Se puede desplazar un sımbolo a la pila o reducir con una reglade produccion.

Reduccion-reduccion:

Se puede elegir una regla de produccion entre varias para hacerla reduccion.

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 30 / 88

Procesadores de Lenguajes Tema V: Analisis Ascendente

IntroduccionConflictos

Definicion (Tipos de conflicto)

Los conflictos pueden ser de dos tipos:

Desplazamiento-reduccion:

Se puede desplazar un sımbolo a la pila o reducir con una reglade produccion.

Reduccion-reduccion:

Se puede elegir una regla de produccion entre varias para hacerla reduccion.

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 31 / 88

Procesadores de Lenguajes Tema V: Analisis Ascendente

IntroduccionConflictos

Nota (Tipos de conflicto)

En el caso de conflicto de desplazamiento-reduccion, se sueleelegir el desplazamiento.

Los conflictos reduccion-reduccion

Son mucho mas graves y no se suelen permitir.Se debe reescribir la gramatica para eliminar el conflicto.

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 32 / 88

Procesadores de Lenguajes Tema V: Analisis Ascendente

IntroduccionConflictos

Ejemplo (Conflicto desplazamiento-reduccion)

Supongase la siguiente gramatica:

P = {(1) E −→ E + E ;(2) E −→ E ∗ E(3) E −→ (E )(4) E −→ id(5) E −→ numero}

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 33 / 88

Procesadores de Lenguajes Tema V: Analisis Ascendente

IntroduccionConflictos

Ejemplo (Conflicto desplazamiento-reduccion)

Esta gramatica genera expresiones aritmeticas.

La expresion id + id * id provoca un conflicto dedesplazamiento-reduccion

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 34 / 88

Procesadores de Lenguajes Tema V: Analisis Ascendente

IntroduccionConflictos

Ejemplo (Conflicto desplazamiento-reduccion)

Pila Entrada Accionid + id * id $ desplazar id

id + id * id $ reducir (4) E −→ idE + id * id $ desplazar +E + id * id $ desplazar idE + id * id $ reducir (4) E −→ idE + E * id $ Conflicto:

desplazar *reducir (1) E −→ E + E

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 35 / 88

Procesadores de Lenguajes Tema V: Analisis Ascendente

IntroduccionConflictos

Ejemplo (Conflicto desplazamiento-reduccion)

Si se elige la reduccion, el analisis continua de la siguiente forma:

Pila Entrada AccionE + E * id $ reducir (1) E −→ E + EE * id $ desplazar *E * id $ desplazar idE * id $ reducir (4) E −→ idE * E $ reducir (2) E −→ E ∗ EE $ ACEPTAR

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 36 / 88

Procesadores de Lenguajes Tema V: Analisis Ascendente

IntroduccionConflictos

Ejemplo (Conflicto desplazamiento-reduccion)

E

E E

E E+

id id

*

id

Nota

La expresion es reconocida, pero el arbol sintactico asociado a laderivacion no respeta la precedencia de los operadores aritmeticos

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 37 / 88

Procesadores de Lenguajes Tema V: Analisis Ascendente

IntroduccionConflictos

Ejemplo (Conflicto desplazamiento-reduccion)

Si se elige el desplazamiento, el analisis continua de la siguienteforma:

Pila Entrada Accion$ E + E * id $ desplazar *$ E + E * id $ desplazar id$ E + E * id $ reducir (4) E −→ id$ E + E * E $ reducir (2) E −→ E ∗ E$ E + E $ reducir (1) E −→ E + E$ E $ ACEPTAR

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 38 / 88

Procesadores de Lenguajes Tema V: Analisis Ascendente

IntroduccionConflictos

Ejemplo (Conflicto desplazamiento-reduccion)

E

E E+

id *E E

id id

Nota

Si se elige el desplazamiento entonces el arbol sintactico sı respetala precedencia de los operadores aritmeticos

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 39 / 88

Procesadores de Lenguajes Tema V: Analisis Ascendente

IntroduccionConflictos

Ejemplo (Conflicto desplazamiento-reduccion)

Expresiones aritmeticas

La gramatica utilizada es ambigua y no admite un analisissintactico ascendente.Se pueden utilizar otras gramaticas que no sean ambiguas yque sı admiten un analisis sintactico ascendente.

Otro ejemplo clasico que genera un conflicto es el denominadoproblema del else danzante (V. Aho, A. et al, 2008).

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 40 / 88

Procesadores de Lenguajes Tema V: Analisis Ascendente

IntroduccionConflictos

Ejemplo (Conflicto reduccion-reduccion)

Pila Entrada Accionα β z $ reducir A −→ β

reducir B −→ β

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 41 / 88

Procesadores de Lenguajes Tema V: Analisis Ascendente

IntroduccionConflictos

Ejemplo (Conflicto reduccion-reduccion)

En Fortran, una gramatica mal disenada puede generar el siguienteconflicto

Pila Entrada Accion· · · id(E ) · · · $ reducir F −→ id(E )

reducir A −→ id(E )

donde F genera funciones y A, componentes de “array”.

Nota

La solucion es reescribir la gramatica que genera el lenguajeFortran para que tenga en cuenta el tipo del identificador

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 42 / 88

Procesadores de Lenguajes Tema V: Analisis Ascendente

IntroduccionTipos de analisis sintactico ascendente

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 Ingenierıa Informatica 43 / 88

Procesadores de Lenguajes Tema V: Analisis Ascendente

IntroduccionTipos de analisis sintactico ascendente

Tipos de analisis sintactico ascendente

Metodos basados en reglas de precedencia.

Metodos de analisis LR.

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 44 / 88

Procesadores de Lenguajes Tema V: Analisis Ascendente

IntroduccionTipos de analisis sintactico ascendente

Tipos de analisis sintactico ascendente

Metodos basados en reglas de precedencia.

Metodos de analisis LR.

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 45 / 88

Procesadores de Lenguajes Tema V: Analisis Ascendente

IntroduccionTipos de analisis sintactico ascendente

Metodos basados en reglas de precedencia

Establecen reglas de precedencia entre los sımbolos de lagramatica.

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 46 / 88

Procesadores de Lenguajes Tema V: Analisis Ascendente

IntroduccionTipos de analisis sintactico ascendente

Metodos basados en reglas de precedencia

Existen los siguientes tipos:

Metodos de precedencia simple.

Metodos de precedencia debil.

Metodos de precedencia extendida.

Metodos de precedencia de estrategia mixta.

Metodos de precedencia de operadores.

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 47 / 88

Procesadores de Lenguajes Tema V: Analisis Ascendente

IntroduccionTipos de analisis sintactico ascendente

Metodos basados en reglas de precedencia

Existen los siguientes tipos:

Metodos de precedencia simple.

Metodos de precedencia debil.

Metodos de precedencia extendida.

Metodos de precedencia de estrategia mixta.

Metodos de precedencia de operadores.

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 48 / 88

Procesadores de Lenguajes Tema V: Analisis Ascendente

IntroduccionTipos de analisis sintactico ascendente

Metodos basados en reglas de precedencia

Existen los siguientes tipos:

Metodos de precedencia simple.

Metodos de precedencia debil.

Metodos de precedencia extendida.

Metodos de precedencia de estrategia mixta.

Metodos de precedencia de operadores.

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 49 / 88

Procesadores de Lenguajes Tema V: Analisis Ascendente

IntroduccionTipos de analisis sintactico ascendente

Metodos basados en reglas de precedencia

Existen los siguientes tipos:

Metodos de precedencia simple.

Metodos de precedencia debil.

Metodos de precedencia extendida.

Metodos de precedencia de estrategia mixta.

Metodos de precedencia de operadores.

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 50 / 88

Procesadores de Lenguajes Tema V: Analisis Ascendente

IntroduccionTipos de analisis sintactico ascendente

Metodos basados en reglas de precedencia

Existen los siguientes tipos:

Metodos de precedencia simple.

Metodos de precedencia debil.

Metodos de precedencia extendida.

Metodos de precedencia de estrategia mixta.

Metodos de precedencia de operadores.

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 51 / 88

Procesadores de Lenguajes Tema V: Analisis Ascendente

IntroduccionTipos de analisis sintactico ascendente

Metodos de analisis LR

El significado de LR es el siguientes

L (left): se lee la cadena de entrada de izquierda a derecha.

R (right): se obtiene la derivacion por la derecha en ordeninverso.

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 52 / 88

Procesadores de Lenguajes Tema V: Analisis Ascendente

IntroduccionTipos de analisis sintactico ascendente

Metodos de analisis LR

Metodo SLR.

Metodo LR-canonico.

Metodo LALR.

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 53 / 88

Procesadores de Lenguajes Tema V: Analisis Ascendente

IntroduccionTipos de analisis sintactico ascendente

Metodos de analisis LR

Metodo SLR.

Metodo LR-canonico.

Metodo LALR.

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 54 / 88

Procesadores de Lenguajes Tema V: Analisis Ascendente

IntroduccionTipos de analisis sintactico ascendente

Metodos de analisis LR

Metodo SLR.

Metodo LR-canonico.

Metodo LALR.

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 55 / 88

Procesadores de Lenguajes Tema V: Analisis Ascendente

IntroduccionTipos de analisis sintactico ascendente

Justificacion de los metodos LR1 Se pueden construir analizadores sintacticos LR para la

mayorıa de las gramaticas.

2 El analisis LR es el metodo de desplazamiento-reduccion maseficiente.

3 Si una gramatica admite un analisis descendente predictivo,tambien admite un analisis LR (lo contrario no es cierto).

4 El analisis LR puede detectar un error tan pronto como seaposible, analizando la cadena de izquierda a derecha.

5 Existen generadores automaticos de analizadores sintacticosLR (v.gr: Yacc o Bison).

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 56 / 88

Procesadores de Lenguajes Tema V: Analisis Ascendente

IntroduccionTipos de analisis sintactico ascendente

Justificacion de los metodos LR1 Se pueden construir analizadores sintacticos LR para la

mayorıa de las gramaticas.

2 El analisis LR es el metodo de desplazamiento-reduccion maseficiente.

3 Si una gramatica admite un analisis descendente predictivo,tambien admite un analisis LR (lo contrario no es cierto).

4 El analisis LR puede detectar un error tan pronto como seaposible, analizando la cadena de izquierda a derecha.

5 Existen generadores automaticos de analizadores sintacticosLR (v.gr: Yacc o Bison).

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 57 / 88

Procesadores de Lenguajes Tema V: Analisis Ascendente

IntroduccionTipos de analisis sintactico ascendente

Justificacion de los metodos LR1 Se pueden construir analizadores sintacticos LR para la

mayorıa de las gramaticas.

2 El analisis LR es el metodo de desplazamiento-reduccion maseficiente.

3 Si una gramatica admite un analisis descendente predictivo,tambien admite un analisis LR (lo contrario no es cierto).

4 El analisis LR puede detectar un error tan pronto como seaposible, analizando la cadena de izquierda a derecha.

5 Existen generadores automaticos de analizadores sintacticosLR (v.gr: Yacc o Bison).

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 58 / 88

Procesadores de Lenguajes Tema V: Analisis Ascendente

IntroduccionTipos de analisis sintactico ascendente

Justificacion de los metodos LR1 Se pueden construir analizadores sintacticos LR para la

mayorıa de las gramaticas.

2 El analisis LR es el metodo de desplazamiento-reduccion maseficiente.

3 Si una gramatica admite un analisis descendente predictivo,tambien admite un analisis LR (lo contrario no es cierto).

4 El analisis LR puede detectar un error tan pronto como seaposible, analizando la cadena de izquierda a derecha.

5 Existen generadores automaticos de analizadores sintacticosLR (v.gr: Yacc o Bison).

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 59 / 88

Procesadores de Lenguajes Tema V: Analisis Ascendente

IntroduccionTipos de analisis sintactico ascendente

Justificacion de los metodos LR1 Se pueden construir analizadores sintacticos LR para la

mayorıa de las gramaticas.

2 El analisis LR es el metodo de desplazamiento-reduccion maseficiente.

3 Si una gramatica admite un analisis descendente predictivo,tambien admite un analisis LR (lo contrario no es cierto).

4 El analisis LR puede detectar un error tan pronto como seaposible, analizando la cadena de izquierda a derecha.

5 Existen generadores automaticos de analizadores sintacticosLR (v.gr: Yacc o Bison).

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 60 / 88

Procesadores de Lenguajes Tema V: Analisis Ascendente

IntroduccionGramaticas LR

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 Ingenierıa Informatica 61 / 88

Procesadores de Lenguajes Tema V: Analisis Ascendente

IntroduccionGramaticas LR

Definicion (Gramatica LR (1/3))

G = (VN ,VT ,P, S) es una gramatica LR(k) si se verifica;

1 Se amplıa G de forma que el sımbolo inicial no este en laparte derecha de ninguna regla de produccion

G ′ = (V ′N ,V′T ,P

′, S ′)S ′ ∈ V ′N − VN

V ′N = VN ∪ {S ′}P ′ = P ∪ {S ′ −→ S}

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 62 / 88

Procesadores de Lenguajes Tema V: Analisis Ascendente

IntroduccionGramaticas LR

Definicion (Gramatica LR (2/3))

2 si existen dos derivaciones por la derecha

S ′∗⇒D

αAw ⇒A→β

αβw

S ′∗⇒D

γBx ⇒B→β

αβy

3 donde los primeros k sımbolos de w y x son iguales.

w = σi1 . . . σikγ1 . . . γpy = σi1 . . . σikη

′1 . . . η

′q

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 63 / 88

Procesadores de Lenguajes Tema V: Analisis Ascendente

IntroduccionGramaticas LR

Definicion (Gramatica LR (3/3))

entonces se verifica que

αAy = γBx

es decir

α = γ

A = B

x = y

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 64 / 88

Procesadores de Lenguajes Tema V: Analisis Ascendente

IntroduccionGramaticas LR

Nota (Gramatica LR)

Configuracion correspondiente a S ′∗⇒D

αAw ⇒A→β

αβw

Pila Entrada Accion. . . . . .α β w $ reducir A −→ βα A w $. . . . . .

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 65 / 88

Procesadores de Lenguajes Tema V: Analisis Ascendente

IntroduccionGramaticas LR

Nota (Gramatica LR)

Configuracion correspondiente a S ′∗⇒D

γBx ⇒B→β

αβy

Pila Entrada Accion. . . . . .γ β y $ reducir B −→ βγ B y $. . . . . .

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 66 / 88

Procesadores de Lenguajes Tema V: Analisis Ascendente

IntroduccionGramaticas LR

Nota (Gramatica LR)

Los metodos de analisis sintactico ascendente LR(k) utilizanlos k primeros sımbolos de la entrada para determinarque accion se debe realizar.

Generalmente k = 1 y se utiliza una tabla de analisissintactico LR.

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 67 / 88

Procesadores de Lenguajes Tema V: Analisis Ascendente

IntroduccionTabla de analisis sintactico ascendente LR

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 Ingenierıa Informatica 68 / 88

Procesadores de Lenguajes Tema V: Analisis Ascendente

IntroduccionTabla de analisis sintactico ascendente LR

Definicion (Tabla de analisis LR)

Permite comprobar si una gramatica de contexto libre admiteun analisis sintactico ascendente LR.

Consta de dos partes:

Parte Accion.Parte Ir-a.

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 69 / 88

Procesadores de Lenguajes Tema V: Analisis Ascendente

IntroduccionTabla de analisis sintactico ascendente LR

Definicion (Estructura de la parte Accion)

Columnas: sımbolos terminales y $ (final de cadena).

Filas: estados generados a partir de la coleccion de elementosLR

Celdas: acciones que se pueden realizar

DesplazarReducirAceptarError

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 70 / 88

Procesadores de Lenguajes Tema V: Analisis Ascendente

IntroduccionTabla de analisis sintactico ascendente LR

Acciones de la parte accion

1 Desplazar:

Se desplaza el primer sımbolo de la entrada a la cima de la pilay se indica a que estado pasa el analizador.

2 Reducir:

Se basa en el concepto de pivoteUtiliza una regla de produccion para sustituir, en la pila, laalternativa de la regla por el sımbolo de su parte izquierda

3 Aceptar: la cadena de entrada es reconocida.

4 Error: se llama a una funcion de control de errores.

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 71 / 88

Procesadores de Lenguajes Tema V: Analisis Ascendente

IntroduccionTabla de analisis sintactico ascendente LR

Acciones de la parte accion

1 Desplazar:

Se desplaza el primer sımbolo de la entrada a la cima de la pilay se indica a que estado pasa el analizador.

2 Reducir:

Se basa en el concepto de pivoteUtiliza una regla de produccion para sustituir, en la pila, laalternativa de la regla por el sımbolo de su parte izquierda

3 Aceptar: la cadena de entrada es reconocida.

4 Error: se llama a una funcion de control de errores.

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 72 / 88

Procesadores de Lenguajes Tema V: Analisis Ascendente

IntroduccionTabla de analisis sintactico ascendente LR

Acciones de la parte accion

1 Desplazar:

Se desplaza el primer sımbolo de la entrada a la cima de la pilay se indica a que estado pasa el analizador.

2 Reducir:

Se basa en el concepto de pivoteUtiliza una regla de produccion para sustituir, en la pila, laalternativa de la regla por el sımbolo de su parte izquierda

3 Aceptar: la cadena de entrada es reconocida.

4 Error: se llama a una funcion de control de errores.

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 73 / 88

Procesadores de Lenguajes Tema V: Analisis Ascendente

IntroduccionTabla de analisis sintactico ascendente LR

Acciones de la parte accion

1 Desplazar:

Se desplaza el primer sımbolo de la entrada a la cima de la pilay se indica a que estado pasa el analizador.

2 Reducir:

Se basa en el concepto de pivoteUtiliza una regla de produccion para sustituir, en la pila, laalternativa de la regla por el sımbolo de su parte izquierda

3 Aceptar: la cadena de entrada es reconocida.

4 Error: se llama a una funcion de control de errores.

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 74 / 88

Procesadores de Lenguajes Tema V: Analisis Ascendente

IntroduccionTabla de analisis sintactico ascendente LR

Nota (Abreviaturas)

d n: se desplaza el primer sımbolo σ de la entrada a la pila yse pasa al estado n

r k: se reduce con la regla de produccion numero k

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 75 / 88

Procesadores de Lenguajes Tema V: Analisis Ascendente

IntroduccionTabla de analisis sintactico ascendente LR

Definicion (Estructura de la parte Ir-a)

Columnas: sımbolos no terminales dela gramatica.

Filas: estados generados a partir de la coleccion de elementosLR

Celdas: indican las transiciones entre estados

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 76 / 88

Procesadores de Lenguajes Tema V: Analisis Ascendente

IntroduccionTabla de analisis sintactico ascendente LR

Nota (Ir-a)

La parte Ir-a solo se consultara cuando se produzca unareduccion.

Las celdas vacıas nunca se consultaran.

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 77 / 88

Procesadores de Lenguajes Tema V: Analisis Ascendente

IntroduccionTabla de analisis sintactico ascendente LR

Estructura de la tabla LR

Accion Ir-aσ1 σ2 . . . σn $ A1 . . . Am

s0

s1

. . .

sk

donde

∀i ∈ {1, . . . , k} si es un estado del analizador sintactico

∀i ∈ {1, . . . , n} σi ∈ VT

∀i ∈ {1, . . . ,m} Ai ∈ VN

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 78 / 88

Procesadores de Lenguajes Tema V: Analisis Ascendente

IntroduccionTabla de analisis sintactico ascendente LR

Funcionamiento del analisis sintactico LR (1/4)

1 Si accion[s, σ] = d j entonces

se desplaza el primer sımbolo de la entrada a la pilay se pasa al estado j

Pila Entrada Accion. . . s σ σ′ . . . $ desplazar j. . . s σ j σ′ . . . $ . . .

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 79 / 88

Procesadores de Lenguajes Tema V: Analisis Ascendente

IntroduccionTabla de analisis sintactico ascendente LR

Funcionamiento del analisis sintactico LR (2/4)

2 Si accion[s, σ] = r k entonces

se reduce con la regla numero k: A −→ β, dondeβ = Xi1 . . .Xih

y se pasa al estado indicado por ir-a[s ′,A] = j

Pila Entrada Accion. . . s’ Xi1 sj1 . . .Xih−1

sjh−1Xih s σ . . . $ reducir (k) A −→ β

. . . s’ A j σ . . . $ . . .

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 80 / 88

Procesadores de Lenguajes Tema V: Analisis Ascendente

IntroduccionTabla de analisis sintactico ascendente LR

Funcionamiento del analisis sintactico LR (3/4)

3 Si accion[s, $] = Aceptar entonces

la cadena de entrada es reconociday el analisis sintactico ascendente finaliza.

Pila Entrada Accion. . . s $ Aceptar

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 81 / 88

Procesadores de Lenguajes Tema V: Analisis Ascendente

IntroduccionTabla de analisis sintactico ascendente LR

Funcionamiento del analisis sintactico LR (4/4)

4 Si accion[s, σ] = E n entonces llama a la funcion de controlde errores numero n

Pila Entrada Accion. . . s σ . . . $ E n

Nota

Los metodos de recuperacion de errores se describiran al final deltema.

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 82 / 88

Procesadores de Lenguajes Tema V: Analisis Ascendente

IntroduccionTabla de analisis sintactico ascendente LR

Comparacion de los metodos de analisis LR

Metodo Potencia Tamano de tablaSLR 3o 1o

LR-canonico 1o 2o

LALR 2o 1o

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 83 / 88

Procesadores de Lenguajes Tema V: Analisis Ascendente

IntroduccionTabla de analisis sintactico ascendente LR

Ejemplo (Gramatica que genera prototipos de funciones en C)

P = {(1′) S ′ −→ S(1) S −→ T id (L) ;(2) T −→ T *(3) T −→ int(4) L −→ L,T(5) L −→ T}

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 84 / 88

Procesadores de Lenguajes Tema V: Analisis Ascendente

IntroduccionTabla de analisis sintactico ascendente LR

Ejemplo (Tabla LR para la gramatica de los prototipos)Accion Ir-a

id ( ) ; * int , $ S T L

0 d3 1 21 Aceptar2 d4 d53 r3 r3 r3 r34 d65 r2 r2 r2 r26 d3 8 77 d9 d108 r5 d5 r59 d11

10 d3 1211 r112 r4 d5 r4

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 85 / 88

Procesadores de Lenguajes Tema V: Analisis Ascendente

IntroduccionTabla de analisis sintactico ascendente LR

Ejemplo (Analisis sintactico ascendente LR (1 de 2))

Pila Entrada Accion0 int * id ( int ) ; $ desplazar 30 int 3 * id ( int ) ; $ reducir (3) T −→ int0 T 2 * id ( int ) ; $ desplazar 50 T 2 * 5 id ( int ) ; $ reducir (2) T −→ T *0 T 2 id ( int ) ; $ desplazar 4O T 2 id 4 ( int ) ; $ desplazar 60 T 2 id 4 ( 6 int ) ; $ desplazar 30 T 2 id 4 ( 6 int 3 ) ; $ reducir (3) T −→ int

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 86 / 88

Procesadores de Lenguajes Tema V: Analisis Ascendente

IntroduccionTabla de analisis sintactico ascendente LR

Ejemplo (Analisis sintactico ascendente LR (2 de 2))

Pila Entrada Accion0 T 2 id 4 ( 6 int 3 ) ; $ reducir (3) T −→ int0 T 2 id 4 ( 6 T 8 ) ; $ reducir (5) L −→ T0 T 2 id 4 ( 6 L 7 ) ; $ desplazar 70 T 2 id 4 ( 6 L 7 ) 9 ; $ desplazar 110 T 2 id 4 ( 6 L 7 ) 9 ; 11 $ reducir (1) S −→ T id (L);

0 S 1 $ Aceptar

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 87 / 88

Procesadores de Lenguajes Tema V: Analisis Ascendente

PROCESADORES DE LENGUAJESTEMA V: ANALISIS ASCENDENTE

Prof. Dr. Nicolas Luis Fernandez Garcıa

Departamento de Informatica y Analisis NumericoEscuela Politecnica Superior de Cordoba

Universidad de Cordoba

Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 88 / 88


Recommended