Runtime evaluation/In an environment: Difference between revisions

Content added Content deleted
Line 835: Line 835:


CLASS ITEM(N, X); TEXT N; REAL X;
CLASS ITEM(N, X); TEXT N; REAL X;
BEGIN REF(ITEM) NEXT;
BEGIN
REF(ITEM) NEXT; NEXT :- HEAD; HEAD :- THIS ITEM;
END ITEM;
END ITEM;


Line 852: Line 853:
PROCEDURE SET(V, X); TEXT V; REAL X;
PROCEDURE SET(V, X); TEXT V; REAL X;
BEGIN
BEGIN
REF(ITEM) I, NH; I :- LOOKUP(V);
REF(ITEM) I; I :- LOOKUP(V);
IF I == NONE THEN
IF I == NONE THEN
BEGIN
I :- NEW ITEM(V, X);
NH :- NEW ITEM(V, X);
I.X := X;
NH.NEXT :- HEAD;
HEAD :- NH;
END
ELSE I.X := X;
END SET;
END SET;


Line 887: Line 884:
REAL PROCEDURE CALC(OPERATOR, ERR); CHARACTER OPERATOR; LABEL ERR;
REAL PROCEDURE CALC(OPERATOR, ERR); CHARACTER OPERATOR; LABEL ERR;
BEGIN
BEGIN
REAL X, Y, Z; X := POP; Y := POP;
REAL X, Y; X := POP; Y := POP;
IF OPERATOR = '+' THEN PUSH(Y + X)
IF OPERATOR = '+' THEN PUSH(Y + X)
ELSE IF OPERATOR = '-' THEN PUSH(Y - X)
ELSE IF OPERATOR = '-' THEN PUSH(Y - X)