Martin Cruz Valenzuela
Acciones Semánticas de un Acciones Semánticas de un Analizador Semántico Analizador Semántico
GramáticaGramática La gramática que se ha utiliza para este
ejemplo es la siguiente:
A ::= L ; A J ::= ( L ) | L ; | true
| falseL ::= L and J | not ( L )
| L or J | C | L nand J | L nor C ::= numero ==numero
| L xor J | numero != numero | L xnor J | numero < numero
| J | numero > numero
| numero <= numero
| numero >= numero
2
Caso de PruebaCaso de Prueba
El caso que se muestra a continuación se trata del siguiente caso de prueba:
( false and true ) xor 45 > 78 ;( false and true ) xor 45 > 78 ;
4
5
ÁrbolÁrbol
6
A
L ;
L xor J
J C
45 > 78( )L
and
L J
J
false
true
( false
and true
) xor 45
78
> ;
Se aplicó la reducción:J ::= falseJ ::= trueL ::= JL ::= L and JJ ::= ( L )L ::= JC ::= numero > numeroJ ::= CL ::= L xor JA ::= L ;
Árbol + Acciones Árbol + Acciones SemánticasSemánticas
7
A
L ;
L xor J
J C
45 > 78( )L
and
L J
J
false
true
( false
and true
) xor 45
78
> ;J.val = false
J.val = true
L.s = false
L.s = false and true = false
J.s = false
L.s = false
J.s = false
L.s = false xor false = false
C.val = 45>78= false
A.s = false
ExplicaciónExplicaciónEn la diapositiva 6 podemos ver como se
genera el árbol.
La diapositiva siguiente muestra ese mismo árbol pero con las acciones semánticas, lo que provoca que ese árbol tome sentido.
Las acciones semánticas sirven para evaluar una expresión. En este caso se está evaluando una expresión booleana. En el árbol se puede ver como las acciones semánticas van de abajo hacia arriba.
8
ExplicaciónExplicaciónEl árbol que contiene las acciones
semánticas tiene diferentes atributos que son:
◦ *.s: significan que son atributos sintetizados.◦ *.val: significan el valor que toma ese atributo
cuando sube dicho valor de un nodo hoja.
Las flechas indican el sentido en el que se van evaluando los datos y resolviendo el cálculo booleano de la expresión, hasta que el resultado llega a la raíz que es cuando se muestra por pantalla el valor final obtenido.
9
FinFin
Gracias
10
Recommended