procesadores de lenguajes - uco.esma1fegan/2011-2012/pl/temas/tema-5-introduccion.pdf ·...
TRANSCRIPT
Procesadores de Lenguajes Tema V: Analisis Ascendente
PROCESADORES DE LENGUAJESTEMA V: ANALISIS ASCENDENTE
Prof. Dr. Nicolas Luis Fernandez Garcıa
Departamento de Informatica y Analisis NumericoEscuela Politecnica Superior de Cordoba
Universidad de Cordoba
Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 1 / 88
Procesadores de Lenguajes Tema V: Analisis Ascendente
Introduccion
1 Introduccion
Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 2 / 88
Procesadores de Lenguajes Tema V: Analisis Ascendente
IntroduccionDescripcion general
1 IntroduccionDescripcion generalConcepto de pivoteConflictosTipos de analisis sintactico ascendente
Metodos basados en reglas de precedenciaMetodos de analisis LRJustificacion de los metodos LR
Gramaticas LRTabla de analisis sintactico ascendente LR
Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 3 / 88
Procesadores de Lenguajes Tema V: Analisis Ascendente
IntroduccionDescripcion general
Analisis Sintactico Ascendente
Objetivo: construir un arbol sintactico asociado a la cadena deentrada.
La construccion del arbol sintactico es ascendente: comienzapor las hojas y termina en la raız.
Objetivo equivalente: obtener una derivacion por la derecha enorden inverso.
Se fundamenta en los conceptos de desplazamiento yreduccion.
Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 4 / 88
Procesadores de Lenguajes Tema V: Analisis Ascendente
IntroduccionDescripcion general
Analisis Sintactico Ascendente
Objetivo: construir un arbol sintactico asociado a la cadena deentrada.
La construccion del arbol sintactico es ascendente: comienzapor las hojas y termina en la raız.
Objetivo equivalente: obtener una derivacion por la derecha enorden inverso.
Se fundamenta en los conceptos de desplazamiento yreduccion.
Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 5 / 88
Procesadores de Lenguajes Tema V: Analisis Ascendente
IntroduccionDescripcion general
Analisis Sintactico Ascendente
Objetivo: construir un arbol sintactico asociado a la cadena deentrada.
La construccion del arbol sintactico es ascendente: comienzapor las hojas y termina en la raız.
Objetivo equivalente: obtener una derivacion por la derecha enorden inverso.
Se fundamenta en los conceptos de desplazamiento yreduccion.
Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 6 / 88
Procesadores de Lenguajes Tema V: Analisis Ascendente
IntroduccionDescripcion general
Analisis Sintactico Ascendente
Objetivo: construir un arbol sintactico asociado a la cadena deentrada.
La construccion del arbol sintactico es ascendente: comienzapor las hojas y termina en la raız.
Objetivo equivalente: obtener una derivacion por la derecha enorden inverso.
Se fundamenta en los conceptos de desplazamiento yreduccion.
Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 7 / 88
Procesadores de Lenguajes Tema V: Analisis Ascendente
IntroduccionDescripcion general
Ejemplo (Ejemplo de Analisis Ascendente)
P = {(1) S −→ T id (L) ;(2) T −→ T *(3) T −→ int(4) L −→ P(5) L −→ ε(6) P −→ P,T(7) P −→ T}
Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 8 / 88
Procesadores de Lenguajes Tema V: Analisis Ascendente
IntroduccionDescripcion general
Ejemplo (Ejemplo de Analisis Ascendente)
Esta gramatica genera prototipos de funciones del lenguaje deprogramacion C.
Un ejemplo de estos prototipos podrıa ser:
int * reservarMemoria ( int);
Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 9 / 88
Procesadores de Lenguajes Tema V: Analisis Ascendente
IntroduccionDescripcion general
Ejemplo (Ejemplo de Analisis sintactico Ascendente (1 de 2))
Pila Entrada Accionint * id ( int ) ; $ desplazar int
int * id ( int ) ; $ reducir (3) T −→ intT * id ( int ) ; $ desplazar *T * id ( int ) ; $ reducir (2) T −→ T *T id ( int ) ; $ desplazar idT id ( int ) ; $ desplazar (T id ( int ) ; $ desplazar intT id ( int ) ; $ reducir (3) T −→ int
Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 10 / 88
Procesadores de Lenguajes Tema V: Analisis Ascendente
IntroduccionDescripcion general
Ejemplo (Ejemplo de Analisis sintactico Ascendente (2 de 2))
Pila Entrada AccionT id ( T ) ; $ reducir (7) P −→ TT id ( P ) ; $ reducir (4) L −→ PT id ( L ); $ desplazar )T id ( L ) ; $ desplazar ;T id ( L ) ; $ reducir (1) S −→ T id (L);S $ ACEPTAR
Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 11 / 88
Procesadores de Lenguajes Tema V: Analisis Ascendente
IntroduccionDescripcion general
Ejemplo (Derivacion)
La derivacion por la derecha se ha obtenido en orden inverso.
S ⇒1
T id ( L ) ;
⇒4
T id ( P ) ;
⇒7
T id ( T ) ;
⇒3
T id ( int ) ;
⇒2
T * id ( int ) ;
⇒3
int * id ( int );
Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 12 / 88
Procesadores de Lenguajes Tema V: Analisis Ascendente
IntroduccionDescripcion general
Ejemplo (Arbol sintactico asociado a la derivacion)
T
T *
int
id L
S
) ;(
P
T
int
Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 13 / 88
Procesadores de Lenguajes Tema V: Analisis Ascendente
IntroduccionDescripcion general
Nota (Acciones del analisis ascendente)
Desplazar: traslada el primer sımbolo de la entrada a la pila.
Reducir:
sustituye, en la pila, los sımbolos de la alternativa de una reglapor el sımbolo de su parte izquierda.Se utiliza el concepto de pivote.
Aceptar: la cadena de entrada es reconocida.
Error: la cadena de entrada es rechazada.
Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 14 / 88
Procesadores de Lenguajes Tema V: Analisis Ascendente
IntroduccionConcepto de pivote
1 IntroduccionDescripcion generalConcepto de pivoteConflictosTipos de analisis sintactico ascendente
Metodos basados en reglas de precedenciaMetodos de analisis LRJustificacion de los metodos LR
Gramaticas LRTabla de analisis sintactico ascendente LR
Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 15 / 88
Procesadores de Lenguajes Tema V: Analisis Ascendente
IntroduccionConcepto de pivote
Definicion (Concepto de pivote (1/2))
Si G =(VN , VT , P, S) es gramatica de contexto libre y
Sk⇒D
γ
entonces
un pivote se define como
una regla de produccion de la forma A → βy una posicion en γ, en la cual se encuentra β.
de forma que,
al sustituir β por A en γ,se obtiene el paso anterior de una derivacion por la derecha.
Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 16 / 88
Procesadores de Lenguajes Tema V: Analisis Ascendente
IntroduccionConcepto de pivote
Definicion (Concepto de pivote (2/2))
Si γ = α β z entonces
S∗⇒D
αAz ⇒A→ β
αβz = γ
Pila Entrada Accion. . . . . . . . .α β z $ reducir A −→ βα A z $ . . .. . . . . . . . .
donde α, β ∈ V ∗ = (VN ∪ VT )∗, z ∈ V ∗T
Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 17 / 88
Procesadores de Lenguajes Tema V: Analisis Ascendente
IntroduccionConcepto de pivote
Ejemplo (Pivote)
S∗⇒D
T id (T ) ; ⇒T−→int
T id (int ) ; = γ
Pila Entrada Accionint * id ( int ) ; $ desplazar int
. . . . . . . . .T id ( int ) ; $ reducir (3) T −→ intT id ( T ) ; $ . . .. . . . . . . . .
Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 18 / 88
Procesadores de Lenguajes Tema V: Analisis Ascendente
IntroduccionConcepto de pivote
Nota (Analisis sintactico ascendente)
El analisis ascendente intenta obtener una derivacion por laderecha en orden inverso.
Un pivote es una regla de produccion y una posicion.
Al obtener el pivote, se puede generar el paso anterior de unaderivacion por la derecha.
Cada paso anterior se genera mediante una reduccion delpivote.
Al aplicar las reducciones, se alcanza el sımbolo inicial de lagramatica (raız del arbol sintactico) y la cadena de entradaes reconocida.
Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 19 / 88
Procesadores de Lenguajes Tema V: Analisis Ascendente
IntroduccionConcepto de pivote
Nota (Analisis sintactico ascendente)
El analisis ascendente intenta obtener una derivacion por laderecha en orden inverso.
Un pivote es una regla de produccion y una posicion.
Al obtener el pivote, se puede generar el paso anterior de unaderivacion por la derecha.
Cada paso anterior se genera mediante una reduccion delpivote.
Al aplicar las reducciones, se alcanza el sımbolo inicial de lagramatica (raız del arbol sintactico) y la cadena de entradaes reconocida.
Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 20 / 88
Procesadores de Lenguajes Tema V: Analisis Ascendente
IntroduccionConcepto de pivote
Nota (Analisis sintactico ascendente)
El analisis ascendente intenta obtener una derivacion por laderecha en orden inverso.
Un pivote es una regla de produccion y una posicion.
Al obtener el pivote, se puede generar el paso anterior de unaderivacion por la derecha.
Cada paso anterior se genera mediante una reduccion delpivote.
Al aplicar las reducciones, se alcanza el sımbolo inicial de lagramatica (raız del arbol sintactico) y la cadena de entradaes reconocida.
Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 21 / 88
Procesadores de Lenguajes Tema V: Analisis Ascendente
IntroduccionConcepto de pivote
Nota (Analisis sintactico ascendente)
El analisis ascendente intenta obtener una derivacion por laderecha en orden inverso.
Un pivote es una regla de produccion y una posicion.
Al obtener el pivote, se puede generar el paso anterior de unaderivacion por la derecha.
Cada paso anterior se genera mediante una reduccion delpivote.
Al aplicar las reducciones, se alcanza el sımbolo inicial de lagramatica (raız del arbol sintactico) y la cadena de entradaes reconocida.
Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 22 / 88
Procesadores de Lenguajes Tema V: Analisis Ascendente
IntroduccionConcepto de pivote
Nota (Analisis sintactico ascendente)
El analisis ascendente intenta obtener una derivacion por laderecha en orden inverso.
Un pivote es una regla de produccion y una posicion.
Al obtener el pivote, se puede generar el paso anterior de unaderivacion por la derecha.
Cada paso anterior se genera mediante una reduccion delpivote.
Al aplicar las reducciones, se alcanza el sımbolo inicial de lagramatica (raız del arbol sintactico) y la cadena de entradaes reconocida.
Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 23 / 88
Procesadores de Lenguajes Tema V: Analisis Ascendente
IntroduccionConcepto de pivote
Nota (Caracterısticas de los pivotes)
El pivote siempre debe aparecer en la cima de la pila.
Se realizara una reduccion cuando se encuentre un pivote.
Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 24 / 88
Procesadores de Lenguajes Tema V: Analisis Ascendente
IntroduccionConcepto de pivote
Nota (Caracterısticas de los pivotes)
El pivote siempre debe aparecer en la cima de la pila.
Se realizara una reduccion cuando se encuentre un pivote.
Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 25 / 88
Procesadores de Lenguajes Tema V: Analisis Ascendente
IntroduccionConcepto de pivote
Ejemplo (Pivote en la cima de la pila)
En este caso, la eleccion del pivote es correcta.
Pila Entrada Accion. . . . . . . . .
α β δ y z $ reducir B → δ
α β B y z $ desplazar y
α β B y z $ reducir A→ βBy
α A z $ · · ·
S∗⇒D
α A z ⇒A−→βBy
α β B y z ⇒B−→δ
α β δ y z
Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 26 / 88
Procesadores de Lenguajes Tema V: Analisis Ascendente
IntroduccionConcepto de pivote
Ejemplo (Pivote en el interior de la pila)
La eleccion del pivote no es correcta: no se genera una derivacionpor la derecha en orden inverso
Pila Entrada Accion. . . . . . . . .
α β γ δ y z $ reducir B → δ
α β γ B y z $ se busca en el interior
α β γ B y z $ reducir C → β
α C γ B y z $ . . .
S∗⇒D
αCγByz ⇒C−→β
αβ γByz ⇒B−→δ
α β δ y z
Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 27 / 88
Procesadores de Lenguajes Tema V: Analisis Ascendente
IntroduccionConflictos
1 IntroduccionDescripcion generalConcepto de pivoteConflictosTipos de analisis sintactico ascendente
Metodos basados en reglas de precedenciaMetodos de analisis LRJustificacion de los metodos LR
Gramaticas LRTabla de analisis sintactico ascendente LR
Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 28 / 88
Procesadores de Lenguajes Tema V: Analisis Ascendente
IntroduccionConflictos
Definicion (Conflictos en el Analisis Sintactico Ascendente)
Un conflicto representa una situacion en la cual el analisissintactico ascendente puede elegir entre acciones diferentes
Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 29 / 88
Procesadores de Lenguajes Tema V: Analisis Ascendente
IntroduccionConflictos
Definicion (Tipos de conflicto)
Los conflictos pueden ser de dos tipos:
Desplazamiento-reduccion:
Se puede desplazar un sımbolo a la pila o reducir con una reglade produccion.
Reduccion-reduccion:
Se puede elegir una regla de produccion entre varias para hacerla reduccion.
Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 30 / 88
Procesadores de Lenguajes Tema V: Analisis Ascendente
IntroduccionConflictos
Definicion (Tipos de conflicto)
Los conflictos pueden ser de dos tipos:
Desplazamiento-reduccion:
Se puede desplazar un sımbolo a la pila o reducir con una reglade produccion.
Reduccion-reduccion:
Se puede elegir una regla de produccion entre varias para hacerla reduccion.
Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 31 / 88
Procesadores de Lenguajes Tema V: Analisis Ascendente
IntroduccionConflictos
Nota (Tipos de conflicto)
En el caso de conflicto de desplazamiento-reduccion, se sueleelegir el desplazamiento.
Los conflictos reduccion-reduccion
Son mucho mas graves y no se suelen permitir.Se debe reescribir la gramatica para eliminar el conflicto.
Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 32 / 88
Procesadores de Lenguajes Tema V: Analisis Ascendente
IntroduccionConflictos
Ejemplo (Conflicto desplazamiento-reduccion)
Supongase la siguiente gramatica:
P = {(1) E −→ E + E ;(2) E −→ E ∗ E(3) E −→ (E )(4) E −→ id(5) E −→ numero}
Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 33 / 88
Procesadores de Lenguajes Tema V: Analisis Ascendente
IntroduccionConflictos
Ejemplo (Conflicto desplazamiento-reduccion)
Esta gramatica genera expresiones aritmeticas.
La expresion id + id * id provoca un conflicto dedesplazamiento-reduccion
Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 34 / 88
Procesadores de Lenguajes Tema V: Analisis Ascendente
IntroduccionConflictos
Ejemplo (Conflicto desplazamiento-reduccion)
Pila Entrada Accionid + id * id $ desplazar id
id + id * id $ reducir (4) E −→ idE + id * id $ desplazar +E + id * id $ desplazar idE + id * id $ reducir (4) E −→ idE + E * id $ Conflicto:
desplazar *reducir (1) E −→ E + E
Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 35 / 88
Procesadores de Lenguajes Tema V: Analisis Ascendente
IntroduccionConflictos
Ejemplo (Conflicto desplazamiento-reduccion)
Si se elige la reduccion, el analisis continua de la siguiente forma:
Pila Entrada AccionE + E * id $ reducir (1) E −→ E + EE * id $ desplazar *E * id $ desplazar idE * id $ reducir (4) E −→ idE * E $ reducir (2) E −→ E ∗ EE $ ACEPTAR
Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 36 / 88
Procesadores de Lenguajes Tema V: Analisis Ascendente
IntroduccionConflictos
Ejemplo (Conflicto desplazamiento-reduccion)
E
E E
E E+
id id
*
id
Nota
La expresion es reconocida, pero el arbol sintactico asociado a laderivacion no respeta la precedencia de los operadores aritmeticos
Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 37 / 88
Procesadores de Lenguajes Tema V: Analisis Ascendente
IntroduccionConflictos
Ejemplo (Conflicto desplazamiento-reduccion)
Si se elige el desplazamiento, el analisis continua de la siguienteforma:
Pila Entrada Accion$ E + E * id $ desplazar *$ E + E * id $ desplazar id$ E + E * id $ reducir (4) E −→ id$ E + E * E $ reducir (2) E −→ E ∗ E$ E + E $ reducir (1) E −→ E + E$ E $ ACEPTAR
Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 38 / 88
Procesadores de Lenguajes Tema V: Analisis Ascendente
IntroduccionConflictos
Ejemplo (Conflicto desplazamiento-reduccion)
E
E E+
id *E E
id id
Nota
Si se elige el desplazamiento entonces el arbol sintactico sı respetala precedencia de los operadores aritmeticos
Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 39 / 88
Procesadores de Lenguajes Tema V: Analisis Ascendente
IntroduccionConflictos
Ejemplo (Conflicto desplazamiento-reduccion)
Expresiones aritmeticas
La gramatica utilizada es ambigua y no admite un analisissintactico ascendente.Se pueden utilizar otras gramaticas que no sean ambiguas yque sı admiten un analisis sintactico ascendente.
Otro ejemplo clasico que genera un conflicto es el denominadoproblema del else danzante (V. Aho, A. et al, 2008).
Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 40 / 88
Procesadores de Lenguajes Tema V: Analisis Ascendente
IntroduccionConflictos
Ejemplo (Conflicto reduccion-reduccion)
Pila Entrada Accionα β z $ reducir A −→ β
reducir B −→ β
Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 41 / 88
Procesadores de Lenguajes Tema V: Analisis Ascendente
IntroduccionConflictos
Ejemplo (Conflicto reduccion-reduccion)
En Fortran, una gramatica mal disenada puede generar el siguienteconflicto
Pila Entrada Accion· · · id(E ) · · · $ reducir F −→ id(E )
reducir A −→ id(E )
donde F genera funciones y A, componentes de “array”.
Nota
La solucion es reescribir la gramatica que genera el lenguajeFortran para que tenga en cuenta el tipo del identificador
Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 42 / 88
Procesadores de Lenguajes Tema V: Analisis Ascendente
IntroduccionTipos de analisis sintactico ascendente
1 IntroduccionDescripcion generalConcepto de pivoteConflictosTipos de analisis sintactico ascendente
Metodos basados en reglas de precedenciaMetodos de analisis LRJustificacion de los metodos LR
Gramaticas LRTabla de analisis sintactico ascendente LR
Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 43 / 88
Procesadores de Lenguajes Tema V: Analisis Ascendente
IntroduccionTipos de analisis sintactico ascendente
Tipos de analisis sintactico ascendente
Metodos basados en reglas de precedencia.
Metodos de analisis LR.
Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 44 / 88
Procesadores de Lenguajes Tema V: Analisis Ascendente
IntroduccionTipos de analisis sintactico ascendente
Tipos de analisis sintactico ascendente
Metodos basados en reglas de precedencia.
Metodos de analisis LR.
Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 45 / 88
Procesadores de Lenguajes Tema V: Analisis Ascendente
IntroduccionTipos de analisis sintactico ascendente
Metodos basados en reglas de precedencia
Establecen reglas de precedencia entre los sımbolos de lagramatica.
Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 46 / 88
Procesadores de Lenguajes Tema V: Analisis Ascendente
IntroduccionTipos de analisis sintactico ascendente
Metodos basados en reglas de precedencia
Existen los siguientes tipos:
Metodos de precedencia simple.
Metodos de precedencia debil.
Metodos de precedencia extendida.
Metodos de precedencia de estrategia mixta.
Metodos de precedencia de operadores.
Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 47 / 88
Procesadores de Lenguajes Tema V: Analisis Ascendente
IntroduccionTipos de analisis sintactico ascendente
Metodos basados en reglas de precedencia
Existen los siguientes tipos:
Metodos de precedencia simple.
Metodos de precedencia debil.
Metodos de precedencia extendida.
Metodos de precedencia de estrategia mixta.
Metodos de precedencia de operadores.
Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 48 / 88
Procesadores de Lenguajes Tema V: Analisis Ascendente
IntroduccionTipos de analisis sintactico ascendente
Metodos basados en reglas de precedencia
Existen los siguientes tipos:
Metodos de precedencia simple.
Metodos de precedencia debil.
Metodos de precedencia extendida.
Metodos de precedencia de estrategia mixta.
Metodos de precedencia de operadores.
Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 49 / 88
Procesadores de Lenguajes Tema V: Analisis Ascendente
IntroduccionTipos de analisis sintactico ascendente
Metodos basados en reglas de precedencia
Existen los siguientes tipos:
Metodos de precedencia simple.
Metodos de precedencia debil.
Metodos de precedencia extendida.
Metodos de precedencia de estrategia mixta.
Metodos de precedencia de operadores.
Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 50 / 88
Procesadores de Lenguajes Tema V: Analisis Ascendente
IntroduccionTipos de analisis sintactico ascendente
Metodos basados en reglas de precedencia
Existen los siguientes tipos:
Metodos de precedencia simple.
Metodos de precedencia debil.
Metodos de precedencia extendida.
Metodos de precedencia de estrategia mixta.
Metodos de precedencia de operadores.
Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 51 / 88
Procesadores de Lenguajes Tema V: Analisis Ascendente
IntroduccionTipos de analisis sintactico ascendente
Metodos de analisis LR
El significado de LR es el siguientes
L (left): se lee la cadena de entrada de izquierda a derecha.
R (right): se obtiene la derivacion por la derecha en ordeninverso.
Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 52 / 88
Procesadores de Lenguajes Tema V: Analisis Ascendente
IntroduccionTipos de analisis sintactico ascendente
Metodos de analisis LR
Metodo SLR.
Metodo LR-canonico.
Metodo LALR.
Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 53 / 88
Procesadores de Lenguajes Tema V: Analisis Ascendente
IntroduccionTipos de analisis sintactico ascendente
Metodos de analisis LR
Metodo SLR.
Metodo LR-canonico.
Metodo LALR.
Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 54 / 88
Procesadores de Lenguajes Tema V: Analisis Ascendente
IntroduccionTipos de analisis sintactico ascendente
Metodos de analisis LR
Metodo SLR.
Metodo LR-canonico.
Metodo LALR.
Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 55 / 88
Procesadores de Lenguajes Tema V: Analisis Ascendente
IntroduccionTipos de analisis sintactico ascendente
Justificacion de los metodos LR1 Se pueden construir analizadores sintacticos LR para la
mayorıa de las gramaticas.
2 El analisis LR es el metodo de desplazamiento-reduccion maseficiente.
3 Si una gramatica admite un analisis descendente predictivo,tambien admite un analisis LR (lo contrario no es cierto).
4 El analisis LR puede detectar un error tan pronto como seaposible, analizando la cadena de izquierda a derecha.
5 Existen generadores automaticos de analizadores sintacticosLR (v.gr: Yacc o Bison).
Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 56 / 88
Procesadores de Lenguajes Tema V: Analisis Ascendente
IntroduccionTipos de analisis sintactico ascendente
Justificacion de los metodos LR1 Se pueden construir analizadores sintacticos LR para la
mayorıa de las gramaticas.
2 El analisis LR es el metodo de desplazamiento-reduccion maseficiente.
3 Si una gramatica admite un analisis descendente predictivo,tambien admite un analisis LR (lo contrario no es cierto).
4 El analisis LR puede detectar un error tan pronto como seaposible, analizando la cadena de izquierda a derecha.
5 Existen generadores automaticos de analizadores sintacticosLR (v.gr: Yacc o Bison).
Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 57 / 88
Procesadores de Lenguajes Tema V: Analisis Ascendente
IntroduccionTipos de analisis sintactico ascendente
Justificacion de los metodos LR1 Se pueden construir analizadores sintacticos LR para la
mayorıa de las gramaticas.
2 El analisis LR es el metodo de desplazamiento-reduccion maseficiente.
3 Si una gramatica admite un analisis descendente predictivo,tambien admite un analisis LR (lo contrario no es cierto).
4 El analisis LR puede detectar un error tan pronto como seaposible, analizando la cadena de izquierda a derecha.
5 Existen generadores automaticos de analizadores sintacticosLR (v.gr: Yacc o Bison).
Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 58 / 88
Procesadores de Lenguajes Tema V: Analisis Ascendente
IntroduccionTipos de analisis sintactico ascendente
Justificacion de los metodos LR1 Se pueden construir analizadores sintacticos LR para la
mayorıa de las gramaticas.
2 El analisis LR es el metodo de desplazamiento-reduccion maseficiente.
3 Si una gramatica admite un analisis descendente predictivo,tambien admite un analisis LR (lo contrario no es cierto).
4 El analisis LR puede detectar un error tan pronto como seaposible, analizando la cadena de izquierda a derecha.
5 Existen generadores automaticos de analizadores sintacticosLR (v.gr: Yacc o Bison).
Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 59 / 88
Procesadores de Lenguajes Tema V: Analisis Ascendente
IntroduccionTipos de analisis sintactico ascendente
Justificacion de los metodos LR1 Se pueden construir analizadores sintacticos LR para la
mayorıa de las gramaticas.
2 El analisis LR es el metodo de desplazamiento-reduccion maseficiente.
3 Si una gramatica admite un analisis descendente predictivo,tambien admite un analisis LR (lo contrario no es cierto).
4 El analisis LR puede detectar un error tan pronto como seaposible, analizando la cadena de izquierda a derecha.
5 Existen generadores automaticos de analizadores sintacticosLR (v.gr: Yacc o Bison).
Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 60 / 88
Procesadores de Lenguajes Tema V: Analisis Ascendente
IntroduccionGramaticas LR
1 IntroduccionDescripcion generalConcepto de pivoteConflictosTipos de analisis sintactico ascendente
Metodos basados en reglas de precedenciaMetodos de analisis LRJustificacion de los metodos LR
Gramaticas LRTabla de analisis sintactico ascendente LR
Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 61 / 88
Procesadores de Lenguajes Tema V: Analisis Ascendente
IntroduccionGramaticas LR
Definicion (Gramatica LR (1/3))
G = (VN ,VT ,P, S) es una gramatica LR(k) si se verifica;
1 Se amplıa G de forma que el sımbolo inicial no este en laparte derecha de ninguna regla de produccion
G ′ = (V ′N ,V′T ,P
′, S ′)S ′ ∈ V ′N − VN
V ′N = VN ∪ {S ′}P ′ = P ∪ {S ′ −→ S}
Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 62 / 88
Procesadores de Lenguajes Tema V: Analisis Ascendente
IntroduccionGramaticas LR
Definicion (Gramatica LR (2/3))
2 si existen dos derivaciones por la derecha
S ′∗⇒D
αAw ⇒A→β
αβw
S ′∗⇒D
γBx ⇒B→β
αβy
3 donde los primeros k sımbolos de w y x son iguales.
w = σi1 . . . σikγ1 . . . γpy = σi1 . . . σikη
′1 . . . η
′q
Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 63 / 88
Procesadores de Lenguajes Tema V: Analisis Ascendente
IntroduccionGramaticas LR
Definicion (Gramatica LR (3/3))
entonces se verifica que
αAy = γBx
es decir
α = γ
A = B
x = y
Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 64 / 88
Procesadores de Lenguajes Tema V: Analisis Ascendente
IntroduccionGramaticas LR
Nota (Gramatica LR)
Configuracion correspondiente a S ′∗⇒D
αAw ⇒A→β
αβw
Pila Entrada Accion. . . . . .α β w $ reducir A −→ βα A w $. . . . . .
Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 65 / 88
Procesadores de Lenguajes Tema V: Analisis Ascendente
IntroduccionGramaticas LR
Nota (Gramatica LR)
Configuracion correspondiente a S ′∗⇒D
γBx ⇒B→β
αβy
Pila Entrada Accion. . . . . .γ β y $ reducir B −→ βγ B y $. . . . . .
Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 66 / 88
Procesadores de Lenguajes Tema V: Analisis Ascendente
IntroduccionGramaticas LR
Nota (Gramatica LR)
Los metodos de analisis sintactico ascendente LR(k) utilizanlos k primeros sımbolos de la entrada para determinarque accion se debe realizar.
Generalmente k = 1 y se utiliza una tabla de analisissintactico LR.
Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 67 / 88
Procesadores de Lenguajes Tema V: Analisis Ascendente
IntroduccionTabla de analisis sintactico ascendente LR
1 IntroduccionDescripcion generalConcepto de pivoteConflictosTipos de analisis sintactico ascendente
Metodos basados en reglas de precedenciaMetodos de analisis LRJustificacion de los metodos LR
Gramaticas LRTabla de analisis sintactico ascendente LR
Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 68 / 88
Procesadores de Lenguajes Tema V: Analisis Ascendente
IntroduccionTabla de analisis sintactico ascendente LR
Definicion (Tabla de analisis LR)
Permite comprobar si una gramatica de contexto libre admiteun analisis sintactico ascendente LR.
Consta de dos partes:
Parte Accion.Parte Ir-a.
Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 69 / 88
Procesadores de Lenguajes Tema V: Analisis Ascendente
IntroduccionTabla de analisis sintactico ascendente LR
Definicion (Estructura de la parte Accion)
Columnas: sımbolos terminales y $ (final de cadena).
Filas: estados generados a partir de la coleccion de elementosLR
Celdas: acciones que se pueden realizar
DesplazarReducirAceptarError
Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 70 / 88
Procesadores de Lenguajes Tema V: Analisis Ascendente
IntroduccionTabla de analisis sintactico ascendente LR
Acciones de la parte accion
1 Desplazar:
Se desplaza el primer sımbolo de la entrada a la cima de la pilay se indica a que estado pasa el analizador.
2 Reducir:
Se basa en el concepto de pivoteUtiliza una regla de produccion para sustituir, en la pila, laalternativa de la regla por el sımbolo de su parte izquierda
3 Aceptar: la cadena de entrada es reconocida.
4 Error: se llama a una funcion de control de errores.
Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 71 / 88
Procesadores de Lenguajes Tema V: Analisis Ascendente
IntroduccionTabla de analisis sintactico ascendente LR
Acciones de la parte accion
1 Desplazar:
Se desplaza el primer sımbolo de la entrada a la cima de la pilay se indica a que estado pasa el analizador.
2 Reducir:
Se basa en el concepto de pivoteUtiliza una regla de produccion para sustituir, en la pila, laalternativa de la regla por el sımbolo de su parte izquierda
3 Aceptar: la cadena de entrada es reconocida.
4 Error: se llama a una funcion de control de errores.
Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 72 / 88
Procesadores de Lenguajes Tema V: Analisis Ascendente
IntroduccionTabla de analisis sintactico ascendente LR
Acciones de la parte accion
1 Desplazar:
Se desplaza el primer sımbolo de la entrada a la cima de la pilay se indica a que estado pasa el analizador.
2 Reducir:
Se basa en el concepto de pivoteUtiliza una regla de produccion para sustituir, en la pila, laalternativa de la regla por el sımbolo de su parte izquierda
3 Aceptar: la cadena de entrada es reconocida.
4 Error: se llama a una funcion de control de errores.
Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 73 / 88
Procesadores de Lenguajes Tema V: Analisis Ascendente
IntroduccionTabla de analisis sintactico ascendente LR
Acciones de la parte accion
1 Desplazar:
Se desplaza el primer sımbolo de la entrada a la cima de la pilay se indica a que estado pasa el analizador.
2 Reducir:
Se basa en el concepto de pivoteUtiliza una regla de produccion para sustituir, en la pila, laalternativa de la regla por el sımbolo de su parte izquierda
3 Aceptar: la cadena de entrada es reconocida.
4 Error: se llama a una funcion de control de errores.
Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 74 / 88
Procesadores de Lenguajes Tema V: Analisis Ascendente
IntroduccionTabla de analisis sintactico ascendente LR
Nota (Abreviaturas)
d n: se desplaza el primer sımbolo σ de la entrada a la pila yse pasa al estado n
r k: se reduce con la regla de produccion numero k
Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 75 / 88
Procesadores de Lenguajes Tema V: Analisis Ascendente
IntroduccionTabla de analisis sintactico ascendente LR
Definicion (Estructura de la parte Ir-a)
Columnas: sımbolos no terminales dela gramatica.
Filas: estados generados a partir de la coleccion de elementosLR
Celdas: indican las transiciones entre estados
Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 76 / 88
Procesadores de Lenguajes Tema V: Analisis Ascendente
IntroduccionTabla de analisis sintactico ascendente LR
Nota (Ir-a)
La parte Ir-a solo se consultara cuando se produzca unareduccion.
Las celdas vacıas nunca se consultaran.
Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 77 / 88
Procesadores de Lenguajes Tema V: Analisis Ascendente
IntroduccionTabla de analisis sintactico ascendente LR
Estructura de la tabla LR
Accion Ir-aσ1 σ2 . . . σn $ A1 . . . Am
s0
s1
. . .
sk
donde
∀i ∈ {1, . . . , k} si es un estado del analizador sintactico
∀i ∈ {1, . . . , n} σi ∈ VT
∀i ∈ {1, . . . ,m} Ai ∈ VN
Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 78 / 88
Procesadores de Lenguajes Tema V: Analisis Ascendente
IntroduccionTabla de analisis sintactico ascendente LR
Funcionamiento del analisis sintactico LR (1/4)
1 Si accion[s, σ] = d j entonces
se desplaza el primer sımbolo de la entrada a la pilay se pasa al estado j
Pila Entrada Accion. . . s σ σ′ . . . $ desplazar j. . . s σ j σ′ . . . $ . . .
Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 79 / 88
Procesadores de Lenguajes Tema V: Analisis Ascendente
IntroduccionTabla de analisis sintactico ascendente LR
Funcionamiento del analisis sintactico LR (2/4)
2 Si accion[s, σ] = r k entonces
se reduce con la regla numero k: A −→ β, dondeβ = Xi1 . . .Xih
y se pasa al estado indicado por ir-a[s ′,A] = j
Pila Entrada Accion. . . s’ Xi1 sj1 . . .Xih−1
sjh−1Xih s σ . . . $ reducir (k) A −→ β
. . . s’ A j σ . . . $ . . .
Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 80 / 88
Procesadores de Lenguajes Tema V: Analisis Ascendente
IntroduccionTabla de analisis sintactico ascendente LR
Funcionamiento del analisis sintactico LR (3/4)
3 Si accion[s, $] = Aceptar entonces
la cadena de entrada es reconociday el analisis sintactico ascendente finaliza.
Pila Entrada Accion. . . s $ Aceptar
Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 81 / 88
Procesadores de Lenguajes Tema V: Analisis Ascendente
IntroduccionTabla de analisis sintactico ascendente LR
Funcionamiento del analisis sintactico LR (4/4)
4 Si accion[s, σ] = E n entonces llama a la funcion de controlde errores numero n
Pila Entrada Accion. . . s σ . . . $ E n
Nota
Los metodos de recuperacion de errores se describiran al final deltema.
Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 82 / 88
Procesadores de Lenguajes Tema V: Analisis Ascendente
IntroduccionTabla de analisis sintactico ascendente LR
Comparacion de los metodos de analisis LR
Metodo Potencia Tamano de tablaSLR 3o 1o
LR-canonico 1o 2o
LALR 2o 1o
Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 83 / 88
Procesadores de Lenguajes Tema V: Analisis Ascendente
IntroduccionTabla de analisis sintactico ascendente LR
Ejemplo (Gramatica que genera prototipos de funciones en C)
P = {(1′) S ′ −→ S(1) S −→ T id (L) ;(2) T −→ T *(3) T −→ int(4) L −→ L,T(5) L −→ T}
Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 84 / 88
Procesadores de Lenguajes Tema V: Analisis Ascendente
IntroduccionTabla de analisis sintactico ascendente LR
Ejemplo (Tabla LR para la gramatica de los prototipos)Accion Ir-a
id ( ) ; * int , $ S T L
0 d3 1 21 Aceptar2 d4 d53 r3 r3 r3 r34 d65 r2 r2 r2 r26 d3 8 77 d9 d108 r5 d5 r59 d11
10 d3 1211 r112 r4 d5 r4
Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 85 / 88
Procesadores de Lenguajes Tema V: Analisis Ascendente
IntroduccionTabla de analisis sintactico ascendente LR
Ejemplo (Analisis sintactico ascendente LR (1 de 2))
Pila Entrada Accion0 int * id ( int ) ; $ desplazar 30 int 3 * id ( int ) ; $ reducir (3) T −→ int0 T 2 * id ( int ) ; $ desplazar 50 T 2 * 5 id ( int ) ; $ reducir (2) T −→ T *0 T 2 id ( int ) ; $ desplazar 4O T 2 id 4 ( int ) ; $ desplazar 60 T 2 id 4 ( 6 int ) ; $ desplazar 30 T 2 id 4 ( 6 int 3 ) ; $ reducir (3) T −→ int
Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 86 / 88
Procesadores de Lenguajes Tema V: Analisis Ascendente
IntroduccionTabla de analisis sintactico ascendente LR
Ejemplo (Analisis sintactico ascendente LR (2 de 2))
Pila Entrada Accion0 T 2 id 4 ( 6 int 3 ) ; $ reducir (3) T −→ int0 T 2 id 4 ( 6 T 8 ) ; $ reducir (5) L −→ T0 T 2 id 4 ( 6 L 7 ) ; $ desplazar 70 T 2 id 4 ( 6 L 7 ) 9 ; $ desplazar 110 T 2 id 4 ( 6 L 7 ) 9 ; 11 $ reducir (1) S −→ T id (L);
0 S 1 $ Aceptar
Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 87 / 88
Procesadores de Lenguajes Tema V: Analisis Ascendente
PROCESADORES DE LENGUAJESTEMA V: ANALISIS ASCENDENTE
Prof. Dr. Nicolas Luis Fernandez Garcıa
Departamento de Informatica y Analisis NumericoEscuela Politecnica Superior de Cordoba
Universidad de Cordoba
Universidad de Cordoba: Escuela Politecnica Superior Ingenierıa Informatica 88 / 88