ΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² написании студСнчСских Ρ€Π°Π±ΠΎΡ‚
АнтистрСссовый сСрвис

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎ-мСтодичСский комплСкс для обучСния процСссу создания компиляторов

Π”ΠΈΠΏΠ»ΠΎΠΌΠ½Π°ΡΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈΠ£Π·Π½Π°Ρ‚ΡŒ ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒΠΌΠΎΠ΅ΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹

Для построСния Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π³ΠΎ прСдставлСния ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° (Π² Π΄Π°Π»ΡŒΠ½Π΅ΠΉΡˆΠ΅ΠΌ — просто ΠΊΠΎΠ΄Π°) ΠΏΠΎ Π΄Π΅Ρ€Π΅Π²Ρƒ Π²Ρ‹Π²ΠΎΠ΄Π° ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ°Ρ рСкурсивная ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π°. Π­Ρ‚Π° ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° ΠΏΡ€Π΅ΠΆΠ΄Π΅ всСго Π΄ΠΎΠ»ΠΆΠ½Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Ρ‚ΠΈΠΏ ΡƒΠ·Π»Π° Π΄Π΅Ρ€Π΅Π²Π° — ΠΎΠ½ ΡΠΎΠΎΡ‚вСтствуСт Ρ‚ΠΈΠΏΡƒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, символ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ находится Π² Π»ΠΈΡΡ‚Π΅ Π΄Π΅Ρ€Π΅Π²Π° для Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ ΡƒΠ·Π»Π°. Π­Ρ‚ΠΎΡ‚ лист являСтся срСдним листом ΡƒΠ·Π»Π° Π΄Π΅Ρ€Π΅Π²Π° для Π±ΠΈΠ½Π°Ρ€Π½Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ ΠΈ ΠΊΡ€Π°ΠΉΠ½ΠΈΠΌ Π»Π΅Π²Ρ‹ΠΌ… Π§ΠΈΡ‚Π°Ρ‚ΡŒ Π΅Ρ‰Ρ‘ >

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎ-мСтодичСский комплСкс для обучСния процСссу создания компиляторов (Ρ€Π΅Ρ„Π΅Ρ€Π°Ρ‚, курсовая, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ)

ΠœΠ˜ΠΠ˜Π‘Π’Π•Π Π‘Π’Π’Πž ΠžΠ‘Π ΠΠ—ΠžΠ’ΠΠΠ˜Π― Π ΠžΠ‘Π‘Π˜Π™Π‘ΠšΠžΠ™ Π€Π•Π”Π•Π ΠΠ¦Π˜Π˜

Π’ΠžΠ’ΠšΠ˜ΠΠ‘ΠšΠ˜Π™ Π€Π˜Π›Π˜ΠΠ› Π˜Π– Π“ Π’ Π£

ΠšΠ°Ρ„Π΅Π΄Ρ€Π° ΠžΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… процСссов ΠΈ ΡΠΈΡΡ‚Π΅ΠΌ управлСния

К Π·Π°Ρ‰ΠΈΡ‚Π΅ Π΄ΠΎΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ «____"_________ 2003 Π³

Π—Π°Π². ΠΊΠ°Ρ„Π΅Π΄Ρ€ΠΎΠΉ ___________

Π΄ΠΈΠΏΠ»ΠΎΠΌΠ½Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚

Π’Π•ΠœΠ:

Π ΠΠ‘Π§Π•Π’ΠΠž — ΠŸΠžΠ―Π‘ΠΠ˜Π’Π•Π›Π¬ΠΠΠ― Π—ΠΠŸΠ˜Π‘ΠšΠ

Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ» студСнт Π³Ρ€ΡƒΠΏΠΏΡ‹ Π” — 1061 _________ А.И. ΠšΡƒΠ·Π½Π΅Ρ†ΠΎΠ²

Π ΡƒΠΊΠΎΠ²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ст. ΠΏΡ€Π΅ΠΏΠΎΠ΄Π°Π²Π°Ρ‚Π΅Π»ΡŒ _________

ΠšΠΎΠ½ΡΡƒΠ»ΡŒΡ‚Π°Π½Ρ‚ ΠΏΠΎ ΠΏΡ€ΠΎΡ„Сссор, Π΄.Ρ‚.Π½. _________

ΠΎΡ…Ρ€Π°Π½Π΅ Ρ‚Ρ€ΡƒΠ΄Π°

ΠšΠΎΠ½ΡΡƒΠ»ΡŒΡ‚Π°Π½Ρ‚ ΠΏΠΎ ΡΠΊΠΎΠ΄ΠΎΡ†Π΅Π½Ρ‚, ΠΊ.Ρ‚.Π½. _________

номичСской части

ΠŸΡ€Π΅Π΄ΡΠ΅Π΄Π°Ρ‚Π΅Π»ΡŒ эксст. ΠΏΡ€Π΅ΠΏΠΎΠ΄Π°Π²Π°Ρ‚Π΅Π»ΡŒ _________

ΠΏΠ΅Ρ€Ρ‚Π½ΠΎΠΉ комиссии

Воткинск 2003

ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΡ Π’ Π½Π°ΡΡ‚оящСм Π΄ΠΈΠΏΠ»ΠΎΠΌΠ½ΠΎΠΌ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Ρ‹ с ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌΠΈ опрСдСлСниями.

АссСмблСр — ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, которая ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ΠΈΡ‚ ΠΈΡΡ…ΠΎΠ΄Π½ΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, Π½Π°ΠΏΠΈΡΠ°Π½Π½ΡƒΡŽ Π½Π° Π°Π²Ρ‚ΠΎΠΊΠΎΠ΄Π΅ ΠΈΠ»ΠΈ Π½Π° ΡΠ·Ρ‹ΠΊΠ΅ ассСмблСра (Ρ‡Ρ‚ΠΎ, ΡΡƒΡ‚ΡŒ, ΠΎΠ΄Π½ΠΎ ΠΈ Ρ‚ΠΎ ΠΆΠ΅), Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Ρ‹ΠΉ (исполняСмый) ΠΊΠΎΠ΄.

БНЀ (Бэкуса Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½Π°Ρ Ρ„ΠΎΡ€ΠΌΠ°) — Π³Ρ€Π°ΠΌΠΌΠ°Ρ‚ΠΈΠΊΠ°, состоящая ΠΈΠ· ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠ³ΠΎ мноТСства ΠΏΡ€Π°Π²ΠΈΠ», ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‰ΠΈΡ… Π² ΡΠΎΠ²ΠΎΠΊΡƒΠΏΠ½ΠΎΡΡ‚ΠΈ язык программирования.

Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ — ΠΏΡ€Π°Π²ΠΈΠ»Π° получСния Π½ΠΎΠ²ΠΎΠ³ΠΎ значСния с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π·Π½Π°ΠΊΠΎΠ² ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ ΠΈ ΡΠΊΠΎΠ±ΠΎΠΊ, частным случаСм выраТСния ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ просто ΠΎΠ΄ΠΈΠ½ΠΎΡ‡Π½Ρ‹ΠΉ элСмСнт, Ρ‚. Π΅. константа ΠΈΠ»ΠΈ пСрСмСнная.

Π˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ — имя ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

Π˜Π½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡ — синтаксичСская структура, содСрТащая ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅, ΡˆΡƒΠΌΠΎΠ²Ρ‹Π΅ слова ΠΈ ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΠΈ. Π‘Ρ‹Π²Π°ΡŽΡ‚ простыС ΠΈ ΡΡ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅. ΠŸΡ€ΠΎΡΡ‚Ρ‹Π΅ инструкции Π½Π΅ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ Π² ΡΠ΅Π±Π΅ Π΄Ρ€ΡƒΠ³ΠΈΡ… Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… инструкций (присваиваниС, GOTO). Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ инструкции ΠΌΠΎΠ³ΡƒΡ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ инструкции (IF <οΏ½Π±ΡƒΠ»Π΅Π²ΠΎ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅> THEN <�бСзусловный ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€> ELSE <οΏ½ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€>).

ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ — систСмная ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‰Π°Ρ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, написанной Π½Π° ΠΎΠ΄Π½ΠΎΠΌ алгоритмичСском языкС, Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π½Π° ΡΠ·Ρ‹ΠΊΠ΅, Π±Π»ΠΈΠ·ΠΊΠΎΠΌ ΠΊ ΠΌΠ°ΡˆΠΈΠ½Π½ΠΎΠΌΡƒ, ΠΈ Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌ смыслС ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½Ρ‚Π½ΡƒΡŽ ΠΏΠ΅Ρ€Π²ΠΎΠΉ.

ЛСксСма — Π΅Π΄ΠΈΠ½ΠΈΡ†Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽΡ‰Π°ΡΡΡ Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ лСксичСского Π°Π½Π°Π»ΠΈΠ·Π°, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€: for, i, 10, integer, + ΠΈ Ρ‚. ΠΏ.

ЛСксичСский Π°Π½Π°Π»ΠΈΠ· — Π²Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π² ΠΈΡΡ…ΠΎΠ΄Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ элСмСнтарных ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΡ…: ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ², ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΡ‚Π΅Π»Π΅ΠΉ, символов ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ², чисСл, ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… слов, ΡˆΡƒΠΌΠΎΠ²Ρ‹Ρ… слов, ΠΏΡ€ΠΎΠ±Π΅Π»ΠΎΠ², ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π² ΠΈ Ρ‚. ΠΏ.

Π›ΠΈΡ‚Π΅Ρ€Π° — любой символ, мноТСство Π»ΠΈΡ‚Π΅Ρ€ ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ лСксСму.

Π›ΠΈΡ‚Π΅Ρ€Π°Π» — числСнноС ΠΈΠ»ΠΈ строковоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Π·Π°Π΄Π°Π½Π½ΠΎΠ΅ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π·, ΠΈ Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΠΎΠ΅ Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

ΠœΠ΅Ρ‚ΠΎΠ΄ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π½ΠΎΠ³ΠΎ ΠΏΡ€Π΅Π΄ΡˆΠ΅ΡΡ‚Π²ΠΎΠ²Π°Π½ΠΈΡ — восходящий ΠΌΠ΅Ρ‚ΠΎΠ΄ грамматичСского Ρ€Π°Π·Π±ΠΎΡ€Π°, основан Π½Π° Π°Π½Π°Π»ΠΈΠ·Π΅ ΠΏΠ°Ρ€ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ располоТСнных ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² исходной ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΈ вопроса ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊΠΎΠΉ ΠΈΠ· Π½ΠΈΡ… Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ.

ΠΠ΅Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ символ — имя конструкции, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ Π²Π½ΡƒΡ‚Ρ€ΠΈ Π³Ρ€Π°ΠΌΠΌΠ°Ρ‚ΠΈΠΊΠΈ.

РСкурсивный спуск — нисходящий ΠΌΠ΅Ρ‚ΠΎΠ΄ грамматичСского Ρ€Π°Π·Π±ΠΎΡ€Π°, основан Π½Π° Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π½Π΅Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ символа, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ Π² Π³Ρ€Π°ΠΌΠΌΠ°Ρ‚ΠΈΠΊΠ΅, сущСствуСт ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Π°Ρ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ. ΠŸΡ€ΠΈ этом Π² ΠΏΡ€ΠΎΡ†Π΅ΡΡΠ΅ своСй Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΎΠ½Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹

Π‘Π΅ΠΌΠ°Π½Ρ‚ΠΈΠΊΠ° языка программирования — это смысл, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ закладываСтся Π² ΠΊΠ°ΠΆΠ΄ΡƒΡŽ ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ языка.

БСмантичСский Π°Π½Π°Π»ΠΈΠ· — это ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° смысловой ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΠΈ конструкции. НапримСр, Ссли ΠΌΡ‹ Π² Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ, Ρ‚ΠΎ ΠΎΠ½Π° Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π° Ρ€Π°Π½Π΅Π΅ ΠΏΠΎ Ρ‚Сксту ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π° ΠΈΠ· ΡΡ‚ΠΎΠ³ΠΎ опрСдСлСния ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ Π΅Π΅ Ρ‚ΠΈΠΏ. Π˜ΡΡ…ΠΎΠ΄Ρ ΠΈΠ· Ρ‚ΠΈΠΏΠ° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, ΠΌΠΎΠΆΠ½ΠΎ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ ΠΎ Π΄ΠΎΠΏΡƒΡΡ‚имости ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с Π΄Π°Π½Π½ΠΎΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ.

БСмантичСский Π°Π½Π°Π»ΠΈΠ· — Π² Π½Π΅ΠΌ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ структуры, распознанныС синтаксичСским Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ΠΎΠΌ, ΠΈ Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚ ΠΎΠ±Ρ€Π΅Ρ‚Π°Ρ‚ΡŒ очСртания выполняСмый ΠΊΠΎΠ΄.

БимвольноС имя — ΠΎΠ΄Π½ΠΎ ΠΈΠ· ΠΈΠΌΠ΅Π½, Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½Π½Ρ‹Ρ… Π² ΡΠ·Ρ‹ΠΊΠ΅, Π½Π΅ ΡΠ²Π»ΡΡŽΡ‰Π΅Π΅ΡΡ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»ΡŒΠ½Ρ‹ΠΌ символом.

Бинтаксис языка программирования — это ΠΏΡ€Π°Π²ΠΈΠ»Π° составлСния ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠΉ языка ΠΈΠ· ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… слов. Π’Π°ΠΊΠΈΠΌΠΈ прСдлоТСниями ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹, опрСдСлСния Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…. ΠžΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒΡŽ синтаксиса являСтся ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ влоТСнности (Ρ€Π΅ΠΊΡƒΡ€ΡΠΈΠ²Π½ΠΎΡΡ‚ΡŒ) ΠΏΡ€Π°Π²ΠΈΠ» построСния ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠΉ. Π­Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ‡Ρ‚ΠΎ элСмСнт синтаксиса языка Π² ΡΠ²ΠΎΠ΅ΠΌ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ прямо ΠΈΠ»ΠΈ косвСнно Π² ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· Π΅Π³ΠΎ частСй содСрТит сам сСбя. НапримСр, Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° Ρ†ΠΈΠΊΠ»Π° Ρ‚Π΅Π»ΠΎΠΌ Ρ†ΠΈΠΊΠ»Π° являСтся ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€, частным случаСм ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ являСтся всС Ρ‚ΠΎΡ‚ ΠΆΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Ρ†ΠΈΠΊΠ»Π°.

БинтаксичСский Π°Π½Π°Π»ΠΈΠ· (грамматичСский Ρ€Π°Π·Π±ΠΎΡ€) — Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΠ΅Ρ‚ ΡΠΈΠ½Ρ‚Π°ΠΊΡΠΈΡ‡Π΅ΡΠΊΡƒΡŽ Π΅Π΄ΠΈΠ½ΠΈΡ†Ρƒ — Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ, Π²Ρ‹Π·ΠΎΠ² ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π΄Π΅ΠΊΠ»Π°Ρ€Π°Ρ†ΠΈΡŽ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄Π°Π»Π΅Π΅ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ сСмантичСским Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ΠΎΠΌ. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ структуры: FOR <οΏ½Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅> TO int DO

.

БинтаксичСский Ρ€Π°Π·Π±ΠΎΡ€ — процСсс получСния Π΄Π΅Ρ€Π΅Π²Π° синтаксичСского Ρ€Π°Π·Π±ΠΎΡ€Π° Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ Π·Π°Π΄Π°Π½Π½ΠΎΠΉ Π³Ρ€Π°ΠΌΠΌΠ°Ρ‚ΠΈΠΊΠΈ.

Π‘ΠΊΠ°Π½Π΅Ρ€ (лСксичСский Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€) — ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° распознавания лСксСм.

Π‘ΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ — порядковый Π½ΠΎΠΌΠ΅Ρ€ Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅, ΠΊΡƒΠ΄Π° занСсСна лСксСма.

