Sergei M Abramov at home (abram@botik.ru)
Fri, 3 Dec 1999 20:03:39 +0300
���� ������, ����!
>�������� �� ��������� (;-) � ������, �� � ��-�������� ������������� ������,
>��� ������� ����� ���������� ��������� (����� �� ������ "�������", �������
>���� � ��������� ������ ������, ����� ����������)
(� ������ ���) ��������� �������� � �����:
(1) ���������� ���������� ������ ��������� ������ ���������� ���������,
(2) ���� ��������� �� ���� ������������ �����.
(3) ��� ���� (� � � �(�) ��������!) ���������� ���������� (�����,
��������, ����, �������, �����, �������, �������� � �.�.)...
>... ������������� �� �������,
>� ����� (������-���� ����������, ����� ����� �� ����, � ����� � �����)
>������������ ��� � ������������ ���������������� �����������:
[...������� ����� �����������, � ������� � ��������...]
>��� ����� ��������� -- ��� ����� �������� ������ ����� ��������� �� ������.
[...������� ����� �����������, � ������� � ��������...]
>� �������, ��� ���� ��� �� ����� �������, �� ���� ������� ���� �������
>���������������� ��� ������ ��� �� ������. �� ���� ������� ������...
� ����� �� ���� ��������, ����� ����� ���...� ������ �������� ������� � ��� ���
���: ������ (�) ��� ���� �� ���������, �� ��� ���������� (�������� � ��������),
��� "������������" �����:
<<(1) -- ��� ���� (� ������ ������ ���������, ����� �������, ������
���������������� � �.�.)--�� ��� ���������� ������...� ���� ��������...
(2) -- ��� �� ����� � ��� ������������������ (��. ����);
(3) -- � ��� �� ������ ������� ������� (���� 2).
>>
(* ������� ������: � ������ ������� � ������: �� �����, ��� (1) --"���
����". ����� (1) ������� � ������+ ��� 3/4 (75%) ������ ���� ����������! �
������ 1/4 �������������� ���, ��� � ������� ������� ������� (2)+(3).
��� ������ ����� �������� � ������� (�� ������) ������������� ����������
� run-time support �������
*)
��� ���� ��������� ����������, � ������� �� ����� ����, �� �������� ���� �����
�����-���������� �������? ����� ����, ��� ���� ��������� ������� �������
(* ������� ������� == ����������� ��������, �������� � ��� ����� � �� ����
������ � ��������� 1+2+3, � ������� � � ����� �������� *)
�����+ ����������.
�������� ����������
(* ������, ��� � ������� "+", "-" � "?" 102 �����-�������, ������� � �� ����
��������� ��������--� ���������,--��� ����� *)
��� ����������� ������� �����+ ���������� ������� �� 4 ������ (��������� ��
����������---�������� ������ ��������):
"+" -74- ��� ����� (1) � ������������� ������
������ � �����-"���������", ��������, ��������� �
�� ������...
��� �������� ������������ ��� ����� run-time support �������.
��� ������� �����?
���������� �� ����-������ ���������� -- ������ ���� ;-)
"-" -16- ��� ������ ��������� ������ (2+3)
����� � ��. ������� ���: �����, ��������� ��������� ������, ����������
���������, ������ � �������. ������ ������ ������� ����� ������:
(2)+(3) -- ������� ������ ��� � �����.
"?" -12- ������� ����� (1) � (2) -- �� ��� ���������! � �� ���� ������������...
. �� ���������� �������������� (� ��� ����� ���������
�� regional setings) ������:
$func TO-UPPER e.Char = e.Char;
. ����/����� ���������� ��������.
????? ���� �� �������?
������:
$func? READ = t.Term;
"." -61- ����� ��������� -- ������ ������ ��������:
. 20 ���� -- ����/����� CONIO (���-������ ������, ��� �����
KEY-PRESSED? � GET-SCR-CHAR-ATTR ?)
. 23 ����� RF5LIB (��������, ���� �� ������� �� __�����__ ����������)
. 18 ���� WINDOW (���-������ ������, ��� ����� ���� � ��������� ������
��������?)
��� ����� ����������...
� ��������� �������� ����
�����
������
/////////////////////////////////////////////////////////////////
"-" 16 ����;
����� � �� (�����, ���������, ���������, �����)
- $func ARG s.Int = e.Arg; DOS
- $func CHANNEL = s.Channel; STDIO
- $func CLOSE-CHANNEL s.Channel = ; STDIO
- $func GETENV e.VarName = e.Value; DOS
- $func PRINT e.Expr = ; STDIO
- $func PRINT! s.Channel e.Expr = ; STDIO
- $func PRINTLN e.Expr = ; STDIO
- $func PRINTLN! s.Channel e.Expr = ; STDIO
- $func TIME = e.String; DOS
- $func? CHANNEL? e.Exp = ; CLASS
- $func? EOF? s.Channel = ; STDIO
- $func? OPEN-FILE s.Channel e.FileName s.Mode = ; STDIO
- $func? READ-CHAR = s.Char; STDIO
- $func? READ-CHAR! s.Channel = s.Char; STDIO
- $func? READ-LINE = e.Char; STDIO
- $func? READ-LINE! s.Channel = e.Char; STDIO
"?" 12 ����;
(6) �� ���������� �������������� (� ��� ����� ��������� �� regional
setings)
? $func BYTES-TO-CHARS e.Char = e.Int; CONVERT
? $func CHARS-TO-BYTES e.Int = e.Char; CONVERT
? $func TO-LOWER e.Char = e.Char; CONVERT
? $func TO-UPPER e.Char = e.Char; CONVERT
? $func? DIGIT? e.Exp = ; CLASS
? $func? LETTER? e.Exp = ; CLASS
(6) ����/����� ���������� ��������
? $func? READ = t.Term; STDIO
? $func? READ! s.Channel = t.Term; STDIO
? $func WRITE e.Expr = ; STDIO
? $func WRITE! s.Channel e.Expr = ; STDIO
? $func WRITELN e.Expr = ; STDIO
? $func WRITELN! s.Channel e.Expr = ; STDIO
"+" -- 74 �����
������ � �����-"���������", ��������, ��������� � �� ������...
+ $func ? s.Box = e.Exp; BOX
+ $func "-" s.Int1 s.Int2 = s.Int; ARITHM
+ $func "*" s.Int1 s.Int2 = s.Int; ARITHM
+ $func "+" s.Int1 s.Int2 = s.Int; ARITHM
+ $func BIND s.Tab (e.Key) (e.Val) = ; TABLE
+ $func BOX e.Exp = s.Box; BOX
+ $func COMPARE (e.Exp1)(e.Exp2) = s.Res; COMPARE
+ $func DIV s.Int1 s.Int2 = s.Quo; ARITHM
+ $func DIV-REM s.Int1 s.Int2 = s.Quo s.Rem; ARITHM
+ $func EXIT s.ReturnCode = ; DOS
+ $func GCD s.Int1 s.Int2 = s.Gcd; ARITHM
+ $func LENGTH e.Exp = s.ExpLen; ACCESS
+ $func REM s.Int1 s.Int2 = s.Rem; ARITHM
+ $func REPLACE-TABLE s.TargetTab s.SourceTab = ; TABLE
+ $func STORE s.Box e.Exp = ; BOX
+ $func STRING e.Source = s.String; STRING
+ $func STRING-FILL s.String s.Fill = ; STRING
+ $func STRING-INIT s.String s.Len s.Fill = ; STRING
+ $func STRING-LENGTH s.String = s.Len; STRING
+ $func STRING-REF s.String s.Index = s.Char; STRING
+ $func STRING-REPLACE s.String e.Source = ; STRING
+ $func STRING-SET s.String s.Index s.Char = ; STRING
+ $func SUBSTRING s.String s.Index s.Len = s.NewString; STRING
+ $func SUBSTRING-FILL s.String s.Index s.Len s.Fill =; STRING
+ $func SUBVECTOR s.Vector s.Ind s.Len = s.Vector; VECTOR
+ $func SUBVECTOR-FILL s.Vector s.Index s.Len e.Fill =; VECTOR
+ $func TABLE = s.Tab; TABLE
+ $func TABLE-COPY s.Tab = s.TabCopy ; TABLE
+ $func TO-CHARS e.Exp = e.Char; CONVERT
+ $func TO-WORD e.Char = s.Word; CONVERT
+ $func UNBIND s.Tab e.Key = ; TABLE
+ $func VECTOR e.Source = s.Vector; VECTOR
+ $func VECTOR-FILL s.Vector e.Fill = ; VECTOR
+ $func VECTOR-INIT s.Vector s.Len e.Fill = ; VECTOR
+ $func VECTOR-LENGTH s.Vector = s.Len; VECTOR
+ $func VECTOR-REF s.Vector s.Index = e.Exp; VECTOR
+ $func VECTOR-REPLACE s.Vector e.Source = ; VECTOR
+ $func VECTOR-SET s.Vector s.Index e.Exp = ; VECTOR
+ $func VECTOR-TO-EXP s.Vector = e.Exp; VECTOR
+ $func? "/=" (e.Exp1)(e.Exp2) = ; COMPARE
+ $func? "<" (e.Exp1)(e.Exp2) = ; COMPARE
+ $func? "<=" (e.Exp1)(e.Exp2) = ; COMPARE
+ $func? "=" (e.Exp1)(e.Exp2) = ; COMPARE
+ $func? ">" (e.Exp1)(e.Exp2) = ; COMPARE
+ $func? ">=" (e.Exp1)(e.Exp2) = ; COMPARE
+ $func? APPLY s.Name e.Exp = e.Exp; APPLY
+ $func? BOX? e.Exp = ; CLASS
+ $func? CHAR? e.Exp = ; CLASS
+ $func? DOMAIN s.Tab = e.KeyList ; TABLE
+ $func? FUNC? e.Exp = ; CLASS
+ $func? IN-TABLE? s.Tab e.Key = ; TABLE
+ $func? INT? e.Exp = ; CLASS
+ $func? L s.Left e.Exp = t.SubTerm; ACCESS
+ $func? LEFT s.Left s.Len e.Exp = e.SubExp; ACCESS
+ $func? LOOKUP s.Tab e.Key = e.Val; TABLE
+ $func? MIDDLE s.Left s.Right e.Exp = e.SubExp; ACCESS
+ $func? R s.Right e.Exp = t.SubTerm; ACCESS
+ $func? RIGHT s.Right s.Len e.Exp = e.SubExp; ACCESS
+ $func? STRING? e.Exp = ; CLASS
+ $func? TABLE? e.Exp = ; CLASS
+ $func? TO-INT e.Char = s.Int; CONVERT
+ $func? VECTOR? e.Exp = ; CLASS
+ $func? WORD? e.Exp = ; CLASS
+ $func BIT-OR s.Int1 s.Int2 = s.Int; BIT
+ $func BIT-AND s.Int1 s.Int2 = s.Int; BIT
+ $func BIT-XOR s.Int1 s.Int2 = s.Int; BIT
+ $func BIT-NOT s.Int = s.Int; BIT
+ $func BIT-LEFT s.Int s.Shift = s.Int; BIT
+ $func BIT-RIGHT s.Int s.Shift = s.Int; BIT
+ $func? BIT-TEST s.Int s.Pos = ; BIT
+ $func BIT-SET s.Int s.Pos = s.Int; BIT
+ $func BIT-CLEAR s.Int s.Pos = s.Int; BIT
+ $func BIT-PRINT s.Int = ; BIT
+ $func BIT-LENGTH s.Int = s.Len; BIT
20 ���� -- ����/����� CONIO
. $func? KEY-PRESSED? = ; CONIO
. $func READ-KEY = s.Char; CONIO
. $func GET-SCR-CHAR-ATTR s.Row s.Col = s.Ch s.Attr; CONIO
. $func PUT-SCR-CHAR s.Row s.Col s.Ch = ; CONIO
. $func PUT-SCR-ATTR s.Row s.Col s.Attr = ; CONIO
. $func GET-FIELD-STR s.Row s.Col s.Length = s.Chars; CONIO
. $func PUT-FIELD-STR s.Row s.Col s.Length s.Chars = ; CONIO
. $func PUT-FIELD-ATTR s.Row s.Col s.Length s.Attr = ; CONIO
. $func GET-CURSOR = s.Row s.Col; CONIO
. $func SET-CURSOR s.Row s.Col = ; CONIO
. $func GET-CURSOR-FORM = s.StartLine s.EndLine; CONIO
. $func SET-CURSOR-FORM s.StartLine s.EndLine = ; CONIO
. $func GET-ATTRIBUTE = s.Attr; CONIO
. $func SET-ATTRIBUTE s.Attr = ; CONIO
. $func GET-TEXT-MODE = s.Rows s.Cols; CONIO
. $func CLEAR-SCREEN = ; CONIO
. $func CWRITE e.Expr = ; CONIO
. $func CWRITELN e.Expr = ; CONIO
. $func CPRINT e.Expr = ; CONIO
. $func CPRINTLN e.Expr = ; CONIO
23 ����� RF5LIB
. $func "rf5CARD" e.Prompt = e.Line; RF5LIB
. $func "rf5CLOSE" s.Fnum = ; RF5LIB
. $func "rf5GET" s.Fnum = e.Line; RF5LIB
. $func "rf5OPEN" s.Mode s.Fnum e.Fname = ; RF5LIB
. $func "rf5PRINT" e.Line = e.Line; RF5LIB
. $func "rf5PUT" s.Fnum e.Line = e.Line; RF5LIB
. $func "rf5PUTOUT" s.Fnum e.Line = ; RF5LIB
. $func "rf5ADD" (s)s = s; RF5LIB
. $func "rf5DIV" (s)s = s; RF5LIB
. $func "rf5DIVMOD" (s)s = (s.Quot)s.Rem ; RF5LIB
. $func "rf5MOD" (s)s = s; RF5LIB
. $func "rf5MUL" (s)s = s; RF5LIB
. $func "rf5SUB" (s)s = s; RF5LIB
. $func "rf5BR" e =; RF5LIB
. $func "rf5CP" e.Key = e.Val; RF5LIB
. $func "rf5DG" e.Key = e.Val; RF5LIB
. $func "rf5DGALL" = e.Stack; RF5LIB
. $func "rf5RP" e =; RF5LIB
. $func "rf5FIRST" s.N e.Exp = (e.Prefix) e.Postfix; RF5LIB
. $func "rf5LAST" s.N e.Exp = (e.Prefix) e.Postfix; RF5LIB
. $func "rf5LENW" e.Exp = s.Len e.Exp; RF5LIB
. $func "rf5TYPE" e.Exp = s.Type e.Exp; RF5LIB
. $func "rf5NUMB" e = s; RF5LIB
18 ���� WINDOW
. $const NO-FRAME = -1; WINDOW
. $func MAKE-WINDOW WINDOW
s.WindowNo s.WindowAtt s.FrameAtt s.FrameStr
s.Row s.Col s.Height s.Width = ;
. $func MAKE-WINDOW! WINDOW
s.WindowNo s.WindowAtt s.FrameAtt s.FrameStr
s.Row s.Col s.Height s.Width
s.ClearWindow s.FrameStrPos s.FrameTypeStr = ;
. $func CURRENT-WINDOW-NO = s.WindowNo; WINDOW
. $func CURRENT-WINDOW = WINDOW
s.WindowNo s.WindowAtt s.FrameAtt s.FrameStr
s.Row s.Col s.Height s.Width;
. $func CURRENT-WINDOW! = WINDOW
s.WindowNo s.WindowAtt s.FrameAtt s.FrameStr
s.Row s.Col s.Height s.Width
s.ClearWindow s.FrameStrPos s.BorderChars ;
. $func? EXIST-WINDOW? s.WindowNo = ; WINDOW
. $func SHIFT-WINDOW s.WindowNo = ; WINDOW
. $func REMOVE-WINDOW = ; WINDOW
. $func REMOVE-WINDOW! s.WindowNo s.Refresh = ; WINDOW
. $func RESIZE-WINDOW! s.Row s.Col s.Height s.Width = ; WINDOW
. $func SET-WINDOW-ATTR s.Attr = ; WINDOW
. $func SET-FRAME-ATTR s.Attr = ; WINDOW
. $func SET-WINDOW-FRAME s.FrameAtt s.FrameStr WINDOW
s.FrameStrPos
s.BorderChars = ;
. $func SCROLL s.NoOfRows s.NoOfCols = ; WINDOW
. $func GET-WINDOW-STR = s.ScreenString; WINDOW
. $func PUT-WINDOW-STR s.ScreenString = ; WINDOW
. $func WINDOW-FILL s.Ch = ; WINDOW
This archive was generated by hypermail 2.0b3 on Fri Dec 03 1999 - 20:04:59 MSK