Analisis Sintactico

by Aura Cifuentes

Page 1

Analisis Sintactico :
El analizador sintáctico obtiene una cadena de componentes léxicos del analizador léxico, y comprueba si la cadena puede ser generada por la gramática del lenguaje fuente. El analizador sintáctico informara de cualquiera error de sintaxis de manera inteligible.
Componente Léxico Analizador Programa léxico sintáctico Obtener el siguiente componente léxico Tabla de símbolos Árbol de análisis sintáctico Resto de la etapa inicial

Programa fuente

Representación intermedia

Page 2

Analisis Sintactico :

Un gramática es una especificación sintáctica precisa y fácil de entender. A partir de algunas clases de gramáticas se pueden construir automáticamente en un analizador sintáctico eficiente que determine si un programa fuente esta sintácticamente bien definido.

Page 3

Gramática Libre de Contexto

‡ También se le denomina Gramáticas independientes de contexto. ‡ Se definen en inglés como CFG, Context Free Grammar. ‡ Contexto se refiere al entorno en que se encuentra, como influye el entorno en el significado de cada parte.

Page 4 05/08/2010 4

Gramáticas Libres de Contexto

‡ Mayor capacidad para especificar lenguajes al incluir algunos lenguajes que no son reconocidos por un autómata finito. ‡ Son útiles para describir expresiones que tengan una anidación arbitraria o estructuras de en bloque.

Page 5

Gramaticas:
™ = Vocabulario finito de símbolos terminales. Los símbolos terminales son los símbolos validos en un lenguaje. N = Conjunto finito de símbolos No Terminales los cuales son metasímbolos que deben ser definidos por otras producciones. S = Un símbolo terminal básico. Este será el símbolo principal que describirá oraciones enteras. P = Conjunto de reglas que nos dicen que se puede generar como parientes del axioma.
Page 6

Gramáticas:
Ejemplo, la oración: Karla y Pepe comen muchas manzanas La construcción de la oración la podemos dar con la siguiente regla gramatical:

1. <oración>

<sujeto> <predicado>

una expresión de tipo sujeto seguida de una expresión de tipo predicado.

2. <Sujeto> <frnominal> 3. <frnominal> <sustantivo> 4. <frnominal> <sustantivo> <conjunción> <frnominal>
La regla (2) nos dice que una frase tipo sujeto puede ser sustituida por una frase de tipo frnominal y las reglas (3) y (4) dicen que una frnominal puede tomar una de dos formas: <sustantivo> o bien <sustantivo> <conjunción> <frnominal>. La regla (4) define una frase en términos de si misma. A esto se le Page 7 llama la propiedad recursiva de las gramáticas

Gramáticas:
1. <oración> <sujeto> <predicado> 2. <Sujeto> <frsujeto> 3. <frsujeto> <sustantivo> 4. <frsujeto> <sustantivo> <conjunción> <frsujeto> 5. <Conjunción> y 6. <Sustantivo> Karla 7. <Sustantivo> Pepe 8. <Predicado> <verbo> <frpredicado> 9. <verbo> comen | muerden | buscan | prefieren 10. < frpredicado> <adjetivo> <sustntvo> 11. <adjetivo> muchas | pocas | bellas | apetitosas 12. <sustntvo> manzanas | peras | materiales

Page 8

Oración
Sujeto Predicado

Frsujeto

Conjunción

Frsujeto

Verbo

Frpredicado

Sustantivo

Sustantivo

Adjetivo

sustntvo

Karla

Y

Pepe

Comen

muchas

manzanas

Derivación:
Derivaciones : La idea central es que se considera una producción como una regla de reescritura, donde el no terminal de la izquierda es sustituido por la cadena del lado derecho de la producción. Derivación por la izquierda : Derivación donde solo el no terminal de más a la izquierda de cualquier forma de frase se sustituye en cada paso. Derivación por la derecha: Derivación donde el no terminal más a la derecha se sustituye en cada paso.

Page 10

Por ejemplo, para reconocer la cadena aabb. S AB | A A aAa | B Bb | b Derivación por la Izquierda S AB aAaB aaB aaBb aaBbb aabbb Derivación por la Derecha S AB ABb ABbb Abbb aAabbb aabbb

Page 11

Page 12

Ambiguedad:
Una gramática es ambigua si derivando de forma diferente con el mismo tipo de derivación se llega al mismo resultado. E -> E + E E -> E * E E -> ( E ) E -> id | num

Page 13

E E E id
E E id + E id E + E id
Page 14

+ E Id

E id

+

Ejemplo de gramaticas:
A partir de la gramática de una lista básica: S -> L -> L; id L | id; Realice los siguientes gramáticas:

1. aaabbccddd 2. abbbcccd 3. aabcdd 1. aaaabbbbcd 2. aabbcccddd 3. abccdd
Page 15

Solución S -> a S d |aAd A -> b A c | bc S -> AB A -> a A b |ab B -> cBd |cd;
Page 16

Ejercicio de Gramáticas

‡ Declaración de variables. Integer a, b, c, d; String b, c, d, e; ‡ Para la cadena. [a,b,c,d] , [k,h], [f], [a,z,l,d]

Page 17

Solución
‡ Declaración de variables. Integer a, b, c, d; L -> L X; | Integer ; X -> X , id; | id; ‡ Para la cadena. [a,b,c,d] , [k,h], [f], [a,z,l,d] L -> L , [ X ] |[X] X -> X , id | id;

Page 18