563
Procesadores de Lenguajes Tema V.- An´ alisis Sint´ actico Ascendente PROCESADORES DE LENGUAJES TEMA V: AN ´ ALISIS ASCENDENTE Prof. Dr. Nicol´ as Luis Fern´ andez Garc´ ıa Departamento de Inform´ atica y An´ alisis Num´ erico Escuela Polit´ ecnica Superior de C´ordoba Universidad de C´ordoba Universidad de C´ordoba: Escuela Polit´ ecnica Superior Ingenier´ ıa Inform´ atica 1/ 563

PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

  • Upload
    others

  • View
    13

  • Download
    0

Embed Size (px)

Citation preview

Page 1: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico 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 / 563

Page 2: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Programa

Tema I.- Introduccion

Tema II.- Analisis Lexicografico

Tema III.- Fundamentos Teoricos del Analisis Sintactico

Tema IV.- Analisis Sintactico Descendente

Tema V.- Analisis Sintactico Ascendente

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

Page 3: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Programa

1 Introduccion

2 Analisis sintactico ascendente SLR

3 Analisis sintactico ascendente LR-canonico

4 Analisis sintactico ascendente LALR

5 Metodos de recuperacion de errores

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

Page 4: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Programa

1 Introduccion

2 Analisis sintactico ascendente SLR

3 Analisis sintactico ascendente LR-canonico

4 Analisis sintactico ascendente LALR

5 Metodos de recuperacion de errores

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

Page 5: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Programa

1 Introduccion

2 Analisis sintactico ascendente SLR

3 Analisis sintactico ascendente LR-canonico

4 Analisis sintactico ascendente LALR

5 Metodos de recuperacion de errores

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

Page 6: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Programa

1 Introduccion

2 Analisis sintactico ascendente SLR

3 Analisis sintactico ascendente LR-canonico

4 Analisis sintactico ascendente LALR

5 Metodos de recuperacion de errores

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

Page 7: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Programa

1 Introduccion

2 Analisis sintactico ascendente SLR

3 Analisis sintactico ascendente LR-canonico

4 Analisis sintactico ascendente LALR

5 Metodos de recuperacion de errores

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

Page 8: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Seccion actual

1 Introduccion

2 Analisis sintactico ascendente SLR

3 Analisis sintactico ascendente LR-canonico

4 Analisis sintactico ascendente LALR

5 Metodos de recuperacion de errores

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

Page 9: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Subseccion actual

1 IntroduccionDescripcion generalConcepto de pivoteConflictosTipos de analisis sintactico ascendenteGramaticas LRTabla de analisis sintactico ascendente LR

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

Page 10: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

IntroduccionDescripcion general

Analisis sintactico ascendente

ObjetivoConstruir de forma ascendente un arbol sintactico asociado ala cadena de entrada.Comienza por las hojas y termina en la raız.

Objetivo equivalente

Obtener una derivacion por la derecha en orden inverso.

Se fundamenta en los conceptos de desplazamiento yreduccion.

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

Page 11: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

IntroduccionDescripcion general

Ejemplo (Analisis sintactico ascendente 1 / 4)

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

}

Nota

Esta gramatica genera algunos prototipos de funciones del lenguajede programacion C.

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

Page 12: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

IntroduccionDescripcion general

Ejemplo (Analisis sintactico ascendente 2 / 4)

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 12 / 563

Page 13: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

IntroduccionDescripcion general

Ejemplo (Analisis sintactico ascendente 3 / 4)

Pila Entrada AccionT id ( int ) ; $ reducir (3) T −→ intT id ( T ) ; $ reducir (5) L −→ TT 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 13 / 563

Page 14: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

IntroduccionDescripcion general

Ejemplo (Analisis sintactico ascendente 4 / 4)

Derivacion por la derecha

S ⇒1

T id ( L ) ;

⇒5

T id ( T ) ;

⇒3

T id ( int ) ;

⇒2

T * id ( int ) ;

⇒3

int * id ( int ) ;

Nota

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

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

Page 15: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

IntroduccionDescripcion general

Ejemplo (Arbol sintactico asociado a la derivacion 1 / 6)

) ;int * id int(

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

Page 16: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

IntroduccionDescripcion general

Ejemplo (Arbol sintactico asociado a la derivacion 2 / 6)

) ;int * id int

T

(

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

Page 17: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

IntroduccionDescripcion general

Ejemplo (Arbol sintactico asociado a la derivacion 3 / 6)

T

) ;int * id int

T

(

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

Page 18: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

IntroduccionDescripcion general

Ejemplo (Arbol sintactico asociado a la derivacion 4 / 6)

T

) ;int * id int

T

(

T

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

Page 19: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

IntroduccionDescripcion general

Ejemplo (Arbol sintactico asociado a la derivacion 5 / 6)

T

) ;int * id int

L

T

(

T

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

Page 20: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

IntroduccionDescripcion general

Ejemplo (Arbol sintactico asociado a la derivacion 6 / 6)

T

S

) ;int * id int

L

T

(

T

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

Page 21: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

IntroduccionDescripcion general

Nota (Acciones del analisis ascendente)

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

2.- 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.

3.- Aceptar: la cadena de entrada es reconocida.

4.- Error: la cadena de entrada es rechazada.

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

Page 22: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Subseccion actual

1 IntroduccionDescripcion generalConcepto de pivoteConflictosTipos de analisis sintactico ascendenteGramaticas LRTabla de analisis sintactico ascendente LR

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

Page 23: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico 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 23 / 563

Page 24: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico 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 24 / 563

Page 25: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico 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 25 / 563

Page 26: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico 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.

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

Se realizara una reduccion cuando se encuentre un pivote.

Al realizar la reduccion, se genera el paso anterior de unaderivacion por la derecha.

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 26 / 563

Page 27: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

IntroduccionConcepto de pivote

Ejemplo (Pivote en la cima de la pila 1 / 2)

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 27 / 563

Page 28: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

IntroduccionConcepto de pivote

Ejemplo (Pivote en el interior de la pila 2 / 2)

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 γ B y z ⇒C−→ β

α β γ B y z ⇒B−→δ

α β γ δ y z

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

Page 29: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Subseccion actual

1 IntroduccionDescripcion generalConcepto de pivoteConflictosTipos de analisis sintactico ascendenteGramaticas LRTabla de analisis sintactico ascendente LR

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

Page 30: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Contenido de la subseccion

1 IntroduccionDescripcion generalConcepto de pivoteConflictos

Tipos de conflictosConflicto desplazamiento-reduccionConflicto reduccion-reduccion

Tipos de analisis sintactico ascendenteGramaticas LRTabla de analisis sintactico ascendente LR

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

Page 31: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico 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 31 / 563

Page 32: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

IntroduccionConflictos

Definicion (Tipos de conflictos)

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 32 / 563

Page 33: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

IntroduccionConflictos

Nota (Tipos de conflictos)

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 33 / 563

Page 34: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Contenido de la subseccion

1 IntroduccionDescripcion generalConcepto de pivoteConflictos

Tipos de conflictosConflicto desplazamiento-reduccionConflicto reduccion-reduccion

Tipos de analisis sintactico ascendenteGramaticas LRTabla de analisis sintactico ascendente LR

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

Page 35: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

IntroduccionConflictos

Ejemplo (Conflicto desplazamiento-reduccion 1 / 9)

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

}

Nota

Esta gramatica genera algunas expresiones aritmeticas.

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

Page 36: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

IntroduccionConflictos

Ejemplo (Conflicto desplazamiento-reduccion 2 / 9)

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

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

Page 37: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

IntroduccionConflictos

Ejemplo (Conflicto desplazamiento-reduccion 3 / 9)

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 37 / 563

Page 38: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

IntroduccionConflictos

Ejemplo (Conflicto desplazamiento-reduccion 4 / 9)

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 38 / 563

Page 39: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

IntroduccionConflictos

Ejemplo (Conflicto desplazamiento-reduccion 5 / 9)

id + id * id

E E

E E

E

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 39 / 563

Page 40: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

IntroduccionConflictos

Ejemplo (Conflicto desplazamiento-reduccion 6 / 9)

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

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

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

Page 41: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

IntroduccionConflictos

Ejemplo (Conflicto desplazamiento-reduccion 7 / 9)

id + id * id

E E

EE

E

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 41 / 563

Page 42: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

IntroduccionConflictos

Ejemplo (Conflicto desplazamiento-reduccion 8 / 9)

Ambiguedad: dos derivaciones por la derecha diferentes.

Primera derivacion

S ⇒2

E * E

⇒4

E * id

⇒1

E + E * id

⇒4

E + id * id

⇒4

id + id * id

Segunda derivacion

S ⇒1

E + E

⇒2

E + E * E

⇒4

E + E * id

⇒4

E + id * id

⇒4

id + id * id

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

Page 43: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

IntroduccionConflictos

Ejemplo (Conflicto desplazamiento-reduccion 9 / 9)

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.

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

Page 44: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

IntroduccionConflictos

Ejemplo (Gramatica sin conflictos 1 / 4)

P = {(1) E −→ T + E(2) E −→ T(3) T −→ F * T(4) T −→ F(5) F −→ ( E )(6) F −→ id(7) F −→ numero

}

Nota

Esta gramatica no es ambigua.

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

Page 45: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

IntroduccionConflictos

Ejemplo (Gramatica sin conflictos 2 / 4)

Pila Entrada Accionid + id * id $ desplazar id

id + id * id $ reducir (6) F −→ idF + id * id $ reducir (4) T −→ FT + id * id $ desplazar +T + id * id $ desplazar idT + id * id $ reducir (6) F −→ idT + F * id $ desplazar *

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

Page 46: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

IntroduccionConflictos

Ejemplo (Gramatica sin conflictos 3 / 4)

Pila Entrada AccionT + F * id $ desplazar idT + F * id $ reducir (6) F −→ idT + F * F $ reducir (4) T −→ FT + F * T $ reducir (3) T −→ F * TT + T $ reducir (2) E −→ TT + E $ reducir (1) E −→ T + EE $ ACEPTAR

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

Page 47: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

IntroduccionConflictos

Ejemplo (Derivacion por la derecha 4 / 4)

E ⇒1

T + E

⇒2

T + T

⇒3

T + F * T

⇒4

T + F * F

⇒6

T + F * id

⇒6

T + id * id

⇒4

F + id * id

⇒6

id + id * id

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

Page 48: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

IntroduccionConflictos

Ejemplo (Creacion ascendente del arbol sintactico 1 / 9)

id + * idid

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

Page 49: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

IntroduccionConflictos

Ejemplo (Creacion ascendente del arbol sintactico 2 / 9)

id + * id

F

id

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

Page 50: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

IntroduccionConflictos

Ejemplo (Creacion ascendente del arbol sintactico 3 / 9)

T

id + * id

F

id

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

Page 51: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

IntroduccionConflictos

Ejemplo (Creacion ascendente del arbol sintactico 4 / 9)

T

id + * id

F

F

id

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

Page 52: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

IntroduccionConflictos

Ejemplo (Creacion ascendente del arbol sintactico 5 / 9)

id + * id

F

F

id

F

T

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

Page 53: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

IntroduccionConflictos

Ejemplo (Creacion ascendente del arbol sintactico 6 / 9)

T

id + * id

F

F T

id

F

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

Page 54: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

IntroduccionConflictos

Ejemplo (Creacion ascendente del arbol sintactico 7 / 9)

T

id + * id

F T

F T

id

F

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

Page 55: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

IntroduccionConflictos

Ejemplo (Creacion ascendente del arbol sintactico 8 / 9)

ET

id + * id

F T

F T

id

F

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

Page 56: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

IntroduccionConflictos

Ejemplo (Creacion ascendente del arbol sintactico 9 / 9)

ET

E

id + * id

F T

F T

id

F

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

Page 57: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

IntroduccionConflictos

Nota (Conflicto desplazamiento-reduccion: else danzante)

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 57 / 563

Page 58: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Contenido de la subseccion

1 IntroduccionDescripcion generalConcepto de pivoteConflictos

Tipos de conflictosConflicto desplazamiento-reduccionConflicto reduccion-reduccion

Tipos de analisis sintactico ascendenteGramaticas LRTabla de analisis sintactico ascendente LR

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

Page 59: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

IntroduccionConflictos

Ejemplo (Conflicto reduccion-reduccion 1 / 2)

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

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

Page 60: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

IntroduccionConflictos

Ejemplo (Conflicto reduccion-reduccion 2 / 2)

En Fortran, una gramatica mal disenada puede generar el siguienteconflicto

Pila Entrada Accion· · · id(E ) · · · $ reducir F −→ id(E ) o 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 60 / 563

Page 61: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Subseccion actual

1 IntroduccionDescripcion generalConcepto de pivoteConflictosTipos de analisis sintactico ascendenteGramaticas LRTabla de analisis sintactico ascendente LR

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

Page 62: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Contenido de la subseccion

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 62 / 563

Page 63: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico 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 63 / 563

Page 64: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

IntroduccionTipos de analisis sintactico ascendente

Metodos basados en reglas de precedencia

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 64 / 563

Page 65: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Contenido de la subseccion

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 65 / 563

Page 66: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

IntroduccionTipos de analisis sintactico ascendente

Metodos de analisis LR

El significado de LR es el siguiente

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 66 / 563

Page 67: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico 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 67 / 563

Page 68: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Contenido de la subseccion

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 / 563

Page 69: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

IntroduccionTipos de analisis sintactico ascendente

Justificacion de los metodos LR

1.- Se pueden construir analizadores sintacticos LR para lamayorı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 69 / 563

Page 70: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Subseccion actual

1 IntroduccionDescripcion generalConcepto de pivoteConflictosTipos de analisis sintactico ascendenteGramaticas LRTabla de analisis sintactico ascendente LR

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

Page 71: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico 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 71 / 563

Page 72: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

IntroduccionGramaticas LR

Definicion (Gramatica LR 2 / 3)

2.- si existen dos derivaciones por la derecha

S ′∗⇒D

α A w ⇒A→ β

α βw

S ′∗⇒D

γ B x ⇒B→ β

α βy

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

w = σi1 . . . σik γ1 . . . γp

y = σi1 . . . σik η′1 . . . η

′q

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

Page 73: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

IntroduccionGramaticas LR

Definicion (Gramatica LR 3 / 3)

entonces se verifica que

α A y = γ B x

es decir

α = γ

A = B

x = y

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

Page 74: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico 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 74 / 563

Page 75: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico 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 75 / 563

Page 76: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

IntroduccionGramaticas LR

Nota (Gramatica LR)

LR(k): utiliza los k primeros sımbolos de la entrada paradeterminar que accion se debe realizar.

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

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

Page 77: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Subseccion actual

1 IntroduccionDescripcion generalConcepto de pivoteConflictosTipos de analisis sintactico ascendenteGramaticas LRTabla de analisis sintactico ascendente LR

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

Page 78: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

IntroduccionTabla de analisis sintactico ascendente LR

Definicion (Tabla de analisis LR 1 / 2)

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 78 / 563

Page 79: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

IntroduccionTabla de analisis sintactico ascendente LR

Definicion (Tabla de analisis LR 2 / 2)

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 79 / 563

Page 80: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

IntroduccionTabla de analisis sintactico ascendente LR

Definicion (Tabla Accion: estructura 1 / 2)

ColumnasSımbolos terminales y $ (final de cadena).

FilasEstados generados a partir de la coleccion de elementos LR

Celdas: acciones que se pueden realizar

DesplazarReducirAceptarError

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

Page 81: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

IntroduccionTabla de analisis sintactico ascendente LR

Definicion (Tabla Accion: acciones 2 / 2)

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 81 / 563

Page 82: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

IntroduccionTabla de analisis sintactico ascendente LR

Ejemplo (Gramatica de 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 82 / 563

Page 83: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

IntroduccionTabla de analisis sintactico ascendente LR

Ejemplo (Tabla LR)

Accion Ir-aid ( ) ; * 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 83 / 563

Page 84: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

IntroduccionTabla de analisis sintactico ascendente LR

Nota (Tabla Accion: abreviaturas)

d n

Se desplaza el primer sımbolo σ de la entrada a la pila y sepasa al estado n

r k

Se reduce con la regla de produccion numero k

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

Page 85: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

IntroduccionTabla de analisis sintactico ascendente LR

Definicion (Tabla Ir-a: estructura)

Columnas:

Sımbolos no terminales de la gramatica.

FilasEstados generados a partir de la coleccion de elementos LR

CeldasIndican las transiciones entre estados

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

Page 86: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico 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 86 / 563

Page 87: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

IntroduccionTabla de analisis sintactico ascendente LR

Ejercicio (Ir-a)

Demostrar que las celdas vacıas de la tabla Ir-a nunca seconsultaran.

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

Page 88: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico 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 88 / 563

Page 89: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico 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’ Xi1sj1 . . .Xih−1

sjh−1Xih s

β

σ . . . $ reducir (k) A −→ β

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

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

Page 90: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico 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 90 / 563

Page 91: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico 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 91 / 563

Page 92: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico 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 92 / 563

Page 93: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

IntroduccionTabla de analisis sintactico ascendente LR

Ejemplo (Gramatica de prototipos de funciones en C 1 / 4)

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 93 / 563

Page 94: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

IntroduccionTabla de analisis sintactico ascendente LR

Ejemplo (Tabla LR 2 / 4)

Accion Ir-aid ( ) ; * 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 94 / 563

Page 95: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

IntroduccionTabla de analisis sintactico ascendente LR

Ejemplo (Analisis sintactico ascendente LR 3 / 4)

Pila Entrada Accion

0int * id ( int ) ; $ desplazar 3

0 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 95 / 563

Page 96: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

IntroduccionTabla de analisis sintactico ascendente LR

Ejemplo (Analisis sintactico ascendente LR 4 / 4)

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 90 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 96 / 563

Page 97: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

IntroduccionTabla de analisis sintactico ascendente LR

Ejemplo (Derivacion por la derecha)

S ⇒1

T id ( L ) ;

⇒5

T id ( T ) ;

⇒3

T id ( int ) ;

⇒2

T * id ( int ) ;

⇒3

int * id ( int ) ;

Nota

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

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

Page 98: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

IntroduccionTabla de analisis sintactico ascendente LR

Ejemplo (Arbol sintactico asociado a la derivacion 1 / 6)

) ;int * id int(

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

Page 99: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

IntroduccionTabla de analisis sintactico ascendente LR

Ejemplo (Arbol sintactico asociado a la derivacion 2 / 6)

) ;int * id int

T

(

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

Page 100: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

IntroduccionTabla de analisis sintactico ascendente LR

Ejemplo (Arbol sintactico asociado a la derivacion 3 / 6)

T

) ;int * id int

T

(

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

Page 101: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

IntroduccionTabla de analisis sintactico ascendente LR

Ejemplo (Arbol sintactico asociado a la derivacion 4 / 6)

T

) ;int * id int

T

(

T

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

Page 102: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

IntroduccionTabla de analisis sintactico ascendente LR

Ejemplo (Arbol sintactico asociado a la derivacion 5 / 6)

T

) ;int * id int

L

T

(

T

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

Page 103: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

IntroduccionTabla de analisis sintactico ascendente LR

Ejemplo (Arbol sintactico asociado a la derivacion 6 / 6)

T

S

) ;int * id int

L

T

(

T

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

Page 104: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Seccion actual

1 Introduccion

2 Analisis sintactico ascendente SLR

3 Analisis sintactico ascendente LR-canonico

4 Analisis sintactico ascendente LALR

5 Metodos de recuperacion de errores

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

Page 105: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Subseccion actual

2 Analisis sintactico ascendente SLRIntroduccionColeccion canonica de elementos-LR(0)Algoritmo de construccion de la tabla de analisis SLREjemplos de analisis sintactico ascendente SLRConflictos en el analisis sintactico ascendente SLR

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

Page 106: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Contenido de la subseccion

2 Analisis sintactico ascendente SLRIntroduccion

CaracterısticasElemento-LR(0)Prefijo viableElemento-LR(0) valido para un prefijo viable

Coleccion canonica de elementos-LR(0)Algoritmo de construccion de la tabla de analisis SLREjemplos de analisis sintactico ascendente SLRConflictos en el analisis sintactico ascendente SLR

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

Page 107: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLRIntroduccion

Metodo SLR

SLR: simple L R

Metodo basado en la estrategia de desplazamiento-reduccion

Es el mas sencillo.Es el menos potente: se puede aplicar a menos gramaticasque los metodos LR-canonico o LALR.Su tabla de analisis sintactico es la mas pequena.

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

Page 108: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLRIntroduccion

Metodo SLR

Utiliza una coleccion canonica de elementos-LR(0) paraconstruir una tabla de analisis sintactico SLR.

La coleccion canonica de elementos-LR(0) se construyeutilizando dos funciones auxiliares:

Funcion clausuraFuncion Ir a

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

Page 109: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Contenido de la subseccion

2 Analisis sintactico ascendente SLRIntroduccion

CaracterısticasElemento-LR(0)Prefijo viableElemento-LR(0) valido para un prefijo viable

Coleccion canonica de elementos-LR(0)Algoritmo de construccion de la tabla de analisis SLREjemplos de analisis sintactico ascendente SLRConflictos en el analisis sintactico ascendente SLR

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

Page 110: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLRIntroduccion

Definicion (Elemento-LR(0))

Si A → X1 X2 · · · Xn ∈ P, sus elementos-LR(0) son:

A → • X1 X2 · · · Xn

A → X1 • X2 · · · Xn

A → X1 X2 · · · • Xn

A → X1 X2 · · · Xn •

Si A → ε ∈ P entonces su elemento-LR(0) es:

A → •

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

Page 111: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLRIntroduccion

Ejemplo (Elemento-LR(0))

Si S → T id ( L ) ; ∈ P, sus elementos-LR(0) son:

S → • T id ( L ) ;S → T • id ( L ) ;S → T id • ( L ) ;S → T id ( • L ) ;S → T id ( L • ) ;S → T id ( L ) • ;S → T id ( L ) ; •

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

Page 112: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLRIntroduccion

Significado de un LR(0) - elemento

A → X1X2 · · ·Xi−1︸ ︷︷ ︸β1

• Xi · · ·Xn︸ ︷︷ ︸β2

β1: parte ya analizada.β2: parte pendiente de analizar.

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

Page 113: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLRIntroduccion

Acciones de analisis sintactico

La posicion del punto determina la accion que se debe realizar

Si el punto esta al final, A −→ X1X2 · · ·Xn•. entoncesse producira una reduccion.

- X1X2 · · ·Xn es el pivote que estara en la cima de la pila- El pivote sera sustituido por el sımbolo A

Si no esta al final, A → X1 · · · Xi−1 • Xi · · · Xn, entonces

- todavıa no se habra localizado el pivote- y habra que realizar desplazamientos

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

Page 114: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Contenido de la subseccion

2 Analisis sintactico ascendente SLRIntroduccion

CaracterısticasElemento-LR(0)Prefijo viableElemento-LR(0) valido para un prefijo viable

Coleccion canonica de elementos-LR(0)Algoritmo de construccion de la tabla de analisis SLREjemplos de analisis sintactico ascendente SLRConflictos en el analisis sintactico ascendente SLR

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

Page 115: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLRIntroduccion

Definicion (Prefijo viable)

La cadena de sımbolos αβ ∈ V + = (VN ∪ VT )+ es un prefijoviable si

S∗⇒Dα β γ

∗⇒D

x ∈ V ∗T

donde D indica que la derivacion es por la derecha.

Nota

Un prefijo viable aparece al principio de una derivacion por laderecha que genera una cadena de terminales.

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

Page 116: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLRIntroduccion

Ejemplo (Prefijos viables 1 / 2)

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 116 / 563

Page 117: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLRIntroduccion

Ejemplo (Prefijos viables 2 / 2)

Derivacion por la derecha:

S’ ⇒1′

S

⇒1

T id ( L ) ;

⇒5

T id ( T ) ;

⇒2

T id ( T * ) ;

⇒3

T id ( int ) ;

⇒3

int id ( int ) ;

Prefijos viables:

T , T id, T id (, T id ( L , T id ( L ) , T id ( L ) ;, etc.

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

Page 118: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Contenido de la subseccion

2 Analisis sintactico ascendente SLRIntroduccion

CaracterısticasElemento-LR(0)Prefijo viableElemento-LR(0) valido para un prefijo viable

Coleccion canonica de elementos-LR(0)Algoritmo de construccion de la tabla de analisis SLREjemplos de analisis sintactico ascendente SLRConflictos en el analisis sintactico ascendente SLR

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

Page 119: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLRIntroduccion

Definicion (Elemento-LR(0) valido para un prefijo viable)

A → β1 • β2 es valido para el prefijo viable αβ1 si

S∗⇒Dα A w ⇒

A→β1β2

α β1 β2 w

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

Page 120: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLRIntroduccion

Ejemplos (Elemento-LR(0) valido para un prefijo viable 1 / 4)

Primer ejemplo

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 120 / 563

Page 121: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLRIntroduccion

Ejemplos (Elemento-LR(0) valido para un prefijo viable 2 / 4)

Primer ejemploPrefijo viable: α β1 = T id (︸ ︷︷ ︸

α

T︸︷︷︸β1

elemento-LR(0) valido para el prefijo viable:T︸︷︷︸A

→ T︸︷︷︸β1

• *︸︷︷︸β2

Derivacion por la derecha

S’+⇒ T id (︸ ︷︷ ︸

α

T︸︷︷︸A

) ;︸︷︷︸w

⇒T−→T *

T id (︸ ︷︷ ︸α

T︸︷︷︸β1

∗︸︷︷︸β2

) ;︸︷︷︸w

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

Page 122: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLRIntroduccion

Ejemplos (Elemento-LR(0) valido para un prefijo viable 3 / 4)

Segundo ejemplo

P’ = {(1’) E’ → E(1) E → E + E(2) E → E + E(3) E → ( E )(4) E → identificador(5) E → numero

}

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

Page 123: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLRIntroduccion

Ejemplos (Elemento-LR(0) valido para un prefijo viable 4 / 4)

Segundo ejemploPrefijo viable: α β1 = (︸︷︷︸

α

E︸︷︷︸β1

elemento-LR(0) valido para el prefijo viable:E︸︷︷︸A

→ E︸︷︷︸β1

• + E︸︷︷︸β2

Derivacion por la derechaE’ ⇒

1′E ⇒

3(︸︷︷︸α

E︸︷︷︸A

)︸︷︷︸w

⇒E−→E+E

(︸︷︷︸α

E︸︷︷︸β1

+E︸︷︷︸β2

)︸︷︷︸w

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

Page 124: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLRIntroduccion

Nota

Un elemento-LR(0) puede ser valido para varios prefijosviables: solamente se debe modificar α.

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

Page 125: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Subseccion actual

2 Analisis sintactico ascendente SLRIntroduccionColeccion canonica de elementos-LR(0)Algoritmo de construccion de la tabla de analisis SLREjemplos de analisis sintactico ascendente SLRConflictos en el analisis sintactico ascendente SLR

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

Page 126: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Contenido de la subseccion

2 Analisis sintactico ascendente SLRIntroduccionColeccion canonica de elementos-LR(0)

DefinicionFuncion clausuraFuncion Ir aAlgoritmo de construccion de la coleccion canonica deelementos-LR(0)Ejemplo de construccion de la coleccion canonica de elementos-LR(0)

Algoritmo de construccion de la tabla de analisis SLREjemplos de analisis sintactico ascendente SLRConflictos en el analisis sintactico ascendente SLR

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

Page 127: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLRColeccion canonica de elementos-LR(0)

Definicion (Coleccion canonica de elementos-LR(0))

Esta compuesta por los conjuntos de elementos-LR(0) que sonvalidos para los prefijos viables de la gramatica.

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

Page 128: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLRColeccion canonica de elementos-LR(0)

Coleccion canonica de elementos-LR(0)

Permite generar un automata finito determinista (AFD) quereconoce los prefijos viables de la gramatica.

Funciones auxiliares para construir la coleccion canonica.

Funcion clausura.Funcion Ir a.

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

Page 129: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Contenido de la subseccion

2 Analisis sintactico ascendente SLRIntroduccionColeccion canonica de elementos-LR(0)

DefinicionFuncion clausuraFuncion Ir aAlgoritmo de construccion de la coleccion canonica deelementos-LR(0)Ejemplo de construccion de la coleccion canonica de elementos-LR(0)

Algoritmo de construccion de la tabla de analisis SLREjemplos de analisis sintactico ascendente SLRConflictos en el analisis sintactico ascendente SLR

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

Page 130: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLRColeccion canonica de elementos-LR(0)

Definicion (Funcion clausura)

Sea I un conjunto elementos-LR(0):

1.- I ⊆ clausura(I)2.- Si A → α • B β ∈ clausura(I) y B → γ ∈ P

entonces B → • γ ∈ clausura(I)

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

Page 131: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLRColeccion canonica de elementos-LR(0)

Ejemplos (Funcion clausura 1 / 4)

Primer ejemplo

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 131 / 563

Page 132: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLRColeccion canonica de elementos-LR(0)

Ejemplos (Funcion clausura 2 / 4)

Primer ejemplo

clausura({S’ → • S}) = {S’ → • S,S → • T id ( L ) ;,T → • T *,T → • int}

= I0

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

Page 133: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLRColeccion canonica de elementos-LR(0)

Ejemplos (Funcion clausura 3 / 4)

Segundo ejemplo

P’ = {(1’) E’ → E(1) E → E + E(2) E → E + E(3) E → ( E )(4) E → identificador(5) E → numero

}

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

Page 134: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLRColeccion canonica de elementos-LR(0)

Ejemplos (Funcion clausura 4 / 4)

Segundo ejemplo

clausura({E’ → • E}) = {E’ → • E,E → • E + E,E → • E * E,E → • ( E ),E → • identificador,E → • numero}

= I0

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

Page 135: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Contenido de la subseccion

2 Analisis sintactico ascendente SLRIntroduccionColeccion canonica de elementos-LR(0)

DefinicionFuncion clausuraFuncion Ir aAlgoritmo de construccion de la coleccion canonica deelementos-LR(0)Ejemplo de construccion de la coleccion canonica de elementos-LR(0)

Algoritmo de construccion de la tabla de analisis SLREjemplos de analisis sintactico ascendente SLRConflictos en el analisis sintactico ascendente SLR

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

Page 136: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLRColeccion canonica de elementos-LR(0)

Definicion (Funcion Ir a)

Sea I un conjunto elementos-LR(0) y X ∈ V = VN ∪ VT

Ir a(I, X) = clausura({A → α X • β | A → α • X β ∈ I})

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

Page 137: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLRColeccion canonica de elementos-LR(0)

Ejemplos (Funcion Ir a 1 / 9)

Primer ejemplo

I0 = {S’ → • S,S → • T id ( L ) ;T → • T *T → • int

}

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

Page 138: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLRColeccion canonica de elementos-LR(0)

Ejemplos (Funcion Ir a 2 / 9)

Primer ejemplo

Ir a(I0,S) = clausura({S’ → S •})= {S’ → S •}= I1

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

Page 139: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLRColeccion canonica de elementos-LR(0)

Ejemplos (Funcion Ir a 3 / 9)

Primer ejemplo

Ir a(I0,T) = clausura({S → T • id ( L ) ;,T → T • * })

= { S → T • id ( L ) ;, T → T • * }= I2

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

Page 140: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLRColeccion canonica de elementos-LR(0)

Ejemplos (Funcion Ir a 4 / 9)

Primer ejemplo

Ir a(I0,int) = clausura({T → int • })= {T → int • }= I3

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

Page 141: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLRColeccion canonica de elementos-LR(0)

Ejemplos (Funcion Ir a 5 / 9)

Segundo ejemplo

I0 = {E’ → • E,E → • E + E,E → • E * E,E → • ( E ),E → • identificador,E → • numero

}

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

Page 142: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLRColeccion canonica de elementos-LR(0)

Ejemplos (Funcion Ir a 6 / 9)

Segundo ejemplo

Ir a(I0,E) = clausura( { E’ → E •,E → E • + E,E → E • * E } )

= {E’ → E •, E → E • + E, E → E • * E}= I1

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

Page 143: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLRColeccion canonica de elementos-LR(0)

Ejemplos (Funcion Ir a 7 / 9)

Segundo ejemplo

Ir a(I0,“ (”) = clausura({E’ → ( • E ) })= {

E’ → ( • E ),E → • E + E,E → • E * E,E → • ( E ),E → • identificador,E → • numero}

= I2

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

Page 144: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLRColeccion canonica de elementos-LR(0)

Ejemplos (Funcion Ir a 8 / 9)

Segundo ejemplo

Ir a(I0,id) = clausura({E → id • })= { E → id • }= I3

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

Page 145: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLRColeccion canonica de elementos-LR(0)

Ejemplos (Funcion Ir a 9 / 9)

Segundo ejemplo

Ir a(I0,numero) = clausura({E → numero • })= { E → numero • }= I4

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

Page 146: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Contenido de la subseccion

2 Analisis sintactico ascendente SLRIntroduccionColeccion canonica de elementos-LR(0)

DefinicionFuncion clausuraFuncion Ir aAlgoritmo de construccion de la coleccion canonica deelementos-LR(0)Ejemplo de construccion de la coleccion canonica de elementos-LR(0)

Algoritmo de construccion de la tabla de analisis SLREjemplos de analisis sintactico ascendente SLRConflictos en el analisis sintactico ascendente SLR

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

Page 147: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLRColeccion canonica de elementos-LR(0)

Algoritmo (Construccion de la coleccion canonica)

InicioI0 ← clausura({S’ → • S})C ← {I0} ∧ I0 no marcadopara cada I ∈ C ∧ I no marcado hacer

marcar Ipara cada X ∈ V hacer

I’ ← Ir a(I, X)si ( (I’ 6= ∅) ∧ (I’ /∈ C) )

entonces C ← C ∪ {I’} ∧ I’ no marcadofin si

fin parafin para

fin

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

Page 148: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLRColeccion canonica de elementos-LR(0)

Notas (Construccion de la coleccion canonica)

Genera un automata finito determinista (AFD) que reconocelos prefijos viables de la gramatica.

Los elementos-LR(0) se agrupan en conjuntos que secorresponden con los estados del automata.

Todos los estados del automata son finales.

Los estados del automata se corresponderan con los estadosde la tabla de analisis sintactico SLR.

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

Page 149: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Contenido de la subseccion

2 Analisis sintactico ascendente SLRIntroduccionColeccion canonica de elementos-LR(0)

DefinicionFuncion clausuraFuncion Ir aAlgoritmo de construccion de la coleccion canonica deelementos-LR(0)Ejemplo de construccion de la coleccion canonica de elementos-LR(0)

Algoritmo de construccion de la tabla de analisis SLREjemplos de analisis sintactico ascendente SLRConflictos en el analisis sintactico ascendente SLR

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

Page 150: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLRColeccion canonica de elementos-LR(0)

Ejemplo (Gramatica de los prototipos 1 / 20)

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 150 / 563

Page 151: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLRColeccion canonica de elementos-LR(0)

Ejemplo (Gramatica de los prototipos 2 / 20)

Construccion del conjunto I0

I0 = clausura({S’ → • S})= {

S’ → • S,S → • T id ( L ) ;,T → • T *,T → • int}

I0 tendra transiciones Ir a con S, T e int

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

Page 152: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLRColeccion canonica de elementos-LR(0)

Ejemplo (Gramatica de los prototipos 3 / 20)

Transiciones del conjunto I0

Ir a(I0,S) = clausura({ S’ → S • })= {S’ → S • }= I1

Ir a(I0,T) = clausura({S → T • id ( L ) ;,T → T • * })

= { S → T • id ( L ) ;, T → T • * }= I2

Ir a(I0,int) = clausura({T → int • })= {T → int • }= I3

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

Page 153: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLRColeccion canonica de elementos-LR(0)

Ejemplo (Gramatica de los prototipos 4 / 20)

Transiciones del conjunto I1 = {S’ → S • }

Ir a(I1, X) = ∅ ∀X ∈ V

El conjunto I1 no tiene transiciones.

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

Page 154: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLRColeccion canonica de elementos-LR(0)

Ejemplo (Gramatica de los prototipos 5 / 20)

Transiciones del conjunto I2

I2 = { S → T • id ( L ) ;, T → T • * }

Ir a(I2,id) = clausura({S → T id • ( L ) ; })= {S → T id • ( L ) ; }= I4

Ir a(I2,*) = clausura({T → T * • })= {T → T * • }= I5

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

Page 155: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLRColeccion canonica de elementos-LR(0)

Ejemplo (Gramatica de los prototipos 6 / 20)

Transiciones del conjunto I3 = {T → int • }

Ir a(I3, X) = ∅ ∀X ∈ V

El conjunto I3 no tiene transiciones.

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

Page 156: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLRColeccion canonica de elementos-LR(0)

Ejemplo (Gramatica de los prototipos 7 / 20)

Transiciones del conjunto I4 = {S → T id • ( L ) ; }

Ir a(I4,“(”) = clausura({S →T id ( • L ) ;})= {

S → T id ( • L ) ;L → • L , T,L → • T,T → • T *,T → • int}

= I6

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

Page 157: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLRColeccion canonica de elementos-LR(0)

Ejemplo (Gramatica de los prototipos 8 / 20)

Transiciones del conjunto I5 = {T → T * • }

Ir a(I5, X) = ∅ ∀X ∈ V

El conjunto I5 no tiene transiciones.

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

Page 158: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLRColeccion canonica de elementos-LR(0)

Ejemplo (Gramatica de los prototipos 9 / 20)

Transiciones del conjunto I6

I6 = {S → T id ( • L ) ;, L → • L , T,L → • T, T → • T *,T → • int}

I6 tendra transiciones Ir a con L, T e int

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

Page 159: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLRColeccion canonica de elementos-LR(0)

Ejemplo (Gramatica de los prototipos 10 / 20)

Transiciones del conjunto I6

Ir a(I6,L) = clausura({S → T id ( L • ) ;,L → L • , T })

= {S → T id ( L • ) ;, L → L • , T }= I7

Ir a(I6,T) = clausura({ L → T • , T → T • * })= { L → T • , T → T • * }= I8

Ir a(I6,int) = clausura({T → int • })= {T → int • }= I3

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

Page 160: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLRColeccion canonica de elementos-LR(0)

Ejemplo (Gramatica de los prototipos 11 / 20)

Transiciones del conjunto I7

I7 = {S → T id ( L • ) ;, L → L • , T }Ir a(I7,”)”}) = clausura({S → T id ( L ) • ; })

= {S → T id ( L ) • ; }= I9

Ir a(I7,“,”) = clausura({L → L , • T})= {L → L , • T,

T → • T *, T → • int }= I10

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

Page 161: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLRColeccion canonica de elementos-LR(0)

Ejemplo (Gramatica de los prototipos 12 / 20)

Transiciones del conjunto I8

I8 = { L → T • , T → T • * }

Ir a(I8,*) = clausura({T → T * • })= {T → T * • }= I5

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

Page 162: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLRColeccion canonica de elementos-LR(0)

Ejemplo (Gramatica de los prototipos 13 / 20)

Transiciones del conjunto I9

I9 = {S → T id ( L ) • ; }

Ir a(I9,“;”) = clausura( {S → T id ( L ) ; • })= {S → T id ( L ) ; • }= I11

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

Page 163: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLRColeccion canonica de elementos-LR(0)

Ejemplo (Gramatica de los prototipos 14 / 20)

Transiciones del conjunto I10

I10 = {L → L , • T, T → • T *, T → • int }

Ir a(I10,T) = clausura({L → L , T •, T → T • * })= {L → L , T •, T → T • * }= I12

Ir a(I10,int) = clausura({T → int • })= {T → int • }= I3

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

Page 164: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLRColeccion canonica de elementos-LR(0)

Ejemplo (Gramatica de los prototipos 15 / 20)

Transiciones del conjunto I11 = {S → T id ( L ) ; • }

Ir a(I11, X) = ∅ ∀X ∈ V

El conjunto I11 no tiene transiciones.

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

Page 165: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLRColeccion canonica de elementos-LR(0)

Ejemplo (Gramatica de los prototipos 16 / 20)

Transiciones del conjunto I12

I12 = {L → L , T •, T → T • * }

Ir a(I12,*) = clausura({T → T * • })= {T → T * • }= I5

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

Page 166: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLRColeccion canonica de elementos-LR(0)

Ejemplo (Gramatica de los prototipos 17 / 20)

Coleccion canonica: primera parte

I0 = { S’ → • S, S → • T id ( L ) ;, T → • T *, T → • int }I1 = {S’ → S • }I2 = { S → T • id ( L ) ;, T → T • * }I3 = {T → int • }I4 = {S → T id • ( L ) ; }I5 = {T → T * • }I6 = { S → T id ( • L ) ;, L → • L , T, L → • T,

T → • T *, T → • int }

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

Page 167: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLRColeccion canonica de elementos-LR(0)

Ejemplo (Gramatica de los prototipos 18 / 20)

Coleccion canonica: segunda parte

I7 = {S → T id ( L • ) ;, L → L • , T }I8 = { L → T • , T → T • * }I9 = {S → T id ( L ) • ; }I10 = {L → L , • T, T → • T *, T → • int }I11 = {S → T id ( L ) ; • }I12 = {L → L , T •, T → T • * }

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

Page 168: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLRColeccion canonica de elementos-LR(0)

Nota (Automata que reconoce prefijos viables)

Las transiciones entre los conjuntos de elementos-LR(0)permiten construir el automata finito determinista quereconoce los prefijos viables de la gramatica.

Todos los estados del automata son finales.

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

Page 169: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLRColeccion canonica de elementos-LR(0)

Ejemplo (Automata que reconoce prefijos viables 19 / 20)

Representacion grafica

T2 4 6

(

5*

identificador

0

S

1T

8

*

*

L

3

int

int 7

int

12

10

,

T

9

11;

)

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

Page 170: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLRColeccion canonica de elementos-LR(0)

Ejemplo (Automata que reconoce prefijos viables 20 / 20)

Representacion tabularid ( ) ; * int , S T L

0 3 1 212 4 534 656 3 8 77 9 108 59 11

10 3 121112 5

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

Page 171: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLRColeccion canonica de elementos-LR(0)

Ejercicio (Gramatica de las expresiones aritmeticas)

Construccion de la coleccion canonica de elementos-LR(0)de la gramatica:

P’ = {(1’) E’ → E(1) E → E + E(2) E → E + E(3) E → ( E )(4) E → identificador(5) E → numero

}

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

Page 172: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Subseccion actual

2 Analisis sintactico ascendente SLRIntroduccionColeccion canonica de elementos-LR(0)Algoritmo de construccion de la tabla de analisis SLREjemplos de analisis sintactico ascendente SLRConflictos en el analisis sintactico ascendente SLR

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

Page 173: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLRAlgoritmo de construccion de la tabla de analisis SLR

Definicion (Tabla de analisis sintactico SLR )

accion ir aσ1 σ2 . . . σn $ A1 . . . Am

s0

s1

. . .

sk

∀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 173 / 563

Page 174: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLRAlgoritmo de construccion de la tabla de analisis SLR

Ejemplo (Tabla de analisis sintactico SLR 1 / 2)

Gramatica de 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 174 / 563

Page 175: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLRAlgoritmo de construccion de la tabla de analisis SLR

Ejemplo (Tabla de analisis sintactico SLR 2 / 2)

Accion Ir-aid ( ) ; * int , $ S T L

0 d 3 1 21 Aceptar2 d 4 d 53 r 3 r 3 r 3 r 34 d 65 r 2 r 2 r 2 r 26 d 3 8 77 d 9 d 108 r 5 d 5 r 59 d 11

10 d 3 1211 r 112 r 4 d 5 r 4

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

Page 176: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLRAlgoritmo de construccion de la tabla de analisis SLR

Algoritmo (Construccion de la tabla SLR 1 / 10)

1.- Ampliar la gramatica con la regla de produccion S’ → S.

2.- Construir la coleccion canonica de Elementos-LR(0).

3.- Generar el automata que reconoce los prefijos viables.

4.- Completar la parte accion.

5.- Completar la parte ir a.

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

Page 177: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLRAlgoritmo de construccion de la tabla de analisis SLR

Algoritmo (Construccion de la tabla SLR 2 / 10)

1.- Ampliar la gramatica con la regla de produccion S’ → S.

- Evita que el sımbolo inicial aparezca en la parte derecha deuna regla de produccion.

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

Page 178: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLRAlgoritmo de construccion de la tabla de analisis SLR

Algoritmo (Construccion de la tabla SLR 3 / 10)

2.- Construir la coleccion canonica de Elementos-LR(0).

- Se debe comenzar por I0 = clausura ({S’ → • S })

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

Page 179: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLRAlgoritmo de construccion de la tabla de analisis SLR

Algoritmo (Construccion de la tabla SLR 4 / 10)

3.- Generar el automata que reconoce los prefijos viables.

- Los conjuntos de elementos-LR(1) se corresponden con losestados del automata.

- Todos los estados del automata son finales.

- El estado inicial se corresponde con el conjunto de elementosque contenga a S ′ → •S, que generalmente es I0

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

Page 180: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLRAlgoritmo de construccion de la tabla de analisis SLR

Algoritmo (Construccion de la tabla SLR 5 / 10)

4.- Completar la parte accion

4.1 Desplazar4.2 Reducir4.3 Aceptar4.4 Funcion de error

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

Page 181: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLRAlgoritmo de construccion de la tabla de analisis SLR

Algoritmo (Construccion de la tabla SLR 6 / 10)

4.- Completar la parte accion:

4.1 DesplazarSi A→ α • σβ ∈ Ii ∧ σ ∈ VT ∧ Ir a(Ii ,σ) = Ijentonces accion[i, σ] = d j

1.- se desplaza el sımbolo σ desde la entrada a la pila2.- y se pasa al estado j.

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

Page 182: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLRAlgoritmo de construccion de la tabla de analisis SLR

Algoritmo (Construccion de la tabla SLR 7 / 10)

4.- Completar la parte accion:

4.2.- Reducir.Si A→ α• ∈ Ii entonces accion[i, σ] = r kdonde

σ ∈ Siguiente(A)y k representa la regla de produccion k: A→ α ∈ P

Nota

Se requiere el calculo del conjunto Siguiente(A) ∀A ∈ VN

Tambien se requiere calcular el conjunto Primero(A) ∀A ∈ VN

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

Page 183: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLRAlgoritmo de construccion de la tabla de analisis SLR

Algoritmo (Construccion de la tabla SLR 8 / 10)

4.- Completar la parte accion:

4.3.- AceptarSi S ′ → •S ∈ Ii entonces accion[i, $] = Aceptar

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

Page 184: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLRAlgoritmo de construccion de la tabla de analisis SLR

Algoritmo (Construccion de la tabla SLR 9 / 10)

4.- Completar la parte accion:

4.4.- Funcion de errorLas celdas vacıas de la parte accion se completaran confunciones de tratamiento de error.

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

Page 185: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLRAlgoritmo de construccion de la tabla de analisis SLR

Algoritmo (Construccion de la tabla SLR 10 / 10)

5.- Completar la parte ir a

Si Ir a(Ii , A) = Ij ∧ A ∈ VN entonces ir a[i, A] = j

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

Page 186: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLRAlgoritmo de construccion de la tabla de analisis SLR

Ejercicio (Construccion de la tabla SLR)

Las celdas vacıas de la parte ir a nunca se consultaran:¡demuestralo!.

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

Page 187: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Subseccion actual

2 Analisis sintactico ascendente SLRIntroduccionColeccion canonica de elementos-LR(0)Algoritmo de construccion de la tabla de analisis SLREjemplos de analisis sintactico ascendente SLRConflictos en el analisis sintactico ascendente SLR

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

Page 188: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Contenido de la subseccion

2 Analisis sintactico ascendente SLRIntroduccionColeccion canonica de elementos-LR(0)Algoritmo de construccion de la tabla de analisis SLREjemplos de analisis sintactico ascendente SLR

Gramatica de los prototipos de funcionesGramatica de las enumeraciones

Conflictos en el analisis sintactico ascendente SLR

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

Page 189: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLREjemplos de analisis sintactico ascendente SLR

Ejemplo (1.- Gramatica de los prototipos de funciones 1 / 12)

P = {(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 189 / 563

Page 190: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLREjemplos de analisis sintactico ascendente SLR

Ejemplo (1.- Gramatica de los prototipos de funciones 2 / 12)

1.- Ampliacion de la gramatica

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 190 / 563

Page 191: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLREjemplos de analisis sintactico ascendente SLR

Ejemplo (1.- Gramatica de los prototipos de funciones 3 / 12)

2.- Coleccion canonica: primera parte

I0 = { S’ → • S, S → • T id ( L ) ;, T → • T *, T → • int }I1 = {S’ → S • }I2 = { S → T • id ( L ) ;, T → T • * }I3 = {T → int • }I4 = {S → T id • ( L ) ; }I5 = {T → T * • }I6 = { S → T id ( • L ) ;, L → • L , T, L → • T,

T → • T *, T → • int }

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

Page 192: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLREjemplos de analisis sintactico ascendente SLR

Ejemplo (1.- Gramatica de los prototipos de funciones 4 / 12)

2.- Coleccion canonica: segunda parte

I7 = {S → T id ( L • ) ;, L → L • , T }I8 = { L → T • , T → T • * }I9 = {S → T id ( L ) • ; }I10 = {L → L , • T, T → • T *, T → • int }I11 = {S → T id ( L ) ; • }I12 = {L → L , T •, T → T • * }

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

Page 193: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLREjemplos de analisis sintactico ascendente SLR

Ejemplo (1.- Gramatica de los prototipos de funciones 5 / 12)

3.- Automata que reconoce los prefijos viables

Representacion grafica

T2 4 6

(

5*

identificador

0

S

1T

8

*

*

L

3

int

int 7

int

12

10

,

T

9

11;

)

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

Page 194: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLREjemplos de analisis sintactico ascendente SLR

Ejemplo (1.- Gramatica de los prototipos de funciones 6 / 12)3.- Automata que reconoce los prefijos viables

Representacion tabularid ( ) ; * int , S T L

0 3 1 212 4 534 656 3 8 77 9 108 59 11

10 3 121112 5

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

Page 195: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLREjemplos de analisis sintactico ascendente SLR

Ejemplo (1.- Gramatica de los prototipos de funciones 7 / 12)

4.- Completar la parte accion: conjuntos auxiliares

Primero Siguiente

S’ int $

S int $

T int id, *, “)”, “,”L int “)”, “,”

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

Page 196: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLREjemplos de analisis sintactico ascendente SLR

Ejemplo (1.- Gramatica de los prototipos de funciones 8 / 12)4.- Completar la parte accion

accion ir aid ( ) ; * int , $ S T L

0 d 31 Aceptar2 d 4 d 53 r 3 r 3 r 3 r 34 d 65 r 2 r 2 r 2 r 26 d 37 d 9 d 108 r 5 d 5 r 59 d 11

10 d 311 r 112 r 4 d 5 r 4

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

Page 197: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLREjemplos de analisis sintactico ascendente SLR

Ejemplo (1.- Gramatica de los prototipos de funciones 9 / 12)5.- Completar la parte ir a

accion ir-aid ( ) ; * int , $ S T L

0 d 3 1 21 Aceptar2 d 4 d 53 r 3 r 3 r 3 r 34 d 65 r 2 r 2 r 2 r 26 d 3 8 77 d 9 d 108 r 5 d 5 r 59 d 11

10 d 3 1211 r 112 r 4 d 5 r 4

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

Page 198: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLREjemplos de analisis sintactico ascendente SLR

Ejemplo (1.- Gramatica de los prototipos de funciones 10 / 12)

Analisis sintactico ascendente SLR: primera parte

Pila Entrada Accion0 int id ( int ) ; $ desplazar 30 int 3 id ( int ) ; $ reducir 3 T → int0 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 198 / 563

Page 199: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLREjemplos de analisis sintactico ascendente SLR

Ejemplo (1.- Gramatica de los prototipos de funciones 11 / 12)

Analisis sintactico ascendente SLR: segunda parte

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 90 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 199 / 563

Page 200: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLREjemplos de analisis sintactico ascendente SLR

Ejemplo (1.- Gramatica de los prototipos de funciones 12 / 12)

Derivacion por la derecha obtenida en orden inverso

S ⇒1

T id ( L ) ;

⇒5

T id ( T ) ;

⇒3

T id ( int ) ;

⇒3

int * id ( int ) ;

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

Page 201: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLREjemplos de analisis sintactico ascendente SLR

Ejercicio

Dibuja el arbol sintactico de forma ascendente a partir de laderivacion por la derecha obtenida en orden inverso.

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

Page 202: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Contenido de la subseccion

2 Analisis sintactico ascendente SLRIntroduccionColeccion canonica de elementos-LR(0)Algoritmo de construccion de la tabla de analisis SLREjemplos de analisis sintactico ascendente SLR

Gramatica de los prototipos de funcionesGramatica de las enumeraciones

Conflictos en el analisis sintactico ascendente SLR

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

Page 203: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLREjemplos de analisis sintactico ascendente SLR

Ejemplo (2.- Gramatica de las enumeraciones 1 / 24)

P = {(1) S → S D(2) S → ε(3) D → enum identificador { L } ;(4) L → identificador(5) L → L , identificador

}

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

Page 204: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLREjemplos de analisis sintactico ascendente SLR

Ejemplo (2.- Gramatica de las enumeraciones 2 / 24)

1.- Ampliacion de la gramatica

P’ = {(1’) S’ → S(1) S → S D(2) S → ε(3) D → enum identificador { L } ;(4) L → identificador(5) L → L , identificador

}

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

Page 205: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLREjemplos de analisis sintactico ascendente SLR

Ejemplo (2.- Gramatica de las enumeraciones 3 / 24)

2.- Construccion de la coleccion canonica

Construccion del conjunto I0

I0 = clausura({S’ → • S })= {

S’ → • S,S → • S D,S → •}

I0 tendra una transicion Ir a con S.

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

Page 206: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLREjemplos de analisis sintactico ascendente SLR

Ejemplo (2.- Gramatica de las enumeraciones 4 / 24)

2.- Construccion de la coleccion canonica

Transiciones del conjunto I0

Ir a(I0,S) = clausura({ S’ → S •, S → S • D})= {

S’ → S •,S → S • D,D → • enum identificador { L };}

= I1

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

Page 207: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLREjemplos de analisis sintactico ascendente SLR

Ejemplo (2.- Gramatica de las enumeraciones 5 / 24)

2.- Construccion de la coleccion canonica

Transiciones del conjunto I1

I1 = { S’ → S •, S → S • D, D → • enum id { L }; }

Ir a(I1,D) = clausura({S → S D •})= {S → S D •}= I2

Ir a(I1,enum) = clausura({D → enum • id { L } ; })= {D → enum • id { L } ; }= I3

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

Page 208: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLREjemplos de analisis sintactico ascendente SLR

Ejemplo (2.- Gramatica de las enumeraciones 6 / 24)

2.- Construccion de la coleccion canonica

Transiciones del conjunto I2 = {S → S D •}

Ir a(I2, X) = ∅ ∀X ∈ V

El conjunto I2 no tiene transiciones.

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

Page 209: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLREjemplos de analisis sintactico ascendente SLR

Ejemplo (2.- Gramatica de las enumeraciones 7 / 24)

2.- Construccion de la coleccion canonica

Transiciones del conjunto I3 = {D → enum • id { L } ; }

Ir a(I3,id) = clausura({D → enum id • { L } ;})= {D → enum id • { L } ;}= I4

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

Page 210: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLREjemplos de analisis sintactico ascendente SLR

Ejemplo (2.- Gramatica de las enumeraciones 8 / 24)

2.- Construccion de la coleccion canonica

Transiciones del conjunto I4 = {D → enum id • { L } ;}

Ir a(I4,{) = clausura({D → enum id { • L} ; })= {

D → enum id { • L} ;,L → • id,L → • L , id}

= I5

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

Page 211: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLREjemplos de analisis sintactico ascendente SLR

Ejemplo (2.- Gramatica de las enumeraciones 9 / 24)

2.- Construccion de la coleccion canonica

Transiciones del conjunto I5

I5 = { D → enum id { • L} ;, L → • id, L → • L , id }Ir a(I5,L) = clausura({ D → enum id { L • } ;,

L → L • , id } )= { D → enum id { L • } ;, L → L • , id }= I6

Ir a(I5,id) = clausura({L → id • })= {L → id • }= I7

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

Page 212: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLREjemplos de analisis sintactico ascendente SLR

Ejemplo (2.- Gramatica de las enumeraciones 10 / 24)

2.- Construccion de la coleccion canonica

Transiciones del conjunto I6

I6 = { D → enum id { L • } ;, L → L • , id }

Ir a(I6,}) = clausura({D → enum id { L } • ; })= {D → enum id { L } • ; }= I8

Ir a(I6,“,”) = clausura({L → L , • id })= {L → L , • id }= I9

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

Page 213: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLREjemplos de analisis sintactico ascendente SLR

Ejemplo (2.- Gramatica de las enumeraciones 11 / 24)

2.- Construccion de la coleccion canonica

Transiciones del conjunto I7 = {L → identificador • }

Ir a(I7, X) = ∅ ∀X ∈ V

El conjunto I7 no tiene transiciones.

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

Page 214: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLREjemplos de analisis sintactico ascendente SLR

Ejemplo (2.- Gramatica de las enumeraciones 12 / 24)

2.- Construccion de la coleccion canonica

Transiciones del conjunto I8 = {D → enum id { L } • ; }

Ir a(I8,“;”) = clausura({D → enum id { L } ; • })= {D → enum id { L } ; • }= I10

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

Page 215: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLREjemplos de analisis sintactico ascendente SLR

Ejemplo (2.- Gramatica de las enumeraciones 13 / 24)

2.- Construccion de la coleccion canonica

Transiciones del conjunto I9 = {L → L , • id }

Ir a(I9,id) = clausura({L → L , id • })= {L → L , id • }= I11

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

Page 216: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLREjemplos de analisis sintactico ascendente SLR

Ejemplo (2.- Gramatica de las enumeraciones 14 / 24)

2.- Construccion de la coleccion canonica

Transiciones del conjunto I10

I10 = {D → enum id { L } ; • }

Ir a(I10, X) = ∅ ∀X ∈ V

El conjunto I10 no tiene transiciones.

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

Page 217: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLREjemplos de analisis sintactico ascendente SLR

Ejemplo (2.- Gramatica de las enumeraciones 15 / 24)

2.- Construccion de la coleccion canonica

Transiciones del conjunto I11

I11 = {L → L , id • }

Ir a(I11, X) = ∅ ∀X ∈ V

El conjunto I11 no tiene transiciones.

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

Page 218: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLREjemplos de analisis sintactico ascendente SLR

Ejemplo (2.- Gramatica de las enumeraciones 16 / 24)

2.- Construccion de la coleccion canonica

Coleccion canonica: primera parte

I0 = { S’ → • S, S → • S D, S → • }I1 = { S’ → S •, S → S • D, D → • enum id { L }; }I2 = {S → S D •}I3 = {D → enum • id { L } ; }I4 = {D → enum id • { L } ;}I5 = { D → enum id { • L} ;, L → • id, L → • L , id }

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

Page 219: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLREjemplos de analisis sintactico ascendente SLR

Ejemplo (2.- Gramatica de las enumeraciones 17 / 24)

2.- Construccion de la coleccion canonica

Coleccion canonica: segunda parte

I6 = { D → enum id { L • } ;, L → L • , id }I7 = {L → id • }I8 = {D → enum id { L } • ; }I9 = {L → L , • id }I10 = {D → enum id { L } ; • }I11 = {L → L , id • }

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

Page 220: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLREjemplos de analisis sintactico ascendente SLR

Ejemplo (2.- Gramatica de las enumeraciones 19 / 24)

3.-Automata que reconoce los prefijos viables

Estado enum id { } ; , $ S D L

0 11 3 223 44 55 7 66 8 978 109 11

1011

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

Page 221: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLREjemplos de analisis sintactico ascendente SLR

Ejemplo (2.- Gramatica de las enumeraciones 18 / 24)

4.- Completar la parte accion: conjuntos auxiliares

Primero Siguiente

S’ enum, ε $

S enum, ε $, enumD enum $, enumL idntificador }, “,”

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

Page 222: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLREjemplos de analisis sintactico ascendente SLR

Ejemplo (2.- Gramatica de las enumeraciones 20 / 24)

4.- Completar la parte accion

Accion Ir-aEstado enum id { } ; , $ S D L

0 r 2 r 21 d 3 ACEPTAR2 r 1 r 13 d 44 d 55 d 76 d 8 d 97 r 4 r 48 d 109 d 11

10 r 3 r 311 r 5 r 5

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

Page 223: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLREjemplos de analisis sintactico ascendente SLR

Ejemplo (2.- Gramatica de las enumeraciones 21 / 24)

5.- Completar la parte ir a

Accion Ir-aEstado enum id { } ; , $ S D L

0 r 2 r 2 11 d 3 ACEPTAR 22 r 1 r 13 d 44 d 55 d 7 66 d 8 d 97 r 4 r 48 d 109 d 11

10 r 3 r 311 r 5 r 5

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

Page 224: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLREjemplos de analisis sintactico ascendente SLR

Ejemplo (2.- Gramatica de las enumeraciones 22 / 24)

P’ = {(1’) S’ → S(1) S → S D(2) S → ε(3) D → enum identificador { L } ;(4) L → identificador(5) L → L , identificador

}

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

Page 225: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLREjemplos de analisis sintactico ascendente SLR

Ejemplo (2.- Gramatica de las enumeraciones 23 / 24)

Analisis sintactico SLR: primera parte

Pila Entrada Accion0 enum id { id , id } ; $ r 2 S → ε0 S 1 enum id { id , id } ; $ d 30 S 1 enum 3 id { id , id } ; $ d 40 S 1 enum 3 id 4 { id , id } ; $ d 50 S 1 enum 3 id 4 { 5 id , id } ; $ d 70 S 1 enum 3 id 4 { 5 id 7 , id } ; $ r 4 L → id0 S 1 enum 3 id 4 { 5 L 6 , id } ; $ d 9

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

Page 226: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLREjemplos de analisis sintactico ascendente SLR

Ejemplo (2.- Gramatica de las enumeraciones 24 / 24)

Analisis sintactico SLR: segunda parte

Pila Entrada Accion0 S 1 enum 3 id 4 { 5 L 6 , 9 id } ; $ d 11

0 S 1 enum 3 id 4 { 5 L 6 , 9 id 11 } ; $ r 5 L → L , id0 S 1 enum 3 id 4 { 5 L 6 } ; $ d 8

0 S 1 enum 3 id 4 { 5 L 6 } 8 ; $ d 10

0 S 1 enum 3 id 4 { 5 L 6 } 8 ; 10 $ r 3 D → enum id {L} ;0 S 1 D 2 $ r 1 S → S D

0 S 1 $ Aceptar

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

Page 227: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLREjemplos de analisis sintactico ascendente SLR

Ejercicios (2.- Gramatica de las enumeraciones)

Construccion del automata que reconoce prefijos viables

Representacion grafica.

Construccion de la derivacion por la derecha

Construccion del arbol sintactico de forma ascendente.

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

Page 228: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Subseccion actual

2 Analisis sintactico ascendente SLRIntroduccionColeccion canonica de elementos-LR(0)Algoritmo de construccion de la tabla de analisis SLREjemplos de analisis sintactico ascendente SLRConflictos en el analisis sintactico ascendente SLR

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

Page 229: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Contenido de la subseccion

2 Analisis sintactico ascendente SLRIntroduccionColeccion canonica de elementos-LR(0)Algoritmo de construccion de la tabla de analisis SLREjemplos de analisis sintactico ascendente SLRConflictos en el analisis sintactico ascendente SLR

DefinicionEjemplos

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

Page 230: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLRConflictos en el analisis sintactico ascendente SLR

Definicion (Conflicto en la tabla SLR)

Se presenta un conflicto en la tabla SLR cuando hay al menosuna celda de la parte accion con dos o mas accionesdiferentes.

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

Page 231: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLRConflictos en el analisis sintactico ascendente SLR

Tipos de conflictos

Desplazamiento-reduccion.

Reduccion-reduccion.

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

Page 232: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLRConflictos en el analisis sintactico ascendente SLR

Conflicto de desplazamiento-reduccion

Al menos una celda de la tabla accion tiene las opciones dedesplazar y reducir simultaneamente:

accion[i, σ] =

{d jr k

La opcion por defecto suele ser realizar el desplazamiento.

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

Page 233: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLRConflictos en el analisis sintactico ascendente SLR

Conflicto de desplazamiento-reduccion

Este conflicto se genera si se cumplen las siguientescondiciones:

1.- Si ∃A→ α • σβ ∈ Ii ∧ Ir a(Ii , σ) = Ijentonces accion[i,σ] = d j

2.- Si ∃B → γ• ∈ Ii ∧ σ ∈ siguiente(B)entonces accion[i,σ] = r kdonde k es la regla B → γ ∈ P

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

Page 234: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLRConflictos en el analisis sintactico ascendente SLR

Conflicto de reduccion-reduccion

Al menos una celda de la tabla accion tiene la opcion dereducir con dos o mas reglas simultaneamente:

accion[i, σ] =

{r hr k

Para evitar este conflicto del analisis SLR, hay dos opciones:

1.- Disenar una nueva gramatica2.- Comprobar si el metodo LR-canonico no genera el conflicto.

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

Page 235: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLRConflictos en el analisis sintactico ascendente SLR

Conflicto de reduccion-reduccion

Este conflicto se genera si se cumplen las siguientescondiciones:

1.- Si ∃A→ α• ∈ Ii ∧ σ ∈ siguiente(B)entonces accion[i,σ] = r hdonde h es la regla A→ α ∈ P

2.- Si ∃B → α• ∈ Ii ∧ σ ∈ siguiente(B)entonces accion[i,σ] = r kdonde k es la regla B → α ∈ P

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

Page 236: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Contenido de la subseccion

2 Analisis sintactico ascendente SLRIntroduccionColeccion canonica de elementos-LR(0)Algoritmo de construccion de la tabla de analisis SLREjemplos de analisis sintactico ascendente SLRConflictos en el analisis sintactico ascendente SLR

DefinicionEjemplos

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

Page 237: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLRConflictos en el analisis sintactico ascendente SLR

Ejemplos (Conflictos en el analisis sintactico SLR)

Ejemplos de conflicto de desplazamiento - reduccion.

1.- Gramatica de las expresiones aritmeticas2.- Gramatica de sentencia de asignacion

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

Page 238: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLRConflictos en el analisis sintactico ascendente SLR

Ejemplos (Conflictos en el analisis sintactico SLR)

Ejemplos de conflicto de desplazamiento - reduccion.

1.- Gramatica de las expresiones aritmeticas2.- Gramatica de sentencia de asignacion

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

Page 239: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLRConflictos en el analisis sintactico ascendente SLR

Ejemplo (1.- Gramatica de las expresiones aritmeticas. 1 / 39)

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 239 / 563

Page 240: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLRConflictos en el analisis sintactico ascendente SLR

Ejemplo (1.- Gramatica de las expresiones aritmeticas. 2 / 39)

1.- Ampliacion de la gramatica

P = {(1’) E’ → E(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 240 / 563

Page 241: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLRConflictos en el analisis sintactico ascendente SLR

Ejemplo (1.- Gramatica de las expresiones aritmeticas. 3 / 39)

2.- Construccion de la coleccion canonica

Conjunto I0: primera parte

I0 = clausura({ E’ → • E }){E’ → • E,E → • E + E, E → • E * E,E → • ( E ), E → • id, E → • numero}

I0 tendra transiciones Ir a con E, +, *, (, id y numero

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

Page 242: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLRConflictos en el analisis sintactico ascendente SLR

Ejemplo (1.- Gramatica de las expresiones aritmeticas. 4 / 39)

2.- Construccion de la coleccion canonica

Transiciones del conjunto I0: segunda parte

Ir a(I0,E) = clausura({ E’ → E •, E → E • + E, E → E • * E})= { E’ → E •, E → E • + E, E → E • * E}= I1

Ir a(I0,“(”) = clausura({ E → ( • E})= {

E → ( • E), E → • E + E, E → • E * E,E → • ( E ),E → • id, E → • numero}

= I2

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

Page 243: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLRConflictos en el analisis sintactico ascendente SLR

Ejemplo (1.- Gramatica de las expresiones aritmeticas. 5 / 39)

2.- Construccion de la coleccion canonica

Transiciones del conjunto I0: tercera parte

Ir a(I0,id) = clausura({ E → id • })= { E → id • }= I3

Ir a(I0,numero) = clausura({ E → numero • })= { E → numero • }= I4

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

Page 244: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLRConflictos en el analisis sintactico ascendente SLR

Ejemplo (1.- Gramatica de las expresiones aritmeticas. 6 / 39)

2.- Construccion de la coleccion canonica

Transiciones del conjunto I1: primera parte

I1 = { E’ → E •, E → E • + E, E → E • * E }

I1 tendra transiciones Ir a con + y *.

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

Page 245: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLRConflictos en el analisis sintactico ascendente SLR

Ejemplo (1.- Gramatica de las expresiones aritmeticas. 7 / 39)

2.- Construccion de la coleccion canonica

Transiciones del conjunto I1: segunda parte

Ir a(I1,+) = clausura({ E → E + • E })= {

E → E + • E, E → • E + E, E → • E * E,E → • ( E ), E → • id, E → • numero}

= I5

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

Page 246: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLRConflictos en el analisis sintactico ascendente SLR

Ejemplo (1.- Gramatica de las expresiones aritmeticas. 8 / 39)

2.- Construccion de la coleccion canonica

Transiciones del conjunto I1: tercera parte

Ir a(I1,*) = clausura({ E → E * • E })= {

E → E * • E, E → • E + E, E → • E * E,E → • ( E ), E → • id, E → • numero}

= I6

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

Page 247: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLRConflictos en el analisis sintactico ascendente SLR

Ejemplo (1.- Gramatica de las expresiones aritmeticas. 9 / 39)

2.- Construccion de la coleccion canonica

Transiciones del conjunto I2: primera parte

I2 = { E → ( • E), E → • E + E, E → • E * E,

E → • ( E ),E → • id, E → • numero }

I2 tendra transiciones Ir a con E, (, id y numero.

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

Page 248: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLRConflictos en el analisis sintactico ascendente SLR

Ejemplo (1.- Gramatica de las expresiones aritmeticas. 10 / 39)

2.- Construccion de la coleccion canonica

Transiciones del conjunto I2: segunda parte

Ir a(I2,E) = clausura({ E → ( E • ), E → E • + E, E → E • * E} ){ E → ( E • ), E → E • + E, E → E • * E}

= I7

Ir a(I2,“(”) = clausura({ E → ( • E) })= {

E → ( • E), E → • E + E, E → • E * E,E → • ( E ), E → • id, E→ • numero }

= I2

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

Page 249: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLRConflictos en el analisis sintactico ascendente SLR

Ejemplo (1.- Gramatica de las expresiones aritmeticas. 11 / 39)

2.- Construccion de la coleccion canonica

Transiciones del conjunto I2: tercera parte

Ir a(I2,id) = clausura({E → id • })= {E → id • }= I3

Ir a(I2,numero) = clausura({E → numero • })= {E → numero • }= I4

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

Page 250: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLRConflictos en el analisis sintactico ascendente SLR

Ejemplo (1.- Gramatica de las expresiones aritmeticas. 12 / 39)

2.- Construccion de la coleccion canonica

Transiciones del conjunto I3 = {E → id • }

Ir a(I3, X) = ∅ ∀X ∈ V

El conjunto I3 no tiene transiciones.

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

Page 251: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLRConflictos en el analisis sintactico ascendente SLR

Ejemplo (1.- Gramatica de las expresiones aritmeticas. 13 / 39)

2.- Construccion de la coleccion canonica

Transiciones del conjunto I4 = {E → numero • }

Ir a(I4, X) = ∅ ∀X ∈ V

El conjunto I4 no tiene transiciones.

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

Page 252: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLRConflictos en el analisis sintactico ascendente SLR

Ejemplo (1.- Gramatica de las expresiones aritmeticas. 14 / 39)

2.- Construccion de la coleccion canonica

Transiciones del conjunto I5: primera parte

I5 = {E → E + • E, E → • E + E, E → • E * E,E → • ( E ), E → • id, E → • numero}

I5 tendra transiciones Ir a con E, (, id y numero.

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

Page 253: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLRConflictos en el analisis sintactico ascendente SLR

Ejemplo (1.- Gramatica de las expresiones aritmeticas. 15 / 39)

2.- Construccion de la coleccion canonica

Transiciones del conjunto I5: segunda parte

Ir a(I5,E) = clausura({E → E + E •,E → E • + E, E → E • * E} )

= {E → E + E •, E → E • + E, E → E • * E}= I8

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

Page 254: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLRConflictos en el analisis sintactico ascendente SLR

Ejemplo (1.- Gramatica de las expresiones aritmeticas. 16 / 39)

2.- Construccion de la coleccion canonica

Transiciones del conjunto I5: tercera parte

Ir a(I5,“(”) = clausura({E → ( • E) })= {

E → ( • E), E → • E + E,E → • E * E, E → • ( E ),E → • id, E → • numero}

= I2

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

Page 255: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLRConflictos en el analisis sintactico ascendente SLR

Ejemplo (1.- Gramatica de las expresiones aritmeticas. 17 / 39)

2.- Construccion de la coleccion canonica

Transiciones del conjunto I5: cuarta parte

Ir a(I5,id) = clausura({E → id •}){E → id •}

= I3

Ir a(I5,numero) = clausura({E → numero •}){E → numero •}

= I4

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

Page 256: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLRConflictos en el analisis sintactico ascendente SLR

Ejemplo (1.- Gramatica de las expresiones aritmeticas. 18 / 39)

2.- Construccion de la coleccion canonica

Transiciones del conjunto I6: primera parte

I6 = {E → E * • E, E → • E + E, E → • E * E,E → • ( E ), E → • id, E → • numero}

I6 tendra transiciones Ir a con E, (, id y numero.

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

Page 257: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLRConflictos en el analisis sintactico ascendente SLR

Ejemplo (1.- Gramatica de las expresiones aritmeticas. 19 / 39)

2.- Construccion de la coleccion canonica

Transiciones del conjunto I6: segunda parte

Ir a(I6,E) = clausura({E → E * E •,E → E • * E, E → E • * E} )

= {E → E + E •, E → E • + E, E → E • * E}= I9

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

Page 258: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLRConflictos en el analisis sintactico ascendente SLR

Ejemplo (1.- Gramatica de las expresiones aritmeticas. 20 / 39)

2.- Construccion de la coleccion canonica

Transiciones del conjunto I6: tercera parte

Ir a(I6,“(”) = clausura({E → ( • E) })= {

E → ( • E), E → • E + E,E → • E * E, E → • ( E ),E → • id, E → • numero}

= I2

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

Page 259: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLRConflictos en el analisis sintactico ascendente SLR

Ejemplo (1.- Gramatica de las expresiones aritmeticas. 21 / 39)

2.- Construccion de la coleccion canonica

Transiciones del conjunto I6: cuarta parte

Ir a(I6,id) = clausura({E → id •}){E → id •}

= I3

Ir a(I6,numero) = clausura({E → numero •}){E → numero •}

= I4

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

Page 260: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLRConflictos en el analisis sintactico ascendente SLR

Ejemplo (1.- Gramatica de las expresiones aritmeticas. 22 / 39)

2.- Construccion de la coleccion canonica

Transiciones del conjunto I7: primera parte

I7 = { E → ( E • ), E → E • + E, E → E • * E}

I7 tendra transiciones Ir a con ), + y *.

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

Page 261: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLRConflictos en el analisis sintactico ascendente SLR

Ejemplo (1.- Gramatica de las expresiones aritmeticas. 23 / 39)

2.- Construccion de la coleccion canonica

Transiciones del conjunto I7: segunda parte

Ir a(I7,“)”) = clausura({E → ( E ) •})= {E → ( E ) •}= I10

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

Page 262: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLRConflictos en el analisis sintactico ascendente SLR

Ejemplo (1.- Gramatica de las expresiones aritmeticas. 24 / 39)

2.- Construccion de la coleccion canonica

Transiciones del conjunto I7: tercera parte

Ir a(I7,+) = clausura({E → E + • E } )= {

E → E + • E,E → • E + E, E → • E * E,E → • ( E ), E → • id, E → • numero}

= I5

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

Page 263: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLRConflictos en el analisis sintactico ascendente SLR

Ejemplo (1.- Gramatica de las expresiones aritmeticas. 25 / 39)

2.- Construccion de la coleccion canonica

Transiciones del conjunto I7: quinta parte

Ir a(I7,*) = clausura({E → E * • E } )= {

E → E * • E,E → • E + E, E → • E * E,E → • ( E ), E → • id, E → • numero}

= I6

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

Page 264: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLRConflictos en el analisis sintactico ascendente SLR

Ejemplo (1.- Gramatica de las expresiones aritmeticas. 26 / 39)

2.- Construccion de la coleccion canonica

Transiciones del conjunto I8: primera parte

I8 = { E → E + E •, E → E • + E, E → E • * E}

I8 tendra transiciones Ir a con + y *.

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

Page 265: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLRConflictos en el analisis sintactico ascendente SLR

Ejemplo (1.- Gramatica de las expresiones aritmeticas. 27 / 39)

2.- Construccion de la coleccion canonica

Transiciones del conjunto I8: segunda parte

Ir a(I8,+) = clausura({E → E + • E } )= {

E → E + • E,E → • E + E, E → • E * E,E → • ( E ), E → • id, E → • numero}

= I5

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

Page 266: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLRConflictos en el analisis sintactico ascendente SLR

Ejemplo (1.- Gramatica de las expresiones aritmeticas. 28 / 39)

2.- Construccion de la coleccion canonica

Transiciones del conjunto I8: tercera parte

Ir a(I8,*) = clausura({E → E * • E } )= {

E → E * • E,E → • E + E, E → • E * E,E → • ( E ), E → • id, E → • numero}

= I6

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

Page 267: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLRConflictos en el analisis sintactico ascendente SLR

Ejemplo (1.- Gramatica de las expresiones aritmeticas. 29 / 39)

2.- Construccion de la coleccion canonica

Transiciones del conjunto I9: primera parte

I9 = { E → E * E •, E → E • + E, E → E • * E}

I9 tendra transiciones Ir a con + y *.

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

Page 268: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLRConflictos en el analisis sintactico ascendente SLR

Ejemplo (1.- Gramatica de las expresiones aritmeticas. 30 / 39)

2.- Construccion de la coleccion canonica

Transiciones del conjunto I9: segunda parte

Ir a( I9,+) = clausura({E → E + • E }){E → E + • E, E → • E + E,E → • E * E, E → • ( E ),E → • id, E → • numero}

= I5

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

Page 269: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLRConflictos en el analisis sintactico ascendente SLR

Ejemplo (1.- Gramatica de las expresiones aritmeticas. 31 / 39)

2.- Construccion de la coleccion canonica

Transiciones del conjunto I9: tercera parte

Ir a( I9,*) = clausura({E → E * • E })E → E * • E), E → • E + E,E → • E * E, E → • ( E ),E → • id, E → • numero}

= I6

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

Page 270: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLRConflictos en el analisis sintactico ascendente SLR

Ejemplo (1.- Gramatica de las expresiones aritmeticas. 32 / 39)

2.- Construccion de la coleccion canonica

Transiciones del conjunto I10 = {E ( → ) • }

Ir a(I10, X) = ∅ ∀X ∈ V

El conjunto I10 no tiene transiciones.

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

Page 271: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLRConflictos en el analisis sintactico ascendente SLR

Ejemplo (1.- Gramatica de las expresiones aritmeticas. 33 / 39)

2.- Construccion de la coleccion canonica

Coleccion canonica de elementos-LR(0): primera parte

I0 = { E’ → • E, E → • E + E, E → • E * E,

E → • ( E ), E → • id, E → • numero }I1 = { E’ → E •, E → E • + E, E → E • * E }I2 = { E → ( • E), E → • E + E, E → • E * E,

E → • ( E ),E → • id, E → • numero }I3 = {E → id • }I4 = {E → numero • }

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

Page 272: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLRConflictos en el analisis sintactico ascendente SLR

Ejemplo (1.- Gramatica de las expresiones aritmeticas. 34 / 39)

2.- Construccion de la coleccion canonica

Coleccion canonica de elementos-LR(0): segunda parte

I5 = { E → E + • E, E → • E + E, E → • E * E,

E → • ( E ), E → • id, E → • numero }I6 = { E → E * • E, E → • E + E, E → • E * E,

E → • ( E ), E → • id, E → • numero }I7 = { E → ( E • ), E → E • + E, E → E • * E}I8 = { E → E + E •, E → E • + E, E → E • * E}I9 = { E → E * E •, E → E • + E, E → E • * E}I10 = {E ( → ) • }

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

Page 273: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLRConflictos en el analisis sintactico ascendente SLR

Ejemplo (1.- Gramatica de las expresiones aritmeticas. 35 / 39)

3.- Automata que reconoce los prefijos viables

Estado + * ( ) id numero E0 2 3 4 11 5 62 2 3 4 7345 2 3 4 86 2 3 4 97 5 6 108 5 69 5 6

10

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

Page 274: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLRConflictos en el analisis sintactico ascendente SLR

Ejemplo (1.- Gramatica de las expresiones aritmeticas. 36 / 39)

4.- Completar la parte accion: conjuntos auxiliares

Primero Siguiente

E’ “(”, id, numero $

E “(”, id, numero $, “)”, +, *,

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

Page 275: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLRConflictos en el analisis sintactico ascendente SLR

Ejemplo (1.- Gramatica de las expresiones aritmeticas. 37 / 39)

4.- Completar la parte accion

accion ir aEstado + * ( ) id numero $ E

0 d 2 d 3 d 41 d 5 d 6 ACEPTAR2 d 2 d 3 d 43 r 4 r 4 r 4 r 44 r 5 r 5 r 5 r 55 d 2 d 3 d 46 d 2 d 3 d 47 d 5 d 6 d 108 d 5, r 1 d 6, r 1 r 1 r 19 d 5, r 2 d 6, r 2 r 2 r 2

10 r 3 r 3 r 3 r 3

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

Page 276: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLRConflictos en el analisis sintactico ascendente SLR

Ejemplo (1.- Gramatica de las expresiones aritmeticas. 38 / 39)

4.- Completar la parte ir a

accion ir aEstado + * ( ) id numero $ E

0 d 2 d 3 d 4 11 d 5 d 6 ACEPTAR2 d 2 d 3 d 4 73 r 4 r 4 r 4 r 44 r 5 r 5 r 5 r 55 d 2 d 3 d 4 86 d 2 d 3 d 4 97 d 5 d 6 d 108 d 5, r 1 d 6, r 1 r 1 r 19 d 5, r 2 d 6, r 2 r 2 r 2

10 r 3 r 3 r 3 r 3

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

Page 277: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLRConflictos en el analisis sintactico ascendente SLR

Ejemplo (1.- Gramatica de las expresiones aritmeticas. 39 / 39)

La gramatica genera conflictos de desplazamiento-reduccionen los estados 8 y 9.

Los metodos LR-canonico y LALR evitan que se generen estosconflictos.

Tambien se puede disenar otra gramatica que tenga en cuentala mayor precedencia de la multiplicacion (*) sobre la suma(+).

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

Page 278: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLRConflictos en el analisis sintactico ascendente SLR

Ejercicio (Nueva gramatica de las expresiones aritmeticas)

Dada la siguiente gramatica

P = {(1) E → E + T(2) E → T(3) T → T * F(4) T → F(5) F → ( E )(6) F → identificador(7) F → numero

}comprueba que su tabla de analisis SLR no tiene conflictos

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

Page 279: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLRConflictos en el analisis sintactico ascendente SLR

Ejemplos (Conflictos en el analisis sintactico SLR)

Ejemplos de conflicto de desplazamiento - reduccion.

1.- Gramatica de las expresiones aritmeticas2.- Gramatica de sentencia de asignacion

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

Page 280: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLRConflictos en el analisis sintactico ascendente SLR

Ejemplo (2.- Gramatica de sentencia de asignacion 1 / 30)

P = {(1) S → L = R(2) S → R(3) L → * R(4) L → identificador(5) R → L

}

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

Page 281: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLRConflictos en el analisis sintactico ascendente SLR

Ejemplo (Prefijos viables 2 / 30)

Derivacion por la derecha

S ⇒1

L = R

⇒5

L = L

⇒3

L = * R

⇒5

L = * L

⇒4

L = * id

⇒4

id = * id

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

Page 282: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLRConflictos en el analisis sintactico ascendente SLR

Ejemplo (2.- Gramatica de sentencia de asignacion 3 / 30)

SignificadoL: l-value, representa una ubicacion.R: r-value, representa un valor que puede almacenarse en unaubicacion.*: “contenido de”.

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

Page 283: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLRConflictos en el analisis sintactico ascendente SLR

Ejemplo (2.- Gramatica de sentencia de asignacion 4 / 30)

1.- Ampliacion de la gramatica

P = {(1’) S’ → S(1) S → L = R(2) S → R(3) L → * R(4) L → identificador(5) R → L

}

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

Page 284: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLRConflictos en el analisis sintactico ascendente SLR

Ejemplo (2.- Gramatica de sentencia de asignacion 5 / 30)

2.- Construccion de la coleccion canonica

Conjunto I0: primera parte

I0 = clausura({S’ → • S })= {

S’ → • S,S → • L = R, S → • R,L → • * R, L → • identificador,R → • L}

El conjunto I0 tiene transiciones con S, L, R, * e identificador

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

Page 285: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLRConflictos en el analisis sintactico ascendente SLR

Ejemplo (2.- Gramatica de sentencia de asignacion 6 / 30)

2.- Construccion de la coleccion canonica

Transiciones del conjunto I0: segunda parte

Ir a(I0, S) = clausura({S’ → S • })= {S’ → S • }= I1

Ir a(I0, L) = clausura({S → L • = R, R → L • })= {S → L • = R, R → L • }= I2

Ir a(I0, R) = clausura({S → R • })= {S → R • }= I3

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

Page 286: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLRConflictos en el analisis sintactico ascendente SLR

Ejemplo (2.- Gramatica de sentencia de asignacion 7 / 30)

2.- Construccion de la coleccion canonica

Transiciones del conjunto I0: tercera parte

Ir a(I0, *) = clausura({L → * • R })= {

L → * • R, R → • L,L → • * R, L → • id}

= I4Ir a(I0, id) = clausura({L → id • })

= {L →id • }= I5

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

Page 287: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLRConflictos en el analisis sintactico ascendente SLR

Ejemplo (2.- Gramatica de sentencia de asignacion 8 / 30)

2.- Construccion de la coleccion canonica

Transiciones del conjunto I1 = {S’ → S • }

Ir a(I1, X) = ∅ ∀X ∈ V

El conjunto I1 no tiene transiciones.

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

Page 288: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLRConflictos en el analisis sintactico ascendente SLR

Ejemplo (2.- Gramatica de sentencia de asignacion 9 / 30)

2.- Construccion de la coleccion canonica

Transiciones del conjunto I2 = {S → L • = R, R → L • }

Ir a(I2, “=”) = clausura({S → L = • R })= {

S → L = • R, R → • L,L → • * R, L → •id}

= I6

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

Page 289: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLRConflictos en el analisis sintactico ascendente SLR

Ejemplo (2.- Gramatica de sentencia de asignacion 10 / 30)

2.- Construccion de la coleccion canonica

Transiciones del conjunto I3 = {S → R • }

Ir a(I3, X) = ∅ ∀X ∈ V

El conjunto I3 no tiene transiciones.

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

Page 290: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLRConflictos en el analisis sintactico ascendente SLR

Ejemplo (2.- Gramatica de sentencia de asignacion 11 / 30)

2.- Construccion de la coleccion canonica

Transiciones del conjunto I4: primera parte

I4 = {L → * • R, R → • L, L → • * R, L → • id }

Ir a(I4, R) = clausura({L → * R • })= {L → * R • }= I7

Ir a(I4, L) = clausura({R → L • })= {R → L • }= I8

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

Page 291: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLRConflictos en el analisis sintactico ascendente SLR

Ejemplo (2.- Gramatica de sentencia de asignacion 12 / 30)

2.- Construccion de la coleccion canonica

Transiciones del conjunto I4: segunda parte

I4 = {L → * • R, R → • L, L → • * R, L → • id }

Ir a(I4, *) = clausura({L → * • R})= I4

Ir a(I4,id) = clausura({L →id • })= I5

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

Page 292: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLRConflictos en el analisis sintactico ascendente SLR

Ejemplo (2.- Gramatica de sentencia de asignacion 13 / 30)

2.- Construccion de la coleccion canonica

Transiciones del conjunto I5 = {L →id • }

Ir a(I5, X) = ∅ ∀X ∈ V

El conjunto I5 no tiene transiciones.

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

Page 293: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLRConflictos en el analisis sintactico ascendente SLR

Ejemplo (2.- Gramatica de sentencia de asignacion 14 / 30)

2.- Construccion de la coleccion canonica

Transiciones del conjunto I6: primera parte

I6 = { S → L = • R, R → • L, L → • * R, L → •id }

Ir a(I6, R) = clausura({S → L = R • })= {S → L = R • }= I9

Ir a(I6, L) = clausura({R → L • })= I8

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

Page 294: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLRConflictos en el analisis sintactico ascendente SLR

Ejemplo (2.- Gramatica de sentencia de asignacion 15 / 30)

2.- Construccion de la coleccion canonica

Transiciones del conjunto I6: segunda parte

I6 = { S → L = • R, R → • L, L → • * R, L → •id }

Ir a(I6, *) = clausura({L → * • R})= I4

Ir a(I6,id) = clausura({L →id • }= I5

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

Page 295: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLRConflictos en el analisis sintactico ascendente SLR

Ejemplo (2.- Gramatica de sentencia de asignacion 16 / 30)

2.- Construccion de la coleccion canonica

Transiciones del conjunto I7 = {L → * R • }

Ir a(I7, X) = ∅ ∀X ∈ V

El conjunto I7 no tiene transiciones.

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

Page 296: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLRConflictos en el analisis sintactico ascendente SLR

Ejemplo (2.- Gramatica de sentencia de asignacion 17 / 30)

2.- Construccion de la coleccion canonica

Transiciones del conjunto I8 = {R → L • }

Ir a(I8, X) = ∅ ∀X ∈ V

El conjunto I8 no tiene transiciones.

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

Page 297: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLRConflictos en el analisis sintactico ascendente SLR

Ejemplo (2.- Gramatica de sentencia de asignacion 18 / 30)

2.- Construccion de la coleccion canonica

Transiciones del conjunto I9 = {S → L = R • }

Ir a(I9, X) = ∅ ∀X ∈ V

El conjunto I9 no tiene transiciones.

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

Page 298: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLRConflictos en el analisis sintactico ascendente SLR

Ejemplo (2.- Gramatica de sentencia de asignacion 19 / 30)

2.- Construccion de la coleccion canonica

Coleccion canonica de elementos LR(0): primera parte

I0 = { S’ → • S, S → • L = R, S → • R,

L → • * R, L → • identificador, R → • L }I1 = {S’ → S • }I2 = {S → L • = R, R → L • }I3 = {S → R • }I4 = {L → * • R, R → • L, L → • * R, L → • id }

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

Page 299: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLRConflictos en el analisis sintactico ascendente SLR

Ejemplo (2.- Gramatica de sentencia de asignacion 20 / 30)

2.- Construccion de la coleccion canonica

Coleccion canonica de elementos LR(0): segunda parte

I5 = {L →id • }I6 = { S → L = • R, R → • L, L → • * R, L → •id }I7 = {L → * R • }I8 = {R → L • }I9 = {S → L = R • }

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

Page 300: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLRConflictos en el analisis sintactico ascendente SLR

Ejemplo (2.- Gramatica de sentencia de asignacion 21 / 30)

3.- Automata que reconoce los prefijos viables

Estado = * id S L R

0 4 5 1 2 3

12 6

34 4 5 8 7

56 4 5 8 9

789

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

Page 301: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLRConflictos en el analisis sintactico ascendente SLR

Ejemplo (2.- Gramatica de sentencia de asignacion 22 / 30)

3.- Automata que reconoce los prefijos viables(*)

0

1

2

3

4

5

8

7

6 9

S

L

R

*

id

*

id

L

L

R

*

= R

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

Page 302: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLRConflictos en el analisis sintactico ascendente SLR

Ejemplo (2.- Gramatica de sentencia de asignacion 23 / 30)

4.- Completar la parte accion: conjuntos auxiliares

PRIMERO SIGUIENTE

S *, identificador $

L *, identificador $, =R *, identificador $, =

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

Page 303: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLRConflictos en el analisis sintactico ascendente SLR

Ejemplo (2.- Gramatica de sentencia de asignacion 24 / 30)

4.- Completar la parte accion

Accion Ir-a

Estado = * id $ S L R0 d 4 d 5 1 2 3

1 ACEPTAR

2 d 6 r 5 r 5

3 r 2

4 d 4 d 5 8 7

5 r 4 r 4

6 d 4 d 5 8 9

7 r 3 r 3

8 r 5 r 5

9 r 1

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

Page 304: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLRConflictos en el analisis sintactico ascendente SLR

Ejemplo (2.- Gramatica de sentencia de asignacion 25 / 30)

Pila Entrada Accion

0 id = * id $ d 5

0 id 5 = * id $ r L → id0 L 2 = * id$ Conflicto: d 6, r 5

Nota

En este caso, lo correcto es desplazar.

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

Page 305: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLRConflictos en el analisis sintactico ascendente SLR

Ejemplo (2.- Gramatica de sentencia de asignacion 26 / 30)

Si se desplaza: primera parte

Pila Entrada Accion

0 id = * id $ d 5

0 id 5 = * id $ r 4 L → id0 L 2 = * id $ d 6

0 L 2 = 6 * id $ d 4

0 L 2 = 6 * 4 id $ d 5

0 L 2 = 6 * 4 id 5 $ r 4 L → id0 L 2 = 6 * 4 L 8 $ r 5 R → L

0 L 2 = 6 * 4 R 7 $ r 3 L → * R

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

Page 306: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLRConflictos en el analisis sintactico ascendente SLR

Ejemplo (2.- Gramatica de sentencia de asignacion 27 / 30)

Si se desplaza: segunda parte

Pila Entrada Accion

0 L 2 = 6 L 8 $ r 5 R → L

0 L 2 = 6 R 9 $ r 1 S → L = R

0 S 1 $ Aceptar

El analisis termina satisfactoriamente.

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

Page 307: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLRConflictos en el analisis sintactico ascendente SLR

Ejemplo (2.- Gramatica de sentencia de asignacion 28 / 30)

Si se reduce

Pila Entrada Accion

0 id = * id $ d 5

0 id 5 = * id $ r 4 L → id0 L 2 = * id $ r 5 R → L

0 R 3 = * id $ Error

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

Page 308: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLRConflictos en el analisis sintactico ascendente SLR

Notas (2.- Gramatica de sentencia de asignacion 29 / 30)

Se intenta reducir

con la regla R → L en el estado 2y con todos los sımbolos de siguiente(R) = {=, $},

pero solamente deberıa reducir con el sımbolo $.

Se esta intentando una derivacion por la derecha que lagramatica no puede generar.

No existe ningun prefijo viable que empiece por R =.

(Vease el automata que reconoce los prefijos viables.)

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

Page 309: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente SLRConflictos en el analisis sintactico ascendente SLR

Notas (2.- Gramatica de sentencia de asignacion 30 / 30)

La gramatica no es ambigua.

El analisis sintactico SLR no es lo bastante potente

Los metodos LR-canonico y LALR evitan que aparezca esteconflicto.

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

Page 310: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Seccion actual

1 Introduccion

2 Analisis sintactico ascendente SLR

3 Analisis sintactico ascendente LR-canonico

4 Analisis sintactico ascendente LALR

5 Metodos de recuperacion de errores

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

Page 311: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Subseccion actual

3 Analisis sintactico ascendente LR-canonicoIntroduccionColeccion canonica de elementos - LR(1)Algoritmo de construccion de la tabla de analisis LR-canonicoEjemplos de analisis LR-canonicoInconvenientes del metodo LR-canonico

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

Page 312: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Contenido de la subseccion

3 Analisis sintactico ascendente LR-canonicoIntroduccion

DescripcionElemento-LR(1)Elemento-LR(1) valido para un prefijo viable

Coleccion canonica de elementos - LR(1)Algoritmo de construccion de la tabla de analisis LR-canonicoEjemplos de analisis LR-canonicoInconvenientes del metodo LR-canonico

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

Page 313: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LR-canonicoIntroduccion

Metodo LR-canonico

Es el metodo de analisis mas preciso de los tres metodos LR

Mucho mas complejo debido a la construccion de su coleccioncanonica.

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

Page 314: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Contenido de la subseccion

3 Analisis sintactico ascendente LR-canonicoIntroduccion

DescripcionElemento-LR(1)Elemento-LR(1) valido para un prefijo viable

Coleccion canonica de elementos - LR(1)Algoritmo de construccion de la tabla de analisis LR-canonicoEjemplos de analisis LR-canonicoInconvenientes del metodo LR-canonico

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

Page 315: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LR-canonicoIntroduccion

Definicion (Elemento-LR(1))

Si A → X1 X2 · · · Xn ∈ P y σ ∈ VT ∪ {$}, suselementos-LR(1) son:

[A → • X1 X2 · · · Xn, σ]

[A → X1 • X2 · · · Xn, σ]

[A → X1 X2 · · · • Xn, σ]

[A → X1 X2 · · · Xn •, σ]

Si A → ε ∈ P y σ ∈ VT ∪ {$}, su elemento-LR(1) es:

[A → •, σ]

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

Page 316: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LR-canonicoIntroduccion

Definicion (Partes de un elemento-LR(1))

[A→ β1 • β2︸ ︷︷ ︸(1)

, σ︸︷︷︸(2)

]

1.- Centro o corazon

2.- Sımbolo de anticipacion o lookahead

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

Page 317: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LR-canonicoIntroduccion

Nota (Agrupacion de elementos-LR(1))

Si los elementos-LR(1) tiene el mismo centro entonces sepueden agrupar:

[ A → β1 • β2, σ1 ][ A → β1 • β2, σ2 ]

[ A → β1 • β2, σ1, σ2 ]

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

Page 318: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Contenido de la subseccion

3 Analisis sintactico ascendente LR-canonicoIntroduccion

DescripcionElemento-LR(1)Elemento-LR(1) valido para un prefijo viable

Coleccion canonica de elementos - LR(1)Algoritmo de construccion de la tabla de analisis LR-canonicoEjemplos de analisis LR-canonicoInconvenientes del metodo LR-canonico

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

Page 319: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LR-canonicoIntroduccion

Definicion (Elemento-LR(1) valido para un prefijo viable)

[A → β1 • β2, σ] es valido para el prefijo viable αβ1 si

S∗⇒Dα A w ⇒

A→β1β2

α β1 β2 w

donde

w = σ w’

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

Page 320: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LR-canonicoIntroduccion

Ejemplo (Elemento-LR(1) valido para un prefijo viable 1 / 2)

P = {(1’) S’ −→ S(1) S −→ C C(2) C −→ a C(3) C −→ d

}

Derivacion por la derecha

S ⇒1′

S

⇒1

C C

⇒2

C a C

⇒3

C a d

⇒2

a C a d

⇒2

a a C a d

⇒3

a a d a d

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

Page 321: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LR-canonicoIntroduccion

Ejemplo (Elemento-LR(1) valido para un prefijo viable 2 / 2)

Prefijo viable: α β1 = a︸︷︷︸α

a︸︷︷︸β1

Elemento-LR(1) valido para el prefijo viable:

C︸︷︷︸A

→ a︸︷︷︸β1

• C︸︷︷︸β2

Derivacion por la derecha

S’+⇒ a︸︷︷︸

α

C︸︷︷︸A

a d︸︷︷︸w

⇒C−→aC

a︸︷︷︸α

a︸︷︷︸β1

C︸︷︷︸β2

a d︸︷︷︸w

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

Page 322: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Subseccion actual

3 Analisis sintactico ascendente LR-canonicoIntroduccionColeccion canonica de elementos - LR(1)Algoritmo de construccion de la tabla de analisis LR-canonicoEjemplos de analisis LR-canonicoInconvenientes del metodo LR-canonico

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

Page 323: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Contenido de la subseccion

3 Analisis sintactico ascendente LR-canonicoIntroduccionColeccion canonica de elementos - LR(1)

DefinicionFuncion clausuraFuncion ir aAlgoritmo de construccion de la coleccion canonicaEjemplo de construccion de la coleccion canonica

Algoritmo de construccion de la tabla de analisis LR-canonicoEjemplos de analisis LR-canonicoInconvenientes del metodo LR-canonico

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

Page 324: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LR-canonicoColeccion canonica de elementos - LR(1)

Definicion (Coleccion canonica de elementos-LR(1))

Esta compuesta por los conjuntos de elementos-LR(1) que sonvalidos para los prefijos viables de la gramatica.

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

Page 325: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LR-canonicoColeccion canonica de elementos - LR(1)

Coleccion canonica de elementos-LR(1)

Permite generar un automata finito determinista (AFD) quereconoce los prefijos viables de la gramatica.

Funciones auxiliares para construir la coleccion canonica.

Funcion clausura.Funcion Ir a.

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

Page 326: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Contenido de la subseccion

3 Analisis sintactico ascendente LR-canonicoIntroduccionColeccion canonica de elementos - LR(1)

DefinicionFuncion clausuraFuncion ir aAlgoritmo de construccion de la coleccion canonicaEjemplo de construccion de la coleccion canonica

Algoritmo de construccion de la tabla de analisis LR-canonicoEjemplos de analisis LR-canonicoInconvenientes del metodo LR-canonico

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

Page 327: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LR-canonicoColeccion canonica de elementos - LR(1)

Definicion (Funcion clausura)

Sea I un conjunto elementos-LR(1):

1.- I ⊆ clausura(I)2.- Si [A → α • B β, σ] ∈ clausura(I) y B → γ ∈ P

entonces [B → • γ, σ′] ∈ clausura(I)donde

σ′ ∈ primero(βσ)

Nota

Si β = ε entonces σ′ = σ.

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

Page 328: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LR-canonicoColeccion canonica de elementos - LR(1)

Ejemplo (Funcion clausura 1 / 2)

P = {(1’) S’ −→ S(1) S −→ C C(2) C −→ a C(3) C −→ d

}

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

Page 329: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LR-canonicoColeccion canonica de elementos - LR(1)

Ejemplo (Funcion clausura 2 / 2)

clausura({ [S’ → • S, $] }) = {[S’ → • S, $],[S → • C C, $],[C → • a C, a, d],[C → • d, a, d]}

= I0

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

Page 330: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Contenido de la subseccion

3 Analisis sintactico ascendente LR-canonicoIntroduccionColeccion canonica de elementos - LR(1)

DefinicionFuncion clausuraFuncion ir aAlgoritmo de construccion de la coleccion canonicaEjemplo de construccion de la coleccion canonica

Algoritmo de construccion de la tabla de analisis LR-canonicoEjemplos de analisis LR-canonicoInconvenientes del metodo LR-canonico

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

Page 331: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LR-canonicoColeccion canonica de elementos - LR(1)

Definicion (Funcion Ir a)

Sea I un conjunto elementos-LR(1) y X ∈ V = VN ∪ VT

Ir a(I, X) = clausura({ [A → α X • β, σ] | [A → α • X β, σ] ∈ I})

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

Page 332: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LR-canonicoColeccion canonica de elementos - LR(1)

Ejemplo (Funcion Ir a 1 / 4)

P = {(1’) S’ −→ S(1) S −→ C C(2) C −→ a C(3) C −→ d

}

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

Page 333: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LR-canonicoColeccion canonica de elementos - LR(1)

Ejemplo (Funcion Ir a 2 / 4)

I0 = clausura({ [S’ → • S, $] })= {

[S’ → • S, $],[S → • C C, $],[C → • a C, a, d],[C → • d, a, d]}

El conjunto I0 tiene transiciones Ir a con S, C, a y d.

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

Page 334: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LR-canonicoColeccion canonica de elementos - LR(1)

Ejemplo (Funcion Ir a 3 / 4)

Transiciones del conjunto I0: primera parte

Ir a(I0, S) = clausura({ [S’ → S •, $] })= { [S’ → S •, $] }= I1

Ir a(I0, C) = clausura({ [S → C • C, $] })= { [S → C • C, $],

[C → • a C, $], [C → • d, $] }= I2

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

Page 335: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LR-canonicoColeccion canonica de elementos - LR(1)

Ejemplo (Funcion Ir a 4 / 4)

Transiciones del conjunto I0: segunda parte

Ir a(I0, a) = clausura({ [C → a • C, a, d] })= {

[C → a • C, a, d],[C → • a C, a, d], [C → • d, a, d]}

= I3

Ir a(I0,d) = clausura({ [C → d •, a, d] })= { [C → d •, a, d] }= I4

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

Page 336: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Contenido de la subseccion

3 Analisis sintactico ascendente LR-canonicoIntroduccionColeccion canonica de elementos - LR(1)

DefinicionFuncion clausuraFuncion ir aAlgoritmo de construccion de la coleccion canonicaEjemplo de construccion de la coleccion canonica

Algoritmo de construccion de la tabla de analisis LR-canonicoEjemplos de analisis LR-canonicoInconvenientes del metodo LR-canonico

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

Page 337: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LR-canonicoColeccion canonica de elementos - LR(1)

Algoritmo (Construccion de la coleccion canonica)

InicioI0 ← clausura({ [S’ → • S, $] })C ← {I0} ∧ I0 no marcadopara cada I ∈ C ∧ I no marcado hacer

marcar Ipara cada X ∈ V hacer

I’ ← Ir a(I, X)si ( (I’ 6= ∅) ∧ (I’ /∈ C) )

entonces C ← C ∪ {I’} ∧ I’ no marcadofin si

fin parafin para

fin

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

Page 338: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LR-canonicoColeccion canonica de elementos - LR(1)

Notas (Construccion de la coleccion canonica)

Genera un automata finito determinista (AFD) que reconocelos prefijos viables de la gramatica.

Los elementos-LR(1) se agrupan en conjuntos que secorresponden con los estados del automata.

Todos los estados del automata son finales.

Los estados del automata se corresponderan con los estadosde la tabla de analisis sintactico LR-canonico.

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

Page 339: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Contenido de la subseccion

3 Analisis sintactico ascendente LR-canonicoIntroduccionColeccion canonica de elementos - LR(1)

DefinicionFuncion clausuraFuncion ir aAlgoritmo de construccion de la coleccion canonicaEjemplo de construccion de la coleccion canonica

Algoritmo de construccion de la tabla de analisis LR-canonicoEjemplos de analisis LR-canonicoInconvenientes del metodo LR-canonico

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

Page 340: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LR-canonicoColeccion canonica de elementos - LR(1)

Ejemplo (Construccion de la coleccion canonica 1 / 23)

Gramatica de contexto libre

P = {(1) S −→ C C(2) C −→ a C(3) C −→ d

}

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

Page 341: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LR-canonicoColeccion canonica de elementos - LR(1)

Ejemplo (Construccion de la coleccion canonica 2 / 23)

Amplicacion de la gramatica de contexto libre

P’ = {(1’) S’ −→ S(1) S −→ C C(2) C −→ a C(3) C −→ d

}

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

Page 342: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LR-canonicoColeccion canonica de elementos - LR(1)

Ejemplo (Construccion de la coleccion canonica 3 / 23)

Construccion del conjunto I0

I0 = clausura({ [S’ → • S, $] })= {

[S’ → • S, $],[S → • C C, $],[C → • a C, a, d],[C → • d, a, d]}

I0 tiene transiciones con S, C, a y d.

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

Page 343: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LR-canonicoColeccion canonica de elementos - LR(1)

Ejemplo (Construccion de la coleccion canonica 4 / 23)

Transiciones del conjunto I0: primera parte

Ir a(I0, S) = clausura({ [S’ → S •, $] })= { [S’ → S •, $] }= I1

Ir a(I0, C) = clausura({ [S → C • C, $] })= {

[S → C • C, $],[C → • a C, $], [C → • d, $]}

= I2

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

Page 344: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LR-canonicoColeccion canonica de elementos - LR(1)

Ejemplo (Construccion de la coleccion canonica 5 / 23)

Transiciones del conjunto I0: segunda parte

Ir a(I0, a) = clausura({ [C → a • C, a, d] })= {

[C → a • C, a, d],[C → • a C, a, d], [C → • d, a, d]}

= I3

Ir a(I0, d) = clausura({ [C → d •, a, d] })= { [C → d •, a, d] }= I4

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

Page 345: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LR-canonicoColeccion canonica de elementos - LR(1)

Ejemplo (Construccion de la coleccion canonica 6 / 23)

Automata que reconoce los prefijos viables

Transiciones de I0

0

1

2

3

4

S

a

d

C

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

Page 346: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LR-canonicoColeccion canonica de elementos - LR(1)

Ejemplo (Construccion de la coleccion canonica 7 / 23)

Transiciones del conjunto I1 = { [S’ → S •, $] }

Ir a(I1, X) = ∅ ∀X ∈ V

El conjunto I1 no tiene transiciones.

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

Page 347: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LR-canonicoColeccion canonica de elementos - LR(1)

Ejemplo (Construccion de la coleccion canonica 8 / 23)

Transiciones del conjunto I2: primera parte

I2 = { [S → C • C, $], [C → • a C, $], [C → • d, $] }

Ir a(I2, C) = clausura({ [S → C C •, $] })= { [S → C C •, $] }= I5

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

Page 348: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LR-canonicoColeccion canonica de elementos - LR(1)

Ejemplo (Construccion de la coleccion canonica 9 / 23)

Transiciones del conjunto I2: segunda parte

I2 = { [S → C • C, $], [C → • a C, $], [C → • d, $] }Ir a(I2, a) = clausura({ [C → a • C, $] })

= {[C → a • C, $],[C → • a C, $], [C → • d, $]}

= I6Ir a(I2, d) = clausura({ [C → d •, $] })

= { [C → d •, $] }= I7

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

Page 349: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LR-canonicoColeccion canonica de elementos - LR(1)

Ejemplo (Construccion de la coleccion canonica 10 / 23)

Automata que reconoce los prefijos viables

Transiciones de I2

0

1

2 6

5

7

3

4

S

a

d

C

C

d

a

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

Page 350: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LR-canonicoColeccion canonica de elementos - LR(1)

Ejemplo (Construccion de la coleccion canonica 11 / 23)

Transiciones del conjunto I3

I3 = { [C → a • C, a, d], [C → • a C, a, d], [C → • d, a, d] }

Ir a(I3, C) = clausura({ [C → a C •, a, d] })= { [C → a C •, a, d] }= I8

Ir a(I3, a) = clausura({ [C → a • C, a, d] })= I3

Ir a(I3, d) = clausura({ [C → d •, a, d] })= { [C → d •, a, d] }= I4

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

Page 351: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LR-canonicoColeccion canonica de elementos - LR(1)

Ejemplo (Construccion de la coleccion canonica 12 / 23)

Automata que reconoce los prefijos viables

Transiciones de I3

0

1

2

3

4

6

5

8

7

S

d

aa

d

C

C

C

d

a

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

Page 352: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LR-canonicoColeccion canonica de elementos - LR(1)

Ejemplo (Construccion de la coleccion canonica 13 / 23)

Transiciones del conjunto I4 = { [C → d •, a, d] }

Ir a(I4, X) = ∅ ∀X ∈ V

El conjunto I4 no tiene transiciones.

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

Page 353: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LR-canonicoColeccion canonica de elementos - LR(1)

Ejemplo (Construccion de la coleccion canonica 14 / 23)

Transiciones del conjunto I5 = { [S → C C •, $] }

Ir a(I5, X) = ∅ ∀X ∈ V

El conjunto I5 no tiene transiciones.

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

Page 354: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LR-canonicoColeccion canonica de elementos - LR(1)

Ejemplo (Construccion de la coleccion canonica 15 / 23)

Transiciones del conjunto I6

I6 = { [C → a • C, $], [C → • a C, $], [C → • d, $] }

Ir a(I6, C) = clausura({ [C → a C • , $]})= { [C → a C •, $] }= I9

Ir a(I6, a) = clausura({ [C → a • C, $] })= I6

Ir a(I6, d) = clausura({ [C → d •, a] })= I7

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

Page 355: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LR-canonicoColeccion canonica de elementos - LR(1)

Ejemplo (Construccion de la coleccion canonica 16 / 23)

Automata que reconoce los prefijos viables

Transiciones de I6

0

1

2

3

4

6

5

8

7

S

d

aa

d

C

C

C

a

dd

aC

9

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

Page 356: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LR-canonicoColeccion canonica de elementos - LR(1)

Ejemplo (Construccion de la coleccion canonica 17 / 23)

Transiciones del conjunto I7 = { [C → d •, $] }

Ir a(I7, X) = ∅ ∀X ∈ V

El conjunto I7 no tiene transiciones.

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

Page 357: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LR-canonicoColeccion canonica de elementos - LR(1)

Ejemplo (Construccion de la coleccion canonica 18 / 23)

Transiciones del conjunto I8 = { [C → a C •, a, d] }

Ir a(I8, X) = ∅ ∀X ∈ V

El conjunto I8 no tiene transiciones.

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

Page 358: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LR-canonicoColeccion canonica de elementos - LR(1)

Ejemplo (Construccion de la coleccion canonica 19 / 23)

Transiciones del conjunto I9 = { [S → C C •, $] }

Ir a(I9, X) = ∅ ∀X ∈ V

El conjunto I9 no tiene transiciones.

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

Page 359: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LR-canonicoColeccion canonica de elementos - LR(1)

Ejemplo (Construccion de la coleccion canonica 20 / 23)

Coleccion canonica de elementos - LR(1): primera parte

I0 = { [S’ → • S, $], [S → • C C, $],

[C → • a C, a, d], [C → • d, a, d] }I1 = { [S’ → S •, $] }I2 = { [S → C • C, $], [C → • a C, $], [C → • d, $] }I3 = { [C → a • C, a, d], [C → • a C, a, d], [C → • d, a, d] }I4 = { [C → d •, a, d] }

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

Page 360: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LR-canonicoColeccion canonica de elementos - LR(1)

Ejemplo (Construccion de la coleccion canonica 21 / 23)

Coleccion canonica de elementos - LR(1): segunda parte

I5 = { [S → C C •, $] }I6 = { [C → a • C, $], [C → • a C, $], [C → • d, $] }I7 = { [C → d •, $] }I8 = { [C → a C •, a, d] }I9 = { [C → a C •, $] }

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

Page 361: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LR-canonicoColeccion canonica de elementos - LR(1)

Ejemplo (Construccion de la coleccion canonica 22 / 23)

Automata que reconoce los prefijos viables

Estado a d S C

0 3 4 1 212 6 7 53 3 4 8456 6 7 9789

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

Page 362: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LR-canonicoColeccion canonica de elementos - LR(1)

Ejemplo (Construccion de la coleccion canonica 23 / 23)

Automata que reconoce los prefijos viables

0

1

2

3

4

6

5

8

7

S

d

aa

d

C

C

C

a

dd

aC

9

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

Page 363: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Subseccion actual

3 Analisis sintactico ascendente LR-canonicoIntroduccionColeccion canonica de elementos - LR(1)Algoritmo de construccion de la tabla de analisis LR-canonicoEjemplos de analisis LR-canonicoInconvenientes del metodo LR-canonico

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

Page 364: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LR-canonicoAlgoritmo de construccion de la tabla de analisis LR-canonico

Algoritmo (Construccion de la tabla LR-canonica 1 / 10)

1.- Ampliar la gramatica con la regla de produccion S’ → S.

2.- Construir la coleccion canonica de Elementos-LR(1).

3.- Generar el automata que reconoce los prefijos viables.

4.- Completar la parte accion.

5.- Completar la parte ir a.

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

Page 365: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LR-canonicoAlgoritmo de construccion de la tabla de analisis LR-canonico

Algoritmo (Construccion de la tabla LR-canonica 2 / 10)

1.- Ampliar la gramatica con la regla de produccion S’ → S.

- Evita que el sımbolo inicial aparezca en la parte derecha deuna regla de produccion.

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

Page 366: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LR-canonicoAlgoritmo de construccion de la tabla de analisis LR-canonico

Algoritmo (Construccion de la tabla LR-canonica 3 / 10)

2.- Construir la coleccion canonica de Elementos-LR(1).

- Se debe comenzar por I0 = clausura ({ [S’ → • S, $] })

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

Page 367: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LR-canonicoAlgoritmo de construccion de la tabla de analisis LR-canonico

Algoritmo (Construccion de la tabla LR-canonica 4 / 10)

3.- Generar el automata que reconoce los prefijos viables.

- Los conjuntos de elementos-LR(1) se corresponden con losestados del automata.

- Todos los estados del automata son finales.

- El estado inicial se corresponde con el conjunto de elementosque contenga a [S’ → • S, $], que generalmente es I0

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

Page 368: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LR-canonicoAlgoritmo de construccion de la tabla de analisis LR-canonico

Algoritmo (Construccion de la tabla LR-canonica 5 / 10)

4.- Completar la parte accion

4.1 Desplazar4.2 Reducir4.3 Aceptar4.4 Funcion de error

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

Page 369: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LR-canonicoAlgoritmo de construccion de la tabla de analisis LR-canonico

Algoritmo (Construccion de la tabla LR-canonica 6 / 10)

4.- Completar la parte accion:

4.1 DesplazarSi [A→ α • σβ, σ′] ∈ Ii ∧ σ ∈ VT ∧ Ir a(Ii ,σ) = Ijentonces accion[i, σ] = d j

1.- se desplaza el sımbolo σ desde la entrada a la pila2.- y se pasa al estado j.

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

Page 370: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LR-canonicoAlgoritmo de construccion de la tabla de analisis LR-canonico

Algoritmo (Construccion de la tabla LR-canonica 7 / 10)

4.- Completar la parte accion:

4.2.- Reducir.Si [A→ α•,σ] ∈ Ii entonces accion[i, σ] = r kdonde

k representa la regla de produccion k: A→ α ∈ P

Nota

No es necesario calcular el conjunto Siguiente(A)

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

Page 371: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LR-canonicoAlgoritmo de construccion de la tabla de analisis LR-canonico

Algoritmo (Construccion de la tabla LR-canonica 8 / 10)

4.- Completar la parte accion:

4.3.- AceptarSi [S’ → • S, $] ∈ Ii entonces accion[i, $] = Aceptar

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

Page 372: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LR-canonicoAlgoritmo de construccion de la tabla de analisis LR-canonico

Algoritmo (Construccion de la tabla LR-canonica 9 / 10)

4.- Completar la parte accion:

4.4.- Funcion de errorLas celdas vacıas de la parte accion se completaran confunciones de tratamiento de error.

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

Page 373: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LR-canonicoAlgoritmo de construccion de la tabla de analisis LR-canonico

Algoritmo (Construccion de la tabla LR-canonica 10 / 10)

5.- Completar la parte ir a

Si Ir a(Ii , A) = Ij ∧ A ∈ VN entonces ir a[i, A] = j

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

Page 374: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LR-canonicoAlgoritmo de construccion de la tabla de analisis LR-canonico

Ejercicio (Construccion de la tabla LR-canonica)

Las celdas vacıas de la parte ir a nunca se consultaran:¡demuestralo!.

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

Page 375: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Subseccion actual

3 Analisis sintactico ascendente LR-canonicoIntroduccionColeccion canonica de elementos - LR(1)Algoritmo de construccion de la tabla de analisis LR-canonicoEjemplos de analisis LR-canonicoInconvenientes del metodo LR-canonico

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

Page 376: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Contenido de la subseccion

3 Analisis sintactico ascendente LR-canonicoIntroduccionColeccion canonica de elementos - LR(1)Algoritmo de construccion de la tabla de analisis LR-canonicoEjemplos de analisis LR-canonico

Gramatica que reconoce L(a∗da∗d)Gramatica de sentencia de asignacionGramatica de las enumeraciones

Inconvenientes del metodo LR-canonico

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

Page 377: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LR-canonicoEjemplos de analisis LR-canonico

Ejemplo (Gramatica que reconoce L(a∗da∗d) 1 / 10)

P = {(1) S −→ C C(2) C −→ a C(3) C −→ d

}

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

Page 378: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LR-canonicoEjemplos de analisis LR-canonico

Ejemplo (Gramatica que reconoce L(a∗da∗d) 2 / 10)

1.- Ampliacion de la gramatica

P’ = {(1’) S’ −→ S(1) S −→ C C(2) C −→ a C(3) C −→ d

}

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

Page 379: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LR-canonicoEjemplos de analisis LR-canonico

Ejemplo (Gramatica que reconoce L(a∗da∗d) 3 / 10)

2.- Coleccion canonica: primera parte

I0 = { [S’ → • S, $], [S → • C C, $],

[C → • a C, a, d], [C → • d, a, d] }I1 = { [S’ → S •, $] }I2 = { [S → C • C, $], [C → • a C, $], [C → • d, $] }I3 = { [C → a • C, a, d], [C → • a C, a, d], [C → • d, a, d] }I4 = { [C → d •, a, d] }

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

Page 380: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LR-canonicoEjemplos de analisis LR-canonico

Ejemplo (Gramatica que reconoce L(a∗da∗d) 4 / 10)

2.- Coleccion canonica: segunda parte

I5 = { [S → C C •, $] }I6 = { [C → a • C, $], [C → • a C, $], [C → • d, $] }I7 = { [C → d •, $] }I8 = { [C → a C •, a, d] }I9 = { [C → a C •, $] }

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

Page 381: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LR-canonicoEjemplos de analisis LR-canonico

Ejemplo (Gramatica que reconoce L(a∗da∗d) 5 / 10)

3.- Automata que reconoce los prefijos viables

Representacion grafica

0

1

2

3

4

6

5

8

7

S

d

aa

d

C

C

C

a

dd

aC

9

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

Page 382: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LR-canonicoEjemplos de analisis LR-canonico

Ejemplo (Gramatica que reconoce L(a∗da∗d) 6 / 10)

3.- Automata que reconoce los prefijos viables

Representacion tabularEstado a d S C

0 3 4 1 2

12 6 7 5

3 3 4 8

456 6 7 9

789

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

Page 383: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LR-canonicoEjemplos de analisis LR-canonico

Ejemplo (Gramatica que reconoce L(a∗da∗d) 7 / 10)

4.- Completar la parte accion

Accion Ir-aEstado a d $ S C

0 d 3 d 4

1 ACEPTAR

2 d 6 d 7

3 d 3 d 4

4 r 3 r 35 r 16 d 6 d 7

7 r 38 r 2 r 29 r 2

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

Page 384: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LR-canonicoEjemplos de analisis LR-canonico

Ejemplo (Gramatica que reconoce L(a∗da∗d) 8 / 10)

5.- Completar la parte ir a

Accion Ir-aEstado a d $ S C

0 d 3 d 4 1 2

1 ACEPTAR

2 d 6 d 7 5

3 d 3 d 4 8

4 r 3 r 35 r 16 d 6 d 7 9

7 r 38 r 2 r 29 r 2

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

Page 385: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LR-canonicoEjemplos de analisis LR-canonico

Ejemplo (Gramatica que reconoce L(a∗da∗d) 9 / 10)

Analisis sintactico ascendente LR-canonico: primera parte

Pila Entrada Accion

0 a d a a d $ d 3

0 a 3 d a a d $ d 4

0 a 3 d 4 a a d $ r 3 C → d0 a 3 C 8 a a d $ r 2 C → a C

0 C 2 a a d $ d 6

0 C 2 a 6 a d $ d 6

0 C 2 a 6 a 6 d $ d 7

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

Page 386: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LR-canonicoEjemplos de analisis LR-canonico

Ejemplo (Gramatica que reconoce L(a∗da∗d) 10 / 10)

Analisis sintactico ascendente LR-canonico: segunda parte

Pila Entrada Accion

0 C 2 a 6 a 6 d 7 $ r 3 C → d0 C 2 a 6 a 6 C 9 $ r 2 C → a C

0 C 2 a 6 C 9 $ r 2 C → a C

0 C 2 C 5 $ r 1 S → C C

0 S 1 $ Aceptar

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

Page 387: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Contenido de la subseccion

3 Analisis sintactico ascendente LR-canonicoIntroduccionColeccion canonica de elementos - LR(1)Algoritmo de construccion de la tabla de analisis LR-canonicoEjemplos de analisis LR-canonico

Gramatica que reconoce L(a∗da∗d)Gramatica de sentencia de asignacionGramatica de las enumeraciones

Inconvenientes del metodo LR-canonico

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

Page 388: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LR-canonicoEjemplos de analisis LR-canonico

Ejemplo (2.- Gramatica de sentencia de asignacion 1 / 40)

P = {(1) S −→ L = R(2) S −→ R(3) L −→ * R(4) L −→ identificador(5) R −→ L

}

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

Page 389: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LR-canonicoEjemplos de analisis LR-canonico

Ejemplo (2.- Gramatica de sentencia de asignacion 2 / 40)

1.- Ampliacion de la gramatica

P’ = {(1’) S’ −→ S(1) S −→ L = R(2) S −→ R(3) L −→ * R(4) L −→ identificador(5) R −→ L

}

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

Page 390: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LR-canonicoEjemplos de analisis LR-canonico

Ejemplo (2.- Gramatica de sentencia de asignacion 3 / 40)

2.- Construccion de la coleccion canonica

Conjunto I0

I0 = clausura({ [S’ → • S, $] })= {

[S’ → • S, $],[S → • L = R, $], [S → • R, $],[L → • * R, =, $], [L → • identificador, =, $],[R → • L, $]}

I0 tiene transiciones con S, L, R, * e identificador.

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

Page 391: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LR-canonicoEjemplos de analisis LR-canonico

Ejemplo (2.- Gramatica de sentencia de asignacion 4 / 40)

2.- Construccion de la coleccion canonica

Automata que reconoce prefijos viables: estado inicial I0

0

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

Page 392: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LR-canonicoEjemplos de analisis LR-canonico

Ejemplo (2.- Gramatica de sentencia de asignacion 5 / 40)

2.- Construccion de la coleccion canonica

Transiciones del conjunto I0: primera parte

Ir a(I0, S) = clausura({ [S’ → S •, $] })= { [S’ → S •, $] }= I1

Ir a(I0, L) = clausura({ [S → L • = R, $], [R → L •, $] })= { [S → L • = R, $], [R → L •, $] }= I2

Ir a(I0, R) = clausura({ [S → R •, $] })= { [S → R •, $] }= I3

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

Page 393: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LR-canonicoEjemplos de analisis LR-canonico

Ejemplo (2.- Gramatica de sentencia de asignacion 6 / 40)

2.- Construccion de la coleccion canonica

Transiciones del conjunto I0: segunda parte

Ir a(I0, *) = clausura({ [L → * • R, =, $] })= {

[L → * • R, =, $], [R → • L, =, $],[L → • * R, =, $], [L → • id, =, $]}

= I4Ir a(I0, id) = clausura({ [L → id •, =, $] })

= { [L → id •, =, $] }= I5

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

Page 394: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LR-canonicoEjemplos de analisis LR-canonico

Ejemplo (2.- Gramatica de sentencia de asignacion 7 / 40)

2.- Construccion de la coleccion canonica

2.- Construccion de la coleccion canonica: transiciones de I0

0

12

3

4

5

S L

R

*

id

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

Page 395: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LR-canonicoEjemplos de analisis LR-canonico

Ejemplo (2.- Gramatica de sentencia de asignacion 8 / 40)

2.- Construccion de la coleccion canonica

Transiciones del conjunto I1 = { [S’ → S •, $] }

Ir a(I1, X) = ∅ ∀X ∈ V

El conjunto I1 no tiene transiciones.

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

Page 396: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LR-canonicoEjemplos de analisis LR-canonico

Ejemplo (2.- Gramatica de sentencia de asignacion 9 / 40)

2.- Construccion de la coleccion canonica

Transiciones del conjunto I2 = { [S → L • = R, $], [R → L•, $] }

Ir a(I2, =) = clausura({ [S → L = • R, $] })= {

[S → L = • R, $],[R → • L, $],[L → • * R, $], [L → • id, $]}

= I6

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

Page 397: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LR-canonicoEjemplos de analisis LR-canonico

Ejemplo (2.- Gramatica de sentencia de asignacion 10 / 40)

2.- Construccion de la coleccion canonica: transicion de I2

0

12

3

5

6

4

S L

R

*

id

=

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

Page 398: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LR-canonicoEjemplos de analisis LR-canonico

Ejemplo (2.- Gramatica de sentencia de asignacion 11 / 40)

2.- Construccion de la coleccion canonica

Transiciones del conjunto I3 = { [S → R •, $] }

Ir a(I3, X) = ∅ ∀X ∈ V

El conjunto I3 no tiene transiciones.

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

Page 399: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LR-canonicoEjemplos de analisis LR-canonico

Ejemplo (2.- Gramatica de sentencia de asignacion 12 / 40)

2.- Construccion de la coleccion canonica

Transiciones del conjunto I4: primera parte

I4 = {[L → * • R, =, $],[R → • L, =, $],[L → • * R, =, $], [L → • id, =, $]}

I4 tiene transiciones con R, L, * e id

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

Page 400: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LR-canonicoEjemplos de analisis LR-canonico

Ejemplo (2.- Gramatica de sentencia de asignacion 13 / 40)

2.- Construccion de la coleccion canonica

Transiciones del conjunto I4: segunda parte

Ir a(I4, R) = clausura({ [L → * R •, =, $] })= { [L → * R •, =, $] }= I7

Ir a(I4, L) = clausura({ [R → L •, =, $] })= { [R → L •, =, $] }= I8

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

Page 401: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LR-canonicoEjemplos de analisis LR-canonico

Ejemplo (2.- Gramatica de sentencia de asignacion 14 / 40)

2.- Construccion de la coleccion canonica

Transiciones del conjunto I4: tercera parte

Ir a(I4, *) = clausura({ [L → * • R, =, $] })= I4

Ir a(I4, id) = clausura({ [L → id •, =, $] }= I5

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

Page 402: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LR-canonicoEjemplos de analisis LR-canonico

Ejemplo (2.- Gramatica de sentencia de asignacion 15 / 40)

2.- Construccion de la coleccion canonica transiciones de I4

0

1

8

7

2

3

4

5

6

S L

R

**

id

L

R

id

=

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

Page 403: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LR-canonicoEjemplos de analisis LR-canonico

Ejemplo (2.- Gramatica de sentencia de asignacion 16 / 40)

2.- Construccion de la coleccion canonica

Transiciones del conjunto I5 = { [L → id •, =, $] }

Ir a(I5, X) = ∅ ∀X ∈ V

El conjunto I5 no tiene transiciones.

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

Page 404: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LR-canonicoEjemplos de analisis LR-canonico

Ejemplo (2.- Gramatica de sentencia de asignacion 17 / 40)

2.- Construccion de la coleccion canonica

Transiciones del conjunto I6: primera parte

I6 = {[S → L = • R, $],[R → • L, $],[L → • * R, $], [L → • id, $]}

I6 tiene transiciones con R, L, * e id

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

Page 405: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LR-canonicoEjemplos de analisis LR-canonico

Ejemplo (2.- Gramatica de sentencia de asignacion 18 / 40)

2.- Construccion de la coleccion canonica

Transiciones del conjunto I6: segunda parte

Ir a(I6, R) = clausura({ [S → L = R •, $] })= { [S → L = R •, $] }= I9

Ir a(I6, L) = clausura({ [R → L •, $] })= { [R → L •, $] }= I10

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

Page 406: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LR-canonicoEjemplos de analisis LR-canonico

Ejemplo (2.- Gramatica de sentencia de asignacion 19 / 40)

2.- Construccion de la coleccion canonica

Transiciones del conjunto I6: tercera parte

Ir a(I6, *) = clausura({ [S → L = • R, $}])= {

[L → * • R, $], [R → • L, $],[L → • * R, $], [L → • id, $]}

= I11

Ir a(I6, id) = clausura({ [L → id •, $] }= { [L → id •, $] }= I12

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

Page 407: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LR-canonicoEjemplos de analisis LR-canonico

Ejemplo (2.- Gramatica de sentencia de asignacion 20 / 40)

2.- Construccion de la coleccion canonica

Automata que reconoce prefijos viables: transiciones de I6

0

1

8

7

2

3

4

5

6 9

10

12

11

S L

R

**

id

L

R

id

R

L

id*

=

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

Page 408: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LR-canonicoEjemplos de analisis LR-canonico

Ejemplo (2.- Gramatica de sentencia de asignacion 21 / 40)

2.- Construccion de la coleccion canonica

Transiciones del conjunto I7 = { [L → * R •, =, $] }

Ir a(I7, X) = ∅ ∀X ∈ V

El conjunto I7 no tiene transiciones.

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

Page 409: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LR-canonicoEjemplos de analisis LR-canonico

Ejemplo (2.- Gramatica de sentencia de asignacion 22 / 40)

2.- Construccion de la coleccion canonica

Transiciones del conjunto I8 = { [R → L •, =, $] }

Ir a(I8, X) = ∅ ∀X ∈ V

El conjunto I8 no tiene transiciones.

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

Page 410: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LR-canonicoEjemplos de analisis LR-canonico

Ejemplo (2.- Gramatica de sentencia de asignacion 23 / 40)

2.- Construccion de la coleccion canonica

Transiciones del conjunto I9 = { [S → L = R •, $] }

Ir a(I9, X) = ∅ ∀X ∈ V

El conjunto I9 no tiene transiciones.

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

Page 411: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LR-canonicoEjemplos de analisis LR-canonico

Ejemplo (2.- Gramatica de sentencia de asignacion 24 / 40)

2.- Construccion de la coleccion canonica

Transiciones del conjunto I10 = { [R → L •, $] }

Ir a(I10, X) = ∅ ∀X ∈ V

El conjunto I10 no tiene transiciones.

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

Page 412: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LR-canonicoEjemplos de analisis LR-canonico

Ejemplo (2.- Gramatica de sentencia de asignacion 25 / 40)

2.- Construccion de la coleccion canonica

Transiciones del conjunto I11: primera parte

I11 = {[L → * • R, $],[R → • L, $],[L → • * R, $], [L → • id, $]}

I11 tiene transiciones con R, L, * e id

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

Page 413: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LR-canonicoEjemplos de analisis LR-canonico

Ejemplo (2.- Gramatica de sentencia de asignacion 26 / 40)

2.- Construccion de la coleccion canonica

Transiciones del conjunto I11: segunda parte

Ir a(I11, R) = clausura({ [L → * R •, $] })= { [L → * R •, $] }= I13

Ir a(I11, L) = clausura({ [R → L •, $] })= I10

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

Page 414: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LR-canonicoEjemplos de analisis LR-canonico

Ejemplo (2.- Gramatica de sentencia de asignacion 27 / 40)

2.- Construccion de la coleccion canonica

Transiciones del conjunto I11: tercera parte

Ir a(I11, *) = clausura({ [S → L = • R, $] })= I11

Ir a(I11, id) = clausura({ [L → identificador •, $] }= I12

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

Page 415: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LR-canonicoEjemplos de analisis LR-canonico

Ejemplo (2.- Gramatica de sentencia de asignacion 28 / 40)

2.- Construccion de la coleccion canonica

Automata que reconoce prefijos viables: transiciones de I11

0

1

8

7

2

3

4

5

6 9

10

11

13

12

S L

R

**

id

L

R

id

R

R

L

L

id

id

*

*

=

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

Page 416: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LR-canonicoEjemplos de analisis LR-canonico

Ejemplo (2.- Gramatica de sentencia de asignacion 29 / 40)

2.- Construccion de la coleccion canonica

Transiciones del conjunto I12 = { [L → id •, $] }

Ir a(I12, X) = ∅ ∀X ∈ V

El conjunto I12 no tiene transiciones.

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

Page 417: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LR-canonicoEjemplos de analisis LR-canonico

Ejemplo (2.- Gramatica de sentencia de asignacion 30 / 40)

2.- Construccion de la coleccion canonica

Transiciones del conjunto I13 = { [L → * R •, $] }

Ir a(I13, X) = ∅ ∀X ∈ V

El conjunto I13 no tiene transiciones.

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

Page 418: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LR-canonicoEjemplos de analisis LR-canonico

Ejemplo (2.- Gramatica de sentencia de asignacion 31 / 40)

2.- Construccion de la coleccion canonica

Coleccion canonica de elementos - LR(1): primera parte

I0 = { [S’ → • S, $], [S → • L = R, $], [S → • R, $],

[L → • * R, =, $], [L → • id, =, $], [R → • L, $] }I1 = { [S’ → S •, $] }I2 = { [S → L • = R, $], [R → L •, $] }I3 = { [S → R •, $] }

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

Page 419: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LR-canonicoEjemplos de analisis LR-canonico

Ejemplo (2.- Gramatica de sentencia de asignacion 32 / 40)

2.- Construccion de la coleccion canonica

Coleccion canonica de elementos - LR(1): segunda parte

I4 = { [L → * • R, =, $], [R → • L, =, $],

[L → • * R, =, $], [L → • id, =, $] }I5 = { [L → id •, =, $] }I6 = { [S → L = • R, $], [R → • L, $],

[L → • * R, $], [L → • id, $] }

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

Page 420: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LR-canonicoEjemplos de analisis LR-canonico

Ejemplo (2.- Gramatica de sentencia de asignacion 33 / 40)

2.- Construccion de la coleccion canonica

Coleccion canonica de elementos - LR(1): tercera parte

I7 = { [L → * R •, =, $] }I8 = { [R → L •, =, $] }I9 = { [S → L = R •, $]

I10 = { [R → L •, $] }

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

Page 421: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LR-canonicoEjemplos de analisis LR-canonico

Ejemplo (2.- Gramatica de sentencia de asignacion 34 / 40)

2.- Construccion de la coleccion canonica

Coleccion canonica de elementos - LR(1): cuarta parte

I11 = { [L → * • R, $], [R → • L, $],

[L → • * R, $], [L → • id, $] }I12 = { [L → id •, $] }I13 = { [L → * R •, $] }

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

Page 422: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LR-canonicoEjemplos de analisis LR-canonico

Ejemplo (2.- Gramatica de sentencia de asignacion 35 / 40)

3.- Automata que reconoce los prefijos viables

0

1

8

7

2

3

4

5

6 9

10

11

13

12

S L

R

**

id

L

R

id

R

R

L

L

id

id

*

*

=

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

Page 423: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LR-canonicoEjemplos de analisis LR-canonico

Ejemplo (2.- Gramatica de sentencia de asignacion 36 / 40)

3.- Automata que reconoce los prefijos viables

Estado = * id S L R

0 4 5 1 2 312 634 4 5 8 756 11 12 10 9789

1011 11 12 10 131213

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

Page 424: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LR-canonicoEjemplos de analisis LR-canonico

Ejemplo (2.- Gramatica de sentencia de asignacion 37 / 40)

4.- Completar la parte accion

Accion Ir-a

Estado = * id $ S L R0 d 4 d 51 ACEPTAR2 d 6 r 53 r 24 d 4 d 55 r 4 r 46 d 11 d 127 r 3 r 38 r 5 r 59 r 1

10 r 511 d 11 d 1212 r 413 r 3

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

Page 425: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LR-canonicoEjemplos de analisis LR-canonico

Ejemplo (2.- Gramatica de sentencia de asignacion 38 / 40)

5.- Completar la parte ir a

Accion Ir-a

Estado = * id $ S L R0 d 4 d 5 1 2 31 ACEPTAR2 d 6 r 53 r 24 d 4 d 5 8 75 r 4 r 46 d 11 d 12 10 97 r 3 r 38 r 5 r 59 r 1

10 r 511 d 11 d 12 10 1312 r 413 r 3

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

Page 426: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LR-canonicoEjemplos de analisis LR-canonico

Ejemplo (2.- Gramatica de sentencia de asignacion 39 / 40)

Analisis sintactico LR-canonico: primera parte

Pila Entrada Accion

0 id = * id $ d 5

0 id 5 = * id $ r 4 L → id0 L 2 = * id $ d 6

0 L 2 = 6 * id $ d 11

0 L 2 = 6 * 11 id $ d 12

0 L 2 = 6 * 11 id 12 $ r 4 L → id0 L 2 = 6 * 11 L 10 $ r 5 R → L

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

Page 427: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LR-canonicoEjemplos de analisis LR-canonico

Ejemplo (2.- Gramatica de sentencia de asignacion 40 / 40)

Analisis sintactico LR-canonico: segunda parte

Pila Entrada Accion0 L 2 = 6 * 11 R 13 $ r 3 L → * R

0 L 2 = 6 L 10 $ r 5 R → L

0 L 2 = 6 R 9 $ r 1 S → L = R

0 S 1 $ Aceptar

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

Page 428: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Contenido de la subseccion

3 Analisis sintactico ascendente LR-canonicoIntroduccionColeccion canonica de elementos - LR(1)Algoritmo de construccion de la tabla de analisis LR-canonicoEjemplos de analisis LR-canonico

Gramatica que reconoce L(a∗da∗d)Gramatica de sentencia de asignacionGramatica de las enumeraciones

Inconvenientes del metodo LR-canonico

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

Page 429: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LR-canonicoEjemplos de analisis LR-canonico

Ejemplo (3.- Gramatica de las enumeraciones 1 / 25)

P = {(1) S → S D(2) S → ε(3) D → enum identificador { L } ;(4) L → identificador(5) L → L , identificador

}

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

Page 430: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LR-canonicoEjemplos de analisis LR-canonico

Ejemplo (3.- Gramatica de las enumeraciones 2 / 25)

1.- Ampliacion de la gramatica

P’ = {(1’) S’ → S(1) S → S D(2) S → ε(3) D → enum identificador { L };(4) L → identificador(5) L → L , identificador

}

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

Page 431: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LR-canonicoEjemplos de analisis LR-canonico

Ejemplo (3.- Gramatica de las enumeraciones 3 / 25)

2.- Construccion de la coleccion canonica

Construccion del conjunto I0

I0 = clausura({[S’ → • S, $] })= {

[S’ → • S, $],[S → • S D, $, enum][S → •, $, enum]}

I0 tendra una transicion Ir a con S.

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

Page 432: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LR-canonicoEjemplos de analisis LR-canonico

Ejemplo (3.- Gramatica de las enumeraciones 4 / 25)

2.- Construccion de la coleccion canonica

Transiciones del conjunto I0

Ir a(I0,S) = clausura({ [S’ → S •, $],[S → S • D, $, enum]})

= {[S’ → S •, $],[S → S • D, $, enum],[D → • enum id { L } ;, $, enum]}

= I1

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

Page 433: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LR-canonicoEjemplos de analisis LR-canonico

Ejemplo (3.- Gramatica de las enumeraciones 5 / 25)

2.- Construccion de la coleccion canonica

Transiciones del conjunto I1

I1 = { [S’ → S •, $], [S → S • D, $, enum],

[D → • enum id { L } ;, $, enum] }

Ir a(I1,D) = clausura({[S → S D •, $, enum]})= {[S → S D •, $, enum] }= I2

Ir a(I1,enum) = clausura({[D → enum • id { L } ;, $, enum] })= {[D → enum • id { L } ;, $, enum] }= I3

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

Page 434: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LR-canonicoEjemplos de analisis LR-canonico

Ejemplo (3.- Gramatica de las enumeraciones 6 / 25)

2.- Construccion de la coleccion canonica

Transiciones del conjunto I2 = {[S → S D •, $, enum] }

Ir a(I2, X) = ∅ ∀X ∈ V

El conjunto I2 no tiene transiciones.

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

Page 435: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LR-canonicoEjemplos de analisis LR-canonico

Ejemplo (3.- Gramatica de las enumeraciones 7 / 25)

2.- Construccion de la coleccion canonica

Transiciones del conjunto I3

I3 = {[D → enum • id { L } ;, $, enum] }

Ir a(I3,id) = clausura({[D → enum id • { L } ;, $, enum]})= {[D → enum id • { L } ;, $, enum] }= I4

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

Page 436: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LR-canonicoEjemplos de analisis LR-canonico

Ejemplo (3.- Gramatica de las enumeraciones 8 / 25)

2.- Construccion de la coleccion canonica

Transiciones del conjunto I4

I4 = {[D → enum id • { L } ;, $, enum] }

Ir a(I4,{) = clausura({[D → enum id { • L } ;, $, enum]})= {

[D → enum id { • L } ;, $, enum],[L → • id, }, “,”][L → • L , id, }, “,” ]}

= I5

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

Page 437: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LR-canonicoEjemplos de analisis LR-canonico

Ejemplo (3.- Gramatica de las enumeraciones 9 / 25)

2.- Construccion de la coleccion canonica

Transiciones del conjunto I5: primera parte

I5 = { [D → enum id { • L } ;, $, enum],

[L → • id, }, “,”] , [L → • L , id, }, “,” ] }

Ir a(I5,L) = clausura({[D → enum id { L • };, $, enum],[L → • L , id, }, “,” ] } )

= { [D → enum id { L • } ;, $, enum],[L → L • , id, }, “,” ] }

= I6

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

Page 438: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LR-canonicoEjemplos de analisis LR-canonico

Ejemplo (3.- Gramatica de las enumeraciones 10 / 25)

2.- Construccion de la coleccion canonica

Transiciones del conjunto I5: segunda parte

I5 = { [D → enum id { • L } ;, $, enum],

[L → • id, }, “,”] , [L → L • , id, }, “,” ] }

Ir a(I5,id) = clausura({ [L → id •, }, “,”] })= { [L → id • , }, “,”] }= I7

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

Page 439: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LR-canonicoEjemplos de analisis LR-canonico

Ejemplo (3.- Gramatica de las enumeraciones 11 / 25)

2.- Construccion de la coleccion canonica

Transiciones del conjunto I6

I6 = { [D → enum id { L • } ;, $, enum],

[L → • L , id, }, “,” ] }Ir a(I6,}) = clausura({[D → enum id {L} • ;, $, enum]})

= {[D → enum id { L } • ;, $, enum]}= I8

Ir a(I6,“,”) = clausura({[L → L • , id, }, “,” ]})= {[L → L • , id, }, “,”]}= I9

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

Page 440: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LR-canonicoEjemplos de analisis LR-canonico

Ejemplo (3.- Gramatica de las enumeraciones 12 / 25)

2.- Construccion de la coleccion canonica

Transiciones del conjunto I7 = { [L → id • , }, “,”] }

Ir a(I7, X) = ∅ ∀X ∈ V

El conjunto I7 no tiene transiciones.

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

Page 441: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LR-canonicoEjemplos de analisis LR-canonico

Ejemplo (3.- Gramatica de las enumeraciones 13 / 25)

2.- Construccion de la coleccion canonica

Transiciones del conjunto I8

I8 = {[D → enum id { L } • ;, $, enum]}Ir a(I8,“;”) = clausura({[D → enum id {L}; • , $, enum]})

= {[D → enum id { L } ; • , $, enum]}= I10

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

Page 442: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LR-canonicoEjemplos de analisis LR-canonico

Ejemplo (3.- Gramatica de las enumeraciones 14 / 25)

2.- Construccion de la coleccion canonica

Transiciones del conjunto I9

I9 = {[L → L • , id, }, “,”]}

Ir a(I9,id) = clausura({[L → L , id •, }, “,”]})= {[L → L , id •, }, “,”]}= I11

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

Page 443: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LR-canonicoEjemplos de analisis LR-canonico

Ejemplo (3.- Gramatica de las enumeraciones 15 / 25)

2.- Construccion de la coleccion canonica

Transiciones del conjunto I10

I10 = {[D → enum id { L } ; • , $, enum]}

Ir a(I10, X) = ∅ ∀X ∈ V

El conjunto I10 no tiene transiciones.

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

Page 444: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LR-canonicoEjemplos de analisis LR-canonico

Ejemplo (3.- Gramatica de las enumeraciones 16 / 25)

2.- Construccion de la coleccion canonica

Transiciones del conjunto I11

I11 = {[L → L , id •, }, “,”]}

Ir a(I11, X) = ∅ ∀X ∈ V

El conjunto I11 no tiene transiciones.

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

Page 445: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LR-canonicoEjemplos de analisis LR-canonico

Ejemplo (3.- Gramatica de las enumeraciones 17 / 25)

2.- Construccion de la coleccion canonica

Coleccion canonica: primera parte

I0 = { [S’ → • S, $],

[S → • S D, $, enum] [S → •, $, enum] }I1 = { [S’ → S •, $], [S → S • D, $, enum],

[D → • enum id { L } ;, $, enum] }I2 = {[S → S D •, $, enum] }I3 = {[D → enum • id { L } ;, $, enum] }

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

Page 446: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LR-canonicoEjemplos de analisis LR-canonico

Ejemplo (3.- Gramatica de las enumeraciones 18 / 25)

2.- Construccion de la coleccion canonica

Coleccion canonica: segunda parte

I4 = {[D → enum id • { L } ;, $, enum] }I5 = { [D → enum id { • L } ;, $, enum],

[L → • id, }, “,”] , [L → L • , id, }, “,” ] }I6 = { [D → enum id { L • } ;, $, enum],

[L → • L , id, }, “,” ] }I7 = { [L → id • , }, “,”] }

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

Page 447: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LR-canonicoEjemplos de analisis LR-canonico

Ejemplo (3.- Gramatica de las enumeraciones 19 / 25)

2.- Construccion de la coleccion canonica

Coleccion canonica: tercera parte

I8 = {[D → enum id { L } • ;, $, enum]}I9 = {[L → L • , id, }, “,”]}I10 = {[D → enum id { L } ; • , $, enum]}I11 = {[L → L , id •, }, “,”]}

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

Page 448: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LR-canonicoEjemplos de analisis LR-canonico

Ejemplo (3.- Gramatica de las enumeraciones 20 / 25)

P’ = {(1’) S’ → S(1) S → S D(2) S → ε(3) D → enum identificador { L } ;(4) L → identificador(5) L → L , identificador

}

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

Page 449: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LR-canonicoEjemplos de analisis LR-canonico

Ejemplo (3.- Gramatica de las enumeraciones 21 / 25)

3.-Automata que reconoce los prefijos viables

Estado enum id { } ; , $ S D L

0 11 3 223 44 55 7 66 8 978 109 11

1011

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

Page 450: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LR-canonicoEjemplos de analisis LR-canonico

Ejemplo (3.- Gramatica de las enumeraciones 22 / 25)

4.- Completar la parte accion

Accion Ir-aEstado enum id { } ; , $ S D L

