<block> ::= ( <statement> ';')*
ΠΠ· Π΄Π²ΡΡ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠΎΠ², ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ ΠΠ°ΡΠΊΠ°Π»Ρ Π²Π½Π΅ΡΠ½Π΅ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ Π±ΠΎΠ»Π΅Π΅ ΡΠ°ΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠΌ, Π½ΠΎ ΠΎΠΏΡΡ ΠΏΠΎΠΊΠ°Π·Π°Π», ΡΡΠΎ ΠΎΠ½ Π²Π΅Π΄Π΅Ρ ΠΊ Π½Π΅ΠΊΠΎΡΠΎΡΡΠΌ ΡΡΡΠ°Π½Π½ΡΠΌ ΡΡΡΠ΄Π½ΠΎΡΡΡΠΌ. ΠΡΠ΄ΠΈ ΡΠ°ΠΊ ΠΏΡΠΈΠ²ΡΠΊΠ°ΡΡ ΡΡΠ°Π²ΠΈΡΡ ΡΠΎΡΠΊΡ Ρ Π·Π°ΠΏΡΡΠΎΠΉ ΠΏΠΎΡΠ»Π΅ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΈΡ, ΡΡΠΎ ΠΎΠ½ΠΈ ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΠ΅Π΄ΠΏΠΎΡΠΈΡΠ°ΡΡ ΡΡΠ°Π²ΠΈΡΡ Π΅Π΅ ΠΈ ΠΏΠΎΡΠ»Π΅ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π³ΠΎ ΡΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΈΡ Π² Π±Π»ΠΎΠΊΠ΅. ΠΡΠΎ ΠΎΠ±ΡΡΠ½ΠΎ Π½Π΅ ΠΏΡΠΈΠ½ΠΎΡΠΈΡ ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Π»ΠΈΠ±ΠΎ Π²ΡΠ΅Π΄Π°... ΠΎΠ½Π° ΠΏΡΠΎΡΡΠΎ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΡΡΡ ΠΊΠ°ΠΊ ΠΏΡΡΡΠΎΠ΅ ΡΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΈΠ΅. ΠΠ½ΠΎΠ³ΠΈΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΡ Π½Π° ΠΠ°ΡΠΊΠ°Π»Π΅, Π²ΠΊΠ»ΡΡΠ°Ρ Π²Π°ΡΠ΅Π³ΠΎ ΠΏΠΎΠΊΠΎΡΠ½ΠΎΠ³ΠΎ ΡΠ»ΡΠ³Ρ, Π΄Π΅Π»Π°ΡΡ ΡΠΎΡΠ½ΠΎ ΡΠ°ΠΊΠΆΠ΅. ΠΠΎ Π΅ΡΡΡ ΠΎΠ΄Π½ΠΎ ΠΌΠ΅ΡΡΠΎ, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ Π²Ρ Π°Π±ΡΠΎΠ»ΡΡΠ½ΠΎ Π½Π΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΡΡΠ°Π²ΠΈΡΡ ΡΠΎΡΠΊΡ Ρ Π·Π°ΠΏΡΡΠΎΠΉ β ΠΏΡΡΠΌΠΎ ΠΏΠ΅ΡΠ΅Π΄ ELSE. ΠΡΠΎ ΠΌΠ°Π»Π΅Π½ΡΠΊΠΈΠΉ ΠΏΠΎΠ΄Π²ΠΎΠ΄Π½ΡΠΉ ΠΊΠ°ΠΌΠ΅Π½Ρ ΡΡΠΎΠΈΠ» ΠΌΠ½Π΅ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π° Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΉ, ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ ΠΊΠΎΠ³Π΄Π° ELSE Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΡΡΡ ΠΊ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠ΅ΠΌΡ ΠΊΠΎΠ΄Ρ. Π’Π°ΠΊ ΡΡΠΎ Π²ΡΠ±ΠΎΡ C/Ada ΠΎΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ Π»ΡΡΡΠ΅. ΠΡΠ΅Π²ΠΈΠ΄Π½ΠΎ, ΠΠΈΠΊΠ»Π°ΡΡ ΠΠΈΡΡ Π΄ΡΠΌΠ°Π΅Ρ ΡΠ°ΠΊΠΆΠ΅: Π² Π΅Π³ΠΎ Modula-2 ΠΎΠ½ ΠΎΡΠΊΠ°Π·Π°Π»ΡΡ ΠΎΡ ΠΠ°ΡΠΊΠ°Π»Π΅Π²ΡΠΊΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Π°.
ΠΠΌΠ΅Ρ ΡΡΠΈ Π΄Π²Π° ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ°, Π»Π΅Π³ΠΊΠΎ (ΡΠ΅ΠΏΠ΅ΡΡ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ ΡΠ΅ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΎΠ²Π°Π»ΠΈ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡ!) Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΡΡΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π² Π½Π°Ρ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡ. ΠΠ°Π²Π°ΠΉΡΠ΅ ΡΠ½Π°ΡΠ°Π»Π° Π²ΠΎΠ·ΡΠΌΠ΅ΠΌ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ ΡΠ»ΡΡΠ°ΠΉ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ ΠΏΡΠΎΡΠ΅.
ΠΠ»Ρ Π½Π°ΡΠ°Π»Π° Ρ ΡΠΏΡΠΎΡΡΠΈΠ» ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΠ² Π½ΠΎΠ²ΡΡ ΠΏΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π²Π°Π½ΠΈΡ:
{β}
{ Match a Semicolon }
procedure Semi;
begin
MatchString(';');
end;
{β}
ΠΡΠ° ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ° ΠΎΡΠ΅Π½Ρ ΠΏΠΎΡ ΠΎΠΆΠ° Π½Π° Π½Π°Ρ ΡΡΠ°ΡΡΠΉ Match. ΠΠ½Π° ΡΡΠ΅Π±ΡΠ΅Ρ ΡΡΠΎΠ±Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΡΠΎΠΊΠ΅Π½ΠΎΠΌ Π±ΡΠ»Π° ΡΠΎΡΠΊΠ° Ρ Π·Π°ΠΏΡΡΠΎΠΉ. ΠΠ°ΠΉΠ΄Ρ Π΅Π³ΠΎ, ΠΎΠ½Π° ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ΠΈΡ ΠΊ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌΡ.
Π’Π°ΠΊ ΠΊΠ°ΠΊ ΡΠΎΡΠΊΠ° Ρ Π·Π°ΠΏΡΡΠΎΠΉ ΡΠ»Π΅Π΄ΡΠ΅Ρ Π·Π° ΡΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΈΠ΅ΠΌ, ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ° Block ΠΏΠΎΡΡΠΈ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½Π°Ρ, ΠΊΠΎΡΠΎΡΡΡ ΠΌΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ:
{β}
{ Parse and Translate a Block of Statements }
procedure Block;
begin
Scan;
while not(Token in ['e', 'l']) do begin
case Token of
'i': DoIf;
'w': DoWhile;
'R': DoRead;
'W': DoWrite;
'x': Assignment;
end;
Semi;
Scan;
end;
end;
{β}
ΠΠ½ΠΈΠΌΠ°ΡΠ΅Π»ΡΠ½ΠΎ Π²Π·Π³Π»ΡΠ½ΠΈΡΠ΅ Π½Π° ΡΠΎΠ½ΠΊΠΈΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ΅ case. ΠΡΠ·ΠΎΠ² Assigment ΡΠ΅ΠΏΠ΅ΡΡ ΠΎΠ³ΡΠ°Π½ΠΈΡΠΈΠ²Π°Π΅ΡΡΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΎΠΉ Token. ΠΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ Π²ΡΠ·ΠΎΠ²Π° Assigment ΠΊΠΎΠ³Π΄Π° ΡΠΎΠΊΠ΅Π½ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΎΡΠΊΠΎΠΉ Ρ Π·Π°ΠΏΡΡΠΎΠΉ (ΡΡΠΎ ΡΠ»ΡΡΠ°Π΅ΡΡΡ ΠΊΠΎΠ³Π΄Π° ΡΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΏΡΡΡΠΎΠ΅).
Π’Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ β ΡΠΎΠΆΠ΅ ΡΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΈΡ, ΠΌΡ ΡΠ°ΠΊΠΆΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π²ΡΠ·ΠΎΠ² Semi Π² ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ TopDecl:
{β}
{ Parse and Translate Global Declarations }
procedure TopDecls;
begin
Scan;
while Token = 'v' do begin
Alloc;
while Token = ',' do
Alloc;
Semi;
end;
end;
{β}
ΠΠ°ΠΊΠΎΠ½Π΅Ρ Π½Π°ΠΌ Π½ΡΠΆΠ΅Π½ Π²ΡΠ·ΠΎΠ² Π΄Π»Ρ ΡΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΈΡ PROGRAM:
{β}
{ Main Program }
begin
Init;
MatchString('PROGRAM');
Semi;
Header;
TopDecls;
MatchString('BEGIN');
Prolog;
Block;
MatchString('END');
Epilog;
end.
{β}
ΠΡΠΎΡΠ΅ Π½Π΅ΠΊΡΠ΄Π°. ΠΡΠΏΡΠΎΠ±ΡΠΉΡΠ΅ ΡΡΠΎ Ρ ΠΊΠΎΠΏΠΈΠ΅ΠΉ TINY ΠΈ ΡΠΊΠ°ΠΆΠΈΡΠ΅ ΠΊΠ°ΠΊ Π²Π°ΠΌ ΡΡΠΎ Π½ΡΠ°Π²ΠΈΡΡΡ.
ΠΠ΅ΡΡΠΈΡ ΠΠ°ΡΠΊΠ°Π»Ρ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ»ΠΎΠΆΠ½Π΅Π΅, Π½ΠΎ ΠΎΠ½Π° Π²ΡΠ΅ ΡΠ°Π²Π½ΠΎ ΡΡΠ΅Π±ΡΠ΅Ρ ΡΠΎΠ»ΡΠΊΠΎ Π½Π΅Π±ΠΎΠ»ΡΡΠΈΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΈ ΡΠΎ ΡΠΎΠ»ΡΠΊΠΎ Π² ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ΅ Block. ΠΠ»Ρ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠΉ ΠΏΡΠΎΡΡΠΎΡΡ Π΄Π°Π²Π°ΠΉΡΠ΅ ΡΠ°Π·ΠΎΠ±ΡΠ΅ΠΌ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ Π½Π° Π΄Π²Π΅ ΡΠ°ΡΡΠΈ. Π‘Π»Π΅Π΄ΡΡΡΠ°Ρ ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ° ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅Ρ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄Π½ΠΎ ΡΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΈΠ΅:
{β}
{ Parse and Translate a Single Statement }
procedure Statement;
begin
Scan;
case Token of
'i': DoIf;
'w': DoWhile;
'R': DoRead;
'W': DoWrite;
'x': Assignment;
end;
end;
{β}
ΠΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΡΡ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠ΅ΡΠ΅ΠΏΠΈΡΠ°ΡΡ Block ΡΠ°ΠΊ:
{β}
{ Parse and Translate a Block of Statements }
procedure Block;
begin
Statement;
while Token = ';' do begin
Next;
Statement;
end;
end;
{β}
ΠΡΠΎ, ΡΠ²Π΅ΡΠ΅Π½, Π½Π΅ ΠΏΠΎΠ²ΡΠ΅Π΄ΠΈΠ»ΠΎ, Π½Π΅ ΡΠ°ΠΊ Π»ΠΈ? Π’Π΅ΠΏΠ΅ΡΡ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ Π°Π½Π°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΡΠΎΡΠΊΠΈ Ρ Π·Π°ΠΏΡΡΠΎΠΉ Π² ΠΠ°ΡΠΊΠ°Π»Ρ-ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠΌ ΡΡΠΈΠ»Π΅.
ΠΠΎΠΌΠΏΡΠΎΠΌΠΈΡΡ
Π’Π΅ΠΏΠ΅ΡΡ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ Π·Π½Π°Π΅ΠΌ ΠΊΠ°ΠΊ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ ΡΠΎΡΠΊΠ°ΠΌΠΈ Ρ Π·Π°ΠΏΡΡΠΎΠΉ, ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ Π»ΠΈ ΡΡΠΎ, ΡΡΠΎ Ρ ΡΠΎΠ±ΠΈΡΠ°ΡΡΡ ΠΏΠΎΠΌΠ΅ΡΡΠΈΡΡ ΠΈΡ Π² KISS/TINY? Π Π΄Π° ΠΈ Π½Π΅Ρ. ΠΠ½Π΅ Π½ΡΠ°Π²ΠΈΡΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠΉ ΡΠ°Ρ Π°Ρ ΠΈ Π·Π°ΡΠΈΡΠ°, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠΈΡ ΠΎΠ΄ΡΡ Ρ ΡΠ²Π΅ΡΠ΅Π½Π½ΡΠΌ Π·Π½Π°Π½ΠΈΠ΅ΠΌ, Π³Π΄Π΅ Π·Π°ΠΊΠ°Π½ΡΠΈΠ²Π°ΡΡΡΡ ΡΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΈΡ. ΠΠΎ Ρ Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ» ΡΠ²ΠΎΠ΅ΠΉ Π°Π½ΡΠΈΠΏΠ°ΡΠΈΠΈ ΠΊ ΠΎΡΠΈΠ±ΠΊΠ°ΠΌ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ, ΡΠ²ΡΠ·Π°Π½Π½ΡΠΌ Ρ ΡΠΎΡΠΊΠ°ΠΌΠΈ Ρ Π·Π°ΠΏΡΡΠΎΠΉ.
Π’Π°ΠΊ ΡΡΠΎ Ρ ΠΏΡΠΈΠ΄ΡΠΌΠ°Π» Ρ ΠΎΡΠΎΡΠΈΠΉ ΠΊΠΎΠΌΠΏΡΠΎΠΌΠΈΡ: ΡΠ΄Π΅Π»Π°Π΅ΠΌ ΠΈΡ Π½Π΅ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΡΠΌΠΈ!
Π Π°ΡΡΠΌΠΎΡΡΠΈΡΠ΅ ΡΠ»Π΅Π΄ΡΡΡΡΡ Π²Π΅ΡΡΠΈΡ Semi:
{β}
{ Match a Semicolon }
procedure Semi;
begin
if Token = ';' then Next;
end;
{β}
ΠΡΠ° ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ° Π±ΡΠ΄Π΅Ρ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ ΡΠΎΡΠΊΡ Ρ Π·Π°ΠΏΡΡΠΎΠΉ Π²ΡΡΠΊΠΈΠΉ ΡΠ°Π·, ΠΊΠΎΠ³Π΄Π° Π²ΡΠ·Π²Π°Π½Π°, Π½ΠΎ Π½Π΅ Π±ΡΠ΄Π΅Ρ Π½Π°ΡΡΠ°ΠΈΠ²Π°ΡΡ Π½Π° Π½Π΅ΠΉ. ΠΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ ΠΊΠΎΠ³Π΄Π° Π²Ρ ΡΠ΅ΡΠΈΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠΎΡΠΊΠΈ Ρ Π·Π°ΠΏΡΡΠΎΠΉ, ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ Π±ΡΠ΄Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΡΡΠΎΠ±Ρ ΡΠ΄Π΅ΡΠΆΠ°ΡΡΡΡ Π½Π° ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠΌ ΠΏΡΡΠΈ. ΠΠΎ Π΅ΡΠ»ΠΈ Π²Ρ ΠΏΡΠΎΠΏΡΡΡΠΈΡΠ΅ ΠΎΠ΄Π½Ρ (ΠΈΠ»ΠΈ ΠΏΡΠΎΠΏΡΡΡΠΈΡΠ΅ ΠΈΡ Π²ΡΠ΅Ρ ) ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ Π½Π΅ Π±ΡΠ΄Π΅Ρ ΠΆΠ°Π»ΠΎΠ²Π°ΡΡΡΡ. ΠΡΡΡΠΈΠΉ ΠΈΠ· ΠΎΠ±ΠΎΠΈΡ ΠΌΠΈΡΠΎΠ².
ΠΠΎΠΌΠ΅ΡΡΠΈΡΠ΅ ΡΡΡ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ Π½Π° ΠΌΠ΅ΡΡΠΎ Π² ΠΏΠ΅ΡΠ²ΡΡ Π²Π΅ΡΡΠΈΡ Π²Π°ΡΠ΅ΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ (Ρ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠΎΠΌ Π΄Π»Ρ C/Ada) ΠΈ Π²Ρ ΠΏΠΎΠ»ΡΡΠΈΡΠ΅ TINY Version 1.2.
ΠΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ
ΠΠΏΠ»ΠΎΡΡ Π΄ΠΎ ΡΡΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Ρ ΡΡΠ°ΡΠ΅Π»ΡΠ½ΠΎ ΠΈΠ·Π±Π΅Π³Π°Π» ΡΠ΅ΠΌΡ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠ΅Π². ΠΡ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ ΠΏΠΎΠ΄ΡΠΌΠ°ΡΡ, ΡΡΠΎ ΡΡΠΎ Π±ΡΠ΄Π΅Ρ ΠΏΡΠΎΡΡΠ°Ρ ΡΠ΅ΠΌΠ°... Π² ΠΊΠΎΠ½ΡΠ΅ ΠΊΠΎΠ½ΡΠΎΠ² ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ ΡΠΎΠ²ΡΠ΅ΠΌ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΠΌΠ΅ΡΡ Π΄Π΅Π»Π° Ρ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠΌΠΈ; ΠΎΠ½ ΠΏΡΠΎΡΡΠΎ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΠ³Π½ΠΎΡΠΈΡΠΎΠ²Π°ΡΡ ΠΈΡ . Π§ΡΠΎΠΆ, ΠΈΠ½ΠΎΠ³Π΄Π° ΡΡΠΎ ΡΠ°ΠΊ.
ΠΠ°ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΎΡΡΡΠΌΠΈ ΠΈΠ»ΠΈ Π½Π°ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΡΡΠ΄Π½ΡΠΌΠΈ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ, Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ Π²ΡΠ±ΡΠ°Π½Π½ΠΎΠ³ΠΎ Π²Π°ΠΌΠΈ ΡΠΏΠΎΡΠΎΠ±Π° ΠΈΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ. Π ΠΎΠ΄Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠ΄Π΅Π»Π°ΡΡ ΡΠ°ΠΊ, ΡΡΠΎΠ±Ρ ΡΡΠΈ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ ΠΏΠ΅ΡΠ΅Ρ Π²Π°ΡΡΠ²Π°Π»ΠΈΡΡ ΠΊΠ°ΠΊ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ½ΠΈ ΠΏΠΎΡΡΡΠΏΡΡ Π² ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ. Π Π΄ΡΡΠ³ΠΎΠΌ, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ ΠΈΡ ΠΊΠ°ΠΊ Π»Π΅ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ. Π‘ΡΠ°Π½Π΅Ρ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½Π΅Π΅ ΠΊΠΎΠ³Π΄Π° Π²Ρ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΡΠ΅ Π²Π΅ΡΠΈ, ΡΠΈΠΏΠ° ΡΠ°Π·Π΄Π΅Π»ΠΈΡΠ΅Π»Π΅ΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠ΅Π², ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΡ ΡΡ Π² ΡΡΡΠΎΠΊΠ°Ρ Π² ΠΊΠ°Π²ΡΡΠΊΠ°Ρ .
ΠΠ΄Π½ΠΎΡΠΈΠΌΠ²ΠΎΠ»ΡΠ½ΡΠ΅ ΡΠ°Π·Π΄Π΅Π»ΠΈΡΠ΅Π»ΠΈ
ΠΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ. ΠΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, ΠΌΡ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅ΠΌ ΡΡΠ°Π½Π΄Π°ΡΡ Turbo Pascal ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ Π΄Π»Ρ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠ΅Π² ΡΠΈΠ³ΡΡΠ½ΡΠ΅ ΡΠΊΠΎΠ±ΠΊΠΈ. Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΠΎΠ΄Π½ΠΎΡΠΈΠΌΠ²ΠΎΠ»ΡΠ½ΡΠ΅ ΡΠ°Π·Π΄Π΅Π»ΠΈΡΠ΅Π»ΠΈ, ΡΠ°ΠΊ ΡΡΠΎ Π½Π°Ρ Π°Π½Π°Π»ΠΈΠ· Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΡΠ΅.
ΠΠ΄ΠΈΠ½ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ ΡΠΎΡΡΠΎΠΈΡ Π² ΡΠΎΠΌ, ΡΡΠΎΠ±Ρ ΡΠ΄Π°Π»ΡΡΡ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ ΠΊΠ°ΠΊ ΡΠΎΠ»ΡΠΊΠΎ ΠΌΡ Π²ΡΡΡΠ΅ΡΠΈΠΌ ΠΈΡ Π²ΠΎ Π²Ρ ΠΎΠ΄Π½ΠΎΠΌ ΠΏΠΎΡΠΎΠΊΠ΅, Ρ.Π΅. ΠΏΡΡΠΌΠΎ Π² ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ΅ GetChar. Π§ΡΠΎΠ±Ρ ΡΠ΄Π΅Π»Π°ΡΡ ΡΡΠΎ ΡΠ½Π°ΡΠ°Π»Π° ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΠ΅ ΠΈΠΌΡ GetChar Π½Π° ΠΊΠ°ΠΊΠΎΠ΅-Π½ΠΈΠ±ΡΠ΄Ρ Π΄ΡΡΠ³ΠΎΠ΅, ΡΠΊΠ°ΠΆΠ΅ΠΌ GetCharX. (ΠΠ° Π²ΡΡΠΊΠΈΠΉ ΡΠ»ΡΡΠ°ΠΉ Π·Π°ΠΏΠΎΠΌΠ½ΠΈΡΠ΅, ΡΡΠΎ Π±ΡΠ΄Π΅Ρ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅, ΡΠ°ΠΊ ΡΡΠΎ Π»ΡΡΡΠ΅ Π½Π΅ Π΄Π΅Π»Π°ΡΡ ΡΡΠΎΠ³ΠΎ Ρ Π²Π°ΡΠ΅ΠΉ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΠΎΠΉ ΠΊΠΎΠΏΠΈΠ΅ΠΉ TINY. Π― ΠΏΠΎΠ»Π°Π³Π°Ρ Π²Ρ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅ΡΠ΅, ΡΡΠΎ Π²Ρ Π²ΡΠ΅Π³Π΄Π° Π΄ΠΎΠ»ΠΆΠ½Ρ Π΄Π΅Π»Π°ΡΡ ΡΡΠΈ ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΡ Ρ ΡΠ°Π±ΠΎΡΠ΅ΠΉ ΠΊΠΎΠΏΠΈΠ΅ΠΉ).
Π’Π΅ΠΏΠ΅ΡΡ Π½Π°ΠΌ Π½ΡΠΆΠ½Π° ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ° Π΄Π»Ρ ΠΏΡΠΎΠΏΡΡΠΊΠ° ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠ΅Π². Π’Π°ΠΊ ΡΡΠΎ Π½Π°Π±Π΅ΡΠΈΡΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅:
{β}
{ Skip A Comment Field }
procedure SkipComment;
begin
while Look <> '}' do
GetCharX;
GetCharX;
end;
{β}
Π―ΡΠ½ΠΎ, ΡΡΠΎ ΡΡΠ° ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ° Π±ΡΠ΄Π΅Ρ ΠΏΡΠΎΡΡΠΎ ΡΡΠΈΡΡΠ²Π°ΡΡ ΠΈ ΠΎΡΠ±ΡΠ°ΡΡΠ²Π°ΡΡ ΡΠΈΠΌΠ²ΠΎΠ»Ρ ΠΈΠ· Π²Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΠΎΡΠΎΠΊΠ°, ΠΏΠΎΠΊΠ° Π½Π΅ Π½Π°ΠΉΠ΄Π΅Ρ ΠΏΡΠ°Π²ΡΡ ΡΠΈΠ³ΡΡΠ½ΡΡ ΡΠΊΠΎΠ±ΠΊΡ. ΠΠ°ΡΠ΅ΠΌ ΠΎΠ½Π° ΡΡΠΈΡΡΠ²Π°Π΅Ρ Π΅ΡΠ΅ ΠΎΠ΄ΠΈΠ½ ΡΠΈΠΌΠ²ΠΎΠ» ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π΅Π³ΠΎ Π² Look.
Π’Π΅ΠΏΠ΅ΡΡ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ Π½Π°ΠΏΠΈΡΠ°ΡΡ Π½ΠΎΠ²ΡΡ Π²Π΅ΡΡΠΈΡ GetChar, ΠΊΠΎΡΠΎΡΠ°Ρ Π²ΡΠ·ΡΠ²Π°Π΅Ρ SkipComment Π΄Π»Ρ ΡΠ΄Π°Π»Π΅Π½ΠΈΡ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠ΅Π²:
{β}
{ Get Character from Input Stream }
{ Skip Any Comments }
procedure GetChar;
begin
GetCharX;
if Look = '{' then SkipComment;
end;
{β}
ΠΠ°Π±Π΅ΡΠΈΡΠ΅ ΡΡΠΎΡ ΠΊΠΎΠ΄ ΠΈ ΠΈΡΠΏΡΡΠ°ΠΉΡΠ΅ Π΅Π³ΠΎ. ΠΡ ΠΎΠ±Π½Π°ΡΡΠΆΠΈΡΠ΅, ΡΡΠΎ Π²Ρ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΡΡΠ°Π²Π»ΡΡΡ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ Π²Π΅Π·Π΄Π΅, Π³Π΄Π΅ Π·Π°Ρ ΠΎΡΠΈΡΠ΅. ΠΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π΄Π°ΠΆΠ΅ Π½Π΅ ΠΏΠΎΠΏΠ°Π΄ΡΡ Π² ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡ... ΠΊΠ°ΠΆΠ΄ΡΠΉ Π²ΡΠ·ΠΎΠ² GetChar ΠΏΡΠΎΡΡΠΎ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π»ΡΠ±ΠΎΠΉ ΡΠΈΠΌΠ²ΠΎΠ», Π½Π΅ ΡΠ²Π»ΡΡΡΠΈΠΉΡΡ ΡΠ°ΡΡΡΡ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΡ.
Π€Π°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ, Ρ ΠΎΡΡ ΡΡΠΎΡ ΠΌΠ΅ΡΠΎΠ΄ Π΄Π΅Π»Π°Π΅Ρ ΡΠ²ΠΎΠ΅ Π΄Π΅Π»ΠΎ ΠΈ ΠΌΠΎΠΆΠ΅Ρ Π΄Π°ΠΆΠ΅ ΡΠΎΠ²Π΅ΡΡΠ΅Π½Π½ΠΎ ΡΠ΄ΠΎΠ²Π»Π΅ΡΠ²ΠΎΡΡΡΡ Π²Π°Ρ, ΠΎΠ½ Π΄Π΅Π»Π°Π΅Ρ ΡΠ²ΠΎΡ ΡΠ°Π±ΠΎΡΡ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ»ΠΈΡΠΊΠΎΠΌ Ρ ΠΎΡΠΎΡΠΎ. ΠΡΠ΅ΠΆΠ΄Π΅ Π²ΡΠ΅Π³ΠΎ, Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ ΡΠ·ΡΠΊΠΎΠ² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ, ΡΡΠΎ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½Ρ ΠΊΠ°ΠΊ ΠΏΡΠΎΠ±Π΅Π»Ρ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ Π½Π΅ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ Π²Π»ΠΎΠΆΠ΅Π½Ρ, ΡΠΊΠ°ΠΆΠ΅ΠΌ, Π² ΠΈΠΌΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ. ΠΡΠ° ΡΠ΅ΠΊΡΡΠ°Ρ Π²Π΅ΡΡΠΈΡ Π½Π΅ Π·Π°Π±ΠΎΡΠΈΡΡΡ ΠΎ ΡΠΎΠΌ, Π³Π΄Π΅ Π²Ρ ΠΏΠΎΠΌΠ΅ΡΠ°Π΅ΡΠ΅ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ.
ΠΠΎ-Π²ΡΠΎΡΡΡ , ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΎΡΡΠ°Π»ΡΠ½Π°Ρ ΡΠ°ΡΡΡ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΠ° Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ Π΄Π°ΠΆΠ΅ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΠΈΠΌΠ²ΠΎΠ» '{', Π²Π°ΠΌ Π½Π΅ Π±ΡΠ΄Π΅Ρ ΠΏΠΎΠ·Π²ΠΎΠ»Π΅Π½ΠΎ ΠΏΠΎΠΌΠ΅ΡΡΠΈΡΡ Π΅Π³ΠΎ Π² ΡΡΡΠΎΠΊΡ Π² ΠΊΠ°Π²ΡΡΠΊΠ°Ρ .
ΠΠ΄Π½Π°ΠΊΠΎ, ΠΏΡΠ΅ΠΆΠ΄Π΅ ΡΠ΅ΠΌ Π²Ρ ΠΎΡΠ²Π΅ΡΠ½Π΅ΡΠ΅ ΡΠ²ΠΎΠΉ Π½ΠΎΡ ΠΎΡ ΡΠ°ΠΊΠΎΠ³ΠΎ ΡΠΏΡΠΎΡΠ΅Π½Π½ΠΎΠ³ΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΡ, Ρ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠΎΠ΄ΡΠ΅ΡΠΊΠ½ΡΡΡ, ΡΡΠΎ ΡΡΠΎΠ»Ρ ΡΠ²Π°ΠΆΠ°Π΅ΠΌΡΠΉ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ, ΠΊΠ°ΠΊ Turbo Pascal, ΡΠ°ΠΊΠΆΠ΅ Π½Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ '{' Π² ΡΡΡΠΎΠΊΠ΅ Π² ΠΊΠ°Π²ΡΡΠΊΠ°Ρ . ΠΠΎΠΏΡΠΎΠ±ΡΠΉΡΠ΅. ΠΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠ΅Π², Π²Π»ΠΎΠΆΠ΅Π½Π½ΡΡ Π² ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ, Ρ Π½Π΅ ΠΌΠΎΠ³Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΡΡ ΡΡΠΎΠ±Ρ ΠΊΡΠΎ-ΡΠΎ Π·Π°Ρ ΠΎΡΠ΅Π» ΡΠ΄Π΅Π»Π°ΡΡ ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΠ΅ Π²Π΅ΡΠΈ, ΡΠ°ΠΊ ΡΡΠΎ Π²ΠΎΠΏΡΠΎΡ ΡΠΏΠΎΡΠ΅Π½. ΠΠ»Ρ 99% Π²ΡΠ΅Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΡΠΎ ΡΡΠΎ Ρ ΠΏΠΎΠΊΠ°Π·Π°Π», Π±ΡΠ΄Π΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΏΡΠΎΡΡΠΎ ΠΎΡΠ»ΠΈΡΠ½ΠΎ.
ΠΠΎ, Π΅ΡΠ»ΠΈ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ Π±ΡΡΡ ΡΠ΅ΠΏΠ΅ΡΠΈΠ»ΡΠ½ΡΠΌ Π² ΡΡΠΎΠΌ Π²ΠΎΠΏΡΠΎΡΠ΅ ΠΈ ΠΏΡΠΈΠ΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΡ, ΡΠΎΠ³Π΄Π° Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΡΠΈΡΡ ΠΌΠ΅ΡΡΠΎ ΠΏΠ΅ΡΠ΅Ρ Π²Π°ΡΠ° Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π½ΠΈΠΆΠ΅.
Π§ΡΠΎΠ±Ρ ΡΠ΄Π΅Π»Π°ΡΡ ΡΡΠΎ ΡΠΏΠ΅ΡΠ²Π° Π²Π΅ΡΠ½ΠΈΡΠ΅ GetChar Π½Π° ΡΡΠ°ΡΠΎΠ΅ ΠΌΠ΅ΡΡΠΎ ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΠ΅ ΠΈΠΌΡ, Π²ΡΠ·ΡΠ²Π°Π΅ΠΌΠΎΠ΅ Π² SkipComment ΠΠ°ΡΠ΅ΠΌ, Π΄Π°Π²Π°ΠΉΡΠ΅ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Π»Π΅Π²ΡΡ ΡΠΈΠ³ΡΡΠ½ΡΡ ΡΠΊΠΎΠ±ΠΊΡ ΠΊΠ°ΠΊ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠΉ ΡΠΈΠΌΠ²ΠΎΠ» Π½Π΅Π·Π°ΠΏΠΎΠ»Π½Π΅Π½Π½ΠΎΠ³ΠΎ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π°:
{β}
{ Recognize White Space }
function IsWhite(c: char): boolean;
begin
IsWhite := c in [' ', TAB, CR, LF, '{'];
end;
{β}
Π’Π΅ΠΏΠ΅ΡΡ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠΌΠΈ Π² ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ΅ SkipWhite:
{β}
{ Skip Over Leading White Space }
procedure SkipWhite;
begin
while IsWhite(Look) do begin
if Look = '{' then
SkipComment
else
GetChar;
end;
end;
{β}
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ SkipWhite Π½Π°ΠΏΠΈΡΠ°Π½ ΡΠ°ΠΊ, ΡΡΠΎ ΠΌΡ ΠΏΡΠΎΠΏΡΡΡΠΈΠΌ Π»ΡΠ±ΡΡ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΡ Π½Π΅Π·Π°ΠΏΠΎΠ»Π½Π΅Π½Π½ΠΎΠ³ΠΎ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π° ΠΈ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠ΅Π² Π² ΠΎΠ΄Π½ΠΎΠΌ Π²ΡΠ·ΠΎΠ²Π΅.
ΠΡΠΎΡΠ΅ΡΡΠΈΡΡΠΉΡΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ. ΠΡ ΠΎΠ±Π½Π°ΡΡΠΆΠΈΡΠ΅, ΡΡΠΎ ΠΎΠ½ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠΌ ΡΠ»ΡΠΆΠΈΡΡ ΡΠ°Π·Π΄Π΅Π»ΠΈΡΠ΅Π»ΡΠΌΠΈ ΡΠΎΠΊΠ΅Π½ΠΎΠ². ΠΠ°ΡΠ»ΡΠΆΠΈΠ²Π°Π΅Ρ Π²Π½ΠΈΠΌΠ°Π½ΠΈΡ, ΡΡΠΎ ΡΡΠΎΡ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ ΡΠ°ΠΊΠΆΠ΅ Π΄Π°Π΅Ρ Π½Π°ΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ ΡΠΈΠ³ΡΡΠ½ΡΠ΅ ΡΠΊΠΎΠ±ΠΊΠΈ Π² ΡΡΡΠΎΠΊΠ°Ρ Π² ΠΊΠ°Π²ΡΡΠΊΠ°Ρ , ΡΠ°ΠΊ ΠΊΠ°ΠΊ Π²Π½ΡΡΡΠΈ ΡΡΠΈΡ ΡΡΡΠΎΠΊ ΠΌΡ Π½Π΅ Π±ΡΠ΄Π΅ΠΌ ΠΏΡΠΎΠ²Π΅ΡΡΡΡ ΠΈΠ»ΠΈ ΠΏΡΠΎΠΏΡΡΠΊΠ°ΡΡ ΠΏΡΠΎΠ±Π΅Π»Ρ.
ΠΡΡΠ°Π»ΡΡ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ Π²ΠΎΠΏΡΠΎΡ: Π²Π»ΠΎΠΆΠ΅Π½Π½ΡΠ΅ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ. ΠΠ΅ΠΊΠΎΡΠΎΡΡΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠ°ΠΌ Π½ΡΠ°Π²ΠΈΡΡΡ ΠΈΠ΄Π΅Ρ Π²Π»ΠΎΠΆΠ΅Π½Π½ΡΡ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠ΅Π² ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠΎΠ΄ Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΠΎΡΠ»Π°Π΄ΠΊΠΈ. ΠΠΎΠ΄, ΠΊΠΎΡΠΎΡΡΠΉ Ρ Π΄Π°Π» Π·Π΄Π΅ΡΡ Π½Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ ΡΡΠΎΠ³ΠΎ ΠΈ, ΡΠ½ΠΎΠ²Π°, Π½Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ ΠΈ Turbo Pascal.
ΠΠΎ ΠΈΡΠΏΡΠ°Π²ΠΈΡΡ ΡΡΠΎ Π½Π΅Π²Π΅ΡΠΎΡΡΠ½ΠΎ ΠΏΡΠΎΡΡΠΎ. ΠΡΠ΅, ΡΡΠΎ Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ β ΡΠ΄Π΅Π»Π°ΡΡ SkipComment ΡΠ΅ΠΊΡΡΡΠΈΠ²Π½ΠΎΠΉ: