DESCENDENTES
- Gramáticas Ascendentes.
• Funcionamiento.
• Implementar de una pila por desplazamiento y reducción.
• Uso de precedencia de Operadores.
-Gramáticas Descendentes
• Funcionamiento.
• Reescritura de Gramáticas
o Supresión de la Ambigüedad.
o Factorización por la izquierda.
o Eliminación de la recursividad por la izquierda.
Las ventajas de las gramáticas:
• Las gramáticas son especificaciones sintácticas y
precisas de lenguajes de programación.
programación
• A partir de una gramática se puede generar
automáticamente un analizador sintáctico.
• El proceso de construcción puede llevar a descubrir
ambigüedades.
• Una gramática proporciona una estructura a un lenguaje
de programación, siendo más fácil generar código y
detectar errores.
• Es más fácil ampliar/modificar el lenguaje si está descrito
con una gramática.
∑ = 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.
Es también conocido como:
S-->L uno,dos,tres,cuatro,cinco
L-->L,id
| id
Se basa en una máquina de pila donde:
or and
fals
or
e
or and
fals
true
e
MÉTODOS ASCENDENTES
S
Partiendo del árbol de
derivación se comprueba
B c E F la siguiente cadena
abcdef
A b d D Partiendo de abajo hacia
arriba utilizando la pila
a C
y reduciendo las
e f
producciones
27/09/2010 12
MÉTODOS ASCENDENTES
S
Ingresa a la pila
a
B c E F
El análisis se hace de
A b d D
arriba hacia abajo.
C
e f
MÉTODOS ASCENDENTES
S
Reduce en la producción
Aa
B c E F
Cambia el valor en la pila
b d D
C A
e f
27/09/2010 14
MÉTODOS ASCENDENTES
S
Ingresa el valor de b a la
pila.
B c E F
A b
d D
e f
27/09/2010 15
MÉTODOS ASCENDENTES
S
Reduce en la producción
B Ab
c E F
Cambia el valor en la pila
d D
C B
e f
27/09/2010 16
MÉTODOS ASCENDENTES
S
Se moviliza en el árbol e
ingresa c.
E F
Se agrega c a la pila
d D
C B c
e f
27/09/2010 17
MÉTODOS ASCENDENTES
S
Se moviliza en el árbol e
ingresa d.
E F
Se agrega d a la pila
D
C B c d
e f
27/09/2010 18
MÉTODOS ASCENDENTES
S
Se moviliza en el árbol e
ingresa e.
E F
Se agrega e a la pila
D
C B c d e
27/09/2010 19
MÉTODOS ASCENDENTES
S
Se moviliza en el árbol e
ingresa f.
E F
Se agrega f a la pila
D
C B c d e f
27/09/2010 20
MÉTODOS ASCENDENTES
S
Reduce en la producción
Cef
E F
Cambia el valor en la pila
D
B c d C
27/09/2010 21
MÉTODOS ASCENDENTES
S
Reduce en la producción
DC
E F
Cambia el valor en la pila
B c d D
27/09/2010 22
MÉTODOS ASCENDENTES
S
Reduce en la producción
Fε
F
Cambia el valor en la pila
B c E F
27/09/2010 23
MÉTODOS ASCENDENTES
Reduce en la producción
SBcEFε
27/09/2010 24
EJEMPLO
c --> c || C E -->
>E+E
| c && c | E-E
| E*E
| !c
| E/E
| (c) | (E)
| E == E | NUM
| E <> E | IDENTIFICADOR
| E <= E | CADENA
| E >= E
| E<E
| E>E
| TRUE
| FALSE;
GRAMÁTICAS DESCENDENTES
1. Parser Up Botom
L r2
L r1
o Supresión de la Ambigüedad.
o Eliminación de la recursividad por la izquierda.
o Factorización por la izquierda.
izquierda