22, 23 y 24 Análisis sintáctico V - eafranco.com

Preview:

Citation preview

Contenido

• Análisis Sintáctico Ascendente

• Métodos Ascendentes

• Método Ascendente SLR

• Pasos para el método SLR

• Ejemplo SLR

• Resumen

• Ejercicios

Compiladores (Análisis Sintáctico VI - Análisis Ascendente - Edgardo A. Franco)2

22, 23 y 24 Análisis sintáctico VCompiladores - Profr. Edgardo Adrián Franco Martínez

2

Análisis Ascendente

• Se construye el árbol de análisis sintáctico de lacadena de entradadesde las hojas hasta la raíz.

• En las hojas tenemos la cadena a analizar(lossímbolos terminales)que se intentanreducir alaxioma, que se encontrará en la raíz, si la cadena escorrecta sintácticamente.

Compiladores (Análisis Sintáctico VI - Análisis Ascendente - Edgardo A. Franco)3

22, 23 y 24 Análisis sintáctico VCompiladores - Profr. Edgardo Adrián Franco Martínez

3

Análisis Ascendente

¿Comoconstruir el árbol?• Se trata de desplazarse en la entrada hastaencontrar una subcadena de símbolos querepresente la parte derecha de una producción, enese momento sustituimos esa subcadena por el no-terminal de la parte izquierda correspondiente de laproducción, lareducimos.

Compiladores (Análisis Sintáctico VI - Análisis Ascendente - Edgardo A. Franco)4

22, 23 y 24 Análisis sintáctico VCompiladores - Profr. Edgardo Adrián Franco Martínez

4

Métodos Ascendentes

• Partiendo del árbol de derivación se comprueba la siguiente cadena

abcdef• Partiendo de abajo hacia arriba

utilizando la pila y reduciendo las producciones

S

B

A

a

b

c E

d D

C

e f

F

Compiladores (Análisis Sintáctico VI - Análisis Ascendente - Edgardo A. Franco)5

22, 23 y 24 Análisis sintáctico VCompiladores - Profr. Edgardo Adrián Franco Martínez

5

Métodos Ascendentes

• Ingresa a la pila

• Encontrar una subcadena de símbolos que represente la parte derecha de una producción.

S

B

A b

c E

d D

C

e f

Fa

Compiladores (Análisis Sintáctico VI - Análisis Ascendente - Edgardo A. Franco)6

22, 23 y 24 Análisis sintáctico VCompiladores - Profr. Edgardo Adrián Franco Martínez

6

Métodos Ascendentes

• Reduce en la producción

A � a

• Cambia el valor en la pila

S

B

b

c E

d D

C

e f

F

A

Compiladores (Análisis Sintáctico VI - Análisis Ascendente - Edgardo A. Franco)7

22, 23 y 24 Análisis sintáctico VCompiladores - Profr. Edgardo Adrián Franco Martínez

7

Métodos Ascendentes

• Ingresa el valor de b a la pila.S

B c E

d D

C

e f

F

A b

Compiladores (Análisis Sintáctico VI - Análisis Ascendente - Edgardo A. Franco)8

22, 23 y 24 Análisis sintáctico VCompiladores - Profr. Edgardo Adrián Franco Martínez

8

Métodos Ascendentes

• Reduce en la producción

B � Ab

• Cambia el valor en la pila

S

c E

d D

C

e f

F

B

Compiladores (Análisis Sintáctico VI - Análisis Ascendente - Edgardo A. Franco)9

22, 23 y 24 Análisis sintáctico VCompiladores - Profr. Edgardo Adrián Franco Martínez

9

Métodos Ascendentes

• Se moviliza en el árbol e ingresa c.

• Se agrega c a la pila

S

E

d D

C

e f

F

B c

Compiladores (Análisis Sintáctico VI - Análisis Ascendente - Edgardo A. Franco)10

22, 23 y 24 Análisis sintáctico VCompiladores - Profr. Edgardo Adrián Franco Martínez

10

Métodos Ascendentes

• Se moviliza en el árbol e ingresa d.

• Se agrega d a la pila

S

E

D

C

e f

F

B c d

Compiladores (Análisis Sintáctico VI - Análisis Ascendente - Edgardo A. Franco)11

22, 23 y 24 Análisis sintáctico VCompiladores - Profr. Edgardo Adrián Franco Martínez

11

Métodos Ascendentes

• Se moviliza en el árbol e ingresa e.

• Se agrega e a la pila

S

E

D

C

f

F

B c d e

Compiladores (Análisis Sintáctico VI - Análisis Ascendente - Edgardo A. Franco)12

22, 23 y 24 Análisis sintáctico VCompiladores - Profr. Edgardo Adrián Franco Martínez

12

Métodos Ascendentes

• Se moviliza en el árbol e ingresa f.

• Se agrega f a la pila

S

E

D

C

F

B c d e f

Compiladores (Análisis Sintáctico VI - Análisis Ascendente - Edgardo A. Franco)13

22, 23 y 24 Análisis sintáctico VCompiladores - Profr. Edgardo Adrián Franco Martínez

13

Métodos Ascendentes

• Reduce en la producción

C � e f

• Cambia el valor en la pila

S

E

D

F

B c d C

Compiladores (Análisis Sintáctico VI - Análisis Ascendente - Edgardo A. Franco)14

22, 23 y 24 Análisis sintáctico VCompiladores - Profr. Edgardo Adrián Franco Martínez

14

Métodos Ascendentes

• Reduce en la producción

D � C

• Cambia el valor en la pila

S

E F

B c d D

Compiladores (Análisis Sintáctico VI - Análisis Ascendente - Edgardo A. Franco)15

22, 23 y 24 Análisis sintáctico VCompiladores - Profr. Edgardo Adrián Franco Martínez

15

Métodos Ascendentes

• Reduce en la producción

F � ε

• Cambia el valor en la pila

S

F

B c E F

Compiladores (Análisis Sintáctico VI - Análisis Ascendente - Edgardo A. Franco)

22, 23 y 24 Análisis sintáctico VCompiladores - Profr. Edgardo Adrián Franco Martínez

16

Métodos Ascendentes

• Reduce en la producción

S � B c E F ε

• Cambia el valor en la pila

S

Compiladores (Análisis Sintáctico VI - Análisis Ascendente - Edgardo A. Franco)17

22, 23 y 24 Análisis sintáctico VCompiladores - Profr. Edgardo Adrián Franco Martínez

17

Método Ascendente SLR

• Proviene del ingles Simple LR, es el más elemental de losanalizadores ascendentes.

• El principal objetivo es construir unautómata finitodeterminístico para reconocer los prefijos de la cadena,esos elementos se agrupan por estados.

Compiladores (Análisis Sintáctico VII-Análisis SLR - Edgardo A. Franco)18

22, 23 y 24 Análisis sintáctico VCompiladores - Profr. Edgardo Adrián Franco Martínez

18

Método Ascendente SLR

• Es el método ascendente que tiene un menornúmero de gramáticas para reconocer, en contrastecon los otros métodos.

• Si existe una confusión en la tabla de análisis, alser en el mismo estado una“reducción” y un“desplazamiento” no se puede realizar por esemétodo.

Compiladores (Análisis Sintáctico VII-Análisis SLR - Edgardo A. Franco)19

22, 23 y 24 Análisis sintáctico VCompiladores - Profr. Edgardo Adrián Franco Martínez

19

Características del método

• La gramática debe ser no ambigua

• La gramática puede tener recursividad a laizquierda

• La gramática puede estar no factorizada

Compiladores (Análisis Sintáctico VII-Análisis SLR - Edgardo A. Franco)20

22, 23 y 24 Análisis sintáctico VCompiladores - Profr. Edgardo Adrián Franco Martínez

20

Funciones importantes

• Kernel: Producción que da origen al estado.

• Cerradura: Producción del NOTERMINAL a la derechadel apuntador.

• Transición: Pasos en los que se desglosa la gramática paraobtener los desplazamientos y reducciones.

Compiladores (Análisis Sintáctico VII-Análisis SLR - Edgardo A. Franco)21

22, 23 y 24 Análisis sintáctico VCompiladores - Profr. Edgardo Adrián Franco Martínez

21

Método Ascendente SLR

• Buffer de EntradaCadena de entrada a analizar, finaliza con el carácter $

• PilaSímbolos gramaticales que se van utilizando

• Tabla de Análisis SintácticoMatriz bidimensional que sirve para el análisis

• Cadena de SalidaCadena de Salida posterior al análisis

Compiladores (Análisis Sintáctico VII-Análisis SLR - Edgardo A. Franco)22

22, 23 y 24 Análisis sintáctico VCompiladores - Profr. Edgardo Adrián Franco Martínez

22

Método Ascendente SLR

Compiladores (Análisis Sintáctico VII-Análisis SLR - Edgardo A. Franco)23

22, 23 y 24 Análisis sintáctico VCompiladores - Profr. Edgardo Adrián Franco Martínez

23

Pasos para el Método SLR

1. Evaluar la gramática.

2. Calcular el conjunto de estados de la gramática.

3. Calcular el Siguiente (follow)

4. Construir la tabla de Análisis Sintáctico

5. Hacer el análisis de sintáctico por medio de la pila y la tabla de análisis

Compiladores (Análisis Sintáctico VII-Análisis SLR - Edgardo A. Franco)24

22, 23 y 24 Análisis sintáctico VCompiladores - Profr. Edgardo Adrián Franco Martínez

24

Pasos para el Método SLR

1.- Evaluar la gramática

Generar un estado inicial S para la gramática,partiendo del símbolo que de origen a las demásproducciones.

Compiladores (Análisis Sintáctico VII-Análisis SLR - Edgardo A. Franco)25

22, 23 y 24 Análisis sintáctico VCompiladores - Profr. Edgardo Adrián Franco Martínez

25

Pasos para el Método SLR

Kernel

Para calcularlos, se parte de unagramática y se coloca un punto(.) al iniciar la producción. Enese momento se crea el primerKernel, y es el estado.

2. Calcular el conjunto de EstadosNo.

EstadoGoto( Estado, Símbolo)

Kernel

S → .E

Cerradura

Compiladores (Análisis Sintáctico VII-Análisis SLR - Edgardo A. Franco)26

22, 23 y 24 Análisis sintáctico VCompiladores - Profr. Edgardo Adrián Franco Martínez

26

Pasos para el Método SLR

Un estado esta formadopor un Kernel, unacerradura y conjunto deGoto´s o desplazamientos.

2. Calcular el conjunto de Estados

No.Estado

Goto( Estado, Símbolo)

Kernel

Cerradura

Compiladores (Análisis Sintáctico VII-Análisis SLR - Edgardo A. Franco)27

22, 23 y 24 Análisis sintáctico VCompiladores - Profr. Edgardo Adrián Franco Martínez

27

Pasos para el Método SLR

Cerradura

Son las producciones que songeneradas por el símbolo que seencuentra después del punto. Todasellas deben comenzar nuevamentecon punto. Si es no terminalagregar sus producciones también

2. Calcular el conjunto de Estados

0Goto( Estado,

Símbolo)

KernelS → ● E

CerraduraE→ ●E + T

| ● T

Compiladores (Análisis Sintáctico VII-Análisis SLR - Edgardo A. Franco)28

22, 23 y 24 Análisis sintáctico VCompiladores - Profr. Edgardo Adrián Franco Martínez

28

Pasos para el Método SLR

Goto / Desplazamiento

Al mover el punto dentro delkernel, con un único símbolo seconstruye un Goto.

Es posible que un kernel poseavarios desplazamientos, pasandode diferentes estados con el mismosímbolo.

2. Calcular el conjunto de Estados

0

KernelS → ● E

CerraduraE→ ●E + T

| ● T … 1 Goto(0, E)

KernelS → E ●

E→ E ● + T

Cerradura

Compiladores (Análisis Sintáctico VII-Análisis SLR - Edgardo A. Franco)29

22, 23 y 24 Análisis sintáctico VCompiladores - Profr. Edgardo Adrián Franco Martínez

29

Ejercicio 1• Calcular el conjunto de Estados para las siguientegramática:

• Gramática para generar paréntesis anidados:

A → (A)|a

22, 23 y 24 Análisis sintáctico VCompiladores - Profr. Edgardo Adrián Franco Martínez

30

Ejercicio 2• Calcular el conjunto de Estados para las siguientegramática:

• Gramática para generar sumas de expresiones:

E → n | E+n

22, 23 y 24 Análisis sintáctico VCompiladores - Profr. Edgardo Adrián Franco Martínez

31

Ejercicio 3• Calcular el conjunto de Estados para las siguientegramática:

• Gramática para generar suma y multiplicación de números,aceptando los paréntesis

E → E + E | E * E| ( E ) | num

22, 23 y 24 Análisis sintáctico VCompiladores - Profr. Edgardo Adrián Franco Martínez

32

Pasos para el Método SLR

3. Calcular el Siguiente (Follow)

Compiladores (Análisis Sintáctico VII-Análisis SLR - Edgardo A. Franco)33

Símbolo SIGUIENTE

Si B es símbolo inicial SIGUIENTE (B) = { $}

Si A → α B M

Producción

1. SIGUIENTE (B) = PRIMERO(M) excepto ε.

2. Si el PRIMERO(M) contiene ε entonces añadir el

SIGUIENTE (A) a SIGUIENTE (B)

Si A → B

ProducciónAñadir el SIGUIENTE (A) a SIGUIENTE (B)

22, 23 y 24 Análisis sintáctico VCompiladores - Profr. Edgardo Adrián Franco Martínez

33

Pasos para el Método SLR4. Construir la tabla de Análisis Sintáctico

Conjunto de Estados

Símbolo Terminal y No Terminales

Compiladores (Análisis Sintáctico VII-Análisis SLR - Edgardo A. Franco)34

22, 23 y 24 Análisis sintáctico VCompiladores - Profr. Edgardo Adrián Franco Martínez

34

Pasos para el Método SLR

4. Construir la tabla de Análisis Sintáctico

Se colocan las reducciones o desplazamientosnecesarios para hacer el posterioranálisis.

Compiladores (Análisis Sintáctico VII-Análisis SLR - Edgardo A. Franco)35

22, 23 y 24 Análisis sintáctico VCompiladores - Profr. Edgardo Adrián Franco Martínez

35

Pasos para el Método SLR

4. Construir la tabla de Análisis Sintáctico

Desplazamiento:

Se identifica con el número de estado al que se desplaza. Y si es un símbolo terminal se le antepone una letra “d”.

Reducción:

Si el kernel es de la forma A →α se coloca una reducción a todos los elementos de su follow, con el numero del estado al que corresponde.

Compiladores (Análisis Sintáctico VII-Análisis SLR - Edgardo A. Franco)36

22, 23 y 24 Análisis sintáctico VCompiladores - Profr. Edgardo Adrián Franco Martínez

36

Pasos para el Método SLR

4. Construir la tabla de Análisis Sintáctico

• Solamente puede existir un elemento en cada casilla.

• Puede darse conflictos shift – reduce

• Puede ser conflictos reduce – reduce

• Y en ese caso no aplica a método SLR.

Compiladores (Análisis Sintáctico VII-Análisis SLR - Edgardo A. Franco)37

22, 23 y 24 Análisis sintáctico VCompiladores - Profr. Edgardo Adrián Franco Martínez

37

Pasos para el Método SLR

5. Hacer el análisis de sintáctico por medio de la pila y la tabla de análisis

Pila Entrada

. . .

Compiladores (Análisis Sintáctico VII-Análisis SLR - Edgardo A. Franco)38

22, 23 y 24 Análisis sintáctico VCompiladores - Profr. Edgardo Adrián Franco Martínez

38

Ejemplo SLR

Partiendo de la Gramática:

E → E ‘+’ T | T

T → T ‘x’ F | F

F → num | ‘(‘ E ‘)’

Para poder utilizar esta gramática, se le debe aumentar unaproducción, en este caso

S → E

Compiladores (Análisis Sintáctico VII-Análisis SLR - Edgardo A. Franco)39

22, 23 y 24 Análisis sintáctico VCompiladores - Profr. Edgardo Adrián Franco Martínez

39

Ejemplo SLR

1. Escribir adecuadamente la gramática

S → E

1 E → E ‘+’ T

2 E → T

3 T → T ‘x’ F

4 T → F

5 F → ‘(‘ E ‘)’

6 F → num

Compiladores (Análisis Sintáctico VII-Análisis SLR - Edgardo A. Franco)40

22, 23 y 24 Análisis sintáctico VCompiladores - Profr. Edgardo Adrián Franco Martínez

40

Ejemplo SLR

2. Calcular el conjunto de Estados

• Se coloca el punto, y se generan todas las producciones de los símbolos no terminales que se encuentren a su derecha.

S → EE → E ‘+’ T | TT → T ‘x’ F | FF → num | ‘(‘ E ‘)’

0

KernelS → ● E

CerraduraE→ ●E + T

| ● T T → ● T x F

| ● F F → ● (E)| ● num

Compiladores (Análisis Sintáctico VII-Análisis SLR - Edgardo A. Franco)41

22, 23 y 24 Análisis sintáctico VCompiladores - Profr. Edgardo Adrián Franco Martínez

41

Ejemplo SLR

2. Calcular el conjunto de Estados

• Para calcular el siguiente kernel se hace el desplazamiento con el símbolo “E”

S → EE → E ‘+’ T | TT → T ‘x’ F | FF → num | ‘(‘ E ‘)’

0

KernelS → ● E

CerraduraE→ ●E + T

| ● T T → ● T x F

| ● F F → ● (E)| ● num

Compiladores (Análisis Sintáctico VII-Análisis SLR - Edgardo A. Franco)42

22, 23 y 24 Análisis sintáctico VCompiladores - Profr. Edgardo Adrián Franco Martínez

42

Ejemplo SLR

2. Calcular el conjunto de Estados

Partiendo del Estado 0, generamos todos los estados vinculados con este, por medio de los goto´s con los diferentes símbolos.

0

KernelS→ ● E

CerraduraE→ ●E + T

| ● T T → ● T x F

| ● F F → ● (E)| ● num

1 Goto(0, E)

S → E ●E→ E ● + T

2 Goto(0, T)

E → T ●T → T ● x F

4 Goto(0, “(“)

F → ( ●E)

E→ ● E + T| ● T

T → ● T x F| ● F

F → ● (E)| ● num

3 Goto(0, F)

T → F ●

5 Goto(0, “(“)

F → num●

Compiladores (Análisis Sintáctico VII-Análisis SLR - Edgardo A. Franco)43

22, 23 y 24 Análisis sintáctico VCompiladores - Profr. Edgardo Adrián Franco Martínez

43

Ejemplo SLR

2. Calcular el conjunto de Estados

Luego se continua con todos los elementos del kernel, de los estados generados. Movilizando el punto para crear un desplazamiento.

1 Goto(0, E)

S → E ●E→ E ● + T

6 Goto(1, “+“)

E→ E + ● T

T → ● T x F| ● F

F → ● (E)| ● num

Compiladores (Análisis Sintáctico VII-Análisis SLR - Edgardo A. Franco)44

22, 23 y 24 Análisis sintáctico VCompiladores - Profr. Edgardo Adrián Franco Martínez

44

Ejemplo SLR

2. Calcular el conjunto de Estados

Luego se continua con todos los elementos del kernel, de los estados generados. Movilizando el punto para crear un desplazamiento.

2 Goto(0, T)

E → T ●T → T ● x F

7 Goto(2, “x” )

T→ T x ● F

F → ● (E)| ● num

3 Goto(0, F)

E → F ●

En el caso de no poder movilizarse,por falta de símbolos se continua conel siguiente estado.

Compiladores (Análisis Sintáctico VII-Análisis SLR - Edgardo A. Franco)45

22, 23 y 24 Análisis sintáctico VCompiladores - Profr. Edgardo Adrián Franco Martínez

45

Ejemplo SLR

2. Calcular el conjunto de Estados

8 Goto(4, E )

F→ ( E ● )E→ E ● + T

Es importante ir en orden de cada estado, movilizando cada uno de los símbolos.

4 Goto(0, “(“)

F→ ( ●E)

E→ ● E + T| ● T

T → ● T x F| ● F

F → ● (E)| ● num

Compiladores (Análisis Sintáctico VII-Análisis SLR - Edgardo A. Franco)46

22, 23 y 24 Análisis sintáctico VCompiladores - Profr. Edgardo Adrián Franco Martínez

46

Ejemplo SLR

2. Calcular el conjunto de Estados

9 Goto(4, T )

E → T ●T → T ● x F

Al hacer los cálculos de los estados, puede que se repita el kernel, y que el movimiento sea con el mismo símbolo. Por lo que al estado, únicamente se agrega el movimiento y no se agrega un nuevo estado.

4 Goto(0, “(“)

F→ ( ●E)

E→ ● E + T| ● T

T → ● T x F| ● F

F → ● (E)| ● num

2 Goto(0, T ) Goto(4, T )

E → T ●T → T ● x F

Compiladores (Análisis Sintáctico VII-Análisis SLR - Edgardo A. Franco)47

22, 23 y 24 Análisis sintáctico VCompiladores - Profr. Edgardo Adrián Franco Martínez

47

Ejemplo SLR

2. Calcular el conjunto de Estados

Al hacer los cálculos de los estados, puede que se repita el kernel, y que el movimiento sea con el mismo símbolo. Por lo que al estado, únicamente se agrega el movimiento y no se agrega un nuevo estado.

4 Goto(0, “(“)

F→ ( ●E)

E→ ● E + T| ● T

T → ● T x F| ● F

F → ● (E)| ● num

9 Goto(0, F)

E → F ●

3 Goto(0, F) Goto(4, F)

E → F ●

Compiladores (Análisis Sintáctico VII-Análisis SLR - Edgardo A. Franco)48

22, 23 y 24 Análisis sintáctico VCompiladores - Profr. Edgardo Adrián Franco Martínez

48

Ejemplo SLR

2. Calcular el conjunto de Estados

El mismo caso es con los siguientes estados, y no se agregan, solo se modifican los desplazamientos.

2 Goto(0, T) Goto(4, T)

E → T ●T → T ● x F 4 Goto(0, “(“) Goto(4, “(“)

F → ( ●E)

E→ ● E + T| ● T

T → ● T x F| ● F

F → ● (E)| ● num

3 Goto(0, F) Goto(4, F)

E → F ●

5Goto(0, “num“) Goto(4, “num“)

F → num●

Compiladores (Análisis Sintáctico VII-Análisis SLR - Edgardo A. Franco)49

22, 23 y 24 Análisis sintáctico VCompiladores - Profr. Edgardo Adrián Franco Martínez

49

Ejemplo SLR

2. Calcular el conjunto de Estados

9 Goto(6, T)

E→ E + T ●T → T ● x F

6 Goto(1, “+“)

E→ E + ● T

T → ● T x F| ● F

F → ● (E)| ● num

- Goto(6, F)

E → F ●

Agregar a Estado 3

- Goto(6, “(“)

F → ( ●E)

E→ ● E + T| ● T

T → ● T x F| ● F

F → ● (E)| ● num

- Goto(6, “num“)

F → num●

Agregar a Estado 5

Agregar a Estado 4Compiladores (Análisis Sintáctico VII-Análisis SLR - Edgardo A. Franco)

50

22, 23 y 24 Análisis sintáctico VCompiladores - Profr. Edgardo Adrián Franco Martínez

50

Ejemplo SLR

2. Calcular el conjunto de Estados

Se modifican los goto´s de los estaddos 3,4 y 5-

4Goto(0, “(“) Goto(4, “(“)

Goto(6, “(“)

F → ( ●E)

E→ ● E + T| ● T

T → ● T x F| ● F

F → ● (E)| ● num

3Goto(0, F) Goto(4, F)

Goto(6, F)

E → F ●

5Goto(0, “num“) Goto(4, “num“)Goto(6, “num“)

F → num●

Compiladores (Análisis Sintáctico VII-Análisis SLR - Edgardo A. Franco)51

22, 23 y 24 Análisis sintáctico VCompiladores - Profr. Edgardo Adrián Franco Martínez

51

Ejemplo SLR

2. Calcular el conjunto de Estados

11 Goto(8, ‘)’)

F→ ( E )●

10 Goto(7, F)

T→ T x F●

8 Goto(4, E )

F→ ( E ● )E→ E ● + T

7 Goto(2, “x” )

T→ T x ● F

F → ● (E)| ● num

Finalizado el proceso se construye la tabla.

Compiladores (Análisis Sintáctico VII-Análisis SLR - Edgardo A. Franco)52

22, 23 y 24 Análisis sintáctico VCompiladores - Profr. Edgardo Adrián Franco Martínez

52

Ejemplo SLR

3. Cálculo del Siguiente (Follow)

S → E1 E → E ‘+’ T 2 E → T3 T → T ‘x’ F 4 T → F5 F → ‘(‘ E ‘)’ 6 F → num

Símbolo

No TerminalFollow

S $

E $ , +, )

T x, +, $, )

F x, +, $, )

Compiladores (Análisis Sintáctico VII-Análisis SLR - Edgardo A. Franco)53

22, 23 y 24 Análisis sintáctico VCompiladores - Profr. Edgardo Adrián Franco Martínez

53

Ejemplo SLR

4. Construir la tabla de Análisis Sintáctico

num + x ( ) $ E T F

0

1

2

11

Conjunto de Estados

Símbolo Terminal y No Terminales

Compiladores (Análisis Sintáctico VII-Análisis SLR - Edgardo A. Franco)54

22, 23 y 24 Análisis sintáctico VCompiladores - Profr. Edgardo Adrián Franco Martínez

54

Ejemplo SLR

4. Construir la tabla de Análisis Sintáctico

num + x ( ) $ E T F

0 d5 d4 1 2 3

1 d6 ACEP

2 r2 d7 r2 r2

D [Estado] para los desplazamientosR [# Producción] para las reducciones, se agrega a todos los símbolos del follow.

Compiladores (Análisis Sintáctico VII-Análisis SLR - Edgardo A. Franco)55

22, 23 y 24 Análisis sintáctico VCompiladores - Profr. Edgardo Adrián Franco Martínez

55

Ejemplo SLR

num + x ( ) $ E T F

0 d5 d4 1 2 3

1 d6 ACEP

2 r2 d7 r2 r2

3 r4 r4 r4 r4

4 d5 d4 8 2 3

5 r6 r6 r6 r6

6 d5 d4 9 3

7 d5 d4 10

8 d6 d11

9 r1 d7 r1 r1

10 r3 r3 r3 r3

11 r5 r5 r5 r5

Compiladores (Análisis Sintáctico VII-Análisis SLR - Edgardo A. Franco)56

Tabla SLR

22, 23 y 24 Análisis sintáctico VCompiladores - Profr. Edgardo Adrián Franco Martínez

56

Ejemplo SLR5. Hacer el análisis de sintáctico por medio de la pila y

la tabla de análisis

Pila Entrada

0 num + num x num $

num ‘x’ num ‘+’ num

Colocar 0 como estado inicial

Colocar la cadena de entrada y $

Compiladores (Análisis Sintáctico VII-Análisis SLR - Edgardo A. Franco)57

22, 23 y 24 Análisis sintáctico VCompiladores - Profr. Edgardo Adrián Franco Martínez

57

Ejemplo SLR

Pila Entrada

0

0 num 5

num x num + num $

x num + num $

num

0 d5

Se busca el estado y el símbolo, remplazándolo por el símbolo y el nú-mero del estado y eliminando de la entrada dicho símbolo.

Compiladores (Análisis Sintáctico VII-Análisis SLR - Edgardo A. Franco)58

5. Hacer el análisis de sintáctico por medio de la pila y la tabla de análisis

22, 23 y 24 Análisis sintáctico VCompiladores - Profr. Edgardo Adrián Franco Martínez

58

Ejemplo SLR

Pila Entrada

0

0 num 5

0 F

num x num + num $

x num + num $

x num + num $

X

5 r6

Cuando es una reducción se buscala producción por la que se debe substituir el símbolo-

6 F → num

Compiladores (Análisis Sintáctico VII-Análisis SLR - Edgardo A. Franco)59

5. Hacer el análisis de sintáctico por medio de la pila y la tabla de análisis

22, 23 y 24 Análisis sintáctico VCompiladores - Profr. Edgardo Adrián Franco Martínez

59

Ejemplo SLR

Pila Entrada

0

0 num 5

0 F 3

num x num + num $

x num + num $

x num + num $

F

0 3

Se verifica el siguiente numero a asig-nar , en este caso 0 con F y nos retorna el estado numero 3

Compiladores (Análisis Sintáctico VII-Análisis SLR - Edgardo A. Franco)60

5. Hacer el análisis de sintáctico por medio de la pila y la tabla de análisis

22, 23 y 24 Análisis sintáctico VCompiladores - Profr. Edgardo Adrián Franco Martínez

60

Ejemplo SLR

4. Hacer el análisis de sintáctico por medio de la pila y la tabla de análisis

Pila Entrada

0

0 num 5

0 F 3

0 T 2

0 T 2 x 7

num x num + num $

x num + num $

x num + num $

x num + num $

num + num $

Compiladores (Análisis Sintáctico VII-Análisis SLR - Edgardo A. Franco)61

22, 23 y 24 Análisis sintáctico VCompiladores - Profr. Edgardo Adrián Franco Martínez

61

Ejemplo SLR

4. Proceso de análisis SLR

Pila Entrada

0

0 num 5

0 F 3

0 T 2

0 T 2 x 7

0 T 2 x 7 num 5

0 T 2 x 7 F 10

0 T

. . .

num x num + num $

x num + num $

x num + num $

x num + num $

num + num $

+ num $

+ num $

+ num $

. . . Compiladores (Análisis Sintáctico VII-Análisis SLR - Edgardo A. Franco)

62

22, 23 y 24 Análisis sintáctico VCompiladores - Profr. Edgardo Adrián Franco Martínez

62

Ejemplo SLR

4. Proceso de análisis SLR

Pila Entrada. . .

0 T 2

0 E 1

0 E 1

0 E 1 + 6

0 E 1 + 6 num 5

0 E 1 + 6 F 3

0 E 1 + 6 T

0 E 1 + 6 T 9

0 E

0 E 1

. . .

+ num $

+ num $

+ num $

+ num $

$

$

$

$

$

$

Se acepta la cadena si se logra ingresarpor medio dela unión de es-tado y símboloa la aceptación

Compiladores (Análisis Sintáctico VII-Análisis SLR - Edgardo A. Franco)63

22, 23 y 24 Análisis sintáctico VCompiladores - Profr. Edgardo Adrián Franco Martínez

63

Resumen

Proceso de construcción SLR1. Evaluar la gramática.

2. Calcular el conjunto de estados de la gramática.

3. Calcular el Siguiente (follow)

4. Construir la tabla de Análisis Sintáctico

5. Hacer el análisis de sintáctico por medio de la pila y la tabla de análisis

Compiladores (Análisis Sintáctico VII-Análisis SLR - Edgardo A. Franco)64

22, 23 y 24 Análisis sintáctico VCompiladores - Profr. Edgardo Adrián Franco Martínez

64

Ejercicio 1

• Realizar el análisis SLR para la siguiente gramática con las 3 entradas dadas.

• Gramática para generar paréntesis anidados:

A → (A)|a

a) (((((a)))))

b) ((a)a(a))

c) a(a(a(a)a

Compiladores (Clase 26 “Análisis Sintáctico VIII” - Edgardo A. Franco)65

22, 23 y 24 Análisis sintáctico VCompiladores - Profr. Edgardo Adrián Franco Martínez

65

Ejercicio 2• Realizar el análisis SLR para la siguiente gramática con las 3 entradas dadas.

• Gramática para generar sumas de expresiones:

E → n | E+n

a) n+n+n

b) n++n

c) n+nn

Compiladores (Clase 26 “Análisis Sintáctico VIII” - Edgardo A. Franco)66

22, 23 y 24 Análisis sintáctico VCompiladores - Profr. Edgardo Adrián Franco Martínez

66

Ejercicio 3• Realizar el análisis SLR para la siguiente gramática con las 3 entradas dadas.

• Gramática para generar suma y multiplicación de números, aceptando los paréntesis

E → E + E | E * E| ( E ) | num

a) num*num+num

b) (num+num)*num

c) num(*)num

Compiladores (Clase 26 “Análisis Sintáctico VIII” - Edgardo A. Franco)67

22, 23 y 24 Análisis sintáctico VCompiladores - Profr. Edgardo Adrián Franco Martínez

67

Ejercicio 4• Realizar el análisis SLR para la gramática G(Vt, Vn,

Φ, S)

• Analice la cadena: wyyyz

Compiladores (Clase 26 “Análisis Sintáctico VIII” - Edgardo A. Franco)68

{ }{ }

ES

YXEV

zyxwV

zyYY

zyXX

xYwXE

N

T

=

=

,,

,,,

22, 23 y 24 Análisis sintáctico VCompiladores - Profr. Edgardo Adrián Franco Martínez

68

•Entregar víapágina web con el titulo"Ejercicios SLR", a más tardar el díaViernes 03 de junio de 2011 a las23:59:59hrs.

•Deberánestar resueltos a detalle y debenserenformatodigital.

69Compiladores (Análisis Sintáctico V - Edgardo A. Franco)

Ejercicios 3 y 4

22, 23 y 24 Análisis sintáctico VCompiladores - Profr. Edgardo Adrián Franco Martínez

69