0 r 2 r 21 d 3 ACEPTAR2 r 1 r 13 d 44 d 55 d 76 d 8 d 97 r 4 r 48 d 109 d 11

10 r 3 r 311 r 5 r 5

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

Page 451: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LR-canonicoEjemplos de analisis LR-canonico

Ejemplo (3.- Gramatica de las enumeraciones 23 / 25)

5.- Completar la parte ir a

Accion Ir-aEstado enum id { } ; , $ S D L

0 r 2 r 2 11 d 3 ACEPTAR 22 r 1 r 13 d 44 d 55 d 7 66 d 8 d 97 r 4 r 48 d 109 d 11

10 r 3 r 311 r 5 r 5

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

Page 452: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LR-canonicoEjemplos de analisis LR-canonico

Ejemplo (3.- Gramatica de las enumeraciones 24 / 25)

Analisis sintactico LR-canonico: primera parte

Pila Entrada Accion0 enum id { id , id } ; $ r 2 S → ε0 S 1 enum id { id , id } ; $ d 30 S 1 enum 3 id { id , id } ; $ d 40 S 1 enum 3 id 4 { id , id } ; $ d 50 S 1 enum 3 id 4 { 5 id , id } ; $ d 70 S 1 enum 3 id 4 { 5 id 7 , id } ; $ r 4 L → id0 S 1 enum 3 id 4 { 5 L 6 , id } ; $ d 9

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

Page 453: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LR-canonicoEjemplos de analisis LR-canonico

Ejemplo (3.- Gramatica de las enumeraciones 25 / 25)

Analisis sintactico LR-canonico: segunda parte

Pila Entrada Accion0 S 1 enum 3 id 4 { 5 L 6 , 9 id } ; $ d 11

0 S 1 enum 3 id 4 { 5 L 6 , 9 id 11 } ; $ r 5 L → L , id0 S 1 enum 3 id 4 { 5 L 6 } ; $ d 8

0 S 1 enum 3 id 4 { 5 L 6 } 8 ; $ d 10

0 S 1 enum 3 id 4 { 5 L 6 } 8 ; 10 $ r 3 D → enum id {L} ;0 S 1 D 2 $ r 1 S → S D

0 S 1 $ Aceptar

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

Page 454: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Subseccion actual

3 Analisis sintactico ascendente LR-canonicoIntroduccionColeccion canonica de elementos - LR(1)Algoritmo de construccion de la tabla de analisis LR-canonicoEjemplos de analisis LR-canonicoInconvenientes del metodo LR-canonico

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

Page 455: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LR-canonicoInconvenientes del metodo LR-canonico

Inconvenientes del metodo LR-canonico

La construccion de la coleccion canonica de elementos LR(1)es un proceso largo y tedioso.

La tabla de analisis LR-canonico tiene muchos estados.

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

Page 456: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Seccion actual

1 Introduccion

2 Analisis sintactico ascendente SLR

3 Analisis sintactico ascendente LR-canonico

4 Analisis sintactico ascendente LALR

5 Metodos de recuperacion de errores

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

Page 457: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Subseccion actual

4 Analisis sintactico ascendente LALRDescripcionColeccion canonica de elementos-LALR(1)Conflictos

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

Page 458: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LALRDescripcion

Metodo LALR

LALR: Look Ahead Left to Right

Analisis sintactico con sımbolo de anticipacion.

EstrategiaSe basa en la unificacion de conjuntos de elementos-LR(1)que tienen los mismos centros.

PotenciaMas potente que el metodo de analisis SLRMenos potente que el metodo de analisis LR-canonico

Tamano de la tablaLa tabla LALR tiene el mismo tamano que la tabla SLR.

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

Page 459: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LALRDescripcion

Metodo LALR: estrategia

Unificacion de conjuntos de elementos-LR(1) con los mismoscentros

Ii = {[ A1 → α1 • β1, σ1 ], · · · , [ AN → αN • βN , σN ]}Ij = {[ A1 → α1 • β1, σ′1 ], · · · , [ AN → αN • βN , σ′N ]}

Ii−j = {[ A1 → α1 • β1, σ1, σ′1 ], · · · , [ AN → αN • βN , σN , σ

′N ]}

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

Page 460: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LALRDescripcion

Nota (Metodo LALR: estrategia)

Si dos estados se unifican entonces

- tambien se unifican los estados que se alcanzan con lastransiciones de la funcion Ir a,

- porque dicha funcion solamente depende de los centros.

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

Page 461: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LALRDescripcion

Metodo LALR: estrategia

La unificacion de conjuntos de elementos - LR(1) provoca

la unificacion de estados del automata que reconoce losprefijos viablesy la unificacion de estados de la tabla de analisis LR.

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

Page 462: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Subseccion actual

4 Analisis sintactico ascendente LALRDescripcionColeccion canonica de elementos-LALR(1)Conflictos

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

Page 463: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Contenido de la subseccion

4 Analisis sintactico ascendente LALRDescripcionColeccion canonica de elementos-LALR(1)

DefinicionMetodos de construccionEjemplos de analisis sintactico LALR

Conflictos

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

Page 464: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LALRColeccion canonica de elementos-LALR(1)

Definicion (Coleccion canonica de elementos-LALR(1))

Esta compuesta por la unificacion de los conjuntos deelementos LR(1) que tiene los mismos centros.

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

Page 465: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Contenido de la subseccion

4 Analisis sintactico ascendente LALRDescripcionColeccion canonica de elementos-LALR(1)

DefinicionMetodos de construccionEjemplos de analisis sintactico LALR

Conflictos

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

Page 466: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LALRColeccion canonica de elementos-LALR(1)

Metodos de construccion

1.- Construccion completa de la coleccion canonica LR(1) yunificacion final de los conjuntos de elementos-LR(1) con losmismos centros.

2.- Construccion paulatina de la coleccion canonica LR(1) yunificacion en cada paso de los conjuntos deelementos-LR(1) con los mismos centros (*).

3.- Construccion de los nucleos de los conjuntos de elementos -LR(0) y posterior propagacion de los sımbolos deanticipacion (*).

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

Page 467: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LALRColeccion canonica de elementos-LALR(1)

Nota (Metodos de construccion)

1.- Solamente se van a mostrar ejemplos del primero metodo.

2.- La descripcion del segundo metodo se puede consultar en ellibro de A. B. Pyster.

3.- La descripcion del tercer metodo se puede consultar en el librode A. V. Aho.

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

Page 468: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Contenido de la subseccion

4 Analisis sintactico ascendente LALRDescripcionColeccion canonica de elementos-LALR(1)

DefinicionMetodos de construccionEjemplos de analisis sintactico LALR

Conflictos

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

Page 469: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LALRColeccion canonica de elementos-LALR(1)

Ejemplos (Analisis sintactico LALR)

1.- Gramatica que genera el lenguaje L(a∗ d a∗ d)

2.- Gramatica de la sentencia de asignacion

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

Page 470: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LALRColeccion canonica de elementos-LALR(1)

Ejemplos (Analisis sintactico LALR)

1.- Gramatica que genera el lenguaje L(a∗ d a∗ d)

2.- Gramatica de la sentencia de asignacion

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

Page 471: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LALRColeccion canonica de elementos-LALR(1)

Ejemplo (1.- Gramatica que genera L(a∗da∗d) 1 / 19)

P = {(1’) S’ −→ S(1) S −→ C C(2) C −→ a C(3) C −→ d

}

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

Page 472: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LALRColeccion canonica de elementos-LALR(1)

Ejemplo (1.- Gramatica que genera L(a∗da∗d) 2 / 19)

Coleccion canonica de elementos LR(1): primera parte

I0 = {[S’ → • S, $], [S → • C C, $],

[C → • a C, a , d], [C → • d, a , d]}I1 = {[S’ → S •, $]}I2 = {[S → C • C, $], [C → • a C, $], [C → • d, $]}I3 = {[C → a • C, a , d], [C → • a C, a , d],

[C → • d, a , d]}I4 = {[C → d •, a , d]}

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

Page 473: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LALRColeccion canonica de elementos-LALR(1)

Ejemplo (1.- Gramatica que genera L(a∗da∗d) 3 / 19)

Coleccion canonica de elementos LR(1): segunda parte

I5 = {[S → C C •, $]}I6 = {[C → a • C, $], [C → • a C, $], [C → • d, $]}I7 = {[C → d •, $]}I8 = {[C → a C •, a , d]}I9 = {[C → a C •, $]}

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

Page 474: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LALRColeccion canonica de elementos-LALR(1)

Ejemplo (1.- Gramatica que genera L(a∗da∗d) 4 / 19)

Se unifican los conjuntos de elementos LR(1) que tengan losmismos centros

Al unificar los estados, tambien se unifican los estados que sealcancen mediante transiciones con la funcion Ir a.

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

Page 475: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LALRColeccion canonica de elementos-LALR(1)

Ejemplo (1.- Gramatica que genera L(a∗da∗d) 5 / 19)

Unificacion de los conjuntos I3 e I6

I3 = {[C → a • C, a , d], [C → • a C, a , d],[C → • d, a , d]}

I6 = {[C → a • C, $], [C → • a C, $],[C → • d, $]}

I3−6 = {[C → a • C, a , d, $], [C → • a C, a , d, $],[C → • d, a , d, $]}

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

Page 476: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LALRColeccion canonica de elementos-LALR(1)

Ejemplo (1.- Gramatica que genera L(a∗da∗d) 6 / 19)

Unificacion de los conjuntos I4 e I7

I4 = {[C → d •, a , d]}I7 = {[C → d •, $]}

I4−7 = {[C→ d •, a , d, $]

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

Page 477: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LALRColeccion canonica de elementos-LALR(1)

Ejemplo (1.- Gramatica que genera L(a∗da∗d) 7 / 19)

Unificacion de los conjuntos I8 e I9

I8 = {[C → a C •, a , d]}I9 = {[C → a C •, $]}

I8−9 = {[C → a C •, a , d, $]

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

Page 478: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LALRColeccion canonica de elementos-LALR(1)

Ejemplo (1.- Gramatica que genera L(a∗da∗d) 8 / 19)

Coleccion canonica LALR(1): primera parte

I0 = {[S’ → • S, $], [S → • C C, $],[C → • a C, a , d], [C → • d, a , d]}

I1 = {[S’ → S •, $]}

I2 = {[S → C • C, $], [C → • a C, $], [C → • d, $]}

I3−6 = {[C → a • C, a , d, $], [C → • a C, a , d, $],[C → • d, a , d, $]}

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

Page 479: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LALRColeccion canonica de elementos-LALR(1)

Ejemplo (1.- Gramatica que genera L(a∗da∗d) 9 / 19)

Coleccion canonica LALR(1): segunda parte

I4−7 = {[C → d •, a , d, $]}

I5 = {[S → C C •, $]}

I8−9 = {[C → a C •, a , d, $]}

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

Page 480: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LALRColeccion canonica de elementos-LALR(1)

Ejemplo (1.- Gramatica que genera L(a∗da∗d) 10 / 19)

Automata que reconoce los prefijos viables

Antes de la unificacionEstado a d S C

0 3 4 1 2

12 6 7 5

3 3 4 8

456 6 7 9

789

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

Page 481: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LALRColeccion canonica de elementos-LALR(1)

Ejemplo (1.- Gramatica que genera L(a∗da∗d) 11 / 19)

Automata que reconoce los prefijos viables

Despues de la unificacion

Estado a d S C

0 3-6 4-7 1 212 3-6 4-7 5

3-6 3-6 4-7 8-94-75

8-9

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

Page 482: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LALRColeccion canonica de elementos-LALR(1)

Ejemplo (1.- Gramatica que genera L(a∗da∗d) 12 / 19)

La unificacion ha permitido reducir el numero de estados de10 a 7.

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

Page 483: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LALRColeccion canonica de elementos-LALR(1)

Ejemplo (1.- Gramatica que genera L(a∗da∗d) 13 / 19)

Automata que reconoce los prefijos viables

Antes de la unificacion.

0

1

2

3

4

6

5

8

7

S

d

aa

d

C

C

C

a

dd

aC

9

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

Page 484: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LALRColeccion canonica de elementos-LALR(1)

Ejemplo (1.- Gramatica que genera L(a∗da∗d) 14 / 19)

Automata que reconoce los prefijos viables

Despues de la unificacion.

0

1

2

4−7

3−6

5

8−9

S

d

a

d

C

a a

d

C

C

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

Page 485: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LALRColeccion canonica de elementos-LALR(1)

Ejemplo (1.- Gramatica que genera L(a∗da∗d) 15 / 19)

Tabla de analisis sintactico LALR

Accion Ir-a

Estado a d $ S C0 d 3-6 d 4-7 1 21 Aceptar2 d 3-6 d 4-7 5

3-6 d 3-6 d 4-7 8-94-7 r 4 r 4 r 45 r 2

8-9 r 3 r 3 r 3

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

Page 486: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LALRColeccion canonica de elementos-LALR(1)

Ejemplo (1.- Gramatica que genera L(a∗da∗d) 16 / 19)

Tabla de analisis sintactico LALR: estados renombrados

Accion Ir-a

Estado a d $ S C0 d 3 d 4 1 21 Aceptar2 d 3 d 4 53 d 3 d 4 64 r 4 r 4 r 45 r 26 r 3 r 3 r 3

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

Page 487: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LALRColeccion canonica de elementos-LALR(1)

Ejemplo (1.- Gramatica que genera L(a∗da∗d) 17 / 19)

Automata que reconoce los prefijos viables

Estados renombrados.

0

1

2

2

S

d

a

d

C

a a

d

C

C6

4

3

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

Page 488: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LALRColeccion canonica de elementos-LALR(1)

Ejemplo (1.- Gramatica que genera L(a∗da∗d) 18 / 19)

Analisis sintactico usando la tabla LALR: primera parte.

Pila Entrada Accion

0 a d a a d $ d 30 a 3 d a a d $ d 40 a 3 d 4 a a d $ r 3 C → d0 a 3 C 6 a a d $ r 3 C → a C

0 C 2 a a d $ d 30 C 2 a 3 a d $ d 30 C 2 a 3 a 3 d $ d 4

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

Page 489: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LALRColeccion canonica de elementos-LALR(1)

Ejemplo (1.- Gramatica que genera L(a∗da∗d) 19 / 19)

Analisis sintactico usando la tabla LALR: segunda parte.

Pila Entrada Accion

0 C 2 a 3 a 3 d 4 $ r 3 C → d0 C 2 a 3 a 3 C 6 $ r 2 C → a C

0 C 2 a 3 C 6 $ r 2 C → a C

0 C 2 C 5 $ r 1 S → C C

0 S 1 $ Aceptar

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

Page 490: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LALRColeccion canonica de elementos-LALR(1)

Ejemplos (Analisis sintactico LALR)

1.- Gramatica que genera el lenguaje L(a∗ d a∗ d)

2.- Gramatica de la sentencia de asignacion

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

Page 491: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LALRColeccion canonica de elementos-LALR(1)

Ejemplo (2.- Gramatica de la sentencia de asignacion 1 / 10)

P = {(1’) S’ −→ S(1) S −→ L = R(2) S −→ R(3) L −→ * R(4) L −→ identificador(5) R −→ L

}

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

Page 492: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LALRColeccion canonica de elementos-LALR(1)

Ejemplo (2.- Gramatica de la sentencia de asignacion 2 / 10)

Coleccion canonica de elementos - LR(1): primera parte

I0 = { [S’ → • S, $], [S → • L = R, $], [S → • R, $],

[L → • * R, =, $], [L → • id, =, $], [R → • L, $] }I1 = {[S’ → S •, $]}I2 = {[S → L • = R, $], [R → L •, $]}I3 = {[S → R •, $]}I4 = {[L → * • R, =, $], [R → • L, =, $],

[L → • * R, =, $], [L → • id, =, $]}

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

Page 493: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LALRColeccion canonica de elementos-LALR(1)

Ejemplo (2.- Gramatica de la sentencia de asignacion 3 / 10)

Coleccion canonica de elementos - LR(1): segunda parte

I5 = {[L → id •, =, $]}I6 = {[S → L = • R, $], [R → • L, $],

[L → • * R, $], [L → • id, $]}I7 = {[L → * R •, =, $]}I8 = {[R → L •, =, $]}I9 = {[S → L = R •, $]

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

Page 494: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LALRColeccion canonica de elementos-LALR(1)

Ejemplo (2.- Gramatica de la sentencia de asignacion 4 / 10)

Coleccion canonica de elementos - LR(1): tercera parte

I10 = {[R → L •, $]}I11 = {[L → * • R, $], [R → • L, $],

[L → • * R, $], [L → • id, $]}I12 = {[L → id •, $]}I13 = {[L → * R •, $]}

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

Page 495: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LALRColeccion canonica de elementos-LALR(1)

Ejemplo (2.- Gramatica de la sentencia de asignacion 5 / 10)

Unificacion de los conjuntos I4 e I11

I4 = { [L → * • R, =, $], [R → • L, =, $][L → • * R, =, $], [L → • id, =, $] }

I11 = { [L → * • R, $], [R → • L, $],[L → • * R, $], [L → • id, $] }

I4−11 = { [L→ * • R, =, $], [R→ • L, =, $],[L→ • * R, =, $], [L→ • id, =, $] }

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

Page 496: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LALRColeccion canonica de elementos-LALR(1)

Ejemplo (2.- Gramatica de la sentencia de asignacion 6 / 10)

Unificacion de los conjuntos I5 e I12

I5 = {[L → id •, =, $]}I12 = {[L → id •, $]}

I5−12 = {[L→id•, =, $]}

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

Page 497: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LALRColeccion canonica de elementos-LALR(1)

Ejemplo (2.- Gramatica de la sentencia de asignacion 7 / 10)

Unificacion de los conjuntos I7 e I13

I7 = {[L → * R •, =, $]}I13 = {[L → * R •, $]}

I7−13 = {[L→ * R•, =, $]}

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

Page 498: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LALRColeccion canonica de elementos-LALR(1)

Ejemplo (2.- Gramatica de la sentencia de asignacion 8 / 10)

Unificacion de los conjuntos I8 e I10

I8 = {[R → L •, =, $]}I10 = {[R → L •, $]}

I8−10 = {[R→L•, =, $]}

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

Page 499: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LALRColeccion canonica de elementos-LALR(1)

Ejemplo (2.- Gramatica de la sentencia de asignacion 9 / 10)

Tabla de analisis sintactico LALR

Accion Ir-aEstado = * id $ S L R

0 d 4-11 d 5-12 1 2 31 Aceptar2 d 6 r 5 1 2 33 r 2

4-11 d 4-11 d 5-12 8-10 7-135-12 r 4 r 4

6 d 4-11 d 5-12 8-10 97-13 r 3 r 38-10 r 5 r 5

9 r 1

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

Page 500: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LALRColeccion canonica de elementos-LALR(1)

Ejemplo (2.- Gramatica de la sentencia de asignacion 9 / 10)

Tabla de analisis sintactico LALR: estados renombrados.

Accion Ir-aEstado = * id $ S L R

0 d 4 d 5 1 2 31 Aceptar2 d 6 r 5 1 2 33 r 24 d 4 d 5 8 75 r 4 r 46 d 4 d 5 8 97 r 3 r 38 r 5 r 59 r 1

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

Page 501: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LALRColeccion canonica de elementos-LALR(1)

Nota (2.- Gramatica de la sentencia de asignacion 10 / 10)

La tabla LALR tiene el mismo tamano que la tabla SLR.

Sin embargo, la tabla LALR no presenta el conflicto dedesplazamiento - reduccion que posee la tabla SLR.

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

Page 502: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Subseccion actual

4 Analisis sintactico ascendente LALRDescripcionColeccion canonica de elementos-LALR(1)Conflictos

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

Page 503: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LALRConflictos

Conflictos en el metodo LALR

Conflicto de desplazamiento-reduccion

Conflicto de reduccion-reduccion

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

Page 504: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LALRConflictos

Conflictos en el metodo LALR

Conflicto de desplazamiento-reduccion

El metoco LALR no genera nuevos conflictos dedesplazamiento-reduccion.Si aparece este tipo de conflicto entonces tambien eragenerado por el metodo LR-canonico.

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

Page 505: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LALRConflictos

Teorema (Conflicto de desplazamiento-reduccion)

Si el metodo LALR genera un conflicto dedesplazamiento-reduccion

entonces el metodo LR-canonico tambien lo generaba.

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

Page 506: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LALRConflictos

Demostracion (Conflicto de desplazamiento-reduccion 1 / 2)

Supongase que la tabla LALR presenta un conflicto:

accion[i, σ] =

{d jr k

El desplazamiento d j se genera porque

1.- [A → α • σ β, σ′] ∈ Ii2.- Ir a(Ii ,σ) = Ij

La reduccion r k se genera porque

1.- [B → γ •, σ] ∈ Ii2.- k es la regla B → γ ∈ P

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

Page 507: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LALRConflictos

Demostracion (Conflicto de desplazamiento-reduccion 2 / 2)

Origen de IiCaso 1

Ii pertenecıa a la coleccion canonica de elementos LR(1)Por tanto, el metodo LR-canonico tambien tenıa el conflicto dedesplazamiento-reduccion.

Caso 2Ii = Ip ∪ Iq, donde Ip e Iq son conjuntos elementos LR(1) conlos mismos centrosSe verifica que [A → α • σ β, σ′ ], [ B → γ •, σ] ∈ Ip (o Iq)Por tanto, el metodo LR-canonico tambien tenıa el conflicto dedesplazamiento-reduccion en el estado p (o en q).

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

Page 508: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LALRConflictos

Conflictos en el metodo LALR

Conflicto de reduccion-reduccion

El metodo LALR puede provocar nuevos conflictos dereduccion-reduccion que no eran generados por el metodoLR-canonico.

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

Page 509: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LALRConflictos

Conflicto de reduccion-reduccion 1 / 2

Supongase que la coleccion canonica LR(1) contiene a:

Ip = {[A → α •, σ], {[B → β •, σ′]Iq = {[A → α •, σ′], {[B → β •, σ]

que generan las siguientes acciones:

accion[p,σ] = reducir con A → α

accion[p,σ′] = reducir con B → β

accion[q,σ′] = reducir con A → α

accion[q,σ] = reducir con B → β

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

Page 510: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LALRConflictos

Conflicto de reduccion-reduccion 2 / 2

Al unificar Ip e Iq que se verifica que

Ip−q = {[A → α •, σ,σ′], {[B → β •, σ,σ′]que generan los siguientes conflictos de reduccion-reduccion

accion[p-q,σ] = reducir con A → α

accion[p-q,σ] = reducir con B → β

accion[p-q,σ′] = reducir con A → α

accion[p-q,σ′] = reducir con B → β

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

Page 511: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LALRConflictos

Ejemplo (Conflicto de reduccion-reduccion 1 / 23)

P = {(1’) S’ −→ S(1) S −→ a A d(2) S −→ b B d(3) S −→ a B e(4) S −→ b A e(5) A −→ c(6) B −→ c

}

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

Page 512: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LALRConflictos

Ejemplo (Conflicto de reduccion-reduccion 2 / 23)

Conjunto I0

I0 = clausura({[S’→ • S, $]})= {

[S’→ • S, $], [S → • a A d, $],[S→ • b B d, $], [S→ • a B e, $ ],[S→ • b A e, $]}

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

Page 513: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LALRConflictos

Ejemplo (Conflicto de reduccion-reduccion 3 / 23)

Transiciones del conjunto I0: primera parte

Ir a(I0, S) = clausura({[S’→S•, $]})= {[S’ → S •, $]}= I1

Ir a(I0, a) = clausura({[S → a • A d, $], [S → a • B e, $]})= {

[S→ a • A d, $], [S → a • B e, $],[A → • c, d], [B → • c, e]}

= I2

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

Page 514: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LALRConflictos

Ejemplo (Conflicto de reduccion-reduccion 4 / 23)

Transiciones del conjunto I0: segunda parte

Ir a(I0,b) = clausura({[S→ b •B d,$], [S → b • A e, $]})= {

[S → b • B d, $], [S→ b • A e, $],[B → • c, d], [A→ • c, e]}

= I3

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

Page 515: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LALRConflictos

Ejemplo (Conflicto de reduccion-reduccion 5 / 23)

Transiciones del conjunto I1 = {[S’ → S •, $]}

∀ X ∈ V Ir a(I1, X) = ∅

El conjunto I1 no tiene transiciones.

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

Page 516: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LALRConflictos

Ejemplo (Conflicto de reduccion-reduccion 6 / 23)

Transiciones del conjunto I2

Ir a(I2, A) = clausura({[S → a A • d, $]})= {[S → a A • d, $]}= I4

Ir a(I2, B) = clausura({[S → a B • e, $]})= {[S→ a B • e, $]}= I5

Ir a(I2, c) = clausura({[A → c •, d], [B→ c •, e]})= {[A→ c •, d], [B→ c •, e]}= I6

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

Page 517: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LALRConflictos

Ejemplo (Conflicto de reduccion-reduccion 7 / 23)

Transiciones del conjunto I3

Ir a(I3, A) = clausura({[S → b A • e, $]})= {[S → b A • e, $]}= I7

Ir a(I3, B) = clausura({[S → b B • d, $]})= {[S→ b B • d, $]}= I8

Ir a(I3, c) = clausura({[B → c •, d], [A→ c •, e]})= {[B → c •, d], [A → c •, e]}= I9

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

Page 518: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LALRConflictos

Ejemplo (Conflicto de reduccion-reduccion 8 / 23)

Transiciones del conjunto I4 = {[S → a A • d, $]}

Ir a(I4, d) = clausura({[S→ a A d •, $]})= {[S → a A d •, $]}= I10

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

Page 519: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LALRConflictos

Ejemplo (Conflicto de reduccion-reduccion 9 / 23)

Transiciones del conjunto I5 = {[S→ a B • e, $]}

Ir a(I5, e) = clausura({[S → a B e •, $]})= {[S → a B e •, $]}= I11

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

Page 520: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LALRConflictos

Ejemplo (Conflicto de reduccion-reduccion 10 / 23)

Transiciones del conjunto I6 = {[A→ c •, d], [B→ c •, e]}

∀ X ∈ V Ir a(I6, X) = ∅

El conjunto I6 no tiene transiciones

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

Page 521: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LALRConflictos

Ejemplo (Conflicto de reduccion-reduccion 11 / 23)

Transiciones del conjunto I7 = {[S → b A • e, $]}

Ir a(I7, d) = clausura({[S→ b A e •, $]})= {[S→ b A e •, $]}= I12

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

Page 522: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LALRConflictos

Ejemplo (Conflicto de reduccion-reduccion 12 / 23)

Transiciones del conjunto I8 = {[S→ b B • d, $]}

Ir a(I8, e) = clausura({[S→ b B d •, $]})= {[S→ b B d •, $]}= I13

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

Page 523: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LALRConflictos

Ejemplo (Conflicto de reduccion-reduccion 13 / 23)

Transiciones del conjunto I9 = {[B → c •, d], [A → c •, e]}

∀ X ∈ V Ir a(I9, X) = ∅

El conjunto I9 no tiene transiciones

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

Page 524: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LALRConflictos

Ejemplo (Conflicto de reduccion-reduccion 14 / 23)

Transiciones del conjunto I10 = {[S → a A d •, $]}

∀ X ∈ V Ir a(I10, X) = ∅

El conjunto I10 no tiene transiciones

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

Page 525: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LALRConflictos

Ejemplo (Conflicto de reduccion-reduccion 15 / 23)

Transiciones del conjunto I11 = {[S → a B e •, $]}

∀ X ∈ V Ir a(I11, X) = ∅

El conjunto I11 no tiene transiciones

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

Page 526: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LALRConflictos

Ejemplo (Conflicto de reduccion-reduccion 16 / 23)

Transiciones del conjunto I12 = {[S→ b A e •, $]}

∀ X ∈ V Ir a(I12, X) = ∅

El conjunto I12 no tiene transiciones

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

Page 527: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LALRConflictos

Ejemplo (Conflicto de reduccion-reduccion 17 / 23)

Transiciones del conjunto I13 = {[S→ b B d •, $]}

∀ X ∈ V Ir a(I13, X) = ∅

El conjunto I13 no tiene transiciones

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

Page 528: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LALRConflictos

Ejemplo (Conflicto de reduccion-reduccion 18 / 23)

Coleccion canonica de elementos-LR(1): primera parte

I0 = { [S’→ • S, $], [S→ • a A d, $] [S→ • b B d, $],

[S→ • a B e, $], [S→ • b A e, $] }I1 = {[S’→S•, $]}I2 = { [S→ a•A d, $], [S→ a • B e, $],

[A → • c, d], [B → • c, e] }I3 = { [S→ b •B d, $], [S → b • A e, $],

[B → • c, d], [A → • c, e] }I4 = {[S → a A • d, $]}

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

Page 529: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LALRConflictos

Ejemplo (Conflicto de reduccion-reduccion 19 / 23)

Coleccion canonica de elementos-LR(1): segunda parte

I5 = {[S → a B • e, $]}I6 = {[A → c •, d], [B→ c •, e]}

I7 = {[S → b A • e, $]}I8 = {[S → b B • d, $]}I9 = {[B→ c •, d], [A→ c •, e]}

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

Page 530: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LALRConflictos

Ejemplo (Conflicto de reduccion-reduccion 20 / 23)

Coleccion canonica de elementos-LR(1): tercera parte

I10 = {[S→ a A d •, $]}I11 = {[S→ a B e •, $]}I12 = {[S→ b A e •, $]}I13 = {[S→ b B d •, $]}

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

Page 531: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LALRConflictos

Ejemplo (Conflicto de reduccion-reduccion 21 / 23)

Unificacion de los conjuntos de elementos LR(1) con losmismos centros

Solamente se pueden unificar los conjuntos I6 e I9

I6 = {[A → c •, d], [B→ c •, e]}I9 = {[B→ c •, d], [A→ c •, e]}

I6−9 = {[A→ c •, d, e], [B→ c •, d, e]}

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

Page 532: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LALRConflictos

Ejemplo (Conflicto de reduccion-reduccion 22 / 23)

Tabla de analisis sintactico LALR

Accion Ir-a

Estado a b c d e $ S A B0 d 2 d 3 11 Aceptar2 d 6 4 53 d 9 7 84 d 105 d 11

6-9 r 5, r 6 r 5, r67 d 128 d 13

10 r 111 r 312 r 413 r 2

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

Page 533: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Analisis sintactico ascendente LALRConflictos

Nota (Conflicto de reduccion-reduccion 23 / 23)

Conclusion: el metodo LALR puede generar nuevos conflictosde reduccion - reduccion

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

Page 534: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Seccion actual

1 Introduccion

2 Analisis sintactico ascendente SLR

3 Analisis sintactico ascendente LR-canonico

4 Analisis sintactico ascendente LALR

5 Metodos de recuperacion de errores

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

Page 535: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Subseccion actual

5 Metodos de recuperacion de erroresIntroduccionMetodo de panicoMetodo de nivel de fraseSimplificacion del metodo de nivel de frase

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

Page 536: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Metodos de recuperacion de erroresIntroduccion

Deteccion del error

Solamente se detecta un error cuando se consulta una celdavacıa de la parte accion de la tabla LR.

¡Las celdas vacıas de la parte Ir-a nunca se consultaran!.

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

Page 537: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Metodos de recuperacion de erroresIntroduccion

Metodos de recuperacion de errores

Metodo de panico.

Metodo de nivel de frase.

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

Page 538: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Metodos de recuperacion de erroresIntroduccion

Nota (Metodos de recuperacion de errores)

Estos metodos se pueden aplicar a los tres tipos de analisissintactico LR:

SLRLR-canonicoLALR

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

Page 539: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Subseccion actual

5 Metodos de recuperacion de erroresIntroduccionMetodo de panicoMetodo de nivel de fraseSimplificacion del metodo de nivel de frase

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

Page 540: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Metodos de recuperacion de erroresMetodo de panico

Metodo de panico: pasos

1.- Se busca en la pila algun estado s que tenga alguna transicionir a con algun sımbolo no terminal.

Por ejemplo: ir a[s,A] = s’

2.- Se eliminan todos los sımbolos y estados que esten porencima del estado s.

3.- Se introduce en la pila el sımbolo A

4.- Se introduce en la pila el estado s’

5.- Se eliminan sımbolos de la entrada hasta que se encuentre unsımbolo σ ∈ siguiente(A).

6.- Continua el analisis.

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

Page 541: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Metodos de recuperacion de erroresMetodo de panico

Metodo de panico: ventajas e inconvenientes

Ventajas

Es muy facil de aplicar.Aısla el error detectadoPermite que continue el analisis.

InconvenientesNo es capaz de detectar todos los errores sintacticosexistentes.

Puede eliminar sımbolos incorrectos de la entrada que noserıan detectados.

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

Page 542: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Subseccion actual

5 Metodos de recuperacion de erroresIntroduccionMetodo de panicoMetodo de nivel de fraseSimplificacion del metodo de nivel de frase

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

Page 543: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Metodos de recuperacion de erroresMetodo de nivel de frase

Metodo de nivel de frase: descripcion

Las celdas vacıas de la parte accion son completadas confunciones especıficas de tratamiento de errores.

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

Page 544: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Metodos de recuperacion de erroresMetodo de nivel de frase

Ejemplo (Recuperacion de errores de nivel de frase 1 / 13)

P = {(1’) E’ −→ E(1) E −→ E + T(2) E −→ T(3) T −→ T * F(4) T −→ F(5) F −→ ( E )(6) F −→ identificador(7) F −→ numero

}

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

Page 545: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Metodos de recuperacion de erroresMetodo de nivel de frase

Ejemplo (Recuperacion de errores de nivel de frase 2 / 13)

Conjunto canonica de elementos LR(0): primera parte

I0 = { E’ → • E, E → • E + T, E → • T,

T → • T * F, T → • F,

F → • ( E ), F → • id, F → • numero}I1 = {E’ → E •, E → E • + T }I2 = {E → T •, T → T • * F }I3 = {T → F •}

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

Page 546: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Metodos de recuperacion de erroresMetodo de nivel de frase

Ejemplo (Recuperacion de errores de nivel de frase 3 / 13)

Conjunto canonica de elementos LR(0): segunda parte

I4 = { F → ( • E), E → • E + T,

E → •, T, T → • T * F, T → • F,

F → • ( E ), F → • id, F → • numero }I5 = { F → id • }I6 = { F → numero • }I7 = { E → E + • T, T → • T * F, T → • F,

F → • (E), F → • id, F → • numero}

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

Page 547: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Metodos de recuperacion de erroresMetodo de nivel de frase

Ejemplo (Recuperacion de errores de nivel de frase 4 / 13)

Conjunto canonica de elementos LR(0): tercera parte

I8 = {T → T * • F, F → • (E),F → • id, F → • numero}I9 = {F → (E •), E → E • + T }I10 = {E → E + T •, T → T • * F }I11 = {T → T * F • }I12 = {F → (E) •}

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

Page 548: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Metodos de recuperacion de erroresMetodo de nivel de frase

Ejemplo (Recuperacion de errores de nivel de frase 5 / 13)

Automata que reconoce los prefijos viables

Estado + * ( ) id num E T F0 4 5 6 1 2 31 72 834 4 5 6 9 2 3567 4 5 6 10 38 4 5 6 119 7 12

10 81112

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

Page 549: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Metodos de recuperacion de erroresMetodo de nivel de frase

Ejemplo (Recuperacion de errores de nivel de frase 6 / 13)

Accion Ir-aEstado + * ( ) id num $ E T F

0 d 4 d 5 d 6 1 2 31 d 7 Aceptar2 r 2 d 8 r 2 r 23 r 4 r 4 r 4 r 44 d 4 d 5 d 6 9 2 35 r 6 r 6 r 6 r 66 r 7 r 7 r 7 r 77 d 4 d 5 d 6 10 38 d 4 d 5 d 6 119 d 7 d 12

10 r 1 d 8 r 1 r 111 r 3 r 3 r 3 r 312 r 5 r 5 r 4 r 4

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

Page 550: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Metodos de recuperacion de erroresMetodo de nivel de frase

Ejemplo (Recuperacion de errores de nivel de frase 7 / 13)

Se completan las celdas vacıas de la parte accion confunciones de tratamiento de error.

Las funciones de error dependen de cada gramatica.

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

Page 551: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Metodos de recuperacion de erroresMetodo de nivel de frase

Ejemplo (Recuperacion de errores de nivel de frase 8 / 13)

Funciones de tratamiento de error

E 1:

Sımbolo inesperado.Falta identificador, numero o parentesis izquierdo.Accion: insertar un identificador en la entrada.

E 2:

Parentesis derecho inesperado.Accion: eliminar el parentesis derecho de la entrada.

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

Page 552: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Metodos de recuperacion de erroresMetodo de nivel de frase

Ejemplo (Recuperacion de errores de nivel de frase 9 / 13)

Funciones de tratamiento de error

E 3:

Final inesperado de la cadena de entrada.Accion: el analisis finaliza.

E 4:

Sımbolo inesperado.Se esperaba + o el final de la entrada.Accion: eliminar sımbolo de la entrada.

E 5:

Sımbolo inesperado.Se esperaba +, *, ) o el final de la entrada.Accion: eliminar sımbolo de la entrada.

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

Page 553: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Metodos de recuperacion de erroresMetodo de nivel de frase

Ejemplo (Recuperacion de errores de nivel de frase 10 / 13)

Accion Ir-aEstado + * ( ) id num $ E T F

0 E 1 E 1 d 4 E 2 d 5 d 6 E 3 1 2 31 d 7 E 4 E 4 E 2 E 4 E 4 Aceptar2 r 2 d 8 E 5 r 2 E 5 E 5 r 23 r 4 r 4 E 5 r 4 E 5 E 5 r 44 E 1 E 1 d 4 E 2 d 5 d 6 E 3 9 2 35 r 6 r 6 E 5 r 6 E 5 E 5 r 66 r 7 r 7 E 5 r 7 E 5 E 5 r 77 E 1 E 1 d 4 E 2 d 5 d 6 E 3 10 38 E 1 E 1 d 4 E 2 d 5 d 6 E 3 119 d 7 E 4 E 4 d 12 E 4 E 4 E 3

10 r 1 d 8 E 5 r 1 E 5 E 5 r 111 r 3 r 3 E 5 r 3 E 5 E 5 r 312 r 5 r 5 E 5 r 5 E 5 E 5 r 5

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

Page 554: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Metodos de recuperacion de erroresMetodo de nivel de frase

Ejemplo (Recuperacion de errores de nivel de frase 11 / 13)

Pila Entrada Accion

0 + id * + n id) $ E 1: insertar id0 id + id * + n id) $ d 50 id 5 + id * + n id) $ r 6 F → id0 F 3 + id * + n id) $ r 4 T → F0 T 2 + id * + n id) $ r 2 E → T0 E 1 + id * + n id) $ d 70 E 1 + 7 id * + n id) $ d 50 E 1 + 7 id 5 * + n id) $ r 6 F → id0 E 1 + 7 F 3 * + n id) $ r 4 T → F0 E 1 + 7 T 10 * + n id) $ d 8

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

Page 555: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Metodos de recuperacion de erroresMetodo de nivel de frase

Ejemplo (Recuperacion de errores de nivel de frase 12 / 13)

Pila Entrada Accion

0 E 1 + 7 T 10 * 8 + n id) $ E 1: insertar id0 E 1 + 7 T 10 * 8 id + n id) $ d 50 E 1 + 7 T 10 * 8 id 5 + n id) $ r 6 F → id0 E 1 + 7 T 10 * 8 F 11 + n id) $ r 3 T → T * F0 E 1 + 7 T 10 + n id) $ r 1 → E + T0 E 1 + n id) $ d 70 E 1 + 7 n id) $ d 60 E 1 + 7 n 6 id ) $ E 5: eliminar id

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

Page 556: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Metodos de recuperacion de erroresMetodo de nivel de frase

Ejemplo (Recuperacion de errores de nivel de frase 13 / 13)

Pila Entrada Accion

0 E 1 + 7 n 6 ) $ r 7 F → n0 E 1 + 7 F 3 ) $ r 4 T → F0 E 1 + 7 T 10 ) $ r 1 E → E + T0 E 1 ) $ E 2: eliminar )0 E 1 $ Aceptar

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

Page 557: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Subseccion actual

5 Metodos de recuperacion de erroresIntroduccionMetodo de panicoMetodo de nivel de fraseSimplificacion del metodo de nivel de frase

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

Page 558: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Metodos de recuperacion de erroresSimplificacion del metodo de nivel de frase

Metodo de nivel de frase: simplificacion

Si un estado realiza al menos un reduccion

entonces se pueden completar todas sus celdas vacıas conuna de sus reducciones.

Nunca se desplazara un sımbolo incorrecto desde la entrada ala pila.Puede que sı se realicen mas reducciones antes de detectar elerror.Se pospone la deteccion del error: el error sera detectado porotro estado.

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

Page 559: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Metodos de recuperacion de erroresSimplificacion del metodo de nivel de frase

Ejemplo (Metodo de nivel de frase: simplificacion 1 / 4)

Accion Ir-aEstado + * ( ) id num $ E T F

0 E 1 E 1 d 4 E 2 d 5 d 6 E 3 1 2 31 d 7 E 4 E 4 E 2 E 4 E 4 Aceptar2 r 2 d 8 r 2 r 2 r 2 r 2 r 23 r 4 r 4 r 4 r 4 r 4 r 4 r 44 E 1 E 1 d 4 E 2 d 5 d 6 E 3 9 2 35 r 6 r 6 r 6 r 6 r 6 r 6 r 66 r 7 r 7 r 7 r 7 r 7 r 7 r 77 E 1 E 1 d 4 E 2 d 5 d 6 E 3 10 38 E 1 E 1 d 4 E 2 d 5 d 6 E 3 119 d 7 E 4 E 4 d 12 E 4 E 4 E 3

10 r 1 d 8 r 1 r 1 r 1 r 1 r 111 r 3 r 3 r 3 r 3 r 3 r 3 r 312 r 5 r 5 r 5 r 5 r 5 r 5 r 5

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

Page 560: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Metodos de recuperacion de erroresSimplificacion del metodo de nivel de frase

Ejemplo (Metodo de nivel de frase: simplificacion 2 / 4)

Pila Entrada Accion0 + id * + n id) $ E 1: insertar id0 id + id * + n id) $ d 50 id 5 + id * + n id) $ r 6 F → id0 F 3 + id * + n id) $ r 4 T → F0 T 2 + id * + n id) $ r 2 E → T0 E 1 + id * + n id) $ d 70 E 1 + 7 id * + n id) $ d 50 E 1 + 7 id 5 * + n id) $ r 6 F → id0 E 1 + 7 F 3 * + n id) $ r 4 T → F0 E 1 + 7 T 10 * + n id) $ d 8

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

Page 561: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Metodos de recuperacion de erroresSimplificacion del metodo de nivel de frase

Ejemplo (Metodo de nivel de frase: simplificacion 3 / 4)

Pila Entrada Accion

0 E 1 + 7 T 10 * 8 + n id) $ E 1: insertar id0 E 1 + 7 T 10 * 8 id + n id) $ d 50 E 1 + 7 T 10 * 8 id 5 + n id) $ r 6 F → id0 E 1 + 7 T 10 * 8 F 11 + n id) $ r 3 T → T * F0 E 1 + 7 T 10 + n id) $ r 1 E → E + T0 E 1 + n id) $ d 70 E 1 + 7 n id) $ d 60 E 1 + 7 n 6 id ) $ r 7 F → n

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

Page 562: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico Ascendente

Metodos de recuperacion de erroresSimplificacion del metodo de nivel de frase

Ejemplo (Metodo de nivel de frase: simplificacion 4 / 4)

Pila Entrada Accion0 E 1 + 7 F 3 id ) $ r 4 T → F0 E 1 + 7 T 10 id ) $ r 1 E → E + T0 E 1 id ) $ E 4: eliminar id0 E 1 ) $ E 2 : eliminar )0 E 1 $ Aceptar

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

Page 563: PROCESADORES DE LENGUAJES · 2019. 7. 18. · Procesadores de Lenguajes Tema V.- An alisis Sint actico Ascendente Programa 1 Introducci on 2 An alisis sint actico ascendente SLR 3

Procesadores de Lenguajes Tema V.- Analisis Sintactico 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 563 / 563