mirror of
https://github.com/vishapoberon/compiler.git
synced 2026-04-06 06:22:25 +00:00
moved strtoreal functions to strings module.
This commit is contained in:
parent
b5c76a0ee3
commit
211f69c89a
3 changed files with 76 additions and 76 deletions
|
|
@ -1,6 +1,6 @@
|
||||||
MODULE In;
|
MODULE In;
|
||||||
|
|
||||||
IMPORT Platform, SYSTEM, Reals, Out;
|
IMPORT Platform, SYSTEM, Strings, Out;
|
||||||
|
|
||||||
VAR
|
VAR
|
||||||
Done-: BOOLEAN;
|
Done-: BOOLEAN;
|
||||||
|
|
@ -136,82 +136,12 @@ PROCEDURE Name*(VAR name: ARRAY OF CHAR); (* Read filename. Presumably using she
|
||||||
BEGIN HALT(99) (* Not implemented *)
|
BEGIN HALT(99) (* Not implemented *)
|
||||||
END Name;
|
END Name;
|
||||||
|
|
||||||
PROCEDURE StrToReal(s: ARRAY OF CHAR; VAR r: REAL);
|
|
||||||
VAR p, e: INTEGER; y, g: REAL; neg, negE: BOOLEAN;
|
|
||||||
BEGIN
|
|
||||||
p := 0;
|
|
||||||
WHILE (s[p] = " ") OR (s[p] = "0") DO INC(p) END;
|
|
||||||
IF s[p] = "-" THEN neg := TRUE; INC(p) ELSE neg := FALSE END;
|
|
||||||
WHILE (s[p] = " ") OR (s[p] = "0") DO INC(p) END;
|
|
||||||
|
|
||||||
y := 0;
|
|
||||||
WHILE ("0" <= s[p]) & (s[p] <= "9") DO
|
|
||||||
y := y * 10 + (ORD(s[p]) - 30H);
|
|
||||||
INC(p);
|
|
||||||
END;
|
|
||||||
IF s[p] = "." THEN
|
|
||||||
INC(p); g := 1;
|
|
||||||
WHILE ("0" <= s[p]) & (s[p] <= "9") DO
|
|
||||||
g := g / 10; y := y + g * (ORD(s[p]) - 30H);
|
|
||||||
INC(p);
|
|
||||||
END;
|
|
||||||
END;
|
|
||||||
IF (s[p] = "D") OR (s[p] = "E") THEN
|
|
||||||
INC(p); e := 0;
|
|
||||||
IF s[p] = "-" THEN negE := TRUE; INC(p) ELSE negE := FALSE END;
|
|
||||||
WHILE (s[p] = "0") DO INC(p) END;
|
|
||||||
WHILE ("0" <= s[p]) & (s[p] <= "9") DO
|
|
||||||
e := e * 10 + (ORD(s[p]) - 30H);
|
|
||||||
INC(p);
|
|
||||||
END;
|
|
||||||
IF negE THEN y := y / Reals.Ten(e)
|
|
||||||
ELSE y := y * Reals.Ten(e) END;
|
|
||||||
END;
|
|
||||||
IF neg THEN y := -y END;
|
|
||||||
r := y;
|
|
||||||
END StrToReal;
|
|
||||||
|
|
||||||
PROCEDURE StrToLongReal(s: ARRAY OF CHAR; VAR r: LONGREAL);
|
|
||||||
VAR p, e: INTEGER; y, g: LONGREAL; neg, negE: BOOLEAN;
|
|
||||||
BEGIN
|
|
||||||
p := 0;
|
|
||||||
WHILE (s[p] = " ") OR (s[p] = "0") DO INC(p) END;
|
|
||||||
IF s[p] = "-" THEN neg := TRUE; INC(p) ELSE neg := FALSE END;
|
|
||||||
WHILE (s[p] = " ") OR (s[p] = "0") DO INC(p) END;
|
|
||||||
|
|
||||||
y := 0;
|
|
||||||
WHILE ("0" <= s[p]) & (s[p] <= "9") DO
|
|
||||||
y := y * 10 + (ORD(s[p]) - 30H);
|
|
||||||
INC(p);
|
|
||||||
END;
|
|
||||||
IF s[p] = "." THEN
|
|
||||||
INC(p); g := 1;
|
|
||||||
WHILE ("0" <= s[p]) & (s[p] <= "9") DO
|
|
||||||
g := g / 10; y := y + g * (ORD(s[p]) - 30H);
|
|
||||||
INC(p);
|
|
||||||
END;
|
|
||||||
END;
|
|
||||||
IF (s[p] = "D") OR (s[p] = "E") THEN
|
|
||||||
INC(p); e := 0;
|
|
||||||
IF s[p] = "-" THEN negE := TRUE; INC(p) ELSE negE := FALSE END;
|
|
||||||
WHILE (s[p] = "0") DO INC(p) END;
|
|
||||||
WHILE ("0" <= s[p]) & (s[p] <= "9") DO
|
|
||||||
e := e * 10 + (ORD(s[p]) - 30H);
|
|
||||||
INC(p);
|
|
||||||
END;
|
|
||||||
IF negE THEN y := y / Reals.Ten(e)
|
|
||||||
ELSE y := y * Reals.Ten(e) END;
|
|
||||||
END;
|
|
||||||
IF neg THEN y := -y END;
|
|
||||||
r := y;
|
|
||||||
END StrToLongReal;
|
|
||||||
|
|
||||||
PROCEDURE Real*(VAR x: REAL);
|
PROCEDURE Real*(VAR x: REAL);
|
||||||
VAR
|
VAR
|
||||||
str: ARRAY 16 OF CHAR;
|
str: ARRAY 16 OF CHAR;
|
||||||
BEGIN
|
BEGIN
|
||||||
Line(str);
|
Line(str);
|
||||||
StrToReal(str, x);
|
Strings.StrToReal(str, x);
|
||||||
END Real;
|
END Real;
|
||||||
|
|
||||||
PROCEDURE LongReal*(VAR y: LONGREAL);
|
PROCEDURE LongReal*(VAR y: LONGREAL);
|
||||||
|
|
@ -219,7 +149,7 @@ VAR
|
||||||
str: ARRAY 16 OF CHAR;
|
str: ARRAY 16 OF CHAR;
|
||||||
BEGIN
|
BEGIN
|
||||||
Line(str);
|
Line(str);
|
||||||
StrToLongReal(str, y);
|
Strings.StrToLongReal(str, y);
|
||||||
END LongReal;
|
END LongReal;
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -28,8 +28,8 @@ Strings.Cap(s)
|
||||||
replaces each lower case letter in s by its upper case equivalent.
|
replaces each lower case letter in s by its upper case equivalent.
|
||||||
-------------------------------------------------------------*)
|
-------------------------------------------------------------*)
|
||||||
(* added from trianus v4 *)
|
(* added from trianus v4 *)
|
||||||
MODULE Strings; (*HM 94-06-22 / *)
|
MODULE Strings; (*HM 94-06-22 / *) (* noch 2017-06-21 *)
|
||||||
|
IMPORT Reals;
|
||||||
|
|
||||||
PROCEDURE Length* (s: ARRAY OF CHAR): INTEGER;
|
PROCEDURE Length* (s: ARRAY OF CHAR): INTEGER;
|
||||||
VAR i: LONGINT;
|
VAR i: LONGINT;
|
||||||
|
|
@ -153,4 +153,74 @@ BEGIN
|
||||||
RETURN M(string, pattern, Length(string)-1, Length(pattern)-1)
|
RETURN M(string, pattern, Length(string)-1, Length(pattern)-1)
|
||||||
END Match;
|
END Match;
|
||||||
|
|
||||||
|
PROCEDURE StrToReal*(s: ARRAY OF CHAR; VAR r: REAL);
|
||||||
|
VAR p, e: INTEGER; y, g: REAL; neg, negE: BOOLEAN;
|
||||||
|
BEGIN
|
||||||
|
p := 0;
|
||||||
|
WHILE (s[p] = " ") OR (s[p] = "0") DO INC(p) END;
|
||||||
|
IF s[p] = "-" THEN neg := TRUE; INC(p) ELSE neg := FALSE END;
|
||||||
|
WHILE (s[p] = " ") OR (s[p] = "0") DO INC(p) END;
|
||||||
|
|
||||||
|
y := 0;
|
||||||
|
WHILE ("0" <= s[p]) & (s[p] <= "9") DO
|
||||||
|
y := y * 10 + (ORD(s[p]) - 30H);
|
||||||
|
INC(p);
|
||||||
|
END;
|
||||||
|
IF s[p] = "." THEN
|
||||||
|
INC(p); g := 1;
|
||||||
|
WHILE ("0" <= s[p]) & (s[p] <= "9") DO
|
||||||
|
g := g / 10; y := y + g * (ORD(s[p]) - 30H);
|
||||||
|
INC(p);
|
||||||
|
END;
|
||||||
|
END;
|
||||||
|
IF (s[p] = "D") OR (s[p] = "E") THEN
|
||||||
|
INC(p); e := 0;
|
||||||
|
IF s[p] = "-" THEN negE := TRUE; INC(p) ELSE negE := FALSE END;
|
||||||
|
WHILE (s[p] = "0") DO INC(p) END;
|
||||||
|
WHILE ("0" <= s[p]) & (s[p] <= "9") DO
|
||||||
|
e := e * 10 + (ORD(s[p]) - 30H);
|
||||||
|
INC(p);
|
||||||
|
END;
|
||||||
|
IF negE THEN y := y / Reals.Ten(e)
|
||||||
|
ELSE y := y * Reals.Ten(e) END;
|
||||||
|
END;
|
||||||
|
IF neg THEN y := -y END;
|
||||||
|
r := y;
|
||||||
|
END StrToReal;
|
||||||
|
|
||||||
|
PROCEDURE StrToLongReal*(s: ARRAY OF CHAR; VAR r: LONGREAL);
|
||||||
|
VAR p, e: INTEGER; y, g: LONGREAL; neg, negE: BOOLEAN;
|
||||||
|
BEGIN
|
||||||
|
p := 0;
|
||||||
|
WHILE (s[p] = " ") OR (s[p] = "0") DO INC(p) END;
|
||||||
|
IF s[p] = "-" THEN neg := TRUE; INC(p) ELSE neg := FALSE END;
|
||||||
|
WHILE (s[p] = " ") OR (s[p] = "0") DO INC(p) END;
|
||||||
|
|
||||||
|
y := 0;
|
||||||
|
WHILE ("0" <= s[p]) & (s[p] <= "9") DO
|
||||||
|
y := y * 10 + (ORD(s[p]) - 30H);
|
||||||
|
INC(p);
|
||||||
|
END;
|
||||||
|
IF s[p] = "." THEN
|
||||||
|
INC(p); g := 1;
|
||||||
|
WHILE ("0" <= s[p]) & (s[p] <= "9") DO
|
||||||
|
g := g / 10; y := y + g * (ORD(s[p]) - 30H);
|
||||||
|
INC(p);
|
||||||
|
END;
|
||||||
|
END;
|
||||||
|
IF (s[p] = "D") OR (s[p] = "E") THEN
|
||||||
|
INC(p); e := 0;
|
||||||
|
IF s[p] = "-" THEN negE := TRUE; INC(p) ELSE negE := FALSE END;
|
||||||
|
WHILE (s[p] = "0") DO INC(p) END;
|
||||||
|
WHILE ("0" <= s[p]) & (s[p] <= "9") DO
|
||||||
|
e := e * 10 + (ORD(s[p]) - 30H);
|
||||||
|
INC(p);
|
||||||
|
END;
|
||||||
|
IF negE THEN y := y / Reals.Ten(e)
|
||||||
|
ELSE y := y * Reals.Ten(e) END;
|
||||||
|
END;
|
||||||
|
IF neg THEN y := -y END;
|
||||||
|
r := y;
|
||||||
|
END StrToLongReal;
|
||||||
|
|
||||||
END Strings.
|
END Strings.
|
||||||
|
|
|
||||||
|
|
@ -106,11 +106,11 @@ translate:
|
||||||
cd $(BUILDDIR); $(ROOTDIR)/$(OBECOMP) -SsF -A$(ADRSIZE)$(ALIGNMENT) -O$(MODEL) ../../Configuration.Mod
|
cd $(BUILDDIR); $(ROOTDIR)/$(OBECOMP) -SsF -A$(ADRSIZE)$(ALIGNMENT) -O$(MODEL) ../../Configuration.Mod
|
||||||
cd $(BUILDDIR); $(ROOTDIR)/$(OBECOMP) -SsF -A$(ADRSIZE)$(ALIGNMENT) -O$(MODEL) ../../src/runtime/Platform$(PLATFORM).Mod
|
cd $(BUILDDIR); $(ROOTDIR)/$(OBECOMP) -SsF -A$(ADRSIZE)$(ALIGNMENT) -O$(MODEL) ../../src/runtime/Platform$(PLATFORM).Mod
|
||||||
cd $(BUILDDIR); $(ROOTDIR)/$(OBECOMP) -SsFapx -A$(ADRSIZE)$(ALIGNMENT) -O$(MODEL) ../../src/runtime/Heap.Mod
|
cd $(BUILDDIR); $(ROOTDIR)/$(OBECOMP) -SsFapx -A$(ADRSIZE)$(ALIGNMENT) -O$(MODEL) ../../src/runtime/Heap.Mod
|
||||||
|
cd $(BUILDDIR); $(ROOTDIR)/$(OBECOMP) -SsF -A$(ADRSIZE)$(ALIGNMENT) -O$(MODEL) ../../src/runtime/Reals.Mod
|
||||||
cd $(BUILDDIR); $(ROOTDIR)/$(OBECOMP) -SsF -A$(ADRSIZE)$(ALIGNMENT) -O$(MODEL) ../../src/runtime/Strings.Mod
|
cd $(BUILDDIR); $(ROOTDIR)/$(OBECOMP) -SsF -A$(ADRSIZE)$(ALIGNMENT) -O$(MODEL) ../../src/runtime/Strings.Mod
|
||||||
cd $(BUILDDIR); $(ROOTDIR)/$(OBECOMP) -SsF -A$(ADRSIZE)$(ALIGNMENT) -O$(MODEL) ../../src/runtime/Out.Mod
|
cd $(BUILDDIR); $(ROOTDIR)/$(OBECOMP) -SsF -A$(ADRSIZE)$(ALIGNMENT) -O$(MODEL) ../../src/runtime/Out.Mod
|
||||||
cd $(BUILDDIR); $(ROOTDIR)/$(OBECOMP) -SsF -A$(ADRSIZE)$(ALIGNMENT) -O$(MODEL) ../../src/runtime/Modules.Mod
|
cd $(BUILDDIR); $(ROOTDIR)/$(OBECOMP) -SsF -A$(ADRSIZE)$(ALIGNMENT) -O$(MODEL) ../../src/runtime/Modules.Mod
|
||||||
cd $(BUILDDIR); $(ROOTDIR)/$(OBECOMP) -SsFx -A$(ADRSIZE)$(ALIGNMENT) -O$(MODEL) ../../src/runtime/Files.Mod
|
cd $(BUILDDIR); $(ROOTDIR)/$(OBECOMP) -SsFx -A$(ADRSIZE)$(ALIGNMENT) -O$(MODEL) ../../src/runtime/Files.Mod
|
||||||
cd $(BUILDDIR); $(ROOTDIR)/$(OBECOMP) -SsF -A$(ADRSIZE)$(ALIGNMENT) -O$(MODEL) ../../src/runtime/Reals.Mod
|
|
||||||
cd $(BUILDDIR); $(ROOTDIR)/$(OBECOMP) -SsF -A$(ADRSIZE)$(ALIGNMENT) -O$(MODEL) ../../src/runtime/Texts.Mod
|
cd $(BUILDDIR); $(ROOTDIR)/$(OBECOMP) -SsF -A$(ADRSIZE)$(ALIGNMENT) -O$(MODEL) ../../src/runtime/Texts.Mod
|
||||||
cd $(BUILDDIR); $(ROOTDIR)/$(OBECOMP) -SsF -A$(ADRSIZE)$(ALIGNMENT) -O$(MODEL) ../../src/runtime/VT100.Mod
|
cd $(BUILDDIR); $(ROOTDIR)/$(OBECOMP) -SsF -A$(ADRSIZE)$(ALIGNMENT) -O$(MODEL) ../../src/runtime/VT100.Mod
|
||||||
cd $(BUILDDIR); $(ROOTDIR)/$(OBECOMP) -SsF -A$(ADRSIZE)$(ALIGNMENT) -O$(MODEL) ../../src/compiler/OPM.Mod
|
cd $(BUILDDIR); $(ROOTDIR)/$(OBECOMP) -SsF -A$(ADRSIZE)$(ALIGNMENT) -O$(MODEL) ../../src/compiler/OPM.Mod
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue