11. ���������� ���������� �������� �� ����������

��������� �� ����� DECL ����� ��������� ��-�������. ���������� ������ ��������� ������������ ���������� ����������� ��������. ��� ���� ��������� � �� ��������� ������� ���������� ��������� � (��������������� ��������� ������ ���� � ��). ������ ��������� � ��������� �������� ���������� ���������� ������ �������� PASCAL � ����������� �����������. ��� ������ T1: ������ ��������� � ����� ������ ����������� ���� �� ���, ��� ������������ �������� ���. ����� �������, � ����� DECL ������ ���������� ������������� ������� ������ ����������������. ���������� ����������� ���������� �� DECL ������.

11.1. ���������� �������� �:

������� 1. ���������� � �� ���� ���������� � �� ���������.

��������, ������ ���� ��������� ������ ��95 ����������:

PRD_AND():IF ����(X1,��95) ���(X1) THEN B:A(" ",X1);

��� ������ T!:PRD_AND() �� ����� ����� ������ �������� ��_1, ������� � ��������� � ������ ��95 - ����(��_1,��95) � ��������� - ���(��_1).

������� 2. ���������� � �� ���� ����������������� ������ ���������.

���������� ��������� ����� ��������� �� ���:

PRD_AND():IF ����(X1,��95) THEN T1:PRD_AND1(X1);

PRD_AND1(X1):IF ���(X1) THEN B:A(" ",X1);

�� ����� ����� ������ ���� �����.

11.2. ���������� �������� ��:

������� 1. ���������� �� ���� ��������� N:<��������>.

������ ���� ��������� ������ ��95 �� ����������:

PRD_NOT():IF ����(X1,��<95) N:���(X1) THEN B:BK() B:A(X1);

��� ������ T!:PRD_NOT() �� ����� ����� ������ �������� ��_1, ������� � ��������� � ������ ��95 - ����(��_1,��95) � � �� ��� ��������� ���(��_1).

������� 2. �� ���� ������������� ������ ���������.

������ ���� ��������� ������ ��95 �� ����������.

PRD_NOT():IF ����(X1,��95) THEN T1:PRD_NOT1(X1);

PRD_NOT1(X1):IF ���(X1) THEN;

PRD_NOT1(X1):IF THEN B:A(" ",X1);

��������� T!:PRD_NOT(X1) �������� ��������� ������ ��95:

��_1,... ������ ��������� PRD_NOT1(X1) ����������, ���� �� ����������� ������, �.�. ����� � �� ��� ��������� ���(��_1), � ����� �������� ��������� - �� ����������.

������� 3. ��������� �����������.

� ����� DECL ����������� ����������� ���� N:[...], ��� ������ ������ ����� ������ ��������� � ���������� � ��� ����, � ����� ����� ������ ���������. ����� �������� ����� ����������� ����������. � �� ������� ����������� ������������ ���������� ��������.

������ 11.1. ������ ������ ��95, ���� � ��� ��� ����������.

PRD_N():IF N:[����(X1,��95) ���(X1)] THEN B:BK() B:A("��95");

��������� PRD_N() ����������, ���� �� ��������� ��������� � ���������� ������� IF ����(X1,��95) ���(X1) THEN; � ��� �� ���������, ����� � ������ ��95 ��� ����������. ���� � ��95 ���� ���� ���� ������� ��������, �� ��������� ��������� ����������. ����������� � ���������� ������� ����� ��������. � �� ���� N: - ������. ��������� PRD_N() �� ����� ����������.

������ 11.2. ������ ������, � ������� ��� ����������.

PRD_N():IF ��(X2,_) N:[����(X1,X2) ���(X1)] THEN B:A(" ",X2);

��� ������ T!:PRD_N() �� ���� ��(X2,_) ����� ���� ������� �����. ����������� � ���������� ������� ����� ��������� ������, ��� ���� ���������.

�� ��������� ���������� ����������� ����� ���������:

PRD_N():IF ��(X2,_) N:[T1:PRD_N1(X2)] THEN B:BK() B:A("��95");

PRD_N1(X2):IF ����(X1,X2) ���(X1) THEN;

��� � � ���������� ������, ��������� PRD_N() ����� ����������, ���� �� ���� �� ����������� T1:PRD_N1(X2).

11.3. ���������� �������� ���:

������� 1. ���������� �� ���� ��������� N:<��������>.

������ ���� ��������� ���������� ��� ����������:

PRD_OR():IF ����(X1,_) N:[N:���(X1) N:���(X1)] THEN B:A(" ";,X1):

��� ������ T!:PRD_OR() �� ���� ����(X1,_) ����� ���� ������� ���������: X1 = ��_1, ��_2, ... ��������� PRD_OR() ���������� ��� X1 = ��_1, ���� �� ��������� ��������� � ���������� �������: IF N:���(��_1) N:���(��_1) THEN ..., �.�. ����� ��_1 ��� �������� ���(��_1), ��� �������� ���(��_1).

��������� ����������� ������� ���� ��� X1 = ��_1 ����� ������������������: "��� ������, ���� ��_1 �� ��� ���������� � �� ��� ����������".

������� 2. ���������� �� ���� ������������� ������ ���������.

PRD_OR():IF ����(X1,_) THEN T1:PRD_OR1(X1);

PRD_OR1(X1):IF ���(X1) THEN B:A(" ",X1);

PRD_OR1(X1):IF ���(X1) THEN B:A(" ",X1);

���� ������� X1=��_1 ��� ��������, ��� ��������, �� ���������� ��� ������ ��������� PRD_OR1(X1) ��� ������. � ����� ������� �� ����� ����� ����� ��� �������� - ��_1.

11.4. ������� ������:

����������� �� ���� ��������� ����������� � ��������� N:

������ ������, � ������� ��� �������� ���������.

PRD_ALL():IF ��(X2,_) N:[����(X1,X2) N:���(X1)] THEN B:A(" ",X2);

�� ���� ��(X2,_) ����� ���� ������� ����� X2=��95, ��96, ... ��������� PRD_ALL() ����� ����������, ���� �� ��������� ��������� ���������� ������� IF ����(X1,��95) N:���(X1) THEN; � ��� ���������, ����� � ������ ��95 ���-�� X1 �� ��������, � �� ���������, ���� ��� ���������. � ��������� ������ ��95 ����� ������ �� �����. ��������� ����������� ������� ���� ��� X2=��95 ����� �������� ������������������: "��� ������ �������� � ������ ��95, ���� �� ��� �� ����������".

������ 11.3. ������ ��� ������, � ������� ��� �� ������ ���������.

PRD_ALL1():IF ��(X2,_) N:[����(X1,X2) ���(X1)] THEN B:A(" ",X2);

��������� T!:PRD_ALL1() ����� ���������� ��� X2=��95, ���� �� ��������� ��������� IF ����(X1,��95) ���(X1) THEN ...; � ��� �� ���������, ����� � ������ ��95 ��� ����������.

�� ��������� ���������� ����� DECL ����������� ������� ���������� ������ � ����������� N:. ��������, N:[N:[...] N:[...]] ��� N:[... N:[...]]. ���������� ���������� N:[...] �� ��������������. �� ������� ����������� �� �����������.

���������� ������|��������� ������

- ������� �������� -