X-Git-Url: https://deadsoftware.ru/gitweb?p=cpc.git;a=blobdiff_plain;f=src%2Fgeneric%2FDev%2FMod%2FCPR.cp;h=8802469cd23daaa568b389b42399ff165fa6cbca;hp=7791454cd607538d29b831f4d9ef1532a24fe4c3;hb=28eed3a1ff043fd056912fde1864e43e4f79e9e7;hpb=5adfcb4517689a90c7640ff2add9761ba042677a diff --git a/src/generic/Dev/Mod/CPR.cp b/src/generic/Dev/Mod/CPR.cp index 7791454..8802469 100644 --- a/src/generic/Dev/Mod/CPR.cp +++ b/src/generic/Dev/Mod/CPR.cp @@ -36,6 +36,7 @@ MODULE DevCPR; scope: Selector; top: Context; skip-: BOOLEAN; + used-: BOOLEAN; PROCEDURE err (n: SHORTINT); BEGIN DevCPM.err(n) @@ -162,7 +163,7 @@ MODULE DevCPR; BEGIN Factor(x, use); WHILE sym = and DO - Get(sym); Factor(y, use); IF use THEN x := x & y END + Get(sym); Factor(y, use & x); IF use & x THEN x := x & y END END END Term; @@ -171,7 +172,7 @@ MODULE DevCPR; BEGIN Term(x, use); WHILE sym = or DO - Get(sym); Term(y, use); IF use THEN x := x OR y END + Get(sym); Term(y, use & ~x); IF use & ~x THEN x := x OR y END END END Expression; @@ -187,7 +188,7 @@ MODULE DevCPR; VAR c: Context; BEGIN NEW(c); c.next := top; c.alt := FALSE; c.val := cond; c.ref := 0; top := c; - INC(fold); skip := ~Printable() + INC(fold); skip := ~Printable(); used := TRUE END If; PROCEDURE Else; @@ -259,7 +260,7 @@ MODULE DevCPR; BEGIN ch := " "; sym := eof; name := ""; fold := 0; top := NIL; scope := NIL; - skip := FALSE + skip := FALSE; used := FALSE END Close; PROCEDURE Init*; @@ -269,7 +270,8 @@ MODULE DevCPR; If(TRUE); NEW(scope); Set("TRUE", TRUE); - Set("FALSE", FALSE) + Set("FALSE", FALSE); + used := FALSE END Init; END DevCPR.