PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos...

436
Procesadores de Lenguajes Tema III.- Fundamentos te´oricos del an´ alisis sint´ actico PROCESADORES DE LENGUAJES TEMA III.- FUNDAMENTOS TE ´ ORICOS DEL AN ´ ALISIS SINT ´ ACTICO Prof. Dr. Nicol´ as Luis Fern´ andez Garc´ ıa Departamento de Inform´ atica y An´ alisis Num´ erico Escuela Polit´ ecnica Superior Universidad de C´ordoba Universidad de C´ordoba: Escuela Polit´ ecnica Superior Ingenier´ ıa Inform´ atica 1/ 436

Transcript of PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos...

Page 1: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

PROCESADORES DE LENGUAJESTEMA III.- FUNDAMENTOS TEORICOS DEL ANALISIS

SINTACTICO

Prof. Dr. Nicolas Luis Fernandez Garcıa

Departamento de Informatica y Analisis NumericoEscuela Politecnica Superior

Universidad de Cordoba

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

Page 2: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

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

Page 3: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Programa

1 Introduccion

2 Gramaticas de contexto libre

3 Ambiguedad

4 Operaciones de limpieza

5 Recursividad y factorizacion

6 Formas normales

7 Tipos de analisis sintactico

8 Deteccion y tratamiento deerrores sintacticos

9 Generadores de analizadoressintacticos

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

Page 4: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Introduccion

1 Introduccion

2 Gramaticas de contexto libre

3 Ambiguedad

4 Operaciones de limpieza

5 Recursividad y factorizacion

6 Formas normales

7 Tipos de analisis sintactico

8 Deteccion y tratamiento deerrores sintacticos

9 Generadores de analizadoressintacticos

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

Page 5: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Introduccion

1 IntroduccionEl analisis sintactico en el proceso de traduccion

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

Page 6: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Contenido de la seccion

1 IntroduccionEl analisis sintactico en el proceso de traduccion

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

Page 7: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

IntroduccionEl analisis sintactico en el proceso de traduccion

Tabla de símbolos

Sintáctico

Componentes léxicos

Árbol

SintácticoAnálisis

Gestor de errores

Analisis sintactico.

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

Page 8: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

IntroduccionEl analisis sintactico en el proceso de traduccion

Tareas del analisis sintactico

Recibir los componentes lexicos.

Comprobar que se cumplen las reglas sintacticas de lenguajede programacion:

Utiliza una gramatica de contexto libre.Genera un arbol sintatico de forma figurada.

Nota (Observaciones)

No tiene contacto directo con el programa fuente.

Tiene acceso a la tabla de sımbolos.

Se comunica con el gestor de errores.

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

Page 9: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

IntroduccionEl analisis sintactico en el proceso de traduccion

Justificacion del uso de las gramaticas de contexto libre

1 Permiten especificar sintacticamente las sentencias de loslenguajes de programacion.

2 Existen herramientas de generadores de analizadoressintacticos a partir de una gramatica: YACC, ANTLR, etc.

3 Facilitan la generacion de codigo

4 Facilitan la deteccion y el procesamiento de los errores.

5 Permiten la ampliacion del lenguaje.

Nota

Las gramaticas de contexto libres son potentes, pero tambientienen sus limitaciones.

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

Page 10: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

IntroduccionEl analisis sintactico en el proceso de traduccion

Ejemplo (Lenguaje que no es de contexto libre)

L={anbncn | n ≥ 1} = {abc, aabbcc, aaabbbccc, ...}

Este lenguaje no puede ser generado por una gramatica decontexto libre.

Se demuestra con el lema de bombeo de los lenguajes decontexto libre.

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

Page 11: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

IntroduccionEl analisis sintactico en el proceso de traduccion

Ejemplo (Coordinacion de argumentos de una funcion)

int mcd(int a, int b);. . .main (){

c=mcd (18, 12);}

int mcd (int a, int b){

return ...;}

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

Page 12: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

IntroduccionEl analisis sintactico en el proceso de traduccion

Ejemplo (Lenguajes que sı son de contexto libre)

L = {anbn | n ≥ 1} = {ab, aabb, . . . }L = {aibjck | i, j, k ≥ 1} = {a, ab, aab, . . . }

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

Page 13: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Gramaticas de contexto libre

1 Introduccion

2 Gramaticas de contexto libre

3 Ambiguedad

4 Operaciones de limpieza

5 Recursividad y factorizacion

6 Formas normales

7 Tipos de analisis sintactico

8 Deteccion y tratamiento deerrores sintacticos

9 Generadores de analizadoressintacticos

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

Page 14: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Gramaticas de contexto libre

2 Gramaticas de contexto libreIntroduccionDefinicionConvenios de notacionDerivacionArbol sintactico asociado a una derivacionLenguaje generado por una gramatica

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

Page 15: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Contenido de la seccion

2 Gramaticas de contexto libreIntroduccionDefinicionConvenios de notacionDerivacionArbol sintactico asociado a una derivacionLenguaje generado por una gramatica

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

Page 16: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Gramaticas de contexto libreIntroduccion

Gramaticas

Indican las reglas sintacticas de los lenguajes.

Pueden generar

frases de lenguajes naturalescadenas de lenguajes formales

Los lenguajes de programacion son un caso particular delenguajes formales.

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

Page 17: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Gramaticas de contexto libreIntroduccion

Ejemplo (Gramatica que genera frases copulativas 1 / 6)

(1) <oracion> −→ <sujeto> <verbo> <atributo>

(2) <sujeto> −→ <artıculo> <nombre>

(3) <artıculo> −→ el

(4) <artıculo> −→ la

(5) <nombre> −→ hombre

(6) <nombre> −→ nina

· · ·

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

Page 18: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Gramaticas de contexto libreIntroduccion

Ejemplo (Gramatica que genera frases copulativas 2 / 6)· · ·

(7) <verbo> −→ es

(8) <verbo> −→ esta

(9) <verbo> −→ parece

(10) <atributo> −→ <adjetivo>

(11) <adjetivo> −→ alto

(12) <adjetivo> −→ bella

(13) <adjetivo> −→ inteligente

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

Page 19: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Gramaticas de contexto libreIntroduccion

Ejemplo (Agrupamiento de reglas 3 / 6)

<artıculo> −→ el | la | un | una

<nombre> −→ hombre | nina

<verbo> −→ es | esta | parece

<adjetivo> −→ alto | bella | inteligente

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

Page 20: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Gramaticas de contexto libreIntroduccion

Ejemplo (Generacion de una frase mediante derivacion 4 / 6)

<oracion> =⇒1

<sujeto> <verbo> <atributo>

=⇒2

<artıculo> <nombre> <verbo> <atributo>

=⇒4

la <nombre> <verbo> <atributo>

=⇒6

la nina <verbo> <atributo>

=⇒7

la nina es <atributo>

=⇒10

la nina es <adjetivo>

=⇒13

la nina es inteligente

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

Page 21: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Gramaticas de contexto libreIntroduccion

Ejemplo (Generacion de una frase mediante derivacion 5 / 6)

Notacion abreviada

<oracion>+

=⇒ la nina es inteligente

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

Page 22: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Gramaticas de contexto libreIntroduccion

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

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

Page 23: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Gramaticas de contexto libreIntroduccion

Nota (Limitacion de las gramaticas de contexto libre 1 / 2)

Error semantico

<oracion> =⇒1

<sujeto> <verbo> <atributo>

=⇒2

<artıculo> <nombre> <verbo> <atributo>

=⇒4

la < nombre> <verbo> <atributo>

=⇒5

la hombre < verbo> <atributo>

=⇒9

la hombre parece <atributo>

=⇒10

la hombre parece <adjetivo>

=⇒12

la hombre parece bella

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

Page 24: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Gramaticas de contexto libreIntroduccion

Nota (Limitacion de las gramaticas de contexto libre 2 / 2)

La derivacion

<oracion>+

=⇒ la hombre parece bella

es sintacticamente correcta

pero no es semanticamente correcta

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

Page 25: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Gramaticas de contexto libreIntroduccion

Ejemplo (Modelo limitado de la gramatica 1 / 2)

Reglas de produccion de la gramatica que genera frasescopulativas

(1) <oracion> −→ <sujeto> verbo<atributo>(2) <sujeto> −→ artıculo nombre(3) <atributo> −→ adjetivo

Componentes lexicos reconocidos por el analizador lexico

artıculo: el, la, los, las, un, una.nombre: hombre, mujer, nino, nina, . . ..verbo: es, esta, perece, son, estan, parecen, . . ..adjetivo: alto, alta, bella, bello, inteligente, · · ·

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

Page 26: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Gramaticas de contexto libreIntroduccion

Ejemplo (Modelo limitado de la gramatica 2 / 2)

<oracion> =⇒1

<sujeto> verbo <atributo>

=⇒2

artıculo nombre verbo <atributo>

=⇒3

artıculo nombre verbo adjetivo

Esta derivacion es sintacticamente correcta para las siguientes frasescopulativas

Semanticamente correctas

la nina es inteligentela mujer es alta

Semanticamente incorrectas

la hombre parece bellalos mujer son inteligente

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

Page 27: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Gramaticas de contexto libreIntroduccion

Ejemplo (Expresiones aritmeticas: gramatica 1 / 3)

P = {(1) <asignacion> −→ identificador = <expresion>(2) <expresion> −→ <expresion> + <sumando>(3) <expresion> −→ <sumando>(4) <sumando> −→ <sumando> * <factor>(5) <sumando> −→ <factor>(6) <factor> −→ numero(7) <factor> −→ identificador(8) <factor> −→ (<expresion>)

}

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

Page 28: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Gramaticas de contexto libreIntroduccion

Ejemplo (Expresiones aritmeticas: derivacion 3 / 3)

<asignacion> =⇒1

identificador = <expresion>

=⇒2

identificador = <expresion> + <sumando>

=⇒3

identificador = <sumando> + <sumando>

=⇒4

identificador = <sumando> * <factor> + <sumando>

=⇒5

identificador = <factor> * <factor> + <sumando>

=⇒6

identificador = numero * <factor> + <sumando>

=⇒7

identificador = numero * identificador + <sumando>

=⇒5

identificador = numero * identificador + <factor>

=⇒6

identificador = numero * identificador + identificador

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

Page 29: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Gramaticas de contexto libreIntroduccion

Ejemplo (Expresiones aritmeticas: derivacion abreviada 3 / 3)

<asignacion>+

=⇒ identificador = numero * identificador + identificador

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

Page 30: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Contenido de la seccion

2 Gramaticas de contexto libreIntroduccionDefinicionConvenios de notacionDerivacionArbol sintactico asociado a una derivacionLenguaje generado por una gramatica

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

Page 31: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Gramaticas de contexto libreDefinicion

Definicion (Gramatica de Contexto Libre)

G = (VN, VT, P, S)

VN : alfabeto o vocabulario no terminalVT : alfabeto o vocabulario terminalSe verifica queVN ∩ VT = ∅Vocabulario de la gramaticaV = VN ∪ VT

Conjunto de reglas de produccionP = {A −→ α | A ∈ VN ∧ α ∈ V* = (VN ∪ VT)*}Sımbolo inicialS ∈ VN

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

Page 32: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Gramaticas de contexto libreDefinicion

Notas (Gramatica de Contexto Libre)

VN tambien se puede denotar por ΣN o N

VT tambien se puede denotar por ΣT o T

V tambien se puede denotar por Σ

El sımbolo inicial S tambien se denomina axioma o sımbolodistinguido

Si A −→ α ∈ P entonces se dice que

A: sımbolo no terminal de la parte izquierda de la regla.α: parte derecha o alternativa de la regla.

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

Page 33: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Gramaticas de contexto libreDefinicion

Ejemplo (Expresiones aritmeticas: gramatica 1 / 3)

VN = {S, E}VT = {identificador, =, +, *, (, ), numero}P = {(1) S −→ identificador = E(2) E −→ E + E(3) E −→ E * E(4) E −→ ( E )(5) E −→ numero(6) E −→ identificador

}

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

Page 34: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Gramaticas de contexto libreDefinicion

Ejemplo (Expresiones aritmeticas: derivacion 2 / 3)

S =⇒1

identificador = E

=⇒2

identificador = E + E

=⇒6

identificador = identificador + E

=⇒3

identificador = identificador + E * E

=⇒5

identificador = identificador + numero * E

=⇒6

identificador = identificador + numero * identificador

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

Page 35: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Gramaticas de contexto libreDefinicion

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

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

Page 36: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Gramaticas de contexto libreDefinicion

Ejemplo (Palındromo impar: gramatica 1 / 3)

P = {(1) S −→ a A a(2) A −→ a A a(3) A −→ b B b(4) B −→ b B b(5) B −→ c

}

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

Page 37: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Gramaticas de contexto libreDefinicion

Nota (Palındromo impar: caracterısticas 2 / 3)

Se denomina palındromo impar porque cada palabra

se puede leer igual

de izquierda a derecha que de derecha a izquierda

y tiene un elemento central que divide a la palabra.

L(G) = { ai bj c bj ai |i , j ≥ 1}= {a b c b a , a b b c b b a, . . . }

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

Page 38: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Gramaticas de contexto libreDefinicion

Ejemplo (Palındromo impar: derivacion 3 / 3)

S =⇒1

a A a

=⇒2

a a A a a

=⇒3

a a b B b a a

=⇒4

a a b b B b b a a

=⇒5

a a b b c b b a a

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

Page 39: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Contenido de la seccion

2 Gramaticas de contexto libreIntroduccionDefinicionConvenios de notacionDerivacionArbol sintactico asociado a una derivacionLenguaje generado por una gramatica

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

Page 40: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Gramaticas de contexto libreConvenios de notacion

Convenios de notacion 1 / 7

(1) Sımbolos terminales: VT

Primeras letras minusculas del alfabeto latino:a, b, c, . . .

Operadores aritmeticos, logicos, relacionales:+, -, *, /, &&, ||, <, >, =, . . .

Numeros:0, 1, . . ., 9, 1.7, -83,01, 7 i, 2 + 3 i,

Palabras reservadas:if, else, for, . . .

Signos de puntuacion:., ;, :, {, }, [, ], (, ), . . .

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

Page 41: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Gramaticas de contexto libreConvenios de notacion

Convenios de notacion 2 / 7

(2) Sımbolos no terminales: VN

Primeras letras mayusculas del alfabeto latino:A, B, C, . . . y la letra S.

Palabras delimitadas por < y >:<oracion>, <expresion>, . . .

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

Page 42: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Gramaticas de contexto libreConvenios de notacion

Convenios de notacion 3 / 7

(3) Sımbolos gramaticales: V = VN ∪ VT

Ultimas letras mayusculas del alfabeto latino:. . . X, Y, Z

Ejemplos

X =

a ∈ VT

if ∈ VT

A ∈ VN

< sumando >∈ VN

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

Page 43: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Gramaticas de contexto libreConvenios de notacion

Convenios de notacion 4 / 7

(4) Cadenas de sımbolos gramaticales: V ∗ = (VN ∪ VT )∗

Primeras letras minusculas del alfabeto griego:α, β, . . .

Ejemplos

α =

ε

a

B

aBB

identificador = identificador + < sumando >

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

Page 44: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Gramaticas de contexto libreConvenios de notacion

Convenios de notacion 5 / 7

(5) Cadenas de sımbolos terminales: V ∗TUltimas letras minusculas del alfabeto latino:. . ., x, y, z

Ejemplos

x =

ε

a b b c b b a

identificador = numero * identificador + identificador

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

Page 45: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Gramaticas de contexto libreConvenios de notacion

Convenios de notacion 6 / 7

(6) Palabra vacıa: ε o λ

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

Page 46: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Gramaticas de contexto libreConvenios de notacion

Convenios de notacion 7 / 7

(7) Agrupamiento de reglas:Las reglas

(1) A −→ α1

(2) A −→ α2

· · ·(n) A −→ αn

se agrupan de la siguiente forma:A −→ α1 | α2 | · · · | αn

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

Page 47: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Gramaticas de contexto libreConvenios de notacion

Ejemplo (Notacion)

P = {S −→ a A BA −→ a A b | c B dB −→ c B d | c d

}

VN = {S, A, B}VT = {a, b, c, d}

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

Page 48: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Contenido de la seccion

2 Gramaticas de contexto libreIntroduccionDefinicionConvenios de notacionDerivacionArbol sintactico asociado a una derivacionLenguaje generado por una gramatica

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

Page 49: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Gramaticas de contexto libreDerivacion

Derivacion

Derivacion inmediata

Derivacion general

Derivacion por la izquierda

Derivacion por la derecha

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

Page 50: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Gramaticas de contexto libreDerivacion

Derivacion

Derivacion inmediata

Derivacion general

Derivacion por la izquierda

Derivacion por la derecha

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

Page 51: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Gramaticas de contexto libreDerivacion

Definicion (Derivacion inmediata)

Sea G = (VN, VT, P, S) una gramatica de contexto libre

Si α = δ A γ ∈ V +

y A −→ β ∈ P

entonces se obtiene la siguiente derivacion inmediata

α = δ A γ =⇒(A−→β)

δ β γ = α′

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

Page 52: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Gramaticas de contexto libreDerivacion

Derivacion

Derivacion inmediata

Derivacion general

Derivacion por la izquierda

Derivacion por la derecha

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

Page 53: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Gramaticas de contexto libreDerivacion

Definicion (Derivacion general)

Sea G = (VN, VT, P, S) una gramatica de contexto libre

Una derivacion general es una secuencia de cadenas

α0, α1, α2, · · · , αn ∈ V∗

donde ∀i ∈ {0, 1, · · · , n − 1}αi deriva de forma inmediata a αi+1

α0 =⇒ α1

α1 =⇒ α2

· · ·αn−1 =⇒ αn

Forma equivalente

α0 =⇒ α1 =⇒ α2 =⇒ · · · =⇒ αn

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

Page 54: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Gramaticas de contexto libreDerivacion

Nota (Derivacion general)

La derivacion general

α0 =⇒ α1 =⇒ α2 =⇒ · · · =⇒ αn

se puede denotar como

derivacion en n pasos: α0n

=⇒ αn

derivacion en cero o mas pasos: α0∗

=⇒ αn

derivacion en uno o mas pasos: α0+

=⇒ αn

∀α ∈ V ∗ se verifica que

α0

=⇒ α

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

Page 55: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Gramaticas de contexto libreDerivacion

Ejemplo (Derivacion: gramatica 1 / 8)

VN = {S, E}VT = {identificador, =, +, *, (, ), numero}P = {(1) S −→ identificador = E(2) E −→ E + E(3) E −→ E * E(4) E −→ ( E )(5) E −→ numero(6) E −→ identificador

}

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

Page 56: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Gramaticas de contexto libreDerivacion

Ejemplo (Derivacion 2 / 8)

S =⇒1

identificador = E

=⇒3

identificador = E * E

=⇒6

identificador = E * identificador

=⇒2

identificador = E + E * identificador

=⇒5

identificador = E + numero * identificador

=⇒6

identificador = identificador + numero * identificador

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

Page 57: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Gramaticas de contexto libreDerivacion

Ejemplo (Derivacion 3 / 8)

ε︸︷︷︸δ

S︸︷︷︸A

ε︸︷︷︸γ

=⇒1

ε︸︷︷︸δ

identificador =E︸ ︷︷ ︸β

ε︸︷︷︸γ

=⇒3

identificador = E * E

=⇒6

identificador = E * identificador

=⇒2

identificador = E + E * identificador

=⇒5

identificador = E + numero * identificador

=⇒6

identificador = identificador + numero * identificador

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

Page 58: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Gramaticas de contexto libreDerivacion

Ejemplo (Derivacion 4 / 8)

S =⇒1

identificador =︸ ︷︷ ︸δ

E︸︷︷︸A

ε︸︷︷︸γ

=⇒3

identificador =︸ ︷︷ ︸δ

E∗E︸︷︷︸β

ε︸︷︷︸γ

=⇒6

identificador = E * identificador

=⇒2

identificador = E + E * identificador

=⇒5

identificador = E + numero * identificador

=⇒6

identificador = identificador + numero * identificador

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

Page 59: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Gramaticas de contexto libreDerivacion

Ejemplo (Derivacion 5 / 8)

S =⇒1

identificador = E

=⇒3

identificador =E∗︸ ︷︷ ︸δ

E︸︷︷︸A

ε︸︷︷︸γ

=⇒6

identificador =E∗︸ ︷︷ ︸δ

identificador︸ ︷︷ ︸β

ε︸︷︷︸γ

=⇒2

identificador = E + E * identificador

=⇒5

identificador = E + numero * identificador

=⇒6

identificador = identificador + numero * identificador

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

Page 60: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Gramaticas de contexto libreDerivacion

Ejemplo (Derivacion 6 / 8)

S =⇒1

identificador = E

=⇒3

identificador = E * E

=⇒6

identificador =︸ ︷︷ ︸δ

E︸︷︷︸A

∗ identificador︸ ︷︷ ︸γ

=⇒2

identificador =︸ ︷︷ ︸δ

E +E︸ ︷︷ ︸β

∗ identificador︸ ︷︷ ︸γ

=⇒5

identificador = E + numero * identificador

=⇒6

identificador = identificador + numero * identificador

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

Page 61: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Gramaticas de contexto libreDerivacion

Ejemplo (Derivacion 7 / 8)

S =⇒1

identificador = E

=⇒3

identificador = E * E

=⇒6

identificador = E * identificador

=⇒2

identificador =E +︸ ︷︷ ︸δ

E︸︷︷︸A

∗ identificador︸ ︷︷ ︸γ

=⇒5

identificador =E +︸ ︷︷ ︸δ

numero︸ ︷︷ ︸β

∗ identificador︸ ︷︷ ︸γ

=⇒6

identificador = identificador + numero * identificador

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

Page 62: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Gramaticas de contexto libreDerivacion

Ejemplo (Derivacion 8 / 8)

S =⇒1

identificador = E

=⇒3

identificador = E * E

=⇒6

identificador = E * identificador

=⇒2

identificador = E + E * identificador

=⇒5

identificador =︸ ︷︷ ︸δ

E︸︷︷︸A

+numero ∗ identificador︸ ︷︷ ︸γ

=⇒6

identificador =︸ ︷︷ ︸δ

identificador︸ ︷︷ ︸β

+numero ∗ identificador︸ ︷︷ ︸γ

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

Page 63: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Gramaticas de contexto libreDerivacion

Ejemplo (Gramatica 1 / 2)

P = {(1) S −→ a A a(2) A −→ a A a(3) A −→ b B b(4) B −→ b B b(5) B −→ c

}

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

Page 64: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Gramaticas de contexto libreDerivacion

Ejemplo (Derivacion 2 / 2)

S =⇒1

a A a

=⇒2

a a A a a

=⇒3

a a b B b a a

=⇒4

a a b b B b b a a

=⇒5

a a b b c b b a a ∈ V*T

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

Page 65: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Gramaticas de contexto libreDerivacion

Derivacion

Derivacion inmediata

Derivacion general

Derivacion por la izquierda

Derivacion por la derecha

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

Page 66: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Gramaticas de contexto libreDerivacion

Definicion (Derivacion inmediata por la izquierda)

G = ( VN, VT, P, S)

Si A −→ β ∈ P y α = x A γ

entonces la derviacion inmediata por la izquierda se definecomo:

α = x A γ =⇒(A−→β)

x β γ = α′

donde

x ∈ V ∗TA ∈ VN

β, γ ∈ V ∗

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

Page 67: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Gramaticas de contexto libreDerivacion

Nota (Derivacion inmediata por la izquierda)

Siempre se procesa el sımbolo no terminal situado mas a laizquierda.

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

Page 68: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Gramaticas de contexto libreDerivacion

Definicion (Derivacion por la izquierda)

Una derivacion es por la izquierda si todas sus derivacionesinmediatas son por la izquierda.

α0 =⇒Iα1

α1 =⇒Iα2

· · ·αn−1 =⇒

Iαn

que es equivalente a

α0 =⇒Iα1 =⇒

Iα2 =⇒

I. . . =⇒

Iαn

α0∗

=⇒Iαn

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

Page 69: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Gramaticas de contexto libreDerivacion

Ejemplo (Derivacion por la izquierda: gramatica 1 / 8)

VN = {S, E}VT = {identificador, =, +, *, (, ), numero}P = {(1) S −→ identificador = E(2) E −→ E + E(3) E −→ E * E(4) E −→ ( E )(5) E −→ numero(6) E −→ identificador

}

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

Page 70: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Gramaticas de contexto libreDerivacion

Ejemplo (Derivacion por la izquierda 2 / 8)

S =⇒1

identificador = E

=⇒2

identificador = E + E

=⇒6

identificador = identificador + E

=⇒3

identificador = identificador + E * E

=⇒5

identificador = identificador + numero * E

=⇒6

identificador = identificador + numero * identificador

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

Page 71: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Gramaticas de contexto libreDerivacion

Ejemplo (Derivacion por la izquierda 3 / 8)

ε︸︷︷︸x

S︸︷︷︸A

ε︸︷︷︸γ

=⇒1

ε︸︷︷︸x

identificador =E︸ ︷︷ ︸β

ε︸︷︷︸γ

=⇒2

identificador = E + E

=⇒6

identificador = identificador + E

=⇒3

identificador = identificador + E * E

=⇒5

identificador = identificador + numero * E

=⇒6

identificador = identificador + numero * identificador

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

Page 72: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Gramaticas de contexto libreDerivacion

Ejemplo (Derivacion por la izquierda 4 / 8)

S =⇒1

identificador =︸ ︷︷ ︸x

E︸︷︷︸A

ε︸︷︷︸γ

=⇒2

identificador =︸ ︷︷ ︸x

E +E︸ ︷︷ ︸β

ε︸︷︷︸γ

=⇒6

identificador = identificador + E

=⇒3

identificador = identificador + E * E

=⇒5

identificador = identificador + numero * E

=⇒6

identificador = identificador + numero * identificador

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

Page 73: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Gramaticas de contexto libreDerivacion

Ejemplo (Derivacion por la izquierda 5 / 8)

S =⇒1

identificador = E

=⇒2

identificador =︸ ︷︷ ︸x

E︸︷︷︸A

+E︸︷︷︸γ

=⇒6

identificador =︸ ︷︷ ︸x

identificador︸ ︷︷ ︸β

+E︸︷︷︸γ

=⇒3

identificador = identificador + E * E

=⇒5

identificador = identificador + numero * E

=⇒6

identificador = identificador + numero * identificador

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

Page 74: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Gramaticas de contexto libreDerivacion

Ejemplo (Derivacion por la izquierda 6 / 8)

S =⇒1

identificador = E

=⇒2

identificador = E + E

=⇒6

identificador = identificador+︸ ︷︷ ︸x

E︸︷︷︸A

ε︸︷︷︸γ

=⇒6

identificador = identificador+︸ ︷︷ ︸x

E∗E︸︷︷︸β

ε︸︷︷︸γ

=⇒5

identificador = identificador + numero * E

=⇒6

identificador = identificador + numero * identificador

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

Page 75: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Gramaticas de contexto libreDerivacion

Ejemplo (Derivacion por la izquierda 7 / 8)

S =⇒1

identificador = E

=⇒2

identificador = E + E

=⇒6

identificador = identificador + E

=⇒6

identificador = identificador+︸ ︷︷ ︸x

E︸︷︷︸A

∗E︸︷︷︸γ

=⇒5

identificador = identificador+︸ ︷︷ ︸x

numero︸ ︷︷ ︸β

∗E︸︷︷︸γ

=⇒6

identificador = identificador + numero * identificador

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

Page 76: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Gramaticas de contexto libreDerivacion

Ejemplo (Derivacion por la izquierda 8 / 8)

S =⇒1

identificador = E

=⇒2

identificador = E + E

=⇒6

identificador = identificador + E

=⇒3

identificador = identificador + E * E

=⇒5

identificador = identificador + numero ∗︸ ︷︷ ︸x

E︸︷︷︸A

ε︸︷︷︸γ

=⇒6

identificador = identificador + numero ∗︸ ︷︷ ︸x

identificador︸ ︷︷ ︸β

ε︸︷︷︸γ

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

Page 77: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Gramaticas de contexto libreDerivacion

Nota

Lo deseable es que la gramatica solo tenga una derivacion porla izquierda para cada cadena de sımbolos terminales.

En caso contrario, la gramatica serıa ambigua.

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

Page 78: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Gramaticas de contexto libreDerivacion

Derivacion

Derivacion inmediata

Derivacion general

Derivacion por la izquierda

Derivacion por la derecha

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

Page 79: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Gramaticas de contexto libreDerivacion

Definicion (Derivacion inmediata por la derecha)

G = ( VN, VT, P, S)

Si A −→ β ∈ P y α = x A γ

entonces la derviacion inmediata por la derecha se definecomo:

α = δ A y =⇒(A−→β)

δ β y = α′

donde

y ∈ V ∗TA ∈ VN

β, δ ∈ V ∗

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

Page 80: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Gramaticas de contexto libreDerivacion

Nota (Derivacion inmediata por la derecha)

Siempre se procesa el sımbolo no terminal situado mas a laderecha.

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

Page 81: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Gramaticas de contexto libreDerivacion

Definicion (Derivacion por la izquierda)

Una derivacion es por la derecha si todas sus derivacionesinmediatas son por la derecha.

α0 =⇒D

α1

α1 =⇒D

α2

· · ·αn−1 =⇒

Dαn

que es equivalente a

α0 =⇒D

α1 =⇒D

α2 =⇒D

. . . =⇒D

αn

α0∗

=⇒D

αn

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

Page 82: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Gramaticas de contexto libreDerivacion

Ejemplo (Gramatica 1 / 2)

VN = {S, E}VT = {identificador, =, +, *, (, ), numero}P = {(1) S −→ identificador = E(2) E −→ E + E(3) E −→ E * E(4) E −→ ( E )(5) E −→ numero(6) E −→ identificador

}

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

Page 83: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Gramaticas de contexto libreDerivacion

Ejemplo (Derivacion por la derecha 2 / 2)

S =⇒1

identificador = E

=⇒2

identificador = E + E

=⇒3

identificador = E + E * E

=⇒6

identificador = E + E * identificador

=⇒5

identificador = E + numero * identificador

=⇒6

identificador = identificador + numero * identificador

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

Page 84: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Gramaticas de contexto libreDerivacion

Nota

Lo deseable es que la gramatica solo tenga una derivacion porla derecha para cada cadena de sımbolos terminales.

En caso contrario, la gramatica serıa ambigua.

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

Page 85: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Contenido de la seccion

2 Gramaticas de contexto libreIntroduccionDefinicionConvenios de notacionDerivacionArbol sintactico asociado a una derivacionLenguaje generado por una gramatica

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

Page 86: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Gramaticas de contexto libreArbol sintactico asociado a una derivacion

Arbol sintactico asociado a una derivacion

(1) Los nodos del arbol estan etiquetados con sımbolos delvocabulario de la gramatica (V) o la palabra vacıa ε

(2) La raız esta etiquetada con el sımbolo inicial: S ∈ VN

(3) Si un nodo tiene, al menos un descendiente, entonces lecorresponde un sımbolo no terminal: A ∈ VN

(4) Si un nodo esta etiquetado con un sımbolo A

y se ha aplicado la regla A −→ X1X2 . . .Xn ∈ P

entonces A tiene n descendientes:

X1,X2 . . .Xn ∈ V ∗ = (VN ∪ VT )∗

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

Page 87: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Gramaticas de contexto libreArbol sintactico asociado a una derivacion

Ejemplo (Gramatica 1 / 2)

P = {(1) S −→ a A b(2) A −→ a A b(3) A −→ c B d(4) B −→ c B d(5) B −→ c d

}

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

Page 88: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Gramaticas de contexto libreArbol sintactico asociado a una derivacion

Ejemplo (Arbol de derivacion 2 / 2)

S =⇒1

a A b

=⇒2

a a A b b

=⇒3

a a c B d b b

=⇒5

a a c c d d b b

S

A

B

a

a

c

c

b

b

d

d

A

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

Page 89: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Contenido de la seccion

2 Gramaticas de contexto libreIntroduccionDefinicionConvenios de notacionDerivacionArbol sintactico asociado a una derivacionLenguaje generado por una gramatica

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

Page 90: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Gramaticas de contexto libreLenguaje generado por una gramatica

Definicion (Lenguaje generado por una gramatica)

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

entonces el lenguaje que genera se define como

L(G) = {x | x ∈ V ∗T ∧ S+

=⇒G

x}

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

Page 91: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Gramaticas de contexto libreLenguaje generado por una gramatica

Ejemplo (Lenguaje generado por una gramatica)

P = {(1) S −→ a A b(2) A −→ a A b(3) A −→ c B d(4) B −→ c B d(5) B −→ c d

}L(G) = {ai c j d j bi | i ≥ 1 ∧ j ≥ 2} = {accddb, · · · }

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

Page 92: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Gramaticas de contexto libreLenguaje generado por una gramatica

Notas (Lenguaje generado por una gramatica)

No existe ningun algoritmo general que permite comprobarcual es el lenguaje generado por una gramatica de contextolibre.

No existe ningun algoritmo general que permita disenar unagramatica de contexto libre que genere un lenguajepretederminado.

Se debe tener en cuenta la experiencia y el sentido comun.

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

Page 93: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Gramaticas de contexto libreLenguaje generado por una gramatica

Ejercicio (Diseno de gramaticas de contexto libre 1 / 5)

Disena una gramatica de contexto libre que permita generaralgunas declaraciones variables del lenguaje C

int a, b;float x;

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

Page 94: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Gramaticas de contexto libreLenguaje generado por una gramatica

Ejercicio (Diseno de gramaticas de contexto libre 2 /5)

Declaraciones de punteros del lenguaje C

int *a, **b, c;float x, *y, **z;

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

Page 95: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Gramaticas de contexto libreLenguaje generado por una gramatica

Ejercicio (Diseno de gramaticas de contexto libre 3 / 5)

Declaraciones de arrays del lenguaje C

int a[5], b[10][2];float x[10], m[3][3];

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

Page 96: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Gramaticas de contexto libreLenguaje generado por una gramatica

Ejercicio (Diseno de gramaticas de contexto libre 4 / 5)

Declaraciones de arrays de punteros del lenguaje C

int *a[5], **b[10][2];float *p[10], *m[3][3];

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

Page 97: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Gramaticas de contexto libreLenguaje generado por una gramatica

Ejercicio (Diseno de gramaticas de contexto libre 5 / 5)

Declaraciones de prototipos de funciones del lenguaje C

int f();int g(int a);int *h(int a, int *b);

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

Page 98: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Ambiguedad

1 Introduccion

2 Gramaticas de contexto libre

3 Ambiguedad

4 Operaciones de limpieza

5 Recursividad y factorizacion

6 Formas normales

7 Tipos de analisis sintactico

8 Deteccion y tratamiento deerrores sintacticos

9 Generadores de analizadoressintacticos

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

Page 99: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Ambiguedad

3 AmbiguedadGramatica ambiguaLenguaje intrınsecamente ambiguo

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

Page 100: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Contenido de la seccion

3 AmbiguedadGramatica ambiguaLenguaje intrınsecamente ambiguo

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

Page 101: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

AmbiguedadGramatica ambigua

Definicion (Ambiguedad)

Una gramatica de contexto libre es ambigua si cumple alguna delas siguientes condiciones:

1.- Existe una cadena que posee dos derivaciones por la izquierdadiferentes.

2.- Existe una cadena que posee dos derivaciones por la derechadiferentes.

3.- Existe una cadena que posee dos arboles sintacticos diferentes.

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

Page 102: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

AmbiguedadGramatica ambigua

Notas (Ambiguedad)

No existe un algoritmo general para comprobar si unagramatica es ambigua o no.

Se deben hacer comprobaciones particulares.

Hay gramaticas ambiguas que se pueden transformar en otrasque no lo son.

Se debe evitar el uso de gramaticas ambiguas porquedificultan o impiden el analisis sintactico.

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

Page 103: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

AmbiguedadGramatica ambigua

Ejemplo (Gramatica ambigua 1 / 6)

La gramatica de las expresiones aritmeticas es ambigua.

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

}

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

Page 104: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

AmbiguedadGramatica ambigua

Ejemplo (Gramatica ambigua 2 / 6)

La asignacion

identificador = identificador + numero * identificador

puede ser generada por dos derivaciones por la izquierda diferentes

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

Page 105: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

AmbiguedadGramatica ambigua

Ejemplo (Gramatica ambigua 3 / 6)

Primera derivacion por la izquierda

S =⇒1

identificador = E

=⇒2

identificador = E + E

=⇒5

identificador = identificador + E

=⇒3

identificador = identificador + E * E

=⇒6

identificador = identificador + numero * E

=⇒5

identificador = identificador + numero * identificador

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

Page 106: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

AmbiguedadGramatica ambigua

Ejemplo (Gramatica ambigua 4 / 6)

Segunda derivacion por la izquierda

E =⇒1

identificador = E

=⇒3

identificador = E * E

=⇒2

identificador = E + E * E

=⇒5

identificador = identificador + E * E

=⇒5

identificador = identificador + numero * E

=⇒5

identificador = identificador + numero * identificador

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

Page 107: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

