case Token of
'i': DoIf;
'w': DoWhile;
'R': DoRead;
'W': DoWrite;
else Assignment;
end;
Scan;
end;
end;
{β}
ΠΠ°ΠΊ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΠΈΠ΄Π΅ΡΡ, Block ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½ Π½Π° ΠΈΠ½Π΄ΠΈΠ²ΠΈΠ΄ΡΠ°Π»ΡΠ½ΡΠ΅ ΡΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ. ΠΡΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΏΡΠΎΡ ΠΎΠ΄Π΅ ΡΠΈΠΊΠ»Π° ΠΌΡ Π·Π½Π°Π΅ΠΌ, ΡΡΠΎ ΠΌΡ Π½Π°Ρ ΠΎΠ΄ΠΈΠΌΡΡ Π² Π½Π°ΡΠ°Π»Π΅ ΡΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΈΡ. ΠΡ Π²ΡΡ ΠΎΠ΄ΠΈΠΌ ΠΈΠ· Π±Π»ΠΎΠΊΠ° ΠΊΠΎΠ³Π΄Π° ΠΎΠ±Π½Π°ΡΡΠΆΠΈΠ²Π°Π΅ΠΌ END ΠΈΠ»ΠΈ ELSE.
ΠΠΎ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, ΡΡΠΎ Π²ΠΌΠ΅ΡΡΠΎ ΡΡΠΎΠ³ΠΎ ΠΌΡ Π²ΡΡΡΠ΅ΡΠΈΠ»ΠΈ ΡΠΎΡΠΊΡ Ρ Π·Π°ΠΏΡΡΠΎΠΉ. ΠΡΡΠ΅ΡΠΊΠ°Π·Π°Π½Π½Π°Ρ ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ° Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ Π΅Π΅ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°ΡΡ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ° Scan ΠΎΠΆΠΈΠ΄Π°Π΅Ρ ΠΈ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΠΎΠΊΠ΅Π½Ρ, Π½Π°ΡΠΈΠ½Π°ΡΡΠΈΠ΅ΡΡ Ρ Π±ΡΠΊΠ²Ρ.
Π― ΠΏΠΎΠ²ΠΎΠ·ΠΈΠ»ΡΡ Ρ ΡΡΠΈΠΌ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΡΡΠΎΠ±Ρ Π½Π°ΠΉΡΠΈ ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅. Π― Π½Π°ΡΠ΅Π» ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΡ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΎΠ², Π½ΠΎ Π½ΠΈ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π½ΠΈΡ ΠΌΠ΅Π½Ρ Π½Π΅ ΡΠ΄ΠΎΠ²Π»Π΅ΡΠ²ΠΎΡΡΠ». Π ΠΊΠΎΠ½ΡΠ΅ ΠΊΠΎΠ½ΡΠΎΠ² Ρ Π²ΡΡΡΠ½ΠΈΠ» ΠΏΡΠΈΡΠΈΠ½Ρ.
ΠΡΠΏΠΎΠΌΠ½ΠΈΡΠ΅, ΡΡΠΎ ΠΊΠΎΠ³Π΄Π° ΠΌΡ Π½Π°ΡΠΈΠ½Π°Π»ΠΈ Ρ Π½Π°ΡΠΈΡ ΠΎΠ΄Π½ΠΎΡΠΈΠΌΠ²ΠΎΠ»ΡΠ½ΡΡ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΡ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΠΎΠ², ΠΌΡ ΠΏΡΠΈΠ½ΡΠ»ΠΈ ΡΠΎΠ³Π»Π°ΡΠ΅Π½ΠΈΠ΅, ΠΏΠΎ ΠΊΠΎΡΠΎΡΠΎΠΌΡ ΠΏΡΠ΅Π΄ΡΠΊΠ°Π·ΡΠ²Π°ΡΡΠΈΠΉ ΡΠΈΠΌΠ²ΠΎΠ» Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ Π²ΡΠ΅Π³Π΄Π° ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΡΠΈΡΠ°Π½. Π’ΠΎ Π΅ΡΡΡ, ΠΌΡ ΠΈΠΌΠ΅Π»ΠΈ Π±Ρ ΡΠΈΠΌΠ²ΠΎΠ», ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΉ Π½Π°ΡΠ΅ΠΉ ΡΠ΅ΠΊΡΡΠ΅ΠΉ ΠΏΠΎΠ·ΠΈΡΠΈΠΈ Π²ΠΎ Π²Ρ ΠΎΠ΄Π½ΠΎΠΌ ΠΏΠΎΡΠΎΠΊΠ΅, ΠΏΠΎΠΌΠ΅ΡΠ΅Π½Π½ΡΠΉ Π² Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΠΎΠΉ ΡΠΈΠΌΠ²ΠΎΠ»ΡΠ½ΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Look, ΡΠ°ΠΊ ΡΡΠΎ ΠΌΡ ΠΌΠΎΠ³Π»ΠΈ ΠΏΡΠΎΠ²Π΅ΡΡΡΡ Π΅Π³ΠΎ ΡΡΠΎΠ»ΡΠΊΠΎ ΡΠ°Π·, ΡΠΊΠΎΠ»ΡΠΊΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ. ΠΠΎ ΠΏΡΠ°Π²ΠΈΠ»Ρ, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΌΡ ΠΏΡΠΈΠ½ΡΠ»ΠΈ, ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π²Π°ΡΠ΅Π»Ρ, Π΅ΡΠ»ΠΈ ΠΎΠ½ Π½Π°Ρ ΠΎΠ΄ΠΈΠ» ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Π½ΡΠΉ Π΅ΠΌΡ ΡΠΈΠΌΠ²ΠΎΠ», ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ°Π» Π±Ρ Look Π½Π° ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΡΠΈΠΌΠ²ΠΎΠ» Π²ΠΎ Π²Ρ ΠΎΠ΄Π½ΠΎΠΌ ΠΏΠΎΡΠΎΠΊΠ΅.
ΠΡΠΎ ΠΏΡΠΎΡΡΠΎΠ΅ ΠΈ ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΡΠΎΠ³Π»Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠ»ΡΠΆΠΈΠ»ΠΎ Π½Π°ΠΌ ΠΎΡΠ΅Π½Ρ Ρ ΠΎΡΠΎΡΠΎ ΠΊΠΎΠ³Π΄Π° ΠΌΡ ΠΈΠΌΠ΅Π»ΠΈ ΠΎΠ΄Π½ΠΎΡΠΈΠΌΠ²ΠΎΠ»ΡΠ½ΡΠ΅ ΡΠΎΠΊΠ΅Π½Ρ, ΠΈ Π²ΡΠ΅ Π΅ΡΠ΅ ΡΠ»ΡΠΆΠΈΡ. ΠΡΠ» Π±Ρ Π±ΠΎΠ»ΡΡΠΎΠΉ ΡΠΌΡΡΠ» ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΡ ΡΠΎ ΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ ΠΈ ΠΊ ΠΌΠ½ΠΎΠ³ΠΎΡΠΈΠΌΠ²ΠΎΠ»ΡΠ½ΡΠΌ ΡΠΎΠΊΠ΅Π½Π°ΠΌ.
ΠΠΎ ΠΊΠΎΠ³Π΄Π° ΠΌΡ Π·Π°Π»Π΅Π·Π»ΠΈ Π² Π»Π΅ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π°Π½Π°Π»ΠΈΠ·, Ρ Π½Π°ΡΠ°Π» Π½Π°ΡΡΡΠ°ΡΡ ΡΡΠΎ ΠΏΡΠΎΡΡΠΎΠ΅ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ. Π‘ΠΊΠ°Π½Π΅Ρ ΠΈΠ· ΠΠ»Π°Π²Ρ 10 Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΏΡΠΎΠ΄Π²ΠΈΠ³Π°Π»ΡΡ ΠΊ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌΡ ΡΠΎΠΊΠ΅Π½Ρ Π΅ΡΠ»ΠΈ ΠΎΠ½ Π½Π°Ρ ΠΎΠ΄ΠΈΠ» ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ ΠΈΠ»ΠΈ ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ, Π½ΠΎ ΠΎΠ½ Π½Π΅ Π΄Π΅Π»Π°Π» ΡΡΠΎΠ³ΠΎ Π΅ΡΠ»ΠΈ Π½Π°Ρ ΠΎΠ΄ΠΈΠ» Π²ΠΎΠ·Π²ΡΠ°Ρ ΠΊΠ°ΡΠ΅ΡΠΊΠΈ, ΡΠΈΠΌΠ²ΠΎΠ» ΠΏΡΠΎΠ±Π΅Π»Π° ΠΈΠ»ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ.
Π’Π΅ΠΏΠ΅ΡΡ, ΡΠ°ΠΊΠΎΠΉ ΡΠΌΠ΅ΡΠ°Π½Π½ΡΠΉ ΡΠ΅ΠΆΠΈΠΌ ΡΠ°Π±ΠΎΡΡ Π²Π²Π΅ΡΠ³Π°Π΅Ρ Π½Π°Ρ Π² Π³Π»ΡΠ±ΠΎΠΊΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Π² ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ΅ Block, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Π±ΡΠ» ΠΈΠ»ΠΈ Π½Π΅Ρ Π²Ρ ΠΎΠ΄Π½ΠΎΠΉ ΠΏΠΎΡΠΎΠΊ ΠΏΡΠΎΠ΄Π²ΠΈΠ½ΡΡ Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ Π²ΠΈΠ΄Π° Π²ΡΡΡΠ΅ΡΠ΅Π½Π½ΠΎΠ³ΠΎ Π½Π°ΠΌΠΈ ΡΠΎΠΊΠ΅Π½Π°. ΠΡΠ»ΠΈ ΡΡΠΎ ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ ΠΈΠ»ΠΈ Π»Π΅Π²Π°Ρ ΡΠ°ΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΡ, Β«ΠΊΡΡΡΠΎΡΒ», ΠΊΠ°ΠΊ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΎ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΡΠΌ Look, Π±ΡΠ» ΠΏΡΠΎΠ΄Π²ΠΈΠ½ΡΡ ΠΊ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌΡ ΡΠΈΠΌΠ²ΠΎΠ»Ρ ΠΈΠ»ΠΈ ΠΊ Π½Π°ΡΠ°Π»Ρ Π½Π΅Π·Π°ΠΏΠΎΠ»Π½Π΅Π½Π½ΠΎΠ³ΠΎ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π°. ΠΡΠ»ΠΈ, Ρ Π΄ΡΡΠ³ΠΎΠΉ ΡΡΠΎΡΠΎΠ½Ρ, ΡΠΎΠΊΠ΅Π½ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΎΡΠΊΠΎΠΉ Ρ Π·Π°ΠΏΡΡΠΎΠΉ, ΠΈΠ»ΠΈ Π΅ΡΠ»ΠΈ ΠΌΡ Π½Π°ΠΆΠ°Π»ΠΈ Π²ΠΎΠ·Π²ΡΠ°Ρ ΠΊΠ°ΡΠ΅ΡΠΊΠΈ ΠΊΡΡΡΠΎΡ Π½Π΅ Π±ΡΠ» ΠΏΡΠΎΠ΄Π²ΠΈΠ½ΡΡ.
Π‘Π°ΠΌΠΎ ΡΠΎΠ±ΠΎΠΉ ΡΠ°Π·ΡΠΌΠ΅Π΅ΡΡΡ, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π»ΠΎΠ³ΠΈΠΊΠΈ ΡΡΠΎΠ±Ρ ΡΠ΄Π΅ΡΠΆΠ°ΡΡΡΡ Π½Π° ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠΌ ΠΏΡΡΠΈ. ΠΠΎ ΡΡΠΎ ΡΠ»ΠΎΠΆΠ½ΠΎ ΠΈ Π΄Π΅Π»Π°Π΅Ρ Π²Π΅ΡΡ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡ ΠΎΡΠ΅Π½Ρ Π½Π΅Π½Π°Π΄Π΅ΠΆΠ½ΡΠΌ.
Π‘ΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π³ΠΎΡΠ°Π·Π΄ΠΎ Π»ΡΡΡΠΈΠΉ ΡΠΏΠΎΡΠΎΠ± β ΠΏΡΠΎΡΡΠΎ ΠΏΡΠΈΠ½ΡΡΡ ΡΠΎ ΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΡΠ°ΠΊ Ρ ΠΎΡΠΎΡΠΎ ΡΠ°Π±ΠΎΡΠ°Π»ΠΎ ΡΠ°Π½ΡΡΠ΅, ΠΈ ΠΎΡΠ½ΠΎΡΠΈΡΡΡΡ ΠΊ ΡΠΎΠΊΠ΅Π½Π°ΠΌ ΡΠ°ΠΊ ΠΆΠ΅ ΠΊΠ°ΠΊ ΠΎΠ΄ΠΈΠ½ΠΎΡΠ½ΡΠΌ ΡΠΈΠ²ΠΎΠ»Π°ΠΌ. ΠΡΡΠ³ΠΈΠΌΠΈ ΡΠ»ΠΎΠ²Π°ΠΌΠΈ, ΠΌΡ Π±ΡΠ΄Π΅ΠΌ Π·Π°ΡΠ°Π½Π΅Π΅ ΡΡΠΈΡΡΠ²Π°ΡΡ ΡΠΎΠΊΠ΅Π½ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ ΡΠΎΠΌΡ, ΠΊΠ°ΠΊ ΠΌΡ Π²ΡΠ΅Π³Π΄Π° ΡΡΠΈΡΡΠ²Π°Π»ΠΈ ΡΠΈΠΌΠ²ΠΎΠ». ΠΡΠΎ ΠΊΠ°ΠΆΠ΅ΡΡΡ ΡΠ°ΠΊΠΈΠΌ ΠΎΡΠ΅Π²ΠΈΠ΄Π½ΡΠΌ ΠΊΠ°ΠΊ ΡΠΎΠ»ΡΠΊΠΎ Π²Ρ ΠΏΠΎΠ΄ΡΠΌΠ°Π΅ΡΠ΅ ΠΎΠ± ΡΡΠΎΠΌ ΡΠΏΠΎΡΠΎΠ±Π΅.
ΠΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎ, ΡΡΠΎ Π΅ΡΠ»ΠΈ ΠΌΡ ΠΏΠΎΡΡΡΠΏΠΈΠΌ ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠ°Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Ρ ΡΠΈΠΌΠ²ΠΎΠ»Π°ΠΌΠΈ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄Π° ΡΡΡΠΎΠΊΠΈ ΠΈΡΡΠ΅Π·Π½Π΅Ρ. ΠΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡΠΎΡΡΠΎ ΡΠ°ΡΡΠΌΠ°ΡΠΈΠ²Π°ΡΡ ΠΈΡ ΠΊΠ°ΠΊ ΡΠΈΠΌΠ²ΠΎΠ»Ρ ΠΏΡΠΎΠ±Π΅Π»Π°, ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠΎΠ² ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ ΡΡΠΈΠ²ΠΈΠ°Π»ΡΠ½ΠΎΠΉ ΠΈ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΌΠ΅Π½Π΅Π΅ ΡΠΊΠ»ΠΎΠ½Π½ΠΎΠΉ ΠΊ ΠΎΡΠΈΠ±ΠΊΠ°ΠΌ ΡΠ΅ΠΌ ΡΠ°Π½ΡΡΠ΅.
Π Π΅ΡΠ΅Π½ΠΈΠ΅
ΠΠ°Π²Π°ΠΉΡΠ΅ Π½Π°ΡΠ½Π΅ΠΌ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Ρ ΠΏΠ΅ΡΠ΅ΡΠΌΠΎΡΡΠ° Π΄Π²ΡΡ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ:
{β}
{ Get an Identifier }
procedure GetName;
begin
SkipWhite;
if Not IsAlpha(Look) then Expected('Identifier');
Token := 'x';
Value := '';
repeat
Value := Value + UpCase(Look);
GetChar;
until not IsAlNum(Look);
end;
{β}
{ Get a Number }
procedure GetNum;
begin
SkipWhite;
if not IsDigit(Look) then Expected('Number');
Token := '#';
Value := '';
repeat
Value := Value + Look;
GetChar;
until not IsDigit(Look);
end;
{β}
ΠΡΠΈ Π΄Π²Π΅ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎ ΠΏΠΎΡΡΠΈ ΠΈΠ΄Π΅Π½ΡΠΈΡΠ½Ρ ΡΠ΅ΠΌ, ΠΊΠΎΡΠΎΡΡΠ΅ Ρ ΠΏΠΎΠΊΠ°Π·Π°Π» Π²Π°ΠΌ Π² ΠΠ»Π°Π²Π΅ 7. ΠΠ°ΠΆΠ΄Π°Ρ ΠΈΠ· Π½ΠΈΡ Π²ΡΠ±ΠΈΡΠ°Π΅Ρ ΡΠ΅ΠΊΡΡΠΈΠΉ ΡΠΎΠΊΠ΅Π½, ΠΈΠ»ΠΈ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ ΠΈΠ»ΠΈ ΡΠΈΡΠ»ΠΎ, Π² Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΡΡ ΡΡΡΠΎΠΊΠΎΠ²ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Value. ΠΠ½ΠΈ ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°ΡΡ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ, Token, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΉ ΠΊΠΎΠ΄. ΠΡ ΠΎΠ΄Π½ΠΎΠΉ ΠΏΠΎΡΠΎΠΊ ΠΎΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΡΡΡ Π½Π° Look, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠ΅ΠΌ ΠΏΠ΅ΡΠ²ΡΠΉ ΡΠΈΠΌΠ²ΠΎΠ», Π½Π΅ ΡΠ²Π»ΡΡΡΠΈΠΉΡΡ ΡΠ°ΡΡΡΡ ΡΠΎΠΊΠ΅Π½Π°.
ΠΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠ΄Π΅Π»Π°ΡΡ ΡΠΎ ΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅ Π΄Π»Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ², Π΄Π°ΠΆΠ΅ ΠΌΠ½ΠΎΠ³ΠΎΡΠΈΠΌΠ²ΠΎΠ»ΡΠ½ΡΡ , Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ ΡΠΈΠΏΠ°:
{β}
{ Get an Operator }
procedure GetOp;
begin
Token := Look;
Value := '';
repeat
Value := Value + Look;
GetChar;
until IsAlpha(Look) or IsDigit(Look) or IsWhite(Look);
end;
{β}
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ GetOps Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π·Π°ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΡΠΎΠΊΠ΅Π½Π° ΠΏΠ΅ΡΠ²ΡΠΉ ΡΠΈΠΌΠ²ΠΎΠ» ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ°. ΠΡΠΎ Π²Π°ΠΆΠ½ΠΎ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΡΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ ΡΠ΅ΠΏΠ΅ΡΡ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠΎΡ ΠΎΠ΄ΠΈΠ½ΠΎΡΠ½ΡΠΉ ΡΠΈΠΌΠ²ΠΎΠ» Π΄Π»Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΌ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΠΎΠΌ Π²ΠΌΠ΅ΡΡΠΎ ΠΏΡΠ΅Π΄ΡΠΊΠ°Π·ΡΠ²Π°ΡΡΠ΅Π³ΠΎ ΡΠΈΠΌΠ²ΠΎΠ»Π°.
ΠΠ°ΠΌ Π½ΡΠΆΠ½ΠΎ ΡΠ²ΡΠ·Π°ΡΡ ΡΡΠΈ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ Π²ΠΌΠ΅ΡΡΠ΅ Π² ΠΎΠ΄Π½Ρ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΌΠΎΠΆΠ΅Ρ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ Π²ΡΠ΅ ΡΡΠΈ ΡΠ»ΡΡΠ°Ρ. Π‘Π»Π΅Π΄ΡΡΡΠ°Ρ ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ° Π±ΡΠ΄Π΅Ρ ΡΡΠΈΡΡΠ²Π°ΡΡ Π»ΡΠ±ΠΎΠΉ ΠΈΠ· ΡΡΠΈΡ ΡΠΈΠΏΠΎΠ² ΡΠΎΠΊΠ΅Π½ΠΎΠ² ΠΈ Π²ΡΠ΅Π³Π΄Π° ΠΎΡΡΠ°Π²Π»ΡΡΡ Π²Ρ ΠΎΠ΄Π½ΠΎΠΉ ΠΏΠΎΡΠΎΠΊ Π·Π° Π½ΠΈΠΌ:
{β}
{ Get the Next Input Token }
procedure Next;
begin
SkipWhite;
if IsAlpha(Look) then GetName
else if IsDigit(Look) then GetNum
else GetOp;
end;
{β}
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ Π·Π΄Π΅ΡΡ Ρ ΠΏΠΎΠΌΠ΅ΡΡΠΈΠ» SkipWhite ΠΏΠ΅ΡΠ΅Π΄ Π²ΡΠ·ΠΎΠ²Π°ΠΌΠΈ Π° Π½Π΅ ΠΏΠΎΡΠ»Π΅. ΠΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ, ΡΡΠΎ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ Look Π½Π΅ Π±ΡΠ΄Π΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ Π·Π½Π°ΡΠΈΠΌΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΈ, ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ, ΠΌΡ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΅Π΅ ΠΊΠ°ΠΊ ΡΠ΅ΡΡΠΈΡΡΠ΅ΠΌΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠΈ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠΌ Π°Π½Π°Π»ΠΈΠ·Π΅, ΠΊΠ°ΠΊ ΠΌΡ Π΄Π΅Π»Π°Π»ΠΈ Π΄ΠΎ ΡΡΠΎΠ³ΠΎ. ΠΡΠΎ Π±ΠΎΠ»ΡΡΠΎΠ΅ ΠΎΡΠΊΠ»ΠΎΠ½Π΅Π½ΠΈΠ΅ ΠΎΡ Π½Π°ΡΠ΅Π³ΠΎ Π½ΠΎΡΠΌΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Π°.
Π’Π΅ΠΏΠ΅ΡΡ, Π½Π΅ Π·Π°Π±ΡΠ΄ΡΡΠ΅, ΡΡΠΎ ΡΠ°Π½ΡΡΠ΅ Ρ ΠΈΠ·Π±Π΅Π³Π°Π» ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² Π²ΠΎΠ·Π²ΡΠ°ΡΠ° ΠΊΠ°ΡΠ΅ΡΠΊΠΈ (CR) ΠΈ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄Π° ΡΡΡΠΎΠΊΠΈ (LF) ΠΊΠ°ΠΊ Π½Π΅Π·Π°ΠΏΠΎΠ»Π½Π΅Π½Π½ΠΎΠ³ΠΎ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π°. ΠΡΠΈΡΠΈΠ½Π° Π±ΡΠ»Π° Π² ΡΠΎΠΌ, ΡΡΠΎ ΡΠ°ΠΊ ΠΊΠ°ΠΊ SkipWhite Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΉ Π² ΡΠΊΠ°Π½Π΅ΡΠ΅, Π²ΡΡΡΠ΅ΡΠ° Ρ LF ΠΈΠ½ΠΈΡΠΈΠΈΡΠΎΠ²Π°Π»Π° Π±Ρ ΡΡΠ΅Π½ΠΈΠ΅ ΠΈΠ· Π²Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΠΎΡΠΎΠΊΠ°. ΠΡΠ»ΠΈ Π±Ρ ΠΌΡ Π±ΡΠ»ΠΈ Π½Π° ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΉ ΡΡΡΠΎΠΊΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΠΌΡ Π½Π΅ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ Π²ΡΠΉΡΠΈ Π΄ΠΎ ΡΠ΅Ρ ΠΏΠΎΡ, ΠΏΠΎΠΊΠ° ΠΌΡ Π½Π΅ Π²Π²Π΅Π΄Π΅ΠΌ Π΄ΡΡΠ³ΡΡ ΡΡΡΠΎΠΊΡ Ρ ΠΎΡΠ»ΠΈΡΠ½ΡΠΌ ΠΎΡ ΠΏΡΠΎΠ±Π΅Π»Π° ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠΌ. ΠΠΌΠ΅Π½Π½ΠΎ ΠΏΠΎΡΡΠΎΠΌΡ ΠΌΠ½Π΅ ΡΡΠ΅Π±ΠΎΠ²Π°Π»Π°ΡΡ Π²ΡΠΎΡΠ°Ρ ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ° NewLine Π΄Π»Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ CRLF.
ΠΠΎ ΡΠ΅ΠΉΡΠ°Ρ, ΠΊΠΎΠ³Π΄Π° ΠΏΠ΅ΡΠ²ΡΠΌ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π²ΡΠ·ΠΎΠ² SkipWhite, ΡΡΠΎ ΡΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ. ΠΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π·Π½Π°ΡΡ, ΡΡΠΎ ΠΏΠΎΡΠ²ΠΈΠ»ΡΡ Π΄ΡΡΠ³ΠΎΠΉ ΡΠΎΠΊΠ΅Π½ ΠΈΠ»ΠΈ ΠΎΠ½ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²ΡΠ·ΡΠ²Π°ΡΡ Next. ΠΡΡΠ³ΠΈΠΌΠΈ ΡΠ»ΠΎΠ²Π°ΠΌΠΈ, ΠΎΠ½ Π΅ΡΠ΅ Π½Π΅ ΠΎΠ±Π½Π°ΡΡΠΆΠΈΠ» Π·Π°Π²Π΅ΡΡΠ°ΡΡΠΈΠΉ END. ΠΠΎΡΡΠΎΠΌΡ ΠΌΡ Π±ΡΠ΄Π΅ΠΌ Π½Π°ΡΡΠ°ΠΈΠ²Π°ΡΡ Π½Π° Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ Π΄Π°Π½Π½ΡΡ Π΄ΠΎ ΡΠ΅Ρ ΠΏΠΎΡ, ΠΏΠΎΠΊΠ° Π½Π΅ Π½Π°ΠΉΠ΄Π΅ΠΌ ΡΡΠΎ-Π»ΠΈΠ±ΠΎ.
ΠΡΠ΅ ΡΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠΏΡΠΎΡΡΠΈΡΡ ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΠΈ, ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Ρ CR ΠΈ LF ΠΊΠ°ΠΊ Π½Π΅Π·Π°ΠΏΠΎΠ»Π½Π΅Π½Π½ΠΎΠ΅ ΠΏΡΠΎΡΡΠ°Π½ΡΡΠ²ΠΎ ΠΈ ΡΠ±ΡΠ°Π² NewLine. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ΄Π΅Π»Π°ΡΡ ΡΡΠΎ ΠΏΡΠΎΡΡΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ² ΡΡΠ½ΠΊΡΠΈΡ IsWhite:
{β}
{ Recognize White Space }
function IsWhite(c: char): boolean;
begin
IsWhite := c in [' ', TAB, CR, LF];
end;
{β}
ΠΡ ΡΠΆΠ΅ ΠΏΡΠΎΠ±ΠΎΠ²Π°Π»ΠΈ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΡΠ΅ ΠΏΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π² ΠΠ»Π°Π²Π΅ 7, Π½ΠΎ Π²Ρ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ ΡΠ°ΠΊΠΆΠ΅ ΠΏΠΎΠΏΡΠΎΠ±ΠΎΠ²Π°ΡΡ ΠΈ ΡΡΠΈ. ΠΠΎΠ±Π°Π²ΡΡΠ΅ ΠΈΡ ΠΊ ΠΊΠΎΠΏΠΈΠΈ Cradle ΠΈ Π²ΡΠ·ΠΎΠ²ΠΈΡΠ΅ Next Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅:
{β}
{ Main Program }
begin
Init;
repeat
Next;
WriteLn(Token, ' ', Value);
until Token = '.';
end.
{β}
ΠΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠΉΡΠ΅ ΠΈ ΠΏΡΠΎΠ²Π΅ΡΡΡΠ΅, ΡΡΠΎ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ°Π·Π΄Π΅Π»ΡΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π½Π° ΡΠ΅ΡΠΈΠΈ ΡΠΎΠΊΠ΅Π½ΠΎΠ² ΠΈ Π²Ρ ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΠ΅ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠ΅ ΠΊΠΎΠ΄Π° Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠΎΠΊΠ΅Π½Π°.
ΠΠΎΡΡΠΈ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ, Π½ΠΎ Π½Π΅ ΡΠΎΠ²ΡΠ΅ΠΌ. Π‘ΡΡΠ΅ΡΡΠ²ΡΡΡ Π΄Π²Π΅ ΠΏΠΎΡΠ΅Π½ΡΠΈΠ°Π»ΡΠ½ΡΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ: ΠΠΎ-ΠΏΠ΅ΡΠ²ΡΡ , Π² KISS/TINY ΠΏΠΎΡΡΠΈ Π²ΡΠ΅ Π½Π°ΡΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ β ΠΎΠ΄Π½ΠΎΡΠΈΠΌΠ²ΠΎΠ»ΡΠ½ΡΠ΅. ΠΠ΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΠΎΠ΅ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΡΠΎΡΡΠ°Π²Π»ΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠΉ >=, <= ΠΈ <>. ΠΡΠ»ΠΎ Π±Ρ ΠΏΠΎΠ·ΠΎΡΠΎΠΌ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ Π²ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ ΠΊΠ°ΠΊ ΡΡΡΠΎΠΊΠΈ ΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ ΡΡΡΠΎΠΊ ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΡΡΠΈ Π²ΡΠ΅Π³Π΄Π° ΡΠ΄ΠΎΠ²Π»Π΅ΡΠ²ΠΎΡΠΈΡ ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ ΠΎΠ΄ΠΈΠ½ΠΎΡΠ½ΡΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ². ΠΡΠΎΡΠΎΠ΅, ΠΈ Π±ΠΎΠ»Π΅Π΅ Π²Π°ΠΆΠ½ΠΎΠ΅, ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π½Π΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ, ΠΊΠΎΠ³Π΄Π° Π΄Π²Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° ΠΏΠΎΡΠ²Π»ΡΡΡΡΡ Π²ΠΌΠ΅ΡΡΠ΅ ΠΊΠ°ΠΊ Π² (a+b)*(c+d). ΠΠ΄Π΅ΡΡ ΡΡΡΠΎΠΊΠ° ΠΏΠΎΡΠ»Π΅ b Π±ΡΠ»Π° Π±Ρ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠΈΡΠΎΠ²Π°Π½Π° ΠΊΠ°ΠΊ ΠΎΠ΄ΠΈΠ½ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ ")*(".
ΠΠΎΠΆΠ½ΠΎ ΡΡΡΡΠ°Π½ΠΈΡΡ ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ. Π ΠΏΡΠΈΠΌΠ΅ΡΡ ΠΌΡ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ ΠΏΡΠΎΡΡΠΎ Π΄Π°ΡΡ GetOp ΡΠΏΠΈΡΠΎΠΊ Π΄ΠΎΠΏΡΡΡΠΈΠΌΡΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² ΠΈ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ ΡΠΊΠΎΠ±ΠΊΠΈ ΠΊΠ°ΠΊ ΠΎΡΠ»ΠΈΡΠ½ΡΠΉ ΠΎΡ Π΄ΡΡΠ³ΠΈΡ ΡΠΈΠΏ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ². ΠΠΎ ΡΡΠΎ Ρ Π»ΠΎΠΏΠΎΡΠ½ΠΎΠ΅ Π΄Π΅Π»ΠΎ.
Π ΡΡΠ°ΡΡΡΡ, ΠΈΠΌΠ΅Π΅ΡΡΡ Π»ΡΡΡΠΈΠΉ ΡΠΏΠΎΡΠΎΠ±, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ΅ΡΠ°Π΅Ρ Π²ΡΠ΅ ΡΡΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ. Π’Π°ΠΊ ΠΊΠ°ΠΊ ΠΏΠΎΡΡΠΈ Π²ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ ΠΎΠ΄Π½ΠΎΡΠΈΠΌΠ²ΠΎΠ»ΡΠ½ΡΠ΅, Π΄Π°Π²Π°ΠΉΡΠ΅ ΠΏΡΠΎΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠΌ GetOp ΠΏΠΎΠ»ΡΡΠ°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΡΠΈΠΌΠ²ΠΎΠ» ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ. ΠΡΠΎ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΡΠΏΡΠΎΡΠ°Π΅Ρ GetOp, Π½ΠΎ ΡΠ°ΠΊΠΆΠ΅ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΡΡΠΊΠΎΡΡΠ΅Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ. Π£ Π½Π°Ρ Π²ΡΠ΅ Π΅ΡΠ΅ ΠΎΡΡΠ°Π΅ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ² ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠΉ, Π½ΠΎ ΠΌΡ Π² Π»ΡΠ±ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π»ΠΈ ΠΈΡ ΠΊΠ°ΠΊ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠ΅ ΡΠ»ΡΡΠ°ΠΈ.
Π’Π°ΠΊ ΡΡΠΎ Π²ΠΎΡ ΡΠΈΠ½Π°Π»ΡΠ½Π°Ρ Π²Π΅ΡΡΠΈΡ GetOp:
{β}
{ Get an Operator }
procedure GetOp;
begin
SkipWhite;
Token := Look;
Value := Look;
GetChar;
end;
{β}
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ Ρ Π²ΡΠ΅ Π΅ΡΠ΅ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Ρ Value Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅. ΠΡΠ»ΠΈ Π²Π°Ρ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ Π·Π°ΡΡΠ°Π³ΠΈΠ²Π°Π΅Ρ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΡ, Π²Ρ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ ΡΡΠΎ ΠΎΠΏΡΡΡΠΈΡΡ. ΠΠΎΠ³Π΄Π° ΠΌΡ ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ, ΠΌΡ Π² Π»ΡΠ±ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π±ΡΠ΄Π΅ΠΌ ΠΏΡΠΎΠ²Π΅ΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Token, ΡΠ°ΠΊ ΡΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΡΠΎΠΉ ΡΡΡΠΎΠΊΠΈ Π½Π΅ Π±ΡΠ΄Π΅Ρ ΠΈΠΌΠ΅ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅. ΠΠΎ ΠΌΠ½Π΅ ΠΊΠ°ΠΆΠ΅ΡΡΡ Ρ ΠΎΡΠΎΡΠ°Ρ ΠΏΡΠ°ΠΊΡΠΈΠΊΠ° Π΄Π°ΡΡ Π΅ΠΉ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π½Π° Π²ΡΡΠΊΠΈΠΉ ΡΠ»ΡΡΠ°ΠΉ.
ΠΡΠΏΡΡΠ°ΠΉΡΠ΅ ΡΡΡ Π²Π΅ΡΡΠΈΡ Ρ ΠΊΠ°ΠΊΠΈΠΌ-Π½ΠΈΠ±ΡΠ΄Ρ ΡΠ΅Π°Π»ΠΈΡΡΠΈΡΠ½ΠΎ Π²ΡΠ³Π»ΡΠ΄ΡΡΠΈΠΌ ΠΊΠΎΠ΄ΠΎΠΌ. ΠΡ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΡΠΏΠΎΡΠΎΠ±Π½Ρ ΡΠ°Π·Π΄Π΅Π»ΡΡΡ Π»ΡΠ±ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π½Π° Π΅Π΅ ΠΈΠ½Π΄ΠΈΠ²ΠΈΠ΄ΡΠ°Π»ΡΠ½ΡΠ΅ ΡΠΎΠΊΠ΅Π½Ρ, Π½ΠΎ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π°Ρ, ΡΡΠΎ Π΄Π²ΡΡ ΡΠΈΠΌΠ²ΠΎΠ»ΡΠ½ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠΉ Π±ΡΠ΄ΡΡ ΠΎΡΡΠΊΠ°Π½ΠΈΡΠΎΠ²Π°Π½Ρ ΠΊΠ°ΠΊ Π΄Π²Π° ΡΠ°Π·Π΄Π΅Π»ΡΠ½ΡΡ ΡΠΎΠΊΠ΅Π½Π°. ΠΡΠΎ Π½ΠΎΡΠΌΠ°Π»ΡΠ½ΠΎ... ΠΌΡ Π±ΡΠ΄Π΅ΠΌ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΠΈΡ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π°Π½Π°Π»ΠΈΠ· ΡΠ°ΠΊΠΈΠΌ ΡΠΏΠΎΡΠΎΠ±ΠΎΠΌ.
Π’Π΅ΠΏΠ΅ΡΡ, Π² Π³Π»Π°Π²Π΅ 7 ΡΡΠ½ΠΊΡΠΈΡ Next Π±ΡΠ»Π° ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½Π° Ρ ΠΏΡΠΎΡΠ΅Π΄ΡΡΠΎΠΉ Scan, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠ°ΠΊΠΆΠ΅ ΡΠ²Π΅ΡΡΠ»Π° ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ ΡΠΎ ΡΠΏΠΈΡΠΊΠΎΠΌ ΠΊΠ»ΡΡΠ΅Π²ΡΡ ΡΠ»ΠΎΠ² ΠΈ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π»Π° ΠΊΠ°ΠΆΠ΄ΡΠΉ Π½Π°ΠΉΠ΄Π΅Π½Π½ΡΠΉ. ΠΠ°ΠΊ Ρ ΡΠΏΠΎΠΌΡΠ½ΡΠ» ΡΠΎΠ³Π΄Π°, ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π΅, ΡΡΠΎ ΠΌΡ Π·Π°Ρ ΠΎΡΠ΅Π»ΠΈ Π±Ρ ΡΠ΄Π΅Π»Π°ΡΡ β ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ°ΠΊΡΡ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ Π² ΠΌΠ΅ΡΡΠ°Ρ , Π³Π΄Π΅ ΠΊΠ»ΡΡΠ΅Π²ΡΠ΅ ΡΠ»ΠΎΠ²Π° Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΏΠΎΡΠ²Π»ΡΡΡΡΡ, ΡΠ°ΠΊΠΈΡ ΠΊΠ°ΠΊ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ. ΠΡΠ»ΠΈ Π±Ρ ΠΌΡ ΡΠ΄Π΅Π»Π°Π»ΠΈ ΡΡΠΎ, ΡΠΏΠΈΡΠΎΠΊ ΠΊΠ»ΡΡΠ΅Π²ΡΡ ΡΠ»ΠΎΠ² ΠΏΡΠΎΡΠΌΠ°ΡΡΠΈΠ²Π°Π»ΡΡ Π±Ρ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠ°, ΠΏΠΎΡΠ²Π»ΡΡΡΠ΅Π³ΠΎΡΡ Π² ΠΊΠΎΠ΄Π΅. ΠΠ΅Ρ ΠΎΡΠΎΡΠΎ.