mirror of
https://github.com/vishapoberon/compiler.git
synced 2026-04-05 23:22:25 +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
|
||||
| NilTyp: conval^.intval := OPM.nilval
|
||||
ELSE OPM.LogWStr("unhandled case in InConstant(), f = "); OPM.LogWNum(f, 0); OPM.LogWLn;
|
||||
OPM.err(155) (* Symbol file corrupted *)
|
||||
END
|
||||
END InConstant;
|
||||
|
||||
|
|
@ -1045,7 +1046,13 @@ BEGIN
|
|||
END;
|
||||
|
||||
(* 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 *)
|
||||
IF (tag < 0) OR (tag > 50) THEN
|
||||
|
|
|
|||
|
|
@ -9,14 +9,19 @@ MODULE ethStrings; (** portable *) (* ejz, *)
|
|||
IMPORT Texts, Dates := ethDates, Reals := ethReals;
|
||||
|
||||
CONST
|
||||
CR* = 0DX; (** the Oberon end of line character *)
|
||||
Tab* = 09X; (** the horizontal tab character *)
|
||||
LF* = 0AX; (** the UNIX end of line character *)
|
||||
|
||||
(** the Oberon end of line character *)
|
||||
CR* = 0DX;
|
||||
(** the horizontal tab character *)
|
||||
Tab* = 09X;
|
||||
(** the UNIX end of line character *)
|
||||
LF* = 0AX;
|
||||
VAR
|
||||
isAlpha*: ARRAY 256 OF BOOLEAN; (** all letters in the oberon charset *)
|
||||
ISOToOberon*, OberonToISO*: ARRAY 256 OF CHAR; (** Translation tables for iso-8859-1 to oberon ascii code. *)
|
||||
CRLF*: ARRAY 4 OF CHAR; (** end of line "string" used by MS-DOS and most TCP protocols *)
|
||||
(** all letters in the oberon charset *)
|
||||
isAlpha*: ARRAY 256 OF BOOLEAN;
|
||||
(** 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;
|
||||
lDayName: ARRAY 7, 12 OF CHAR;
|
||||
sMonthName: ARRAY 12, 4 OF CHAR;
|
||||
|
|
@ -24,7 +29,7 @@ MODULE ethStrings; (** portable *) (* ejz, *)
|
|||
dateform, timeform: ARRAY 32 OF CHAR;
|
||||
|
||||
(** 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;
|
||||
BEGIN
|
||||
l := LEN(str); i := 0;
|
||||
|
|
@ -35,7 +40,7 @@ MODULE ethStrings; (** portable *) (* ejz, *)
|
|||
END Length;
|
||||
|
||||
(** 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;
|
||||
BEGIN
|
||||
i := 0;
|
||||
|
|
@ -50,7 +55,7 @@ MODULE ethStrings; (** portable *) (* ejz, *)
|
|||
END Append;
|
||||
|
||||
(** 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;
|
||||
BEGIN
|
||||
i := 0;
|
||||
|
|
@ -124,7 +129,7 @@ MODULE ethStrings; (** portable *) (* ejz, *)
|
|||
END UpperCh;
|
||||
|
||||
(** 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;
|
||||
BEGIN
|
||||
i := 0;
|
||||
|
|
@ -135,7 +140,7 @@ MODULE ethStrings; (** portable *) (* ejz, *)
|
|||
END Lower;
|
||||
|
||||
(** 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;
|
||||
BEGIN
|
||||
i := 0;
|
||||
|
|
@ -146,7 +151,7 @@ MODULE ethStrings; (** portable *) (* ejz, *)
|
|||
END Upper;
|
||||
|
||||
(** 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;
|
||||
BEGIN
|
||||
i := 0;
|
||||
|
|
@ -157,7 +162,7 @@ MODULE ethStrings; (** portable *) (* ejz, *)
|
|||
END Prefix;
|
||||
|
||||
(** 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;
|
||||
BEGIN
|
||||
i := 0;
|
||||
|
|
@ -168,7 +173,7 @@ MODULE ethStrings; (** portable *) (* ejz, *)
|
|||
END CAPPrefix;
|
||||
|
||||
(** 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;
|
||||
BEGIN
|
||||
i := 0;
|
||||
|
|
@ -179,7 +184,7 @@ MODULE ethStrings; (** portable *) (* ejz, *)
|
|||
END CAPCompare;
|
||||
|
||||
(** 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;
|
||||
BEGIN
|
||||
i := 0;
|
||||
|
|
@ -200,7 +205,7 @@ MODULE ethStrings; (** portable *) (* ejz, *)
|
|||
END GetPar;
|
||||
|
||||
(** 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;
|
||||
BEGIN
|
||||
dot := -1; i := 0;
|
||||
|
|
@ -223,7 +228,7 @@ MODULE ethStrings; (** portable *) (* ejz, *)
|
|||
END GetSuffix;
|
||||
|
||||
(** 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;
|
||||
BEGIN
|
||||
dot := -1; i := 0;
|
||||
|
|
@ -245,7 +250,7 @@ MODULE ethStrings; (** portable *) (* ejz, *)
|
|||
END ChangeSuffix;
|
||||
|
||||
(** 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;
|
||||
VAR
|
||||
buf: ARRAY MaxPat OF CHAR;
|
||||
|
|
@ -306,7 +311,7 @@ MODULE ethStrings; (** portable *) (* ejz, *)
|
|||
END Search;
|
||||
|
||||
(** 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;
|
||||
VAR
|
||||
buf: ARRAY MaxPat OF CHAR;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue