Russian LinkExchange Banner Network
������� � �������� | "��� �������"
1. ��������

     ��������

     ��� ����� ������ �������� ������������ �� ������ � �������� ���������� �������������� ������������ � ������������ ������ ����������������. ������ ��� �� ��������� ������ ���� �����, �� �������� ��� ������� ��������������� ������������, �������� ����� ���� ����������������, � �������� ���������� ����������.
     ���� � �� ����������� � �� ���������� � �����������, � ������������� ������������� � ������� ������ ���. � ������� � �������� ����������� � ���������� ����������� ������ ���������� �� ��� ���� �����. �, ������ ����������, ��� ��� ������ ����. ��� ����� �������� ��� ������������ � ������������ ����� �  ������� ������ ��� ��������� ����������� �� ���. �� � �������� ��� ����� �� ������������ ������ �������� �� ����. ��������� ���������� ��������� ��, ��� � ����� �������������� ��������� ��� �� ����� ����������� ����������. ������ � ���� ���������� � ���� ������ ��������. ����� ��������� ���� ����� �� �� ������� �� ������������, �� ������� ���� �������� ������ ��������������� ������������. � ��������� ��������� ��������� ����������� ������������� �������� ���� ����. �� ������� ������ ������������ �������, ����������� ��� �������� ���������� �������.
     � ������� ���� ����� � ���� ��������� ������������ �� ����������, � �� ������ ��������� �� �� ���� � ������� ���� ����������� ������������. � ���� ������������ Turbo Pascal 4.0 � ������������ ���� �������� �������, ���������� � TP. ��� ������� �� ������ ���������� ���� � ��������� � ���������. ���� � ��� �� ���������� Turbo Pascal ��� ����� ������ ������� �� ����� ��������, ������� � ������������ ���������� ��� ���������. ����� ����, ��� ������ ������������� ������� � ��� ��������� ������ �����!
     ��������� ������ �������� ����� �������� ��� ������� ��� ��� ����������� ��������, ������� �� ������ ���������� ��� ������������� ��������� ��������� �� ������. �� � ������� ������� ������� ������: � ���� ������� ��� ��� ��� ��������, ����� �� ����� ������ ��� ��������������, � �� ������ ��������� �� ��� � ����� �� � ��������.
     ����� ������ �� ������ �� ����� ��������. � ��������� ������� ��� � ���������� �������. ������ ������ ���������� ���� ������ ������ �������� ������������ � ����� ���� ������� � ����������� �� ���� ������. ���� ��� � ��������� ����� ���������� ������ �����-�� ������������ ������, ����� �� ������ ���������� � ������ ������. ������ ������ ����� ���������� �� ���� ����������, ��� ��� �� ������ ��������� ��������� ��� ����, ����� ������� ���� ������������ ��������. ����������, ������ ���������.
     � �����, ������ ����� �� ������ �������� ������������ ���������� ��������� �����, ������� �� �� ����� �������������. �������� ������������������:

  • ����������, � ������� ����������� ��� ����� ����������.
  • ���� ��� ��� �����, ����������� ������� ���������� � �������������� ����� ������-����� (���).
  • ���� ��� ��� ����� � ��������� ������������ �������, � �������� �� ����������������� � ������������������� �������� ���������.
  • ��������� ���� �� ������ ��������������� �������, ������� � ������������ ������ � ���������� LALR �������������.
  • �����, ����������� ������������� ������, � �������� �� P-��� � �������� �������� ������.
  • ��������� ���� �� �������������� ����� ��� ��������� ����������� � �������� ����������, �������� �����, � �.�.
  • ����������� ����� �� ��������� ����, ������ ��� ������-������ ������������� ���������� � ������� ������� ������.
  • ��������� ����� ��� ���, ����������� �����������. ��� ����� ����� �������� �������������, ����� �����.
     � ���� ����� � ���� ������������ ������ ������ ������. ��� ������, � �� ����������� ����� �� ������. � ������ ��� ����, ������� ��������. ���� �� �� ������ ������� �����������, �����υ � �������� ���... �� � ���� ��������� ����, ��� � ����. � ����� ������� ����������� ��� ������, ������� ���������� ����� ��������. �� ������� ���� �����������: � �� ����������� �������� ������������� ������, ��� �������� ����������, ����� ���������� ����� ���� � ����� �������� ���������� ������ ���� �����. �� ���������� ����� ������ ���� ������� �� ������ �����. �� �� ����� ����� ���� � ��������, 95% ������� �� ������� ����� ������ ��� ������.
     � ����� ���� ������������� ������ ���� ����� ��������������� �������: ����������� �����, ������� �������� ������������ ��������� ��������� ������� ��� ������ ��������� �����������. ������ ������ ������� ������ � ��� ������, ���� � ��� ���� ����������� ���� Yacc, � ��� ������ �������, ������� ������ ����� ������������ ������� �������.
     � ����� ������ �������� �� ������ ���� �����, ������ Small C. ��������� ����� ��� ������ ������ ������������ ����������� ������������ ������������� ���� ������� P-���� � ��������� ���������� �� ��� ����� (�front end�, ������� ���������� P-���, � �back end�, ������� ������������ P-���, ��� ��������� ������������ ���������� ����), ��� ������� ���, ��� ����� ������ ��������� ���������� ��������������� ����������� ����������� ��������� ��� � ����� �������� ����������� ����������. ����� ��� �� ����� ���������� � ���� ���... ��������� ����������������� ���� - ������� ����� ������� ������. �� ���� ����� �������� � �������� ���������� ������. � ����� �� �������� ��� � ������, ��� ��� �������� ������� �� ����� ������������ ������� ��������, � ��������� �������� ��� ��� ������� ���������� � ��������� ������������.
     �������, � ��������� ������������ ��������� ������, ������� ��� ���������� �������� ��������� ��� ����, ����� ��������, ��� ����������, �� ���������� ������ �������� ���. �������� �� ��� �������� ������������� �������������� �������, �� ���������� ��������, �� ������ ������ ����������. � ������, ��� ���� � ���� ������� �������������� ���������� ��� ������������� � ��������� I-T-L, �� � ����� ������� ���� � � IF-THEN-ELSE. �� ������ ����� � ������ ���, ��� ����� ��������� ������� �������������� ���������� ��� ��������� ������� ������������ �����. ��������� ����� ������� � ��� ��� � ��������� ��������� �������� ����/�����, ��������� ���� ��� ���� � ���� ��������� ������ � ���������� � �������� ��������� �� ����� � ���� ����� ������ ��� � � ������� �� �����. ���� ����������, ��� ��� ������ ���������� ���������� ��������� ����� ������ ������������� ����/����� �� �����. ��������� ����� ����������� � ���, ��� � �� ������� ��������� ���������/�������������� ����� ������. ���������, ������� �� ����� ���������, ����� ������������ ������ � ������ ����������� �� ������ �� ���, ����� ����� ��� ��� ���������� � Turbo Pascal. ����� � ��������� ������ ������, ������� �� ������� �� ���� ����. ����������� �� ��� �� �� ������� � ����� ���� �������� �� ������������, �� ��� ��������.
     ��������� ���� � ����� ���������������� � �������������. ��� �� �������, � �������� ������ ��������� � ���� ���������, ����� �������� ����������. �� ���� �� ��������, � �������� �� ����� ��������, �� ����� �������� �� ����� ��� 15-20 �����. � ������� ����������� �������� KISS (Keep It Simple, Sidney � ����� ��� �����, ������) � ����������������. � ������� �� ������� ������� ���-���� �������, ����� ����� ������� ������. ������������? ��������, �� ��� ���������� ���������. ��� ������ ������ ��������, ������� ��������� ��������� ��������, ����� ��������� ��������� �������� ������. ���� ������� �� �������� ��������� � ���������� ���-���� � ����� ��������, �� ������� ������� ��� �.�. ��� ����� ���������� ��������. ���� �� ���������� ���, �, ��� �� �����, ������� ��� ��������� ���� ��������� �� ����� ��������� ���, ��� �� �� ��� ������.
     � ����� ���� ��������� �� ���������� � ��������� ������� �� ��� ���, ���� �� ��������, ��� ��� ������������� ����� ���. ������� ������������� ��� ����������� � ������� ����� ������ ��� � ���. � ���� �����, ����� �������� ���������� � ������� ������������  � ���� ������ ������ �����, ����� ���������� ������������� � ����� ������. �� ��� ��� � ���� ������ ������ ��, ��� ��� �����.
     �������������� ������: ���� �� ���������, ������� �� ����� ��������� �����, ����������� � ���, ��� �� �� ����� ������ ������� � ����������� � P-����� ��� ������������� ���, �� �� ������ � ��������� �����������, ����������� ���������� ����, �� ������� ����, � ���� ��������� �� ����������. ��� �� �����, ��� ����� �� ����������� ��������� ���� ��������҅ ��� � ��������� ��� ��������������� 68000, ������������ � ���� ������� (��� SK*DOS). � �����, ��� �� �������, ��� �� �����, ��� ���������� ��� ������ ������� ���, �������� 80x86, ���������� ��������, ��� ��� � �� ���� ����� ��������. ����������, � ������� ��� ���-��, ��� ����� ���� 8086 �����, ��� �, ����������� ��� ���������� ���������� ����.

     ������

     ������ ��������� ��������� � ��������� �������� � ������������ �����/������, ������������ ��������� �� ������� � �.�. ���������, ������� �� ����� �������������, �� ���������� ����������. � ��������� ��������� �� �� ����������� ������, ����� �� ����� ������������������ �� ����� ������ ����� � �� �����������. ���, ����������� ����, ������������ ����� �������, ����������� ���, ����� ���-������ �������. �� ������� �� ���������� ����������� �����/�����, ������������ ��������� ������  � ������� � ������ �������� ���������. ������� �� Cradle. �� ���� �������� ������ �����������, �� ����� ��������� �� � Cradle � ��������� ������ ���� �����������.  ���������� Cradle � ��������� ���, ������ ��� �� ����� ������������ ��� ������������.
     ���������� ��������� ��������� ����� ��� ����������� �������� ������������ � �������������� �����������. � Unix �������� ������ ������ ���������� getc � ungetc. ������� �����, ����������� ����, ����������� � ������������� ����������, ����������� ������������ �������. ����� ��������� ������������� ������ ��� �������� ����ٻ, �������� ������ ������ �� �������� ������. ������� ������ ����������� ������� �� ��������х ������ ������� ����� GetChar ��������� ��������� ������ �� ������.

