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