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

LENGUAJES LIBRES DE CONTEXTO Y GRAMATICA LIBRES DE CONTEXTO
LENGUAJES LIBRES DE CONTEXTO Y GRAMATICA LIBRES DE CONTEXTO LENGUAJES LIBRES DE CONTEXTO Y GRAMATICA LIBRES DE CONTEXTO
LENGUAJES LIBRES DE CONTEXTO Y GRAMATICA LIBRES DE CONTEXTO Guillermo Iván Prisco Pérez
 
8-Practice problems on operator precedence parser-24-05-2023.docx
8-Practice problems on operator precedence parser-24-05-2023.docx8-Practice problems on operator precedence parser-24-05-2023.docx
8-Practice problems on operator precedence parser-24-05-2023.docxvenkatapranaykumarGa
 
FORMAS NORMALES DE GREIBACH
FORMAS NORMALES DE GREIBACHFORMAS NORMALES DE GREIBACH
FORMAS NORMALES DE GREIBACHCarlos Manuel
 
Compiler Design LR parsing SLR ,LALR CLR
Compiler Design LR parsing SLR ,LALR CLRCompiler Design LR parsing SLR ,LALR CLR
Compiler Design LR parsing SLR ,LALR CLRRiazul Islam
 
Arduino UNO로 키보드 만들기
Arduino UNO로 키보드 만들기Arduino UNO로 키보드 만들기
Arduino UNO로 키보드 만들기Chae Yeon Cho
 
Parsing in Compiler Design
Parsing in Compiler DesignParsing in Compiler Design
Parsing in Compiler DesignAkhil Kaushik
 
Regular expressions-Theory of computation
Regular expressions-Theory of computationRegular expressions-Theory of computation
Regular expressions-Theory of computationBipul Roy Bpl
 
2.4.2 Clasificación de árboles.pdf
2.4.2 Clasificación de árboles.pdf2.4.2 Clasificación de árboles.pdf
2.4.2 Clasificación de árboles.pdfFernando Solis
 
Introduction to fa and dfa
Introduction to fa  and dfaIntroduction to fa  and dfa
Introduction to fa and dfadeepinderbedi
 
Finite automata(For college Seminars)
Finite automata(For college Seminars)Finite automata(For college Seminars)
Finite automata(For college Seminars)Naman Joshi
 
Introduction to Algorithms and Asymptotic Notation
Introduction to Algorithms and Asymptotic NotationIntroduction to Algorithms and Asymptotic Notation
Introduction to Algorithms and Asymptotic NotationAmrinder Arora
 
Geometría Computacional: Objetos y problemas básicos
Geometría Computacional: Objetos y problemas básicosGeometría Computacional: Objetos y problemas básicos
Geometría Computacional: Objetos y problemas básicosMiguel Sancho
 
Lenguajes libre de contexto
Lenguajes libre de contextoLenguajes libre de contexto
Lenguajes libre de contextoVerónica Es'Loo
 
Top Down Parsing, Predictive Parsing
Top Down Parsing, Predictive ParsingTop Down Parsing, Predictive Parsing
Top Down Parsing, Predictive ParsingTanzeela_Hussain
 
Formal Languages and Automata Theory unit 3
Formal Languages and Automata Theory unit 3Formal Languages and Automata Theory unit 3
Formal Languages and Automata Theory unit 3Srimatre K
 

La actualidad más candente (20)

LENGUAJES LIBRES DE CONTEXTO Y GRAMATICA LIBRES DE CONTEXTO
LENGUAJES LIBRES DE CONTEXTO Y GRAMATICA LIBRES DE CONTEXTO LENGUAJES LIBRES DE CONTEXTO Y GRAMATICA LIBRES DE CONTEXTO
LENGUAJES LIBRES DE CONTEXTO Y GRAMATICA LIBRES DE CONTEXTO
 
8-Practice problems on operator precedence parser-24-05-2023.docx
8-Practice problems on operator precedence parser-24-05-2023.docx8-Practice problems on operator precedence parser-24-05-2023.docx
8-Practice problems on operator precedence parser-24-05-2023.docx
 
FORMAS NORMALES DE GREIBACH
FORMAS NORMALES DE GREIBACHFORMAS NORMALES DE GREIBACH
FORMAS NORMALES DE GREIBACH
 
Compiler Design LR parsing SLR ,LALR CLR
Compiler Design LR parsing SLR ,LALR CLRCompiler Design LR parsing SLR ,LALR CLR
Compiler Design LR parsing SLR ,LALR CLR
 
Context free grammar
Context free grammar Context free grammar
Context free grammar
 
Arduino UNO로 키보드 만들기
Arduino UNO로 키보드 만들기Arduino UNO로 키보드 만들기
Arduino UNO로 키보드 만들기
 
Parsing in Compiler Design
Parsing in Compiler DesignParsing in Compiler Design
Parsing in Compiler Design
 
Regular expressions-Theory of computation
Regular expressions-Theory of computationRegular expressions-Theory of computation
Regular expressions-Theory of computation
 
Subrutinas
SubrutinasSubrutinas
Subrutinas
 
Tema4
Tema4Tema4
Tema4
 
2.4.2 Clasificación de árboles.pdf
2.4.2 Clasificación de árboles.pdf2.4.2 Clasificación de árboles.pdf
2.4.2 Clasificación de árboles.pdf
 
LISTAS
LISTASLISTAS
LISTAS
 
Introduction to fa and dfa
Introduction to fa  and dfaIntroduction to fa  and dfa
Introduction to fa and dfa
 
Finite automata(For college Seminars)
Finite automata(For college Seminars)Finite automata(For college Seminars)
Finite automata(For college Seminars)
 
Introduction to Algorithms and Asymptotic Notation
Introduction to Algorithms and Asymptotic NotationIntroduction to Algorithms and Asymptotic Notation
Introduction to Algorithms and Asymptotic Notation
 
Geometría Computacional: Objetos y problemas básicos
Geometría Computacional: Objetos y problemas básicosGeometría Computacional: Objetos y problemas básicos
Geometría Computacional: Objetos y problemas básicos
 
Automatas de estado finito
Automatas de estado finitoAutomatas de estado finito
Automatas de estado finito
 
Lenguajes libre de contexto
Lenguajes libre de contextoLenguajes libre de contexto
Lenguajes libre de contexto
 
Top Down Parsing, Predictive Parsing
Top Down Parsing, Predictive ParsingTop Down Parsing, Predictive Parsing
Top Down Parsing, Predictive Parsing
 
Formal Languages and Automata Theory unit 3
Formal Languages and Automata Theory unit 3Formal Languages and Automata Theory unit 3
Formal Languages and Automata Theory unit 3
 

Destacado

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

Analisis sintactico10
Analisis sintactico10Analisis sintactico10
Analisis sintactico10Emanuel Gs
 
Análisis Sintactico Predictivo No Recursivo
Análisis Sintactico Predictivo No RecursivoAnálisis Sintactico Predictivo No Recursivo
Análisis Sintactico Predictivo No RecursivoLeonel Morales Díaz
 
Presentación 2014 profe gabriel
Presentación 2014 profe gabrielPresentación 2014 profe gabriel
Presentación 2014 profe gabrielEnrique Morales
 
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_boolehacaveks
 
Apuntes generación de codigo intermedio
Apuntes generación de codigo intermedioApuntes generación de codigo intermedio
Apuntes generación de codigo intermedioHumano Terricola
 
Matematicas discretas
Matematicas discretasMatematicas discretas
Matematicas discretascfleon
 
jaisan
jaisanjaisan
jaisanjai
 
Inecuaciones cuadráticas
Inecuaciones cuadráticasInecuaciones cuadráticas
Inecuaciones cuadráticasfranmorav
 
Apuntes electr digital
Apuntes electr digitalApuntes electr digital
Apuntes electr digitalDanos Pinto
 
Practicas electronica digital 1.tese.ag
Practicas electronica digital 1.tese.ag Practicas electronica digital 1.tese.ag
Practicas electronica digital 1.tese.ag Jose Agustin Estrada
 
Circuitos digitales ii
Circuitos digitales iiCircuitos digitales ii
Circuitos digitales iijesuseperez
 
Autómata de pila (AP)
Autómata de pila (AP)Autómata de pila (AP)
Autómata de pila (AP)Rodrigo GC
 

Similar a R94315 (20)

Analisis sintactico10
Analisis sintactico10Analisis sintactico10
Analisis sintactico10
 
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
 

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