Π’Π΅Ρ€ΠΌΠΈΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ символ — ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΉ Π½Π΅Π΄Π΅Π»ΠΈΠΌΡ‹ΠΉ элСмСнт конструкции языка, являСтся Π·Π°Ρ€Π΅Π·Π΅Ρ€Π²ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ словом (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ READ, (, +).

Вранслятор — это систСмная ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‰Π°Ρ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, написанной Π½Π° ΠΎΠ΄Π½ΠΎΠΌ алгоритмичСском языкС, Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π½Π° Π΄Ρ€ΡƒΠ³ΠΎΠΌ алгоритмичСском языкС Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌ смыслС ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½Ρ‚Π½ΡƒΡŽ ΠΏΠ΅Ρ€Π²ΠΎΠΉ.

  • Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅
  • Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅

    19

  • 1 Анализ ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π½ΠΎΠΉ области 20
    • 1.1 ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€Ρ‹ 20
    • 1.2 ЛогичСская структура компилятора 21
    • 1.3 ЛСксичСский Π°Π½Π°Π»ΠΈΠ·. Π‘ΠΊΠ°Π½Π΅Ρ€ 24
    • 1.4 БинтаксичСский ΠΈ ΡΠ΅ΠΌΠ°Π½Ρ‚ичСский Π°Π½Π°Π»ΠΈΠ· 28
    • 1.5 Π“Ρ€Π°ΠΌΠΌΠ°Ρ‚ΠΈΠΊΠΈ 31
    • 1.6 Π€ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° 34
      • ΠœΠ΅Ρ‚ΠΎΠ΄ Ρ‡Π΅Ρ‚Π²Π΅Ρ€ΠΎΠΊ 36
    • 1.7 ОбоснованиС создания ΡƒΡ‡Π΅Π±Π½ΠΎΠ³ΠΎ комплСкса 37
    • 1.8 ΠžΠ±Π·ΠΎΡ€ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΎΠΊ 38
    • 1.9 ОбоснованиС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ 39
  • 2 Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡƒΡ‡Π΅Π±Π½ΠΎΠΉ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ 42
    • 2.1 ΠšΡ€Π°Ρ‚ΠΊΠΎΠ΅ описаниС ΡƒΡ‡Π΅Π±Π½ΠΎΠ³ΠΎ компилятора 42
    • 2.2 ОписаниС ΡƒΡ‡Π΅Π±Π½ΠΎΠ³ΠΎ языка 43
    • 2.3 ЛСксичСский Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ LEXAN 46
      • 2.3.1 Π’Π°Π±Π»ΠΈΡ†Π° Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… символов 47
      • 2.3.2 Π’Π°Π±Π»ΠΈΡ†Π° символичСских ΠΈΠΌΠ΅Π½ 48
      • 2.3.3 Π’Π°Π±Π»ΠΈΡ†Π° Π»ΠΈΡ‚Π΅Ρ€Π°Π»ΠΎΠ² 49
      • 2.3.4 Π Π°Π±ΠΎΡ‚Π° сканСра 50
      • 2.3.5 Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° листинга 50
      • 2.3.6 Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° Π²Ρ‹Ρ…ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π° 50
      • 2.3.7 ΠŸΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎΠ΅ Π·Π°Π΄Π°Π½ΠΈΠ΅ для студСнта 52
      • 2.3.8 ОписаниС Ρ€Π°Π±ΠΎΡ‚Ρ‹ лСксичСского Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Π° 53
    • 2.4 БинтаксичСский Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ SinAn 56
      • 2.4.1 Π’Π°Π±Π»ΠΈΡ†Π° ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΎΠ² 56
      • 2.4.2 ΠŸΡ€Π°Π²ΠΈΠ»Π° Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Ρ‚Π°Π±Π»ΠΈΡ†Π΅ΠΉ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΎΠ² 60
      • 2.4.3 ΠŸΡ€Π°Π²ΠΈΠ»Π° Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΎΠ² для написания ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ 62
      • 2.4.4 ЀормируСмая Ρ‚Π°Π±Π»ΠΈΡ†Π° ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΎΠ². ΠŸΡ€Π°Π²ΠΈΠ»Π° заполнСния 65
      • 2.4.5 ΠŸΡ€Π°Π²ΠΈΠ»Π° заполнСния Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΠ΅ΠΌΠΎΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΎΠ² 66
      • 2.4.6 ΠŸΠΎΡΡ‚Ρ€ΠΎΠ΅Π½ΠΈΠ΅ Π΄Π΅Ρ€Π΅Π²ΡŒΠ΅Π² 81
      • 2.4.7 БСмантичСский Π°Π½Π°Π»ΠΈΠ· 83
    • 2.5 Π€ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° 85
      • Π¦ΠΈΠΊΠ»Ρ‹ 85
  • 3 ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ трудоСмкости ΠΏΠΎ ΡΡ‚адиям Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ 89
    • 3.1 ΠœΠ΅Ρ‚ΠΎΠ΄ΠΈΠΊΠ° расчСта 89
    • 3.2 ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π·Π°Ρ‚Ρ€Π°Ρ‚ Π½Π° Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΏΠΎ ΡΡ‚адиям Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ 92
    • 3.3 РасчСт Π·Π°Ρ‚Ρ€Π°Ρ‚ Π½Π° Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΏΠΎ ΡΡ‚Π°ΠΏΠ°ΠΌ 94
  • 4 Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ ΠΏΠΎ ΠΎΡ…Ρ€Π°Π½Π΅ Ρ‚Ρ€ΡƒΠ΄Π° ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с ΡƒΡ‡Π΅Π±Π½Ρ‹ΠΌ комплСксом 95
  • Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

    97

  • Бписок ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½Π½Ρ‹Ρ… источников

    98

  • ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ 99

ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΏΡ€Π΅ΠΏΠΎΠ΄Π°Π²Π°Ρ‚Π΅Π»ΡŒ Π²ΠΏΡ€Π°Π²Π΅ ΠΏΡ€Π΅ΠΏΠΎΠ΄Π½ΠΎΡΠΈΡ‚ΡŒ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π» ΠΈ ΠΎΠ±ΡƒΡ‡Π°Ρ‚ΡŒ студСнтов ΠΏΠΎ Π»ΡŽΠ±ΠΎΠΉ ΠΈΠ· Π΄ΠΈΡΡ†ΠΈΠΏΠ»ΠΈΠ½ Ρ‚Π°ΠΊ, ΠΊΠ°ΠΊ ΠΎΠ½ ΡΡ‡ΠΈΡ‚Π°Π΅Ρ‚ Π½ΡƒΠΆΠ½Ρ‹ΠΌ.

ΠŸΡ€Π΅ΠΏΠΎΠ΄Π°Π²Π°Ρ‚Π΅Π»ΡŒ ΠΆΠ΅Π»Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎΠ±Ρ‹ знания ΠΏΠΎ ΠΏΡ€Π΅ΠΏΠΎΠ΄Π°Π²Π°Π΅ΠΌΡ‹ΠΌ Π½Π°ΡƒΠΊΠ°ΠΌ Π»ΡƒΡ‡ΡˆΠ΅ ΡƒΡΠ²Π°ΠΈΠ²Π°Π»ΠΈΡΡŒ студСнтами. Часто ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π» Π½Π΅ ΡƒΡΠ²Π°ΠΈΠ²Π°Π΅Ρ‚ся ΠΈΠ·-Π·Π° Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Π½Π΅Ρ‚ Π΅Π³ΠΎ наглядного прСдставлСния, Π½Π΅Ρ‚ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»ΠΎΠ², Π±ΡƒΠ΄ΡŒ Ρ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Ρ… ΠΈΠ»ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π½Ρ‹Ρ… Π² Π²ΠΈΠ΄Π΅ ΠΏΠ»Π°ΠΊΠ°Ρ‚ΠΎΠ², стСндов, ΡΠΏΠΎΡΠΎΠ±ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… Π±ΠΎΠ»Π΅Π΅ Π³Π»ΡƒΠ±ΠΎΠΊΠΎΠΌΡƒ пониманию.

Для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ дСмонстрационный Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π» слСдуСт Π½Π°Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡƒΡŽ Π±Π°Π·Ρƒ. Π§Ρ‚ΠΎ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ ΠΌΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΈ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… усилий ΠΈ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Π·Π°Ρ‚Ρ€Π°Ρ‚. Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Ρ‹ ΠΏΠ»Π°ΠΊΠ°Ρ‚Ρ‹, мСтодичСскиС пособия, ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Π΅ срСдства (тСстовыС, ΠΎΠ±ΡƒΡ‡Π°ΡŽΡ‰ΠΈΠ΅) ΠΈ Π΄Ρ€. НСкоторыС ΠΈΠ· Π½ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΈ Π² ΠΎΡ‚сутствии прСподаватСля для самообучСния, для контроля Π·Π½Π°Π½ΠΈΠΉ ΠΈ Ρ‚. ΠΏ.

Для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π·Π½Π°Π½ΠΈΠΉ часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ тСстовыС систСмы, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π·Π½Π°Π½ΠΈΠΉ происходит Π² ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅. НСкоторыС ΠΈΠ· Π½ΠΈΡ… лишь Π²Ρ‹Π΄Π°ΡŽΡ‚ ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ ΠΎΠ±Ρ‰ΠΈΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚, Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚, Π³Π΄Π΅ ΠΈ Π½Π° ΠΊΠ°ΠΊΠΎΠΌ этапС Π²ΠΎΠ·Π½ΠΈΠΊΠ»Π° ошибка, ΠΈ ΡΠΎΠΎΠ±Ρ‰Π°ΡŽΡ‚ ΠΎΠ± ΡΡ‚ΠΎΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ (ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€Π°Ρ…).

1 Анализ ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π½ΠΎΠΉ области

1.1 ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€Ρ‹

Вранслятор — это ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, которая ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ΠΈΡ‚ ΠΈΡΡ…ΠΎΠ΄Π½ΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π² ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½Ρ‚Π½ΡƒΡŽ Π΅ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ. Если ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Ρ‹ΠΉ язык прСдставляСт собой Π°Π²Ρ‚ΠΎΠΊΠΎΠ΄ ΠΈΠ»ΠΈ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ язык, Ρ‚ΠΎ Ρ‚ранслятор называСтся компилятором.

Автокод ΠΎΡ‡Π΅Π½ΡŒ Π±Π»ΠΈΠ·ΠΎΠΊ ΠΊ ΠΌΠ°ΡˆΠΈΠ½Π½ΠΎΠΌΡƒ языку; Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄ Π°Π²Ρ‚ΠΎΠΊΠΎΠ΄Π° — Ρ‚ΠΎΡ‡Π½ΠΎΠ΅ символичСскоС прСдставлСниС ΠΊΠΎΠΌΠ°Π½Π΄ ΠΌΠ°ΡˆΠΈΠ½Ρ‹.

АссСмблСр — это ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, которая ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ΠΈΡ‚ ΠΈΡΡ…ΠΎΠ΄Π½ΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, Π½Π°ΠΏΠΈΡΠ°Π½Π½ΡƒΡŽ Π½Π° Π°Π²Ρ‚ΠΎΠΊΠΎΠ΄Π΅ ΠΈΠ»ΠΈ Π½Π° ΡΠ·Ρ‹ΠΊΠ΅ ассСмблСра (Ρ‡Ρ‚ΠΎ, ΡΡƒΡ‚ΡŒ, ΠΎΠ΄Π½ΠΎ ΠΈ Ρ‚ΠΎ ΠΆΠ΅), Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Ρ‹ΠΉ (исполняСмый) ΠΊΠΎΠ΄.

ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€Ρ‹ ΠΏΠΈΡˆΡƒΡ‚ΡΡ ΠΊΠ°ΠΊ Π½Π° Π°Π²Ρ‚ΠΎΠΊΠΎΠ΄Π΅, Ρ‚Π°ΠΊ ΠΈ Π½Π° ΡΠ·Ρ‹ΠΊΠ°Ρ… высокого уровня. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ ΠΈ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ языки конструирования компиляторов — компиляторы компиляторов.

ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ компиляторов (КК) — систСма, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π°Ρ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ компиляторы; Π½Π° Π²Ρ…ΠΎΠ΄Π΅ систСмы — мноТСство Π³Ρ€Π°ΠΌΠΌΠ°Ρ‚ΠΈΠΊ, Π° Π½Π° Π²Ρ‹Ρ…ΠΎΠ΄Π΅, Π² ΠΈΠ΄Π΅Π°Π»ΡŒΠ½ΠΎΠΌ случаС, — ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°. Иногда ΠΏΠΎΠ΄ ΠšΠš ΠΏΠΎΠ½ΠΈΠΌΠ°ΡŽΡ‚ язык программирования, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ исходная ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° — это описаниС компилятора Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ языка, Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ная ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° — сам компилятор для этого языка. Π˜ΡΡ…ΠΎΠ΄Π½Π°Ρ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° КК — это просто Ρ„ΠΎΡ€ΠΌΠ°Π»ΠΈΠ·ΠΌ, слуТащий для описания компиляторов, содСрТащий, явно ΠΈΠ»ΠΈ нСявно, описаниС лСксичСского ΠΈ ΡΠΈΠ½Ρ‚аксичСского Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ΠΎΠ², Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π° ΠΊΠΎΠ΄ΠΎΠ² ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… частСй создаваСмого компилятора. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ Π² ΠšΠš ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ рСализация схСмы Ρ‚.Π½. синтаксичСски управляСмого ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π°. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ· Π½ΠΈΡ… ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ собой ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ языки высокого уровня, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΡƒΠ΄ΠΎΠ±Π½ΠΎ ΠΎΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ ΠΏΡ€ΠΈ создании компиляторов.

1.2 ЛогичСская структура компилятора

На Ρ€ΠΈΡΡƒΠ½ΠΊΠ΅ 1 прСдставлСна структурная схСма компилятора.

Рисунок 1 — Π‘Ρ…Π΅ΠΌΠ° компилятора

Π˜ΡΡ…ΠΎΠ΄Π½Π°Ρ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° — тСкст ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° ΡΠ·Ρ‹ΠΊΠ΅ высокого уровня (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Паскаль), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π²Π΅Π΄Π΅Π½ Π² ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄.

Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ — ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ структуры, Π·Π°Ρ€Π°Π½Π΅Π΅ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½Π½Ρ‹Π΅ (Ρ‚Π°Π±Π»ΠΈΡ†Π° Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… символов), Π° Ρ‚Π°ΠΊΠΆΠ΅ Π·Π°ΠΏΠΎΠ»Π½ΡΡŽΡ‰ΠΈΠ΅ΡΡ Π² Ρ…ΠΎΠ΄Π΅ лСксичСского Π°Π½Π°Π»ΠΈΠ·Π° ΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΡΡŽΡ‰ΠΈΠ΅ΡΡ Π²ΠΎ Π²Ρ€Π΅ΠΌΡ Ρ€Π°Π±ΠΎΡ‚Ρ‹.

ЛСксичСский Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ выполняСт распознаваниС лСксСм языка ΠΈ Π·Π°ΠΌΠ΅Π½Ρƒ ΠΈΡ… ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌΠΈ ΠΊΠΎΠ΄Π°ΠΌΠΈ. Под лСксСмами ΠΏΠΎΠ½ΠΈΠΌΠ°ΡŽΡ‚ΡΡ элСмСнтарныС Π΅Π΄ΠΈΠ½ΠΈΡ†Ρ‹, входящиС Π² ΡΡ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Ρƒ прСдлоТСния языка, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ слова, константы, ΠΈΠΌΠ΅Π½Π° ΠΈ Ρ‚. ΠΏ. ΠŸΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΡŒ задания структуры прСдлоТСния языка Π½Π° Ρ„Π°Π·Π΅ лСксичСского Π°Π½Π°Π»ΠΈΠ·Π° Π½Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΠ΅Ρ‚ся. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ являСтся ΠΏΠΎΡ‚ΠΎΠΊ лСксСм (ΠΊΠΎΠ΄ΠΎΠ² — ссылок Π½Π° Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹), эквивалСнтный исходному тСксту.

БинтаксичСский Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ΡΡΠ½ΠΈΡ‚ΡŒ, ΡƒΠ΄ΠΎΠ²Π»Π΅Ρ‚Π²ΠΎΡ€ΡΡŽΡ‚ Π»ΠΈ прСдлоТСния, ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… состоит исходная ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌ Π³Ρ€Π°ΠΌΠΌΠ°Ρ‚ΠΈΠΊΠΈ этого языка.

БСмантичСский Π°Π½Π°Π»ΠΈΠ·. На ΡΡ‚ΠΎΠΌ этапС осущСствляСтся ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ Ρ‚ΠΈΠΏΠ° ΠΈ Π²ΠΈΠ΄Π° всСх ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ² ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ΠΎΠ².

ГСнСрация ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°. ΠŸΡ€ΠΎΠΈΡΡ…ΠΎΠ΄ΠΈΡ‚ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ исходной ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π² ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½ΡƒΡŽ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΠΎΠ»ΡŒΡΠΊΡƒΡŽ) Ρ„ΠΎΡ€ΠΌΡƒ записи.

ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° — Π²Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΎΠ±Ρ‰ΠΈΡ… ΠΏΠΎΠ΄Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ ΠΈ Π²Ρ‹Ρ‡ΠΈΡΠ»Π΅Π½ΠΈΠ΅ константных ΠΏΠΎΠ΄Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ.

Π€Π°Π·Π° ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π° для ΡƒΠΌΠ΅Π½ΡŒΡˆΠ΅Π½ΠΈΡ избыточности ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΏΠΎ Π·Π°Ρ‚Ρ€Π°Ρ‚Π°ΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΈ ΠΏΠ°ΠΌΡΡ‚ΠΈ. Π’ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΠΈ ΠΎΡ‚ ΠΊΡ€ΠΈΡ‚Π΅Ρ€ΠΈΠ΅Π² проСктирования транслятора данная Ρ„Π°Π·Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒΡΡ ΠΈΠ· Ρ†ΠΈΠΊΠ»Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

РаспрСдСлСниС памяти. На ΡΡ‚ΠΎΠΌ этапС Π²Ρ‹Π΄Π΅Π»ΡΡŽΡ‚ΡΡ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Π΅ адрСса ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΏΠΎΠ΄ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΡŽΡ‚ΡΡ компилятором.

Π“Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎΠ³ΠΎ (ассСмблСрного) ΠΊΠΎΠ΄Π° — выполняСт подстановку ΠΊΠΎΠ΄ΠΎΠ²Ρ‹Ρ… ΠΎΠ±Ρ€Π°Π·Ρ†ΠΎΠ² Π½Π° Π²Ρ‹Ρ…ΠΎΠ΄Π½ΠΎΠΌ языкС, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹ΠΌ ΠΊΠΎΠ΄Π°ΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Π“Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Ρƒ ΠΊΠΎΠ΄Π° ΠΌΠΎΠ³ΡƒΡ‚ Π½Π΅ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹, ΠΎΠ½ Π²Π΅ΡΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Π² ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π½ΠΎΠΌ Π²ΠΈΠ΄Π΅.

Машинно-зависимая компиляция. Зависит ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊΠΈΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ рСгистры. Π Π°Π±ΠΎΡ‚Π° этой ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ зависит ΠΎΡ‚ ΡΠΎΠ³Π»Π°ΡˆΠ΅Π½ΠΈΠΉ, принятых для исполняСмой части ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. НапримСр, выдСляСтся Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ рСгистр для Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΉ записи Π² ΡΡ‚Π΅ΠΊΠ΅.

На Π²ΡΠ΅Ρ… этих этапах происходит Ρ€Π°Π±ΠΎΡ‚Π° с Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ Ρ€ΠΎΠ΄Π° Ρ‚Π°Π±Π»ΠΈΡ†Π°ΠΌΠΈ. Π’ Ρ‡Π°ΡΡ‚ности, для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π±Π»ΠΎΠΊΠ° (Ссли Ρ‚Π°ΠΊΠΎΠ²Ρ‹Π΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Π² ΡΠ·Ρ‹ΠΊΠ΅) ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹, описанныС Π²Π½ΡƒΡ‚Ρ€ΠΈ, Π·Π°ΠΏΠΎΠΌΠΈΠ½Π°ΡŽΡ‚ΡΡ вмСстС со ΡΠ²ΠΎΠΈΠΌΠΈ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°ΠΌΠΈ. Условно всС эти этапы ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

Рисунок 2 — Π Π°Π±ΠΎΡ‚Π° с Ρ‚Π°Π±Π»ΠΈΡ†Π°ΠΌΠΈ ΠžΡ‡Π΅Π²ΠΈΠ΄Π½Π° Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ структуры компилятора ΠΎΡ‚ ΡΡ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Ρ‹ Π­Π’Πœ, Ρ‚ΠΎΡ‡Π½Π΅Π΅, ΠΎΡ‚ ΠΈΠΌΠ΅ΡŽΡ‰Π΅ΠΉΡΡ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ систСмы. НапримСр, ΠΏΡ€ΠΈ ΠΌΠ°Π»ΠΎΠΉ памяти увСличиваСтся количСство ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΎΠ² компиляции (Ρ‚.Π½. ΠΌΠ½ΠΎΠ³ΠΎΠΏΡ€ΠΎΡ…ΠΎΠ΄Π½Ρ‹Π΅ компиляторы), Π° ΠΏΡ€ΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ памяти большого объСма ΠΌΠΎΠΆΠ½ΠΎ всС этапы компиляции произвСсти Π·Π° ΠΎΠ΄ΠΈΠ½ ΠΏΡ€ΠΎΡ…ΠΎΠ΄ (ΠΈ Ρ‚ΠΎΠ³Π΄Π° ΠΌΡ‹ ΠΈΠΌΠ΅Π΅ΠΌ Π΄Π΅Π»ΠΎ с ΠΎΠ΄Π½ΠΎΠΏΡ€ΠΎΡ…ΠΎΠ΄Π½Ρ‹ΠΌ компилятором).

Π”Π°Π»Π΅Π΅ ΠΌΡ‹ Ρ€Π°ΡΡΠΌΠΎΡ‚Ρ€ΠΈΠΌ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ· ΡΡ‚ΠΈΡ… составных частСй процСсса компиляции.

1.3 ЛСксичСский Π°Π½Π°Π»ΠΈΠ·. Π‘ΠΊΠ°Π½Π΅Ρ€

ЛСксичСский Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ прСдставляСт собой ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Ρ€Π°Π·Π±ΠΎΡ€Π° тСкста ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Π Π°Π·Π±ΠΎΡ€ происходит Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΠΈ ΠΎΡ‚ ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΡ…ся Ρƒ Π½Π΅Π³ΠΎ Π² ΠΏΠ°ΠΌΡΡ‚ΠΈ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… символов ΠΈ ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌΠΈ опрСдСлСния Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ…. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ язык ΠΈΠΌΠ΅Π΅Ρ‚ свои ограничСния ΠΏΠΎ Ρ‚ΠΈΠΏΠ°ΠΌ Π΄Π°Π½Π½Ρ‹Ρ…, допущСния ΠΈ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΠΈ создания (строСния) конструкций, ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² ΠΈ Ρ‚. ΠΏ. ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ сканСра ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Ρ‚Ρ€ΠΈ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹: Ρ‚Π°Π±Π»ΠΈΡ†Π° Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… символов, Ρ‚Π°Π±Π»ΠΈΡ†Π° символичСских ΠΈΠΌΠ΅Π½ ΠΈ Ρ‚Π°Π±Π»ΠΈΡ†Π° Π»ΠΈΡ‚Π΅Ρ€Π°Π»ΠΎΠ² — это заполняСмыС Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹. Π’Π°Π±Π»ΠΈΡ†Π° Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… символов Ρ…Ρ€Π°Π½ΠΈΡ‚ всС ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ слова ΠΈ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ символы ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ Π² ΡΠ·Ρ‹ΠΊΠ΅, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΊΠΎΠ΄Ρ‹, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ символу. Π’Π°Π±Π»ΠΈΡ†Π° символичСских ΠΈΠΌΠ΅Π½ заполняСтся Π² ΠΏΡ€ΠΎΡ†Π΅ΡΡΠ΅ Ρ€Π°Π·Π±ΠΎΡ€Π° тСкста ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈ Ρ…Ρ€Π°Π½ΠΈΡ‚ Π² ΡΠ΅Π±Π΅ ΠΈΠΌΠ΅Π½Π° ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ² (символичСских ΠΈΠΌΠ΅Π½). Π’Π°Π±Π»ΠΈΡ†Π° Π»ΠΈΡ‚Π΅Ρ€Π°Π»ΠΎΠ² Ρ‚Π°ΠΊΠΆΠ΅ заполняСтся Π² ΠΏΡ€ΠΎΡ†Π΅ΡΡΠ΅ Ρ€Π°Π·Π±ΠΎΡ€Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈ Ρ…Ρ€Π°Π½ΠΈΡ‚ Π² ΡΠ΅Π±Π΅ Π»ΠΈΡ‚Π΅Ρ€Π°Π»Ρ‹: числСнныС ΠΈ ΡΡ‚Ρ€ΠΎΠΊΠΎΠ²Ρ‹Π΅ значСния, с ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… адрСсов.

РаспрСдСлСниС ΠΏΠΎ Ρ‚Π°Π±Π»ΠΈΡ†Π°ΠΌ происходит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ.

Π‘ΠΊΠ°Π½Π΅Ρ€ Π² ΠΏΡ€ΠΎΡ†Π΅ΡΡΠ΅ Π°Π½Π°Π»ΠΈΠ·Π° тСкста ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ выдСляСт ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΡΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΎΠ² тСкста ΠΈ ΡΡ€Π°Π²Π½ΠΈΠ²Π°Π΅Ρ‚ с ΠΊΠ°ΠΆΠ΄Ρ‹ΠΌ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»ΡŒΠ½Ρ‹ΠΌ символом. Если Ρ‚Π°ΠΊΠΎΠΉ символ Π½Π°ΠΉΠ΄Π΅Π½, Ρ‚ΠΎ Π² Π²Ρ‹Ρ…ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠΎΠ΄ ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‚ΡΡ ΠΊΠΎΠ΄ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΈ ΡΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ (Π½ΠΎΠΌΠ΅Ρ€ строки Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅). Π’ ΡΠ»ΡƒΡ‡Π°Π΅ Ссли этот элСмСнт Π½Π΅ ΡΠ²Π»ΡΠ΅Ρ‚ся Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»ΡŒΠ½Ρ‹ΠΌ символом провСряСтся, являСтся Π»ΠΈ ΠΎΠ½ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠΌ (ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ символ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π±ΡƒΠΊΠ²Π°, ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π»ΠΈΠ±ΠΎ Π±ΡƒΠΊΠ²ΠΎΠΉ, Π»ΠΈΠ±ΠΎ Ρ†ΠΈΡ„Ρ€ΠΎΠΉ), Ссли Ρ‚Π°ΠΊΠΎΠΉ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½, Ρ‚ΠΎ Π΄Π°Π½Π½Ρ‹ΠΉ элСмСнт заносится Π² Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ символичСских ΠΈΠΌΠ΅Π½, Π° ΠΊ Π²Ρ‹Ρ…ΠΎΠ΄Π½ΠΎΠΌΡƒ ΠΊΠΎΠ΄Ρƒ добавляСтся ΠΏΠ°Ρ€Π° числСнных Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ: Π½ΠΎΠΌΠ΅Ρ€ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΈ ΡΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ Π½Π°ΠΉΠ΄Π΅Π½Π½ΠΎΠ³ΠΎ элСмСнта. Π’ ΡΠ»ΡƒΡ‡Π°Π΅ Ссли Ρ‚Π°ΠΊΠΎΠΉ элСмСнт Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ ΡƒΠΆΠ΅ имССтся, Ρ‚ΠΎ Π² Π²Ρ‹Ρ…ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠΎΠ΄ заносится Π½ΠΎΠΌΠ΅Ρ€ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΈ Π΅Π³ΠΎ спСцификатор. Π’ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ Π»ΠΈΡ‚Π΅Ρ€Π°Π»ΠΎΠ² заносят числСнныС, строковыС ΠΈ ΠΈΠ½Ρ‹Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ языком значСния. ΠŸΡ€ΠΈ этом распознаСтся Ρ‚ΠΈΠΏ значСния ΠΈ Ρ‚ΡƒΡ‚ ΠΆΠ΅ заполняСтся ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ Ρ‚Π°Π±Π»ΠΈΡ†Π° адрСсов.

Π’Ρ‹Ρ…ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠΎΠ΄, сформированный сканСром, пСрСдаСтся Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΡΡ‚Π°Π΄ΠΈΡŽ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ — синтаксичСский Π°Π½Π°Π»ΠΈΠ·.

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ΅Π³ΠΎ сканСра ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ‚Π°ΠΊ:

просматриваСтся Π²Ρ…ΠΎΠ΄Π½ΠΎΠΉ ΠΏΠΎΡ‚ΠΎΠΊ символов ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° ΠΈΡΡ…ΠΎΠ΄Π½ΠΎΠΌ языкС Π΄ΠΎ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ΠΈΡ ΠΎΡ‡Π΅Ρ€Π΅Π΄Π½ΠΎΠ³ΠΎ символа, ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°ΡŽΡ‰Π΅Π³ΠΎ лСксСму;

для Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠΉ части Π²Ρ…ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΠΎΡ‚ΠΎΠΊΠ° выполняСтся функция распознавания лСксСмы;

ΠΏΡ€ΠΈ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠΌ распознавании информация ΠΎ Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ лСксСмС заносится Π² Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ лСксСм, ΠΈ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ возвращаСтся ΠΊ ΠΏΠ΅Ρ€Π²ΠΎΠΌΡƒ этапу;

ΠΏΡ€ΠΈ Π½Π΅ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠΌ распознавании выдаСтся сообщСниС ΠΎΠ± ΠΎΡˆΠΈΠ±ΠΊΠ΅, Π° Π΄Π°Π»ΡŒΠ½Π΅ΠΉΡˆΠΈΠ΅ дСйствия зависят ΠΎΡ‚ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ сканСра — Π»ΠΈΠ±ΠΎ Π΅Π³ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ прСкращаСтся, Π»ΠΈΠ±ΠΎ дСлаСтся ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ° Ρ€Π°ΡΠΏΠΎΠ·Π½Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ лСксСму (ΠΈΠ΄Π΅Ρ‚ Π²ΠΎΠ·Π²Ρ€Π°Ρ‚ ΠΊ ΠΏΠ΅Ρ€Π²ΠΎΠΌΡƒ этапу Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°).

Π Π°Π±ΠΎΡ‚Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹-сканСра продолТаСтся Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° Π½Π΅ Π±ΡƒΠ΄ΡƒΡ‚ просмотрСны всС символы ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° ΠΈΡΡ…ΠΎΠ΄Π½ΠΎΠΌ языкС ΠΈΠ· Π²Ρ…ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΠΎΡ‚ΠΎΠΊΠ°.

Π’Π°Π±Π»ΠΈΡ†Π° Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… символов Π² ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ΅ΠΌ случаС ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π²ΠΈΠ΄ ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ 1.

Π’Π°Π±Π»ΠΈΡ†Π° 1 — Π’Π°Π±Π»ΠΈΡ†Π° Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… символов

β„– ΠΏ.ΠΏ.

Π’Π΅Ρ€ΠΌΠΈΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ символ

ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ (ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅)

PROGRAM

Π—Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

VAR

ОписаниС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…

BEGIN

Начало Ρ‚Π΅Π»Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

END

ΠšΠΎΠ½Π΅Ρ† Ρ‚Π΅Π»Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

INTEGER

Π¦Π΅Π»Ρ‹ΠΉ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ…

FOR

Π‘Ρ‡Π΅Ρ‚Π½Ρ‹ΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Ρ†ΠΈΠΊΠ»Π° (для)

TO

ΠšΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово счСтного ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° Ρ†ΠΈΠΊΠ»Π° (Π΄ΠΎ)

DO

ΠšΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово (Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ)

ΠŸΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½ΠΈΠ΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ 1

β„– ΠΏ.ΠΏ.

Π’Π΅Ρ€ΠΌΠΈΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ символ

ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ (ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅)

WHILE

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Ρ†ΠΈΠΊΠ»Π° с ΠΏΡ€Π΅Π΄ΡƒΡΠ»ΠΎΠ²ΠΈΠ΅ΠΌ (ΠΏΠΎΠΊΠ°)

DIV

Π”Π΅Π»Π΅Π½ΠΈΠ΅ цСлочислСнноС

MOD

ΠžΡΡ‚Π°Ρ‚ΠΎΠΊ ΠΎΡ‚ Ρ†Π΅Π»ΠΎΡ‡ΠΈΡΠ»Π΅Π½Π½ΠΎΠ³ΠΎ дСлСния

AND

ЛогичСскоС И

OR

ЛогичСскоС Π˜Π›Π˜

:=

ΠŸΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅

Π‘Π½Π°Ρ‡Π°Π»Π° заполняСтся Ρ‚Π°Π±Π»ΠΈΡ†Π° лСксСм (Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… символов), Π·Π°Ρ‚Π΅ΠΌ начинаСтся считываниС ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π²Ρ…ΠΎΠ΄Π½ΠΎΠ³ΠΎ тСкста ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ. ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ сканСра происходит Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Ρ‚Π°Π±Π»ΠΈΡ† символичСских ΠΈΠΌΠ΅Π½ ΠΈ Π»ΠΈΡ‚Π΅Ρ€Π°Π»ΠΎΠ².

Π”Π°Π½Π½Ρ‹Π΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

Π’Π°Π±Π»ΠΈΡ†Π° 2 — Π’Π°Π±Π»ΠΈΡ†Π° символичСских ΠΈΠΌΠ΅Π½

β„– ΠΏ.ΠΏ.

Π˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€

Π’ΠΈΠΏ

Π Π°Π·ΠΌΠ΅Ρ€, Π·Π°Π½ΠΈΠΌΠ°Π΅ΠΌΡ‹ΠΉ Π² ΠΏΠ°ΠΌΡΡ‚ΠΈ, Π±Π°ΠΉΡ‚

ΠžΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ адрСс Π² ΠΏΠ°ΠΌΡΡ‚ΠΈ

I

INTEGER

Y

REAL

X1

REAL

Π’Π°Π±Π»ΠΈΡ†Π° 3 — Π’Π°Π±Π»ΠΈΡ†Π° Π»ΠΈΡ‚Π΅Ρ€Π°Π»ΠΎΠ²

β„– ΠΏ.ΠΏ.

Π›ΠΈΡ‚Π΅Ρ€Π°Π»

Π’ΠΈΠΏ

Π Π°Π·ΠΌΠ΅Ρ€, Π·Π°Π½ΠΈΠΌΠ°Π΅ΠΌΡ‹ΠΉ Π² ΠΏΠ°ΠΌΡΡ‚ΠΈ, Π±Π°ΠΉΡ‚

ΠžΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ адрСс Π² ΠΏΠ°ΠΌΡΡ‚ΠΈ

INTEGER

INTEGER

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ Ρ€Π°Π±ΠΎΡ‚Ρ‹ сканСра являСтся ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΊΠΎΠ΄ΠΎΠ² лСксСм. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΊΠΎΠ΄ лСксСмы ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ прСдставляСтся ΠΊΠΎΠ΄ΠΎΠΌ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΈ ΡΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠΌ (порядковый Π½ΠΎΠΌΠ΅Ρ€ Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅, ΠΊΡƒΠ΄Π° занСсСна лСксСма). Π­Ρ‚ΠΎ позволяСт ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ поиска ΠΏΠΎ Ρ‚Π°Π±Π»ΠΈΡ†Π°ΠΌ Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… этапах трансляции. НапримСр Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ сканСром ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ прСдлоТСния языка Паскаль

FOR I:=1 TO 100 DO Y:=X1

Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π° строка:

<1,06><2,1><1,14><3,1><1,07><3,2><1,08><2,2><1,14><2,3>,

Π³Π΄Π΅ Π² ΡƒΠ³Π»ΠΎΠ²Ρ‹Ρ… скобках ΠΏΠ°Ρ€Π° чисСл Π·Π°Π΄Π°Π΅Ρ‚ ΠΊΠΎΠ΄ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΈ ΡΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€. МоТно ΠΎΡ„ΠΎΡ€ΠΌΠΈΡ‚ΡŒ ΠΈ Π² Π²ΠΈΠ΄Π΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹.

Π’Π°Π±Π»ΠΈΡ†Π° 4 — Π’Π°Π±Π»ΠΈΡ†Π° Π²Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Ρ… символов

β„– ΠΏ.ΠΏ.

Π’Π°Π±Π»ΠΈΡ†Π°

Π‘Ρ‚Ρ€ΠΎΠΊΠ°

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎ Π² ΡΠΊΠ°Π½Π΅Ρ€Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹Π΄Π΅Π»Π΅Π½Ρ‹ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ[4]:

Π²Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΈΠ· Π²Ρ…ΠΎΠ΄Π½ΠΎΠΉ строки ΠΎΡ‡Π΅Ρ€Π΅Π΄Π½ΠΎΠ³ΠΎ слова;

поиск Π² Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ… лСксСм ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° лСксСмы;

Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ Π²Ρ‹Π²ΠΎΠ΄ Π²Ρ‹Ρ…ΠΎΠ΄Π½ΠΎΠΉ строки.

Для модуля выдСлСния слова Π²Π°ΠΆΠ½Π° информация ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊΠΈΠ΅ символы ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€ΠΈΠ·Π½Π°ΠΊΠ°ΠΌΠΈ Π½Π°Ρ‡Π°Π»Π° ΠΈΠ»ΠΈ ΠΊΠΎΠ½Ρ†Π° слова. НапримСр, Π² ΡΠ·Ρ‹ΠΊΠ΅ Паскаль ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ слова ΠΎΡ‚Π΄Π΅Π»ΡΡŽΡ‚ΡΡ ΠΎΡ‚ Π΄Ρ€ΡƒΠ³ΠΈΡ… элСмСнтов прСдлоТСния ΠΏΡ€ΠΎΠ±Π΅Π»Π°ΠΌΠΈ. Π‘Π»ΠΎΠΆΠ½Π΅Π΅ обстоит Π΄Π΅Π»ΠΎ с Π²Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ² ΠΈ Ρ‡ΠΈΡΠ΅Π», ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»Π΅ΠΌ для Π½ΠΈΡ… ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠ»ΡƒΠΆΠΈΡ‚ΡŒ любой Π΄Ρ€ΡƒΠ³ΠΎΠΉ символ, Π½Π΅ Π²Ρ…одящий ΠΏΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΡŽ Π² ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ΠΈΠ»ΠΈ число.

ΠŸΡ€ΠΈ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ Ρ‚Π°Π±Π»ΠΈΡ† выполняСтся ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ Π² Π½Π΅ΠΉ элСмСнта, ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡŽΡ‰Π΅Π³ΠΎ с Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠΌ ΠΈΠ»ΠΈ константой, ΠΈ ΠΏΡ€ΠΈ совпадСнии занСсСниС Π² Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ Π½Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΠ΅Ρ‚ся.

