Documente Academic
Documente Profesional
Documente Cultură
Descripcin Funcional
El analizador sintctico o parser verifica que la secuencia de tokens que recibe del scanner, estn debidamente combinados de tal manera que pueda ser generada con la gramtica libre de contexto que representa las reglas sintcticas del lenguaje.
27/11/2012
Descripcin Funcional
27/11/2012
10
27/11/2012
13
Como se logro generar dicha cadena se dice que si cumple con las reglas sintcticas del lenguaje (gramtica).
27/11/2012 15
Derivacin ms a la izquierda
27/11/2012 18
Gramticas Ambiguas
Una gramtica es ambigua si genera ms de un rbol sintctico para alguna cadena. Equivalente, existe ms de una derivacin por la derecha o por la izquierda de alguna cadena La ambigedad es mala Deja el significado de algunos programas indefinidos. No existe una metodologa para eliminarla la ambigedad y tampoco hay otra frmula para saber que una gramtica es ambigua. Las gramticas ambiguas se redisean para encontrar una gramtica no ambigua equivalente.
27/11/2012 20
Gramticas Ambiguas
Ejemplo: La gramtica G = ({E}, {id, num, +, *, (, )}, E, { EE+E | E*E | (E) | id | num}) es ambigua. La cadena num+num*num tiene dos rboles de derivacin.
27/11/2012
21
Gramticas Ambiguas
Caractersticas de las gramticas ambiguas
Gramticas con ciclos simples o menos simples SA|a AS Alguna regla con una forma EEE Un conjunto de reglas de forma parecida a: SA|B AB
Gramticas Ambiguas
Producciones recursivas en las que los no terminales no recursivos de la produccin puedan derivar a la cadena vaca: S HRS | s Hh| Rr| No terminales que puedan derivar a la cadena vaca y a la misma cadena de terminales, y que aparezcan juntas en el consecuente de una regla o en alguna forma sentencial: S HR Hh| Rr|h|
Gramticas Ambiguas
Ejemplo: Sea G = ({S, A}, {a}, S, P) donde: P = {SAA, AaSa, Aa} estudiar si es ambigua En algunos casos, la ambigedad de una gramtica se puede eliminar utilizando: Recursividad Asociatividad Precedencia Parentizacin
27/11/2012 24
27/11/2012
25
27/11/2012
26
Asociatividad
Precedencia
Mtodos no-direccionales: acceden a cualquier lugar de la cadena de entrada para construir el rbol. Necesitan tener toda la cadena de componentes lxicos en memoria. Mas costosos, no se suelen implementar.
27/11/2012
34
27/11/2012
36