This commit is contained in:
David Brown 2016-12-07 13:09:06 +00:00
commit 16c3f32484
7 changed files with 39 additions and 14 deletions

View file

@ -101,6 +101,27 @@ executable binary.
Execute as usual on Linux ('./hello') or Windows ('hello').
In order to know module's interface, use "showdef" program.
```
$ showdef Out.sym
DEFINITION Out;
VAR
IsConsole-: BOOLEAN;
PROCEDURE Char(ch: CHAR);
PROCEDURE Flush;
PROCEDURE Int(x: INT64; n: INT64);
PROCEDURE Ln;
PROCEDURE LongReal(x: LONGREAL; n: INT16);
PROCEDURE Open;
PROCEDURE Real(x: REAL; n: INT16);
PROCEDURE String(str: ARRAY OF CHAR);
PROCEDURE Ten(e: INT16): LONGREAL;
END Out.
```
Also see [**Compiling**](/doc/Compiling.md).

View file

@ -1665,7 +1665,7 @@ static void OPP_Block (OPT_Node *procdec, OPT_Node *statseq)
obj->typ = OPT_undftyp;
OPP_CheckMark(&obj->vis);
if (OPP_sym == 9) {
if (((((((((__STRCMP(obj->name, "INTEGER") == 0 || __STRCMP(obj->name, "SHORTINT") == 0) || __STRCMP(obj->name, "LONGINT") == 0) || __STRCMP(obj->name, "HUGEINT") == 0) || __STRCMP(obj->name, "LONGREAL") == 0) || __STRCMP(obj->name, "REAL") == 0) || __STRCMP(obj->name, "CHAR") == 0) || __STRCMP(obj->name, "SET") == 0) || __STRCMP(obj->name, "TRUE") == 0) || __STRCMP(obj->name, "FALSE") == 0) {
if (((((((((__STRCMP(obj->name, "SHORTINT") == 0 || __STRCMP(obj->name, "INTEGER") == 0) || __STRCMP(obj->name, "LONGINT") == 0) || __STRCMP(obj->name, "HUGEINT") == 0) || __STRCMP(obj->name, "REAL") == 0) || __STRCMP(obj->name, "LONGREAL") == 0) || __STRCMP(obj->name, "SET") == 0) || __STRCMP(obj->name, "CHAR") == 0) || __STRCMP(obj->name, "TRUE") == 0) || __STRCMP(obj->name, "FALSE") == 0) {
OPM_Mark(-310, OPM_curpos);
}
OPS_Get(&OPP_sym);

View file

@ -1665,7 +1665,7 @@ static void OPP_Block (OPT_Node *procdec, OPT_Node *statseq)
obj->typ = OPT_undftyp;
OPP_CheckMark(&obj->vis);
if (OPP_sym == 9) {
if (((((((((__STRCMP(obj->name, "INTEGER") == 0 || __STRCMP(obj->name, "SHORTINT") == 0) || __STRCMP(obj->name, "LONGINT") == 0) || __STRCMP(obj->name, "HUGEINT") == 0) || __STRCMP(obj->name, "LONGREAL") == 0) || __STRCMP(obj->name, "REAL") == 0) || __STRCMP(obj->name, "CHAR") == 0) || __STRCMP(obj->name, "SET") == 0) || __STRCMP(obj->name, "TRUE") == 0) || __STRCMP(obj->name, "FALSE") == 0) {
if (((((((((__STRCMP(obj->name, "SHORTINT") == 0 || __STRCMP(obj->name, "INTEGER") == 0) || __STRCMP(obj->name, "LONGINT") == 0) || __STRCMP(obj->name, "HUGEINT") == 0) || __STRCMP(obj->name, "REAL") == 0) || __STRCMP(obj->name, "LONGREAL") == 0) || __STRCMP(obj->name, "SET") == 0) || __STRCMP(obj->name, "CHAR") == 0) || __STRCMP(obj->name, "TRUE") == 0) || __STRCMP(obj->name, "FALSE") == 0) {
OPM_Mark(-310, OPM_curpos);
}
OPS_Get(&OPP_sym);

View file

@ -1665,7 +1665,7 @@ static void OPP_Block (OPT_Node *procdec, OPT_Node *statseq)
obj->typ = OPT_undftyp;
OPP_CheckMark(&obj->vis);
if (OPP_sym == 9) {
if (((((((((__STRCMP(obj->name, "INTEGER") == 0 || __STRCMP(obj->name, "SHORTINT") == 0) || __STRCMP(obj->name, "LONGINT") == 0) || __STRCMP(obj->name, "HUGEINT") == 0) || __STRCMP(obj->name, "LONGREAL") == 0) || __STRCMP(obj->name, "REAL") == 0) || __STRCMP(obj->name, "CHAR") == 0) || __STRCMP(obj->name, "SET") == 0) || __STRCMP(obj->name, "TRUE") == 0) || __STRCMP(obj->name, "FALSE") == 0) {
if (((((((((__STRCMP(obj->name, "SHORTINT") == 0 || __STRCMP(obj->name, "INTEGER") == 0) || __STRCMP(obj->name, "LONGINT") == 0) || __STRCMP(obj->name, "HUGEINT") == 0) || __STRCMP(obj->name, "REAL") == 0) || __STRCMP(obj->name, "LONGREAL") == 0) || __STRCMP(obj->name, "SET") == 0) || __STRCMP(obj->name, "CHAR") == 0) || __STRCMP(obj->name, "TRUE") == 0) || __STRCMP(obj->name, "FALSE") == 0) {
OPM_Mark(-310, OPM_curpos);
}
OPS_Get(&OPP_sym);

View file

@ -1665,7 +1665,7 @@ static void OPP_Block (OPT_Node *procdec, OPT_Node *statseq)
obj->typ = OPT_undftyp;
OPP_CheckMark(&obj->vis);
if (OPP_sym == 9) {
if (((((((((__STRCMP(obj->name, "INTEGER") == 0 || __STRCMP(obj->name, "SHORTINT") == 0) || __STRCMP(obj->name, "LONGINT") == 0) || __STRCMP(obj->name, "HUGEINT") == 0) || __STRCMP(obj->name, "LONGREAL") == 0) || __STRCMP(obj->name, "REAL") == 0) || __STRCMP(obj->name, "CHAR") == 0) || __STRCMP(obj->name, "SET") == 0) || __STRCMP(obj->name, "TRUE") == 0) || __STRCMP(obj->name, "FALSE") == 0) {
if (((((((((__STRCMP(obj->name, "SHORTINT") == 0 || __STRCMP(obj->name, "INTEGER") == 0) || __STRCMP(obj->name, "LONGINT") == 0) || __STRCMP(obj->name, "HUGEINT") == 0) || __STRCMP(obj->name, "REAL") == 0) || __STRCMP(obj->name, "LONGREAL") == 0) || __STRCMP(obj->name, "SET") == 0) || __STRCMP(obj->name, "CHAR") == 0) || __STRCMP(obj->name, "TRUE") == 0) || __STRCMP(obj->name, "FALSE") == 0) {
OPM_Mark(-310, OPM_curpos);
}
OPS_Get(&OPP_sym);

View file

@ -1665,7 +1665,7 @@ static void OPP_Block (OPT_Node *procdec, OPT_Node *statseq)
obj->typ = OPT_undftyp;
OPP_CheckMark(&obj->vis);
if (OPP_sym == 9) {
if (((((((((__STRCMP(obj->name, "INTEGER") == 0 || __STRCMP(obj->name, "SHORTINT") == 0) || __STRCMP(obj->name, "LONGINT") == 0) || __STRCMP(obj->name, "HUGEINT") == 0) || __STRCMP(obj->name, "LONGREAL") == 0) || __STRCMP(obj->name, "REAL") == 0) || __STRCMP(obj->name, "CHAR") == 0) || __STRCMP(obj->name, "SET") == 0) || __STRCMP(obj->name, "TRUE") == 0) || __STRCMP(obj->name, "FALSE") == 0) {
if (((((((((__STRCMP(obj->name, "SHORTINT") == 0 || __STRCMP(obj->name, "INTEGER") == 0) || __STRCMP(obj->name, "LONGINT") == 0) || __STRCMP(obj->name, "HUGEINT") == 0) || __STRCMP(obj->name, "REAL") == 0) || __STRCMP(obj->name, "LONGREAL") == 0) || __STRCMP(obj->name, "SET") == 0) || __STRCMP(obj->name, "CHAR") == 0) || __STRCMP(obj->name, "TRUE") == 0) || __STRCMP(obj->name, "FALSE") == 0) {
OPM_Mark(-310, OPM_curpos);
}
OPS_Get(&OPP_sym);

View file

@ -72,8 +72,8 @@ MODULE OPP; (* NW, RC 6.3.89 / 10.2.94 *) (* object model 4.12.93 *)
VAR x: OPT.Node; sf: SYSTEM.INT64;
BEGIN
IF sym = OPS.lbrak THEN OPS.Get(sym);
IF ~OPT.SYSimported THEN err(135) END;
ConstExpression(x);
IF ~OPT.SYSimported THEN err(135) END;
ConstExpression(x);
IF x^.typ^.form = OPT.Int THEN sf := x^.conval^.intval;
IF (sf < 0) OR (sf > OPM.MaxSysFlag) THEN err(220); sf := 0 END
ELSE err(51); sf := 0
@ -737,7 +737,7 @@ MODULE OPP; (* NW, RC 6.3.89 / 10.2.94 *) (* object model 4.12.93 *)
IF e THEN OPS.Get(sym); StatSeq(y)
ELSE
y := NIL;
OPM.Mark(-307, OPM.curpos); (* notice about no OPS.else symbol; -- noch *)
OPM.Mark(-307, OPM.curpos); (* notice about no OPS.else symbol; -- noch *)
END ;
OPB.Construct(OPT.Ncaselse, cases, y); OPB.Construct(OPT.Ncase, x, cases);
cases^.conval := OPT.NewConst();
@ -922,13 +922,17 @@ MODULE OPP; (* NW, RC 6.3.89 / 10.2.94 *) (* object model 4.12.93 *)
OPT.Insert(OPS.name, obj); obj^.mode := OPT.Typ; obj^.typ := OPT.undftyp;
CheckMark(obj^.vis);
IF sym = OPS.eql THEN
IF (obj^.name = "INTEGER") OR (obj^.name = "SHORTINT") OR
(obj^.name = "LONGINT") OR (obj^.name = "HUGEINT") OR
(obj^.name = "LONGREAL") OR (obj^.name = "REAL") OR
(obj^.name = "CHAR") OR (obj^.name = "SET") OR
(obj^.name = "TRUE") OR (obj^.name = "FALSE") THEN
IF (obj^.name = "SHORTINT") OR
(obj^.name = "INTEGER") OR
(obj^.name = "LONGINT") OR
(obj^.name = "HUGEINT") OR
(obj^.name = "REAL") OR
(obj^.name = "LONGREAL") OR
(obj^.name = "SET") OR
(obj^.name = "CHAR") OR
(obj^.name = "TRUE") OR (obj^.name = "FALSE") THEN
OPM.Mark(-310, OPM.curpos); (* notice about aliasing of predefined type *)
END;
END;
OPS.Get(sym); TypeDecl(obj^.typ, obj^.typ)
ELSIF (sym = OPS.becomes) OR (sym = OPS.colon) THEN
err(OPS.eql); OPS.Get(sym); TypeDecl(obj^.typ, obj^.typ)