AmbiguedadGramatica ambigua

Nota (Gramatica ambigua 5 / 6)

La primera derivacion es correcta porque tiene en cuenta laprioridad de los operadores aritmeticos.

El producto (*) tiene mayor prioridad que la suma (+).

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

Page 108: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

AmbiguedadGramatica ambigua

Ejemplo (Gramatica ambigua: arboles sintacticos 6 / 6)

número

S

identificador = E

E E

E E+

*

identificador identificador

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

Page 109: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

AmbiguedadGramatica ambigua

Ejemplo (Gramatica no ambigua 1 / 3)

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

}

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

Page 110: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

AmbiguedadGramatica ambigua

Ejemplo (Gramatica no ambigua 2 / 3)

Derivacion por la izquierda

S =⇒1

identificador = E =⇒2

identificador = E + T

=⇒3

identificador = T + T =⇒5

identificador = F + T

=⇒7

identificador = identificador + T

=⇒4

identificador = identificador + T * F

=⇒5

identificador = identificador + F * F

=⇒8

identificador = identificador + numero * F

=⇒7

identificador = identificador + numero * identificador

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

Page 111: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

AmbiguedadGramatica ambigua

Ejemplo (Gramatica no ambigua: arbol sintactico 3 / 3)

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

Page 112: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

AmbiguedadGramatica ambigua

Ejemplo (El problema del ’else danzante’ 1 / 8)

P = {· · ·

(1) S −→ if C S(2) S −→ if C S else S(3) S −→ I· · ·

}donde

S genera setencias de controlC genera expresiones condicionalesI genera otras sentencias, por ejemplo, de asignacion.

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

Page 113: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

AmbiguedadGramatica ambigua

Ejemplo (El problema del ’else danzante’ 2 / 8)

Esta gramatica es ambigua porque la sentencia

ifC if C S else S

puede ser generada por dos derivaciones que tienen asociadosarboles sintacticos diferentes.

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

Page 114: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

AmbiguedadGramatica ambigua

Ejemplo (El problema del ’else danzante’ 3 / 8)

Primera derivacion

S =⇒1

if C S =⇒2

if C if C S else S

Segunda derivacion

S =⇒2

if C S else S =⇒1

if C if C S else S

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

Page 115: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

AmbiguedadGramatica ambigua

Nota (El problema del ’else danzante’ 4 / 8)

La primera derivacion es correcta porque asocia el else al ifmas cercano.

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

Page 116: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

AmbiguedadGramatica ambigua

Ejemplo (El problema del ’else danzante’ 5 / 8)S

if C S

if C S e l s e S

S

if C S e l s e S

if C S

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

Page 117: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

AmbiguedadGramatica ambigua

Ejemplo (El problema del ’else danzante’ 6 / 8)

Solucion: asociar cada else con el if mas cercano

. . .(1) S −→ S1

(2) S −→ S2

(3) S1 −→ if C S1 else S1

(4) S1 −→ I(5) S2 −→ if C S(6) S2 −→ if C S1 else S2

. . .

donde

S1 genera la sentencia if emparejadaS2 genera la sentencia if no emparejada.

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

Page 118: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

AmbiguedadGramatica ambigua

Ejemplo (El problema del ’else danzante’ 7 / 8)

Derivacion

S =⇒2

S 2

=⇒5

if C S

=⇒1

if C S1

=⇒3

if C if C S1 else S2

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

Page 119: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

AmbiguedadGramatica ambigua

Ejemplo (El problema del ’else danzante’ 8 / 8)

Arbol sintactico que asocia else al if mas cercano.

S

if C S e l s e S

if C S

S

S

2

1

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

Page 120: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Contenido de la seccion

3 AmbiguedadGramatica ambiguaLenguaje intrınsecamente ambiguo

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

Page 121: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

AmbiguedadLenguaje intrınsecamente ambiguo

Definicion (Lenguaje intrınsecamente ambiguo)

Un lenguaje es intrınsecamente ambiguo si todas las gramaticasque lo generan son ambiguas.

L = L(G1) = L(G2) = ... = L(GN)

donde G1, G2, ..., GN ambiguas

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

Page 122: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

AmbiguedadLenguaje intrınsecamente ambiguo

Ejemplo (Lenguaje intrınsecamente ambiguo 1 / 4)

L = {ai bi c j |i , j ≥ 1} ∪ {ai bj c j |i , j ≥ 1}

L solamente puede ser generado por gramaticas ambiguas.

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

Page 123: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

AmbiguedadLenguaje intrınsecamente ambiguo

Ejemplo (Lenguaje intrınsecamente ambiguo 2 / 4)

Una gramatica que genera el lenguaje L

P = {(1) S −→ AC(2) S −→ BD(3) A −→ aAb(4) A −→ ab(5) C −→ cC

(6) C −→ c(7) B −→ aB(8) B −→ a(9) D −→ bDc(10) D −→ bc}

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

Page 124: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

AmbiguedadLenguaje intrınsecamente ambiguo

Ejemplo (Lenguaje intrınsecamente ambiguo 3 / 4)

La gramatica G es ambigua

Primera derivacionS =⇒

1A C

=⇒4

a b C

=⇒6

a b c

Segunda derivacionS =⇒

2B D

=⇒8

a D

=⇒10

a b c

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

Page 125: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

AmbiguedadLenguaje intrınsecamente ambiguo

Ejemplo (Lenguaje intrınsecamente ambiguo 4 / 4)

a b c

S

A C

S

B D

a b c

Arboles sintacticos diferentes

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

Page 126: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Operaciones de limpieza

1 Introduccion

2 Gramaticas de contexto libre

3 Ambiguedad

4 Operaciones de limpieza

5 Recursividad y factorizacion

6 Formas normales

7 Tipos de analisis sintactico

8 Deteccion y tratamiento deerrores sintacticos

9 Generadores de analizadoressintacticos

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

Page 127: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Operaciones de limpieza

4 Operaciones de limpiezaSımbolos utiles e inutilesReglas superfluasGramatica propia

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

Page 128: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Contenido de la seccion

4 Operaciones de limpiezaSımbolos utiles e inutilesReglas superfluasGramatica propia

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

Page 129: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Operaciones de limpiezaSımbolos utiles e inutiles

Definicion (Sımbolo util)

Sea X ∈ V = VN ∪ VT

Se dice que X es util si es un sımbolo accesible y generador.

es decir, el sımbolo X aparece al menos en una derivacion deuna cadena perteneciente al lenguaje generado por lagramatica

∃S∗

=⇒ α X β∗

=⇒ x1x2x3 = x ∈ L(G )

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

Page 130: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Operaciones de limpiezaSımbolos utiles e inutiles

Sımbolos utiles

Sımbolos generadores

Sımbolos accesibles

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

Page 131: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Operaciones de limpiezaSımbolos utiles e inutiles

Definicion (Sımbolo generador)

Sea X ∈ V = VN ∪ VT

se dice que X es generador si

∃X∗⇒G

x ∈ V ∗T

Notas

Si X = A ∈ VN entonces A es generador si y solamente siL(GA) 6= ∅

Si X = a ∈ VT entonces a es generador porque a0

=⇒ a

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

Page 132: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Operaciones de limpiezaSımbolos utiles e inutiles

Algoritmo (Seleccion de sımbolos generadores 1 / 2)

EntradaG = (VN ,VT ,P,S)Gramatica de contexto libre.

SalidaG ′ = (V ′N ,VT ,P

′,S)Gramatica de contexto libre sin sımbolos no generadores.

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

Page 133: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Operaciones de limpiezaSımbolos utiles e inutiles

Algoritmo (Seleccion de sımbolos generadores 2 / 2)

inicioViejo ← ∅Nuevo ← {A|A ∈ VN ∧ ∃A −→ x ∈ P ∧ x ∈ V ∗T}mientras (Nuevo 6= Viejo) hacer

Viejo ← NuevoNuevo ← Viejo ∪ {A|A ∈ VN ∧ ∃A −→ α ∈ P

∧α ∈ (Viejo ∪ VT )∗}fin mientras

V ′N ← Nuevo

P ′ ← {A −→ α|A −→ α ∈ P ∧ A ∈ V ′N ∧ α ∈ (V ′N ∪ VT )∗}fin

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

Page 134: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Operaciones de limpiezaSımbolos utiles e inutiles

Nota (Seleccion de sımbolos generadores)

Las reglas de la gramatica G ′ se obtienen a partir de las reglas dela gramatica G que solo tienen sımbolos generadores.

P ′ ← {A −→ α|A −→ α ∈ P ∧ A ∈ V ′N ∧ α ∈ (V ′N ∪ VT )∗}

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

Page 135: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Operaciones de limpiezaSımbolos utiles e inutiles

Nota (Seleccion de sımbolos generadores)

Una gramatica de contexto libre genera un lenguaje no vacıosi y solamente si su sımbolo inicial es un sımbolo generador.

L(G ) 6= ∅ ⇐⇒ S ∈ Generadores

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

Page 136: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Operaciones de limpiezaSımbolos utiles e inutiles

Ejemplo (Seleccion de sımbolos generadores 1 / 7)

G = (VN ,VT ,P,S)

VN = {S, A, B, C, D, E, F}

VT = {a, b, c, d, e}

P = {(1) S −→ A B(2) S −→ A b(3) A −→ a C(4) B −→ b C a(5) B −→ D b E(6) C −→ b(7) D −→ F b(8) E −→ c a e(9) F −→ a D d

}

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

Page 137: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Operaciones de limpiezaSımbolos utiles e inutiles

Ejemplo (Seleccion de sımbolos generadores 2 / 7)

Alternativas compuestas solamente por sımbolos terminales

(6) C −→ b(8) E −→ c a e

Paso Viejo Nuevo

0 ∅ {C ,E}

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

Page 138: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Operaciones de limpiezaSımbolos utiles e inutiles

Ejemplo (Seleccion de sımbolos generadores 3 / 7)

Alternativas compuestas por sımbolos terminales o de Viejo

(3) A −→ a C(4) B −→ b C a(6) C −→ b(8) E −→ c a e

Paso Viejo Nuevo

0 ∅ {C ,E}1 {C ,E} {A,B,C ,E}

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

Page 139: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Operaciones de limpiezaSımbolos utiles e inutiles

Ejemplo (Seleccion de sımbolos generadores 4 / 7)

Alternativas compuestas por sımbolos terminales o de Viejo

(1) S −→ A B(2) S −→ A b(3) A −→ a C(4) B −→ b C a(6) C −→ b(8) E −→ c a e

Paso Viejo Nuevo

0 ∅ {C ,E}1 {C ,E} {A,B,C ,E}2 {A,B,C ,E} {S ,A,B,C ,E}

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

Page 140: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Operaciones de limpiezaSımbolos utiles e inutiles

Ejemplo (Seleccion de sımbolos generadores 5 / 7)

Paso Viejo Nuevo

0 ∅ {C ,E}1 {C ,E} {A,B,C ,E}2 {A,B,C ,E} {S ,A,B,C ,E}3 {S ,A,B,C ,E} {S ,A,B,C ,E}

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

Page 141: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Operaciones de limpiezaSımbolos utiles e inutiles

Ejemplo (Seleccion de sımbolos generadores 6 / 7)

V ′N = {S, A, B, C, E}VT = {a, b, c, d, e}

P’ = {(1’) S −→ A B(2’) S −→ A b(3’) A −→ a C(4’) B −→ b C a(5’) C −→ b(6’) E −→ c a e

}

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

Page 142: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Operaciones de limpiezaSımbolos utiles e inutiles

Nota (Seleccion de sımbolos generadores 7 / 7)

Se han suprimido

Sımbolos no terminales: D, FReglas de produccion

(5) B −→ D b E(7) D −→ F b(9) F −→ a D d

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

Page 143: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Operaciones de limpiezaSımbolos utiles e inutiles

Sımbolos utiles

Sımbolos generadores

Sımbolos accesibles

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

Page 144: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Operaciones de limpiezaSımbolos utiles e inutiles

Definicion (Sımbolo accesible)

Sea X ∈ V = VN ∪ VT

se dice que X es accesible si

∃ S∗⇒Gα X β

donde α, β ∈ V ∗

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

Page 145: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Operaciones de limpiezaSımbolos utiles e inutiles

Algoritmo (Seleccion de sımbolos accesibles 1 / 2)

EntradaG ′ = (V ′N ,VT ,P

′,S)Gramatica de contexto libre sin sımbolos no generadores.

SalidaG ′′ = (V ′′N ,V

′T ,P

′′,S)Gramatica de contexto libre sin sımbolos no accesibles.

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

Page 146: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Operaciones de limpiezaSımbolos utiles e inutiles

Algoritmo (Seleccion de sımbolos accesibles 2 / 2)

inicioViejo ← {S}Nuevo ← {X |X ∈ (V ′N ∪ VT )

∧∃S −→ αXβ ∈ P ′ ∧ α, β ∈ (V ′N ∪ VT )∗}mientras (Nuevo 6= Viejo) hacer

Viejo ← NuevoNuevo ← Viejo ∪ {X |∃A −→ αXβ ∈ P ′ ∧ A ∈ Viejo

∧X ∈ (V ′N ∪ VT ) ∧ α, β ∈ (V ′N ∪ VT )∗}fin mientrasV ′′N ← Nuevo ∩ V ′NV ′T ← Nuevo ∩ VT

P ′′ ← {A −→ α|A −→ α ∈ P ′ ∧ A ∈ V ′′N ∧ α ∈ (V ′′N ∪ V ′T )∗}fin

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

Page 147: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Operaciones de limpiezaSımbolos utiles e inutiles

Nota (Seleccion de sımbolos accesibles)

Las reglas de la gramatica G ′′ se obtienen a partir de las reglas dela gramatica G ′ que solo tienen sımbolos accesibles.

P ′′ ← {A −→ α|A −→ α ∈ P ′ ∧ A ∈ V ′′N ∧ α ∈ (V ′′N ∪ V ′T )∗}

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

Page 148: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Operaciones de limpiezaSımbolos utiles e inutiles

Ejemplo (Seleccion de sımbolos accesibles 1 / 6)

Gramatica sin sımbolos no generadores.

V ′N = {S, A, B, C, E}VT = {a, b, c, d, e}

P’ = {(1’) S −→ A B(2’) S −→ A b(3’) A −→ a C(4’) B −→ b C a(5’) C −→ b(6’) E −→ c a e

}

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

Page 149: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Operaciones de limpiezaSımbolos utiles e inutiles

Ejemplo (Seleccion de sımbolos accesibles 2 / 6)

Reglas del sımbolo inicial S

(1’) S −→ A B(2’) S −→ A b

Paso Viejo Nuevo

0 {S} {S ,A,B, b}

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

Page 150: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Operaciones de limpiezaSımbolos utiles e inutiles

Ejemplo (Seleccion de sımbolos accesibles 3 / 6)

Reglas de los sımbolos no terminales de Viejo

(1’) S −→ A B(2’) S −→ A b(3’) A −→ a C(4’) B −→ b C a

Paso Viejo Nuevo

0 {S} {S ,A,B, b}1 {S ,A,B, b} {S ,A,B,C , a, b}

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

Page 151: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Operaciones de limpiezaSımbolos utiles e inutiles

Ejemplo (Seleccion de sımbolos accesibles 4 / 6)

Reglas de los sımbolos no terminales de Viejo

(1’) S −→ A B(2’) S −→ A b(3’) A −→ a C(4’) B −→ b C a(5’) C −→ b

Paso Viejo Nuevo

0 {S} {S ,A,B, b}1 {S ,A,B, b} {S ,A,B,C , a, b}2 {S ,A,B,C , a, b} {S ,A,B,C , a, b}

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

Page 152: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Operaciones de limpiezaSımbolos utiles e inutiles

Ejemplo (Seleccion de sımbolos accesibles 5 / 6)

V ′′N = V ′N ∩ Nuevo

= {S ,A,B,C}

V ′T = VT ∩ Nuevo

= {a, b}

P” = {(1’) S −→ A B(2’) S −→ A b(3’) A −→ a C(4’) B −→ b C a(5’) C −→ b

}

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

Page 153: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Operaciones de limpiezaSımbolos utiles e inutiles

Nota (Seleccion de sımbolos accesibles 6 / 6)

Se han suprimido

Sımbolo no terminal: ESımbolos terminales: c, d, eRegla de regla

(6’) E −→ c a e

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

Page 154: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Operaciones de limpiezaSımbolos utiles e inutiles

Nota (Orden de aplicacion de los algoritmos)

Los algoritmos se deben aplicar en el siguiente orden:

1o Seleccion de sımbolos generadores2o Seleccion de sımbolos accesibles

Si se aplican en el orden inverso entonces no se garantiza quela gramatica resultante tenga todos sus sımbolos accesibles.

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

Page 155: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Operaciones de limpiezaSımbolos utiles e inutiles

Ejemplo (Orden incorrecto de los algoritmos de limpieza 1 / 4)

G = (VN ,VT ,P,S)

VN = {S, A, B, C, D, E, F}

VT = {a, b, c, d, e}

P = {(1) S −→ A B(2) S −→ A b(3) A −→ a C(4) B −→ b C a(5) B −→ D b E(6) C −→ b(7) D −→ F b(8) E −→ c a e(9) F −→ a D d

}

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

Page 156: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Operaciones de limpiezaSımbolos utiles e inutiles

Ejemplo (Orden incorrecto de los algoritmos de limpieza 2 / 4)

Seleccion de sımbolos accesiblesPaso Viejo Nuevo

0 {S} {S ,A,B, b}1 {S ,A,B, b} {S,A,B,C ,D,E , a, b}2 {S ,A,B,C ,D,E , a, b} {S ,A,B,C ,D,E ,F , a, b, c}3 {S ,A,B,C ,D,E ,F , a, b, c, d , e} {S,A,B,C ,D,E ,F , a, b, c, d , e}

Nota

No se ha eliminado ningun sımbolo.

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

Page 157: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Operaciones de limpiezaSımbolos utiles e inutiles

Ejemplo (Orden incorrecto de los algoritmos de limpieza 3 / 4)

Seleccion de sımbolos generadores

Paso Viejo Nuevo

0 ∅ {C ,E}1 {C ,E} {A,B,C ,E}2 {A,B,C ,E} {S ,A,B,C ,E}3 {S ,A,B,C ,E} {S ,A,B,C ,E}

Nota

Se han eliminado los sımbolos no terminales D y F.

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

Page 158: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Operaciones de limpiezaSımbolos utiles e inutiles

Ejemplo (Orden incorrecto de los algoritmos de limpieza 4 / 4)

G = (VN ,VT ,P,S)

VN = {S, A, B, C, E }

VT = {a, b, c, d, e}

P = {(1) S −→ A B(2) S −→ A b(3) A −→ a C(4) B −→ b C a(6) C −→ b(8) E −→ c a e

}

Nota

Los sımbolos E, c, d y e no son accesibles.

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

Page 159: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Contenido de la seccion

4 Operaciones de limpiezaSımbolos utiles e inutilesReglas superfluasGramatica propia

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

Page 160: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Operaciones de limpiezaReglas superfluas

Tipos de reglas superfluas

(1) Regla unitaria

A −→ B ∈ P

donde A, B ∈ VN

(2) Regla epsilon

A −→ ε ∈ P

donde A ∈ VN

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

Page 161: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Operaciones de limpiezaReglas superfluas

Nota (Reglas superfluas: caracterısticas)

Las reglas unitarias y las reglas ε

Ralentizan la derivacionPueden facilitar el diseno de la gramatica.

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

Page 162: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Operaciones de limpiezaReglas superfluas

Ejemplo (Obtencion de una gramatica sin ε 1 / 3)

G = (VN , VT , P, S)

P = {(1) S → A B C(2) A → a A(3) A → ε(4) B → b B(5) B → ε(6) C → c C(7) C → ε

}

L(G)={ai bj ck | i, j, k ≥ 0}

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

Page 163: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Operaciones de limpiezaReglas superfluas

Ejemplo (Obtencion de una gramatica sin ε 2 / 3)

S =⇒1

A B C

=⇒3

ε B C = B C

=⇒5

ε C = C

=⇒7

ε

Nota

Serıa mejor usar la regla

S −→ ε

y obtener la derivacion

S =⇒ ε

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

Page 164: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Operaciones de limpiezaReglas superfluas

Ejemplo (Obtencion de una gramatica sin ε 3 / 3)Si se reescribe el conjunto de reglas de la gramatica

P’ = {(1) S → ε

(2) S → A

(3) S → B

(4) S → C

(5) S → A B

(6) S → A C

(7) S → B C

(8) S → A B C

(9) A → a A

(10) A → a

(11) B → b B

(12) B → b

(13) C → c C

(14) C → c

}

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

Page 165: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Operaciones de limpiezaReglas superfluas

Definicion (Gramatica sin ε)

Una gramatica es sin ε si cumple una de las siguientescondiciones:

1 No tiene ninguna regla ε.

2 Solamente hay una regla ε

dicha esta asociada al sımbolo inicial S

S −→ ε

y ademas S no aparece en la parte derecha de ninguna reglade la gramatica.

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

Page 166: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Operaciones de limpiezaReglas superfluas

Nota (Gramatica sin ε)

Si G es una gramatica sin ε entonces

ε ∈ L(G )⇐⇒ S −→ ε ∈ P

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

Page 167: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Operaciones de limpiezaReglas superfluas

Nota

Toda gramatica de contexto libre se pueden transformar enotra gramatica sin ε.

Para ello es necesario definir previamente el concepto desımbolo anulable.

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

Page 168: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Operaciones de limpiezaReglas superfluas

Definicion (Sımbolo anulable)

Un sımbolo no terminal A es anulable si

A+

=⇒ ε

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

Page 169: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Operaciones de limpiezaReglas superfluas

Teorema (Sımbolo anulable)

Un sımbolo no terminal A es anulable si verifica alguna de lassiguientes condiciones:

∃A −→ ε ∈ P

∃A −→ α ∈ P

y α esta compuesta solamente por sımbolos anulables.

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

Page 170: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Operaciones de limpiezaReglas superfluas

Algoritmo (Obtencion de los sımbolos anulables)

EntradaG = (VN ,VT ,P,S)Gramatica de contexto libre sin sımbolos inutiles.

SalidaConjunto de sımbolos anulables.

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

Page 171: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Operaciones de limpiezaReglas superfluas

Algoritmo (Obtencion de los sımbolos anulables)

inicioViejo ← ∅Nuevo ← {A|A ∈ VN ∧ ∃A −→ ε ∈ P}mientras (Nuevo 6= Viejo) hacer

Viejo ← NuevoNuevo ← Viejo ∪{A|A ∈ VN ∧ ∃A −→ α ∈ P ∧ α ∈ Viejo∗}

fin mientrasAnulables ←− Nuevo

fin

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

Page 172: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Operaciones de limpiezaReglas superfluas

Ejemplo (Sımbolos anulables)

P = {

(1) S −→ A D

(2) S −→ B

(3) A −→ C D E

(4) B −→ C E

(5) C −→ S

(6) C −→ a

(7) C −→ ε

(8) D −→ A

(9) D −→ b

(10) E −→ S

(11) E −→ a

(12) E −→ ε

}

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

Page 173: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Operaciones de limpiezaReglas superfluas

Ejemplo (Sımbolos anulables)

Paso Viejo Nuevo

0 ∅ {C ,E}1 {C ,E} {B,C ,E}2 {B,C ,E} {S ,B,C ,E}3 {S ,B,C ,E} {S ,B,C ,E}

Anulables = {S ,B,C ,E}

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

Page 174: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Operaciones de limpiezaReglas superfluas

Algoritmo (Obtencion de una gramatica sin ε 1 / 3)

EntradaG = (VN ,VT ,P,S) Gramatica sin sımbolos inutilesConjunto de sımbolos anulables de G

SalidaG ′ = (V ′N ,VT ,P

′,S ′)Gramatica sin ε

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

Page 175: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Operaciones de limpiezaReglas superfluas

Algoritmo (Obtencion de una gramatica sin ε 2/ 3)

inicioP ′ ← {A −→ α|A −→ α ∈ P ∧ α 6= ε

∧ α no tiene sımbolos anulables}para (A −→ α ∈ P) ∧ (α contiene sımbolos anulables) hacer

si α = α0B1α1 . . .Bkαk

∧∀i (Bi ∈ Anulables)∧∀j (αj no contiene ningun sımbolo anulable)entonces P ′ ← P ′ ∪ {A −→ α0X1α1 . . .Xkαk |

∀i (Xi = Bi ∨ Xi = ε) ∧ α0X1α1 . . .Xkαk 6= ε}fin si

fin para· · ·

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

Page 176: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Operaciones de limpiezaReglas superfluas

Algoritmo (Obtencion de una gramatica sin ε 3/ 3)

· · ·si S ∈ Anulables

entoncessi S aparece en la parte derecha de una regla de P ′

entoncesV ′N = VN ∪ {S ′}P ′ ← P ′ ∪ {S ′ −→ ε, S ′ −→ S}

si noP ′ ← P ′ ∪ {S −→ ε}

fin sifin si

fin

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

Page 177: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Operaciones de limpiezaReglas superfluas

Ejemplo (Obtencion de una gramatica sin ε 1 / 9)

Paso 0: reglas sin sımbolos anulables y que no son reglas ε:

P ′ = {(1) S −→ AD

(6) C −→ a

(8) D −→ A

(9) D −→ b

(11) E −→ a

}

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

Page 178: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Operaciones de limpiezaReglas superfluas

Ejemplo (Obtencion de una gramatica sin ε 2 / 9)

Paso 1: se procesa la regla S −→ B que contiene el sımboloanulable B

S −→ B

S −→ ε

Solamente se anade a P ′ la primera regla porque laotra es una regla ε.

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

Page 179: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Operaciones de limpiezaReglas superfluas

Ejemplo (Obtencion de una gramatica sin ε 3 / 9)

Paso 2: se procesa la regla A −→ CDE que contiene lossımbolos anulables C y E

A −→ CDE

A −→ DE

A −→ CD

A −→ D

Se anaden a P ′ porque no son reglas ε.

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

Page 180: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Operaciones de limpiezaReglas superfluas

Ejemplo (Obtencion de una gramatica sin ε 4 / 9)

Paso 3: se proces la regla B −→ CE que contiene lossımbolos anulables C y E

B −→ CE

B −→ E

B −→ C

B −→ ε

Solamente se anaden a P ′ las tres primeras reglasporque la otra es una regla ε.

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

Page 181: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Operaciones de limpiezaReglas superfluas

Ejemplo (Obtencion de una gramatica sin ε 5 / 9)

Paso 4: La regla C −→ S contiene el sımbolo anulable S loque provoca la generacion de las dos reglassiguientes:

C −→ S

C −→ ε

Solamente se anade a P ′ la primera regla porque laotra es una regla ε.

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

Page 182: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Operaciones de limpiezaReglas superfluas

Ejemplo (Obtencion de una gramatica sin ε 6 / 9)

Paso 5: se procesa la regla E −→ S que contiene el sımboloanulable S

E −→ S

E −→ ε

Solamente se anade a P ′ la primera regla porque laotra es una regla ε.

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

Page 183: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Operaciones de limpiezaReglas superfluas

Ejemplo (Obtencion de una gramatica sin ε 7 / 9)

Paso final: al ser el sımbolo S anulable, se anaden a lagramatica las siguientes reglas:

S ′ −→ ε

S ′ −→ S

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

Page 184: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Operaciones de limpiezaReglas superfluas

Ejemplo (Obtencion de una gramatica sin ε 8 / 9)

Se han suprimido las reglas ε

(7) C −→ ε

(12) E −→ ε

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

Page 185: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Operaciones de limpiezaReglas superfluas

Ejemplo (Obtencion de una gramatica sin ε 9 / 9)

Conjunto final de reglas de produccion:

P′ = {S ′ −→ ε | S

S −→ AD | B

A −→ CDE | DE | CD | D

B −→ CE | E | C

C −→ S | a

D −→ A | b

E −→ S | a

}

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

Page 186: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Operaciones de limpiezaReglas superfluas

Definicion (Regla unitaria)

A −→ B ∈ Pdonde A, B ∈ VN

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

Page 187: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Operaciones de limpiezaReglas superfluas

Ejemplo (Gramatica con reglas unitarias)

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

}

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

Page 188: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Operaciones de limpiezaReglas superfluas

Nota (Reglas que no son unitarias)

(6) F −→ numero

(7) F −→ identificador

porque numero e identificador son terminales.

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

Page 189: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Operaciones de limpiezaReglas superfluas

Ejemplo (Ineficiencia de las reglas unitarias)

S =⇒1

identificador = E

=⇒2

identificador = E + T

=⇒3

identificador = T + T

=⇒5

identificador = F + T

=⇒7

identificador = identificador + T

=⇒4

identificador = identificador + F

=⇒7

identificador = identificador + identificador

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

Page 190: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Operaciones de limpiezaReglas superfluas

Ejemplo (Arbol sintactico asociado a la derivacion)

=

E

S

E

T+

T

identificador

F

identificador

identificador

F

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

Page 191: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Operaciones de limpiezaReglas superfluas

Ejemplo (Ineficiencia de las reglas unitarias)

La derivacion anterior se podrıa simplificar eliminando reglasunitarias

S =⇒ identificador = E

=⇒ identificador = E + T

=⇒ identificador = identificador + T

=⇒ identificador = identificador + identificador

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

Page 192: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Operaciones de limpiezaReglas superfluas

Ejemplo (Arbol sintactico asociado a la derivacion)

=identificador

E

S

E

T+

identificador identificador

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

Page 193: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Operaciones de limpiezaReglas superfluas

Definicion

Sea G una gramatica sin ε

Si A ∈ VN entonces el conjunto de sımbolos no terminalesaccesibles desde A por medio de reglas unitarias se definecomo:

NA = {B|B ∈ VN ∧ A∗

=⇒B}

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

Page 194: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Operaciones de limpiezaReglas superfluas

Teorema

Si A,B ∈ VN entonces B ∈ NA si y solo si verifica alguna delas siguientes condiciones:

B = A∃A −→ B ∈ P∃A

∗=⇒C y C −→ B ∈ P.

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

Page 195: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Operaciones de limpiezaReglas superfluas

Algoritmo (Sımbolos no terminales accesibles mediante reglas unitarias)

inicioViejo ← ∅Nuevo ← {A}mientras (Nuevo 6= Viejo) hacer

Viejo ← NuevoNuevo ← Viejo ∪ {B|A −→ B ∈ P ∧ A ∈ Viejo}

fin mientrasNA ← Nuevo

fin

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

Page 196: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Operaciones de limpiezaReglas superfluas

Ejemplo (Sımbolos no terminales accesibles mediante reglas unitarias)

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

}

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

Page 197: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Operaciones de limpiezaReglas superfluas

Ejemplo (Sımbolos no terminales accesibles mediante reglas unitarias)

Calculo de NE

Paso Viejo Nuevo0 ∅ {E}

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

Page 198: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Operaciones de limpiezaReglas superfluas

Ejemplo (Sımbolos no terminales accesibles mediante reglas unitarias)

Calculo de NE

Paso Viejo Nuevo0 ∅ {E}1 {E} {E ,T}

Puesto que (3) E −→ T

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

Page 199: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Operaciones de limpiezaReglas superfluas

Ejemplo (Sımbolos no terminales accesibles mediante reglas unitarias)

Calculo de NE

Paso Viejo Nuevo

0 ∅ {E}1 {E} {E ,T}2 {E ,T} {E ,T ,F}

Puesto que (5) T −→ F

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

Page 200: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Operaciones de limpiezaReglas superfluas

Ejemplo (Sımbolos no terminales accesibles mediante reglas unitarias)

Calculo de NE

Paso Viejo Nuevo

0 ∅ {E}1 {E} {E ,T}2 {E ,T} {E ,T ,F}3 {E ,T ,F} {E ,T ,F}

NE = Nuevo = {E ,T ,F}

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

Page 201: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Operaciones de limpiezaReglas superfluas

Ejemplo (Sımbolos no terminales accesibles mediante reglas unitarias)

NS = {S}NE = {E ,T ,F}NT = {T ,F}NF = {F}

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

Page 202: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Operaciones de limpiezaReglas superfluas

Algoritmo (Eliminacion de reglas unitarias)

EntradaG = (VN ,VT ,P,S) Gramatica de contexto libreConjuntos NA ∀A ∈ VN

SalidaG ′ = (V ′N ,VT ,P

′,S) Gramatica sin reglas unitarias.

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

Page 203: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Operaciones de limpiezaReglas superfluas

Algoritmo (Eliminacion de reglas unitarias)

inicioP ′ ← ∅para cada A ∈ VN hacer

para cada B ∈ NA hacersi B −→ α ∈ P no es una regla unitaria

entonces P ′ ← P ′ ∪ {A −→ α}fin si

fin parafin paraV ′N ← {A|A ∈ VN ∧ ∃A −→ α ∈ P ′}

fin

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

Page 204: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Operaciones de limpiezaReglas superfluas

Ejemplo (Eliminacion de reglas unitarias)

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

}

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

Page 205: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Operaciones de limpiezaReglas superfluas

Ejemplo (Eliminacion de reglas unitarias)

Paso 1: NS = {S}, se anaden a P ′ todas las reglas de S(ninguna regla es unitaria)

S −→ identificador = E

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

Page 206: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Operaciones de limpiezaReglas superfluas

Ejemplo (Eliminacion de reglas unitarias)

Paso 2: NE = {E ,T ,F}, las alternativas no unitarias de E ,Ty F se convierten en alternativas de E

E −→ E + T

E −→ T ∗ F

E −→ ( E )

E −→ identificador

E −→ numero

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

Page 207: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Operaciones de limpiezaReglas superfluas

Ejemplo (Eliminacion de reglas unitarias)

Paso 3: NT = {T ,F}, las alternativas no unitarias de T y Fse convierten en alternativas de T .

T −→ T ∗ F

T −→ ( E )

T −→ identificador

T −→ numero

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

Page 208: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Operaciones de limpiezaReglas superfluas

Ejemplo (Eliminacion de reglas unitarias)

Paso 4: NF = {F}, se anaden a P ′ todas las reglas de F(ninguna regla es unitaria)

F −→ ( E )

F −→ identificador

F −→ numero

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

Page 209: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Operaciones de limpiezaReglas superfluas

Ejemplo (Eliminacion de reglas unitarias)

Nuevo conjunto de reglas de produccion

P ′ = {S −→ identificador = E

E −→ E + T | T ∗ F | ( E ) | identificador | numero

T −→ T ∗ F | ( E ) | identificador | numero

F −→ ( E ) | identificador | numero

}

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

Page 210: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Operaciones de limpiezaReglas superfluas

Nota (Eliminacion de reglas unitarias)

Al eliminar las reglas unitarias, algunos sımbolos se puedenconvertir en inutiles.

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

Page 211: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Operaciones de limpiezaReglas superfluas

Ejemplo (Aparicion de sımbolos inutiles 1 / 4)

Gramatica sin εP’ = {

S’ −→ ε | S

S −→ A D | B

A −→ C D E | D E | C D | D

B −→ C E | E | C

C −→ S | a

D −→ A | b

E −→ S | a

}

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

Page 212: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Operaciones de limpiezaReglas superfluas

Ejemplo (Aparicion de sımbolos inutiles 2 / 4)

Conjuntos de sımbolos no terminales accesibles mediante reglasunitarias

NS ′ = {S ′,S ,B,C ,E}NS = {S ,B,C ,E}NA = {A,D}NB = {S ,B,C ,E}NC = {S ,B,C ,E}ND = {A,D}NE = {S ,B,C ,E}

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

Page 213: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Operaciones de limpiezaReglas superfluas

Ejemplo (Aparicion de sımbolos inutiles 3 / 4)

Gramatica generada por el algoritmo que elimina reglas unitarias

P’ = {S’ −→ ε | A D | C E | a | c

S −→ A D | C E | a | c

A −→ C D E | D E | C D | b

B −→ C E | A D | a | c

C −→ A D | C E | a | c

D −→ C D E | D E | C D | b

E −→ A D | C E | a | c

}

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

Page 214: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Operaciones de limpiezaReglas superfluas

Ejemplo (Aparicion de sımbolos inutiles 4 / 4)

Los sımbolos S y B no son accesibles, porque no aparecen enla parte derecha de ninguna regla de produccion.

Por tanto, estos dos sımbolos son inutiles y se pueden omitir.

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

Page 215: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Contenido de la seccion

4 Operaciones de limpiezaSımbolos utiles e inutilesReglas superfluasGramatica propia

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

Page 216: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Operaciones de limpiezaGramatica propia

Definicion (Gramatica sin ciclos)

Una gramatica es sin ciclos si no tiene derivaciones de la forma

A+

=⇒A

Nota

Los ciclos dificultan el proceso de generacion de las palabras ypor ello deben evitarse.

La aparicion de ciclos se debe a la presencia reglas unitarias oreglas ε.

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

Page 217: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Operaciones de limpiezaGramatica propia

Ejemplo (Gramatica con ciclos)

Reglas de una gramatica

P = {· · ·A −→ BC

B −→ ε

C −→ A

· · ·}

Ciclo

A =⇒BC =⇒C =⇒A

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

Page 218: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Operaciones de limpiezaGramatica propia

Nota

Obivamente, una gramatica sin ε que no tenga reglas unitarias nopuede generar ciclos.

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

Page 219: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Operaciones de limpiezaGramatica propia

Definicion (Gramatica propia)

Se dice que una gramatica es propia si es una gramatica sinciclos, sin reglas ε, ni sımbolos inutiles.

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

Page 220: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Recursividad y factorizacion

1 Introduccion

2 Gramaticas de contexto libre

3 Ambiguedad

4 Operaciones de limpieza

5 Recursividad y factorizacion

6 Formas normales

7 Tipos de analisis sintactico

8 Deteccion y tratamiento deerrores sintacticos

9 Generadores de analizadoressintacticos

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

Page 221: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Recursividad y factorizacion

5 Recursividad y factorizacionRecursividadFactorizacion por la izquierdaEliminacion de la recursividad inmediata y factorizacion por laizquierda

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

Page 222: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Contenido de la seccion

5 Recursividad y factorizacionRecursividadFactorizacion por la izquierdaEliminacion de la recursividad inmediata y factorizacion por laizquierda

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

Page 223: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Recursividad y factorizacionRecursividad

Recursividad

Gramatica con recursividad inmediata

Gramatica con recursividad general

Eliminacion de la recurvidad inmediata por la izquierda

Eliminacion de la recurvidad general por la izquierda

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

Page 224: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Recursividad y factorizacionRecursividad

Recursividad

Gramatica con recursividad inmediata

Gramatica con recursividad general

Eliminacion de la recurvidad inmediata por la izquierda

Eliminacion de la recurvidad general por la izquierda

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

Page 225: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Recursividad y factorizacionRecursividad

Definicion (Gramatica con recursividad inmediata)

Una gramatica posee recursividad inmediata si

∃ A −→ α A β ∈ P

donde

A ∈ VN

αβ ∈ V + = (VN ∪ VT )+

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

Page 226: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Recursividad y factorizacionRecursividad

Ejemplo (Gramatica con recursividad inmediata)

P = {(1) S −→ a S a(2) S −→ a A a(3) A −→ b A b(4) A −→ c

}

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

Page 227: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Recursividad y factorizacionRecursividad

Definicion (Recursividad inmediata por la izquierda)

Una gramatica posee recursividad inmediata por la izquierda si

∃ A −→ A β ∈ P

donde

A ∈ VN

β ∈ V + = (VN ∪ VT )+

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

Page 228: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Recursividad y factorizacionRecursividad

Ejemplo (Recursividad inmediata por la izquierda 1 / 7)

P = {(1) S −→ S a(2) S −→ A a(3) A −→ A b(4) A −→ c

}

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

Page 229: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Recursividad y factorizacionRecursividad

Ejemplo (Recursividad inmediata por la izquierda 2 / 7)

P = {(1) <asignacion> −→ identificador = <expresion>(2) <expresion> −→ <expresion> + <sumando>(3) <expresion> −→ <sumando>(4) <sumando> −→ <sumando> * <factor>(5) <sumando> −→ <factor>(6) <factor> −→ numero(7) <factor> −→ identificador(8) <factor> −→ (<expresion>)

}

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

Page 230: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Recursividad y factorizacionRecursividad

Ejemplo (Recursividad inmediata por la izquierda 3 / 7)

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

}

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

Page 231: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Recursividad y factorizacionRecursividad

Ejemplo (Recursividad inmediata por la izquierda 4 / 7)

Sentencia de asignacion multiple del lenguaje CP = {

(1) S −→ L E(2) L −→ L identificador =(3) L −→ identificador =(4) E −→ E + T· · ·

}

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

Page 232: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Recursividad y factorizacionRecursividad

Ejemplo (Recursividad inmediata por la izquierda 5 / 7)

Derivacion recursiva por la izquierda

S =⇒1

L E

=⇒2

L identificador = E

=⇒2

L identificador = identificador = E

=⇒3

identificador = identificador = identificador = E

· · ·

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

Page 233: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Recursividad y factorizacionRecursividad

Ejemplo (Recursividad inmediata por la izquierda 6 / 7)

Lista de parametros de un procedimiento o funcion:

P = {(1) S −→ identificador ( L )(2) L −→ L , identificador(3) L −→ identificador· · ·

}

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

Page 234: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Recursividad y factorizacionRecursividad

Ejemplo (Recursividad inmediata por la izquierda 7 / 7)

Componentes de un array:

P = {(1) S −→ identificador D(2) D −→ D [ numero ](3) D −→ [ numero ]· · ·

}

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

Page 235: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Recursividad y factorizacionRecursividad

Definicion (Recursividad inmediata por la derecha)

Una gramatica posee recursividad inmediata por la derecha si

∃ A −→ α A ∈ P

donde

A ∈ VN

α ∈ V + = (VN ∪ VT )+

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

Page 236: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Recursividad y factorizacionRecursividad

Ejemplo (Recursividad inmediata por la derecha)

P = {(1) S −→ a S(2) S −→ a A(3) A −→ b A(4) A −→ c

}

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

Page 237: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Recursividad y factorizacionRecursividad

Recursividad

Gramatica con recursividad inmediata

Gramatica con recursividad general

Eliminacion de la recurvidad inmediata por la izquierda

Eliminacion de la recurvidad general por la izquierda

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

Page 238: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Recursividad y factorizacionRecursividad

Definicion (Gramatica con recursividad general)

Una gramatica posee recursividad general si

∃ A+

=⇒ α A β

donde

A ∈ VN

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

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

Page 239: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Recursividad y factorizacionRecursividad

Ejemplo (Gramatica con recursividad general 1 / 2)

P = {(1) S −→ a A a(2) A −→ a A a(3) A −→ b S b(4) A −→ c

}

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

Page 240: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Recursividad y factorizacionRecursividad

Ejemplo (Gramatica con recursividad general 2 / 2)

S =⇒1

a A a

=⇒2

a a A a a

=⇒3

a a b S b a a

· · ·

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

Page 241: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Recursividad y factorizacionRecursividad

Definicion (Recursividad general por la izquierda)

Una gramatica posee recursividad general por la izquierda si

∃ A+

=⇒ A β

donde

A ∈ VN

β ∈ V + = (VN ∪ VT )+

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

Page 242: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Recursividad y factorizacionRecursividad

Ejemplo (Recursividad general por la izquierda 1 / 2)

P = {(1) S −→ A a(2) A −→ A a(3) A −→ S b(4) A −→ c

}

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

Page 243: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Recursividad y factorizacionRecursividad

Ejemplo (Recursividad general por la izquierda 2 / 2)

S =⇒1

A a

=⇒2

A a a

=⇒3

S b a a

· · ·

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

Page 244: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Recursividad y factorizacionRecursividad

Definicion (Recursividad general por la derecha)

Una gramatica posee recursividad general por la derecha si

∃ A+

=⇒ α A

donde

A ∈ VN

α ∈ V + = (VN ∪ VT )+

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

Page 245: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Recursividad y factorizacionRecursividad

Ejemplo (Recursividad general por la derecha 1 / 2)

P = {(1) S −→ a A(2) A −→ a A(3) A −→ b S(4) A −→ c

}

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

Page 246: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Recursividad y factorizacionRecursividad

Ejemplo (Recursividad general por la derecha 2 / 2)

S =⇒1

a A

=⇒2

a a A

=⇒3

a a b S

· · ·

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

Page 247: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Recursividad y factorizacionRecursividad

Nota (Gramatica recursiva por la izquierda: inconveniente)

No se puede realizar el analisis sintactico descendente congramaticas recursivas por la izquierda.

Dichas gramaticas deben ser convertidas en gramaticasrecursivas por la derecha.

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

Page 248: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Recursividad y factorizacionRecursividad

Recursividad

Gramatica con recursividad inmediata

Gramatica con recursividad general

Eliminacion de la recurvidad inmediata por la izquierda

Eliminacion de la recurvidad general por la izquierda

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

Page 249: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Recursividad y factorizacionRecursividad

Algoritmo (Eliminacion de la recursividad inmediata por la izquierda)

EntradaG = (VN ,VT ,P,S)Gramatica con reglas recursivas por la izquierda.

SalidaG ′ = (V ′N ,VT ,P

′,S)Gramatica sin reglas recursivas por la izquierda.

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

Page 250: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Recursividad y factorizacionRecursividad

Algoritmo (Eliminacion de la recursividad inmediata por la izquierda)

inicio

P′ ← ∅para cada A ∈ VN hacer

si A no tiene reglas recursivas

entonces se anaden a P′ las reglas de A

si no si (A −→ Aα1|Aα2| · · · |Aαp |β1|β2| · · · |βq ∈ P )

donde ∀i αi 6= ε y ∀j βj no empieza por A

entonces se anaden a P′ las reglas

A −→ βj |βj A′ ∀j ∈ {1, 2, . . . , q}

A′ −→ αi |αi A′ ∀i ∈ {1, 2, . . . , p}

fin si

fin si

fin para

fin

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

Page 251: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Recursividad y factorizacionRecursividad

Nota (Eliminacion de la recursividad inmediata por la izquierda)

Si A ∈ VN posee recursividad inmediata entonces A′ es unnuevo sımbolo no terminal.

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

Page 252: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Recursividad y factorizacionRecursividad

Ejemplo (Eliminacion de la recursividad inmediata por la izquierda 1/7)

P = {S −→ identificador = E

E −→ E + T | T ∗ F | ( E ) | identificador | numero

T −→ T ∗ F | ( E ) | identificador | numero

F −→ ( E ) | identificador | numero

}

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

Page 253: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Recursividad y factorizacionRecursividad

Ejemplo (Eliminacion de la recursividad inmediata por la izquierda 2/7)

Paso 1: S no tiene recursividad por la izquierda

Se anade a P ′ la regla de S.

S −→ identificador = E

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

Page 254: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Recursividad y factorizacionRecursividad

Ejemplo (Eliminacion de la recursividad inmediata por la izquierda 3/7)

Paso 2: E tiene una regla recursiva por la izquierda

E −→ E +T︸︷︷︸α1

| T∗F︸︷︷︸β1

| (E )︸︷︷︸β2

| identificador︸ ︷︷ ︸β3

| numero︸ ︷︷ ︸β4

Se anaden a P ′ las siguientes reglas

E −→ T ∗ F | ( E ) | identificador | numero |T ∗ F E ′ | ( E ) E ′ | identificador E ′ | numero E ′

E ′ −→ + T | + T E ′

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

Page 255: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Recursividad y factorizacionRecursividad

Ejemplo (Eliminacion de la recursividad inmediata por la izquierda 4/7)

Paso 3: T tiene una regla recursiva por la izquierda

T −→ T ∗F︸︷︷︸α1

| (E )︸︷︷︸β1

| identificador︸ ︷︷ ︸β2

| numero︸ ︷︷ ︸β3

Se anaden a P ′ las siguientes reglas:

T −→ ( E ) | identificador | numero |( E ) T ′ | identificador T ′ | numero T ′

T ′ −→ ∗ F | ∗ F T ′

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

Page 256: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Recursividad y factorizacionRecursividad

Ejemplo (Eliminacion de la recursividad inmediata por la izquierda 5/7)

Paso 4: F no posee reglas recursivass.

Se anaden a P ′ todas las reglas de F

F −→ ( E ) | identificador | numero

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

Page 257: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Recursividad y factorizacionRecursividad

Ejemplo (Eliminacion de la recursividad inmediata por la izquierda 6/7)

P’ = {S −→ identificador = E

E −→ T * F | ( E ) | identificador | numero |T * F E’ | ( E ) E’ | identificador E’ | numero E’

E’ −→ + T | + T E’

T −→ ( E ) | identificador | numero |( E ) T’ | identificador T’ | numero T’

T’ −→ * F | * F T’

F −→ ( E ) | identificador | numero

}

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

Page 258: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Recursividad y factorizacionRecursividad

Ejemplo (Eliminacion de la recursividad inmediata por la izquierda 7/7)

G y G ′ son gramaticas equivalentes

S =⇒G

identificador = E

=⇒G

identificador = E + T

=⇒G

identificador = identificador + T

=⇒G

identificador = identificador + identificador

S =⇒G ′

identificador = E

=⇒G ′

identificador = identificador E ′

=⇒G ′

identificador = identificador + T

=⇒G ′

identificador = identificador + identificador

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

Page 259: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Recursividad y factorizacionRecursividad

Recursividad

Gramatica con recursividad inmediata

Gramatica con recursividad general

Eliminacion de la recurvidad inmediata por la izquierda

Eliminacion de la recurvidad general por la izquierda

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

Page 260: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Recursividad y factorizacionRecursividad

Algoritmo (Eliminacion de la recursividad general por la izquierda)

EntradaG = (VN ,VT ,P,S)Gramatica de contexto libre propia, es decir, sin ciclos, sinreglas ε, ni sımbolos inutiles.

SalidaG ′ = (V ′N ,VT ,P

′,S)Gramatica sin recursividad por la izquierda.

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

Page 261: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Recursividad y factorizacionRecursividad

Algoritmo (Eliminacion de la recursividad general por la izquierda)

inicio

P′ ← ∅Ordenense los sımbolos no terminales de la gramatica: {A1,A2, . . . ,An}para i de 1 a n hacer

para j de 1 a i − 1 hacer

si Ai −→ Aj γ ∈ P

entonces

Anadir a P′ las reglas Ai −→ δ1 γ | · · · | δk γ

donde Aj −→ δ1 | · · · | δk son las reglas actuales de Aj

fin si

fin para

Eliminar la recursividad inmediata por la izquierda de las reglas de Ai .

fin para

fin

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

Page 262: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Recursividad y factorizacionRecursividad

Ejemplo (Eliminacion de la recursividad general por la izquierda 1 / 8)

P = {(1) S −→ A B(2) S −→ c(3) A −→ B b(4) A −→ S d(5) A −→ a(6) B −→ S b(7) B −→ A a

}

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

Page 263: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Recursividad y factorizacionRecursividad

Ejemplo (Eliminacion de la recursividad general por la izquierda 2 / 8)

Ordenamiento de los sımbolos no terminales: {S ,A,B}

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

Page 264: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Recursividad y factorizacionRecursividad

Ejemplo (Eliminacion de la recursividad general por la izquierda 3 / 8)

Paso exterior 1: reglas de produccion de S

Paso interior 1S no tiene ninguna regla que comience por un sımbolo con unnumero de orden inferior al suyo.Eliminacion de la recusividad inmediata de SS no tiene recursividad inmediata por la izquierda.

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

Page 265: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Recursividad y factorizacionRecursividad

Ejemplo (Eliminacion de la recursividad general por la izquierda 4 / 8)

Paso exterior 2: reglas de produccion de A

Paso interior 1:Sustitucion de las reglas de A que comienzan por S:

La regla(4) A −→ S d se sustituye por A −→ A B d | c dNuevas reglas de A:

A −→ A B d | B b | c d | a

Eliminacion de la recusividad inmediata de A:

A −→ B b | c d | a |B b A′ | c d A′ | a A′

A′ −→ B d | B d A′

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

Page 266: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Recursividad y factorizacionRecursividad

Ejemplo (Eliminacion de la recursividad general por la izquierda 5 / 8)

Paso exterior 3: reglas de produccion de B

Paso interior 1:Sustitucion de las reglas de B que comienzan por S

La regla (6) B −→ S b se sustituye por

B −→ A B b | c b

Nuevas reglas de B

B −→ A B b | c b | A a

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

Page 267: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Recursividad y factorizacionRecursividad

Ejemplo (Eliminacion de la recursividad general por la izquierda 6 / 8)

Paso exterior 3: reglas de produccion de B

Paso interior 2:Sustitucion de las reglas de B que comienzan por A

La regla B −→ A B b se sustituye por las reglas

B −→ B b B b | c d B b | a B b |B b A′ B b | c d A′ B b | a A′ B b

y la regla B −→ A a se sustituye por las reglas

B −→ B b a | c d a | a a |B b A′ a | c d A′ a | a A′ a

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

Page 268: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Recursividad y factorizacionRecursividad

Ejemplo (Eliminacion de la recursividad general por la izquierda 7 / 8)

Paso exterior 3: reglas de produccion de B

Nuevas reglas de B:

B −→ B b B b | B b A′ B b | B b a | B b A′ a |c d B b | a B b | c d A′ B b | a A′ B b |b a | c d a | a a | c d A′ a | a A′ a |c b

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

Page 269: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Recursividad y factorizacionRecursividad

Ejemplo (Eliminacion de la recursividad general por la izquierda 8 / 8)

Paso exterior 3: reglas de produccion de BEliminacion de la recusividad inmediata de B

B −→ c d B b | a B b | c d A′ B b | a A′ B b |b a | c d a | a a | c d A′ a | a A′ a |c b |c d B b B′ | a B b B′ | c d A′ B b B′ | a A′ B b B′ |b a B′ | c d a B′ | a a B′ | c d A′ a B′ | a A′ a B′ |c b B′

B′ −→ b B b | b A′ B b | b a | b A′ a |b B b B′ | b A′ B b B′ | b a B′ | b A′ a B′

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

Page 270: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Contenido de la seccion

5 Recursividad y factorizacionRecursividadFactorizacion por la izquierdaEliminacion de la recursividad inmediata y factorizacion por laizquierda

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

Page 271: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Recursividad y factorizacionFactorizacion por la izquierda

Factorizacion por la izquierda

Considerense las siguientes reglas de produccion:

S −→ si E entonces S si no S fin siS −→ si E entonces S fin si

Si se recibe el componente lexico si, no se sabe aun que reglade S se debe utilizar

Se puede posponer esta decision si se utilizan las siguientesreglas de produccion.

S −→ si E entonces S S’S’ −→ si no S fin siS’ −→ fin si

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

Page 272: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Recursividad y factorizacionFactorizacion por la izquierda

Factorizacion por la izquierda

En general, si

A −→ α β1 | α β2 | · · · | α βN

son reglas de A que comienzan por α 6= ε

entonces no se sabe que alternativa de A utilizar

Solucion: factorizar por la izquierda

A −→ α A’A’ −→ β1 | β2 | · · · | βN

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

Page 273: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Recursividad y factorizacionFactorizacion por la izquierda

Nota (Factorizacion por la izquierda)

El analisis sintactico descendente requiere que la gramatica estefactorizada por la izquierda.

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

Page 274: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Recursividad y factorizacionFactorizacion por la izquierda

Algoritmo (Factorizacion por la izquierda 1/2)

EntradaG = (VN ,VT ,P,S)Gramatica de contexto libre propia.

SalidaG ′ = (V ′N ,VT ,P

′,S)Gramatica factorizada por la izquierda.

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

Page 275: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Recursividad y factorizacionFactorizacion por la izquierda

Algoritmo (Factorizacion por la izquierda 2/2)

