Re: ����������� ��� ������������


Subject: Re: ����������� ��� ������������
From: Sergei M. Abramov (at home) (abram@botik.ru)
Date: Sat Feb 10 2001 - 15:57:27 MSK


���� ������, ����!

���� ������ ����� ��� "�� ������-5", �� � �� ������.

������, ������� ���� �������:

>������ ������� � ���������. ���� �� � ������-5 ������ ����������
>����������� ������������ �������, � ������ - ������ ���������, ������
>�������� �������, ������ BELL � ������? ���� �� �����-������ ������ ���
                                         *******************************
>\n, \t, \r, \g � ������ ����������� ����� C...
 **********************************************
>����������, ���� ���������� ��� ������� ��������. ������ - ���� �� �����
>������ � ��� ������ ������-5, ������� �������� �� ����� (������ ��� ������
>� ������� ������������).

> .... ������ - ����� ������ ��� �� ���� ����� ������,
>���� �� ��� ��� ��������� ;-) (��������������� ����, ���� �� ����� ������
 *************************
>�� ����� ����).

��� �����-5 �� �����, � � ������������ �� ������ ����:

# 3.4.�������-������
...
# ������-������ ������������� ����� ������ ���� ASCII � ����-
# �������� � ���� ����������� ���� ������ ASCII, ������������ �
# ���������. ��������: 'A' 'a' '7' '$'
# ��� �������, ������������ ������ ASCII �������� ���� ���
# ������, �� ����������� ��������� ����� ASCII, ��� ������� ����-
# ��������� ������ �����������:
#
# ����� ������ (������� ������) HL (LF) '\n'
# �������������� ��������� HT '\t'
# ������������ ��������� VT '\v'
# ������� �� ��� BS '\b'
# ������� ������� CR '\r'
# ������� ������� FF '\f'
# �������� ����� \ '\\'
# �������� ' '\''
# ������� ������� " '\"'

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

# �������������� ����������� ������ ����
...
# ������ ����� � ����� � ����������������� �������
#
# ��������������� ����� ����� ����� ���������� � ����
# 0xZZZ...ZZ
# ��� ZZZ...ZZ - �������� ������������������
# ����������������� ����.
# ��������, 0xFF � 0xff ������������ 255.
# ����������� �����, �������� � ����������� ������� ��������-
# ����� � ��������-����, ����� ������������ � ����
# \xZZ
# ��� ZZ - ��� ����������������� �����, �������� ASCII-��� ������.

> ... ������ - ����� ������ ��� �� ���� ����� ������,
>���� �� ��� ��� ��������� ;-) (��������������� ����, ���� �� ����� ������
>�� ����� ����).

�� ����� ������� ������! ��� ���, ���� �������� ��������� ��� � ������� (5, 6,
����) ������ ������ � �������� ����� � ������ � ������ (� ��������� ��������).
����� ���� ������������ � ���������� ���� ��������. �����������
���������---���� ������ �����������!.

��� ���, �� ����-������ ��� ��������� ���-�� ������ (����������� ��
��������?)... ���!

>������, �� ��� �������� ��������, �������� �� ������ ��� ���� ������
>�������� ������. ��������� � �����, � ������-5 ����������� ��, ���
>�����-�� ����������, ���� �� ��������, ��������������� (��������, ���
>S-���������� ����� ���� ������� �������� ��������, ������� ��� �����
>match'���).

��, �� ������ ��� S, �� � ��� T � E, �� ������ ��������, �� � ������
������������.

��, � ������-2 ��� ������� ������� ���� �������� �������������� �� _�����_. ���
���� ������� (��������) ��� ���:

=1= ���� ������������ ������������� �� ����� (����: �������� ��������� ��������,
�����. � �������, �����, ���������, "������������ ����" � �.�.);

=2= � ���� ���������, ����������� �� ��� ����������� �������������� �������
����� ������������� (��, ����� ���: ����������� / ����������� / ��������
�������������� ���� ������������). � �������� ������� �� ������, �� ���� ����.

>������������ �������������� ����� ��� ����������� (�� ���
>������, ���� ���� ��������), � ��������� ������� � ������� ������
>������������ � ���� ����.

��, �������, ���� ������� ���������� ;-)

�������� ������� ��������� �������: � ����� ������� (� ������� ��� �������
���������) ����� ������� ������������� ����� �������� ���������� �����.

��������, ���� �� ������ �������� ������� <Is-Identifier e.X>, �������
���������, ��� �X ���� �������� ������� ����� (������������ � ����� � ����������
����� �/��� �����) � ������� ���������� True ��� False, �� ����� ��������
������� ����������:

    ... �1 : �2 �Id e3, <Is-Identifier eId> : True, ...� �����...

���� ���������, � ������ ���� ��� �������� ��� ����� �������:

****************************************************
=1= ������� "����������� �������" (�������� �������)
****************************************************

�� ���� ������� ����������� ������� �� ������� �� ������ ������� ���������, �� �
��������� $fail, ��� $fail -- ����� ��� ���������, � ������� �����������,
��������, ����� ����������� (����):

                    � : �

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

    -- ������� ��������� ����� ������������ (���������� ����� ��� $fail);

��� ��� (��� �������� ������ ������)

    -- ������� "��������" �� ������ ����� ����������� (���� �������) ��� �������
� ������� $fail.

����������� ����� ����� ������� ��������� ������ "?".

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

    ... �1 : �2 �Id e3, <Is-Identifier? eId>, ...� �����...

��� ����� ������ "������� ����������" (������):

   ...
   <SkipBlanks e0> :: e1,
   <Identifier? e1> :: (eId1) e2, /* ������� �������� ���1 */
   <SkipBlanks e3> :: e4,
   e4 : '+' e5,
   <SkipBlanks e5> :: e6,
   <Identifier? e6> :: (eId2) e7 /* ������� �������� ���2 */
   = (Sum (Name e.Id1) (Name e.Id2)) <Parser e7> ;

****************************************************
=2= ���� ������������ "�����������" ������� ���
������������ �������������� (�������) ��������:
****************************************************

# 6.CLASS: ��������� ��� ������������� ������� ��������
#
# $func? BOX? e.Exp = ;
# $func? CHANNEL? e.Exp = ;
# $func? CHAR? e.Exp = ;
# $func? DIGIT? e.Exp = ;
# $func? FUNC? e.Exp = ;
# $func? INT? e.Exp = ;
# $func? LETTER? e.Exp = ;
# $func? STRING? e.Exp = ;
# $func? TABLE? e.Exp = ;
# $func? VECTOR? e.Exp = ;
# $func? WORD? e.Exp = ;
#
# ��� ������� ������ ��� ��������, ��� e.Exp �������� �����-
# ���, ������������� � ������������� ��������� ��������.
...

�� ����, �� ��� ����� � ����� "������������ �������������". � ������� � �����,
� ������ ���� ������� ��� ���:

****************************************************
=3= � ����� ������� "������" ������� ���
�������������� "��������������".
****************************************************

����, ��� ���� �� ������:

        ...������������-1... (��������: s1 : 'A')

        ...������������-2... (��������: s1 : 'B')

�� �� ������ �������� �������� "�", "���" � "��" ��� ���������������. � ������
���� ��� ����� �������.

� ������:

*****************
"�" == ����������
*****************
    ��� ������ "�������":

    ...�����...,
        ...������������-1...,
        ...������������-2...,
            ...�����...

��������:

    ...�����...
        s1 : 'A',
        s1 : '�',
            ...�����...

********************
"���" == �����������
********************
    ��� ��� ����� (������� � ������-5 ��� ������--���� ������� �������.�������.
���� � ������-6 � ����--��� �����):

    ...�����...,
        \{ ...������������-1...;
              ...������������-2...;
        \},
        ...�����...

��������:

    ...�����...
        \{ s1 : 'A';
            s1 : '�';
        \},
        ...�����...

********************
"��" == ����������
********************
    ��� ����� ����������� (#) ��������� "���������" � ������-����:

    ...�����...,
        # ...������������-1...,
        ...�����...

��������:
    ...�����...
        #<LETTER? s1>,
        ...�����...

���

    ...�����...
        # \{ s1 : 'A', ;\}
        ...�����...

>��� �� �����, �� ��� �� ���-������ �� ��������
>���������� ����� ������� �� ���� ����...

���� ��� ����� ��� ������: ������ ������������� ���� �� ����� >>>� ��� �����<<<
������, ��� ����������� �������� ������ ��������� ����� ������ "�������������"
�� ����� ������ � ���������� �� � "����� ������" �������� � ���� �������
��������.

�����

������
�.�.

=1= ��� ������������� "����� ��������������" �� ��������� �� ������� �� �������.

=2= ������ ������������� ���� �� �����... �� ���� �� �� ���������? (��� ���...
������ ������...)



This archive was generated by hypermail 2b25 : Mon Oct 25 2004 - 21:24:58 MSD