Jelajahi Sumber

check identifiers length

Alexander Shiryaev 1 tahun lalu
induk
melakukan
19fac63658
3 mengubah file dengan 6 tambahan dan 2 penghapusan
  1. TEMPAT SAMPAH
      O7/Mod/S.odc
  2. 1 1
      README.md
  3. 5 1
      voc-O7/O7S.Mod

TEMPAT SAMPAH
O7/Mod/S.odc


+ 1 - 1
README.md

@@ -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)

+ 5 - 1
voc-O7/O7S.Mod

@@ -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;