mirror of
https://github.com/vishapoberon/compiler.git
synced 2026-04-06 22:42:24 +00:00
small addition in system functions
This commit is contained in:
parent
d3b0c0352a
commit
fe36147392
3 changed files with 11 additions and 7 deletions
|
|
@ -525,13 +525,13 @@ MODULE OPB; (* RC 6.3.89 / 21.2.94 *) (* object model 17.1.93 *)
|
||||||
IF g = String THEN CharToString(x)
|
IF g = String THEN CharToString(x)
|
||||||
ELSE err(100); y^.typ := x^.typ; yval^ := xval^
|
ELSE err(100); y^.typ := x^.typ; yval^ := xval^
|
||||||
END ;
|
END ;
|
||||||
| SInt(*, Int8*):
|
| SInt, Int8:
|
||||||
IF g IN intSet THEN x^.typ := y^.typ
|
IF g IN intSet THEN x^.typ := y^.typ
|
||||||
ELSIF g = Real THEN x^.typ := OPT.realtyp; xval^.realval := xval^.intval
|
ELSIF g = Real THEN x^.typ := OPT.realtyp; xval^.realval := xval^.intval
|
||||||
ELSIF g = LReal THEN x^.typ := OPT.lrltyp; xval^.realval := xval^.intval
|
ELSIF g = LReal THEN x^.typ := OPT.lrltyp; xval^.realval := xval^.intval
|
||||||
ELSE err(100); y^.typ := x^.typ; yval^ := xval^
|
ELSE err(100); y^.typ := x^.typ; yval^ := xval^
|
||||||
END
|
END
|
||||||
| Int(*, Int16, Int32, Int64*):
|
| Int, Int16, Int32, Int64:
|
||||||
IF g = SInt THEN y^.typ := OPT.inttyp
|
IF g = SInt THEN y^.typ := OPT.inttyp
|
||||||
ELSIF g IN intSet THEN x^.typ := y^.typ
|
ELSIF g IN intSet THEN x^.typ := y^.typ
|
||||||
ELSIF g = Real THEN x^.typ := OPT.realtyp; xval^.realval := xval^.intval
|
ELSIF g = Real THEN x^.typ := OPT.realtyp; xval^.realval := xval^.intval
|
||||||
|
|
@ -762,7 +762,7 @@ MODULE OPB; (* RC 6.3.89 / 21.2.94 *) (* object model 17.1.93 *)
|
||||||
CASE z^.typ^.form OF
|
CASE z^.typ^.form OF
|
||||||
Char:
|
Char:
|
||||||
IF z^.class = Nconst THEN CharToString(z) ELSE err(100) END
|
IF z^.class = Nconst THEN CharToString(z) ELSE err(100) END
|
||||||
| SInt(*, Int8*):
|
| SInt, Int8:
|
||||||
IF g IN intSet + realSet THEN Convert(z, y^.typ)
|
IF g IN intSet + realSet THEN Convert(z, y^.typ)
|
||||||
ELSE err(100)
|
ELSE err(100)
|
||||||
END
|
END
|
||||||
|
|
@ -771,7 +771,7 @@ MODULE OPB; (* RC 6.3.89 / 21.2.94 *) (* object model 17.1.93 *)
|
||||||
ELSIF g IN intSet + realSet THEN Convert(z, y^.typ)
|
ELSIF g IN intSet + realSet THEN Convert(z, y^.typ)
|
||||||
ELSE err(100)
|
ELSE err(100)
|
||||||
END
|
END
|
||||||
| LInt(*, Int16, Int32, Int64*):
|
| LInt, Int16, Int32, Int64:
|
||||||
IF g IN intSet THEN Convert(y, z^.typ)
|
IF g IN intSet THEN Convert(y, z^.typ)
|
||||||
ELSIF g IN realSet THEN Convert(z, y^.typ)
|
ELSIF g IN realSet THEN Convert(z, y^.typ)
|
||||||
ELSE err(100)
|
ELSE err(100)
|
||||||
|
|
@ -895,7 +895,7 @@ MODULE OPB; (* RC 6.3.89 / 21.2.94 *) (* object model 17.1.93 *)
|
||||||
| lss, leq, gtr, geq:
|
| lss, leq, gtr, geq:
|
||||||
IF (f IN {Undef, Char..LReal, Int8..Int64}) OR strings(z, y) THEN typ := OPT.booltyp
|
IF (f IN {Undef, Char..LReal, Int8..Int64}) OR strings(z, y) THEN typ := OPT.booltyp
|
||||||
ELSE
|
ELSE
|
||||||
OPM.LogWStr("ELSE in Op()"); OPM.LogWLn;
|
OPM.LogWLn; OPM.LogWStr("ELSE in Op()"); OPM.LogWLn;
|
||||||
err(108); typ := OPT.undftyp
|
err(108); typ := OPT.undftyp
|
||||||
END ;
|
END ;
|
||||||
NewOp(op, typ, z, y)
|
NewOp(op, typ, z, y)
|
||||||
|
|
@ -991,7 +991,11 @@ MODULE OPB; (* RC 6.3.89 / 21.2.94 *) (* object model 17.1.93 *)
|
||||||
| Int:
|
| Int:
|
||||||
IF ~(g IN {SInt, Int}) THEN err(113) END
|
IF ~(g IN {SInt, Int}) THEN err(113) END
|
||||||
| LInt:
|
| LInt:
|
||||||
IF ~(g IN intSet) THEN err(113) END
|
IF OPM.LIntSize = 4 THEN
|
||||||
|
IF ~(g IN {SInt, Int, LInt, Int8, Int16, Int32}) THEN err(113) END
|
||||||
|
ELSE (* assume OPM.LIntSize = 8 *)
|
||||||
|
IF ~(g IN {SInt, Int, LInt, Int8, Int16, Int32, Int64}) THEN err(113) END
|
||||||
|
END;
|
||||||
| Real:
|
| Real:
|
||||||
IF ~(g IN {SInt..Real}) THEN err(113) END
|
IF ~(g IN {SInt..Real}) THEN err(113) END
|
||||||
| LReal:
|
| LReal:
|
||||||
|
|
@ -1138,7 +1142,7 @@ avoid unnecessary intermediate variables in voc
|
||||||
END
|
END
|
||||||
| chrfn: (*CHR*)
|
| chrfn: (*CHR*)
|
||||||
IF (x^.class = Ntype) OR (x^.class = Nproc) THEN err(126)
|
IF (x^.class = Ntype) OR (x^.class = Nproc) THEN err(126)
|
||||||
ELSIF f IN {Undef, SInt..LInt} THEN Convert(x, OPT.chartyp)
|
ELSIF f IN {Undef, SInt..LInt, Int8..Int64} THEN Convert(x, OPT.chartyp)
|
||||||
ELSE err(111); x^.typ := OPT.chartyp
|
ELSE err(111); x^.typ := OPT.chartyp
|
||||||
END
|
END
|
||||||
| shortfn: (*SHORT*)
|
| shortfn: (*SHORT*)
|
||||||
|
|
|
||||||
BIN
voc
BIN
voc
Binary file not shown.
Binary file not shown.
Loading…
Add table
Add a link
Reference in a new issue