2 ms·
eval(I,I):-integer(I). eval(E1+E2,I):- eval(E1,I1),eval(E2,I2), I is I1+I2. eval(E1E2,I):- eval(E1,I1),eval(E2,I2), I is I1I2. :- eval(12+34,R),writeln(R),R=
by h_sakurai 4y ago
eval(I,I):-integer(I).
eval(E1+E2,I):- eval(E1,I1),eval(E2,I2), I is I1+I2.
eval(E1E2,I):- eval(E1,I1),eval(E2,I2), I is I1I2.
:- eval(12+34,R),writeln(R),R=14.
:- halt.
Very simple Operational Semantics.
this mean
syntax
e ::= i | e+e | e * e
evaluation rule
-------------- (E-Int)
i1-->i1
e1-->i1 e2-->i2
i is i1+i2
------------------- (E-Plus)
e1+e2 --> i
e1-->i1 e2-->i2
i is i1i2
------------------- (E-Times)
e1*e2 --> i