4-2-7
Fact { 0 = 1; sN = <Int 'N:='('"'sN)';' Prod ('I:=1,N') ('I') >; } Int { eX = <Eval () eX>; } Eval { (eE) sV ':='tX';'eY = <Eval (eE (sV <Eval (eE) tX>)) eY>; tE sN = <Subst tE sN>; tE ('"'eX) = eX; tE (eX) = <Eval tE eX>; tE eX '=' eY = <Equ (<Eval tE eX>) <Eval tE eY>>; tE eX '+' eY = <ADD (<Eval tE eX>) <Eval tE eY>>; tE eX '-' eY '-' eZ = <Eval tE (eX '-' eY) '-' eZ>; tE eX '-' eY = <SUB (<Eval tE eX>) <Eval tE eY>>; tE eX '*' eY = <MUL (<Eval tE eX>) <Eval tE eY>>; tE sF (eX) = <Func sF <Eval tE eX>>; tE If tC Then tT Else tF = <Eval tE <If <Eval tE tC> tT tF>>; tE Prod (sV':='eL','eH) (eX) = <Eval tE 'L:='(eL)';' 'H:='(eH)';' 'Z:='(sV':=H;'eX)';' If ('L=H') Then ('Z') Else ('Z*' Prod (sV':=L,H-1') (eX)) >; } ... |