lenguajes y compiladores aspectos formales (parte...

50
Facultad de Ingeniería de Sistemas Facultad de Ingeniería de Sistemas Lenguajes y Compiladores Aspectos Formales (Parte 2) Compiladores 2007 1

Upload: lexuyen

Post on 04-Nov-2018

222 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Lenguajes y Compiladores Aspectos Formales (Parte 2)educaunica.galeon.com/cursos/silabo_diapositiva/Formales2.pdf · Representación Gráfica – Arbol Sintáctico Implica usar un

Facultad de Ingeniería de SistemasFacultad de Ingeniería de Sistemas

Lenguajes y Compiladores

Aspectos Formales (Parte 2)

Compiladores2007

1

Page 2: Lenguajes y Compiladores Aspectos Formales (Parte 2)educaunica.galeon.com/cursos/silabo_diapositiva/Formales2.pdf · Representación Gráfica – Arbol Sintáctico Implica usar un

DerivacionesDerivaciones

� El proceso de búsqueda de un árbol sintáctico para unacadena se llama análisis sintáctico.

� El lenguaje generado por una gramática es igual alconjunto de cadenas que pueden ser generadas por unárbol sintáctico a través del uso de las producciones deesa gramática..

Compiladores2007 2

esa gramática..� Se dice que una gramática es ambigua si para una

misma frase encontramos dos árboles sintácticosdiferentes. Por ejemplo la gramática G0 es ambigua yaque para la frase 6 + 9 - 5 podemos graficar dosárboles sintácticos diferentes. (¿Cuáles?)

Page 3: Lenguajes y Compiladores Aspectos Formales (Parte 2)educaunica.galeon.com/cursos/silabo_diapositiva/Formales2.pdf · Representación Gráfica – Arbol Sintáctico Implica usar un

DefinicionesDefiniciones

� Podemos definir un lenguaje L(G) como:

L(G) = {σ | S →* σ y σ ∈ T * }� Producciones libres de contexto: tienen la forma

v → σ con σ ∈ (N ∪ T) *

Expresa que un símbolo no terminal v puede sersustituido por σ sin importar el contexto donde

Compiladores2007 3

sustituido por σ sin importar el contexto dondeaparece v

� Derivaciones por la izquierda (derecha): siempre se reemplazael no terminal mas a la izquierda (o más a la derecha)

� Una gramática independiente del contexto es no ambigua si ysolo si existe una sola derivación por la izquierda (o por laderecha) y por ende un solo árbol de análisis sintáctico.

*

Page 4: Lenguajes y Compiladores Aspectos Formales (Parte 2)educaunica.galeon.com/cursos/silabo_diapositiva/Formales2.pdf · Representación Gráfica – Arbol Sintáctico Implica usar un

DefinicionesDefiniciones

� Si:

se dice que X es recursivo.

Si α = ε se dice que es recursivo por la izquierda.

“Si la gramática tiene un símbolo no terminal

X→* α X β

Compiladores2007 4

“Si la gramática tiene un símbolo no terminalrecursivo se dice que la gramática es recursiva”.

� La inversa de la derivación es la reducción:es equivalente

β puede derivarse directamente de α o

β puede reducirse directamente a α.

*

β ← αα → β

Page 5: Lenguajes y Compiladores Aspectos Formales (Parte 2)educaunica.galeon.com/cursos/silabo_diapositiva/Formales2.pdf · Representación Gráfica – Arbol Sintáctico Implica usar un

Jerarquía de gramáticasJerarquía de gramáticas

“Las gramáticas fueron clasificadas deacuerdo a su complejidad, y a esta

Compiladores2007 5

acuerdo a su complejidad, y a estaclasificación se le conoce con el nombre deJerarquía de Chomsky”

Page 6: Lenguajes y Compiladores Aspectos Formales (Parte 2)educaunica.galeon.com/cursos/silabo_diapositiva/Formales2.pdf · Representación Gráfica – Arbol Sintáctico Implica usar un

Jerarquía de gramáticasJerarquía de gramáticas

Tipo 0 : sin restricciones

Tipo 1 : sensibles al contexto α X β → α γγγγ β

Tipo 2 : independiente del contexto X → α

Tipo 3 : regulares

Compiladores2007 6

Tipo 3 : regulares

A → Ba o A → a oA → aB o A → a

Page 7: Lenguajes y Compiladores Aspectos Formales (Parte 2)educaunica.galeon.com/cursos/silabo_diapositiva/Formales2.pdf · Representación Gráfica – Arbol Sintáctico Implica usar un

Gramática de un Lenguaje (G)

G = ( N, T, P, S )

Es un cuarteto formado por:N = Vocabulario No Terminal : Son sentencias que no

Definición de CHOMSKY:

Compiladores2007 7

N = Vocabulario No Terminal : Son sentencias que nopertenecen al lenguaje, pueden ser variables ynombre de procedimientos, se representan conletra mayúscula.

A No Terminal<A> No Terminal[A] No Terminal

Page 8: Lenguajes y Compiladores Aspectos Formales (Parte 2)educaunica.galeon.com/cursos/silabo_diapositiva/Formales2.pdf · Representación Gráfica – Arbol Sintáctico Implica usar un

T = Vocabulario Terminal. sentencias que pertenecen al lenguaje, se representan con minúsculas.

<S> → if x then <B><B> → w z

P = Reglas de producción o Reglas de derivación.

Definición de CHOMSKY

Compiladores2007 8

P = Reglas de producción o Reglas de derivación.

<S> → do <A> while xProduce o deriva.

Axioma Principal.S = Es el axioma principal o símbolo distinguido.

<S> da inicio a las reglas de producción.<S> pertenece al vocabulario no terminal.

Page 9: Lenguajes y Compiladores Aspectos Formales (Parte 2)educaunica.galeon.com/cursos/silabo_diapositiva/Formales2.pdf · Representación Gráfica – Arbol Sintáctico Implica usar un

Si se tiene las siguientes reglas:R1 : <S> → w x do <A>

R2 : <A> → if z then <B> else <C>

R3 : <B> → x y z

Definición de CHOMSKY

Compiladores2007 9

R3 : <B> → x y z

R4 : <C> → a b c

Donde : N = {<S>, <A>, <B>, <C>}

T = {w, x, do, if …}

Page 10: Lenguajes y Compiladores Aspectos Formales (Parte 2)educaunica.galeon.com/cursos/silabo_diapositiva/Formales2.pdf · Representación Gráfica – Arbol Sintáctico Implica usar un

Definición Chomsky

G = ( N, T, P, S)

Gramática.- Se clasifica en 4 tipos.

Tipos de Gramática

Compiladores2007 10

A. Gramática Estructura de Base.B. Gramática Sensible al Contexto.C. Gramática de Contexto Libre.D. Gramática Regulares.

α → β Regla de Producción

Page 11: Lenguajes y Compiladores Aspectos Formales (Parte 2)educaunica.galeon.com/cursos/silabo_diapositiva/Formales2.pdf · Representación Gráfica – Arbol Sintáctico Implica usar un

A. Gramática Estructura de Base Tipo 0.- No existe restricción en las Reglas.

α → β donde : α ∈∈∈∈ ( N U T )+

β ∈∈∈∈ ( N U T )*

Tipos de Gramática

Compiladores2007 11

Ejemplos :

R1 : w x <A> → if x then <B>R2 : a b <S > → c d aR3 : w a <B> → ε

Page 12: Lenguajes y Compiladores Aspectos Formales (Parte 2)educaunica.galeon.com/cursos/silabo_diapositiva/Formales2.pdf · Representación Gráfica – Arbol Sintáctico Implica usar un

B. Gramática Sensible contexto Tipo 1.

donde :(NUT)*

α →→→→ β

θA ϒ →→→→ θ w ϒ

Tipos de Gramática

Compiladores2007 12

donde :ϒ θ ∈∈∈∈ (NUT)* → puede ser nulo.

W ∈∈∈∈ (NUT)+ → no puede ser nulo.

A ∈∈∈∈ NEjemplos :

R1: w <A> d → abcR2: <A> a → <B>c

θA ϒ →→→→ θ w ϒ

Page 13: Lenguajes y Compiladores Aspectos Formales (Parte 2)educaunica.galeon.com/cursos/silabo_diapositiva/Formales2.pdf · Representación Gráfica – Arbol Sintáctico Implica usar un

C. Gramática Tipo 2 contexto Libre.- En la parte izquierda tiene solo un símbolo del vocabulario no termina.

donde :α ∈ N β ∈ (NUT)*

Tipos de Gramática

αααα →→→→ ββββ

Compiladores2007 13

N β ∈ (NUT)*

Ejemplos :R1: <S> → w x d <B>R2: <B> → i x t <A>R3: <A> → s c x <c>R4: <C> → λ

Page 14: Lenguajes y Compiladores Aspectos Formales (Parte 2)educaunica.galeon.com/cursos/silabo_diapositiva/Formales2.pdf · Representación Gráfica – Arbol Sintáctico Implica usar un

D. Gramática Regular Tipo 3.- “En la parte izquierda y derecha debe existir un No Terminal como máximo”

I).Gramáticas regulares por la izquierda:

Se dice que G (T, N, P, S) es regular por la izquierda si cada producción P tiene la forma

Tipos de Gramática

Compiladores2007 14

si cada producción P tiene la forma

o bien

donde : <A> ∈∈∈∈ N

<B> ∈∈∈∈ N*

a ∈∈∈∈ T+

<A> → a <B> <A> → a

Page 15: Lenguajes y Compiladores Aspectos Formales (Parte 2)educaunica.galeon.com/cursos/silabo_diapositiva/Formales2.pdf · Representación Gráfica – Arbol Sintáctico Implica usar un

“Estas gramáticas también se conocen como regulares o de estado finito”.

II). Gramáticas regulares por la derecha:

Se dice que G (T, N, P, S) es regular por la derecha si cada producción P tiene la forma.

Tipos de Gramática

Compiladores2007 15

cada producción P tiene la forma.

o bien

donde : <A> ∈∈∈∈ N

<B> ∈∈∈∈ N*

a ∈∈∈∈ T+

<A> → <B> a <A> → a

Page 16: Lenguajes y Compiladores Aspectos Formales (Parte 2)educaunica.galeon.com/cursos/silabo_diapositiva/Formales2.pdf · Representación Gráfica – Arbol Sintáctico Implica usar un

� “En general los lenguajes de programación no se puedenexpresar totalmente con gramáticas regulares, peroestas gramáticas si definen la sintaxis de losidentificadores, números, cadenas, etc”.

S → aS bB b

B → cC

Tipos de Gramática

Compiladores2007 16

B → cC

C → aS

� En compiladores interesan las gramáticas tipo 2 y 3.

� Con las gramáticas tipo 2 se puede controlar lapresencia correcta de pares de símbolos como Begin,end o paréntesis.

Page 17: Lenguajes y Compiladores Aspectos Formales (Parte 2)educaunica.galeon.com/cursos/silabo_diapositiva/Formales2.pdf · Representación Gráfica – Arbol Sintáctico Implica usar un

� Sin embargo hay características que no puedenexpresarse a través de gramáticas tipo 2 o 3. Porejemplo, para que la instrucción X := B esté correctaes necesario:

� X y B estén declarados

X y B sean de tipos compatibles

Tipos de Gramática

Compiladores2007 17

� X y B sean de tipos compatibles

� B tenga un valor definido.

� Estas características se verifican con el analizadorsemántico usando la tabla de símbolos.

Page 18: Lenguajes y Compiladores Aspectos Formales (Parte 2)educaunica.galeon.com/cursos/silabo_diapositiva/Formales2.pdf · Representación Gráfica – Arbol Sintáctico Implica usar un

� Ejemplo :

S → abc aAbcAb → bAAc → BbccbB → Bb

EjemploEjemplo

Compiladores2007 18

bB → BbaB → aa aaA

Ejemplo de cadena: ?¿Qué tipo de cadenas genera este lenguaje?

*

Page 19: Lenguajes y Compiladores Aspectos Formales (Parte 2)educaunica.galeon.com/cursos/silabo_diapositiva/Formales2.pdf · Representación Gráfica – Arbol Sintáctico Implica usar un

En una gramática

α va producir β siempre que se transforme, cambie o sederive hasta llegar a ser igual a β a estos cambios se ledenomina derivación de longitud.

Lenguaje Definido por una Gramática

αααα →→→→ ββββ

α →→→→ ϒ0 →→→→ ϒ1 →→→→ ϒ2 ….. ϒn = β

Compiladores2007 19

Derivación de longitud n

→→→→ cambios

α →→→→ + β Derivación de Longitud transitiva

α →→→→ * β incluye el elemento nulo o Tira a Nulo.

α →→→→ ϒ0 →→→→ ϒ1 →→→→ ϒ2 ….. ϒn = β

Page 20: Lenguajes y Compiladores Aspectos Formales (Parte 2)educaunica.galeon.com/cursos/silabo_diapositiva/Formales2.pdf · Representación Gráfica – Arbol Sintáctico Implica usar un

Definición de un lenguaje

“Un lenguaje definido por una gramática G estácompuesto por símbolos x, tal que x es la tira desímbolos terminales o sentencia del lenguaje L(G) que

L(G)= { x / <S> →→→→ * x .and. x ∈ T* }

Lenguaje Definido por una Gramática

Compiladores2007 20

símbolos terminales o sentencia del lenguaje L(G) quese obtiene al seguir una serie de derivaciones directaspartiendo de <S>”

Ejemplo

Un lenguaje tiene las siguientes reglas.

R1: <S> → while <A> end

R2: <A> → while end

Page 21: Lenguajes y Compiladores Aspectos Formales (Parte 2)educaunica.galeon.com/cursos/silabo_diapositiva/Formales2.pdf · Representación Gráfica – Arbol Sintáctico Implica usar un

A. Determine si while while end end pertenece al lenguaje

L(G)= {x / <S> →→→→ * x .and. x ∈ T* }

X elemento terminal que se analiza

Solución. Se parte de L(G)

Lenguaje Definido por una Gramática

Compiladores2007 21

Solución. Se parte de L(G)

R1 <S> → while <A> end

xR2 <S> → while while end end

∴∴∴∴ while while end end ∈∈∈∈ L(G)

Page 22: Lenguajes y Compiladores Aspectos Formales (Parte 2)educaunica.galeon.com/cursos/silabo_diapositiva/Formales2.pdf · Representación Gráfica – Arbol Sintáctico Implica usar un

Ejercicio

1. Se tienen las siguientes reglas.

R1: <S> → a <B>

R2: <S> → b <A>

R3: <A> → a

R4: <A> → a <S>

Compiladores2007 22

R5: <A> → b <A> <A>

R6: <B> → b

R7: <B> → b <S>

R8: <B> → a <B> <B>

R9: < B> → λ

Determine si Pertenece L (G)

a) a b a a a b

b) b a a a a b b

Page 23: Lenguajes y Compiladores Aspectos Formales (Parte 2)educaunica.galeon.com/cursos/silabo_diapositiva/Formales2.pdf · Representación Gráfica – Arbol Sintáctico Implica usar un

Solución:

R1 : <S> → a <B>

XR7 : <S> → ab <S>

XR1 : <S> → aba <B>

XR8 : <S> → abaa <B> <B>

a. Determine si abaaab pertenece L(G)

Compiladores2007 23

XR8 : <S> → abaa <B> <B>

XR8 : <S> → abaaa <B> <B> <B>

XR6 : <S> → abaab <B> <B>

XR9 x R9 : <S> → abaaab λ λ

∴ abaaab ∈ L (G)

Page 24: Lenguajes y Compiladores Aspectos Formales (Parte 2)educaunica.galeon.com/cursos/silabo_diapositiva/Formales2.pdf · Representación Gráfica – Arbol Sintáctico Implica usar un

Solución:

xR2: <S> → b <A>

xR4: <S> → ba <S>

xR1: <S> → baa <B>

b. Determine si baaaabb pertenece L(G)

Compiladores2007 24

xR8: <S> → baaa <B> <B>

xR8: <S> → baaaa <B> <B> <B>

xR6 xR6xR9: <S> → baaaabb λ

∴ baaaabb ∈ L (G)

Page 25: Lenguajes y Compiladores Aspectos Formales (Parte 2)educaunica.galeon.com/cursos/silabo_diapositiva/Formales2.pdf · Representación Gráfica – Arbol Sintáctico Implica usar un

2. Se tienen las siguientes reglas

R1: <S> → w <A> <S>

R2: <S> → d

R3: <A> → w

Ejercicio

Compiladores2007 25

R4: <A> → d <S> <A>

a. Reconocer w d d w d

b. Reconocer w w w d d w d d

Page 26: Lenguajes y Compiladores Aspectos Formales (Parte 2)educaunica.galeon.com/cursos/silabo_diapositiva/Formales2.pdf · Representación Gráfica – Arbol Sintáctico Implica usar un

Solución:

xR1: <S> → w <A> <S>

xR4: <S> → wd <S> <A> <S>

xR2: <S> → wdd <A> <S>

a. Reconocer wddwd

Compiladores2007 26

xR2: <S> → wdd <A> <S>

xR3: <S> → wddw <S>

xR2: <S> → wddwd

∴ wddwd ∈ L(G)

Page 27: Lenguajes y Compiladores Aspectos Formales (Parte 2)educaunica.galeon.com/cursos/silabo_diapositiva/Formales2.pdf · Representación Gráfica – Arbol Sintáctico Implica usar un

L(G) = {x / <S> →→→→ * x .and. x ∈T* }

Solución:

xR1: <S> → w <A> <S>

xR3: <S> → w w <S>

b. Reconocer wwwddwdd

Compiladores2007 27

xR1: <S> → w w w <A> <S>

xR4: <S> → w w w d <A> <S>

xR2: <S> → w w w dd <A> <S>

xR3: <S> → w w wddw <S>

xR2: <S> → w w w d d w d

∴wwwddwdd ∉ L(G)

Page 28: Lenguajes y Compiladores Aspectos Formales (Parte 2)educaunica.galeon.com/cursos/silabo_diapositiva/Formales2.pdf · Representación Gráfica – Arbol Sintáctico Implica usar un

A. Tipos Gramática.

1. Estructura de Base Tipo 0 :

donde : α ∈∈∈∈ ( N U T )+ β ∈∈∈∈ ( N U T )*

2. Sensible Contexto Tipo 1:

α → β

Resumen

Compiladores2007 28

2. Sensible Contexto Tipo 1:

donde : ϒ θ ∈∈∈∈ (NUT)*

W ∈∈∈∈ (NUT)+

A ∈∈∈∈ N

α → β

θA ϒ →→→→ θ w ϒ

Page 29: Lenguajes y Compiladores Aspectos Formales (Parte 2)educaunica.galeon.com/cursos/silabo_diapositiva/Formales2.pdf · Representación Gráfica – Arbol Sintáctico Implica usar un

3. Contexto Libre Tipo 2

donde : αααα ∈∈∈∈ N ββββ ∈∈∈∈ (NUT)*

4. Regular Tipo 3

Acepta como máximo un noterminal en la izquierda y derecha.

α → β

<A> → a <B>

Resumen

Compiladores2007 29

Acepta como máximo un noterminal en la izquierda y derecha.

B. Lenguaje Reconocido por una Gramática.

Axioma Principal

<A> → a <B>

<A> → b

L (G) = { x / <S> →→→→ * x .and. x ∈ T *}

Page 30: Lenguajes y Compiladores Aspectos Formales (Parte 2)educaunica.galeon.com/cursos/silabo_diapositiva/Formales2.pdf · Representación Gráfica – Arbol Sintáctico Implica usar un

Técnicas de análisisTécnicas de análisis

� La tarea de un compilador no es generar frases, uncompilador debe verificar si una frase pertenece allenguaje o no.

� El análisis sintáctico es el proceso de búsqueda de unárbol sintáctico correspondiente a una frase.

Normalmente se usan dos métodos:

Compiladores2007 30

� Normalmente se usan dos métodos:

� Análisis sintáctico descendente: parte de la raíz ybaja hacia las hojas

� Análisis sintáctico ascendente: comienza por las hojase intenta llegar a la raíz

Page 31: Lenguajes y Compiladores Aspectos Formales (Parte 2)educaunica.galeon.com/cursos/silabo_diapositiva/Formales2.pdf · Representación Gráfica – Arbol Sintáctico Implica usar un

Representación Gráfica – Arbol Sintáctico

Implica usar un árbol ordenado, está formado por un Nudo (Elemento no Terminal parte Izquierda) y por ramas que serán la parte derecha de la regla.

<A> → a <B> b

Técnicas de análisisTécnicas de análisis

Compiladores2007 31

<A> → a <B> b

Nudo Ramas (derecha)

<A> nudo

a <B> b Ramas

Page 32: Lenguajes y Compiladores Aspectos Formales (Parte 2)educaunica.galeon.com/cursos/silabo_diapositiva/Formales2.pdf · Representación Gráfica – Arbol Sintáctico Implica usar un

Análisis descendenteAnálisis descendente

T = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9}N = { Digito, Enn}P = { Enn → Digito | Enn Digito

Digito → 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 }S =

Compiladores2007 32

S = {Enn}Para analizar la frase 123, se comienza con la raíz

Enn que deriva a Enn Digito.Enn

Enn Digito

Page 33: Lenguajes y Compiladores Aspectos Formales (Parte 2)educaunica.galeon.com/cursos/silabo_diapositiva/Formales2.pdf · Representación Gráfica – Arbol Sintáctico Implica usar un

Análisis descendenteAnálisis descendente

Aplicando la misma producción:

Enn

Enn Digito

Compiladores2007 33

Enn Digito

Con la producción Enn → Digito seguimos construyendo el árbol

Page 34: Lenguajes y Compiladores Aspectos Formales (Parte 2)educaunica.galeon.com/cursos/silabo_diapositiva/Formales2.pdf · Representación Gráfica – Arbol Sintáctico Implica usar un

Análisis descendenteAnálisis descendente

Enn Digito

Enn Digito

Enn

Compiladores2007 34

Digito

Con la producción Digito → 1 seguimos construyendo el árbol y obtenemos

Page 35: Lenguajes y Compiladores Aspectos Formales (Parte 2)educaunica.galeon.com/cursos/silabo_diapositiva/Formales2.pdf · Representación Gráfica – Arbol Sintáctico Implica usar un

Análisis descendenteAnálisis descendente

Enn

Enn Digito

Enn Digito

Compiladores2007 35

Digito

1 2 3

Podemos ver que el árbol crece hacia abajo conforme se valeyendo la frase de izquierda a derecha.

Page 36: Lenguajes y Compiladores Aspectos Formales (Parte 2)educaunica.galeon.com/cursos/silabo_diapositiva/Formales2.pdf · Representación Gráfica – Arbol Sintáctico Implica usar un

Análisis ascendenteAnálisis ascendente

� Veremos como se realiza el análisis ascendente para la misma frase 123.

� Sólo conocemos la raíz y la frase.

� Con la reducción 1 ← Digito obtenemos

Compiladores2007 36

Digito

1 2 3

� Con la reducción Digito ← Enn llegamos a:

Page 37: Lenguajes y Compiladores Aspectos Formales (Parte 2)educaunica.galeon.com/cursos/silabo_diapositiva/Formales2.pdf · Representación Gráfica – Arbol Sintáctico Implica usar un

Análisis ascendenteAnálisis ascendente

Enn

Digito

1 2 3

Y luego

Compiladores2007 37

Y luegoEnn Digito

Digito

1 2 3

Page 38: Lenguajes y Compiladores Aspectos Formales (Parte 2)educaunica.galeon.com/cursos/silabo_diapositiva/Formales2.pdf · Representación Gráfica – Arbol Sintáctico Implica usar un

