Runtime evaluation/In an environment: Difference between revisions

Content added Content deleted
Line 851: Line 851:
END LOOKUP;
END LOOKUP;


PROCEDURE SET(V, X); TEXT V; REAL X;
REF(ENV) PROCEDURE SET(V, X); TEXT V; REAL X;
BEGIN
BEGIN
REF(ITEM) I; I :- LOOKUP(V);
REF(ITEM) I; I :- LOOKUP(V);
IF I == NONE THEN I :- NEW ITEM(V, X) ELSE I.X := X;
IF I == NONE THEN I :- NEW ITEM(V, X) ELSE I.X := X;
SET :- THIS ENV;
END SET;
END SET;


Line 1,080: Line 1,081:
END EXPR;
END EXPR;


REF(ENV) EVA, EVB;
REF(EXPR) EXA, EXB;
REF(EXPR) EXA, EXB;
EVA :- NEW ENV; EVA.SET("X", 3); EXA :- NEW EXPR(EVA);
EXA :- NEW EXPR(NEW ENV.SET("X", 3));
EVB :- NEW ENV; EVB.SET("X", 5); EXB :- NEW EXPR(EVB);
EXB :- NEW EXPR(NEW ENV.SET("X", 5));
IF EXA.EVAL("2 ^ X") THEN
IF EXA.EVAL("2 ^ X") THEN
BEGIN
BEGIN