[Oberon] Newlines and Carriage-Returns
Andreas Pirklbauer
andreas_pirklbauer at yahoo.com
Mon Jan 7 13:11:17 CET 2019
> I'm not so sure. I recommend you check the other change that was made at the same time. i.e. in Texts.Read before drawing any conclusions:
>
> Before:
>
> IF R.ref.f = TrailerFile THEN R.eot := TRUE END;
> R.org := R.org + R.off; R.off := 0;
> R.ref := R.ref.next; R.org := R.org + R.off; R.off := 0;
>
> After:
>
> IF R.ref.f = TrailerFile THEN R.eot := TRUE END;
> R.ref := R.ref.next; R.org := R.org + R.off; R.off := 0;
>
I’m not so sure. I recommend to read the above changes to Texts.Read carefully.
It only eliminates duplications of code, namely "R.org := R.org + R.off; R.off := 0”,
which appears twice (the second R.org := R.org + R.off had no effect anyway,
since R.off had already been set to 0).
The above change in Texts.Read has nothing to do with the earlier fix,
where the lines
WHILE ~S.eot & (ch <= " ") DO .. END
have the effect of skipping any value < “ “, in particular it also “eats" LF, while
at the same *not* depending on Files.Read setting ch := 0X to indicate eot.
It’s a kind of more gentle error recovery in case the file reaches eot before
any of the characters in the original WHILE loop:
WHILE (ch = " ") OR (ch = TAB) OR (ch = CR) DO .. END;
PS: Everywhere else in the Oberon system, the check on S.eot or R.eot is
always used … which is why I originally suggested the “fix” originally.
-ap
More information about the Oberon
mailing list