Expresiones y Arboles Semánticos (Ejercicios)
Expresiones y Arboles Semánticos (Ejercicios)
Expresiones y Arboles Semánticos (Ejercicios)
MATERIA:
LENGUAJES Y AUTOMATAS II
DOCENTE:
TEMA:
DOCUMENTO:
TAREA 2: EJERCICIOS
ALUMNO:
e n | e+e | e−e | e * e | e / e
n d | nd
d0|1|2|3|4|5|6|7|8|9
Terminales: 0,1,2,3,4,5,6,7,8,9
ee+e
ee+e*e
en+n+n
ed+nd*nd
e5+d5*d0
e5+15*20
Regla semántica
ee1.val+e2.val
ee1.val+e3.val*e4.val
en1.val+n2.val*n3.val
ed1.val+nd1.val*nd2.val
e5+d5.val*d0.val
e5+15*20
Problema 2
e n | e+e | e−e | e * e | e / e | (e)
ee-e ee*e
e-e*e e*(e)
n-n*n e*(e-e)
1-1*1 e*(e-e+e)
n*(n-n+n)
1*(2-3+1)
Regla semántica
ee1.val-e2.val ee1.val*e2.val
ee1.val-e3.val*e4.val ee1.val*(e3.val)
en5.val-n6.val*n7.val ee1.val*(e4.val-e5.val)
e1-1*1 ee1.val*(e4.val-e6.val+e7.val)
en8.val*(n9.val-n10.val+n11.val)
Problema 3
sentencia sent-if | otro
exp -> 0 | 1
sentencia sent-if
if(exp) sentencia parte-else
if (exp) otro else sentencia
if (0) otro else otro
Regla semantica
sentencia sent-if1.val
if (exp) sentencia parte.else2.val
if (exp) (otro3.val) (else sentencia4.val) 2.val
if (05.val)(otro3.val) (else otro6.val)
Problema 4
<dígito>::= 0|1|2|3|4|5|6|7|8|9
<letra>::= a|b|c……………|x|y|z
<identificador>::=<letra>|<identificador><dígito>|<identificador> <letra>
Abl SI PERTENECE
(identificador)(digito)
(identificador)(letra)(digito)
(letra)(letra)(digito)
(a)(b)(1)
Regla semántica
(identificador1.val)(digito1.val)
(identificador2.val)(letra2.val)(digito1.val)
(letra3.val)(letra2.val)(digito1.val)
(a)(b)(1)
Problema 5
<asig>::= <id>:=<exp>
<id>::= A| B| C |D (también podría ser la definición de identificador anterior)
<exp>::= <exp> + <exp>
| <exp> * <exp>
| <id>
A:= B + C * D SI PERTENECE
(id):=(exp)
(id):=(exp)+(exp)
(id):=(exp)+(exp)*(exp)
(id):=(id)+(id)*(id)
(A):=B+C*D
Regla semántica
(asig)= (id1.val):=(exp2.val)
(id1.val):=(exp3.val)+(exp3.val)
(id1.val):=(exp3.val)+(exp4.val)*(exp5.val)
(id1.val):=(id2.val)+(id3.val)*(id4.val)
(A):=B+C*D
Problema 6
Escribir una gramática para verificar la declaración de variables de un programa X.
var
a : integer;
b, c : real;
d :alumno;