| 
					
						 Коллеги, я обнаружил, почитывая DevCPT, что атрибуты записей и процедур ABSTRACT LIMITED EXTENDED  компилятор позволяет переопределить, как и прочие предопределенные имена типа BITS, LEN, INTEGER и т.п.
  Однако Language Report однозначно относит их к непереопределимым ключевым словам: 5. Operators and delimiters are the special characters, character pairs, or reserved words listed below. The reserved words consist exclusively of capital letters and cannot be used as identifiers.
  	+	:=	ABSTRACT	EXTENSIBLE	POINTER 	-	^	ARRAY	FOR	PROCEDURE 	*	=	BEGIN	IF	RECORD 	/	#	BY	IMPORT	REPEAT 	~	<	CASE	IN	RETURN 	&	>	CLOSE	IS	THEN 	.	<=	CONST	LIMITED	TO 	,	>=	DIV	LOOP	TYPE 	;	..	DO	MOD	UNTIL 	|	:	ELSE	MODULE	VAR 	$		ELSIF	NIL	WHILE 	(	)	EMPTY	OF	WITH 	[	]	END	OR	 	{	}	EXIT	OUT	
  Я попробовал - действительно, позволяет MODULE M; 	CONST ABSTRACT = -1; 	TYPE T = ABSTRACT(*err: identifier does not denote a type*) RECORD END; END MM.
  При этом NEW - не в списке из п. 5!
  Что думаете? Это баг или фича?  Для "реализации" такой особенности в таблице символов введен отдельный режим объекта, а всего-то их существует 4 штуки - по одной для каждого атрибута. 
					
  
						
					 |