Π’ Π·Π°Π΄Π°Ρ‡ΠΈ послСднСго модуля Π²Ρ…ΠΎΠ΄ΠΈΡ‚ занСсСниС Π² Π²Ρ‹Ρ…ΠΎΠ΄Π½ΡƒΡŽ строку ΠΊΠΎΠ΄ΠΎΠ² лСксСм.

Π’ Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊ ΡΠ²ΠΎΠ΅ΠΉ основной Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Ρ€Π°ΡΠΏΠΎΠ·Π½Π°Π²Π°Π½ΠΈΡŽ лСксСм, сканСр ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ выполняСт Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ строк исход-Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΏΠ΅Ρ‡Π°Ρ‚ΡŒ листинга исходной ΠΏΡ€ΠΎ-Π³Ρ€Π°ΠΌΠΌΡ‹. ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΡƒΡŽΡ‚ΡΡ сканСром, Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ Ρ‚ΠΎΠ³ΠΎ случая, ΠΊΠΎΠ³Π΄Π° ΠΎΠ½ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ Π½Π°ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π½Ρ‹ ΠΈ, Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±-Ρ€Π°Π·ΠΎΠΌ, эффСктивно ΡƒΠ΄Π°Π»ΡΡŽΡ‚ΡΡ ΠΈΠ· ΠΈΡΡ…ΠΎΠ΄Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π΄ΠΎ Π½Π°-Ρ‡Π°Π»Π° процСсса грамматичСского Ρ€Π°Π·Π±ΠΎΡ€Π°.

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ стадиСй Π°Π½Π°Π»ΠΈΠ·Π° являСтся синтаксичСский Ρ€Π°Π·Π±ΠΎΡ€.

ЛСксичСский ΠΈ ΡΠΈΠ½Ρ‚аксичСский Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Ρ‹ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‚ ΠΌΠ΅ΠΆΠ΄Ρƒ собой. БущСствуСт Π΄Π²Π° основных способа взаимодСйствия:

рСализуСтся Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ прямого лСксичСского Π°Π½Π°Π»ΠΈΠ·Π°. ΠžΡ‚ ΡΠΈΠ½Ρ‚аксичСского Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Π° поступаСт запрос «Π΄Π°Ρ‚ΡŒ лСксСму» ΠΈ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ся Ρ‚ΠΈΠΏ лСксСмы;

нСпрямой лСксичСский Π°Π½Π°Π»ΠΈΠ·. БинтаксичСский Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ Π²Ρ‹Π΄Π°Π΅Ρ‚ запрос «Π΄Π°Ρ‚ΡŒ лСксСму», Ρ‚ΠΈΠΏ лСксСмы Π½Π΅ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ся. НСт Ρ€Π΅ΡˆΠ°ΡŽΡ‰Π΅Π³ΠΎ Π±Π»ΠΎΠΊΠ°, считаСм, Ρ‡Ρ‚ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π³Ρ€ΡƒΠΏΠΏΠ° ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹Ρ… Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΎΠ².

1.4 БинтаксичСский ΠΈ ΡΠ΅ΠΌΠ°Π½Ρ‚ичСский Π°Π½Π°Π»ΠΈΠ·

БинтаксичСский Π°Π½Π°Π»ΠΈΠ· — это процСсс, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ исслСдуСтся Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠ° лСксСм ΠΈ ΡƒΡΡ‚анавливаСтся, удовлСтворяСт Π»ΠΈ ΠΎΠ½Π° структурным условиям, явно сформулированным Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ синтаксиса языка. Π­Ρ‚ΠΎ — самая слоТная Ρ‡Π°ΡΡ‚ΡŒ компилятора.

БинтаксичСский Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ расчлСняСт ΠΈΡΡ…ΠΎΠ΄Π½ΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π½Π° ΡΠΎΡΡ‚Π°Π²Π½Ρ‹Π΅ части, Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΠ΅Ρ‚ Π΅Π΅ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π΅ прСдставлСниС, заносит ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ Π² Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ символов ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹. ΠŸΡ€ΠΈ этом производится ΠΏΠΎΠ»Π½Ρ‹ΠΉ синтаксичСский ΠΈ, ΠΏΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΠΈ, сСмантичСский ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. ЀактичСски, это — синтаксичСски управляСмая ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°. ΠŸΡ€ΠΈ этом ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ стрСмятся ΠΎΡ‚Π΄Π΅Π»ΠΈΡ‚ΡŒ синтаксис ΠΎΡ‚ ΡΠ΅ΠΌΠ°Π½Ρ‚ΠΈΠΊΠΈ насколько это Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ — ΠΊΠΎΠ³Π΄Π° синтаксичСский Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ распознаСт ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ исходного языка, ΠΎΠ½ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ ΡΠ΅ΠΌΠ°Π½Ρ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρƒ, которая ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΡƒΠ΅Ρ‚ эту ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ, заносит ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΊΡƒΠ΄Π° Π½Π°Π΄ΠΎ, провСряСт Π½Π° Π΄ΡƒΠ±Π»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ описания ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, провСряСт соотвСтствиС Ρ‚ΠΈΠΏΠΎΠ² ΠΈ Ρ‚. ΠΏ.

ΠŸΡ€ΠΎΡ†Π΅ΡΡ синтаксичСского Π°Π½Π°Π»ΠΈΠ·Π° ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒΡΡ ΠΊΠ°ΠΊ построСниС Π΄Π΅Ρ€Π΅Π²Π° грамматичСского Ρ€Π°Π·Π±ΠΎΡ€Π° для транслируСмых ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠΉ. Π“Ρ€Π°ΠΌΠΌΠ°Ρ‚ΠΈΠΊΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΊΠ°ΠΊ для пороТдСния Ρ‚Π°ΠΊ ΠΈ Π΄Π»Ρ распознавания ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠΉ языка. ΠŸΠΎΡ€ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ начинаСтся с Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ понятия (ΠΈΠ»ΠΈ аксиомы Π³Ρ€Π°ΠΌΠΌΠ°Ρ‚ΠΈΠΊΠΈ). ΠŸΡ€ΠΈ распознавании с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ грамматичСских ΠΏΡ€Π°Π²ΠΈΠ» пороТдаСтся ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π·Π°Ρ‚Π΅ΠΌ сравниваСтся с Π²Ρ…ΠΎΠ΄Π½ΠΎΠΉ строкой. ΠŸΡ€ΠΈ этом ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΏΡ€Π°Π²ΠΈΠ» подстановки для пороТдСния ΠΎΡ‡Π΅Ρ€Π΅Π΄Π½ΠΎΠ³ΠΎ символа прСдлоТСния зависит ΠΎΡ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² сравнСния ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΡ… символов с ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌΠΈ символами Π²Ρ…ΠΎΠ΄Π½ΠΎΠΉ строки. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π°Π½Π°Π»ΠΈΠ·Π° исходного прСдлоТСния Π² Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Ρ… грамматичСских конструкций ΡƒΠ΄ΠΎΠ±Π½ΠΎ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ Π² Π²ΠΈΠ΄Π΅ Π΄Π΅Ρ€Π΅Π²Π°. Π’Π°ΠΊΠΈΠ΅ Π΄Π΅Ρ€Π΅Π²ΡŒΡ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ Π΄Π΅Ρ€Π΅Π²ΡŒΡΠΌΠΈ грамматичСского Ρ€Π°Π·Π±ΠΎΡ€Π° ΠΈΠ»ΠΈ синтаксичСскими Π΄Π΅Ρ€Π΅Π²ΡŒΡΠΌΠΈ. На Ρ€ΠΈΡΡƒΠ½ΠΊΠ΅ 3 ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΎ Π΄Π΅Ρ€Π΅Π²ΠΎ грамматичСского Ρ€Π°Π·Π±ΠΎΡ€Π° для прСдлоТСния READ (VALUE).

Рисунок 3 — Π”Π΅Ρ€Π΅Π²ΠΎ грамматичСского Ρ€Π°Π·Π±ΠΎΡ€Π° ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ грамматичСского Ρ€Π°Π·Π±ΠΎΡ€Π° Ρ€Π°Π·Π±ΠΈΠ²Π°ΡŽΡ‚ΡΡ Π½Π° Π΄Π²Π° Π±ΠΎΠ»ΡŒΡˆΠΈΡ… класса восходящиС ΠΈ нисходящиС — Π² ΡΠΎΠΎΡ‚вСтствии с ΠΏΠΎΡ€ΡΠ΄ΠΊΠΎΠΌ построСния Π΄Π΅Ρ€Π΅Π²Π° грамматичСского Ρ€Π°Π·Π±ΠΎΡ€Π°. НисходящиС (ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ свСрху-Π²Π½ΠΈΠ·) Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ΡΡ с Π°ΠΊΡΠΈΠΎΠΌΡ‹ Π³Ρ€Π°ΠΌΠΌΠ°Ρ‚ΠΈΠΊΠΈ, с ΠΊΠΎΡ€Π½Ρ Π΄Π΅Ρ€Π΅Π²Π° ΠΈ ΠΏΡ‹Ρ‚Π°ΡŽΡ‚ΡΡ Ρ‚Π°ΠΊ Π΅Π³ΠΎ Π½Π°Ρ€Π°Ρ‰ΠΈΠ²Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΡƒΠ·Π»Ρ‹ Π΄Π΅Ρ€Π΅Π²Π° соотвСтствовали синтаксису Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠ³ΠΎ выраТСния. ВосходящиС (ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ снизу-Π²Π²Π΅Ρ€Ρ…) Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ с ΡΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΎΠ² прСдлоТСния (с «Π»ΠΈΡΡ‚ΡŒΠ΅Π²») ΠΈ ΠΎΡ‚Ρ‹ΡΠΊΠΈΠ²Π°ΡŽΡ‚ Π² Π³Ρ€Π°ΠΌΠΌΠ°Ρ‚ΠΈΠΊΠ΅ ΠΊΠ°ΠΊΠΎΠΌΡƒ ΠΏΠΎΠ½ΡΡ‚ΠΈΡŽ ΠΎΠ½ΠΈ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‚, Ρ‚. Π΅. ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΡƒΡŽ Π²Π΅Ρ€ΡˆΠΈΠ½Ρƒ для этих элСмСнтов, ΠΈ Ρ‚. Π΄. ΠΏΠΎΠΊΠ° Π½Π΅ ΠΏΡ€ΠΈΡ…одят ΠΊ ΠΊΠΎΡ€Π½ΡŽ Π΄Π΅Ρ€Π΅Π²Π° (аксиомС Π³Ρ€Π°ΠΌΠΌΠ°Ρ‚ΠΈΠΊΠΈ). Π’ ΡΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… компиляторах ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ нисходящиС, Ρ‚Π°ΠΊ ΠΈ Π²ΠΎΡΡ…одящиС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹.

Достоинством восходящСго ΠΌΠ΅Ρ‚ΠΎΠ΄Π° являСтся Π΅Π³ΠΎ нСсомнСнная простота, Π° Ρ‚Π°ΠΊΠΆΠ΅ высокая ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ выполнСния (Π½Π΅ Ρ‚ратится врСмя Π½Π° ΠΏΠΎΠΈΡΠΊ ΠΏΡ€Π°Π²ΠΈΠ»Π° Ρ€Π΅Π΄ΡƒΠΊΡ†ΠΈΠΈ).

Однако всС эти достоинства Π½Π°ΠΏΡ€ΠΎΡ‡ΡŒ ΠΌΠ΅Ρ€ΠΊΠ½ΡƒΡ‚ ΠΏΠ΅Ρ€Π΅Π΄ Π³Π»Π°Π²Π½Ρ‹ΠΌ нСдостатком Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°. Π”Π΅Π»ΠΎ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ здСсь практичСски отсутствуСт какая Π±Ρ‹ Ρ‚ΠΎ Π½ΠΈ Π±Ρ‹Π»Π° диагностика (ΠΈ Ρ‚Π΅ΠΌ Π±ΠΎΠ»Π΅Π΅ — локализация) ошибок. Π’ΠΎ Π²Ρ‚ΠΎΡ€Ρ‹Ρ…, Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ошибки Π² ΠΈΡΡ…ΠΎΠ΄Π½ΠΎΠΌ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ Π½Π΅ Π΄ΠΈΠ°Π³Π½ΠΎΡΡ‚ΠΈΡ€ΡƒΡŽΡ‚ΡΡ вовсС. НапримСр, выраТСния, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π²ΡΡ‚Ρ€Π΅Ρ‡Π°ΡŽΡ‚ΡΡ ΠΈΠ΄ΡƒΡ‰ΠΈΠ΅ подряд скобки «(«ΠΈ «)».

ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΏΡ€ΠΈ дальнСйшСм рассмотрСнии Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒΡΡ нисходящий Ρ€Π°Π·Π±ΠΎΡ€, ΠΊΠ°ΠΊ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΏΡ€ΠΈΠ³ΠΎΠ΄Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΏΡ€ΠΈ Ρ€ΡƒΡ‡Π½ΠΎΠΌ написании компилятора.

ΠšΡ€ΠΎΠΌΠ΅ этого, Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ синтаксичСского (грамматичСского) Ρ€Π°Π·Π±ΠΎΡ€Π° (контроля) дСлят Π½Π° ΡΠΈΠ½Ρ‚аксичСски-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ ΠΈ ΡΠΈΠ½Ρ‚аксичСски-Π½Π΅ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅. БинтаксичСски-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ для Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ сСмСйства языков ΠΈ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ ΠΊ Ρ€Π°ΡΠΏΠΎΠ·Π½Π°Π²Π°Π½ΠΈΡŽ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ языка выполняСтся ΠΏΡƒΡ‚Π΅ΠΌ смСны Π³Ρ€Π°ΠΌΠΌΠ°Ρ‚ΠΈΠΊΠΈ, Ρ‚. Π΅. Π³Ρ€Π°ΠΌΠΌΠ°Ρ‚ΠΈΠΊΠ° выполняСт Ρ€ΠΎΠ»ΡŒ Π½Π΅ΠΊΠΎΠ΅ΠΉ «ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹» распознавания ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠΉ языка. Π“Π»Π°Π²Π½Ρ‹ΠΌ достоинством этого класса Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² являСтся ΠΈΡ… ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ, Π° Π½Π΅Π΄ΠΎΡΡ‚Π°Ρ‚ΠΊΠΎΠΌ — Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ избыточности вслСдствиС ΠΎΡ€ΠΈΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ Π½Π° ΡΠ΅ΠΌΠ΅ΠΉΡΡ‚Π²ΠΎ языков.

БинтаксичСски-Π½Π΅ΠΎpΠΈΠ΅Π½Ρ‚ΠΈpΠΎΠ²Π°Π½Π½Ρ‹Π΅ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ порядок дСйствий Π² Π½ΠΈΡ… опрСдСляСтся ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌΠΈ Π³Ρ€Π°ΠΌΠΌΠ°Ρ‚ΠΈΠΊΠΈ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ языка. Достоинством этого класса Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² являСтся отсутствиС избыточности, Π° Π½Π΅Π΄ΠΎΡΡ‚Π°Ρ‚ΠΊΠΎΠΌ — Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ пСрСнастройки Π½Π° Ρ€Π°ΡΠΏΠΎΠ·Π½Π°Π²Π°Π½ΠΈΠ΅ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ языка.

Π’ Π΄Π°Π»ΡŒΠ½Π΅ΠΉΡˆΠ΅ΠΌ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с ΡΠΈΠ½Ρ‚аксичСски-Π½Π΅ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌΠΈ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°ΠΌΠΈ, Ρ‚.ΠΊ. Π±ΡƒΠ΄Π΅ΠΌ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ лишь с ΠΎΠ΄Π½ΠΈΠΌ языком — ΡƒΡ‡Π΅Π±Π½Ρ‹ΠΉ язык Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ языка Паскаль.

1.5 Π“Ρ€Π°ΠΌΠΌΠ°Ρ‚ΠΈΠΊΠΈ

Π“Ρ€Π°ΠΌΠΌΠ°Ρ‚ΠΈΠΊΠ° языка программирования являСтся Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌ описаниСм Π΅Π³ΠΎ синтаксиса ΠΈΠ»ΠΈ Ρ„ΠΎΡ€ΠΌΡ‹, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ записаны ΠΎΡ‚-Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ прСдлоТСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈΠ»ΠΈ вся ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°. Π“Ρ€Π°ΠΌΠΌΠ°Ρ‚ΠΈΠΊΠ° Π½Π΅ ΠΎΠΏΠΈΡΡ‹Π²Π°Π΅Ρ‚ сСмантику ΠΈΠ»ΠΈ значСния Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΏΡ€Π΅Π΄Π»ΠΎ-ΠΆΠ΅Π½ΠΈΠΉ. Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡ ΠΎ ΡΠ΅ΠΌΠ°Π½Ρ‚ΠΈΠΊΠ΅ содСрТится Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ… Π³Π΅-Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°. Π’ ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ ΠΈΠ»Π»ΡŽΡΡ‚Ρ€Π°Ρ†ΠΈΠΈ Ρ€Π°Π·Π½ΠΈΡ†Ρ‹ ΠΌΠ΅ΠΆΠ΄Ρƒ синтаксисом ΠΈ ΡΠ΅ΠΌΠ°Π½Ρ‚ΠΈΠΊΠΎΠΉ рассмотрим Π΄Π²Π° прСдлоТСния:

I:=J+K

ΠΈ

I:=X+Y

