Вы находитесь на странице: 1из 1

Syntax:

P::= S
S ::= V := E | read(V) | write(V) | while C do S od | S;S
C ::= E1 < E2 | E1 > E2 | E1 = E2 | E1 <= E2 | E1 >= E2 | E1E2
E::= T | E + T | E - T
T::= F | T * F | T / F
F::=(E) | cons | V
Syntactic Domains:
P: Prog
C: Cond
S: Stmt
E: Exp
T: Ter
F: Fac
Semantic Domains:
: B={true,false}
: N = {...,-2,-1,0,1,2,....}
: Fi = N*
: St = V N
: CF = St Fi Fi
Semantic Function Domain:
: Prog Fi Fi
: Stmt CF CF
: Cond St B
: Exp St N
: Ter St N
: Fac St N
Semantic Equations:
a. (E + T, )
=
(E, )
+
(T, )
b. (E - T, )
=
(E, )
(T, )
c. (T, )
=
(T, )
d. (T * F, )
=
(T, )
*
(F, )
e. (T / F, )
=
(T, )
/
(F, )
f. (F, )
=
(F, )
g. ((E), )
=
( (E, ) )
h. (cons, )
=
element of N corresponding to cons
i. (V, )
=
value(V, )
j. (E1 < E2, )
=
(E1, ) < (E2, )
k. (E1 > E2, )
=
(E1, ) > (E2, )
l. (E1 = E2, )
=
(E1, ) = (E2, )
m. (E1 <= E2, )
=
(E1, ) <= (E2, )
n. (E1 >= E2, )
=
(E1, ) >= (E2, )
o. (E1 E2, )
=
(E1, ) (E2, )
p. (V := E, )
=
< update(1, (E, 1)/V), 2, 3 >
q. (read(V), )
=
if 2 nil then < update(1, hd(2)/V), tl(2), 3>
else T
r. (write(V), )
=
if value(V, 1) then
<1, 2, append(3, value(V, 1))> else T
s. (while C do S od, )
=
if (C, 1) then (while C do S od, (S, ) ) else
t. (S1;S2, )
=
(S2, (S1, ) )
u. (P, 1)
=
(P, <[ ], 1, nil >) 3

Вам также может понравиться