{--------------------------------------------------------------}
program Cradle;

{--------------------------------------------------------------}
{ Constant Declarations }

const TAB = ^I;

{--------------------------------------------------------------}
{ Variable Declarations }

var Look: char;              { Lookahead Character }

{--------------------------------------------------------------}
{ Read New Character From Input Stream }

procedure GetChar;
begin
   Read(Look);
end;

{--------------------------------------------------------------}
{ Report an Error }

procedure Error(s: string);
begin
   WriteLn;
   WriteLn(^G, 'Error: ', s, '.');
end;

{--------------------------------------------------------------}
{ Report Error and Halt }

procedure Abort(s: string);
begin
   Error(s);
   Halt;
end;

{--------------------------------------------------------------}
{ Report What Was Expected }

procedure Expected(s: string);
begin
   Abort(s + ' Expected');
end;

{--------------------------------------------------------------}
{ Match a Specific Input Character }

procedure Match(x: char);
begin
   if Look = x then GetChar
   else Expected('''' + x + '''');
end;

{--------------------------------------------------------------}
{ Recognize an Alpha Character }

function IsAlpha(c: char): boolean;
begin
   IsAlpha := upcase(c) in ['A'..'Z'];
end;

{--------------------------------------------------------------}

{ Recognize a Decimal Digit }

function IsDigit(c: char): boolean;
begin
   IsDigit := c in ['0'..'9'];
end;

{--------------------------------------------------------------}
{ Get an Identifier }

function GetName: char;
begin
   if not IsAlpha(Look) then Expected('Name');
   GetName := UpCase(Look);
   GetChar;
end;

{--------------------------------------------------------------}
{ Get a Number }

function GetNum: char;
begin
   if not IsDigit(Look) then Expected('Integer');
   GetNum := Look;
   GetChar;
end;

{--------------------------------------------------------------}
{ Output a String with Tab }

procedure Emit(s: string);
begin
   Write(TAB, s);
end;

{--------------------------------------------------------------}
{ Output a String with Tab and CRLF }

procedure EmitLn(s: string);
begin
   Emit(s);
   WriteLn;
end;

{--------------------------------------------------------------}
{ Initialize }

procedure Init;
begin
   GetChar;
end;

{--------------------------------------------------------------}
{ Main Program }

begin
   Init;
end.
{--------------------------------------------------------------}

     ���������� ���, �������������� ����, � TP � ��������������. ��������������, ��� ��������� ����������������� � ����������� ���������. ����� ��������� � ������� �����, ��������������� ������� ���������.