inicio

para cada A ∈ VN hacer

mientras A tenga dos reglas actuales con el mismo prefijo hacer

si α 6= ε es el prefijo mas largo de dos o mas alternativas de A

entonces sustituir todas las reglas de A

A −→ α β1 | · · · | α βp | γ1 | · · · | γq

donde γi no empieza por α ∀i ∈ {1, 2, . . . , q}por las reglas

A −→ α A’ | γ1 | · · · | γq

A′ −→ β1 | · · · | βp

fin si

fin mientras

fin para

fin

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

Page 276: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Recursividad y factorizacionFactorizacion por la izquierda

Ejemplo (Factorizacion por la izquierda 1/4)

P = {S −→ A B c | A B d e | A B d f | A B S

A −→ a

B −→ b

}

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

Page 277: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Recursividad y factorizacionFactorizacion por la izquierda

Ejemplo (Factorizacion por la izquierda 2/4)

Paso 1: factorizacion de las reglas de S (1/2)

α1 = ABd: prefijo mas largo

S −→ A B c | A B d e | A B d f | A B S

Las reglas de S se sustituyen por:

S −→ A B d S’ | A B c | A B SS’ −→ e | f

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

Page 278: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Recursividad y factorizacionFactorizacion por la izquierda

Ejemplo (Factorizacion por la izquierda 3/4)

Paso 1: factorizacion de las reglas de S (2/2)

α2 = AB: nuevo prefijo mas largo.

S −→ A B d S’ | A B c | A B S

Las reglas actuales de S se sustituyen por:

S −→ A B S”S” −→ d S’ | c | SS’ −→ e | f

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

Page 279: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Recursividad y factorizacionFactorizacion por la izquierda

Ejemplo (Factorizacion por la izquierda 4/4)

Pasos 2 y 3

Las producciones de A y B no requieren factorizacion.

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

Page 280: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Recursividad y factorizacionFactorizacion por la izquierda

Ejercicio (Factorizacion por la izquierda)

P’ = {S −→ identificador = E

E −→ T * F | ( E ) | identificador | numero |T * F E’ | ( E ) E’ | identificador E’ | numero E’

E’ −→ + T | + T E’

T −→ ( E ) | identificador | numero |( E ) T’ | identificador T’ | numero T’

T’ −→ * F | * F T’

F −→ ( E ) | identificador | numero

}

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

Page 281: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Contenido de la seccion

5 Recursividad y factorizacionRecursividadFactorizacion por la izquierdaEliminacion de la recursividad inmediata y factorizacion por laizquierda

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

Page 282: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Recursividad y factorizacionEliminacion de la recursividad inmediata y factorizacion por la izquierda

Algoritmo

EntradaG = (VN ,VT ,P,S)Gramatica con recursividad inmediata por la izquierda.

SalidaG ′ = (V ′N ,VT ,P

′,S)Gramatica sin recursividad inmediata por la izquierda yfactorizada por la izquierda.

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

Page 283: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Recursividad y factorizacionEliminacion de la recursividad inmediata y factorizacion por la izquierda

Algoritmo

inicio

P′ ← ∅para cada A ∈ VN hacer

si A no tiene producciones recursivas

entonces se anaden a P′ las producciones de A factorizadas

si no si A −→ Aα1|Aα2| · · · |Aαp |β1|β2| · · · |βq ∈ P

donde ∀i αi 6= ε y ∀j βj no empieza por A

entonces se anaden a P′ las producciones

A −→ βj A′ ∀j ∈ {1, 2, . . . , q}

A′ −→ αi A′|ε ∀i ∈ {1, 2, . . . , p}

fin si

fin si

fin para

fin

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

Page 284: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Recursividad y factorizacionEliminacion de la recursividad inmediata y factorizacion por la izquierda

Ejemplo (Eliminacion de recursividad y factorizacion 1 / 6)

Gramatica sin reglas unitarias

P = {S −→ identificador = E

E −→ E + T | T ∗ F | ( E ) | identificador | numero

T −→ T ∗ F | ( E ) | identificador | numero

F −→ ( E ) | identificador | numero

}

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

Page 285: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Recursividad y factorizacionEliminacion de la recursividad inmediata y factorizacion por la izquierda

Ejemplo (Eliminacion de recursividad y factorizacion 2 / 6)

Procesamiento de la regla de S

S −→ identificador = E

Se anade a P’ porque dicha regla no es recursiva

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

Page 286: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Recursividad y factorizacionEliminacion de la recursividad inmediata y factorizacion por la izquierda

Ejemplo (Eliminacion de recursividad y factorizacion 3 / 6)

Procesamiento de las reglas de E

E −→ E +T︸︷︷︸α1

| T∗F︸︷︷︸β1

| (E )︸︷︷︸β2

| identificador︸ ︷︷ ︸β3

| numero︸ ︷︷ ︸β4

Se anaden a P ′ las siguientes reglas

E −→ T * F E’ | ( E ) E’ | identificador E’ | numero E’

E’ −→ + T E’ | ε

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

Page 287: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Recursividad y factorizacionEliminacion de la recursividad inmediata y factorizacion por la izquierda

Ejemplo (Eliminacion de recursividad y factorizacion 4 / 6)

Procesamiento de las reglas de T

T −→ T ∗F︸︷︷︸α1

| (E )︸︷︷︸β1

| identificador︸ ︷︷ ︸β2

| numero︸ ︷︷ ︸β3

Se anaden a P ′ las siguientes reglas

T −→ ( E ) T’ | identificador T’ | numero T’

T’ −→ * F T’ | ε

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

Page 288: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Recursividad y factorizacionEliminacion de la recursividad inmediata y factorizacion por la izquierda

Ejemplo (Eliminacion de recursividad y factorizacion 5 / 6)

Procesamiento de las reglas de F

F −→ ( E ) | identificador | numero

Se anaden a P ′ porque no son recursivas por la izquierda ninecesitan ser factorizadas.

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

Page 289: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Recursividad y factorizacionEliminacion de la recursividad inmediata y factorizacion por la izquierda

Ejemplo (Gramatica transformada 6 / 6)

P’ = {

S −→ identificador = E

E −→ T * F E’ | ( E ) E’ | identificador E’ | numero E’

E’−→ + T E’ | ε

T −→ ( E ) T’ | identificador T’ | numero T’

T’ −→ * F T’ | ε

F −→ ( E ) | identificador | numero

}

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

Page 290: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Formas normales

1 Introduccion

2 Gramaticas de contexto libre

3 Ambiguedad

4 Operaciones de limpieza

5 Recursividad y factorizacion

6 Formas normales

7 Tipos de analisis sintactico

8 Deteccion y tratamiento deerrores sintacticos

9 Generadores de analizadoressintacticos

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

Page 291: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Formas normales

6 Formas normalesForma normal de ChomskyForma normal de Greibach

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

Page 292: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Contenido de la seccion

6 Formas normalesForma normal de ChomskyForma normal de Greibach

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

Page 293: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Formas normalesForma normal de Chomsky

Definicion (Gramatica en la forma normal de Chomsky)

Una gramatica esta en la forma normal de Chomsky (F.N.C.)si sus reglas son de la forma:

A −→ B CA −→ a

donde

A,B,C ∈ VN

a ∈ VT

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

Page 294: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Formas normalesForma normal de Chomsky

Ejemplo (Gramatica en la forma normal de Chomsky 1 / 3)

P = {(1) S −→ A B

(2) A −→ A B

(3) A −→ a

(4) B −→ B B

(5) B −→ b

}

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

Page 295: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Formas normalesForma normal de Chomsky

Ejemplo (Gramatica en F.N.C.: derivacion 2 / 3)

S =⇒1

A B

=⇒2

A B B

=⇒3

a B B

=⇒4

a B B B

=⇒5

a b B B

=⇒5

a b b B

=⇒5

a b b b

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

Page 296: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Formas normalesForma normal de Chomsky

Ejemplo (Gramatica en F.N.C.: arbol sintactico 3 / 3)

A

A B

B

S

B B

b b

b

a

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

Page 297: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Formas normalesForma normal de Chomsky

Nota (Arboles de la gramaticas en la F. N. C.)

Los arboles sintacticos de las derivaciones de las gramaticas queestan en la forma normal de Chomsky siempre son arboles binarios.

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

Page 298: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Formas normalesForma normal de Chomsky

Nota (Analisis sintactico)

El algoritmo de analisis sintactico CYK (Cocke, Younger, Kasami)se aplica a gramaticas que estan en la Forma Normal de Chomsky.

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

Page 299: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Formas normalesForma normal de Chomsky

Algoritmo (Obtencion de la forma normal de Chomsky 1 / 6)

EntradaG = (VN ,VT ,P,S)Gramatica propia.

SalidaG ′ = (V ′N ,VT ,P

′,S)Gramatica en la forma normal Chomsky.

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

Page 300: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Formas normalesForma normal de Chomsky

Algoritmo (Obtencion de la forma normal de Chomsky 2/ 6)

Paso 1

Generacion de G1 = (VN1 ,VT ,P1, S)

A −→ B1 B2 · · · Bk donde k ≥ 2

A −→ a

Paso 2

Generacion de G2 = (VN2 ,VT ,P2, S)

A −→ B CA −→ a

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

Page 301: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Formas normalesForma normal de Chomsky

Nota (Obtencion de la forma normal de Chomsky 3 / 6)

Se verifica que L(G2) = L(G1) = L(G )− {ε}.

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

Page 302: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Formas normalesForma normal de Chomsky

Algoritmo (Obtencion de la forma normal de Chomsky 4 / 6)

Paso 1. Sea A −→ X1 X2 · · · Xk ∈ P

Si k = 1 entonces

A −→ X1 se anade a P1

donde X1 ∈ VT , porque la gramatica no tiene reglas unitarias.

Si k ≥ 2 entonces

A −→ B1 B2 · · · Bk se anade a P1

donde

Si Xi ∈ VN entonces Bi = Xi

Si Xi = ai ∈ VT entonces

Bi ∈ VN1 − VN

Bi −→ Xi ∈ P1

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

Page 303: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Formas normalesForma normal de Chomsky

Algoritmo (Obtencion de la forma normal de Chomsky 5 / 6)

Paso 2. Generacion de las reglas de P2

Si A −→ a ∈ P1 entonces A −→ a ∈ P2.

Si A −→ B1 B2 · · · Bk ∈ P1 entonces:

Si k = 2 entonces A −→ B1 B2 ∈ P2

Si k ≥ 3 entonces se anaden a P2 las siguientes reglas:

A −→ B1 C1

C1 −→ B2 C2

· · ·Ck−1 −→ Bk−2 Ck−2

Ck−2 −→ Bk−1 Bk

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

Page 304: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Formas normalesForma normal de Chomsky

Nota (Obtencion de la forma normal de Chomsky 6 / 6)

∀i ∈ {1, . . . , k − 2} Ci es un nuevo sımbolo no terminal.

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

Page 305: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Formas normalesForma normal de Chomsky

Ejemplo (Obtencion de la forma normal de Chomsky 1 / 3)

Gramatica de contexto libre propia.

P = {S −→ a A B

A −→ a B b

A −→ a

B −→ b b

}

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

Page 306: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Formas normalesForma normal de Chomsky

Ejemplo (Obtencion de la forma normal de Chomsky 2 / 3)

Paso 1

P1 = {S −→ B1 A B

A −→ B1 B B2

A −→ a

B −→ B2 B2

B1 −→ a

B2 −→ b

}

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

Page 307: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Formas normalesForma normal de Chomsky

Ejemplo (Obtencion de la forma normal de Chomsky 3 / 3)

Paso 2

P2 = {S −→ B1 C1

C1 −→ A B

A −→ B1 C2

C2 −→ B B2

A −→ a

B −→ B2 B2

B1 −→ a

B2 −→ b

}

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

Page 308: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Formas normalesForma normal de Chomsky

Ejercicio (Obtencion de la forma normal de Chomsky 1 / 2)

P = {(1) S −→ T L ;(2) T −→ int(3) T −→ float(4) L −→ identificador L’(5) L’ −→ , identificador L’(6) L’ −→ ε

}

Nota

Previamente, hay que eliminar la regla ε

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

Page 309: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Formas normalesForma normal de Chomsky

Ejercicio (Obtencion de la forma normal de Chomsky 2 / 2)

P = {(1) S −→ T identificador ( P ) ;(2) T −→ int(3) P −→ identificador P’(4) P’ −→ , identificador P’(5) P’ −→ ε

}

Nota

Previamente, hay que eliminar la regla ε

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

Page 310: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Contenido de la seccion

6 Formas normalesForma normal de ChomskyForma normal de Greibach

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

Page 311: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Formas normalesForma normal de Greibach

Definicion (Forma normal de Greibach)

Una gramatica esta en la forma normal de Greibach (F.N.G.)si sus reglas son de la forma:

A −→ a α

donde

A ∈ VN

a ∈ VT

α ∈ V ∗N

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

Page 312: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Formas normalesForma normal de Greibach

Ejemplo (Forma normal de Greibach: gramatica 1 / 2)

P = {(1) S −→ int L P(2) S −→ float L P(3) L −→ identificador L’(4) L −→ identificador(5) L’ −→ , I L’(6) L’ −→ , I(7) I −→ identificador(8) P −→ ;}

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

Page 313: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Formas normalesForma normal de Greibach

Ejemplo (Forma normal de Greibach: derivacion 2 / 2)

S =⇒1

int L P

=⇒3

int identificador L’ P

=⇒6

int identificador , I P

=⇒7

int identificador , identificador P

=⇒8

int identificador , identificador ;

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

Page 314: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Formas normalesForma normal de Greibach

Nota (Analisis sintactico descendente)

Una gramatica en FNG admite el analisis sintacticodescendente si ∀A ∈ VN sus alternativas comienzan por unsımbolo terminal diferente.

A −→ a1 α1

A −→ a2 α2

· · ·A −→ aN αN

Si i 6= j entonces ai 6= aj

Vease el tema no 4.- Analisis sintactico descendente.

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

Page 315: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Formas normalesForma normal de Greibach

Ejemplo (Analisis sintactico descendente)

Gramatica en FNG que admite el analisis sintactico descendente

P = {(1) S −→ a A B C(2) A −→ a A(3) A −→ b(4) B −→ b B(5) B −→ c(6) C −→ c C(7) C −→ d}

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

Page 316: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Formas normalesForma normal de Greibach

Algoritmo (Obtencion de la forma normal de Greibach 1 / 9)

EntradaG = (VN ,VT ,P,S)Gramatica en la forma normal Chomsky.

SalidaG ′ = (V ′N ,VT ,P

′,S)Gramatica en la forma normal Greibach.

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

Page 317: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Formas normalesForma normal de Greibach

Algoritmo (Obtencion de la forma normal de Greibach 2 / 9)

Paso 1

Aplicacion del algoritmo que elimina la recursividad generalpor la izquierda.

Paso 2

Transformacion de las reglas de los sımbolos no terminalesde la gramatica original.

Paso 3:

Transformacion de las reglas de los sımbolos no terminalesobtenidos al eliminar la recursividad inmediata.

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

Page 318: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Formas normalesForma normal de Greibach

Algoritmo (Obtencion de la forma normal de Greibach 3 / 9)

Paso 1 (1/3)

Aplicacion del algoritmo que elimina la recursividad generalpor la izquierda.

Las reglas de produccion resultantes seran de la forma:

Ai −→ Ajγ ∀j > i ∧ i , j ∈ {i , 2, . . . , n}Ai −→ aγ

A′i −→ γ

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

Page 319: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Formas normalesForma normal de Greibach

Algoritmo (Obtencion de la forma normal de Greibach 4 / 9)

Paso 1 (2/3)

donde

Ai ,Aj ∈ VN

a ∈ VT

∀i A′i : generado al eliminar la recursividad inmediata por laizquierdaγ ∈ (VN ∪ {A′1,A′2, . . . ,A′n})∗.

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

Page 320: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Formas normalesForma normal de Greibach

Algoritmo (Obtencion de la forma normal de Greibach 5 / 9)

Paso 1 (3/3)

En particular, la reglas del sımbolo An ya estaran en la formanormal de Greibach.

An −→ a γ

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

Page 321: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Formas normalesForma normal de Greibach

Algoritmo (Obtencion de la forma normal de Greibach 6 / 9)Paso 2. Transformacion de las reglas de los sımbolos no terminales de lagramatica original.

inicio

para i de n − 1 a 1 hacer

para j de i + 1 a n hacer

para cada produccion actual de Ai de la forma Ai −→ Aj γ hacer

si Aj −→ a1 α1 | a2 α2 | · · · | ap αp son las reglas actuales de Aj

entonces Ai −→ a1 α1 γ | a2 α2 γ | · · · | ap αp γ

pasan a ser producciones actuales de Ai

fin si

fin para

fin para

fin para

fin

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

Page 322: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Formas normalesForma normal de Greibach

Algoritmo (Obtencion de la forma normal de Greibach 7 / 9)

Paso 2 (continuacion)

Las reglas de produccion resultantes seran de la forma:

Ai −→ a γ

A′i −→ γ

En particular, todas la reglas de los sımbolos no terminalesoriginales estaran en la forma normal de Greibach.

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

Page 323: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Formas normalesForma normal de Greibach

Algoritmo (Obtencion de la forma normal de Greibach 8 / 9)Paso 3. Transformacion de las reglas de los sımbolos obtenidos al eliminar larecursividad inmediata.

inicio

para i de 1 a m hacer

para j de 1 a n hacer

para cada regla actual de A′i de la forma A′

i −→ Aj γ

hacer si Aj −→ a1 α1 | a2 α2 | · · · | ap αp son las reglas actuales de Aj

entonces A′i −→ a1 α1 γ | a2 α2 γ | · · · | ap αp γ

pasan a ser reglas actuales de A′i

fin si

fin para

fin para

fin para

fin

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

Page 324: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Formas normalesForma normal de Greibach

Algoritmo (Obtencion de la forma normal de Greibach 9 / 9)

Paso 3. (Continuacion)

Las reglas de produccion resultantes seran de la forma:

Ai −→ a γ

A′i −→ a γ

Por tanto, todas la reglas estaran en la forma normal deGreibach.

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

Page 325: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Formas normalesForma normal de Greibach

Ejemplo (Obtencion de la forma normal de Greibach 1 / 10)

Gramatica que esta en la forma normal de Chomsky.

P = {(1) S −→ A B(2) A −→ S B(3) A −→ a(4) B −→ B A(5) B −→ d

}

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

Page 326: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Formas normalesForma normal de Greibach

Ejemplo (Obtencion de la forma normal de Greibach 2 / 10)

Paso 1. Eliminacion de la recursividad general por la izquierda

(1) Procesamiento de la regla de SS es el primer sımbolo y, por tanto, su alternativa nocomienza por un sımbolo con un numero de orden menor.S no tiene recursividad inmediata por la izquierda.La regla de S se anade a P1

S −→ A B

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

Page 327: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Formas normalesForma normal de Greibach

Ejemplo (Obtencion de la forma normal de Greibach 3 / 10)

Paso 1. Eliminacion de la recursividad general por la izquierda

(2) Procesamiento de las reglas de AS aparece en la regla de A

A −→ S BSe sustituye S por su alternativa y se genera nueva regla de A

A −→ A B BEliminacion de la recursividad inmediata por la izquierda de A.Las reglas actuales de A

A −→ A B B | ase sustituyen por

A −→ a | a A’A’ −→ B B | B B A’

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

Page 328: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Formas normalesForma normal de Greibach

Ejemplo (Obtencion de la forma normal de Greibach 4 / 10)

Paso 1. Eliminacion de la recursividad general por la izquierda

(3) Procesamiento de las reglas de BNo hay sustituir ningun sımbolo en las reglas de B.Eliminacion de la recursividad inmediata por la izquierda de B.Las reglas actuales de B

B −→ B A | dse sustituyen por

B −→ d | d B’B’ −→ A | A B’

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

Page 329: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Formas normalesForma normal de Greibach

Ejemplo (Obtencion de la forma normal de Greibach 5 / 10)

Paso 1. Eliminacion de la recursividad general por la izquierda

Gramatica generada en el paso 1

P1 = {S −→ A B

A −→ a | a A’

B −→ d | d B’

A’ −→ B B | B B B’

B’ −→ A | A B’

}

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

Page 330: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Formas normalesForma normal de Greibach

Ejemplo (Obtencion de la forma normal de Greibach 6 / 10)

Paso 2. Transformacion de las reglas de los sımbolos noterminales originales.

(1) Las reglas de B ya estan en la forma normal de Greibach.B −→ d | d B’

(2) Las reglas de A ya estan en la forma normal de Greibach.A −→ a | a A’

(3) Transformacion de las reglas de SSe sustituye A por sus alternativas en la regla

S −→ A BSe generan las siguientes reglas

S −→ a B | a A’ B

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

Page 331: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Formas normalesForma normal de Greibach

Ejemplo (Obtencion de la forma normal de Greibach 7 / 10)

Paso 2. Transformacion de las reglas de los sımbolos noterminales originales.

Gramatica generada en el paso 2

P2 = {S −→ a B | a A’ B

A −→ a | a A’

B −→ d | d B’

A’ −→ B B | B B B’

B’ −→ A | A B’

}

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

Page 332: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Formas normalesForma normal de Greibach

Ejemplo (Obtencion de la forma normal de Greibach 8 / 10)

Paso 3. Transformacion de las reglas de los sımbolos noterminales generados al eliminar la recursividad inmediata porla izquierda.

Trasformacion de las reglas de A′

A’ −→ B B | B B A’se sustituye B por sus alternativas y se generan las reglas:

A’ −→ d B | d B A’ | d B’ B | d B’ B A’Transformacion de las reglas de B ′

B’ −→ A | A B’.se sustituye A por sus alternativas y se generan las reglas:

B’ −→ a | a A’ | a B’ | a A’ B’

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

Page 333: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Formas normalesForma normal de Greibach

Ejemplo (Obtencion de la forma normal de Greibach 9 / 10)

Paso 3. Gramatica generada

P3 = {S −→ a B | a A’ B

A −→ a | a A’

B −→ d | d B’

A’ −→ d B | d B A’ | d B’ B | d B’ B A’

B’ −→ a | a A’ | a B’ | a A’ B’

}

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

Page 334: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Formas normalesForma normal de Greibach

Ejemplo (Obtencion de la forma normal de Greibach 10 / 10)

P ′ = {S −→ a B | a A’ B

A −→ a | a A’

B −→ d | d B’

A’ −→ d B | d B A’ | d B’ B | d B’ B A’

B’ −→ a | a A’ | a B’ | a A’ B’

}

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

Page 335: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Formas normalesForma normal de Greibach

Ejercicio (Obtencion de la forma normal de Greibach)

P = {(1) S −→ T identificador ( P ) ;(2) T −→ int(3) P −→ identificador P’(4) P’ −→ , identificador P’(5) P’ −→ ε

}

Nota

Previamente, hay que convertirla a la forma normal de Chomsky.

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

Page 336: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Tipos de analisis sintactico

1 Introduccion

2 Gramaticas de contexto libre

3 Ambiguedad

4 Operaciones de limpieza

5 Recursividad y factorizacion

6 Formas normales

7 Tipos de analisis sintactico

8 Deteccion y tratamiento deerrores sintacticos

9 Generadores de analizadoressintacticos

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

Page 337: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Tipos de analisis sintactico

7 Tipos de analisis sintacticoMetodos universalesMetodos descendentesMetodos ascendentes

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

Page 338: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Contenido de la seccion

7 Tipos de analisis sintacticoMetodos universalesMetodos descendentesMetodos ascendentes

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

Page 339: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Tipos de analisis sintacticoMetodos universales

Tipos de analisis sintactico

Metodos universales

Algoritmo de CYK: Cocke, Younger, Kasami.Algoritmo de Earley.Algorimo de GHR: Graham, Harrison, Ruzzo.

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

Page 340: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Tipos de analisis sintacticoMetodos universales

Tipos de analisis sintactico

Metodos universalesVentaja

Se pueden aplicar a todas las gramaticas.

Inconvenientes

Complejidad computacional muy altaEn el peor de los casos, la complejidad es cubica: O(n3)El algoritmo CYK requiere que la gramatica se transformepreviamente a la FNC.

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

Page 341: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Contenido de la seccion

7 Tipos de analisis sintacticoMetodos universalesMetodos descendentesMetodos ascendentes

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

Page 342: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Tipos de analisis sintacticoMetodos descendentes

Metodos descendentes

Generan un derivacion por la izquierda de la cadena de entrada

El arbol sintactico se genera de arriba hacia abajo:

desde la raız hasta las hojas

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

Page 343: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Tipos de analisis sintacticoMetodos descendentes

Ejemplo (Gramatica de las expresiones aritmeticas)

P = {(1) S −→ identificador = E(2) E −→ T E ’(3) E’ −→ + T E’(4) E’ −→ ε(5) T −→ F T’(6) T’ −→ * F T’(7) T’ −→ ε(8) F −→ ( E )(9) F −→ identificador

(10) F −→ numero

}

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

Page 344: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Tipos de analisis sintacticoMetodos descendentes

Ejemplo (Derivacion por la izquierda 1 / 2)S =⇒

1identificador = E

=⇒2

identificador = T E’

=⇒5

identificador = F T’ E’

=⇒9

identificador = identificador T’ E’

=⇒7

identificador = identificador ε E’

=⇒3

identificador = identificador + T E’

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

Page 345: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Tipos de analisis sintacticoMetodos descendentes

Ejemplo (Derivacion por la izquierda 1 / 2)S =⇒

1identificador = E

=⇒2

identificador = T E’

=⇒5

identificador = F T’ E’

=⇒9

identificador = identificador T’ E’

=⇒7

identificador = identificador ε E’

=⇒3

identificador = identificador + T E’

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

Page 346: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Tipos de analisis sintacticoMetodos descendentes

Ejemplo (Derivacion por la izquierda 1 / 2)S =⇒

1identificador = E

=⇒2

identificador = T E’

=⇒5

identificador = F T’ E’

=⇒9

identificador = identificador T’ E’

=⇒7

identificador = identificador ε E’

=⇒3

identificador = identificador + T E’

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

Page 347: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Tipos de analisis sintacticoMetodos descendentes

Ejemplo (Derivacion por la izquierda 1 / 2)S =⇒

1identificador = E

=⇒2

identificador = T E’

=⇒5

identificador = F T’ E’

=⇒9

identificador = identificador T’ E’

=⇒7

identificador = identificador ε E’

=⇒3

identificador = identificador + T E’

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

Page 348: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Tipos de analisis sintacticoMetodos descendentes

Ejemplo (Derivacion por la izquierda 1 / 2)S =⇒

1identificador = E

=⇒2

identificador = T E’

=⇒5

identificador = F T’ E’

=⇒9

identificador = identificador T’ E’

=⇒7

identificador = identificador ε E’

=⇒3

identificador = identificador + T E’

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

Page 349: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Tipos de analisis sintacticoMetodos descendentes

Ejemplo (Derivacion por la izquierda 1 / 2)S =⇒

1identificador = E

=⇒2

identificador = T E’

=⇒5

identificador = F T’ E’

=⇒9

identificador = identificador T’ E’

=⇒7

identificador = identificador ε E’

=⇒3

identificador = identificador + T E’

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

Page 350: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Tipos de analisis sintacticoMetodos descendentes

Ejemplo (Derivacion por la izquierda 1 / 2)S =⇒

1identificador = E

=⇒2

identificador = T E’

=⇒5

identificador = F T’ E’

=⇒9

identificador = identificador T’ E’

=⇒7

identificador = identificador ε E’

=⇒3

identificador = identificador + T E’

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

Page 351: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Tipos de analisis sintacticoMetodos descendentes

Ejemplo (Derivacion por la izquierda 2 / 2)=⇒

5identificador = identificador + F T’ E’

=⇒10

identificador = identificador + numero T’ E’

=⇒6

identificador = identificador + numero * F T’ E’

=⇒9

identificador = identificador + numero * identificador T’ E’

=⇒7

identificador = identificador + numero * identificador ε E’

=⇒4

identificador = identificador + numero * identificador ε

= identificador = identificador + numero * identificador

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

Page 352: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Tipos de analisis sintacticoMetodos descendentes

Ejemplo (Derivacion por la izquierda 2 / 2)=⇒

5identificador = identificador + F T’ E’

=⇒10

identificador = identificador + numero T’ E’

=⇒6

identificador = identificador + numero * F T’ E’

=⇒9

identificador = identificador + numero * identificador T’ E’

=⇒7

identificador = identificador + numero * identificador ε E’

=⇒4

identificador = identificador + numero * identificador ε

= identificador = identificador + numero * identificador

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

Page 353: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Tipos de analisis sintacticoMetodos descendentes

Ejemplo (Derivacion por la izquierda 2 / 2)=⇒

5identificador = identificador + F T’ E’

=⇒10

identificador = identificador + numero T’ E’

=⇒6

identificador = identificador + numero * F T’ E’

=⇒9

identificador = identificador + numero * identificador T’ E’

=⇒7

identificador = identificador + numero * identificador ε E’

=⇒4

identificador = identificador + numero * identificador ε

= identificador = identificador + numero * identificador

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

Page 354: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Tipos de analisis sintacticoMetodos descendentes

Ejemplo (Derivacion por la izquierda 2 / 2)=⇒

5identificador = identificador + F T’ E’

=⇒10

identificador = identificador + numero T’ E’

=⇒6

identificador = identificador + numero * F T’ E’

=⇒9

identificador = identificador + numero * identificador T’ E’

=⇒7

identificador = identificador + numero * identificador ε E’

=⇒4

identificador = identificador + numero * identificador ε

= identificador = identificador + numero * identificador

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

Page 355: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Tipos de analisis sintacticoMetodos descendentes

Ejemplo (Derivacion por la izquierda 2 / 2)=⇒

5identificador = identificador + F T’ E’

=⇒10

identificador = identificador + numero T’ E’

=⇒6

identificador = identificador + numero * F T’ E’

=⇒9

identificador = identificador + numero * identificador T’ E’

=⇒7

identificador = identificador + numero * identificador ε E’

=⇒4

identificador = identificador + numero * identificador ε

= identificador = identificador + numero * identificador

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

Page 356: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Tipos de analisis sintacticoMetodos descendentes

Ejemplo (Derivacion por la izquierda 2 / 2)=⇒

5identificador = identificador + F T’ E’

=⇒10

identificador = identificador + numero T’ E’

=⇒6

identificador = identificador + numero * F T’ E’

=⇒9

identificador = identificador + numero * identificador T’ E’

=⇒7

identificador = identificador + numero * identificador ε E’

=⇒4

identificador = identificador + numero * identificador ε

= identificador = identificador + numero * identificador

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

Page 357: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Tipos de analisis sintacticoMetodos descendentes

Ejemplo (Derivacion por la izquierda 2 / 2)=⇒

5identificador = identificador + F T’ E’

=⇒10

identificador = identificador + numero T’ E’

=⇒6

identificador = identificador + numero * F T’ E’

=⇒9

identificador = identificador + numero * identificador T’ E’

=⇒7

identificador = identificador + numero * identificador ε E’

=⇒4

identificador = identificador + numero * identificador ε

= identificador = identificador + numero * identificador

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

Page 358: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Tipos de analisis sintacticoMetodos descendentes

Ejemplo (Derivacion por la izquierda: arbol sintactico 1 / 13)S

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

Page 359: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Tipos de analisis sintacticoMetodos descendentes

Ejemplo (Derivacion por la izquierda: arbol sintactico 2 / 13)

identificador =

S

E

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

Page 360: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Tipos de analisis sintacticoMetodos descendentes

Ejemplo (Derivacion por la izquierda: arbol sintactico 3 / 13)

identificador =

S

T

E

E’

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

Page 361: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Tipos de analisis sintacticoMetodos descendentes

Ejemplo (Derivacion por la izquierda: arbol sintactico 4 / 13)

F

identificador =

S

T E’

T’

E

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

Page 362: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Tipos de analisis sintacticoMetodos descendentes

Ejemplo (Derivacion por la izquierda: arbol sintactico 5 / 13)

F

identificadoridentificador =

S

T E’

T’

E

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

Page 363: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Tipos de analisis sintacticoMetodos descendentes

Ejemplo (Derivacion por la izquierda: arbol sintactico 6 / 13)

F

identificadoridentificador =

S

T

ε

E’

T’

E

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

Page 364: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Tipos de analisis sintacticoMetodos descendentes

Ejemplo (Derivacion por la izquierda: arbol sintactico 7 / 13)

F

identificadoridentificador =

S

+

T

ε

E’

T’

E

T E’

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

Page 365: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Tipos de analisis sintacticoMetodos descendentes

Ejemplo (Derivacion por la izquierda: arbol sintactico 8 / 13)

F

identificadoridentificador =

S

+

T

ε

E’

T’

F

E

T

T’

E’

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

Page 366: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Tipos de analisis sintacticoMetodos descendentes

Ejemplo (Derivacion por la izquierda: arbol sintactico 9 / 13)

F

identificadoridentificador =

S

número+

T

ε

E’

T’

F

E

T

T’

E’

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

Page 367: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Tipos de analisis sintacticoMetodos descendentes

Ejemplo (Derivacion por la izquierda: arbol sintactico 10 / 13)

F

identificadoridentificador =

S

número *+

T

ε

E’

T’

F

E

T

T’F

T’

E’

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

Page 368: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Tipos de analisis sintacticoMetodos descendentes

Ejemplo (Derivacion por la izquierda: arbol sintactico 11 / 13)

F

identificadoridentificador =

S

número *+ identificador

T

ε

E’

T’

F

E

T

T’F

T’

E’

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

Page 369: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Tipos de analisis sintacticoMetodos descendentes

Ejemplo (Derivacion por la izquierda: arbol sintactico 12 / 13)

F

identificadoridentificador =

S

número *+ identificador

T

ε

E’

T’

F

E

T

T’F

T’

E’

ε

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

Page 370: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Tipos de analisis sintacticoMetodos descendentes

Ejemplo (Derivacion por la izquierda: arbol sintactico 13 / 13)

F

identificadoridentificador =

S

número * ε+ identificador

T

ε

E’

T’

F

E

T

T’F

T’

E’

ε

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

Page 371: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Tipos de analisis sintacticoMetodos descendentes

Metodos descendentes

Ventaja

Los metodos de descenso predictivo tienen una complejidadcomputacional lineal: O(n)

Inconvenientes

Los metodos descendentes

No se puede aplicar a gramaticas con recursividad por laizquierda.No se puede aplicar a gramaticas no factorizadas por laizquierda.Estas condiciones son necesarias pero no suficientes:

Hay gramaticas sin recursividad por la izquierda y factorizadaspor la izquierda que no admiten un analisis sintacticodescendente.

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

Page 372: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Tipos de analisis sintacticoMetodos descendentes

Nota (Metodos descendentes)

El tema no 4 explica las caracterısticas de los metodos deanalisis sintactico descendente.

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

Page 373: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Contenido de la seccion

7 Tipos de analisis sintacticoMetodos universalesMetodos descendentesMetodos ascendentes

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

Page 374: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Tipos de analisis sintacticoMetodos ascendentes

Metodos descendentes

Generan una derivacion por la derecha de la cadena deentrada, pero dicha derivacion se genera en orden inverso

El arbol sintactico se genera de abajo hacia arriba:

desde las hojas hasta la raız

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

Page 375: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Tipos de analisis sintacticoMetodos ascendentes

Ejemplo (Derivacion por la derecha: gramatica)

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

}

Nota

Esta gramatica es recursiva por la izquierda y no esta factorizadapor la izquierda.

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

Page 376: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Tipos de analisis sintacticoMetodos ascendentes

Ejemplo (Derivacion por la derecha en orden inverso)

S =⇒1

identificador = E

=⇒2

identificador = E + E

=⇒3

identificador = E + E * E

=⇒6

identificador = E + E * identificador

=⇒5

identificador = E + numero * identificador

=⇒6

identificador = identificador + numero * identificador

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

Page 377: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Tipos de analisis sintacticoMetodos ascendentes

Ejemplo (Derivacion por la derecha en orden inverso)

S =⇒1

identificador = E

=⇒2

identificador = E + E

=⇒3

identificador = E + E * E

=⇒6

identificador = E + E * identificador

=⇒5

identificador = E + numero * identificador

=⇒6

identificador = identificador + numero * identificador

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

Page 378: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Tipos de analisis sintacticoMetodos ascendentes

Ejemplo (Derivacion por la derecha en orden inverso)

S =⇒1

identificador = E

=⇒2

identificador = E + E

=⇒3

identificador = E + E * E

=⇒6

identificador = E + E * identificador

=⇒5

identificador = E + numero * identificador

=⇒6

identificador = identificador + numero * identificador

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

Page 379: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Tipos de analisis sintacticoMetodos ascendentes

Ejemplo (Derivacion por la derecha en orden inverso)

S =⇒1

identificador = E

=⇒2

identificador = E + E

=⇒3

identificador = E + E * E

=⇒6

identificador = E + E * identificador

=⇒5

identificador = E + numero * identificador

=⇒6

identificador = identificador + numero * identificador

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

Page 380: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Tipos de analisis sintacticoMetodos ascendentes

Ejemplo (Derivacion por la derecha en orden inverso)

S =⇒1

identificador = E

=⇒2

identificador = E + E

=⇒3

identificador = E + E * E

=⇒6

identificador = E + E * identificador

=⇒5

identificador = E + numero * identificador

=⇒6

identificador = identificador + numero * identificador

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

Page 381: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Tipos de analisis sintacticoMetodos ascendentes

Ejemplo (Derivacion por la derecha en orden inverso)

S =⇒1

identificador = E

=⇒2

identificador = E + E

=⇒3

identificador = E + E * E

=⇒6

identificador = E + E * identificador

=⇒5

identificador = E + numero * identificador

=⇒6

identificador = identificador + numero * identificador

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

Page 382: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Tipos de analisis sintacticoMetodos ascendentes

Ejemplo (Derivacion por la derecha en orden inverso)

S =⇒1

identificador = E

=⇒2

identificador = E + E

=⇒3

identificador = E + E * E

=⇒6

identificador = E + E * identificador

=⇒5

identificador = E + numero * identificador

=⇒6

identificador = identificador + numero * identificador

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

Page 383: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Tipos de analisis sintacticoMetodos ascendentes

Ejemplo (Derivacion por la derecha: arbol sintactico 1 / 7)

identificador = identificador + número * identificador

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

Page 384: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Tipos de analisis sintacticoMetodos ascendentes

Ejemplo (Derivacion por la derecha: arbol sintactico 2 / 7)

identificador = identificador + número * identificador

E

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

Page 385: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Tipos de analisis sintacticoMetodos ascendentes

Ejemplo (Derivacion por la derecha: arbol sintactico 3 / 7)

identificador = identificador + número * identificador

E

E

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

Page 386: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Tipos de analisis sintacticoMetodos ascendentes

Ejemplo (Derivacion por la derecha: arbol sintactico 4 / 7)

identificador = identificador + número * identificador

E

E E

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

Page 387: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Tipos de analisis sintacticoMetodos ascendentes

Ejemplo (Derivacion por la derecha: arbol sintactico 5 / 7)

identificador = identificador + número * identificador

E E

E E

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

Page 388: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Tipos de analisis sintacticoMetodos ascendentes

Ejemplo (Derivacion por la derecha: arbol sintactico 6 / 7)

identificador = identificador + número * identificador

E E

E E

E

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

Page 389: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Tipos de analisis sintacticoMetodos ascendentes

Ejemplo (Derivacion por la derecha: arbol sintactico 7 / 7)

identificador = identificador + número * identificador

S

E E

E E

E

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

Page 390: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Tipos de analisis sintacticoMetodos ascendentes

Metodos ascendentes

Ventajas

Su complejidad computacional es lineal: O(n)Son mas potentes que los metodos descendentesLos metodos ascedentes se pueden aplicar a gramaticas conrecursividad por la izquierda o no factorizdas por la izquierda.

Inconveniente

Algunas gramaticas no admiten un analisis sintacticoascendente.

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

Page 391: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Tipos de analisis sintacticoMetodos ascendentes

Nota (Metodos ascendentes)

El tema no 5 explica las caracterısticas de los metodos deanalisis sintactico ascendente.

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

Page 392: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Deteccion y tratamiento de errores sintacticos

1 Introduccion

2 Gramaticas de contexto libre

3 Ambiguedad

4 Operaciones de limpieza

5 Recursividad y factorizacion

6 Formas normales

7 Tipos de analisis sintactico

8 Deteccion y tratamiento deerrores sintacticos

9 Generadores de analizadoressintacticos

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

Page 393: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Deteccion y tratamiento de errores sintacticos

8 Deteccion y tratamiento de errores sintacticosDeteccion de errores sintacticosTratamiento de los errores sintacticos

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

Page 394: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Contenido de la seccion

8 Deteccion y tratamiento de errores sintacticosDeteccion de errores sintacticosTratamiento de los errores sintacticos

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

Page 395: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Deteccion y tratamiento de errores sintacticosDeteccion de errores sintacticos

Deteccion de errores sintacticos

Se origina al procesar un componente lexico correcto peroinesperado.

Se infringe alguna regla sintactica de lenguaje deprogramacion.

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

Page 396: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Deteccion y tratamiento de errores sintacticosDeteccion de errores sintacticos

Ejemplo (Deteccion de errores sintacticos 1 / 3)

Palabra reservada mal escrita, pero es un identificadorcorrecto

fi (x ≥ 0) y = sqrt(x);

Ubicacion erronea de palabras reservadas

(x ≥ 0) if y = sqrt(x);

Repeticion de palabras reservadas

if if (x ≥ 0) y = sqrt(x);

Omision de una palabra reservada

(x ≥ 0) y = sqrt(x);

Palabra reservada inesperadaif for (x ≥ 0) y = sqrt(x);

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

Page 397: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Deteccion y tratamiento de errores sintacticosDeteccion de errores sintacticos

Ejemplo (Errores sintacticos 2 / 3)

Uso de una palabra reservada de otro lenguaje (Pascal)

if (x ≥ 0) then y = sqrt(x);

Parentesis no emparejados o balanceados

a = (2 * 3) + 5 ) ;a = (2 * 3 + 5 ;

Ausencia de operador

a = (2 3) + 5 ;

Ausencia de argumento

a = (2 * ) + 5 ;

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

Page 398: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Deteccion y tratamiento de errores sintacticosDeteccion de errores sintacticos

Ejemplo (Errores sintacticos 3 / 3)

Operador de asignacion de otro lenguaje (Pascal)

a := (2 * 3) + 5 ;

Omision de punto y coma de fin de sentencia

a = (2 * 3) + 5

Omision de separadores (comas)

a = atan2(x y)

Omision de argumento

a = atan2( , y)

Etc.

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

Page 399: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Deteccion y tratamiento de errores sintacticosDeteccion de errores sintacticos

Ejemplo (Error sintactico no detectado)

while (n > 1) ;

{factorial = factorial * n;

n = n - 1;

}

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

Page 400: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Contenido de la seccion

8 Deteccion y tratamiento de errores sintacticosDeteccion de errores sintacticosTratamiento de los errores sintacticos

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

Page 401: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Deteccion y tratamiento de errores sintacticosTratamiento de los errores sintacticos

Criterios generales para el tratamiento de los errores

Informar del error

+ Localizacion: ubicacion del error dentro del codigo.+ Descripcion: motivo o caracterısticas del error

Evitar la cascada de errores

+ Informar una sola vez de cada error.+ Si un error es producido por otro entonces solo se debe

informar del primero.

Reparar el error, si es posible, e informar de la correccionrealizada.

Continuar con el proceso de traduccion para detectar otrosposibles errores.

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

Page 402: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Deteccion y tratamiento de errores sintacticosTratamiento de los errores sintacticos

Criterios generales para el tratamiento de los errores

Informar del error

+ Localizacion: ubicacion del error dentro del codigo.+ Descripcion: motivo o caracterısticas del error

Evitar la cascada de errores

+ Informar una sola vez de cada error.+ Si un error es producido por otro entonces solo se debe

informar del primero.

Reparar el error, si es posible, e informar de la correccionrealizada.

Continuar con el proceso de traduccion para detectar otrosposibles errores.

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

Page 403: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Deteccion y tratamiento de errores sintacticosTratamiento de los errores sintacticos

Criterios generales para el tratamiento de los errores

Informar del error

+ Localizacion: ubicacion del error dentro del codigo.+ Descripcion: motivo o caracterısticas del error

Evitar la cascada de errores

+ Informar una sola vez de cada error.+ Si un error es producido por otro entonces solo se debe

informar del primero.

Reparar el error, si es posible, e informar de la correccionrealizada.

Continuar con el proceso de traduccion para detectar otrosposibles errores.

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

Page 404: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Deteccion y tratamiento de errores sintacticosTratamiento de los errores sintacticos

Criterios generales para el tratamiento de los errores

Informar del error

+ Localizacion: ubicacion del error dentro del codigo.+ Descripcion: motivo o caracterısticas del error

Evitar la cascada de errores

+ Informar una sola vez de cada error.+ Si un error es producido por otro entonces solo se debe

informar del primero.

Reparar el error, si es posible, e informar de la correccionrealizada.

Continuar con el proceso de traduccion para detectar otrosposibles errores.

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

Page 405: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Deteccion y tratamiento de errores sintacticosTratamiento de los errores sintacticos

Nota (Reparacion del error)

Siempre debe ser revisada despues por el programador.

Solo propone una solucion, que no tiene por que ser lacorrecta.

Solo pretende que el proceso de traduccion continue ... paradetectar mas errores.

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

Page 406: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Deteccion y tratamiento de errores sintacticosTratamiento de los errores sintacticos

Metodos de recuperacion de errores sintacticos

(a) Modo de panico

(b) Metodo de nivel de frase

(c) Reglas de produccion de control de errores

(d) Correccion global

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

Page 407: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Deteccion y tratamiento de errores sintacticosTratamiento de los errores sintacticos

Metodos de recuperacion de errores sintacticos

(a) Modo de panico

(b) Metodo de nivel de frase

(c) Reglas de produccion de control de errores

(d) Correccion global

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

Page 408: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Deteccion y tratamiento de errores sintacticosTratamiento de los errores sintacticos

Modo de panico

Al detectar un error,

se eliminan componentes lexicos de la entrada

hasta que se encuentra un componente lexico desincronizacion.

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

Page 409: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Deteccion y tratamiento de errores sintacticosTratamiento de los errores sintacticos

Ejemplo (Componente lexico de sincronizacion)

Palabra clave que inicie una sentencia: if, while, for, etc.

Fin de sentencia: ;

Etc.

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

Page 410: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Deteccion y tratamiento de errores sintacticosTratamiento de los errores sintacticos

Modo de panico

Ventajas

Sencillo de aplicarNo cae en bucles infinitosPermite continuar el analisis para detectar mas errores.

Inconvenientes

Metodo de aplicacion localNo es capaz detectar todos los errores posibles cuando busca elcomponente lexico de sincronizacion.

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

Page 411: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Deteccion y tratamiento de errores sintacticosTratamiento de los errores sintacticos

Metodos de recuperacion de errores sintacticos

(a) Modo de panico

(b) Metodo de nivel de frase

(c) Reglas de produccion de control de errores

(d) Correccion global

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

Page 412: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Deteccion y tratamiento de errores sintacticosTratamiento de los errores sintacticos

Metodo de nivel de frase

Al detectar un error,

intenta realizar una transformacion simple que permitacorregir o reparar el error

y continuar el analisis.

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

Page 413: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Deteccion y tratamiento de errores sintacticosTratamiento de los errores sintacticos

Metodo de nivel de frase

Tipos de transformaciones:

+ Eliminar un compenente lexico+ Insertar un compenente lexico+ Sustituir un compenente lexico

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

Page 414: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Deteccion y tratamiento de errores sintacticosTratamiento de los errores sintacticos

Nota (Metodo de nivel de frase)

Se debe informar de la transformacion realizada.

La transformacion no pretende corregir el error, sino continuarcon el analisis sintactico.

Posteriormente, el programador debera supervisar latransformacion realizada.

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

Page 415: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Deteccion y tratamiento de errores sintacticosTratamiento de los errores sintacticos

Metodo de nivel de frase

Ventajas

Puede hacer correcciones de errores habituales conocidos apriori.Permite continuar el analisis para detectar mas errores.

Inconvenientes

Requiere un buen conocimiento del lenguaje para predecir loserrores que se pueden producir.Metodo de aplicacion local.Puede provocar bucles infinitosDifıcil de aplicar cuando el error se encuentra muy lejos delpunto de deteccion.Por ejemplo: llave final } no balanceada

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

Page 416: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Deteccion y tratamiento de errores sintacticosTratamiento de los errores sintacticos

Nota (Metodo de nivel de frase)

Es uno de los metodos mas utilizados para la recuperacion deerrores sintacticos

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

Page 417: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Deteccion y tratamiento de errores sintacticosTratamiento de los errores sintacticos

Metodos de recuperacion de errores sintacticos

(a) Modo de panico

(b) Metodo de nivel de frase

(c) Reglas de produccion de control de errores

(d) Correccion global

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

Page 418: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Deteccion y tratamiento de errores sintacticosTratamiento de los errores sintacticos

Reglas de produccion de control de errores

Se amplıa la gramatica con nuevas reglas de produccion quemodelan posibles situaciones de error.

Si se utilizan dichas reglas de produccion durante el analisissintactico entonces se activa una funcion de recuperacion deerror.

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

Page 419: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Deteccion y tratamiento de errores sintacticosTratamiento de los errores sintacticos

Ejemplo (Regla de control de error)

P = {(1) S −→ identificador = E

(1’) S −→ constante = E(2) E −→ E + E(3) E −→ E * E(4) E −→ ( E )(5) E −→ numero(6) E −→ identificador(7) E −→ constante

}

Nota

Detecta unaasignacion a unaconstante

PI = 999999;

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

Page 420: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Deteccion y tratamiento de errores sintacticosTratamiento de los errores sintacticos

Reglas de produccion de control de errores

Ventajas

Pueden corregir errores habituales que son conocidos a priori.Permite continuar el analisis sintactico para detectar maserrores.

Inconvenientes

Requiere un buen conocimiento del lenguaje para predecir loserrores que se pueden producir.Metodo de aplicacion local.Al introducir nuevas reglas, puede que la gramatica no admitael analisis sintactico por la generacion de conflictos.

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

Page 421: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Deteccion y tratamiento de errores sintacticosTratamiento de los errores sintacticos

Metodos de recuperacion de errores sintacticos

(a) Modo de panico

(b) Metodo de nivel de frase

(c) Reglas de produccion de control de errores

(d) Correccion global

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

Page 422: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Deteccion y tratamiento de errores sintacticosTratamiento de los errores sintacticos

Correccion global

Es un metodo teorico basado en los metodos anteriores y,fundamentalmente, en el metodo de nivel de frase.

Dado un programa con errores, intenta realizar el menornumero de transformaciones para obtener otro programacorrecto.

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

Page 423: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Deteccion y tratamiento de errores sintacticosTratamiento de los errores sintacticos

Reglas de produccion de errror

Ventajas

Proporciona una escala para evaluar las tecnicas derecuperacion de errores.

Inconvenientes

La complejidad temporal y espacial es muy alta.El programa sintacticamente correcto que se genera puede sersemanticamente diferente del programa original.

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

Page 424: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Generadores de analizadores sintacticos

1 Introduccion

2 Gramaticas de contexto libre

3 Ambiguedad

4 Operaciones de limpieza

5 Recursividad y factorizacion

6 Formas normales

7 Tipos de analisis sintactico

8 Deteccion y tratamiento deerrores sintacticos

9 Generadores de analizadoressintacticos

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

Page 425: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Generadores de analizadores sintacticos

9 Generadores de analizadores sintacticos

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

Page 426: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Generadores de analizadores sintacticos

Definicion (Generador de analizador sintactico)

Entrada: gramatica de contexto libre.

Salida: analizador sintactico.

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

Page 427: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Generadores de analizadores sintacticos

Tipos de generadores

Generadores de analizadores sintacitos descendentes

Generadores de analizadores sintacitos ascendentes

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

Page 428: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Generadores de analizadores sintacticos

Tipos de generadores

Generadores de analizadores sintacitos descendentes

Generadores de analizadores sintacitos ascendentes

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

Page 429: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Generadores de analizadores sintacticos

Generadores de analizadores sintacticos descendentes 1 / 2

ANTLR:

Nombre: Another Tool for Language RecognitionTipo: LL(K)Lenguaje: Java y C++Web: http://www.antlr.org/

JavaCC

Nombre: Java Compiler CompilerTipo: LL(K)Lenguaje: JavaWeb: https://javacc.dev.java.net/

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

Page 430: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Generadores de analizadores sintacticos

Generadores de analizadores sintacticos descendentes 2 / 2

LLGen:

Nombre:Tipo: LL(K), descenso recursivoLenguaje: Java y C++Web: http://www.cs.vu.nl/ ceriel/LLgen.html

COCO/R

Nombre: Java Compiler CompilerTipo: LL(K), descenso recursivoLenguaje: C, C++, C#, JavaWeb: http://www.ssw.uni-linz.ac.at/Research/Projects/Coco/

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

Page 431: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Generadores de analizadores sintacticos

Tipos de generadores

Generadores de analizadores sintacitos descendentes

Generadores de analizadores sintacitos ascendentes

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

Page 432: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Generadores de analizadores sintacticos

Generadores de analizadores sintacticos ascendentes 1 / 4

YACC:

Nombre: Yet Another Compiler – CompilerTipo: LALR(1)Lenguaje: CWeb: http://dinosaur.compilertools.net/

Bison

Nombre: GNU version libre de YACCTipo: LALR(1)Lenguaje: CWeb: http://www.gnu.org/software/bison/

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

Page 433: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Generadores de analizadores sintacticos

Generadores de analizadores sintacticos ascendentes 2 / 4

AYACC:

Nombre: Yet Another Compiler – CompilerTipo: LALR(1)Lenguaje: AdaWeb: www.ics.uci.edu/˜ arcadia/Aflex-Ayacc/aflex-ayacc.html

BYACC

Nombre: Berkeley YACCTipo: LALR(1)Lenguaje: CWeb: ftp://ftp.cs.berkeley.edu/ucb/4bsd/byacc.tar.Z

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

Page 434: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Generadores de analizadores sintacticos

Generadores de analizadores sintacticos ascendentes 3 / 4

PCYACC:

Nombre: Yet Another Compiler – Compiler para MSDOSTipo: LALR(1)Lenguaje: C, C++, Java, Delphi,...Web: http://www.abxsoft.com/pcyacc.htm

LEMON

Nombre: Berkeley YACCTipo: LALR(1)Lenguaje: CWeb: http://www.hwaci.com/sw/lemon/

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

Page 435: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

Generadores de analizadores sintacticos

Generadores de analizadores sintacticos ascendentes 4 / 4

CUP:

Nombre: constructor of Useful ParserTipo: LALR(1)Lenguaje: JavaWeb: http://www2.cs.tum.edu/projects/cup/

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

Page 436: PROCESADORES DE LENGUAJES - uco.es · Procesadores de Lenguajes Tema III.- Fundamentos te oricos del an alisis sint actico Programa 1 Introducci on 2 Gram aticas de contexto libre

Procesadores de Lenguajes Tema III.- Fundamentos teoricos del analisis sintactico

PROCESADORES DE LENGUAJESTEMA III.- FUNDAMENTOS TEORICOS DEL ANALISIS

SINTACTICO

Prof. Dr. Nicolas Luis Fernandez Garcıa

Departamento de Informatica y Analisis NumericoEscuela Politecnica Superior

Universidad de Cordoba

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