Accept all SET types in INCL.

This commit is contained in:
David Brown 2016-09-30 18:42:59 +01:00
parent 1fa182c7ce
commit 2e02f9204c
18 changed files with 22 additions and 64 deletions

View file

@ -1879,7 +1879,7 @@ void OPB_StPar0 (OPT_Node *par0, int16 fctno)
case 15: case 16: case 15: case 16:
if (OPB_NotVar(x)) { if (OPB_NotVar(x)) {
OPB_err(112); OPB_err(112);
} else if (x->typ != OPT_settyp) { } else if (x->typ->form != 7) {
OPB_err(111); OPB_err(111);
x->typ = OPT_settyp; x->typ = OPT_settyp;
} else if (x->readonly) { } else if (x->readonly) {
@ -2044,7 +2044,7 @@ void OPB_StPar1 (OPT_Node *par0, OPT_Node x, int8 fctno)
if (x->class == 8 || x->class == 9) { if (x->class == 8 || x->class == 9) {
OPB_err(126); OPB_err(126);
} else if (f == 4) { } else if (f == 4) {
if ((x->class == 7 && (0 > x->conval->intval || x->conval->intval > (int64)OPM_MaxSet))) { if ((x->class == 7 && (0 > x->conval->intval || x->conval->intval >= (int64)__ASHL(p->typ->size, 3)))) {
OPB_err(202); OPB_err(202);
} }
p = NewOp__54(19, fctno, p, x); p = NewOp__54(19, fctno, p, x);

View file

@ -82,7 +82,6 @@ export int64 OPM_SymRInt64 (void);
export void OPM_SymRLReal (LONGREAL *lr); export void OPM_SymRLReal (LONGREAL *lr);
export void OPM_SymRReal (REAL *r); export void OPM_SymRReal (REAL *r);
export void OPM_SymRSet (uint32 *s); export void OPM_SymRSet (uint32 *s);
export void OPM_SymRSet64 (uint64 *s);
export void OPM_SymWCh (CHAR ch); export void OPM_SymWCh (CHAR ch);
export void OPM_SymWInt (int64 i); export void OPM_SymWInt (int64 i);
export void OPM_SymWLReal (LONGREAL lr); export void OPM_SymWLReal (LONGREAL lr);
@ -759,11 +758,6 @@ int64 OPM_SymRInt64 (void)
return _o_result; return _o_result;
} }
void OPM_SymRSet64 (uint64 *s)
{
Files_ReadNum(&OPM_oldSF, Files_Rider__typ, (void*)&*s, 8);
}
void OPM_SymRSet (uint32 *s) void OPM_SymRSet (uint32 *s)
{ {
Files_ReadNum(&OPM_oldSF, Files_Rider__typ, (void*)&*s, 4); Files_ReadNum(&OPM_oldSF, Files_Rider__typ, (void*)&*s, 4);

View file

@ -50,7 +50,6 @@ import int64 OPM_SymRInt64 (void);
import void OPM_SymRLReal (LONGREAL *lr); import void OPM_SymRLReal (LONGREAL *lr);
import void OPM_SymRReal (REAL *r); import void OPM_SymRReal (REAL *r);
import void OPM_SymRSet (uint32 *s); import void OPM_SymRSet (uint32 *s);
import void OPM_SymRSet64 (uint64 *s);
import void OPM_SymWCh (CHAR ch); import void OPM_SymWCh (CHAR ch);
import void OPM_SymWInt (int64 i); import void OPM_SymWInt (int64 i);
import void OPM_SymWLReal (LONGREAL lr); import void OPM_SymWLReal (LONGREAL lr);

View file

@ -1879,7 +1879,7 @@ void OPB_StPar0 (OPT_Node *par0, int16 fctno)
case 15: case 16: case 15: case 16:
if (OPB_NotVar(x)) { if (OPB_NotVar(x)) {
OPB_err(112); OPB_err(112);
} else if (x->typ != OPT_settyp) { } else if (x->typ->form != 7) {
OPB_err(111); OPB_err(111);
x->typ = OPT_settyp; x->typ = OPT_settyp;
} else if (x->readonly) { } else if (x->readonly) {
@ -2044,7 +2044,7 @@ void OPB_StPar1 (OPT_Node *par0, OPT_Node x, int8 fctno)
if (x->class == 8 || x->class == 9) { if (x->class == 8 || x->class == 9) {
OPB_err(126); OPB_err(126);
} else if (f == 4) { } else if (f == 4) {
if ((x->class == 7 && (0 > x->conval->intval || x->conval->intval > (int64)OPM_MaxSet))) { if ((x->class == 7 && (0 > x->conval->intval || x->conval->intval >= (int64)__ASHL(p->typ->size, 3)))) {
OPB_err(202); OPB_err(202);
} }
p = NewOp__54(19, fctno, p, x); p = NewOp__54(19, fctno, p, x);

View file

@ -82,7 +82,6 @@ export int64 OPM_SymRInt64 (void);
export void OPM_SymRLReal (LONGREAL *lr); export void OPM_SymRLReal (LONGREAL *lr);
export void OPM_SymRReal (REAL *r); export void OPM_SymRReal (REAL *r);
export void OPM_SymRSet (uint32 *s); export void OPM_SymRSet (uint32 *s);
export void OPM_SymRSet64 (uint64 *s);
export void OPM_SymWCh (CHAR ch); export void OPM_SymWCh (CHAR ch);
export void OPM_SymWInt (int64 i); export void OPM_SymWInt (int64 i);
export void OPM_SymWLReal (LONGREAL lr); export void OPM_SymWLReal (LONGREAL lr);
@ -759,11 +758,6 @@ int64 OPM_SymRInt64 (void)
return _o_result; return _o_result;
} }
void OPM_SymRSet64 (uint64 *s)
{
Files_ReadNum(&OPM_oldSF, Files_Rider__typ, (void*)&*s, 8);
}
void OPM_SymRSet (uint32 *s) void OPM_SymRSet (uint32 *s)
{ {
Files_ReadNum(&OPM_oldSF, Files_Rider__typ, (void*)&*s, 4); Files_ReadNum(&OPM_oldSF, Files_Rider__typ, (void*)&*s, 4);

View file

@ -50,7 +50,6 @@ import int64 OPM_SymRInt64 (void);
import void OPM_SymRLReal (LONGREAL *lr); import void OPM_SymRLReal (LONGREAL *lr);
import void OPM_SymRReal (REAL *r); import void OPM_SymRReal (REAL *r);
import void OPM_SymRSet (uint32 *s); import void OPM_SymRSet (uint32 *s);
import void OPM_SymRSet64 (uint64 *s);
import void OPM_SymWCh (CHAR ch); import void OPM_SymWCh (CHAR ch);
import void OPM_SymWInt (int64 i); import void OPM_SymWInt (int64 i);
import void OPM_SymWLReal (LONGREAL lr); import void OPM_SymWLReal (LONGREAL lr);

View file

@ -1879,7 +1879,7 @@ void OPB_StPar0 (OPT_Node *par0, int16 fctno)
case 15: case 16: case 15: case 16:
if (OPB_NotVar(x)) { if (OPB_NotVar(x)) {
OPB_err(112); OPB_err(112);
} else if (x->typ != OPT_settyp) { } else if (x->typ->form != 7) {
OPB_err(111); OPB_err(111);
x->typ = OPT_settyp; x->typ = OPT_settyp;
} else if (x->readonly) { } else if (x->readonly) {
@ -2044,7 +2044,7 @@ void OPB_StPar1 (OPT_Node *par0, OPT_Node x, int8 fctno)
if (x->class == 8 || x->class == 9) { if (x->class == 8 || x->class == 9) {
OPB_err(126); OPB_err(126);
} else if (f == 4) { } else if (f == 4) {
if ((x->class == 7 && (0 > x->conval->intval || x->conval->intval > (int64)OPM_MaxSet))) { if ((x->class == 7 && (0 > x->conval->intval || x->conval->intval >= (int64)__ASHL(p->typ->size, 3)))) {
OPB_err(202); OPB_err(202);
} }
p = NewOp__54(19, fctno, p, x); p = NewOp__54(19, fctno, p, x);

View file

@ -82,7 +82,6 @@ export int64 OPM_SymRInt64 (void);
export void OPM_SymRLReal (LONGREAL *lr); export void OPM_SymRLReal (LONGREAL *lr);
export void OPM_SymRReal (REAL *r); export void OPM_SymRReal (REAL *r);
export void OPM_SymRSet (uint32 *s); export void OPM_SymRSet (uint32 *s);
export void OPM_SymRSet64 (uint64 *s);
export void OPM_SymWCh (CHAR ch); export void OPM_SymWCh (CHAR ch);
export void OPM_SymWInt (int64 i); export void OPM_SymWInt (int64 i);
export void OPM_SymWLReal (LONGREAL lr); export void OPM_SymWLReal (LONGREAL lr);
@ -759,11 +758,6 @@ int64 OPM_SymRInt64 (void)
return _o_result; return _o_result;
} }
void OPM_SymRSet64 (uint64 *s)
{
Files_ReadNum(&OPM_oldSF, Files_Rider__typ, (void*)&*s, 8);
}
void OPM_SymRSet (uint32 *s) void OPM_SymRSet (uint32 *s)
{ {
Files_ReadNum(&OPM_oldSF, Files_Rider__typ, (void*)&*s, 4); Files_ReadNum(&OPM_oldSF, Files_Rider__typ, (void*)&*s, 4);

View file

@ -50,7 +50,6 @@ import int64 OPM_SymRInt64 (void);
import void OPM_SymRLReal (LONGREAL *lr); import void OPM_SymRLReal (LONGREAL *lr);
import void OPM_SymRReal (REAL *r); import void OPM_SymRReal (REAL *r);
import void OPM_SymRSet (uint32 *s); import void OPM_SymRSet (uint32 *s);
import void OPM_SymRSet64 (uint64 *s);
import void OPM_SymWCh (CHAR ch); import void OPM_SymWCh (CHAR ch);
import void OPM_SymWInt (int64 i); import void OPM_SymWInt (int64 i);
import void OPM_SymWLReal (LONGREAL lr); import void OPM_SymWLReal (LONGREAL lr);

View file

@ -1879,7 +1879,7 @@ void OPB_StPar0 (OPT_Node *par0, int16 fctno)
case 15: case 16: case 15: case 16:
if (OPB_NotVar(x)) { if (OPB_NotVar(x)) {
OPB_err(112); OPB_err(112);
} else if (x->typ != OPT_settyp) { } else if (x->typ->form != 7) {
OPB_err(111); OPB_err(111);
x->typ = OPT_settyp; x->typ = OPT_settyp;
} else if (x->readonly) { } else if (x->readonly) {
@ -2044,7 +2044,7 @@ void OPB_StPar1 (OPT_Node *par0, OPT_Node x, int8 fctno)
if (x->class == 8 || x->class == 9) { if (x->class == 8 || x->class == 9) {
OPB_err(126); OPB_err(126);
} else if (f == 4) { } else if (f == 4) {
if ((x->class == 7 && (0 > x->conval->intval || x->conval->intval > (int64)OPM_MaxSet))) { if ((x->class == 7 && (0 > x->conval->intval || x->conval->intval >= (int64)__ASHL(p->typ->size, 3)))) {
OPB_err(202); OPB_err(202);
} }
p = NewOp__54(19, fctno, p, x); p = NewOp__54(19, fctno, p, x);

View file

@ -82,7 +82,6 @@ export int64 OPM_SymRInt64 (void);
export void OPM_SymRLReal (LONGREAL *lr); export void OPM_SymRLReal (LONGREAL *lr);
export void OPM_SymRReal (REAL *r); export void OPM_SymRReal (REAL *r);
export void OPM_SymRSet (uint32 *s); export void OPM_SymRSet (uint32 *s);
export void OPM_SymRSet64 (uint64 *s);
export void OPM_SymWCh (CHAR ch); export void OPM_SymWCh (CHAR ch);
export void OPM_SymWInt (int64 i); export void OPM_SymWInt (int64 i);
export void OPM_SymWLReal (LONGREAL lr); export void OPM_SymWLReal (LONGREAL lr);
@ -759,11 +758,6 @@ int64 OPM_SymRInt64 (void)
return _o_result; return _o_result;
} }
void OPM_SymRSet64 (uint64 *s)
{
Files_ReadNum(&OPM_oldSF, Files_Rider__typ, (void*)&*s, 8);
}
void OPM_SymRSet (uint32 *s) void OPM_SymRSet (uint32 *s)
{ {
Files_ReadNum(&OPM_oldSF, Files_Rider__typ, (void*)&*s, 4); Files_ReadNum(&OPM_oldSF, Files_Rider__typ, (void*)&*s, 4);

View file

@ -50,7 +50,6 @@ import int64 OPM_SymRInt64 (void);
import void OPM_SymRLReal (LONGREAL *lr); import void OPM_SymRLReal (LONGREAL *lr);
import void OPM_SymRReal (REAL *r); import void OPM_SymRReal (REAL *r);
import void OPM_SymRSet (uint32 *s); import void OPM_SymRSet (uint32 *s);
import void OPM_SymRSet64 (uint64 *s);
import void OPM_SymWCh (CHAR ch); import void OPM_SymWCh (CHAR ch);
import void OPM_SymWInt (int64 i); import void OPM_SymWInt (int64 i);
import void OPM_SymWLReal (LONGREAL lr); import void OPM_SymWLReal (LONGREAL lr);

View file

@ -1879,7 +1879,7 @@ void OPB_StPar0 (OPT_Node *par0, int16 fctno)
case 15: case 16: case 15: case 16:
if (OPB_NotVar(x)) { if (OPB_NotVar(x)) {
OPB_err(112); OPB_err(112);
} else if (x->typ != OPT_settyp) { } else if (x->typ->form != 7) {
OPB_err(111); OPB_err(111);
x->typ = OPT_settyp; x->typ = OPT_settyp;
} else if (x->readonly) { } else if (x->readonly) {
@ -2044,7 +2044,7 @@ void OPB_StPar1 (OPT_Node *par0, OPT_Node x, int8 fctno)
if (x->class == 8 || x->class == 9) { if (x->class == 8 || x->class == 9) {
OPB_err(126); OPB_err(126);
} else if (f == 4) { } else if (f == 4) {
if ((x->class == 7 && (0 > x->conval->intval || x->conval->intval > (int64)OPM_MaxSet))) { if ((x->class == 7 && (0 > x->conval->intval || x->conval->intval >= (int64)__ASHL(p->typ->size, 3)))) {
OPB_err(202); OPB_err(202);
} }
p = NewOp__54(19, fctno, p, x); p = NewOp__54(19, fctno, p, x);

View file

@ -82,7 +82,6 @@ export int64 OPM_SymRInt64 (void);
export void OPM_SymRLReal (LONGREAL *lr); export void OPM_SymRLReal (LONGREAL *lr);
export void OPM_SymRReal (REAL *r); export void OPM_SymRReal (REAL *r);
export void OPM_SymRSet (uint32 *s); export void OPM_SymRSet (uint32 *s);
export void OPM_SymRSet64 (uint64 *s);
export void OPM_SymWCh (CHAR ch); export void OPM_SymWCh (CHAR ch);
export void OPM_SymWInt (int64 i); export void OPM_SymWInt (int64 i);
export void OPM_SymWLReal (LONGREAL lr); export void OPM_SymWLReal (LONGREAL lr);
@ -759,11 +758,6 @@ int64 OPM_SymRInt64 (void)
return _o_result; return _o_result;
} }
void OPM_SymRSet64 (uint64 *s)
{
Files_ReadNum(&OPM_oldSF, Files_Rider__typ, (void*)&*s, 8);
}
void OPM_SymRSet (uint32 *s) void OPM_SymRSet (uint32 *s)
{ {
Files_ReadNum(&OPM_oldSF, Files_Rider__typ, (void*)&*s, 4); Files_ReadNum(&OPM_oldSF, Files_Rider__typ, (void*)&*s, 4);

View file

@ -50,7 +50,6 @@ import int64 OPM_SymRInt64 (void);
import void OPM_SymRLReal (LONGREAL *lr); import void OPM_SymRLReal (LONGREAL *lr);
import void OPM_SymRReal (REAL *r); import void OPM_SymRReal (REAL *r);
import void OPM_SymRSet (uint32 *s); import void OPM_SymRSet (uint32 *s);
import void OPM_SymRSet64 (uint64 *s);
import void OPM_SymWCh (CHAR ch); import void OPM_SymWCh (CHAR ch);
import void OPM_SymWInt (int64 i); import void OPM_SymWInt (int64 i);
import void OPM_SymWLReal (LONGREAL lr); import void OPM_SymWLReal (LONGREAL lr);

View file

@ -811,11 +811,11 @@ MODULE OPB; (* RC 6.3.89 / 21.2.94 *) (* object model 17.1.93 *)
ELSE err(201); x^.conval^.setval := {l..k} ELSE err(201); x^.conval^.setval := {l..k}
END ; END ;
x^.obj := NIL x^.obj := NIL
ELSE BindNodes(OPT.Nupto, OPT.settyp, x, y) ELSE BindNodes(OPT.Nupto, OPT.settyp, x, y) (* todo choose appropriate set type ? *)
END END
ELSE err(93) ELSE err(93)
END ; END ;
x^.typ := OPT.settyp x^.typ := OPT.settyp (* todo choose appropriate set type ? *)
END SetRange; END SetRange;
PROCEDURE SetElem*(VAR x: OPT.Node); PROCEDURE SetElem*(VAR x: OPT.Node);
@ -829,9 +829,9 @@ MODULE OPB; (* RC 6.3.89 / 21.2.94 *) (* object model 17.1.93 *)
ELSE err(202) ELSE err(202)
END ; END ;
x^.obj := NIL x^.obj := NIL
ELSE Convert(x, OPT.settyp) ELSE Convert(x, OPT.settyp) (* todo choose appropriate set type ? *)
END ; END ;
x^.typ := OPT.settyp x^.typ := OPT.settyp (* todo choose appropriate set type ? *)
END SetElem; END SetElem;
PROCEDURE CheckAssign(x: OPT.Struct; ynode: OPT.Node); (* x := y *) PROCEDURE CheckAssign(x: OPT.Struct; ynode: OPT.Node); (* x := y *)
@ -1027,7 +1027,7 @@ MODULE OPB; (* RC 6.3.89 / 21.2.94 *) (* object model 17.1.93 *)
|OPT.inclfn, |OPT.inclfn,
OPT.exclfn: (*INCL, EXCL*) OPT.exclfn: (*INCL, EXCL*)
IF NotVar(x) THEN err(112) IF NotVar(x) THEN err(112)
ELSIF x^.typ # OPT.settyp THEN err(111); x^.typ := OPT.settyp ELSIF x.typ.form # OPT.Set THEN err(111); x^.typ := OPT.settyp
ELSIF x^.readonly THEN err(76) ELSIF x^.readonly THEN err(76)
END END
|OPT.lenfn: (*LEN*) |OPT.lenfn: (*LEN*)
@ -1124,7 +1124,7 @@ MODULE OPB; (* RC 6.3.89 / 21.2.94 *) (* object model 17.1.93 *)
OPT.exclfn: (*INCL, EXCL*) OPT.exclfn: (*INCL, EXCL*)
IF (x^.class = OPT.Ntype) OR (x^.class = OPT.Nproc) THEN err(126) IF (x^.class = OPT.Ntype) OR (x^.class = OPT.Nproc) THEN err(126)
ELSIF f = OPT.Int THEN ELSIF f = OPT.Int THEN
IF (x^.class = OPT.Nconst) & ((0 > x^.conval^.intval) OR (x^.conval^.intval > OPM.MaxSet)) THEN err(202) IF (x^.class = OPT.Nconst) & ((0 > x^.conval^.intval) OR (x^.conval^.intval >= p.typ.size*8)) THEN err(202)
END; END;
p := NewOp(OPT.Nassign, fctno, p, x) p := NewOp(OPT.Nassign, fctno, p, x)
ELSE err(111) ELSE err(111)

View file

@ -552,7 +552,7 @@ MODULE OPM; (* RC 6.3.89 / 28.6.89, J.Templ 10.7.89 / 22.7.96 *)
END FPrint; END FPrint;
PROCEDURE FPrintSet*(VAR fp: LONGINT; set: SET); PROCEDURE FPrintSet*(VAR fp: LONGINT; set: SET); (*SYSTEM.SET64);*)
BEGIN FPrint(fp, SYSTEM.VAL(LONGINT, set)) BEGIN FPrint(fp, SYSTEM.VAL(LONGINT, set))
END FPrintSet; END FPrintSet;
@ -603,12 +603,7 @@ MODULE OPM; (* RC 6.3.89 / 28.6.89, J.Templ 10.7.89 / 22.7.96 *)
BEGIN Files.ReadNum(oldSF, k); RETURN k BEGIN Files.ReadNum(oldSF, k); RETURN k
END SymRInt64; END SymRInt64;
(* todo - combine RSet64 and RSet *) PROCEDURE SymRSet*(VAR s: SET); (*SYSTEM.SET64);*)
PROCEDURE SymRSet64*(VAR s: SYSTEM.SET64);
BEGIN Files.ReadNum(oldSF, s)
END SymRSet64;
PROCEDURE SymRSet*(VAR s: SET);
BEGIN Files.ReadNum(oldSF, s) BEGIN Files.ReadNum(oldSF, s)
END SymRSet; END SymRSet;
@ -653,7 +648,7 @@ MODULE OPM; (* RC 6.3.89 / 28.6.89, J.Templ 10.7.89 / 22.7.96 *)
BEGIN Files.WriteNum(newSF, i) BEGIN Files.WriteNum(newSF, i)
END SymWInt; END SymWInt;
(* todo (*
PROCEDURE SymWSet*(s: SYSTEM.SET64); PROCEDURE SymWSet*(s: SYSTEM.SET64);
BEGIN Files.WriteNum(newSF, SYSTEM.VAL(SYSTEM.INT64, s)) BEGIN Files.WriteNum(newSF, SYSTEM.VAL(SYSTEM.INT64, s))
END SymWSet; END SymWSet;

View file

@ -15,9 +15,7 @@ TYPE
ext*: ConstExt; (* string or code for code proc *) ext*: ConstExt; (* string or code for code proc *)
intval*: SYSTEM.INT64; (* constant value or adr, proc par size, text position or least case label *) intval*: SYSTEM.INT64; (* constant value or adr, proc par size, text position or least case label *)
intval2*: LONGINT; (* string length, proc var size or larger case label *) intval2*: LONGINT; (* string length, proc var size or larger case label *)
(* todo (*setval*: SYSTEM.SET64;*) (* constant value, procedure body present or "ELSE" present in case *)
setval*: SYSTEM.SET64; (* constant value, procedure body present or "ELSE" present in case *)
*)
setval*: SET; (* constant value, procedure body present or "ELSE" present in case *) setval*: SET; (* constant value, procedure body present or "ELSE" present in case *)
realval*: LONGREAL (* real or longreal constant value *) realval*: LONGREAL (* real or longreal constant value *)
END; END;