mirror of
https://github.com/vishapoberon/compiler.git
synced 2026-04-06 04:02:25 +00:00
Record curpos on every inR.Read. Add more debug to catch OpenBSD read failure.
This commit is contained in:
parent
c7e88f4634
commit
cf2da3000f
8 changed files with 47 additions and 32 deletions
|
|
@ -387,12 +387,17 @@ MODULE OPM; (* RC 6.3.89 / 28.6.89, J.Templ 10.7.89 / 22.7.96 *)
|
|||
|
||||
PROCEDURE Get*(VAR ch: CHAR); (* read next character from source text, 0X if eof *)
|
||||
BEGIN
|
||||
curpos := Texts.Pos(inR);
|
||||
Texts.Read(inR, ch);
|
||||
IF ch = 0DX THEN
|
||||
curpos := Texts.Pos(inR); (* supports CR LF mapping *)
|
||||
ELSE
|
||||
INC(curpos)
|
||||
END ;
|
||||
|
||||
(* OpenBSD intermittent file read error debugging. *)
|
||||
IF (curpos = 0) & inR.eot THEN
|
||||
LogWLn; LogWStr("DEBUG: OPM.Get returned inR.eot at curpos = 0, ch = ");
|
||||
LogWNum(ORD(ch),1); LogW(".");
|
||||
END;
|
||||
(* TODO, remove curpos var, and provide fn returning Texts.Pos(inR) - 1. *)
|
||||
(* Or, better still, record symbol position in OPS. *)
|
||||
|
||||
IF (ch < 09X) & ~inR.eot THEN ch := " " END
|
||||
END Get;
|
||||
|
||||
|
|
|
|||
|
|
@ -341,7 +341,7 @@ MODULE Texts; (** CAS/HM 23.9.93 -- interface based on Texts by JG/NW 6.12.91**
|
|||
IF (ch = 0AX) & u(Piece).ascii THEN ch := CR (* << LF to CR *)
|
||||
ELSIF (ch = CR) & u(Piece).ascii THEN (* << CR LF to CR *)
|
||||
pos := Files.Pos(R.rider); Files.Read(R.rider, nextch);
|
||||
IF nextch = 0AX THEN INC(R.off) ELSE Files.Set(R.rider, u(Piece).file, pos) END
|
||||
IF nextch = 0AX THEN INC(R.off) ELSE Files.Set(R.rider, u(Piece).file, pos) END
|
||||
END
|
||||
ELSIF u IS Elem THEN ch := ElemChar; R.elem := u(Elem)
|
||||
ELSE ch := 0X; R.elem := NIL; R.eot := TRUE
|
||||
|
|
|
|||
|
|
@ -1,15 +1,15 @@
|
|||
IntSyntax.mod compiling IntSyntax.
|
||||
|
||||
14: i := l; (* Bad, INTEGER shorter than LONGINT *)
|
||||
^
|
||||
pos 341 err 113 incompatible assignment
|
||||
^
|
||||
pos 340 err 113 incompatible assignment
|
||||
|
||||
15: s := l; (* Bad, SHORTINT shorter than LONGINT *)
|
||||
^
|
||||
pos 393 err 113 incompatible assignment
|
||||
^
|
||||
pos 392 err 113 incompatible assignment
|
||||
|
||||
16: i := l; (* Bad, SHORTINT shorter than INTEGER *)
|
||||
^
|
||||
pos 446 err 113 incompatible assignment
|
||||
^
|
||||
pos 445 err 113 incompatible assignment
|
||||
|
||||
Module compilation failed.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue