@@ -10,6 +10,6 @@ Oberon → ARMv{6,7E}-M compiler, based on N. Wirth [Project Oberon](http://
[Some notes](https://wiki.oberon.org/ob/o7) (in Russian)
-Alexander V. Shiryaev, 2023
+Alexander V. Shiryaev, 2024
[License](O7/Docu/license.txt)
@@ -78,9 +78,13 @@ MODULE O7S; (* NW 19.9.93 / 20.3.2017 Scanner in Oberon-07*)
PROCEDURE Identifier (VAR sym: INTEGER);
VAR i, k: INTEGER;
+ err: BOOLEAN;
BEGIN i := 0;
+ err := FALSE;
REPEAT
- IF i < IdLen-1 THEN id[i] := ch; INC(i) END ;
+ IF i < IdLen-1 THEN id[i] := ch; INC(i)
+ ELSIF ~err THEN err := TRUE; Mark("identifier too long")
+ END;
Texts.Read(R, ch)
UNTIL (ch < "0") OR (ch > "9") & (ch < "A") OR (ch > "Z") & (ch < "a") OR (ch > "z");
id[i] := 0X;