[Fwd: Refal+ abstract syntax]


Subject: [Fwd: Refal+ abstract syntax]
From: Andrey Slepuhin (pooh@msu.ru)
Date: Wed Nov 17 1999 - 19:07:25 MSK


������ ����!

�� ������� ������ ������� ����������� ������ ������������
���������� ������+ � refal@botik.ru. ������� ���� ��������� ����
���������/�����������. ������� ���������, ���� ��� ������� ���
������ ������ ���.

������.

-------- Original Message --------
Subject: Refal+ abstract syntax
Date: Wed, 17 Nov 1999 00:34:40 +0300
From: Andrey Slepuhin <pooh@msu.ru>
Organization: Moscow State University Network (MSUnet)
To: Andrei Klimov <klimov@keldysh.ru>
CC: Arkady Klimov <klark@bagirra.rinet.ru>,Andrei Nemytykh
<nemytykh@math.botik.ru>,Sergei Abramov <abram@botik.ru>,Sergei
Romanenko <roman@integrum.ru>,Victor Kistlerov <kistler@iitp.ru>
References: <025b01bf2f73$f70a11c0$0100a8c0@piii>

���� ������ ����!

���� ����������� ������ �������� ������������ ���������� ������+
� ���� ���������� ���������. �� ������ ����� �������� ������������
���������� �� ������ ��������� "���������� �����-�������� �
����������� ���" (���� rbvcomp.tex). ������������ ������� ����
�����-���� ���������� ����������� �� ������� ������ � ������ ���������.

��������� ����������� � �����:
1) ������� ������ � �������� - ����������, �� ��� ��������� � ������� -
   ���������� "�����".
2) � ����� �� ���������� ������� Name - ��� �� ������ ������ ��������,
   ���������� �� ��� ���� ���, � SymbolValue - ��� ���������������
   ���������� ������.
3) ������ ���������� ��������� ������������ �������; �������,
   ��� ��������� ��������� ����� �������� ������������� � ��������
   ���� ����������.
4) HardBlock, HardPAlt - ��� �� ��� ���������� � "{",
   SoftBlock, SoftPAlt - ��� �� ��� ���������� � "\{"
   Cut � Stake - ��� \! � \? �������������� (�� �����������
   ������� �������).
5) � ������������ ���� :, ::, $iter �������� ����� �������� ������
   (�.�. ("Colon" Source Sentence) � �� (Source "Colon" Sentence))
6) ������� �������� �������� �������� �� ��������� �������:
   - ��� �� ��� ����������� �������������� ������ � ��� � ��� ������
     (��������, ���� ������� ����� ���� ����� ������������; ���� �� ���
     ��������� ������������ ���������� ���������� ��� � ����������
     �������� �� ������ �����������?).
   - ��� �� ������ ����� ������ Empty, �.�. "�����"? ���-��� �
     Empty �������, ��, ��������, �� �����.
   - ��������� ������ ����������� ������ ������ � ���� ���������?
     ���-���� �������� �� ����� ���������� ��������� �������������;
     ���� ��� - ���� �������� ����� ���������.
   - ������������� �� ������� �������� ���������� ���������
     ���������� ������ ���������? (�.�. �� ����� �� ���-������
     �������� �������� ����� ��� ������ ������)

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

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

Refal+ Abstract Syntax
----------------------

Program ::= ProgramItem | Program ProgramItem

ProgramItem ::= FuncDef | BoxDef | TableDef | VectorDef | StringDef

FuncDef ::= ("Function" FunctionName (FunctionFormat) (FunctionBody)) |
            ("Function?" FunctionName (FunctionFormat) (FunctionBody))

FunctionFormat ::= (InputFormat) (OutputFormat)

InputFormat ::= HardExpression

OutputFormat ::= HardExpression

HardExpression ::= HardTerms | HardTerms VVar HardTerms |
                   HardTerms EVar HardTerms

HardTerms ::= Empty | HardTerm | HardTerms HardTerm

HardTerm ::= Symbol | (HardExpression) | SVar | TVar

FunctionBody ::= Sentence | PAlt

PAlt ::= HardPAlt | SoftPAlt

HardPAlt ::= ("HardPAlt" PAltBody)

SoftPAlt ::= ("SoftPAlt" PAltBody)

PAltBody ::= Sentence | BlockBody Sentence

Sentence ::= (Pattern Tail)

Pattern ::= ("Left" PatternExpression) | ("Right" PatternExpression)

PatternExpression ::= Empty | Term | PatternExpression Term

Term ::= Symbol | (PatternExpression) | Variable

Symbol ::= ("Symbol" SymbolValue)

Variable ::= EVar | VVar | TVar | SVar

EVar ::= ("EVar" Name)

VVar ::= ("VVar" Name)

TVar ::= ("TVar" Name)

SVar ::= ("SVar" Name)

Tail ::= ("Comma" Path) | ("Not" Source Tail) | ("Stake" Path) |
         ("Cut" Path) | ("Fail") | ("Equal" Path) | ("Error" Path) |
         ("Trap" Path PAlt)

Path ::= (Source Tail) | ("DColon" Source (HardExpression) Tail) |
         ("Iter" Source Source (HardExpression) Tail) |
         ("Colon" Source Sentence)

Source ::= HardBlock | SoftBlock | ("Colon" Source PAlt) |
           (ResultExpression)

HardBlock ::= ("HardBlock" BlockBody)

SoftBlock ::= ("SoftBlock" BlockBody)

BlockBody ::= Path | BlockBody Path

ResultExpression ::= ResultTerm | ResultExpression ResultTerm

ResultTerm ::= Symbol | (ResultExpression) | Variable |
               ("Call" FunctionName (ResultExpression))

BoxDef ::= ("Box" BoxName)

TableDef ::= ("Table" TableName)

VectorDef ::= ("Vector" VectorName)

StringDef ::= ("String" StringName)

BoxName ::= Name

TableName ::= Name

VectorName ::= Name

StringName ::= Name

FunctionName ::= Name

Program ::= ProgramItem | Program ProgramItem

ProgramItem ::= FuncDef | BoxDef | TableDef | VectorDef | StringDef

FuncDef ::= ("Function" FunctionName (FunctionFormat) (FunctionBody)) |
            ("Function?" FunctionName (FunctionFormat) (FunctionBody))

FunctionFormat ::= (InputFormat) (OutputFormat)

InputFormat ::= HardExpression

OutputFormat ::= HardExpression

HardExpression ::= HardTerms | HardTerms VVar HardTerms |
                   HardTerms EVar HardTerms

HardTerms ::= Empty | HardTerm | HardTerms HardTerm

HardTerm ::= Symbol | (HardExpression) | SVar | TVar

FunctionBody ::= Sentence | PAlt

PAlt ::= HardPAlt | SoftPAlt

HardPAlt ::= ("HardPAlt" PAltBody)

SoftPAlt ::= ("SoftPAlt" PAltBody)

PAltBody ::= Sentence | BlockBody Sentence

Sentence ::= (Pattern Tail)

Pattern ::= ("Left" PatternExpression) | ("Right" PatternExpression)

PatternExpression ::= Empty | Term | PatternExpression Term

Term ::= Symbol | (PatternExpression) | Variable

Symbol ::= ("Symbol" SymbolValue)

Variable ::= EVar | VVar | TVar | SVar

EVar ::= ("EVar" Name)

VVar ::= ("VVar" Name)

TVar ::= ("TVar" Name)

SVar ::= ("SVar" Name)

Tail ::= ("Comma" Path) | ("Not" Source Tail) | ("Stake" Path) |
         ("Cut" Path) | ("Fail") | ("Equal" Path) | ("Error" Path) |
         ("Trap" Path PAlt)

Path ::= (Source Tail) | ("DColon" Source (HardExpression) Tail) |
         ("Iter" Source Source (HardExpression) Tail) |
         ("Colon" Source Sentence)

Source ::= HardBlock | SoftBlock | ("Colon" Source PAlt) |
           (ResultExpression)

HardBlock ::= ("HardBlock" BlockBody)

SoftBlock ::= ("SoftBlock" BlockBody)

BlockBody ::= Path | BlockBody Path

ResultExpression ::= ResultTerm | ResultExpression ResultTerm

ResultTerm ::= Symbol | (ResultExpression) | Variable |
               ("Call" FunctionName (ResultExpression))

BoxDef ::= ("Box" BoxName)

TableDef ::= ("Table" TableName)

VectorDef ::= ("Vector" VectorName)

StringDef ::= ("String" StringName)

BoxName ::= Name

TableName ::= Name

VectorName ::= Name

StringName ::= Name

FunctionName ::= Name



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