Análisis ascendenteAnálisis ascendente

Podemos usar la reducción Enn Digito ← Enn

Enn

Enn Digito

Compiladores2007 38

Digito

1 2 3

Repitiendo el uso de las mismas derivaciones llegamos a obtener:

Page 39: Lenguajes y Compiladores Aspectos Formales (Parte 2)educaunica.galeon.com/cursos/silabo_diapositiva/Formales2.pdf · Representación Gráfica – Arbol Sintáctico Implica usar un

Análisis ascendenteAnálisis ascendente

Enn

Enn Digito

Enn Digito

Compiladores2007 39

Digito

1 2 3

Page 40: Lenguajes y Compiladores Aspectos Formales (Parte 2)educaunica.galeon.com/cursos/silabo_diapositiva/Formales2.pdf · Representación Gráfica – Arbol Sintáctico Implica usar un

Análisis sintácticoAnálisis sintáctico

� En cualquiera de los métodos usados llegamos a lasolución porque se tenia conocimiento de la frasecompleta (conocer el programa completo?)

� Si no hay un preanálisis se podrían tomar decisionescomo (para un análisis descendente):

Compiladores2007 40

como (para un análisis descendente):

Enn

Digito

1

Lo que nos llevaría a una situaciónsin salida (deadlock) ya que llegamosde la hoja a la raíz y todavía noterminamos de recorrer la frase.

Page 41: Lenguajes y Compiladores Aspectos Formales (Parte 2)educaunica.galeon.com/cursos/silabo_diapositiva/Formales2.pdf · Representación Gráfica – Arbol Sintáctico Implica usar un

Análisis sintácticoAnálisis sintáctico

� Para resolver este problema se definen losconjuntos Primero y Siguiente que permitiránrealizar el análisis sintáctico sin bloqueos mutuos.

� La idea básica es que mirando un número fijo decaracteres hacia adelante se pueda determinar

Compiladores2007 41

caracteres hacia adelante se pueda determinarexactamente cual es el árbol que corresponde.

Page 42: Lenguajes y Compiladores Aspectos Formales (Parte 2)educaunica.galeon.com/cursos/silabo_diapositiva/Formales2.pdf · Representación Gráfica – Arbol Sintáctico Implica usar un

TareaTarea

� Seleccione una grafo sintáctico del Pascal y escribala producción correspondiente.

� Deberá tener por lo menos:� Alternativas ( | )� Una repetición de elementos ( { } )

Compiladores2007 42

� Una repetición de elementos ( { } )

� Un elemento opcional ( [ ] )

Page 43: Lenguajes y Compiladores Aspectos Formales (Parte 2)educaunica.galeon.com/cursos/silabo_diapositiva/Formales2.pdf · Representación Gráfica – Arbol Sintáctico Implica usar un

1. Se tienen las siguientes reglas.

R1: <S> → a

R2: <S> → a <A> a

R3: <A> → b

EjercicioEjercicio

Compiladores2007 43

R4: <A> → b <A>

Reconocer mediante el árbol sintáctico

a) a b b a

b) a b b b b a

c) a a a b b a

Page 44: Lenguajes y Compiladores Aspectos Formales (Parte 2)educaunica.galeon.com/cursos/silabo_diapositiva/Formales2.pdf · Representación Gráfica – Arbol Sintáctico Implica usar un

2. Se tienen las siguientes Reglas

R1: <S> → do <B>

R2: <S> → ; <A>

R3: <A> → do

R4: <A> → do <S>

Reconocer mediante el árbol sintáctico

EjercicioEjercicio

Compiladores2007 44

R4: <A> → do <S>

R5: <A> → ; <A> <A>

R6: <B> → ;

R7: <B> → ; <S>

R8: <B> → do <B> <B>

R9: <B> → λ

a) do ; do do do ;

b) do; do ; ; ; do do do ;

c) ; do do do ; do do ; do

Page 45: Lenguajes y Compiladores Aspectos Formales (Parte 2)educaunica.galeon.com/cursos/silabo_diapositiva/Formales2.pdf · Representación Gráfica – Arbol Sintáctico Implica usar un

“En un lenguaje, se utilizan más de un centenar de

reglas “Backus Normal Form” para describir la

gramática de un lenguaje por lo que se ha ido

Notación ampliada de las reglas EBNF

Compiladores2007 45

gramática de un lenguaje por lo que se ha ido

introduciendo simplificaciones o formas compactas

llamadas “Extended Backus Form” “

Page 46: Lenguajes y Compiladores Aspectos Formales (Parte 2)educaunica.galeon.com/cursos/silabo_diapositiva/Formales2.pdf · Representación Gráfica – Arbol Sintáctico Implica usar un

1. Alternativa de una regla.- Varias reglas tienen elmismo símbolo no terminal (N) en la parte izquierda,varias reglas pueden expresarse en una regla.

R1 : <S> →→→→ a <B> aR2 : <S> →→→→ b <A>

Notación ampliada de las reglas EBNF

Variantes

Compiladores2007 46

R2 : <S> →→→→ b <A>R3 : <S> →→→→ a <S> aR4 : <S> →→→→ bR5 : <S> →→→→ λ

< S > →→→→ a < B > a | b < A > | a < S > a | b | λR1 R2 R3 R4 R5

Page 47: Lenguajes y Compiladores Aspectos Formales (Parte 2)educaunica.galeon.com/cursos/silabo_diapositiva/Formales2.pdf · Representación Gráfica – Arbol Sintáctico Implica usar un

2. Uso de Llaves.- Las llaves nos indica que el símbolo que encierra se repite desde cero hasta un número arbitrario de veces

R1 : <S> →→→→ <A> a

Notación ampliada de las reglas EBNF

Compiladores2007 47

R1 : <S> <A> a

R2 : <A> →→→→ b <S> →→→→ <A> a

R3 : <A> →→→→ bb <A> →→→→ {b}5R4 : <A> →→→→ bbbR5 : <A> →→→→ bbbbR6 : <A> →→→→ bbbbb

1

Page 48: Lenguajes y Compiladores Aspectos Formales (Parte 2)educaunica.galeon.com/cursos/silabo_diapositiva/Formales2.pdf · Representación Gráfica – Arbol Sintáctico Implica usar un

3. Uso de paréntesis cuadrados (Corchetes).- Es un caso particular de las llaves.

0[ X ] = { X }1

Se puede usar o no se

Notación ampliada de las reglas EBNF

Compiladores2007 48

< S > →→→→ a < B > c < S > [ b < S > ]Se puede hacer 1 vezo ninguna vez

0

Se puede usar o no sepuede usar

Page 49: Lenguajes y Compiladores Aspectos Formales (Parte 2)educaunica.galeon.com/cursos/silabo_diapositiva/Formales2.pdf · Representación Gráfica – Arbol Sintáctico Implica usar un

1. Se tiene las siguientes reglas:

R1: <S> → <T> <F>

R2: <F> → + <T> <F> | λλλλ

R3: <T> → <E><L>

Reconocer con el árbol sintáctico

1) a*(a+a)

EjercicioEjercicio

Compiladores2007 49

R4: <L> → * <E><L>| λλλλ

R5: <E> → ( <S> ) | a

1) a*(a+a)

2) (a+a)*a*(a+a)

3) a+a+a+a+(a+a)*a

Page 50: Lenguajes y Compiladores Aspectos Formales (Parte 2)educaunica.galeon.com/cursos/silabo_diapositiva/Formales2.pdf · Representación Gráfica – Arbol Sintáctico Implica usar un

2. Se tiene las siguientes reglas

R1: <S> →→→→ ( <A> )

R2: <A> → <T> <F>

R3: <F> → + <A> | λλλλ

Reconocer con el árbol sintáctico

1) ((a) + (a) + a+a)

EjercicioEjercicio

Compiladores2007 50

R3: <F> → + <A> | λλλλ

R4: <T> → <S>| a 1) ((a) + (a) + a+a)

2) (a+a+(a)+a+(a))

3) (a+a+a+(a+a)+a)