La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Organización de Lenguajes y Compiladores 1

Presentaciones similares


Presentación del tema: "Organización de Lenguajes y Compiladores 1"— Transcripción de la presentación:

1 Organización de Lenguajes y Compiladores 1
Método de análisis sintáctico LL1

2 Método Descendente LL(1)
La primera L representa el tipo de lectura de la cadena de entrada Left (de izquierda a derecha) La segunda L representa la que la derivación Left, por la izquierda. Y el 1, es el número de símbolos de entrada para analizar por anticipado.

3 Método Descendente LL(1)
Ninguna gramática ambigua o recursiva por la izquierda puede ser LL(1).

4 Método Descendente LL(1)
Buffer de Entrada Cadena de entrada a analizar, finaliza con el carácter $ Pila Símbolos gramaticales que se van utilizando Tabla de Análisis Sintáctico Matriz bidimensional que sirve para el análisis Cadena de Salida Cadena de Salida posterior al análisis

5 LL(1)

6 Pasos para el Método LL(1)
Escribir adecuadamente la gramática Calcular el First y el Follow Construir la tabla de Análisis Sintáctico Hacer el análisis de sintáctico por medio de la pila y la tabla de análisis

7 Pasos para el Método LL(1)
1. Escribir adecuadamente la gramática Para poder utilizar un analizador descendente no recursivo la gramática debe cumplir con: No debe tener ambigüedad No debe ser recursiva por la izquierda Debe estar factorizada

8 Pasos para el Método LL(1)
2. Calcular el First / Primero Símbolo First/Primero Si x es terminal First(X) = {x} Si X → ε producción Añadir ε al First(X) X →YZW Añadir First (Y) a First (X)

9 Pasos para el Método LL(1)
2. Calcular el Follow / Siguiente Símbolo Follow/Siguiente Si X es símbolo inicial Follow ( X ) = { $ } Si X → α Y M Producción Follow (Y) = First (M) excepto ε. 2. Si el First(M) contiene ε entonces añadir el Follow(X) a Follow (Y) Si X → α Y Añadir el Follow(X) a Follow(Y)

10 Pasos para el Método LL(1)
3. Construir la tabla de Análisis Sintáctico Símbolo Terminal Símbolos No Terminales

11 Pasos para el Método LL(1)
3. Construir la tabla de Análisis Sintáctico Para cada A → α, ejecute 2 y 3. Para cada terminal a del First (α), añádase A → α en la posición M[A , a]. Si ε esta en el First (α), añádase A → ε a M[A , b ] para cada terminal b de Follow(A). Cada entrada vacía hágase ERROR.

12 Pasos para el Método LL(1)
3. Construir la tabla de Análisis Sintáctico Se colocan las producciones que corresponden a los datos obtenidos del cálculo del first.

13 Pasos para el Método LL(1)
4. Hacer el análisis de sintáctico por medio de la pila y la tabla de análisis . . . Pila Entrada

14 Ejemplo LL(1) Partiendo de la Gramática: S → ‘(‘ A ‘)’ A → C B
B → ‘;’ A | ε C → ‘x’ | S 1. Es una gramática adecuada para el análisis LL(1)

15 Ejemplo LL(1) 2. Cálculo del First / Primero First S ( A B ; C x Si X
A → C B B → ‘;’ A | ε C → ‘x’ | S Símbolo No Terminal First S ( A B ; C x Si X es terminal First(X) = {x} Para calcular el first Se usan Los no terminales del lado izquierdo de la producción

16 Ejemplo LL(1) 2. Cálculo del First / Primero First S ( A B ; , ε C x
A → C B B → ‘;’ A | ε C → ‘x’ | S Símbolo No Terminal First S ( A B ; , ε C x Si X → ε producción Añadir ε al First(x) Para calcular el first Se usan Los no terminales del lado izquierdo de la producción

17 Ejemplo LL(1) 2. Cálculo del First / Primero First S ( A x , ( B ; , ε
A → C B B → ‘;’ A | ε C → ‘x’ | S Símbolo No Terminal First S ( A x , ( B ; , ε C X →YZW Añadir First (Y) a First (X) Para calcular el first Se usan Los no terminales del lado izquierdo de la producción

18 Ejemplo LL(1) 2. Cálculo del First / Primero First S ( A x , ( B ; , ε
A → C B B → ‘;’ A | ε C → ‘x’ | S Símbolo No Terminal First S ( A x , ( B ; , ε C

19 Ejemplo LL(1) 2. Cálculo del Follow / Siguiente Follow S $ A B C
A → C B B → ‘;’ A | ε C → ‘x’ | S Símbolo No Terminal Follow S $ A B C Si X es símbolo inicial Follow (X) = { $ } Para cacular el follow Se usan Los no terminales del lado izquierdo de la producción

20 Ejemplo LL(1) 2. Cálculo del Follow / Siguiente Follow S $ A ) B C
A → C B B → ‘;’ A | ε C → ‘x’ | S Símbolo No Terminal Follow S $ A ) B C Para cacular el follow Se usan Los no terminales del lado izquierdo de la producción

21 Ejemplo LL(1) 2. Cálculo del Follow / Siguiente Follow S $ A ) B C
A → C B B → ‘;’ A | ε C → ‘x’ | S Símbolo No Terminal Follow S $ A ) B C Si X → α Y Producción Añadir el Follow(X) a Follow(Y) Para cacular el follow Se usan Los no terminales del lado izquierdo de la producción

22 Ejemplo LL(1) 2. Cálculo del Follow / Siguiente Follow S $ A ) B C
A → C B B → ‘;’ A | ε C → ‘x’ | S Símbolo No Terminal Follow S $ A ) B C ; , ) Si X → α Y M Producción 1.Follow (Y) = First (M) excepto ε. 2. Si el First(M) contiene ε entonces añadir el Follow(X) a Follow (Y) Se usan Los no terminales del lado derecho de la producción First(B) ; , ε

23 Ejemplo LL(1) Construir la tabla de Análisis Sintáctico
Para cada terminal a del First (α), añádase A → α en la posición M[A , a]. Símbolo No Terminal First S ( A x , ( B ; , ε C ; x ( ) $ S S  ( A ) A A  CB B B  ; A C C  x C  S S → ‘(‘ A ‘)’ A → C B B → ‘;’ A | ε C → ‘x’ | S

24 Ejemplo LL(1) Construir la tabla de Análisis Sintáctico
Si ε esta en el First (α), añádase A → ε a M[A , b ] para cada terminal b de Follow(A). Símbolo No Terminal First B ; , ε Símbolo No Terminal Follow B ) ; x ( ) $ S S  ( A ) A A  CB B B  ; A B  ε C C  x C  S S → ‘(‘ A ‘)’ A → C B B → ‘;’ A | ε C → ‘x’ | S

25 Ejemplo LL(1) Construir la tabla de Análisis Sintáctico
Cada entrada vacía hágase ERROR ; x ( ) $ S ERROR S  ( A ) A A  CB B B  ; A B  ε C C  x C  S

26 Ejemplo LL(1) 3. Construir la tabla de Análisis Sintáctico ; x ( ) $ S
ERROR S  ( A ) A A  CB B B  ; A B  ε C C  x C  S

27 Pasos para el Método LL(1)
4. Hacer el análisis de sintáctico por medio de la pila y la tabla de análisis ( x ; ) Pila Entrada $ S ( x ; ( x ) ) $ Colocar $ y el símbolo inicial Colocar la cadena de entrada y $

28 Pasos para el Método LL(1)
4. Hacer el análisis de sintáctico por medio de la pila y la tabla de análisis Pila Entrada Acción $ S ( x ; ( x ) ) $ S  ( A ) Se busca el símbolo terminal y el no terminal, remplazándolo por la producción que le corresponda en la tabla. Colocándola de izquierda a derecha ( S S → ( A )

29 Pasos para el Método LL(1)
4. Hacer el análisis de sintáctico por medio de la pila y la tabla de análisis Pila Entrada Acción $ S $ ) A ( ( x ; ( x ) ) $ S  ( A ) Cuando se llega a una coincidencia, se eliminan ambos, y se continua con el análisis

30 Pasos para el Método LL(1)
4. Hacer el análisis de sintáctico por medio de la pila y la tabla de análisis Pila Entrada Acción $ S $ ) A ( ( x ; ( x ) ) $ S  ( A ) Cuando se llega a una coincidencia, se eliminan ambos, y se continua con el análisis

31 Pila Entrada Acción $ S $ ) A $ ) B C $ ) B x $ ) B $ ) A ; $ ) B S
$ ) B ) B C $ ) B ) B x $ ) B ) B $ ) B ) $ ) $ ( x ; ( x ) ) $ x ; ( x ) ) $ ; ( x ) ) $ ( x ) ) $ x ) ) $ ) ) $ ) $ S  ( A ) A  C B C  x B  ; A C  S C  x B  ε

32 $ ACEPTADA Pila Entrada Acción Se acepta la cadena si se
$ ) B C $ ) B x $ ) B $ ) A ; $ ) B S $ ) B ) A ( $ ) B ) A $ ) B ) B C $ ) B ) B x $ ) B ) B $ ) B ) $ ) $ ( x ; ( x ) ) $ x ; ( x ) ) $ ; ( x ) ) $ ( x ) ) $ x ) ) $ ) ) $ ) $ S  ( A ) A  C B C  x B  ; A C  S C  x B  ε ACEPTADA Se acepta la cadena si se logra eliminar de la pila y la entrada, todos los símbolos. De lo contrario no se acepta la cadena.

33 RESUMEN Pasos para el método LL1 Escribir adecuadamente la gramática
Calcular el First y el Follow Construir la tabla de Análisis Sintáctico Hacer el análisis de sintáctico por medio de la pila y la tabla de análisis


Descargar ppt "Organización de Lenguajes y Compiladores 1"

Presentaciones similares


Anuncios Google