ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π±ΠΎΠ»Π΅Π΅ ΡΠ΄ΠΈΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠΎ ΡΡΠΎ ΡΠΈΠΌΠ²ΠΎΠ» TAB Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ ΡΡΡΠ΅ΠΊΡΠ°; Π½Π°ΡΠ° ΡΡΡΠΎΠΊΠ° Β«ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΉΒ» Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ Ρ ΠΏΠ΅ΡΠ²ΠΎΠΉ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠΈ ΡΠ°ΠΊ ΠΆΠ΅ ΠΊΠ°ΠΊ ΠΈ ΡΠ°Π»ΡΡΠΈΠ²Π°Ρ ΠΌΠ΅ΡΠΊΠ°... ΠΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ: WinCRT Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΡΠ°Π±ΡΠ»ΡΡΠΈΡ. Π£ Π½Π°Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°.
ΠΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠΏΠΎΡΠΎΠ±ΠΎΠ², Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΡΠΎΡΡΡ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠ΅ΡΠΈΡΡ ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ. ΠΠ΄ΠΈΠ½ ΠΈΠ· Π²Π°ΡΠΈΠ°Π½ΡΠΎΠ² ΡΠΎΠ³ΠΎ ΡΡΠΎ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠ΄Π΅Π»Π°ΡΡ β ΠΏΡΠΎΡΡΠΎ ΠΈΠ³Π½ΠΎΡΠΈΡΠΎΠ²Π°ΡΡ Π΅Π΅. ΠΠ°ΠΆΠ΄ΡΠΉ Π°ΡΡΠ΅ΠΌΠ±Π»Π΅Ρ, ΠΊΠΎΡΠΎΡΡΠΉ Ρ ΠΊΠΎΠ³Π΄Π° Π»ΠΈΠ±ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π», ΡΠ΅Π·Π΅ΡΠ²ΠΈΡΡΡΡ ΠΊΠΎΠ»ΠΎΠ½ΠΊΡ 1 Π΄Π»Ρ ΠΌΠ΅ΡΠΎΠΊ ΠΈ Π²Π·Π±ΡΠ½ΡΡΠ΅ΡΡΡ ΠΊΠΎΠ³Π΄Π° ΡΠ²ΠΈΠ΄ΠΈΡ, ΡΡΠΎ Π² Π½Π΅ΠΉ Π½Π°ΡΠΈΠ½Π°ΡΡΡΡ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ. Π’Π°ΠΊ ΡΡΠΎ, ΠΏΠΎ ΠΊΡΠ°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅ΡΠ΅, ΠΌΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠ΄Π²ΠΈΠ½ΡΡΡ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ Π½Π° ΠΎΠ΄Π½Ρ ΠΊΠΎΠ»ΠΎΠ½ΠΊΡ ΡΡΠΎΠ±Ρ ΡΠ΄Π΅Π»Π°ΡΡ Π°ΡΡΠ΅ΠΌΠ±Π»Π΅Ρ ΡΡΠ°ΡΡΠ»ΠΈΠ²ΡΠΌ. ΠΡΠΎ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΏΡΠΎΡΡΠΎ ΡΠ΄Π΅Π»Π°ΡΡ: ΠΏΡΠΎΡΡΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΠ΅ Π² ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ΅ Emit ΡΡΡΠΎΠΊΡ:
Write(TAB, s);
Π½Π°
Write(' ', s);
Π― Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΡΠΈΠ·Π½Π°ΡΡ ΡΡΠΎ ΡΡΠ°Π»ΠΊΠΈΠ²Π°Π»ΡΡ Ρ ΡΡΠΎΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΎΠΉ ΡΠ°Π½ΡΡΠ΅ ΠΈ Π½Π°Ρ ΠΎΠ΄ΠΈΠ» ΡΠ΅Π±Ρ ΠΌΠ΅Π½ΡΡΡΠΈΠΌ ΡΠ²ΠΎΠ΅ ΠΌΠ½Π΅Π½ΠΈΠ΅ ΡΠ°ΠΊ ΡΠ°ΡΡΠΎ ΠΊΠ°ΠΊ Ρ Π°ΠΌΠ΅Π»Π΅ΠΎΠ½ ΠΌΠ΅Π½ΡΠ΅Ρ ΡΠ²Π΅Ρ. ΠΠ»Ρ Π½Π°ΡΠΈΡ ΡΠ΅Π»Π΅ΠΉ, 99% ΠΊΠΎΡΠΎΡΡΡ Π±ΡΠ΄Π΅Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π²ΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΠΏΡΠΈ Π²ΡΠ²ΠΎΠ΄Π΅ Π½Π° CRT, Π±ΡΠ»ΠΎ Π±Ρ Ρ ΠΎΡΠΎΡΠΎ Π²ΠΈΠ΄Π΅ΡΡ Π°ΠΊΠΊΡΡΠ°ΡΠ½ΠΎ ΡΠ³ΡΡΠΏΠΏΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ Β«ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΡΠΉΒ» ΠΊΠΎΠ΄. Π‘ΡΡΠΎΠΊΠ°:
SUB1: MOVE #4,D0
ΠΏΡΠΎΡΡΠΎ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ Π±ΠΎΠ»Π΅Π΅ ΠΎΠΏΡΡΡΠ½ΠΎ, ΡΠ΅ΠΌ ΠΎΡΠ»ΠΈΡΠ°ΡΡΠΈΠΉΡΡ, Π½ΠΎ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎ ΠΈΠ΄Π΅Π½ΡΠΈΡΠ½ΡΠΉ ΠΊΠΎΠ΄:
SUB1:
MOVE #4,D0
Π ΡΠ΅ΡΡΠΎΠ²ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ ΠΌΠΎΠ΅Π³ΠΎ ΠΊΠΎΠ΄Π° Ρ Π²ΠΊΠ»ΡΡΠΈΠ» Π±ΠΎΠ»Π΅Π΅ ΡΠ»ΠΎΠΆΠ½ΡΡ Π²Π΅ΡΡΠΈΡ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ PostLabel, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ ΡΠ°Π·ΠΌΠ΅ΡΠ΅Π½ΠΈΡ ΠΌΠ΅ΡΠΎΠΊ Π½Π° ΡΠ°Π·Π΄Π΅Π»ΡΠ½ΡΡ ΡΡΡΠΎΠΊΠ°Ρ , Π·Π°Π΄Π΅ΡΠΆΠΈΠ²Π°Ρ ΠΏΠ΅ΡΠ°ΡΡ ΠΌΠ΅ΡΠΊΠΈ ΡΡΠΎΠ±Ρ ΠΎΠ½Π° ΠΎΠΊΠ°Π·Π°Π»Π°ΡΡ Π½Π° ΡΠΎΠΉ ΠΆΠ΅ ΡΠ°ΠΌΠΎΠΉ ΡΡΡΠΎΠΊΠ΅, ΡΡΠΎ ΠΈ ΡΠ²ΡΠ·Π°Π½Π½Π°Ρ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡ. ΠΠ΅ ΠΏΠΎΠ·Π΄Π½Π΅Π΅ ΡΠ΅ΠΌ ΡΠ°Ρ Π½Π°Π·Π°Π΄, ΠΌΠΎΡ Π²Π΅ΡΡΠΈΡ ΠΌΠΎΠ΄ΡΠ»Ρ Output ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ»Π° ΠΏΠΎΠ»Π½ΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ ΡΠ°Π±ΡΠ»ΡΡΠΈΠΈ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π²Π½ΡΡΡΠ΅Π½Π½Π΅ΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΡΡΠ΅ΡΡΠΈΠΊΠ° ΡΡΠΎΠ»Π±ΡΠΎΠ² ΠΈ ΠΏΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π΄Π»Ρ Π΅Π΅ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ. Π― ΠΈΠΌΠ΅Π» Π½Π΅ΠΊΠΎΡΠΎΡΡΠΉ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΠΈΠ·ΡΡΠ½ΡΠΉ ΠΊΠΎΠ΄ Π΄Π»Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠ° ΡΠ°Π±ΡΠ»ΡΡΠΈΠΈ Ρ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΡΠΌ ΡΠ²Π΅Π»ΠΈΡΠ΅Π½ΠΈΠ΅ΠΌ ΠΊΠΎΠ΄Π°. ΠΡΠ»ΠΎ ΡΠΆΠ°ΡΠ½ΠΎΠ΅ ΠΈΡΠΊΡΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠΊΠ°Π·Π°ΡΡ Π²Π°ΠΌ ΡΡΡ Β«ΠΊΡΠ°ΡΠΈΠ²ΡΡΒ» Π²Π΅ΡΡΠΈΡ, Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΠΎ ΡΡΠΎΠ±Ρ ΠΏΠΎΠΊΡΠ°ΡΠΎΠ²Π°ΡΡΡΡ ΡΠ»Π΅Π³Π°Π½ΡΠ½ΠΎΡΡΡΡ.
ΠΠ΄Π½Π°ΠΊΠΎ, ΠΊΠΎΠ΄ Β«ΡΠ»Π΅Π³Π°Π½ΡΠ½ΠΎΠΉΒ» Π²Π΅ΡΡΠΈΠΈ Π±ΡΠ» Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π±ΠΎΠ»Π΅Π΅ ΡΠ»ΠΎΠΆΠ½ΡΠΌ ΠΈ Π±ΠΎΠ»ΡΡΠΈΠΌ. ΠΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ Ρ ΠΌΠ΅Π½Ρ ΠΏΠΎΡΠ²ΠΈΠ»Π°ΡΡ Π²ΡΠΎΡΠ°Ρ ΠΌΡΡΠ»Ρ. ΠΠ΅ΡΠΌΠΎΡΡΡ Π½Π° Π½Π°ΡΠ΅ ΠΆΠ΅Π»Π°Π½ΠΈΠ΅ Π²ΠΈΠ΄Π΅ΡΡ ΠΊΡΠ°ΡΠΈΠ²ΡΠΉ Π²ΡΠ²ΠΎΠ΄, Π½Π΅ΠΈΠ·Π±Π΅ΠΆΠ½ΡΠΉ ΡΠ°ΠΊΡ ΡΠΎ, ΡΡΠΎ Π΄Π²Π΅ Π²Π΅ΡΡΠΈΠΈ MAIN: ΡΡΠ°Π³ΠΌΠ΅Π½ΡΡ ΠΊΠΎΠ΄Π°, ΠΏΠΎΠΊΠ°Π·Π°Π½Π½ΡΠ΅ Π²ΡΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎ ΠΈΠ΄Π΅Π½ΡΠΈΡΠ½Ρ; Π°ΡΡΠ΅ΠΌΠ±Π»Π΅Ρ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΊΠΎΠ½Π΅ΡΠ½ΠΎΠΉ ΡΠ΅Π»ΡΡ ΠΊΠΎΠ΄Π°, Π½Π΅ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΡΠ΅Ρ ΠΊΠ°ΠΊΡΡ Π²Π΅ΡΡΠΈΡ ΠΎΠ½ ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ, Π·Π° ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΠΊΡΠ°ΡΠΈΠ²Π°Ρ Π²Π΅ΡΡΠΈΡ Π±ΡΠ΄Π΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ Π±ΠΎΠ»ΡΡΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ², ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ Π±ΡΠ΄Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π±ΠΎΠ»ΡΡΠ΅ Π΄ΠΈΡΠΊΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π° ΠΈ Π΄ΠΎΠ»ΡΡΠ΅ Π°ΡΡΠ΅ΠΌΠ±Π»ΠΈΡΠΎΠ²Π°ΡΡΡΡ. ΠΠΎ ΠΊΡΠ°ΡΠΈΠ²Π°Ρ Π²Π΅ΡΡΠΈΡ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅Ρ Π±ΠΎΠ»ΡΡΠ΅ ΠΊΠΎΠ΄Π°, Π½ΠΎ Π΄Π°Π΅Ρ Π±ΠΎΠ»ΡΡΠΈΠΉ Π²ΡΡ ΠΎΠ΄Π½ΠΎΠΉ ΡΠ°ΠΉΠ», Ρ Π³ΠΎΡΠ°Π·Π΄ΠΎ Π±ΠΎΠ»ΡΡΠΈΠΌ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΏΡΡΡΡΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² ΡΠ΅ΠΌ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ. ΠΠΎΠ³Π΄Π° Π²Ρ ΠΏΠΎΡΠΌΠΎΡΡΠΈΡΠ΅ Π½Π° ΡΡΠΎ Ρ ΡΠ°ΠΊΠΎΠΉ ΡΡΠΎΡΠΎΠ½Ρ, ΡΠΎ Π½Π΅ ΡΡΡΠ΄Π½ΠΎ Π±ΡΠ΄Π΅Ρ ΡΠ΅ΡΠΈΡΡ ΠΊΠ°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ, Π½Π΅ ΡΠ°ΠΊ Π»ΠΈ?
Π’ΠΎ ΡΡΠΎ Π½Π°ΠΊΠΎΠ½Π΅Ρ ΡΠ΅ΡΠΈΠ»ΠΎ Π΄Π»Ρ ΠΌΠ΅Π½Ρ ΡΡΠΎΡ Π²ΠΎΠΏΡΠΎΡ Π±ΡΠ»ΠΎ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠ΅ΠΌ ΡΡΠΈΡΠ°ΡΡΡΡ Ρ ΠΌΠΎΠ΅ΠΉ ΠΏΠ΅ΡΠ²ΠΎΠΉ Π·Π°ΠΏΠΎΠ²Π΅Π΄ΡΡ: KISS. Π₯ΠΎΡΡ Ρ Π±ΡΠ» Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ Π³ΠΎΡΠ΄ Π²ΡΠ΅ΠΌΠΈ ΡΠ²ΠΎΠΈΠΌΠΈ ΠΈΠ·ΡΡΠ½ΡΠΌΠΈ ΠΏΡΠΈΠ΅ΠΌΡΠΈΠΊΠ°ΠΌΠΈ Π΄Π»Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΠ°Π±ΡΠ»ΡΡΠΈΠΈ, Ρ Π½Π°ΠΏΠΎΠΌΠ½ΠΈΠ» ΡΠ΅Π±Π΅, ΡΡΠΎ ΠΏΠ΅ΡΠ΅ΡΡΠ°Π·ΠΈΡΡΡ ΡΠ΅Π½Π°ΡΠΎΡΠ° ΠΠ°ΡΡΠΈ ΠΠΎΠ»Π΄Π²Π°ΡΠ΅ΡΠ°, ΡΠ»Π΅Π³Π°Π½ΡΠ½ΠΎΡΡΡ Π² ΠΏΠΎΠΈΡΠΊΠ°Ρ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΠΈ Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ Π΄ΠΎΡΡΠΎΠΈΠ½ΡΡΠ²ΠΎΠΌ. ΠΡΡΠ³ΠΎΠΉ ΠΌΡΠ΄ΡΡΠΉ ΡΠ΅Π»ΠΎΠ²Π΅ΠΊ ΠΎΠ΄Π½Π°ΠΆΠ΄Ρ Π½Π°ΠΏΠΈΡΠ°Π»: Β«ΠΡΠ±ΠΎΠΉ ΠΈΠ΄ΠΈΠΎΡ ΠΌΠΎΠΆΠ΅Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°ΡΡ Π ΠΎΠ»Π»Ρ-Π ΠΎΠΉΡ. Π’ΡΠ΅Π±ΡΠ΅ΡΡΡ Π³Π΅Π½ΠΈΠΉ, ΡΡΠΎΠ±Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°ΡΡ VWΒ». Π’Π°ΠΊ ΡΡΠΎ ΠΈΠ·ΡΡΠ½Π°Ρ, Π΄ΡΡΠΆΠ΅ΡΡΠ²Π΅Π½Π½Π°Ρ ΡΠ°Π±ΡΠ»ΡΡΠΈΠΈ Π²Π΅ΡΡΠΈΡ Output Π² ΠΏΡΠΎΡΠ»ΠΎΠΌ, ΠΈ ΡΠΎ, ΡΡΠΎ Π²Ρ Π²ΠΈΠ΄ΠΈΡΠ΅, ΡΡΠΎ ΠΏΡΠΎΡΡΠ°Ρ ΠΊΠΎΠΌΠΏΠ°ΠΊΡΠ½Π°Ρ VW Π²Π΅ΡΡΠΈΡ.
ΠΠΎΠ΄ΡΠ»Ρ ERROR
ΠΠ°Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ Π½Π°Π±ΠΎΡ ΠΏΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅Ρ ΠΎΡΠΈΠ±ΠΊΠΈ. Π§ΡΠΎΠ±Ρ ΠΎΡΠ²Π΅ΠΆΠΈΡΡ Π²Π°ΡΡ ΠΏΠ°ΠΌΡΡΡ ΠΌΡ Π²ΠΎΠ·ΡΠΌΠ΅ΠΌ ΠΏΠΎΠ΄Ρ ΠΎΠ΄, Π·Π°Π΄Π°Π½Π½ΡΠΉ Borland Π² Turbo Pascal β ΠΎΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡΡΡ Π½Π° ΠΏΠ΅ΡΠ²ΠΎΠΉ ΠΎΡΠΈΠ±ΠΊΠ΅. ΠΡΠΎ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠΏΡΠΎΡΠ°Π΅Ρ Π½Π°Ρ ΠΊΠΎΠ΄, ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΡΡΡΡΠ°Π½ΡΡ Π½Π°Π·ΠΎΠΉΠ»ΠΈΠ²ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ ΠΏΠΎΡΠ»Π΅ ΠΎΡΠΈΠ±ΠΎΠΊ, Π½ΠΎ ΡΡΠΎ ΡΠ°ΠΊΠΆΠ΅ ΠΈΠΌΠ΅Π΅Ρ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ Π±ΠΎΠ»ΡΡΠΈΠΉ ΡΠΌΡΡΠ», ΠΏΠΎ ΠΌΠΎΠ΅ΠΌΡ ΠΌΠ½Π΅Π½ΠΈΡ, Π² ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΠΎΠΉ ΡΡΠ΅Π΄Π΅. Π― Π·Π½Π°Ρ, ΡΡΠΎ ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΊΡΠ°ΠΉΠ½Π΅ΠΉ ΠΏΠΎΠ·ΠΈΡΠΈΠ΅ΠΉ, Π½ΠΎ Ρ ΡΡΠΈΡΠ°Ρ ΠΏΡΠ°ΠΊΡΠΈΠΊΡ ΡΠΎΠΎΠ±ΡΠ°ΡΡ ΠΎΠ±ΠΎ Π²ΡΠ΅Ρ ΠΎΡΠΈΠ±ΠΊΠ°Ρ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ Π°Π½Π°Ρ ΡΠΎΠ½ΠΈΠ·ΠΌΠΎΠΌ, ΠΏΠ΅ΡΠ΅ΠΆΠΈΡΠΊΠΎΠΌ ΡΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ ΠΏΠ°ΠΊΠ΅ΡΠ½ΠΎΠΉ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ. ΠΡΠΈΡΠ»ΠΎ Π²ΡΠ΅ΠΌΡ ΠΏΡΠ΅ΠΊΡΠ°ΡΠΈΡΡ ΡΠ°ΠΊΡΡ ΠΏΡΠ°ΠΊΡΠΈΠΊΡ. Π’Π°ΠΊ Π²ΠΎΡ.
Π Π½Π°ΡΠ΅ΠΌ ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»ΡΠ½ΠΎΠΌ Cradle ΠΌΡ ΠΈΠΌΠ΅Π»ΠΈ Π΄Π²Π΅ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΎΡΠΈΠ±ΠΎΠΊ: Error, ΠΊΠΎΡΠΎΡΠ°Ρ Π½Π΅ ΠΎΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π»Π°ΡΡ, ΠΈ Abort, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΎΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π»Π°ΡΡ. ΠΠΎ Ρ Π½Π΅ Π΄ΡΠΌΠ°Ρ, ΡΡΠΎ ΠΌΡ ΠΊΠΎΠ³Π΄Π°-Π»ΠΈΠ±ΠΎ Π½Π°ΠΉΠ΄Π΅ΠΌ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ΅, ΠΊΠΎΡΠΎΡΠ°Ρ Π½Π΅ ΠΎΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΡΡΡ, ΡΠ°ΠΊ ΡΡΠΎ Π² Π½ΠΎΠ²ΠΎΠΌ, ΡΠΎΡΠ΅ΠΌ ΠΈ ΡΠΊΡΠΎΠΌΠ½ΠΎΠΌ ΠΌΠΎΠ΄ΡΠ»Π΅ Errors, ΠΏΠΎΠΊΠ°Π·Π°Π½Π½ΠΎΠΌ Π½ΠΈΠΆΠ΅, ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ° Error Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ ΠΌΠ΅ΡΡΠΎ Abort.
{β}
unit Errors;
{β}
interface
procedure Error(s: string);
procedure Expected(s: string);
{β}
implementation
{β}
{ Write error Message and Halt }
procedure Error(s: string);
begin
WriteLn;
WriteLn(^G, 'Error: ', s, '.');
Halt;
end;
{β}
{ Write Β«<something> ExpectedΒ» }
procedure Expected(s: string);
begin
Error(s + ' Expected');
end;
end.
{β}
ΠΠ°ΠΊ ΠΎΠ±ΡΡΠ½ΠΎ, Π²ΠΎΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π΄Π»Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ:
{β}
program Test;
uses WinCRT, Input, Output, Errors;
begin
Expected('Integer');
end.
{β}
ΠΡ Π·Π°ΠΌΠ΅ΡΠΈΠ»ΠΈ, ΡΡΠΎ ΡΡΡΠΎΠΊΠ° Β«usesΒ» Π² Π½Π°ΡΠ΅ΠΉ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ Π΄Π»ΠΈΠ½Π½Π΅Π΅? ΠΡΠΎ Π½ΠΎΡΠΌΠ°Π»ΡΠ½ΠΎ. Π ΠΊΠΎΠ½Π΅ΡΠ½ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ ΠΎΡΠ½ΠΎΠ²Π½Π°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π±ΡΠ΄Π΅Ρ Π²ΡΠ·ΡΠ²Π°ΡΡ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΈΠ· Π½Π°ΡΠ΅Π³ΠΎ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΠ°, ΡΠ°ΠΊ ΡΡΠΎ ΡΠ°Π·Π΄Π΅Π» uses Π±ΡΠ΄Π΅Ρ ΠΈΠΌΠ΅ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠ°ΡΡ Π·Π°ΠΏΠΈΡΠ΅ΠΉ. ΠΠΎ ΡΠ΅ΠΉΡΠ°Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°ΠΌΠΎΠ΅ Π»ΡΡΡΠ΅Π΅ Π²ΠΊΠ»ΡΡΠΈΡΡ Π²ΡΠ΅ ΠΌΠΎΠ΄ΡΠ»ΠΈ, ΡΡΠΎΠ±Ρ ΠΌΡ ΠΌΠΎΠ³Π»ΠΈ ΠΏΡΠΎΡΠ΅ΡΡΠΈΡΠΎΠ²Π°ΡΡ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ Π² Π½ΠΈΡ .
ΠΠ΅ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΈ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π°Π½Π°Π»ΠΈΠ·
ΠΠ»Π°ΡΡΠΈΡΠ΅ΡΠΊΠ°Ρ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ° ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ° ΠΎΡΠ½ΠΎΠ²Π°Π½Π° Π½Π° ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ ΠΌΠΎΠ΄ΡΠ»ΡΡ Π΄Π»Ρ Π»Π΅ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΠ°, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π»Π΅ΠΊΡΠ΅ΠΌΡ ΡΠ·ΡΠΊΠ°, ΠΈ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΠ°, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΡΠ°Π΅ΡΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΡΠΌΡΡΠ» ΡΠΎΠΊΠ΅Π½ΠΎΠ² ΠΊΠ°ΠΊ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ². ΠΡΠ»ΠΈ Π²Ρ Π΅ΡΠ΅ Π½Π΅ Π·Π°Π±ΡΠ»ΠΈ ΡΡΠΎ ΠΌΡ Π΄Π΅Π»Π°Π»ΠΈ Π² Π±ΠΎΠ»Π΅Π΅ ΡΠ°Π½Π½ΠΈΡ Π³Π»Π°Π²Π°Ρ , Π²Ρ Π²ΡΠΏΠΎΠΌΠ½ΠΈΡΠ΅, ΡΡΠΎ ΠΌΡ Π½Π΅ Π΄Π΅Π»Π°Π»ΠΈ Π½ΠΈΡΠ΅Π³ΠΎ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ³ΠΎ. ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΠΏΡΠ΅Π΄ΡΠΊΠ°Π·ΡΠ²Π°ΡΡΠΈΠΉ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡ, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΡΡΠΈ Π²ΡΠ΅Π³Π΄Π° ΡΠΊΠ°Π·Π°ΡΡ, ΠΊΠ°ΠΊΠΎΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΡΠ·ΡΠΊΠ° ΡΠ»Π΅Π΄ΡΠ΅Ρ Π΄Π°Π»ΡΡΠ΅, Π²ΡΠ΅Π³ΠΎ-Π»ΠΈΡΡ ΠΈΡΡΠ»Π΅Π΄ΡΡ ΠΏΡΠ΅Π΄ΡΠΊΠ°Π·ΡΠ²Π°ΡΡΠΈΠΉ ΡΠΈΠΌΠ²ΠΎΠ». Π‘Π»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ, Π½Π°ΠΌ Π½Π΅ Π½ΡΠΆΠ½ΠΎ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π²ΡΠ±ΠΈΡΠ°ΡΡ ΡΠΎΠΊΠ΅Π½, ΠΊΠ°ΠΊ Π΄Π΅Π»Π°Π» Π±Ρ ΡΠΊΠ°Π½Π΅Ρ.
ΠΠΎ Π΄Π°ΠΆΠ΅ Ρ ΠΎΡΡ Π·Π΄Π΅ΡΡ ΠΈ Π½Π΅Ρ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΠΉ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ, Π½Π°Π·Π²Π°Π½Π½ΠΎΠΉ Β«ScannerΒ», Π²ΡΠ΅ Π΅ΡΠ΅ ΠΈΠΌΠ΅Π΅Ρ ΡΠΌΡΡΠ» ΠΎΡΠ΄Π΅Π»ΠΈΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ Π»Π΅ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π° ΠΎΡ ΡΡΠ½ΠΊΡΠΈΠΉ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π°. Π’Π°ΠΊ ΡΡΠΎ Ρ ΡΠΎΠ·Π΄Π°Π» Π΅ΡΠ΅ Π΄Π²Π° ΠΌΠΎΠ΄ΡΠ»Ρ, Π½Π°Π·Π²Π°Π½Π½ΡΡ , Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΡΠ΄ΠΈΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ, Scanner ΠΈ Parser. ΠΠΎΠ΄ΡΠ»Ρ Scanner ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π²ΡΠ΅ ΠΏΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΠΈΠ·Π²Π΅ΡΡΠ½ΡΠ΅ ΠΊΠ°ΠΊ ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π²Π°ΡΠ΅Π»ΠΈ. ΠΠ΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠ· Π½ΠΈΡ , ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ IsAlpha, ΡΠ²Π»ΡΡΡΡΡ ΡΠΈΡΡΠΎ Π±ΡΠ»Π΅Π²ΡΠΌΠΈ ΠΏΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°ΠΌΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠΏΠ΅ΡΠΈΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΡΠ΅Π΄ΡΠΊΠ°Π·ΡΠ²Π°ΡΡΠΈΠΌ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠΌ. ΠΡΡΠ³ΠΈΠ΅ ΠΏΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΡΠΎΠ±ΠΈΡΠ°ΡΡ ΡΠΎΠΊΠ΅Π½Ρ, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΡ ΠΈ ΡΠΈΡΠ»ΠΎΠ²ΡΠ΅ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ. ΠΠΎΠ΄ΡΠ»Ρ Parser Π±ΡΠ΄Π΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ Π²ΡΠ΅ ΠΏΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΡΠΎΡΡΠ°Π²Π»ΡΡΡΠΈΠ΅ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡ Ρ ΡΠ΅ΠΊΡΡΡΠΈΠ²Π½ΡΠΌ ΡΠΏΡΡΠΊΠΎΠΌ. ΠΠ±ΡΠΈΠΌ ΠΏΡΠ°Π²ΠΈΠ»ΠΎΠΌ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ ΡΠΎ, ΡΡΠΎ ΠΌΠΎΠ΄ΡΠ»Ρ Parser ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π²ΡΡ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ΅ΡΠΊΡΡ Π΄Π»Ρ ΡΠ·ΡΠΊΠ° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ; Π΄ΡΡΠ³ΠΈΠΌΠΈ ΡΠ»ΠΎΠ²Π°ΠΌΠΈ, ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ ΡΠ·ΡΠΊΠ° Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡΡΡ Π² Parser. Π ΠΈΠ΄Π΅Π°Π»ΡΠ½ΠΎΠΌ ΠΌΠΈΡΠ΅ ΡΡΠΎ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ Π²Π΅ΡΠ½ΡΠΌ Π² ΡΠΎΠΉ ΡΡΠ΅ΠΏΠ΅Π½ΠΈ, ΡΡΠΎ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ Π΄Π»Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΡΠ·ΡΠΊΠΎΠ² ΠΏΡΠΎΡΡΠΎ Π·Π°ΠΌΠ΅Π½ΡΡ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΉ ΠΌΠΎΠ΄ΡΠ»Ρ Parser.
ΠΠ° ΠΏΡΠ°ΠΊΡΠΈΠΊΠ΅, Π΄Π΅Π»Π° ΠΏΠΎΡΡΠΈ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π±ΡΠ²Π°ΡΡ ΡΠ°ΠΊΠΈΠΌΠΈ ΡΠΈΡΡΡΠΌΠΈ. ΠΡΠ΅ Π΅ΡΡΡ Π½Π΅Π±ΠΎΠ»ΡΡΠ°Ρ Β«ΡΡΠ΅ΡΠΊΠ°Β» ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΡ ΠΏΡΠ°Π²ΠΈΠ» ΡΠ°ΠΊΠΆΠ΅ ΠΈ Π² ΡΠΊΠ°Π½Π΅Ρ. Π ΠΏΡΠΈΠΌΠ΅ΡΡ, ΠΏΡΠ°Π²ΠΈΠ»Π° ΡΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΡ Π΄ΠΎΠΏΡΡΡΠΈΠΌΠΎΠ³ΠΎ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠ° ΠΈΠ»ΠΈ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ ΠΌΠΎΠ³ΡΡ ΠΌΠ΅Π½ΡΡΡΡΡ ΠΎΡ ΡΠ·ΡΠΊΠ° ΠΊ ΡΠ·ΡΠΊΡ. Π Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΡΠ·ΡΠΊΠ°Ρ ΠΏΡΠ°Π²ΠΈΠ»Π° ΠΎ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΡΡ ΡΠ°Π·ΡΠ΅ΡΠ°ΡΡ ΠΈΠΌ Π±ΡΡΡ ΠΎΡΡΠΈΠ»ΡΡΡΠΎΠ²Π°Π½Π½ΡΠΌΠΈ Π² ΡΠΊΠ°Π½Π΅ΡΠ΅, Π² ΡΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠ°ΠΊ Π΄ΡΡΠ³ΠΈΠ΅ Π½Π΅ ΡΠ°Π·ΡΠ΅ΡΠ°ΡΡ. Π’Π°ΠΊ ΡΡΠΎ Π½Π° ΠΏΡΠ°ΠΊΡΠΈΠΊΠ΅ ΠΎΠ±Π° ΠΌΠΎΠ΄ΡΠ»Ρ Π²Π΅ΡΠΎΡΡΠ½ΠΎ ΠΏΡΠΈΠ΄ΡΡ ΠΊ ΡΠΎΠΌΡ, ΡΡΠΎ Π±ΡΠ΄ΡΡ ΠΈΠΌΠ΅ΡΡ ΡΠ·ΡΠΊΠΎ-Π·Π°Π²ΠΈΡΠΈΠΌΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ, Π½ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ Π΄Π»Ρ ΡΠΊΠ°Π½Π½Π΅ΡΠ°, Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΡΠΈΠ²ΠΈΠ°Π»ΡΠ½ΡΠΌΠΈ.
Π’Π΅ΠΏΠ΅ΡΡ Π²ΡΠΏΠΎΠΌΠ½ΠΈΡΠ΅, ΡΡΠΎ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ Π΄Π²Π΅ Π²Π΅ΡΡΠΈΠΈ ΠΏΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ Π»Π΅ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΠ°: ΠΎΠ΄Π½Π°, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π»Π° ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄Π½ΠΎΡΠΈΠΌΠ²ΠΎΠ»ΡΠ½ΡΠ΅ ΡΠΎΠΊΠ΅Π½Ρ, ΠΊΠΎΡΠΎΡΡΡ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ Π² ΡΡΠ΄Π΅ Π½Π°ΡΠΈΡ ΡΠ΅ΡΡΠΎΠ², ΠΈ Π΄ΡΡΠ³Π°Ρ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΏΠΎΠ»Π½ΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ ΠΌΠ½ΠΎΠ³ΠΎΡΠΈΠΌΠ²ΠΎΠ»ΡΠ½ΡΡ ΡΠΎΠΊΠ΅Π½ΠΎΠ². Π’Π΅ΠΏΠ΅ΡΡ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ ΡΠ°Π·Π΄Π΅Π»ΡΠ΅ΠΌ Π½Π°ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π½Π° ΠΌΠΎΠ΄ΡΠ»ΠΈ, Ρ Π½Π΅ ΠΎΠΆΠΈΠ΄Π°Ρ ΠΌΠ½ΠΎΠ³ΠΎΠ³ΠΎ ΠΎΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΎΠ΄Π½ΠΎΡΠΈΠΌΠ²ΠΎΠ»ΡΠ½ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ, Π½ΠΎ Π½Π΅ ΠΏΠΎΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΠΌΠ½ΠΎΠ³ΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΠΏΡΠ΅Π΄ΡΡΠΌΠΎΡΡΠ΅ΡΡ ΠΈΡ ΠΎΠ±Π΅. Π― ΡΠΎΠ·Π΄Π°Π» Π΄Π²Π΅ Π²Π΅ΡΡΠΈΠΈ ΠΌΠΎΠ΄ΡΠ»Ρ Scanner. ΠΠ΅ΡΠ²Π°Ρ, Π½Π°Π·Π²Π°Π½Π½Π°Ρ Scanner1, ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΎΠ΄Π½ΠΎΡΠΈΠΌΠ²ΠΎΠ»ΡΠ½ΡΡ Π²Π΅ΡΡΠΈΡ ΠΏΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π²Π°Π½ΠΈΡ:
{β}
unit Scanner1;
{β}
interface
uses Input, Errors;
function IsAlpha(c: char): boolean;
function IsDigit(c: char): boolean;
function IsAlNum(c: char): boolean;
function IsAddop(c: char): boolean;
function IsMulop(c: char): boolean;
procedure Match(x: char);
function GetName: char;
function GetNumber: char;
{β}
implementation
{β}
{ Recognize an Alpha Character }
function IsAlpha(c: char): boolean;
begin
IsAlpha := UpCase(c) in ['A'..'Z'];
end;
{β}
{ Recognize a Numeric Character }
function IsDigit(c: char): boolean;
begin
IsDigit := c in ['0'..'9'];
end;
{β}
{ Recognize an Alphanumeric Character }
function IsAlnum(c: char): boolean;
begin
IsAlnum := IsAlpha(c) or IsDigit(c);
end;
{β}
{ Recognize an Addition Operator }
function IsAddop(c: char): boolean;
begin
IsAddop := c in ['+','-'];
end;
{β}
{ Recognize a Multiplication Operator }
function IsMulop(c: char): boolean;
begin
IsMulop := c in ['*','/'];
end;
{β}
{ Match One Character }
procedure Match(x: char);
begin
if Look = x then GetChar
else Expected('''' + x + '''');
end;
{β}
{ Get an Identifier }
function GetName: char;
begin
if not IsAlpha(Look) then Expected('Name');
GetName := UpCase(Look);
GetChar;
end;
{β}
{ Get a Number }
function GetNumber: char;
begin
if not IsDigit(Look) then Expected('Integer');
GetNumber := Look;
GetChar;
end;
end.
{β}
Π‘Π»Π΅Π΄ΡΡΡΠΈΠΉ ΡΡΠ°Π³ΠΌΠ΅Π½Ρ ΠΊΠΎΠ΄Π° ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ Ρ ΠΎΡΠΎΡΡΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΡ Π»Π΅ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΠ°. ΠΠ»Ρ ΠΊΡΠ°ΡΠΊΠΎΡΡΠΈ Ρ Π²ΠΊΠ»ΡΡΠΈΠ» Π·Π΄Π΅ΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΠΌΡΠΉ ΠΊΠΎΠ΄; ΠΎΡΡΠ°Π»ΡΠ½ΠΎΠ΅ ΡΠΎΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅. ΠΠ΅ Π·Π°Π±ΡΠ΄ΡΡΠ΅, ΡΠ΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΠΈΠΌΡ Scanner1 Π² ΡΠ°Π·Π΄Π΅Π» Β«usesΒ»: