mirror of
https://github.com/vishapoberon/compiler.git
synced 2026-04-06 00:32:24 +00:00
better handling of faulty symbol files. ethStrings comments fixed.
This commit is contained in:
parent
fa9e73f7af
commit
50b5a1438e
2 changed files with 41 additions and 29 deletions
|
|
@ -811,6 +811,7 @@ BEGIN
|
||||||
conval^.intval := OPM.ConstNotAlloc
|
conval^.intval := OPM.ConstNotAlloc
|
||||||
| NilTyp: conval^.intval := OPM.nilval
|
| NilTyp: conval^.intval := OPM.nilval
|
||||||
ELSE OPM.LogWStr("unhandled case in InConstant(), f = "); OPM.LogWNum(f, 0); OPM.LogWLn;
|
ELSE OPM.LogWStr("unhandled case in InConstant(), f = "); OPM.LogWNum(f, 0); OPM.LogWLn;
|
||||||
|
OPM.err(155) (* Symbol file corrupted *)
|
||||||
END
|
END
|
||||||
END InConstant;
|
END InConstant;
|
||||||
|
|
||||||
|
|
@ -1045,7 +1046,13 @@ BEGIN
|
||||||
END;
|
END;
|
||||||
|
|
||||||
(* Now tag should be a valid object tag *)
|
(* Now tag should be a valid object tag *)
|
||||||
impCtxt.nextTag := tag;
|
(*impCtxt.nextTag := tag;*)
|
||||||
|
|
||||||
|
(* Additional validation for constants *)
|
||||||
|
IF (tag <= Pointer) & (tag = Undef) THEN
|
||||||
|
OPM.err(155); (* Symbol file error *)
|
||||||
|
RETURN NIL
|
||||||
|
END;
|
||||||
|
|
||||||
(* Validate tag value *)
|
(* Validate tag value *)
|
||||||
IF (tag < 0) OR (tag > 50) THEN
|
IF (tag < 0) OR (tag > 50) THEN
|
||||||
|
|
|
||||||
|
|
@ -9,14 +9,19 @@ MODULE ethStrings; (** portable *) (* ejz, *)
|
||||||
IMPORT Texts, Dates := ethDates, Reals := ethReals;
|
IMPORT Texts, Dates := ethDates, Reals := ethReals;
|
||||||
|
|
||||||
CONST
|
CONST
|
||||||
CR* = 0DX; (** the Oberon end of line character *)
|
(** the Oberon end of line character *)
|
||||||
Tab* = 09X; (** the horizontal tab character *)
|
CR* = 0DX;
|
||||||
LF* = 0AX; (** the UNIX end of line character *)
|
(** the horizontal tab character *)
|
||||||
|
Tab* = 09X;
|
||||||
|
(** the UNIX end of line character *)
|
||||||
|
LF* = 0AX;
|
||||||
VAR
|
VAR
|
||||||
isAlpha*: ARRAY 256 OF BOOLEAN; (** all letters in the oberon charset *)
|
(** all letters in the oberon charset *)
|
||||||
ISOToOberon*, OberonToISO*: ARRAY 256 OF CHAR; (** Translation tables for iso-8859-1 to oberon ascii code. *)
|
isAlpha*: ARRAY 256 OF BOOLEAN;
|
||||||
CRLF*: ARRAY 4 OF CHAR; (** end of line "string" used by MS-DOS and most TCP protocols *)
|
(** Translation tables for iso-8859-1 to oberon ascii code. *)
|
||||||
|
ISOToOberon*, OberonToISO*: ARRAY 256 OF CHAR;
|
||||||
|
(** end of line "string" used by MS-DOS and most TCP protocols *)
|
||||||
|
CRLF*: ARRAY 4 OF CHAR;
|
||||||
sDayName: ARRAY 7, 4 OF CHAR;
|
sDayName: ARRAY 7, 4 OF CHAR;
|
||||||
lDayName: ARRAY 7, 12 OF CHAR;
|
lDayName: ARRAY 7, 12 OF CHAR;
|
||||||
sMonthName: ARRAY 12, 4 OF CHAR;
|
sMonthName: ARRAY 12, 4 OF CHAR;
|
||||||
|
|
@ -24,7 +29,7 @@ MODULE ethStrings; (** portable *) (* ejz, *)
|
||||||
dateform, timeform: ARRAY 32 OF CHAR;
|
dateform, timeform: ARRAY 32 OF CHAR;
|
||||||
|
|
||||||
(** Length of str. *)
|
(** Length of str. *)
|
||||||
PROCEDURE Length*(VAR str(** in *): ARRAY OF CHAR): LONGINT;
|
PROCEDURE Length*(VAR str(* in *): ARRAY OF CHAR): LONGINT;
|
||||||
VAR i, l: LONGINT;
|
VAR i, l: LONGINT;
|
||||||
BEGIN
|
BEGIN
|
||||||
l := LEN(str); i := 0;
|
l := LEN(str); i := 0;
|
||||||
|
|
@ -35,7 +40,7 @@ MODULE ethStrings; (** portable *) (* ejz, *)
|
||||||
END Length;
|
END Length;
|
||||||
|
|
||||||
(** Append this to to. *)
|
(** Append this to to. *)
|
||||||
PROCEDURE Append*(VAR to(** in/out *): ARRAY OF CHAR; this: ARRAY OF CHAR);
|
PROCEDURE Append*(VAR to(* in/out *): ARRAY OF CHAR; this: ARRAY OF CHAR);
|
||||||
VAR i, j, l: LONGINT;
|
VAR i, j, l: LONGINT;
|
||||||
BEGIN
|
BEGIN
|
||||||
i := 0;
|
i := 0;
|
||||||
|
|
@ -50,7 +55,7 @@ MODULE ethStrings; (** portable *) (* ejz, *)
|
||||||
END Append;
|
END Append;
|
||||||
|
|
||||||
(** Append this to to. *)
|
(** Append this to to. *)
|
||||||
PROCEDURE AppendCh*(VAR to(** in/out *): ARRAY OF CHAR; this: CHAR);
|
PROCEDURE AppendCh*(VAR to(* in/out *): ARRAY OF CHAR; this: CHAR);
|
||||||
VAR i: LONGINT;
|
VAR i: LONGINT;
|
||||||
BEGIN
|
BEGIN
|
||||||
i := 0;
|
i := 0;
|
||||||
|
|
@ -124,7 +129,7 @@ MODULE ethStrings; (** portable *) (* ejz, *)
|
||||||
END UpperCh;
|
END UpperCh;
|
||||||
|
|
||||||
(** Convert str to all lower-case letters. *)
|
(** Convert str to all lower-case letters. *)
|
||||||
PROCEDURE Lower*(VAR str(** in *), lstr(** out *): ARRAY OF CHAR);
|
PROCEDURE Lower*(VAR str(* in *), lstr(* out *): ARRAY OF CHAR);
|
||||||
VAR i: LONGINT;
|
VAR i: LONGINT;
|
||||||
BEGIN
|
BEGIN
|
||||||
i := 0;
|
i := 0;
|
||||||
|
|
@ -135,7 +140,7 @@ MODULE ethStrings; (** portable *) (* ejz, *)
|
||||||
END Lower;
|
END Lower;
|
||||||
|
|
||||||
(** Convert str to all upper-case letters. *)
|
(** Convert str to all upper-case letters. *)
|
||||||
PROCEDURE Upper*(VAR str(** in *), ustr(** out *): ARRAY OF CHAR);
|
PROCEDURE Upper*(VAR str(* in *), ustr(* out *): ARRAY OF CHAR);
|
||||||
VAR i: LONGINT;
|
VAR i: LONGINT;
|
||||||
BEGIN
|
BEGIN
|
||||||
i := 0;
|
i := 0;
|
||||||
|
|
@ -146,7 +151,7 @@ MODULE ethStrings; (** portable *) (* ejz, *)
|
||||||
END Upper;
|
END Upper;
|
||||||
|
|
||||||
(** Is str prefixed by pre? *)
|
(** Is str prefixed by pre? *)
|
||||||
PROCEDURE Prefix*(pre: ARRAY OF CHAR; VAR str(** in *): ARRAY OF CHAR): BOOLEAN;
|
PROCEDURE Prefix*(pre: ARRAY OF CHAR; VAR str(* in *): ARRAY OF CHAR): BOOLEAN;
|
||||||
VAR i: LONGINT;
|
VAR i: LONGINT;
|
||||||
BEGIN
|
BEGIN
|
||||||
i := 0;
|
i := 0;
|
||||||
|
|
@ -157,7 +162,7 @@ MODULE ethStrings; (** portable *) (* ejz, *)
|
||||||
END Prefix;
|
END Prefix;
|
||||||
|
|
||||||
(** Checks if str is prefixed by pre. The case is ignored. *)
|
(** Checks if str is prefixed by pre. The case is ignored. *)
|
||||||
PROCEDURE CAPPrefix*(pre: ARRAY OF CHAR; VAR str(** in *): ARRAY OF CHAR): BOOLEAN;
|
PROCEDURE CAPPrefix*(pre: ARRAY OF CHAR; VAR str(* in *): ARRAY OF CHAR): BOOLEAN;
|
||||||
VAR i: LONGINT;
|
VAR i: LONGINT;
|
||||||
BEGIN
|
BEGIN
|
||||||
i := 0;
|
i := 0;
|
||||||
|
|
@ -168,7 +173,7 @@ MODULE ethStrings; (** portable *) (* ejz, *)
|
||||||
END CAPPrefix;
|
END CAPPrefix;
|
||||||
|
|
||||||
(** Compare str1 to str2. The case is ignored. *)
|
(** Compare str1 to str2. The case is ignored. *)
|
||||||
PROCEDURE CAPCompare*(VAR str1(** in *), str2(** in *): ARRAY OF CHAR): BOOLEAN;
|
PROCEDURE CAPCompare*(VAR str1(* in *), str2(* in *): ARRAY OF CHAR): BOOLEAN;
|
||||||
VAR i: LONGINT;
|
VAR i: LONGINT;
|
||||||
BEGIN
|
BEGIN
|
||||||
i := 0;
|
i := 0;
|
||||||
|
|
@ -179,7 +184,7 @@ MODULE ethStrings; (** portable *) (* ejz, *)
|
||||||
END CAPCompare;
|
END CAPCompare;
|
||||||
|
|
||||||
(** Get the parameter-value on line. The parameter value is started behind the first colon character. *)
|
(** Get the parameter-value on line. The parameter value is started behind the first colon character. *)
|
||||||
PROCEDURE GetPar*(VAR line(** in *), par(** out *): ARRAY OF CHAR);
|
PROCEDURE GetPar*(VAR line(* in *), par(* out *): ARRAY OF CHAR);
|
||||||
VAR i, j, l: LONGINT;
|
VAR i, j, l: LONGINT;
|
||||||
BEGIN
|
BEGIN
|
||||||
i := 0;
|
i := 0;
|
||||||
|
|
@ -200,7 +205,7 @@ MODULE ethStrings; (** portable *) (* ejz, *)
|
||||||
END GetPar;
|
END GetPar;
|
||||||
|
|
||||||
(** Get the suffix of str. The suffix is started by the last dot in str. *)
|
(** Get the suffix of str. The suffix is started by the last dot in str. *)
|
||||||
PROCEDURE GetSuffix*(VAR str(** in *), suf(** out *): ARRAY OF CHAR);
|
PROCEDURE GetSuffix*(VAR str(* in *), suf(* out *): ARRAY OF CHAR);
|
||||||
VAR i, j, l, dot: LONGINT;
|
VAR i, j, l, dot: LONGINT;
|
||||||
BEGIN
|
BEGIN
|
||||||
dot := -1; i := 0;
|
dot := -1; i := 0;
|
||||||
|
|
@ -223,7 +228,7 @@ MODULE ethStrings; (** portable *) (* ejz, *)
|
||||||
END GetSuffix;
|
END GetSuffix;
|
||||||
|
|
||||||
(** Change the suffix of str to suf. *)
|
(** Change the suffix of str to suf. *)
|
||||||
PROCEDURE ChangeSuffix*(VAR str(** in/out *): ARRAY OF CHAR; suf: ARRAY OF CHAR);
|
PROCEDURE ChangeSuffix*(VAR str(* in/out *): ARRAY OF CHAR; suf: ARRAY OF CHAR);
|
||||||
VAR i, j, l, dot: LONGINT;
|
VAR i, j, l, dot: LONGINT;
|
||||||
BEGIN
|
BEGIN
|
||||||
dot := -1; i := 0;
|
dot := -1; i := 0;
|
||||||
|
|
@ -245,7 +250,7 @@ MODULE ethStrings; (** portable *) (* ejz, *)
|
||||||
END ChangeSuffix;
|
END ChangeSuffix;
|
||||||
|
|
||||||
(** Search in src starting at pos for the next occurrence of pat. Returns pos=-1 if not found. *)
|
(** Search in src starting at pos for the next occurrence of pat. Returns pos=-1 if not found. *)
|
||||||
PROCEDURE Search*(pat: ARRAY OF CHAR; VAR src(** in *): ARRAY OF CHAR; VAR pos(** in/out *): LONGINT);
|
PROCEDURE Search*(pat: ARRAY OF CHAR; VAR src(* in *): ARRAY OF CHAR; VAR pos(** in/out *): LONGINT);
|
||||||
CONST MaxPat = 128;
|
CONST MaxPat = 128;
|
||||||
VAR
|
VAR
|
||||||
buf: ARRAY MaxPat OF CHAR;
|
buf: ARRAY MaxPat OF CHAR;
|
||||||
|
|
@ -306,7 +311,7 @@ MODULE ethStrings; (** portable *) (* ejz, *)
|
||||||
END Search;
|
END Search;
|
||||||
|
|
||||||
(** Search in src starting at pos for the next occurrence of pat. *)
|
(** Search in src starting at pos for the next occurrence of pat. *)
|
||||||
PROCEDURE CAPSearch*(pat: ARRAY OF CHAR; VAR src(** in *): ARRAY OF CHAR; VAR pos(** in/out *): LONGINT);
|
PROCEDURE CAPSearch*(pat: ARRAY OF CHAR; VAR src(* in *): ARRAY OF CHAR; VAR pos(* in/out *): LONGINT);
|
||||||
CONST MaxPat = 128;
|
CONST MaxPat = 128;
|
||||||
VAR
|
VAR
|
||||||
buf: ARRAY MaxPat OF CHAR;
|
buf: ARRAY MaxPat OF CHAR;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue