<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div style="margin: 0px; line-height: normal; color: rgb(69, 69, 69);" class="">PS: Sorry. I didn’t realize that you had already answered this … as per our exchange yesterday.</div><div style="margin: 0px; line-height: normal; color: rgb(69, 69, 69);" class=""><br class=""></div><div style="margin: 0px; line-height: normal; color: rgb(69, 69, 69);" class="">Like so many other topics, it could of course be endlessly debated whether (a) or (b) is the</div><div style="margin: 0px; line-height: normal; color: rgb(69, 69, 69);" class="">“right” approach. When I originally suggested the fix to the WHILE loop in Scan, the intent was</div><div style="margin: 0px; line-height: normal; color: rgb(69, 69, 69);" class="">mainly to be in line with the rest of Oberon, where S.eot is always used to check for EOT.</div><div style="margin: 0px; line-height: normal; color: rgb(69, 69, 69);" class=""><br class=""></div><div style="margin: 0px; line-height: normal; color: rgb(69, 69, 69);" class=""> > Both lines</div><div style="margin: 0px; line-height: normal; color: rgb(69, 69, 69);" class=""> > (a) WHILE ~S.eot & (ch <= " ") DO .. END;</div><div style="margin: 0px; line-height: normal; color: rgb(69, 69, 69);" class=""> > (b) WHILE (ch = " ") OR (ch = TAB) OR (ch = CR) DO .. END;</div><div style="margin: 0px; line-height: normal; color: rgb(69, 69, 69);" class=""> > will not hang the system. (b) will not hang due to the fact that ch = 0X if S.eot is TRUE.</div><div style="margin: 0px; line-height: normal; color: rgb(69, 69, 69); min-height: 14px;" class=""> > </div><div style="margin: 0px; line-height: normal; color: rgb(69, 69, 69);" class=""> > (a) has the beauty that it's shorter and will "swallow" the LF as well. But also other characters with ORD() values smaller than space are "swallowed".</div><div style="margin: 0px; line-height: normal; color: rgb(69, 69, 69);" class=""> > (b) is didactically cleaner, as it exactly states what characters are defined as "white spaces" and hence eaten away.</div><div style="margin: 0px; line-height: normal; color: rgb(69, 69, 69); min-height: 14px;" class=""> > </div><div style="margin: 0px; line-height: normal; color: rgb(69, 69, 69);" class=""> > (a) is more kind of "error recovery" until Scan hits something known.</div><div style="margin: 0px; line-height: normal; color: rgb(69, 69, 69);" class=""> > (b) is an explicit list of allowed white spaces.</div><div style="margin: 0px; line-height: normal; color: rgb(69, 69, 69); min-height: 14px;" class=""><br class=""></div></body></html>