SlideShare una empresa de Scribd logo
1 de 33
Organización de
Lenguajes y
Compiladores 1
 Método de análisis sintáctico
LL1
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.
Método Descendente LL(1)
Ninguna gramática
ambigua o recursiva
por la izquierda puede
ser LL(1).
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
LL(1)
Pasos para el Método LL(1)
1. Escribir adecuadamente la gramática
2. Calcular el First y el Follow
3. Construir la tabla de Análisis Sintáctico
4. Hacer el análisis de sintáctico por medio
de la pila y la tabla de análisis
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
Pasos para el Método LL(1)
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)
2. Calcular el First / Primero
Símbolo Follow/Siguiente
Si X
es símbolo inicial
Follow ( X ) = { $ }
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)
Si X → α Y
Producción
Añadir el Follow(X) a Follow(Y)
2. Calcular el Follow / Siguiente
Pasos para el Método LL(1)
Pasos para el Método LL(1)
3. Construir la tabla de Análisis Sintáctico
Símbolos
No Terminales
Símbolo Terminal
Pasos para el Método LL(1)
3. Construir la tabla de Análisis Sintáctico
1. Para cada A → α, ejecute 2 y 3.
2. Para cada terminal a del First (α), añádase
A → α en la posición M[A , a].
3. Si ε esta en el First (α), añádase A → ε a
M[A , b ] para cada terminal b de Follow(A).
4. Cada entrada vacía hágase ERROR.
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.
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
13
Pila Entrada
. .
.
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)
Ejemplo LL(1)
2. Cálculo del First / Primero
S → ‘(‘ A ‘)’
A → C B
B → ‘;’ A | ε
C → ‘x’ | S
Símbolo
No Terminal First
S (
A
B ;
C x
Para calcular el first Se usan Los no terminales del lado
izquierdo de la producción
Si X
es terminal
First(X) = {x}
Ejemplo LL(1)
2. Cálculo del First / Primero
S → ‘(‘ A ‘)’
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
Ejemplo LL(1)
2. Cálculo del First / Primero
S → ‘(‘ A ‘)’
A → C B
B → ‘;’ A | ε
C → ‘x’ | S
Símbolo
No Terminal First
S (
A x , (
B ; , ε
C x , (
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
Ejemplo LL(1)
2. Cálculo del First / Primero
S → ‘(‘ A ‘)’
A → C B
B → ‘;’ A | ε
C → ‘x’ | S
Símbolo
No Terminal First
S (
A x , (
B ; , ε
C x , (
Ejemplo LL(1)
2. Cálculo del Follow / Siguiente
S → ‘(‘ A ‘)’
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
Ejemplo LL(1)
2. Cálculo del Follow / Siguiente
S → ‘(‘ A ‘)’
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
Ejemplo LL(1)
2. Cálculo del Follow / Siguiente
S → ‘(‘ A ‘)’
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
Ejemplo LL(1)
2. Cálculo del Follow / Siguiente
S → ‘(‘ A ‘)’
A → C B
B → ‘;’ A | ε
C → ‘x’ | S
Símbolo
No Terminal Follow
S $
A )
B )
C ; , )
Se usan Los no terminales del lado
derecho de la producción
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)
First(B) ; , ε
2. Para cada terminal a del First (α),
añádase A → α en la posición
M[A , a].
Ejemplo LL(1)
Construir la tabla de Análisis Sintáctico
Símbolo
No Terminal
First
S (
A x , (
B ; , ε
C x , (
; x ( ) $
S S  ( A )
A A  CB A  CB
B B  ; A
C C  x C  S
S → ‘(‘ A ‘)’
A → C B
B → ‘;’ A | ε
C → ‘x’ | S
3. Si ε esta en el First (α), añádase A → ε
a M[A , b ] para cada terminal b de
Follow(A).
Ejemplo LL(1)
Construir la tabla de Análisis Sintáctico
Símbolo
No Terminal
First
B ; , ε
; x ( ) $
S S  ( A )
A A  CB A  CB
B B  ; A B  ε
C C  x C  S
S → ‘(‘ A ‘)’
A → C B
B → ‘;’ A | ε
C → ‘x’ | S
Símbolo
No Terminal
Follow
B )
4. Cada entrada vacía hágase
ERROR
Ejemplo LL(1)
Construir la tabla de Análisis Sintáctico
; x ( ) $
S ERROR ERROR S  ( A ) ERROR ERROR
A ERROR A  CB A  CB ERROR ERROR
B B  ; A ERROR ERROR B  ε ERROR
C ERROR C  x C  S ERROR ERROR
3. Construir la tabla de Análisis Sintáctico
Ejemplo LL(1)
; x ( ) $
S ERROR ERROR S  ( A ) ERROR ERROR
A ERROR A  CB A  CB ERROR ERROR
B B  ; A ERROR ERROR B  ε ERROR
C ERROR C  x C  S ERROR ERROR
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
$ S ( x ; ( x ) ) $
( x ; ( x ) )
Colocar $ y
el símbolo inicial
Colocar la cadena
de entrada y $
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 )
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 ) ) $
( x ; ( x ) ) $
S  ( A )
Cuando se llega a una coincidencia, se eliminan ambos,
y se continua con el análisis
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 ) ) $
( x ; ( x ) ) $
S  ( A )
Cuando se llega a una coincidencia, se eliminan ambos,
y se continua con el análisis
Pila Entrada Acción
$ S
$ ) A
$ ) B C
$ ) B x
$ ) B
$ ) A ;
$ ) A
$ ) B C
$ ) B S
$ ) B ) A (
$ ) B ) A
$ ) B ) B C
$ ) B ) B x
$ ) B ) B
$ ) B )
$ ) B
$ )
$
( x ; ( x ) ) $
x ; ( x ) ) $
x ; ( x ) ) $
x ; ( x ) ) $
; ( x ) ) $
; ( x ) ) $
( x ) ) $
( x ) ) $
( x ) ) $
( x ) ) $
x ) ) $
x ) ) $
x ) ) $
) ) $
) ) $
) $
) $
$
S  ( A )
A  C B
C  x
B  ; A
A  C B
C  S
S  ( A )
A  C B
C  x
B  ε
B  ε
Pila Entrada Acción
$ S
$ ) A
$ ) B C
$ ) B x
$ ) B
$ ) A ;
$ ) A
$ ) B C
$ ) B S
$ ) B ) A (
$ ) B ) A
$ ) B ) B C
$ ) B ) B x
$ ) B ) B
$ ) B )
$ ) B
$ )
$
( x ; ( x ) ) $
x ; ( x ) ) $
x ; ( x ) ) $
x ; ( x ) ) $
; ( x ) ) $
; ( x ) ) $
( x ) ) $
( x ) ) $
( x ) ) $
( x ) ) $
x ) ) $
x ) ) $
x ) ) $
) ) $
) ) $
) $
) $
$
S  ( A )
A  C B
C  x
B  ; A
A  C B
C  S
S  ( A )
A  C B
C  x
B  ε
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.
RESUMEN
Pasos para el método LL1
1. Escribir adecuadamente la gramática
2. Calcular el First y el Follow
3. Construir la tabla de Análisis Sintáctico
4. Hacer el análisis de sintáctico por medio
de la pila y la tabla de análisis

Más contenido relacionado

La actualidad más candente

Analisis Lexico
Analisis LexicoAnalisis Lexico
Analisis Lexico
FARIDROJAS
 
Lenguaje c diapositivas
Lenguaje c diapositivasLenguaje c diapositivas
Lenguaje c diapositivas
starduslex
 

La actualidad más candente (20)

Gramatica libre de contexto
Gramatica libre de contextoGramatica libre de contexto
Gramatica libre de contexto
 
Syntax analysis
Syntax analysisSyntax analysis
Syntax analysis
 
Jerarquia de chomsky
Jerarquia de chomskyJerarquia de chomsky
Jerarquia de chomsky
 
Lenguajes no regulares
Lenguajes no regularesLenguajes no regulares
Lenguajes no regulares
 
Lex & yacc
Lex & yaccLex & yacc
Lex & yacc
 
Top down parsing
Top down parsingTop down parsing
Top down parsing
 
COMPILER DESIGN
COMPILER DESIGNCOMPILER DESIGN
COMPILER DESIGN
 
Syntax analyzer
Syntax analyzerSyntax analyzer
Syntax analyzer
 
Algebra relacional
Algebra relacionalAlgebra relacional
Algebra relacional
 
Analisis Lexico
Analisis LexicoAnalisis Lexico
Analisis Lexico
 
Tipos de lenguaje formal según Chomsky
Tipos de lenguaje formal según ChomskyTipos de lenguaje formal según Chomsky
Tipos de lenguaje formal según Chomsky
 
Operator Precedence and Associativity
Operator Precedence and AssociativityOperator Precedence and Associativity
Operator Precedence and Associativity
 
Analisis sintactico
Analisis sintacticoAnalisis sintactico
Analisis sintactico
 
Flex y Bison
Flex y BisonFlex y Bison
Flex y Bison
 
Top down parsing
Top down parsingTop down parsing
Top down parsing
 
4_5802928814682016556.pptx
4_5802928814682016556.pptx4_5802928814682016556.pptx
4_5802928814682016556.pptx
 
Semantic analysis
Semantic analysisSemantic analysis
Semantic analysis
 
Introducción a los Punteros en el lenguaje C
Introducción a los Punteros en el lenguaje CIntroducción a los Punteros en el lenguaje C
Introducción a los Punteros en el lenguaje C
 
Lenguaje c diapositivas
Lenguaje c diapositivasLenguaje c diapositivas
Lenguaje c diapositivas
 
Traductores de lenguaje
Traductores de lenguajeTraductores de lenguaje
Traductores de lenguaje
 

Destacado

Mujeres lectoras impenitentes
Mujeres lectoras impenitentesMujeres lectoras impenitentes
Mujeres lectoras impenitentes
luiscarbajo
 
Hardware y software
Hardware y softwareHardware y software
Hardware y software
PalomaRguez2
 
Yachay 25
Yachay 25Yachay 25
Yachay 25
Jean Px
 

Destacado (17)

Sentencia1
Sentencia1Sentencia1
Sentencia1
 
Parcial de informática
Parcial de informáticaParcial de informática
Parcial de informática
 
Популяризація читання в рамках проекту «Жива книга. Людина-сенсація»
Популяризація читання в рамках проекту «Жива книга. Людина-сенсація»Популяризація читання в рамках проекту «Жива книга. Людина-сенсація»
Популяризація читання в рамках проекту «Жива книга. Людина-сенсація»
 
El sistema circulatorio
El sistema circulatorioEl sistema circulatorio
El sistema circulatorio
 
Currency high lights 27.10.16
Currency high lights 27.10.16Currency high lights 27.10.16
Currency high lights 27.10.16
 
Mootes mql 2013_slideshare
Mootes mql 2013_slideshareMootes mql 2013_slideshare
Mootes mql 2013_slideshare
 
Towards Aggregate Programming in Scala
Towards Aggregate Programming in ScalaTowards Aggregate Programming in Scala
Towards Aggregate Programming in Scala
 
Alyson orozco manuela gallego
Alyson orozco manuela gallegoAlyson orozco manuela gallego
Alyson orozco manuela gallego
 
Ultrabook y la Historia de la Computadora
Ultrabook y la Historia de la ComputadoraUltrabook y la Historia de la Computadora
Ultrabook y la Historia de la Computadora
 
Mujeres lectoras impenitentes
Mujeres lectoras impenitentesMujeres lectoras impenitentes
Mujeres lectoras impenitentes
 
Mario y jorge
Mario y jorgeMario y jorge
Mario y jorge
 
Hardware y software
Hardware y softwareHardware y software
Hardware y software
 
HR Special Issue Oct 2016
HR Special Issue Oct 2016HR Special Issue Oct 2016
HR Special Issue Oct 2016
 
Yachay 25
Yachay 25Yachay 25
Yachay 25
 
Estimados 6º (2)
Estimados 6º (2)Estimados 6º (2)
Estimados 6º (2)
 
Juli y Mily. operadores de pc
Juli y Mily. operadores de pcJuli y Mily. operadores de pc
Juli y Mily. operadores de pc
 
Medidores cristina correa melissa montes
Medidores cristina correa melissa montes Medidores cristina correa melissa montes
Medidores cristina correa melissa montes
 

Similar a R94315

jaisan
jaisanjaisan
jaisan
jai
 
Inecuaciones cuadráticas
Inecuaciones cuadráticasInecuaciones cuadráticas
Inecuaciones cuadráticas
franmorav
 
Circuitos digitales ii
Circuitos digitales iiCircuitos digitales ii
Circuitos digitales ii
jesuseperez
 

Similar a R94315 (20)

Análisis Sintactico Predictivo No Recursivo
Análisis Sintactico Predictivo No RecursivoAnálisis Sintactico Predictivo No Recursivo
Análisis Sintactico Predictivo No Recursivo
 
Presentación 2014 profe gabriel
Presentación 2014 profe gabrielPresentación 2014 profe gabriel
Presentación 2014 profe gabriel
 
Sisitemas prac 4
Sisitemas  prac 4Sisitemas  prac 4
Sisitemas prac 4
 
Tema3 circuitos puertas_lógicas_y_álgebra_de_boole
Tema3 circuitos puertas_lógicas_y_álgebra_de_booleTema3 circuitos puertas_lógicas_y_álgebra_de_boole
Tema3 circuitos puertas_lógicas_y_álgebra_de_boole
 
Apuntes generación de codigo intermedio
Apuntes generación de codigo intermedioApuntes generación de codigo intermedio
Apuntes generación de codigo intermedio
 
A Sintactico Descendente
A Sintactico DescendenteA Sintactico Descendente
A Sintactico Descendente
 
Tutorial De Matlab
Tutorial De MatlabTutorial De Matlab
Tutorial De Matlab
 
Matematicas discretas
Matematicas discretasMatematicas discretas
Matematicas discretas
 
Ejercicios (1)
Ejercicios (1)Ejercicios (1)
Ejercicios (1)
 
jaisan
jaisanjaisan
jaisan
 
Inecuaciones cuadráticas
Inecuaciones cuadráticasInecuaciones cuadráticas
Inecuaciones cuadráticas
 
Modulo 4 funciones
Modulo 4 funcionesModulo 4 funciones
Modulo 4 funciones
 
Apuntes electr digital
Apuntes electr digitalApuntes electr digital
Apuntes electr digital
 
Compiladores, Analisis Lexico, Tabla de Transiciones
Compiladores, Analisis Lexico, Tabla de TransicionesCompiladores, Analisis Lexico, Tabla de Transiciones
Compiladores, Analisis Lexico, Tabla de Transiciones
 
Clases de sistema de ecuaciones
Clases de sistema de ecuacionesClases de sistema de ecuaciones
Clases de sistema de ecuaciones
 
Practicas electronica digital 1.tese.ag
Practicas electronica digital 1.tese.ag Practicas electronica digital 1.tese.ag
Practicas electronica digital 1.tese.ag
 
Circuitos digitales ii
Circuitos digitales iiCircuitos digitales ii
Circuitos digitales ii
 
Autómata de pila (AP)
Autómata de pila (AP)Autómata de pila (AP)
Autómata de pila (AP)
 
Compiladores5_Benjamin133467.pdf
Compiladores5_Benjamin133467.pdfCompiladores5_Benjamin133467.pdf
Compiladores5_Benjamin133467.pdf
 
Trabajo matlab
Trabajo matlabTrabajo matlab
Trabajo matlab
 

R94315

  • 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
  • 6. Pasos para el Método LL(1) 1. Escribir adecuadamente la gramática 2. Calcular el First y el Follow 3. Construir la tabla de Análisis Sintáctico 4. 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) 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) 2. Calcular el First / Primero
  • 9. Símbolo Follow/Siguiente Si X es símbolo inicial Follow ( X ) = { $ } 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) Si X → α Y Producción Añadir el Follow(X) a Follow(Y) 2. Calcular el Follow / Siguiente Pasos para el Método LL(1)
  • 10. Pasos para el Método LL(1) 3. Construir la tabla de Análisis Sintáctico Símbolos No Terminales Símbolo Terminal
  • 11. Pasos para el Método LL(1) 3. Construir la tabla de Análisis Sintáctico 1. Para cada A → α, ejecute 2 y 3. 2. Para cada terminal a del First (α), añádase A → α en la posición M[A , a]. 3. Si ε esta en el First (α), añádase A → ε a M[A , b ] para cada terminal b de Follow(A). 4. 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 13 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 S → ‘(‘ A ‘)’ A → C B B → ‘;’ A | ε C → ‘x’ | S Símbolo No Terminal First S ( A B ; C x Para calcular el first Se usan Los no terminales del lado izquierdo de la producción Si X es terminal First(X) = {x}
  • 16. Ejemplo LL(1) 2. Cálculo del First / Primero S → ‘(‘ A ‘)’ 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 S → ‘(‘ A ‘)’ A → C B B → ‘;’ A | ε C → ‘x’ | S Símbolo No Terminal First S ( A x , ( B ; , ε C x , ( 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 S → ‘(‘ A ‘)’ A → C B B → ‘;’ A | ε C → ‘x’ | S Símbolo No Terminal First S ( A x , ( B ; , ε C x , (
  • 19. Ejemplo LL(1) 2. Cálculo del Follow / Siguiente S → ‘(‘ A ‘)’ 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 S → ‘(‘ A ‘)’ 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 S → ‘(‘ A ‘)’ 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 S → ‘(‘ A ‘)’ A → C B B → ‘;’ A | ε C → ‘x’ | S Símbolo No Terminal Follow S $ A ) B ) C ; , ) Se usan Los no terminales del lado derecho de la producción 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) First(B) ; , ε
  • 23. 2. Para cada terminal a del First (α), añádase A → α en la posición M[A , a]. Ejemplo LL(1) Construir la tabla de Análisis Sintáctico Símbolo No Terminal First S ( A x , ( B ; , ε C x , ( ; x ( ) $ S S  ( A ) A A  CB A  CB B B  ; A C C  x C  S S → ‘(‘ A ‘)’ A → C B B → ‘;’ A | ε C → ‘x’ | S
  • 24. 3. Si ε esta en el First (α), añádase A → ε a M[A , b ] para cada terminal b de Follow(A). Ejemplo LL(1) Construir la tabla de Análisis Sintáctico Símbolo No Terminal First B ; , ε ; x ( ) $ S S  ( A ) A A  CB A  CB B B  ; A B  ε C C  x C  S S → ‘(‘ A ‘)’ A → C B B → ‘;’ A | ε C → ‘x’ | S Símbolo No Terminal Follow B )
  • 25. 4. Cada entrada vacía hágase ERROR Ejemplo LL(1) Construir la tabla de Análisis Sintáctico ; x ( ) $ S ERROR ERROR S  ( A ) ERROR ERROR A ERROR A  CB A  CB ERROR ERROR B B  ; A ERROR ERROR B  ε ERROR C ERROR C  x C  S ERROR ERROR
  • 26. 3. Construir la tabla de Análisis Sintáctico Ejemplo LL(1) ; x ( ) $ S ERROR ERROR S  ( A ) ERROR ERROR A ERROR A  CB A  CB ERROR ERROR B B  ; A ERROR ERROR B  ε ERROR C ERROR C  x C  S ERROR ERROR
  • 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 Pila Entrada $ S ( x ; ( x ) ) $ ( 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 ) ) $ ( 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 ) ) $ ( 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 ; $ ) A $ ) B C $ ) B S $ ) B ) A ( $ ) B ) A $ ) B ) B C $ ) B ) B x $ ) B ) B $ ) B ) $ ) B $ ) $ ( x ; ( x ) ) $ x ; ( x ) ) $ x ; ( x ) ) $ x ; ( x ) ) $ ; ( x ) ) $ ; ( x ) ) $ ( x ) ) $ ( x ) ) $ ( x ) ) $ ( x ) ) $ x ) ) $ x ) ) $ x ) ) $ ) ) $ ) ) $ ) $ ) $ $ S  ( A ) A  C B C  x B  ; A A  C B C  S S  ( A ) A  C B C  x B  ε B  ε
  • 32. Pila Entrada Acción $ S $ ) A $ ) B C $ ) B x $ ) B $ ) A ; $ ) A $ ) B C $ ) B S $ ) B ) A ( $ ) B ) A $ ) B ) B C $ ) B ) B x $ ) B ) B $ ) B ) $ ) B $ ) $ ( x ; ( x ) ) $ x ; ( x ) ) $ x ; ( x ) ) $ x ; ( x ) ) $ ; ( x ) ) $ ; ( x ) ) $ ( x ) ) $ ( x ) ) $ ( x ) ) $ ( x ) ) $ x ) ) $ x ) ) $ x ) ) $ ) ) $ ) ) $ ) $ ) $ $ S  ( A ) A  C B C  x B  ; A A  C B C  S S  ( A ) A  C B C  x B  ε 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 1. Escribir adecuadamente la gramática 2. Calcular el First y el Follow 3. Construir la tabla de Análisis Sintáctico 4. Hacer el análisis de sintáctico por medio de la pila y la tabla de análisis