0
Análisis Sintáctico
Analizadores Descendentes
Método Predictivo Rercursivo
¿Que es un análisis descendente?
Es una técnica que intenta comprobar si una cadena x
pertenece al lenguaje definido por u...
Analizadores predictivos
• Se determina qué regla aplicar a partir de un análisis de los
primeros tokens a la entrada
• So...
Método Predictivo Recursivo
Analizadores predictivos LL (1)
• Determinan que regla de producción aplicar encada paso en
fu...
Analizadores LL (K)
Analizadores LL (1)
• Para aplicar el análisis descendente predictivo LL(1) se asocia
a cada regla de producción un conjun...
Análisis predictivo LL (1)
• Para aplicar el análisis predictivo LL (1) es necesario que los
conjuntos de predicción de to...
Condiciones LL (1)
• Para cumplir la condición LL (1) la gramática debe satisfacer
necesariamente 3 requisitos:
› No ambig...
Analizadores LL (1)
Implementación Analizadores LL (1)
• En cada paso del proceso de derivación de la sentencia de
entrada se realiza una pred...
Implementación Analizadores LL (1)
• Nos restringimos al caso de métodos deterministas (no hay
vuelta atrás) teniendo en c...
Implementación Analizadores LL (1)
Procedimiento Parea(terminal)
Inicio
si pre análisis == terminal entonces
pre análisis=...
Implementación Analizadores LL (1)
Procedimiento A()
inicio
según pre análisis está en:
PRIMEROS(a1): {proceder según alte...
Implementación Analizadores LL (1)
• Gramática que se va a implementar:
E --> T E’
E’--> + T E’ | - T E’ | €
T --> F T’
T’...
Implementación Analizadores LL (1)
Procedimiento S() {
Expresion();
Parea(TKN #);
}
Procedimiento Expresion() {
Termino();...
Implementación Analizadores LL (1)
Procedimiento Termino() {
Factor();
Termino_Prima();
}
Procedimiento Termino_Prima(){
s...
Implementación Analizadores LL (1)
Procedimiento Factor() {
según pre análisis está en:
{TKN ABREPAR}: Parea(TKN ABREPAR);...
Upcoming SlideShare
Loading in...5
×

Analisis sintáctico

1,032

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
1,032
On Slideshare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
16
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Transcript of "Analisis sintáctico"

  1. 1. Análisis Sintáctico Analizadores Descendentes Método Predictivo Rercursivo
  2. 2. ¿Que es un análisis descendente? Es una técnica que intenta comprobar si una cadena x pertenece al lenguaje definido por una gramática aplicando los siguientes criterios: • Partir del axioma de la gramática • Escoger reglas gramaticales estratégicamente • Hacer derivaciones por la izquierda (Left Most Derivation) • Procesar la entrada de izquierda a derecha • Obtener el árbol de análisis sintáctico o error
  3. 3. Analizadores predictivos • Se determina qué regla aplicar a partir de un análisis de los primeros tokens a la entrada • Son capaces de decidir qué regla de producción aplicar a cada paso en función de los elementos terminales que se encuentran en la sentencia de entrada • Como consecuencia se consigue un proceso de análisis con complejidad lineal O (n) con respecto al tamaño del problema • Estos analizadores son llamados analizadores LL (K)
  4. 4. Método Predictivo Recursivo Analizadores predictivos LL (1) • Determinan que regla de producción aplicar encada paso en función del token que se encuentra en cada momento en la cabeza de lectura. Analizadores predictivos LL (k) • Determinan que regla de producción aplicar en cada paso en función de los k primeros tokens que se encuentra en cada momento en la cabeza de lectura.
  5. 5. Analizadores LL (K)
  6. 6. Analizadores LL (1) • Para aplicar el análisis descendente predictivo LL(1) se asocia a cada regla de producción un conjunto de predicción. • El conjunto de predicción de una regla está formado por la colección de todos los posibles símbolos terminales que es necesario encontrar en la sentencia de entrada para poder aplicar dicha regla • De todas las reglas candidatas para el no terminal en curso se escoge aquella que contiene en su conjunto de predicción el terminal a la entrada.
  7. 7. Análisis predictivo LL (1) • Para aplicar el análisis predictivo LL (1) es necesario que los conjuntos de predicción de todas las reglas con un mismo símbolo terminal sean disjuntas entre sí.
  8. 8. Condiciones LL (1) • Para cumplir la condición LL (1) la gramática debe satisfacer necesariamente 3 requisitos: › No ambigua › Factorizada por la izquierda › No recursiva por la izquierda
  9. 9. Analizadores LL (1)
  10. 10. Implementación Analizadores LL (1) • En cada paso del proceso de derivación de la sentencia de entrada se realiza una predicción de la posible producción a aplicar • Se comprueba si existe una concordancia entre el símbolo actual en la entrada con el primer terminal que se puede generar a partir de esa regla de producción • Si existe esta concordancia se avanza en la entrada y en el árbol de derivación, en caso contrario se vuelve hacia atrás y se elige una nueva regla de derivación
  11. 11. Implementación Analizadores LL (1) • Nos restringimos al caso de métodos deterministas (no hay vuelta atrás) teniendo en cuenta un solo símbolo de pre análisis (componente léxico que se está analizando en la cadena de entrada en ese momento) • Conocemos exactamente en todo momento que producción aplicar. El símbolo de pre análisis se actualiza cada vez que se produce una concordancia.
  12. 12. Implementación Analizadores LL (1) Procedimiento Parea(terminal) Inicio si pre análisis == terminal entonces pre análisis=siguiente token sino error sintáctico fin
  13. 13. Implementación Analizadores LL (1) Procedimiento A() inicio según pre análisis está en: PRIMEROS(a1): {proceder según alternativa a1 } PRIMEROS(a2): {proceder según alternativa a2 } ... PRIMEROS(an): {proceder según alternativa an } fin según si pre análisis no pertenece a ningún PRIMEROS(ai) entonces error sintáctico, excepto si existe la alternativa A -> € en cuyo caso no se hace nada fin
  14. 14. Implementación Analizadores LL (1) • Gramática que se va a implementar: E --> T E’ E’--> + T E’ | - T E’ | € T --> F T’ T’--> * F T’ | / F T’ | € F --> (E) | num | id
  15. 15. Implementación Analizadores LL (1) Procedimiento S() { Expresion(); Parea(TKN #); } Procedimiento Expresion() { Termino(); Expresion_Prima(); } Procedimiento Expresion_Prima() { según pre análisis está en: {TKN MAS}: Parea(TKN MAS); Termino(); Expresion_Prima(); {TKN MENOS}: Parea(TKN MENOS); Termino(); Expresion_Prima(); si no está en ninguno de los anteriores entonces no hacer nada fin según }
  16. 16. Implementación Analizadores LL (1) Procedimiento Termino() { Factor(); Termino_Prima(); } Procedimiento Termino_Prima(){ según pre análisis está en: {TKN POR}: Parea(TKN POR); Factor(); Termino_Prima(); {TKN DIV}: Parea(TKN DIV); Factor(); Termino_Prima(); si no está en ninguno de los anteriores entonces no hacer nada fin según }
  17. 17. Implementación Analizadores LL (1) Procedimiento Factor() { según pre análisis está en: {TKN ABREPAR}: Parea(TKN ABREPAR); Expresion(); Parea(TKN CIERRAPAR); {TKN NUM}: Parea(TKN NUM); {TKN ID}: Parea(TKN ID); si no está en ninguno de los anteriores entonces error(); fin según }
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×