You are on page 1of 18

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 Árbol de
Léxico análisis
Representación
Programa Analizador Programa sintáctico Resto de la intermedia
fuente léxico sintáctico etapa inicial

Obtener el siguiente
componente léxico
Tabla de
símbolos
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
12/07/2021 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


llama la propiedad recursiva de las gramáticas Page 7
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

Page 9
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

E + E

Page 14
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

You might also like