Π³Π΄Π΅ Π₯ ΠΈ Y ΡΠ²Π»ΡΡŽΡ‚ся Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ, a I, J, К — Ρ†Π΅Π»Ρ‹ΠΌΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ. Π­Ρ‚ΠΈ Π΄Π²Π° прСдлоТСния ΠΈΠΌΠ΅ΡŽΡ‚ ΠΎΠ΄ΠΈ-Π½Π°ΠΊΠΎΠ²Ρ‹ΠΉ синтаксис. Оба ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°ΠΌΠΈ присваивания, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… присваиваСмоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ опрСдСляСтся Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ, состоящим ΠΈΠ· Π΄Π²ΡƒΡ… ΠΈΠΌΠ΅Π½ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, Ρ€Π°Π·Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ слоТСния. Однако сСмантика этих Π΄Π²ΡƒΡ… ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½-Π½ΠΎ Ρ€Π°Π·Π»ΠΈΡ‡Π½Π°. ΠŸΠ΅Ρ€Π²ΠΎΠ΅ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½-Π½Ρ‹Π΅ Π² Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ слоТСны с ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Ρ†Π΅Π»Ρ‹Ρ… арифмСтичСских ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ, Π° Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ слоТСния Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ присвоСн ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ I. Π’Ρ‚ΠΎΡ€ΠΎΠ΅ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π·Π°Π΄Π°Π΅Ρ‚ сло-ΠΆΠ΅Π½ΠΈΠ΅ с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ, Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ Π² Ρ†Π΅Π»ΠΎΠ΅ число ΠΏΠ΅Ρ€Π΅Π΄ присваиваниСм. ΠžΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ, эти Π΄Π²Π° прСдлоТСния Π±ΡƒΠ΄ΡƒΡ‚ скомпилированы Π² Ρ€Π°Π·-Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹Ρ… ΠΊΠΎΠΌΠ°Π½Π΄, хотя ΠΈΡ… Π³Ρ€Π°ΠΌΠΌΠ°Ρ‚ичСскоС описаниС ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎ. Различия ΠΌΠ΅ΠΆΠ΄Ρƒ Π½ΠΈΠΌΠΈ ΠΏΡ€ΠΎ-явятся Π½Π° ΡΡ‚Π°ΠΏΠ΅ Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°.

На Ρ€ΠΈΡΡƒΠ½ΠΊΠ΅ 4 ΠΏΠΎΠΊΠ°Π·Π°Π½Ρ‹ БНЀ Π³Ρ€Π°ΠΌΠΌΠ°Ρ‚ΠΈΠΊΠΈ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ Π² Π΄ΠΈΠΏΠ»ΠΎΠΌΠ½ΠΎΠΌ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅. ΠŸΠΎΠ΄Ρ‡Π΅Ρ€ΠΊΠ½ΡƒΡ‚Ρ‹Π΅ волнистой Π»ΠΈΠ½ΠΈΠ΅ΠΉ элСмСнты ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΠΏΡƒΡΠΊΠ°Ρ‚ΡŒΡΡ (Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ).

:= PROGRAM VAR BEGIN END.

:= id ;

:= {; } ;

:= :

:= INTEGER | REAL | STRING

:= id {, id }

:= {; } ;

:= | | | | | |

:= id :=

:= - +

:= DIV

:= id | int | real | | ()

:= READ ()

:= WRITE ({, })

:= FOR DO

:= id := TO|DOWNTO

:= | BEGIN END

:= |

:=? ?

:= string

:= IF <�сравнСниС> THEN

ELSE

<�сравнСниС>:= <�условиС>

<�условиС> := > | < | = | >= | <= | <>

:= WHILE <�сравнСниС> DO

:= REPEAT

UNTIL <�сравнСниС>

Рисунок 4 — УпрощСнная Π³Ρ€Π°ΠΌΠΌΠ°Ρ‚ΠΈΠΊΠ° языка Паскаль БущСствуСт нСсколько Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Ρ„ΠΎΡ€ΠΌ записи Π³Ρ€Π°ΠΌΠΌΠ°Ρ‚ΠΈΠΊ, срСди ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΌΡ‹ Ρ€Π°ΡΡΠΌΠΎΡ‚Ρ€ΠΈΠΌ Ρ„ΠΎΡ€ΠΌΡƒ БСкуса—Наура (БНЀ). БНЀ Π½Π΅ ΡΠ°ΠΌΠΎΠ΅ ΠΌΠΎΡ‰Π½ΠΎΠ΅ ΠΈΠ· ΠΈΠ·Π²Π΅ΡΡ‚Π½Ρ‹Ρ… срСдств описания синтаксиса. Однако эта Ρ„ΠΎΡ€ΠΌΠ° достаточно проста, ΡˆΠΈΡ€ΠΎΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΈ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚авляСт достаточныС для Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ срСдства. На Ρ€ΠΈΡ. 4 ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½Π° ΠΎΠ΄Π½Π° ΠΈΠ· Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… Π³Ρ€Π°ΠΌΠΌΠ°Ρ‚ΠΈΠΊ БНЀ.

Π“Ρ€Π°ΠΌΠΌΠ°Ρ‚ΠΈΠΊΠ° БНЀ состоит ΠΈΠ· ΠΌΠ½ΠΎΠΆΠ΅ΡΡ‚Π²Π° ΠΏΡ€Π°Π²ΠΈΠ» Π²Ρ‹Π²ΠΎΠ΄Π°, ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… опрСдСляСт синтаксис Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ конструкции языка программирования. Рассмотрим, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ 13 Π½Π° Ρ€ΠΈΡ. 4:

:= READ ()

Π­Ρ‚ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ синтаксиса прСдлоТСния READ языка Паскаль, ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π΅Π½Π½ΠΎΠ΅ Π² Π³Ρ€Π°ΠΌΠΌΠ°Ρ‚ΠΈΠΊΠ΅ ΠΊΠ°ΠΊ. Π‘ΠΈΠΌΠ²ΠΎΠ» := ΠΌΠΎΠΆΠ½ΠΎ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ «ΡΠ²Π»ΡΠ΅Ρ‚ся ΠΏΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΡŽ». Π‘ Π»Π΅Π²ΠΎΠΉ стороны ΠΎΡ‚ ΡΡ‚ΠΎΠ³ΠΎ символа находится опрСдСляСмая конструкция языка (Π² Π½Π°ΡˆΠ΅ΠΌ случаС—), Π° Ρ ΠΏΡ€Π°Π²ΠΎΠΉ—описаниС синтаксиса этой конструкции. Π‘Ρ‚Ρ€ΠΎΠΊΠΈ символов, Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹Π΅ Π² ΡƒΠ³Π»ΠΎΠ²Ρ‹Π΅ скобки < ΠΈ >, Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ Π½Π΅Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»ΡŒΠ½Ρ‹ΠΌΠΈ символами (Ρ‚. Π΅. ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ конструкций, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌΠΈ Π²Π½ΡƒΡ‚Ρ€ΠΈ Π³Ρ€Π°ΠΌΠΌΠ°Ρ‚ΠΈΠΊΠΈ). Π’ΠΎ, Ρ‡Ρ‚ΠΎ Π½Π΅ Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΎ Π² ΡƒΠ³Π»ΠΎΠ²Ρ‹Π΅ скобки, называСтся Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»ΡŒΠ½Ρ‹ΠΌΠΈ символами Π³Ρ€Π°ΠΌΠΌΠ°Ρ‚ΠΈΠΊΠΈ (лСксСмами). Π’ ΡΡ‚ΠΎΠΌ ΠΏΡ€Π°Π²ΠΈΠ»Π΅ Π²Ρ‹Π²ΠΎΠ΄Π° Π½Π΅Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»ΡŒΠ½Ρ‹ΠΌΠΈ символами ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΈ. Π’Π΅Ρ€-ΠΌΠΈΠ½Π°Π»ΡŒΠ½Ρ‹ΠΌΠΈ символами ΡΠ²Π»ΡΡŽΡ‚ΡΡ лСксСмы READ, (,). Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, это ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ опрСдСляСт, Ρ‡Ρ‚ΠΎ конструкция состоит ΠΈΠ· Π»Π΅ΠΊΡΠ΅ΠΌΡ‹ READ, Π·Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ слСдуСт лСксСма (, Π·Π° Π½Π΅ΠΉ слСдуСт конструкция языка, называСмая, Π·Π° ΠΊΠΎ-Ρ‚ΠΎΡ€ΠΎΠΉ слСдуСт лСксСма). ΠŸΡ€ΠΎΠ±Π΅Π»Ρ‹ ΠΏΡ€ΠΈ описании грамматичСских ΠΏΡ€Π°Π²ΠΈΠ» Π½Π΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²Π΅Π½Π½Ρ‹ ΠΈ Π²ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для наглядности.

Для распознавания Π½Π΅Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ символа Π½Π΅ΠΎΠ±-Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π±Ρ‹Π»ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ для Π½Π΅Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ символа. Π­Ρ‚ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ даСтся ΠΏΡ€Π°Π²ΠΈΠ»ΠΎΠΌ 6 Π½Π° Ρ€ΠΈΡ. 4:

:= id {, id }

Π­Ρ‚Π° нотация, ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ конструкция, Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Π°Ρ Π² Ρ„ΠΈΠ³ΡƒΡ€Π½Ρ‹Π΅ скобки, ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π»ΠΈΠ±ΠΎ ΠΎΠΏΡƒΡ‰Π΅Π½Π°, Π»ΠΈΠ±ΠΎ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡ‚ΡŒΡΡ ΠΎΠ΄ΠΈΠ½ ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ число Ρ€Π°Π·. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ 6 опрСдСляСт Π½Π΅Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»ΡŒ-Π½Ρ‹ΠΉ символ ΠΊΠ°ΠΊ состоящий ΠΈΠ· Π΅Π΄ΠΈΠ½ΡΡ‚Π²Π΅Π½Π½ΠΎΠΉ лСксСмы id ΠΈΠ»ΠΈ ΠΆΠ΅ ΠΈΠ· ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎΠ³ΠΎ числа ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… Π΄Ρ€ΡƒΠ³ Π·Π° Π΄Ρ€ΡƒΠ³ΠΎΠΌ лСксСм id, Ρ€Π°Π·Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… запятой. Π’ ΡΠΎΠΎΡ‚вСтствии с ΡΡ‚ΠΈΠΌ Π½ΠΎΠ²Ρ‹ΠΌ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π°, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π°Ρ Π½Π΅Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»ΡŒΠ½ΠΎΠΌΡƒ символу, сначала ΠΈΡ‰Π΅Ρ‚ лСксСму id, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅Ρ‚ ΡΠΊΠ°Π½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π²Ρ…ΠΎΠ΄Π½ΠΎΠΉ тСкст Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ ΠΏΠ°Ρ€Π° лСксСм Π½Π΅ ΡΠΎΠ²ΠΏΠ°Π΄Π΅Ρ‚ с Π·Π°ΠΏΡΡ‚ΠΎΠΉ ΠΈ id. Вакая запись устраняСт ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ Π»Π΅Π²ΠΎΠΉ рСкурсии.

1.6 Π€ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°

Π’ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Ρ„ΠΎΡ€ΠΌΡ‹ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π³ΠΎ прСдставлСния синтаксичСских конструкций исходной ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π² ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€Π΅. Π”Π΅Ρ€Π΅Π²ΠΎ грамматичСского Ρ€Π°Π·Π±ΠΎΡ€Π° оказываСтся Π½Π΅ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΌ Π² Ρ€Π°Π±ΠΎΡ‚Π΅ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ ΠΏΡ€ΠΈ Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΏΠ΅Ρ€Π΅Π΄ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ ΠΈ Π½Π΅ΠΏΠΎΡΡ€Π΅Π΄ΡΡ‚Π²Π΅Π½Π½ΠΎ Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠ΅ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π΅ прСдставлСниС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ прСобразуСтся Π² ΠΎΠ΄Π½Ρƒ ΠΈΠ· ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… Ρ„ΠΎΡ€ΠΌ записи.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌΠΈ Ρ‚Π°ΠΊΠΈΡ… Ρ„ΠΎΡ€ΠΌ записи ΡΠ²Π»ΡΡŽΡ‚ΡΡ:

обратная польская запись ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ;

Ρ‚Π΅Ρ‚Ρ€Π°Π΄Ρ‹ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ;

Ρ‚Ρ€ΠΈΠ°Π΄Ρ‹ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ;

собствСнно ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ассСмблСра.

ΠžΠ±Ρ€Π°Ρ‚Π½Π°Ρ польская запись — это постфиксная запись ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ. ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²ΠΎΠΌ Π΅Π΅ ΡΠ²Π»ΡΠ΅Ρ‚ся Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ всС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π·Π°ΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ΡΡ нСпосрСдствСнно Π² ΠΏΠΎΡ€ΡΠ΄ΠΊΠ΅ ΠΈΡ… Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ. Она Ρ‡Ρ€Π΅Π·Π²Ρ‹Ρ‡Π°ΠΉΠ½ΠΎ эффСктивна Π² Ρ‚Π΅Ρ… случаях, ΠΊΠΎΠ³Π΄Π° для вычислСний ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ стСк.

Π’Π΅Ρ‚Ρ€Π°Π΄Ρ‹ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ собой запись ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ Π² Ρ„ΠΎΡ€ΠΌΠ΅ ΠΈΠ· Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅Ρ… ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΡ…:

<�опСрация>(<οΏ½ΠΎΠΏΠ΅Ρ€Π°Π½Π΄1>,<οΏ½ΠΎΠΏΠ΅Ρ€Π°Π½Π΄2>,<οΏ½Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚>).

Π’Π΅Ρ‚Ρ€Π°Π΄Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Ρ€Π΅Π΄ΠΊΠΎ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ большС памяти для своСго прСдставлСния, Ρ‡Π΅ΠΌ Ρ‚Ρ€ΠΈΠ°Π΄Ρ‹, Π½Π΅ ΠΎΡ‚Ρ€Π°ΠΆΠ°ΡŽΡ‚ взаимосвязи ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ ΠΈ, ΠΊΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΏΠ»ΠΎΡ…ΠΎ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°ΡŽΡ‚ΡΡ Π² ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ассСмблСра ΠΈ ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹Π΅ ΠΊΠΎΠ΄Ρ‹, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π² Π½Π°Π±ΠΎΡ€Π°Ρ… ΠΊΠΎΠΌΠ°Π½Π΄ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π° соврСмСнных машин Π½Π΅ Π²ΡΡ‚Ρ€Π΅Ρ‡Π°ΡŽΡ‚ΡΡ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с Ρ‚рСмя ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Π°ΠΌΠΈ.

Π’Ρ€ΠΈΠ°Π΄Ρ‹ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ собой запись ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ Π² Ρ„ΠΎΡ€ΠΌΠ΅ ΠΈΠ· Ρ‚Ρ€Π΅Ρ… ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΡ…: <�опСрация>(<οΏ½ΠΎΠΏΠ΅Ρ€Π°Π½Π΄1>,<οΏ½ΠΎΠΏΠ΅Ρ€Π°Π½Π΄2>), ΠΏΡ€ΠΈ этом ΠΎΠ΄ΠΈΠ½ ΠΈΠ»ΠΈ ΠΎΠ±Π° ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Π° ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ссылками Π½Π° Π΄Ρ€ΡƒΠ³ΡƒΡŽ Ρ‚Ρ€ΠΈΠ°Π΄Ρƒ Π² Ρ‚ΠΎΠΌ случаС, Ссли Π² ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Π° Π΄Π°Π½Π½ΠΎΠΉ Ρ‚Ρ€ΠΈΠ°Π΄Ρ‹ выступаСт Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния Π΄Ρ€ΡƒΠ³ΠΎΠΉ Ρ‚Ρ€ΠΈΠ°Π΄Ρ‹. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Ρ‚Ρ€ΠΈΠ°Π΄Ρ‹ ΠΏΡ€ΠΈ записи ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π½ΠΎΠΌΠ΅Ρ€ΡƒΡŽΡ‚ для удобства указания ссылок ΠΎΠ΄Π½ΠΈΡ… Ρ‚Ρ€ΠΈΠ°Π΄ Π½Π° Π΄Ρ€ΡƒΠ³ΠΈΠ΅. НапримСр, Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ A := B*C + D — B*10, записанноС Π² Π²ΠΈΠ΄Π΅ Ρ‚Ρ€ΠΈΠ°Π΄ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Π²ΠΈΠ΄:

1) * (B, C)

2) + (^1, D)

3) * (B, 10)

4) — (^2, ^3)

5) := (A, ^4)

Π—Π΄Π΅ΡΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π΅Π½Ρ‹ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ Π·Π½Π°ΠΊΠΎΠΌ (ΠΏΡ€ΠΈ этом присвоСниС Ρ‚Π°ΠΊΠΆΠ΅ являСтся ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠ΅ΠΉ), Π° Π·Π½Π°ΠΊ ^ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ ссылку ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Π° ΠΎΠ΄Π½ΠΎΠΉ Ρ‚Ρ€ΠΈΠ°Π΄Ρ‹ Π½Π° Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π΄Ρ€ΡƒΠ³ΠΎΠΉ.

ΠšΠΎΠΌΠ°Π½Π΄Ρ‹ ассСмблСра ΡƒΠ΄ΠΎΠ±Π½Ρ‹ Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ ΠΈΡ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΠΈ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π΅ прСдставлСниС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ соотвСтствуСт ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎΠΌΡƒ ΠΊΠΎΠ΄Ρƒ ΠΈ ΡΠ»ΠΎΠΆΠ½Ρ‹Π΅ прСобразования Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ΡΡ. Однако использованиС ΠΊΠΎΠΌΠ°Π½Π΄ ассСмблСра Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… структур для отобраТСния ΠΈΡ… Π²Π·Π°ΠΈΠΌΠΎΡΠ²ΡΠ·ΠΈ. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π΅ прСдставлСниС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ получаСтся зависимым ΠΎΡ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚ΠΈΡ€ΡƒΡŽΡ‰Π΅Π³ΠΎ ΠΊΠΎΠ΄Π°, Π° ΡΡ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ ΠΎΡ€ΠΈΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ компилятора Π½Π° Π΄Ρ€ΡƒΠ³ΠΎΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄ потрСбуСтся ΠΏΠ΅Ρ€Π΅ΡΡ‚Ρ€Π°ΠΈΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ само Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π΅ прСдставлСниС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Ρ‚Π°ΠΊ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π΅Π³ΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π² Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°Ρ… ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ (ΠΏΡ€ΠΈ использовании Ρ‚Ρ€ΠΈΠ°Π΄ ΠΈΠ»ΠΈ Ρ‚Π΅Ρ‚Ρ€Π°Π΄ этого Π½Π΅ Ρ‚рСбуСтся).

Для построСния Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π³ΠΎ прСдставлСния ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° (Π² Π΄Π°Π»ΡŒΠ½Π΅ΠΉΡˆΠ΅ΠΌ — просто ΠΊΠΎΠ΄Π°) ΠΏΠΎ Π΄Π΅Ρ€Π΅Π²Ρƒ Π²Ρ‹Π²ΠΎΠ΄Π° ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ°Ρ рСкурсивная ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π°. Π­Ρ‚Π° ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° ΠΏΡ€Π΅ΠΆΠ΄Π΅ всСго Π΄ΠΎΠ»ΠΆΠ½Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Ρ‚ΠΈΠΏ ΡƒΠ·Π»Π° Π΄Π΅Ρ€Π΅Π²Π° — ΠΎΠ½ ΡΠΎΠΎΡ‚вСтствуСт Ρ‚ΠΈΠΏΡƒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, символ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ находится Π² Π»ΠΈΡΡ‚Π΅ Π΄Π΅Ρ€Π΅Π²Π° для Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ ΡƒΠ·Π»Π°. Π­Ρ‚ΠΎΡ‚ лист являСтся срСдним листом ΡƒΠ·Π»Π° Π΄Π΅Ρ€Π΅Π²Π° для Π±ΠΈΠ½Π°Ρ€Π½Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ ΠΈ ΠΊΡ€Π°ΠΉΠ½ΠΈΠΌ Π»Π΅Π²Ρ‹ΠΌ листом — для ΡƒΠ½Π°Ρ€Π½Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ. ПослС опрСдСлСния Ρ‚ΠΈΠΏΠ° ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° строит ΠΊΠΎΠ΄ для ΡƒΠ·Π»Π° Π΄Π΅Ρ€Π΅Π²Π° Π² ΡΠΎΠΎΡ‚вСтствии с Ρ‚ΠΈΠΏΠΎΠΌ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ. Если всС ΡƒΠ·Π»Ρ‹ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ уровня для Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ ΡƒΠ·Π»Π° Π΅ΡΡ‚ΡŒ Π»ΠΈΡΡ‚ΡŒΡ Π΄Π΅Ρ€Π΅Π²Π°, Ρ‚ΠΎ Π² ΠΊΠΎΠ΄ Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ΡΡ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Ρ‹, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ этим Π»ΠΈΡΡ‚ΡŒΡΠΌ, ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ²ΡˆΠΈΠΉΡΡ ΠΊΠΎΠ΄ становится Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ выполнСния ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹. Π˜Π½Π°Ρ‡Π΅ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° Π΄ΠΎΠ»ΠΆΠ½Π° рСкурсивно Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ сама сСбя для Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ ΠΊΠΎΠ΄Π° Π½ΠΈΠΆΠ΅Π»Π΅ΠΆΠ°Ρ‰ΠΈΡ… ΡƒΠ·Π»ΠΎΠ² Π΄Π΅Ρ€Π΅Π²Π° ΠΈ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π² ΡΠ²ΠΎΠΉ ΠΏΠΎΡ€ΠΎΠΆΠ΄Π΅Π½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄.

ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ для построСния Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π³ΠΎ прСдставлСния ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΠΏΠΎ Π΄Π΅Ρ€Π΅Π²Ρƒ Π²Ρ‹Π²ΠΎΠ΄Π° Π² ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Ρ„ΠΎΡ€ΠΌΡ‹ прСдставлСния ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° для Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅Ρ… случаСв, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… Π²ΠΈΠ΄Π°ΠΌ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ ΡƒΠ·Π»Π° Π΄Π΅Ρ€Π΅Π²Π° Π²Ρ‹Π²ΠΎΠ΄Π°:

ΠΎΠ±Π° Π½ΠΈΠΆΠ΅Π»Π΅ΠΆΠ°Ρ‰ΠΈΡ… ΡƒΠ·Π»Π° Π΄Π΅Ρ€Π΅Π²Π° — Π»ΠΈΡΡ‚ΡŒΡ (Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ символы Π³Ρ€Π°ΠΌΠΌΠ°Ρ‚ΠΈΠΊΠΈ);

Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π»Π΅Π²Ρ‹ΠΉ Π½ΠΈΠΆΠ΅Π»Π΅ΠΆΠ°Ρ‰ΠΈΠΉ ΡƒΠ·Π΅Π» являСтся листом Π΄Π΅Ρ€Π΅Π²Π°;

Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€Π°Π²Ρ‹ΠΉ Π½ΠΈΠΆΠ΅Π»Π΅ΠΆΠ°Ρ‰ΠΈΠΉ ΡƒΠ·Π΅Π» являСтся листом Π΄Π΅Ρ€Π΅Π²Π°:

ΠΎΠ±Π° Π½ΠΈΠΆΠ΅Π»Π΅ΠΆΠ°Ρ‰ΠΈΡ… ΡƒΠ·Π»Π° Π½Π΅ ΡΠ²Π»ΡΡŽΡ‚ся Π»ΠΈΡΡ‚ΡŒΡΠΌΠΈ Π΄Π΅Ρ€Π΅Π²Π°.

ΠœΠ΅Ρ‚ΠΎΠ΄ Ρ‡Π΅Ρ‚Π²Π΅Ρ€ΠΎΠΊ

КаТдая Ρ‡Π΅Ρ‚Π²Π΅Ρ€ΠΊΠ° записываСтся Π² Π²ΠΈΠ΄Π΅:

опСрация, op1, op2, Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚,

Π³Π΄Π΅ опСрация — это выполняСмая ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Ρ‹ΠΌ ΠΊΠΎΠ΄ΠΎΠΌ функция

op1, op2 — ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Ρ‹ этой ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ

НапримСр,

(-a+b)*(c+d)

Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΎΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Ρ‡Π΅Ρ‚Π²Π΅Ρ€ΠΎΠΊ

— a, T1

+ T1, b T2

+ c, d T3

* T2, T3, T4

Из ΡΡ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… Ρ‡Π΅Ρ‚Π²Π΅Ρ€ΠΎΠΊ Π½Π΅Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ ΡΠ³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄.

1.7 ОбоснованиС создания ΡƒΡ‡Π΅Π±Π½ΠΎΠ³ΠΎ комплСкса

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡƒΡ‡Π΅Π±Π½ΠΎΠ³ΠΎ комплСкса обосновано ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π½ΠΎΠΉ области создания компиляторов ΠΈ ΠΎΡ‚сутствиСм ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ³ΠΎ наглядного ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Π°, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π΅Π³ΠΎ поэтапно ΠΎΡ‚ΡΠ»Π΅Π΄ΠΈΡ‚ΡŒ процСссы, происходящиС Π² ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€Π΅ (Ρ€Π°Π±ΠΎΡ‚Π° Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ΠΎΠ², Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Ρ‚Π°Π±Π»ΠΈΡ†).

Из ΠΎΠΏΠΈΡΠ°Π½Π½ΠΎΠ³ΠΎ Π²Ρ‹ΡˆΠ΅ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Π° Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ компиляторы ΠΈΠΌΠ΅ΡŽΡ‚ ΠΎΡ‡Π΅Π½ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² построСния, это опрСдСляСт Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΈ Π²Ρ‹Π±ΠΎΡ€Π΅ ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½ΠΎΠΉ структуры компилятора. ΠŸΡ€ΠΎΡ†Π΅ΡΡ компиляции довольно слоТСн ΠΈ Ρ‚Ρ€ΡƒΠ΄Π΅Π½ для восприятия Π² Ρ†Π΅Π»ΠΎΠΌ. Он ΡΠΎΠ΄Π΅Ρ€ΠΆΠΈΡ‚ Π² ΡΠ΅Π±Π΅ мноТСство понятий, ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΎΠ² ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² Ρ€Π°Π·Π±ΠΎΡ€Π°, Ρ‚Π°Π±Π»ΠΈΡ†, Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½Ρ‹Π΅ Π³Ρ€Π°ΠΌΠΌΠ°Ρ‚ΠΈΠΊΠΈ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ цСлСсообразно Ρ€Π°Π·Π±ΠΈΠ΅Π½ΠΈΠ΅ комплСкса Π½Π° Ρ€ΡΠ΄ Π»Π°Π±ΠΎΡ€Π°Ρ‚ΠΎΡ€Π½Ρ‹Ρ… Ρ€Π°Π±ΠΎΡ‚, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π±ΡƒΠ΄ΡƒΡ‚ описаны практичСскиС ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈΠΊΠΈ изучСния Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… этапов компиляции Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΎΠ±ΡƒΡ‡Π°ΡŽΡ‰ΠΈΡ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ.

1.8 ΠžΠ±Π·ΠΎΡ€ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΎΠΊ

На Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ сущСствуСт мноТСство Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΎΠΊ, связанных с ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ΠΌ компиляторов. Π’ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ это мСтодичСскиС, ΡƒΡ‡Π΅Π±Π½Ρ‹Π΅ пособия ΠΏΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ компиляторов, Π³Π΄Π΅ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°ΡŽΡ‚ΡΡ основныС ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ Π°Π½Π°Π»ΠΈΠ·Π° тСкста ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈ ΡΠΈΠ½Ρ‚Π΅Π·Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°. Π’ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ Π² ΡΡ‚ΠΈΡ… ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Π°Ρ… приводятся ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΊΠ°ΠΊ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ компиляции ΠΏΠΎ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΠΈ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ стСки, Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΏΡ€Π΅Π΄ΡˆΠ΅ΡΡ‚Π²ΠΎΠ²Π°Π½ΠΈΡ ΠΈ Ρ‚. ΠΏ. структуры, Π½Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠ΅ ΠΈΠ»ΠΈ Π·Π°Ρ‚Ρ€ΡƒΠ΄Π½ΡΡŽΡ‰ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΌΠ΅ΠΆΠ΄Ρƒ этапами ΠΊΠ°ΠΊ трСбуСтся Π² ΡƒΡ‡Π΅Π±Π½ΠΎΠΌ комплСксС.

Π Π°Π±ΠΎΡ‚Π° с ΠΌΠ΅Ρ‚одичСским (тСорСтичСским) ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»ΠΎΠΌ ΠΏΠΎΠ΄Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ задания с Π΄Π°Π»ΡŒΠ½Π΅ΠΉΡˆΠ΅ΠΉ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΎΠΉ ΠΏΡ€Π΅ΠΏΠΎΠ΄Π°Π²Π°Ρ‚Π΅Π»Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Π·Π°Ρ‚Ρ€Π°Ρ‡ΠΈΠ²Π°Π΅Ρ‚ Π΅Π³ΠΎ врСмя ΠΈ ΡΠΈΠ»Ρ‹. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Π°Ρ рСализация Π΄Π°Π΅Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ самому ΠΏΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ сСбя Π½Π° ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ²Π΅Π΄Π΅Π½Π½ΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π° ΠΈΠ»ΠΈ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΡΡ‚ΡŒ синтСзированного ΠΊΠΎΠ΄Π°.

Руководство ΠΏΠΎ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡŽ компиляторов ΠšΡ€Π΅Π½ΡˆΠΎΡƒ позволяСт ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ свой компилятор, Π½ΠΎ Π΅Π³ΠΎ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒΡŽ являСтся прямой ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ считанного тСкста Π² Π²Ρ‹Ρ…ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠΎΠ΄, Ρ‡Ρ‚ΠΎ Π½Π΅ Π΄Π°Π΅Ρ‚ наглядности Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π³ΠΎ прСдставлСния компилятора. Π­Ρ‚ΠΎΡ‚ компилятор являСтся ΠΎΠ΄Π½ΠΎΠΏΡ€ΠΎΡ…ΠΎΠ΄Π½Ρ‹ΠΌ, ΠΎΠ½ Π½Π΅ Ρ…Ρ€Π°Π½ΠΈΡ‚ ΠΈ ΡΠΎΠ·Π΄Π°Π΅Ρ‚ Π² ΠΏΠ°ΠΌΡΡ‚ΠΈ Ρ‚Π°Π±Π»ΠΈΡ†, вся ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° описываСтся Π² ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π°Ρ….

Π‘ΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ компиляторы Π½Π΅ Π΄Π°ΡŽΡ‚ наглядноС прСдставлСниС Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΡ… структур, Π° ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΠΌΠ΅ΡŽΡ‚ ΠΎΠ΄ΠΈΠ½ исполняСмый Ρ„Π°ΠΉΠ», Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ тСкста ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Ρ‹ΠΉ ΠΈΠ»ΠΈ исполняСмый Ρ„Π°ΠΉΠ». Π‘Ρ‚Π°Π²ΠΊΠ° ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ дСлаСтся Π»ΠΈΠ±ΠΎ Π½Π° ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ компиляции, Π»ΠΈΠ±ΠΎ Π½Π° ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π°.

ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€Ρ‹ компиляторов Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ своСй массС ΡΠΎΠ·Π΄Π°ΡŽΡ‚ лишь лСксичСскиС Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Ρ‹, оставляя Π΄ΠΎΡ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ ΡΠΈΠ½Ρ‚Π°ΠΊΡΠΈΡ‡Π΅ΡΠΊΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ самому программисту. ΠŸΡ€ΠΈ ΠΎΠ±Π·ΠΎΡ€Π΅ Π½Π΅ Π±Ρ‹Π»ΠΎ Π½Π°ΠΉΠ΄Π΅Π½ΠΎ российских Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΎΠΊ компиляторов компиляторов, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊ ΠΆΠ΅ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°ΠΌΠΈ добавится Π΅Ρ‰Π΅ ΠΎΠ΄Π½Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° — ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° языка.

1.9 ОбоснованиС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° являСтся ΡƒΡ‡Π΅Π±Π½Ρ‹ΠΌ комплСксом, Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰ΠΈΠΌ Π² ΡΠ΅Π±Ρ Π»Π°Π±ΠΎΡ€Π°Ρ‚ΠΎΡ€Π½Ρ‹Π΅ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΠΎ ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΡŽ процСсса компиляции. Π­Ρ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π°Ρ Π±Π΅Π· руководитСля Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ Π²Ρ‹Π΄Π°Π½Π½Ρ‹Π΅ задания (ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π½Ρ‹Π΅ задания). ВСорСтичСский ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π» для провСдСния Π»Π°Π±ΠΎΡ€Π°Ρ‚ΠΎΡ€Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ сформирован Π² ΠΌΠ΅Ρ‚одичСской (ΠΎΠΏΠΈΡΠ°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΉ) части.

ΠžΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒ Π΄Π°Π½Π½ΠΎΠΉ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ спроСктированный компилятор построСн поэтапно (ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½ΠΎ). Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· ΡΡ‚Π°ΠΏΠΎΠ² ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ зафиксирован (сохранСн) Π² Π²ΠΈΠ΄Π΅ Ρ„Π°ΠΉΠ»Π° с ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ структурой. Π­Ρ‚ΠΎ Ρ„Π°ΠΉΠ» с ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹ΠΌ ΠΊΠΎΠ΄ΠΎΠΌ, ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌΡ‹ΠΉ ΠΎΡ‚ ΡΠΊΠ°Π½Π΅Ρ€Π°, Ρ„Π°ΠΉΠ» с Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΠ΅ΠΌΠΎΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ΠΉ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΎΠ² (Ρ…Ρ€Π°Π½ΠΈΡ‚ структуру Π΄Π΅Ρ€Π΅Π²Π°), Ρ„Π°ΠΉΠ» с ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹ΠΌ ΠΊΠΎΠ΄ΠΎΠΌ (Ρ‚Π΅Ρ‚Ρ€Π°Π΄Ρ‹), ассСмблСрный ΠΊΠΎΠ΄. На ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΈΠ· ΡΡ‚Π°ΠΏΠΎΠ² имССтся Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ Ρ„Π°ΠΉΠ»Π° ΠΎΡ‚Ρ‡Π΅Ρ‚Π° со ΡΡ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π°ΠΌΠΈ, с ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ΠΌ ΠΈ ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ ошибок, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ слуТСбной ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΉ.

Π”Π°Π½Π½Ρ‹ΠΉ комплСкс слуТит для ознакомлСния с ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ°ΠΌΠΈ компиляции, получСния практичСских Π½Π°Π²Ρ‹ΠΊΠΎΠ² лСксичСского Π°Π½Π°Π»ΠΈΠ·Π° ΠΈ Π³Ρ€Π°ΠΌΠΌΠ°Ρ‚ичСского Ρ€Π°Π·Π±ΠΎΡ€Π° (синтаксичСский Π°Π½Π°Π»ΠΈΠ·), формирования ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°. КомплСкс построСн Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΠΈ ΠΎΡ…Π²Π°Ρ‚ΠΈΡ‚ΡŒ всС этапы компиляции, наглядно прСдставляя Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹.

ΠŸΡ€ΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ (Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅, ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ) комплСкса ставка дСлалась Π½Π° Π½Π°Π³Π»ΡΠ΄Π½ΠΎΡΡ‚ΡŒ происходящих процСссов ΠΈ Π΄ΠΎΡΡ‚ΡƒΠΏΠ½ΠΎΡΡ‚ΡŒ для понимания ΠΏΡ€Π°Π²ΠΈΠ» формирования ΠΈ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ мноТСства Ρ‚Π°Π±Π»ΠΈΡ†. ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΌ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΎΠΌ Π½Π΅ ΠΏΠΎΠΊΠ°Π·Π°Π½Π° Ρ€Π°Π±ΠΎΡ‚Π° со ΡΡ‚Π΅ΠΊΠΎΠΌ, Ρ‚.ΠΊ. вся рСализация, вСсь Π°Π½Π°Π»ΠΈΠ· происходит Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с Ρ‚Π°Π±Π»ΠΈΡ†Π°ΠΌΠΈ ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ…, ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ составляСт Ρ€Π°Π·Π²Π΅ Ρ‡Ρ‚ΠΎ Π²Ρ…ΠΎΠ΄Π½ΠΎΠΉ тСкст ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈ Π²Ρ‹Ρ…ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠΎΠ΄.

Π£Ρ‡Π΅Π±Π½ΠΎΠ΅ пособиС состоит ΠΈΠ·:

Π²Π²ΠΎΠ΄Π½ΠΎΠΉ части (тСорСтичСскиС свСдСния):

описаниС компиляторов, ΠΈΡ… ΡΡƒΡ‚ΡŒ, Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅;

лСксичСский Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ (сканСр);

синтаксичСский Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€, Π΄Π΅Ρ€Π΅Π²ΠΎ грамматичСского Ρ€Π°Π·Π±ΠΎΡ€Π°;

ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°;

практичСской (Ρ€Π°Π±ΠΎΡ‚Π° с ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°ΠΌΠΈ):

ΠΎΠ±Π·ΠΎΡ€ компиляторов (Паскаль, C, Delphi);

Ρ€Π°Π±ΠΎΡ‚Π° с ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ LexAn;

Ρ€Π°Π±ΠΎΡ‚Π° с ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ SinAn;

Ρ€Π°Π±ΠΎΡ‚Π° с ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ SinAn;

— ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Ρ… Π·Π½Π°Π½ΠΈΠΉ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Ρ‹Ρ… вопросов ΠΈ Π·Π°Π΄Π°Π½ΠΈΠΉ.

Π£Ρ‡Π΅Π±Π½Ρ‹ΠΉ комплСкс слуТит для облСгчСния Ρ€Π°Π±ΠΎΡ‚Ρ‹ прСподаватСля, возмоТности ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ изучСния ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Π°, получСния практичСских Π½Π°Π²Ρ‹ΠΊΠΎΠ² ΠΏΠΎ ΠΈΠ·ΡƒΡ‡Π°Π΅ΠΌΠΎΠΉ дисциплинС, возмоТности Π±ΠΎΠ»Π΅Π΅ наглядного прСдставлСния ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΈ Ρ‚. ΠΏ.

Π£Ρ‡Π΅Π±Π½Ρ‹ΠΉ комплСкс Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² ΡΠ΅Π±Ρ нСсколько взаимосвязанных Π»Π°Π±ΠΎΡ€Π°Ρ‚ΠΎΡ€Π½Ρ‹Ρ… Ρ€Π°Π±ΠΎΡ‚, ΠΎΡ…Π²Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‰ΠΈΡ… всю ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π½ΡƒΡŽ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ ΠΈΠ»ΠΈ ΠΎΡΠ½ΠΎΠ²Π½ΡƒΡŽ Π΅Π΅ Ρ‡Π°ΡΡ‚ΡŒ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅ процСссу компиляции. ΠŸΡ€ΠΈ этом ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π»Π°Π±ΠΎΡ€Π°Ρ‚ΠΎΡ€Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ происходит поэтапноС ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠ΅ ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π½ΠΎΠΉ области.

Π›Π°Π±ΠΎΡ€Π°Ρ‚ΠΎΡ€Π½Ρ‹Π΅ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² ΡΠ΅Π±Ρ:

тСорСтичСскиС свСдСния;

порядок выполнСния Ρ€Π°Π±ΠΎΡ‚Ρ‹;

ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Ρ‹Π΅ вопросы ΠΈ Π·Π°Π΄Π°Π½ΠΈΡ.

ВСорСтичСскиС свСдСния Π΄Π°ΡŽΡ‚ прСдставлСниС ΠΎΠ± ΠΈΠ·ΡƒΡ‡Π°Π΅ΠΌΠΎΠΉ области, ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠ»Π΅Π½ΠΈΠ΅ с Π΅Π΅ ΠΎΡΠ½ΠΎΠ²Π½Ρ‹ΠΌΠΈ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ°ΠΌΠΈ, структурами ΠΈ Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€Π½Ρ‹ΠΌΠΈ особСнностями. ΠŸΡ€ΠΈ этом часто производится Ρ€Π°Π·Π±ΠΎΡ€ ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Π»ΠΈΠ±ΠΎ наглядного ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°.

Для провСдСния Π»Π°Π±ΠΎΡ€Π°Ρ‚ΠΎΡ€Π½Ρ‹Ρ… Ρ€Π°Π±ΠΎΡ‚ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ тСхничСскиС срСдства. Π­Ρ‚ΠΎ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ Ρ€ΠΎΠ΄Π° стСнды, ΠΈΠΌΠΈΡ‚ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠ΅ Ρ€Π°Π±ΠΎΡ‚Ρƒ Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Ρ… устройств, сами устройства, Π²Ρ‹ΡΡ‚ΡƒΠΏΠ°ΡŽΡ‰ΠΈΠ΅ Π² Ρ€ΠΎΠ»ΠΈ исслСдуСмого ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€, с Π½Π°Π±ΠΎΡ€ΠΎΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Ρ… для Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ устройства ΠΈ ΠΎΠ±ΠΎΡ€ΡƒΠ΄ΠΎΠ²Π°Π½ΠΈΠ΅, подходящиС для этой Ρ†Π΅Π»ΠΈ.

ИспользованиС Π² Π»Π°Π±ΠΎΡ€Π°Ρ‚ΠΎΡ€Π½Ρ‹Ρ… Ρ€Π°Π±ΠΎΡ‚Π°Ρ… оборудования позволяСт ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ практичСскиС Π½Π°Π²Ρ‹ΠΊΠΈ, ΠΊΠΎΠ³Π΄Π° студСнт ΠΌΠΎΠΆΠ΅Ρ‚ Π²Π»ΠΈΡΡ‚ΡŒ Π½Π° Ρ€Π°Π±ΠΎΡ‚Ρƒ исслСдуСмого ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, измСняя Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Π²Ρ…ΠΎΠ΄Π½Ρ‹Π΅ ΠΈ ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹. ΠŸΡ€ΠΈ этом учащийся Π»ΡƒΡ‡ΡˆΠ΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅Ρ‚ всю ΠΊΠ°Ρ€Ρ‚ΠΈΠ½Ρƒ происходящСго, исслСдуСмыС процСссы.

Π’ΠΎ Π²Ρ€Π΅ΠΌΡ выполнСния Π»Π°Π±ΠΎΡ€Π°Ρ‚ΠΎΡ€Π½Ρ‹Ρ… Ρ€Π°Π±ΠΎΡ‚ часто приходится ΡΠ½ΠΈΠΌΠ°Ρ‚ΡŒ показания с ΠΏΡ€ΠΈΠ±ΠΎΡ€ΠΎΠ², ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΎΡ‚ Π΄Π°Ρ‚Ρ‡ΠΈΠΊΠΎΠ², ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΈ Ρ‚. ΠΏ., Π·Π°Π½ΠΎΡΠΈΡ‚ΡŒ ΠΈΡ… Π² Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΈ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ. ΠŸΡ€ΠΈ этом производятся расчСты, связанныС с Ρ€Π°Π±ΠΎΡ‚ΠΎΠΉ, оформляСтся ΠΎΡ‚Ρ‡Π΅Ρ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈ ΡΠ΄Π°Π΅Ρ‚ся ΠΏΡ€Π΅ΠΏΠΎΠ΄Π°Π²Π°Ρ‚Π΅Π»ΡŽ Π½Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ.

ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Ρ‹Π΅ вопросы Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΡŽΡ‚ исходя ΠΈΠ· Ρ†Π΅Π»ΠΈ провСдСния Π»Π°Π±ΠΎΡ€Π°Ρ‚ΠΎΡ€Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΈ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ Π΄ΠΎΠ»ΠΆΠ΅Π½ вынСсти ΠΎΠ±ΡƒΡ‡Π°ΡŽΡ‰ΠΈΠΉΡΡ Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Π΅Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ: опрСдСлСния, Ρ‚Π΅Ρ€ΠΌΠΈΠ½Ρ‹, понятия, связанныС с ΠΈΠ·ΡƒΡ‡Π°Π΅ΠΌΡ‹ΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ, ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ Π΅Π³ΠΎ Ρ€Π°Π±ΠΎΡ‚Ρ‹, строСниС.

2 Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡƒΡ‡Π΅Π±Π½ΠΎΠΉ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ

2.1 ΠšΡ€Π°Ρ‚ΠΊΠΎΠ΅ описаниС ΡƒΡ‡Π΅Π±Π½ΠΎΠ³ΠΎ компилятора

Π£Ρ‡Π΅Π±Π½Ρ‹ΠΉ компилятор состоит ΠΈΠ· Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅Ρ… ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ, это:

лСксичСский Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ (сканСр) LEXAN;

синтаксичСский Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ (парсСр) SYNAN;

Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° PROMKOD;

Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ ассСмблСрного ΠΊΠΎΠ΄Π° ASMKOD.

На Π΄Π°Π½Π½ΠΎΠΌ этапС Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ ΠΏΠ΅Ρ€Π²Ρ‹Π΅ Π΄Π²Π°. Π­Ρ‚ΠΈ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ (этапы) Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‚ ΠΌΠ΅ΠΆΠ΄Ρƒ собой с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ².

Π‘Ρ€Π΅Π΄Π° LEXAN Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ Ρ„Π°ΠΉΠ» с Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ΠΌ LEX, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ хранятся Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹, ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Π΅ Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Ρ€Π°Π·Π±ΠΎΡ€Π° тСкста ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹: Ρ‚Π°Π±Π»ΠΈΡ†Π° Π²Ρ‹Π±Ρ€Π°Π½Π½Ρ‹Ρ… Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… символов, Ρ‚Π°Π±Π»ΠΈΡ†Π° символичСских ΠΈΠΌΠ΅Π½, Ρ‚Π°Π±Π»ΠΈΡ†Π° лСксСм ΠΈ Ρ‚Π°Π±Π»ΠΈΡ†Π° Π²Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Ρ… ΠΊΠΎΠ΄ΠΎΠ² лСксСм, которая ΠΈ ΠΏΡ€Π΅Π΄ΡΡ‚авляСт собой ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π² Π²ΠΈΠ΄Π΅ ссылок Π½Π° Ρ‚Ρ€ΠΈ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠ΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹. Π”Π°Π½Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» являСтся Π²Ρ…ΠΎΠ΄Π½Ρ‹ΠΌ Π½Π° ΡΡ‚Π°ΠΏΠ΅ синтаксичСского Π°Π½Π°Π»ΠΈΠ·Π°.

Π‘Ρ€Π΅Π΄Π° SINAN Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ Ρ„Π°ΠΉΠ» с Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ΠΌ SYN, хранящий Π² ΡΠ΅Π±Π΅ Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΠ΅ΠΌΡƒΡŽ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΎΠ², ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΡƒΡŽ собой грамматичСскоС Π΄Π΅Ρ€Π΅Π²ΠΎ Π² Ρ‚Π°Π±Π»ΠΈΡ‡Π½ΠΎΠΌ Π²ΠΈΠ΄Π΅. Π’ ΡΡ‚ΠΎΠΌ ΠΆΠ΅ Ρ„Π°ΠΉΠ»Π΅ хранятся Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π²Ρ‹Π±Ρ€Π°Π½Π½Ρ‹Ρ… Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… символов, символичСских ΠΈΠΌΠ΅Π½ ΠΈ Π»Π΅ΠΊΡΠ΅ΠΌ. Π”Π°Π½Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» являСтся Π²Ρ…ΠΎΠ΄Π½Ρ‹ΠΌ Π½Π° ΡΡ‚Π°ΠΏΠ΅ Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°.

Π‘Ρ€Π΅Π΄Π° PROMKOD Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ Ρ„Π°ΠΉΠ» PRK, хранящий Π² ΡΠ΅Π±Π΅ ΡƒΠΏΡ€ΠΎΡ‰Π΅Π½Π½ΠΎΠ΅ Π΄Π΅Ρ€Π΅Π²ΠΎ грамматичСского Ρ€Π°Π·Π±ΠΎΡ€Π°, прСдставлСнноС Π² Π²ΠΈΠ΄Π΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Ρ‚Ρ€ΠΈΠ°Π΄.

Π‘Ρ€Π΅Π΄Π° ASMKOD Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ Ρ„Π°ΠΉΠ» ASK, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠΉ собой ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π½Π° Π°ΡΡΠ΅ΠΌΠ±Π»Π΅Ρ€Π΅.

Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ ΠΏΡ€ΠΎΠ²Π΅Π΄Π΅Π½Π½ΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π° Π±Ρ‹Π»Π° Π²Ρ‹Π±Ρ€Π°Π½Π° многопроходная схСма просмотра компилятора. На ΠΊΠ°ΠΆΠ΄ΠΎΠΌ этапС (лСксичСский Π°Π½Π°Π»ΠΈΠ·, синтаксичСский Π°Π½Π°Π»ΠΈΠ·, Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°, Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ассСмблСрного ΠΊΠΎΠ΄Π°) происходит Π½ΠΎΠ²Ρ‹ΠΉ просмотр (ΠΏΡ€ΠΎΡ…ΠΎΠ΄) ΠΏΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅, прСдставлСнной Π² Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΎΠΌ Π²ΠΈΠ΄Π΅. На ΠΏΠ΅Ρ€Π²ΠΎΠΌ этапС (сканСр) — Π² Π²ΠΈΠ΄Π΅ тСкста ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π½Π° Π²Ρ‚ΠΎΡ€ΠΎΠΌ (парсСр) — Π² Π²ΠΈΠ΄Π΅ ΠΊΠΎΠ΄ΠΎΠ² лСксСм, Π½Π° Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅ΠΌ — Π΄Π΅Ρ€Π΅Π²ΠΎ грамматичСского Ρ€Π°Π·Π±ΠΎΡ€Π°, Π½Π° Ρ‡Π΅Ρ‚Π²Π΅Ρ€Ρ‚ΠΎΠΌ — Ρ‚Π°Π±Π»ΠΈΡ†Π° ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°. Π­Ρ‚ΠΎ сдСлано для поэтапного обучСния процСссу компиляции ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΠΈ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΌ прСдставлСниСм ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

ВсС Π΄Π°Π½Π½Ρ‹Π΅, ΠΊΡ€ΠΎΠΌΠ΅ Π²Ρ…ΠΎΠ΄Π½ΠΎΠ³ΠΎ тСкста ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΏΠΎΠΌΠ΅Ρ‰Π°ΡŽΡ‚ΡΡ Π² Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹. Π­Ρ‚ΠΎ сдСлано для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ стСк ΠΈ Π²ΡΠ΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ ΠΏΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ мСстС.

ΠŸΡ€ΠΈ Π²Ρ‹Π±ΠΎΡ€Π΅ языка высокого уровня, Π² ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ Π²Ρ…ΠΎΠ΄Π½ΠΎΠ³ΠΎ языка для Π°Π½Π°Π»ΠΈΠ·Π° Π±Ρ‹Π» принят ΡƒΡ‡Π΅Π±Π½Ρ‹ΠΉ язык, основанный Π½Π° ΡƒΠΏΡ€ΠΎΡ‰Π΅Π½Π½ΠΎΠΌ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π΅ языка Паскаль. Π―Π·Ρ‹ΠΊ Паскаль являСтся довольно распространСнным, довольно понятным ΠΈ ΠΏΡ€ΠΎΡΡ‚Ρ‹ΠΌ для восприятия, ΠΊ Ρ‚ΠΎΠΌΡƒ ΠΆΠ΅ Π΅Π³ΠΎ структуры довольно ΡƒΠ΄ΠΎΠ±Π½Ρ‹ для Ρ€Π°Π·Π±ΠΎΡ€Π°. ОписаниС ΡƒΡ‡Π΅Π±Π½ΠΎΠ³ΠΎ языка ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΎ Π½ΠΈΠΆΠ΅.

2.2 ОписаниС ΡƒΡ‡Π΅Π±Π½ΠΎΠ³ΠΎ языка

Π£Ρ‡Π΅Π±Π½Ρ‹ΠΉ язык построСн Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ языка Паскаль.

Алфавит ΡƒΡ‡Π΅Π±Π½ΠΎΠΌ языка Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π±ΡƒΠΊΠ²Ρ‹, Ρ†ΠΈΡ„Ρ€Ρ‹, ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ символы ΠΈ Π·Π°Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ слова.

Π‘ΡƒΠΊΠ²Ρ‹ — это Π±ΡƒΠΊΠ²Ρ‹ латинского Π°Π»Ρ„Π°Π²ΠΈΡ‚Π° ΠΎΡ‚, Π° Π΄ΠΎ я, ΠΎΡ‚, А Π΄ΠΎ Π―, ΠΎΡ‚ a Π΄ΠΎ z ΠΈ ΠΎΡ‚ A Π΄ΠΎ Z. Π’ Π΄Π°Π½Π½ΠΎΠΌ языкС Π½Π΅Ρ‚ различия ΠΌΠ΅ΠΆΠ΄Ρƒ прописными ΠΈ ΡΡ‚Ρ€ΠΎΡ‡Π½Ρ‹ΠΌΠΈ Π±ΡƒΠΊΠ²Π°ΠΌΠΈ Π°Π»Ρ„Π°Π²ΠΈΡ‚Π°, Ссли Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ½ΠΈ Π½Π΅ Π²Ρ…одят Π² ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹Π΅ ΠΈ ΡΡ‚Ρ€ΠΎΠΊΠΎΠ²Ρ‹Π΅ выраТСния.

Π¦ΠΈΡ„Ρ€Ρ‹ — арабскиС Ρ†ΠΈΡ„Ρ€Ρ‹ ΠΎΡ‚ 0 Π΄ΠΎ 9.

Π‘ΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ Π·Π½Π°ΠΊΠΈ ΡƒΡ‡Π΅Π±Π½ΠΎΠ³ΠΎ языка — это символы:

+ - * / =, .:; < > { } [ ] ()

К ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΌ Π·Π½Π°ΠΊΠ°ΠΌ Ρ‚Π°ΠΊΠΆΠ΅ относятся ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΏΠ°Ρ€Ρ‹ символов:

<> <= >= :=

Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ эти символы нСльзя Ρ€Π°Π·Π΄Π΅Π»ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π΅Π»Π°ΠΌΠΈ, Ссли ΠΎΠ½ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ Π·Π½Π°ΠΊΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ.

ОсобоС мСсто Π² Π°Π»Ρ„Π°Π²ΠΈΡ‚Π΅ языка Π·Π°Π½ΠΈΠΌΠ°ΡŽΡ‚ ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹. Π­Ρ‚ΠΈ символы Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°ΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΡ‚Π΅Π»ΠΈ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ², констант, чисСл, Π·Π°Ρ€Π΅Π·Π΅Ρ€Π²ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… слов. НСсколько ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… Π΄Ρ€ΡƒΠ³ Π·Π° Π΄Ρ€ΡƒΠ³ΠΎΠΌ ΠΏΡ€ΠΎΠ±Π΅Π»ΠΎΠ² ΡΡ‡ΠΈΡ‚Π°ΡŽΡ‚ΡΡ ΠΎΠ΄Π½ΠΈΠΌ ΠΏΡ€ΠΎΠ±Π΅Π»ΠΎΠΌ.

Π’ ΡƒΡ‡Π΅Π±Π½ΠΎΠΌ языкС ΠΈΠΌΠ΅ΡŽΡ‚ΡΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Π·Π°Ρ€Π΅Π·Π΅Ρ€Π²ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ слова:

and

begin

div

do

downto

else

end

for

function

if

integer

procedure

program

real

repeat

string

then

to

until

var

while

write

read

Π˜Ρ… ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΏΡ€ΠΈ построСнии компилятора Π² ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠΉ срСдС LEXAN.

Π˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ — ΠΈΠΌΠ΅Π½Π° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ. Π”Π»ΠΈΠ½Π° ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π° 255 символами. Π˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ всСгда начинаСтся Π±ΡƒΠΊΠ²ΠΎΠΉ ΠΈΠ»ΠΈ Π·Π½Π°ΠΊΠΎΠΌ подчСркивания, Π·Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ ΠΌΠΎΠ³ΡƒΡ‚ ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ Π±ΡƒΠΊΠ²Ρ‹, Ρ†ΠΈΡ„Ρ€Ρ‹ ΠΈ Π·Π½Π°ΠΊ подчСркивания. ΠŸΡ€ΠΎΠ±Π΅Π»Ρ‹ ΠΈ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ символы Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π²Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ Π² ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€.

ΠšΠΎΠ½ΡΡ‚Π°Π½Ρ‚Ρ‹.

ΠŸΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ, состоящая ΠΈΠ· ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ Ρ†ΠΈΡ„Ρ€ 0, 1, …, 9, являСтся Ρ†Π΅Π»ΠΎΠΉ (INTEGER) константой. Π”Π°Π½Π½Ρ‹ΠΉ Ρ‚ΠΈΠΏ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ Π² ΠΏΠ°ΠΌΡΡ‚ΠΈ 2 Π±Π°ΠΉΡ‚Π°. ΠŸΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Ρ†ΠΈΡ„Ρ€, Ρ€Π°Π·Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ, являСтся вСщСствСнной (REAL) константой, Π΄Π°Π½Π½Ρ‹ΠΉ Ρ‚ΠΈΠΏ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ Π² ΠΏΠ°ΠΌΡΡ‚ΠΈ 4 Π±Π°ΠΉΡ‚Π°. ΠŸΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π»ΡŽΠ±Ρ‹Ρ… символов (ΠΊΡ€ΠΎΠΌΠ΅ Π·Π½Π°ΠΊΠ° ΠΎΠ΄ΠΈΠ½Π°Ρ€Π½Ρ‹Ρ… ΠΊΠ°Π²Ρ‹Ρ‡Π΅ΠΊ), Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹Ρ… Π² ΠΎΠ΄ΠΈΠ½Π°Ρ€Π½Ρ‹Π΅ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ, являСтся строковой (STRING) константой, Π΄Π»ΠΈΠ½Π° Π΄Π°Π½Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° Π²Π°Ρ€ΡŒΠΈΡ€ΡƒΠ΅Ρ‚ΡΡ ΠΎΡ‚ 1 Π΄ΠΎ 255 Π±Π°ΠΉΡ‚, Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΠΈ ΠΎΡ‚ Ρ‡ΠΈΡΠ»Π° символов Π² ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ.

ВыраТСния.

ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π² Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ слСва Π½Π°ΠΏΡ€Π°Π²ΠΎ; ΠΊΠ°ΠΊ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ, учитываСтся Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ скобок ΠΈ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚Ρ‹ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ². ΠŸΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚Ρ‹ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ 5 (ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Π² ΠΏΠ΅Ρ€Π²ΠΎΠΉ строкС ΠΈΠΌΠ΅Π΅Ρ‚ Π½Π°ΠΈΠ²Ρ‹ΡΡˆΠΈΠΉ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚):

Π’Π°Π±Π»ΠΈΡ†Π° 5 — Π’Π°Π±Π»ΠΈΡ†Π° ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ΠΎΠ²

— (ΡƒΠ½Π°Ρ€Π½Ρ‹ΠΉ)

* / div

+ - (Π±ΠΈΠ½Π°Ρ€Π½Ρ‹ΠΉ)

= <> < > <= >=

ΠšΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ слова, ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹, лСксСмы ΠΎΡ‚Π΄Π΅Π»ΡΡŽΡ‚ΡΡ Π΄Ρ€ΡƒΠ³ ΠΎΡ‚ Π΄Ρ€ΡƒΠ³Π° ΠΏΡ€ΠΎΠ±Π΅Π»Π°ΠΌΠΈ, ΠΎΡ‚ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… символов Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ.

Π’ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ для использования символы:

Π±ΡƒΠΊΠ²Ρ‹: Π°. я, А. Π―, a. z, A. Z;

символ, Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½Π½Ρ‹ΠΉ ΠΏΡ€ΠΈ написании ΠΈΠΌΠ΅Π½: _

элСмСнты раздСлСния:, ;: ΠΏΡ€ΠΎΠ±Π΅Π»

Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΡŒ Ρ†Π΅Π»ΠΎΠΉ ΠΈ Π΄Ρ€ΠΎΠ±Π½ΠΎΠΉ частСй Π² Π²Π΅Ρ‰Π΅ΡΡ‚Π²Π΅Π½Π½Ρ‹Ρ… числах: .

Π²Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠ΅ тСкста: ?

Π·Π½Π°ΠΊΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ²: + - * /

ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ: { }

расстановка ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ΠΎΠ²: ()

Π·Π½Π°ΠΊΠΈ сравнСния: > < = >= <= <>

ΠΏΡ€ΠΈΠ·Π½Π°ΠΊ окончания ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹: .

2.3 ЛСксичСский Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ LEXAN

ЦСль создания ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ LEXAN состоит Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΡƒΡ‡ΠΈΡ‚ΡŒ студСнта ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ΡŒ Ρ€Π°Π·Π±ΠΎΡ€ тСкста ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠ΅ Π΅Π΅ Π»Π΅ΠΊΡΠ΅ΠΌΡ‹ Π² ΡΠΎΠΎΡ‚вСтствии с Π·Π°Π΄Π°Π½Π½ΠΎΠΉ БНЀ, ΠΏΡ€ΠΈ этом ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ Π·Π°ΠΏΠΎΠ»Π½ΠΈΠ² Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π²Ρ‹Π±Ρ€Π°Π½Π½Ρ‹Ρ… Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… символов, символичСских ΠΈΠΌΠ΅Π½, Π»ΠΈΡ‚Π΅Ρ€Π°Π»ΠΎΠ² ΠΈ Π²Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Ρ… ΠΊΠΎΠ΄ΠΎΠ² лСксСм.

Данная срСда позволяСт ΡΡ€Π°Π²Π½ΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅, внСсСнныС студСнтом с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ, ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΌΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ ΠΈ ΡΠ³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ сообщСния ΠΎΠ± ΠΎΡˆΠΈΠ±ΠΊΠ°Ρ…, Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… студСнт Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ внСсти ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ исправлСния.

ΠŸΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ Π΄ΠΈΠΏΠ»ΠΎΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π±Ρ‹Π» ΠΏΡ€ΠΎΠ²Π΅Π΄Π΅Π½ Π°Π½Π°Π»ΠΈΠ· способов построСния лСксичСского Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Π°. Π—Π° ΠΎΡΠ½ΠΎΠ²Ρƒ Π±Ρ‹Π» принят прямой синтаксичСский Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ считываСт лСксСму, Π½Π°Ρ…ΠΎΠ΄ΡΡ‰ΡƒΡŽΡΡ справа ΠΎΡ‚ ΡƒΠΊΠ°Π·Π°Ρ‚Сля ΠΈ Π»ΠΈΡˆΡŒ ΠΏΠΎΡ‚ΠΎΠΌ опрСдСляСт Ρ‚ΠΈΠΏ лСксСмы. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, отчасти ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ нСпрямой Π°Π½Π°Π»ΠΈΠ· ΠΏΡ€ΠΈ ΠΎΡ‚Π΄Π΅Π»Π΅Π½ΠΈΠΈ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… символов ΠΎΡ‚ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ², ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… слов ΠΈ Π»ΠΈΡ‚Π΅Ρ€Π°Π»ΠΎΠ², ΠΊΠΎΠ³Π΄Π° Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΡ€ΠΎΠ±Π΅Π» Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»Π΅Π½.

ЛСксичСский Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ позволяСт Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ со ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌΠΈ Ρ‚Π°Π±Π»ΠΈΡ†Π°ΠΌΠΈ:

Ρ‚Π°Π±Π»ΠΈΡ†Π° Π²Ρ‹Π±Ρ€Π°Π½Π½Ρ‹Ρ… Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… символов (формируСтся ΠΈΠ· Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… символов);

Ρ‚Π°Π±Π»ΠΈΡ†Π° символичСских ΠΈΠΌΠ΅Π½ (ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ²);

Ρ‚Π°Π±Π»ΠΈΡ†Π° Π»ΠΈΡ‚Π΅Ρ€Π°Π»ΠΎΠ² (констант);

Ρ‚Π°Π±Π»ΠΈΡ†Π° Π²Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Ρ… ΠΊΠΎΠ΄ΠΎΠ² лСксСм.

Π”Π°Π»Π΅Π΅ ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ΡΡ структуры Ρ‚Π°Π±Π»ΠΈΡ†.

2.3.1 Π’Π°Π±Π»ΠΈΡ†Π° Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… символов

Π’Π½ΡƒΡ‚Ρ€ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ хранится Ρ‚Π°Π±Π»ΠΈΡ†Π° Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… символов. Она Ρ…Ρ€Π°Π½ΠΈΡ‚ Π² ΡΠ΅Π±Π΅ всС Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ символы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² ΡƒΡ‡Π΅Π±Π½ΠΎΠΌ языкС (ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ слова ΠΈ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ символы). Они ΠΈΠΌΠ΅ΡŽΡ‚ свои названия, описаниС ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠΌΡƒ слову соотвСтствуСт свой ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ происходит идСнтификация элСмСнта Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… стадиях компиляции. На Π΄Π°Π½Π½ΠΎΠΌ этапС происходит Ρ€Π°Π±ΠΎΡ‚Π° с Ρ‚Π°Π±Π»ΠΈΡ†Π΅ΠΉ Π²Ρ‹Π±Ρ€Π°Π½Π½Ρ‹Ρ… Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… символов, ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΏΠΎΠΊΠ°Π·Π°Π½ Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ 6.

Π’Π°Π±Π»ΠΈΡ†Π° 6 — Π’Π°Π±Π»ΠΈΡ†Π° Π²Ρ‹Π±Ρ€Π°Π½Π½Ρ‹Ρ… Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… символов

β„– стр.

Π’Π΅Ρ€ΠΌΠΈΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ символ

ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Код

PROGRAM

ОбъявлСниС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…

Π’Π°Π±Π»ΠΈΡ†Π° Π²Ρ‹Π±Ρ€Π°Π½Π½Ρ‹Ρ… Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… символов содСрТит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ поля:

β„– стр — Π½ΠΎΠΌΠ΅Ρ€ строки Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ Π²Ρ‹Π±Ρ€Π°Π½Π½Ρ‹Ρ… Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… символов;

Π’Π΅Ρ€ΠΌΠΈΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ символ — Π½Π°Π·Π²Π°Π½ΠΈΠ΅ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ символа;

ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ — описаниС Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ символа;

Код — ΠΊΠΎΠ΄ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ символа, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… символов.

Данная Ρ‚Π°Π±Π»ΠΈΡ†Π° формируСтся ΠΈΠ· Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… символов, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ (описана Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ А) ΠΏΡƒΡ‚Π΅ΠΌ Π²Ρ‹Π±ΠΎΡ€Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Ρ… Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… символов Π² ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΌ ΠΎΠΊΠ½Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Она слуТит (Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠ°) для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ, являСтся Π»ΠΈ получСнная лСксСма Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»ΡŒΠ½Ρ‹ΠΌ символом ΠΈΠ»ΠΈ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠΌ, Ρ‚. Π΅. производится сравнСниС со Π²ΡΠ΅ΠΌΠΈ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»ΡŒΠ½Ρ‹ΠΌΠΈ символами Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹. Если лСксСма Π½Π°ΠΉΠ΄Π΅Π½Π° Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅, Ρ‚ΠΎ Π² Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ Π²Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Ρ… ΠΊΠΎΠ΄ΠΎΠ² лСксСм заносится Π½ΠΎΠΌΠ΅Ρ€ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ (Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ № 1) ΠΈ ΠΊΠΎΠ΄ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ символа.

НСкоторыС Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ символы ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ — это ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ слова. ИзмСнСниС Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚ заполнСния Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π²Ρ‹Π±Ρ€Π°Π½Π½Ρ‹Ρ… Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… символов.

2.3.2 Π’Π°Π±Π»ΠΈΡ†Π° символичСских ΠΈΠΌΠ΅Π½

Для хранСния Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ² слуТит Ρ‚Π°Π±Π»ΠΈΡ†Π° символичСских ΠΈΠΌΠ΅Π½, ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ 7.

Π’Π°Π±Π»ΠΈΡ†Π° 7 — Π’Π°Π±Π»ΠΈΡ†Π° символичСских ΠΈΠΌΠ΅Π½

Π‘ΠΏΠ΅Ρ†ΠΈΡ„

Π˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€

Π’ΠΈΠΏ

Π Π°Π·ΠΌΠ΅Ρ€ Π² ΠΏΠ°ΠΌΡΡ‚ΠΈ

ΠžΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ адрСс Π² ΠΏΠ°ΠΌΡΡ‚ΠΈ

Π°

Π’Π°Π±Π»ΠΈΡ†Π° символичСских ΠΈΠΌΠ΅Π½ содСрТит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ поля:

Π‘ΠΏΠ΅Ρ†ΠΈΡ„ — спСцификатор (Π½ΠΎΠΌΠ΅Ρ€ строки) опрСдСляСт ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅;

Π˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ — имя ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π°, Π½Π°ΠΉΠ΄Π΅Π½Π½ΠΎΠ³ΠΎ Π² Ρ‚СкстС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹;

Π’ΠΈΠΏ — Ρ‚ΠΈΠΏ распознанного ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° (заполняСтся Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ LEXAN), ΠΏΠΎΠ»Π΅ остаСтся Π½Π΅ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½Π½Ρ‹ΠΌ;

Π Π°Π·ΠΌΠ΅Ρ€ Π² ΠΏΠ°ΠΌΡΡ‚ΠΈ — Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π°, Π·Π°Π½ΠΈΠΌΠ°Π΅ΠΌΡ‹ΠΉ Π² ΠΏΠ°ΠΌΡΡ‚ΠΈ, опрСдСляСтся Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΠΈ ΠΎΡ‚ Ρ‚ΠΈΠΏΠ° (заполняСтся Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ LEXAN), ΠΏΠΎΠ»Π΅ остаСтся Π½Π΅ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½Π½Ρ‹ΠΌ;

ΠžΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ адрСс Π² ΠΏΠ°ΠΌΡΡ‚ΠΈ — адрСс ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π½Π°Ρ‡Π°Π»Π° объявлСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, формируСтся Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΠΈ ΠΎΡ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° памяти ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΡ… ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ² (заполняСтся Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ LEXAN), ΠΏΠΎΠ»Π΅ остаСтся Π½Π΅ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½Π½Ρ‹ΠΌ.

Π’Π°Π±Π»ΠΈΡ†Π° слуТит для хранСния ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ², Π½Π°ΠΉΠ΄Π΅Π½Π½Ρ‹Ρ… Π² Ρ‚СкстС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. ПослС внСсСния ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° ΠΈΠ»ΠΈ обнаруТСния ΡƒΠΆΠ΅ ΠΈΠΌΠ΅ΡŽΡ‰Π΅Π³ΠΎΡΡ Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅, Π² Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ Π²Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Ρ… ΠΊΠΎΠ΄ΠΎΠ² лСксСм заносится Π½ΠΎΠΌΠ΅Ρ€ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ (№ 2) ΠΈ ΡΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ Π½Π°ΠΉΠ΄Π΅Π½Π½ΠΎΠ³ΠΎ элСмСнта.

2.3.3 Π’Π°Π±Π»ΠΈΡ†Π° Π»ΠΈΡ‚Π΅Ρ€Π°Π»ΠΎΠ²

Для хранСния Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ констант ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Ρ‚Π°Π±Π»ΠΈΡ†Π° Π»ΠΈΡ‚Π΅Ρ€Π°Π»ΠΎΠ², ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π΅Π΅ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΠΎΠΊΠ°Π·Π°Π½ Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ 8.

Π’Π°Π±Π»ΠΈΡ†Π° 8 — Π’Π°Π±Π»ΠΈΡ†Π° Π»ΠΈΡ‚Π΅Ρ€Π°Π»ΠΎΠ²

Π‘ΠΏΠ΅Ρ†ΠΈΡ„

Π›ΠΈΡ‚Π΅Ρ€Π°Π»

Π’ΠΈΠΏ

Π Π°Π·ΠΌΠ΅Ρ€ Π² ΠΏΠ°ΠΌΡΡ‚ΠΈ

INTEGER

Π’Π°Π±Π»ΠΈΡ†Π° содСрТит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ поля:

Π‘ΠΏΠ΅Ρ†ΠΈΡ„ — спСцификатор, опрСдСляСт ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅;

Π›ΠΈΡ‚Π΅Ρ€Π°Π» — Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π»ΠΈΡ‚Π΅Ρ€Π°Π»Π°, Π½Π°ΠΉΠ΄Π΅Π½Π½ΠΎΠ³ΠΎ Π² Ρ‚СкстС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹;

Π’ΠΈΠΏ — Ρ‚ΠΈΠΏ распознанного Π»ΠΈΡ‚Π΅Ρ€Π°Π»Π°;

Π Π°Π·ΠΌΠ΅Ρ€ Π² ΠΏΠ°ΠΌΡΡ‚ΠΈ — Ρ€Π°Π·ΠΌΠ΅Ρ€ Π»ΠΈΡ‚Π΅Ρ€Π°Π»Π°, Π·Π°Π½ΠΈΠΌΠ°Π΅ΠΌΡ‹ΠΉ Π² ΠΏΠ°ΠΌΡΡ‚ΠΈ, опрСдСляСтся Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΠΈ ΠΎΡ‚ Ρ‚ΠΈΠΏΠ°;

ΠžΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ адрСс Π² ΠΏΠ°ΠΌΡΡ‚ΠΈ — адрСс ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π½Π°Ρ‡Π°Π»Π° объявлСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, формируСтся Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΠΈ ΠΎΡ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° памяти Π·Π°Π½ΠΈΠΌΠ°Π΅ΠΌΠΎΠΉ Π»ΠΈΡ‚Π΅Ρ€Π°Π»Π°ΠΌΠΈ ΠΈ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π°ΠΌΠΈ.

ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ вСсь тСкст
Π—Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ„ΠΎΡ€ΠΌΡƒ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Ρ€Π°Π±ΠΎΡ‚ΠΎΠΉ