Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«Π”Π°Π²Π°ΠΉΡ‚Π΅ создадим компилятор!Β». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 59

Автор Π”ΠΆΠ΅ΠΊ ΠšΡ€Π΅Π½ΡˆΠΎΡƒ

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ этот ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ, Π² Π“Π»Π°Π²Π΅ 15 я намСрСвался ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π°ΡˆΡƒ Ρ‚Π΅Π½Π΄Π΅Π½Ρ†ΠΈΡŽ Π·Π°Π½ΠΎΠ²ΠΎ ΠΈΠ·ΠΎΠ±Ρ€Π΅Ρ‚Π°Ρ‚ΡŒ колСсо, организуя наш ΠΊΠΎΠ΄ Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ Turbo Pascal, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… содСрТит Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ части компилятора. ΠœΡ‹ Π·Π°Π²Π΅Ρ€ΡˆΠΈΠ»ΠΈ со ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌΠΈ модулями:

Input

Output

Errors

Scanner

Parser

CodeGen

ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· этих ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ обслуТиваСт Ρ€Π°Π·Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ ΠΈΠ·ΠΎΠ»ΠΈΡ€ΡƒΠ΅Ρ‚ спСцифичСскиС области Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… возмоТностСй. ΠœΠΎΠ΄ΡƒΠ»ΠΈ Input ΠΈ Output, ΠΊΠ°ΠΊ ΠΏΠΎΠ΄Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°ΡŽΡ‚ ΠΈΡ… ΠΈΠΌΠ΅Π½Π°, ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‚ Π²Π²ΠΎΠ΄/Π²Ρ‹Π²ΠΎΠ΄ символьного ΠΏΠΎΡ‚ΠΎΠΊΠ° ΠΈ ваТнСйший ΠΏΡ€Π΅Π΄ΡΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ символ, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ основан наш ΠΏΡ€Π΅Π΄ΡΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ синтаксичСский Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€. ΠœΠΎΠ΄ΡƒΠ»ΡŒ Errors ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ обСспСчиваСт ΡΡ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½ΡƒΡŽ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ ошибок. ΠœΠΎΠ΄ΡƒΠ»ΡŒ Scanner содСрТит всС наши Π±ΡƒΠ»Π΅Π²Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Ρ‚ΠΈΠΏΠ° IsAlpha ΠΈ ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ GetName ΠΈ GetNumber, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ ΠΌΠ½ΠΎΠ³ΠΎΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹Π΅ Ρ‚ΠΎΠΊΠ΅Π½Ρ‹.

Π”Π²Π° модуля, с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ Π² основном Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΈ Ρ‚Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ большС всСго ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ ΠΈΠ½Π΄ΠΈΠ²ΠΈΠ΄ΡƒΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ нашСго компилятора – это Parser ΠΈ CodeGen. ВСорСтичСски ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Parser Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΠ·ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ всС аспСкты компилятора, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ зависят ΠΎΡ‚ синтаксиса ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠ³ΠΎ языка (хотя, ΠΊΠ°ΠΊ ΠΌΡ‹ Π²ΠΈΠ΄Π΅Π»ΠΈ послСдний Ρ€Π°Π·, нСбольшоС количСство этого синтаксиса ΠΏΠ΅Ρ€Π΅Ρ‚Π΅ΠΊΠ°Π΅Ρ‚ Π² Scanner). Аналогично, ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π° ΠΊΠΎΠ΄Π°, CodeGen, содСрТит вСсь ΠΊΠΎΠ΄, зависящий ΠΎΡ‚ Ρ†Π΅Π»Π΅Π²ΠΎΠΉ ΠΌΠ°ΡˆΠΈΠ½Ρ‹. Π’ этой Π³Π»Π°Π²Π΅ ΠΌΡ‹ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΠΌ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π² этих Π΄Π²ΡƒΡ… Π²Π°ΠΆΠ½Π΅ΠΉΡˆΠΈΡ… модулях.

БовсСм ΠΊΠ°ΠΊ классичСский?

ΠŸΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΠΌΡ‹ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΠΌ, ΠΎΠ΄Π½Π°ΠΊΠΎ, я Π΄ΡƒΠΌΠ°ΡŽ Ρ‡Ρ‚ΠΎ Π΄ΠΎΠ»ΠΆΠ΅Π½ Ρ€Π°Π·ΡŠΡΡΠ½ΠΈΡ‚ΡŒ связи ΠΌΠ΅ΠΆΠ΄Ρƒ модулями ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ возмоТности этих ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ. Π’Π΅ ΠΈΠ· вас, ΠΊΡ‚ΠΎ Π·Π½Π°ΠΊΠΎΠΌ с Ρ‚Π΅ΠΎΡ€ΠΈΠ΅ΠΉ компиляции ΠΊΠ°ΠΊ ΠΎΠ±ΡƒΡ‡Π°Π²ΡˆΠΈΠ΅ΡΡ Π² унивСрситСтах, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ Ρ€Π°ΡΠΏΠΎΠ·Π½Π°ΡŽΡ‚ ΠΈΠΌΠ΅Π½Π° Scanner, Parser ΠΈ CodeGen, всС ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌΠΈ классичСской Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ компилятора. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄ΡƒΠΌΠ°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ я отказался ΠΎΡ‚ своих ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΡΡ‚Π² ΠΏΠΎ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡŽ ΠΊ философии KISS ΠΈ ΠΎΡ‚Π΄Ρ€Π΅ΠΉΡ„ΠΎΠ²Π°Π» ΠΊ Π±ΠΎΠ»Π΅Π΅ стандартной Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π΅ Ρ‡Π΅ΠΌ ΠΌΡ‹ ΠΈΠΌΠ΅Π»ΠΈ. Π‘ΠΎΠ»Π΅Π΅ ΠΏΡ€ΠΈΡΡ‚Π°Π»ΡŒΠ½Ρ‹ΠΉ взгляд, ΠΎΠ΄Π½Π°ΠΊΠΎ, Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒ вас, Ρ‡Ρ‚ΠΎ хотя ΠΈΠΌΠ΅Π½Π° схоТи, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ Ρ€Π°Π·Π»ΠΈΡ‡Π½Π°.

ВмСстС, сканСр ΠΈ парсСр классичСской Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΉ Β«front endΒ», Π° Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΊΠΎΠ΄Π° Β«back endΒ». ΠŸΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Β«front endΒ» ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ языкозависимыС, связанныС с синтаксисом аспСкты исходного языка, Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΊΠΎΠ΄Π°, ΠΈΠ»ΠΈ Β«back endΒ», Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с зависимыми ΠΎΡ‚ Ρ†Π΅Π»Π΅Π²ΠΎΠΉ ΠΌΠ°ΡˆΠΈΠ½Ρ‹ частями ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹. Π’ классичСских компиляторах Π΄Π²Π° ΠΊΠΎΠ½Ρ†Π° (ends) ΡΠΎΠΎΠ±Ρ‰Π°ΡŽΡ‚ΡΡ Ρ‡Π΅Ρ€Π΅Π· Ρ„Π°ΠΉΠ» инструкций, написанный Π½Π° ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½ΠΎΠΌ языкС (IL).

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

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

Аналогично, классичСский Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΊΠΎΠ΄Π°, Β«back endΒ», Π² своСм Ρ€ΠΎΠ΄Π΅ Ρ‚ΠΎΠΆΠ΅ транслятор, ΡΡ‡ΠΈΡ‚Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ «исходный» IL Ρ„Π°ΠΉΠ» ΠΈ Π²Ρ‹Π΄Π°ΡŽΡ‰ΠΈΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ». Наш Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΊΠΎΠ΄Π° Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ‚Π°ΠΊΠΈΠΌ способом. Π’ нашСм компиляторС Π½Π΅Ρ‚ Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½ΠΎΠ³ΠΎ языка; каТдая конструкция Π² синтаксисС исходного языка прСобразуСтся Π² ассСмблСр ΠΊΠ°ΠΊ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ½Π° распознана синтаксичСским Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ΠΎΠΌ. Подобно Scanner, ΠΌΠΎΠ΄ΡƒΠ»ΡŒ CodeGen состоит ΠΈΠ· ΠΈΠ½Π΄ΠΈΠ²ΠΈΠ΄ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ синтаксичСским Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ΠΎΠΌ ΠΊΠΎΠ³Π΄Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ.

Ѐилософия Β«ΠΊΠΎΠ΄ΠΈΡ€ΡƒΠΉ ΠΊΠ°ΠΊ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ найдСшь» Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ΡŒ самый эффСктивный ΠΊΠΎΠ΄ Π² ΠΌΠΈΡ€Π΅ – Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΌΡ‹ Π½Π΅ обСспСчили (ΠΏΠΎΠΊΠ°!) ΡƒΠ΄ΠΎΠ±Π½ΠΎΠ΅ мСсто для ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ‚ΠΎΡ€Π° – Π½ΠΎ ΠΎΠ½Π° нСсомнСнно ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ компилятор, Π½Π΅ ΠΏΡ€Π°Π²Π΄Π° Π»ΠΈ?

И этот наблюдСниС заставляСт мСня ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΠΈΡ‚ΡŒ снова Ρ‚ΠΎ, ΠΊΠ°ΠΊ Π½Π°ΠΌ ΡƒΠ΄Π°Π²Π°Π»ΠΎΡΡŒ ΡΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ компилятора ΠΊ Ρ‚Π°ΠΊΠΈΠΌ ΡΡ€Π°Π²Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ простым условиям. Π― набрался краснорСчивости Π½Π° эту Ρ‚Π΅ΠΌΡƒ Π² ΠΏΡ€ΠΎΡˆΠ»Ρ‹Ρ… Π³Π»Π°Π²Π°Ρ…, поэтому здСсь я Π½Π΅ Π±ΡƒΠ΄Ρƒ слишком Π΅Π΅ Ρ‚Ρ€ΠΎΠ³Π°Ρ‚ΡŒ. Однако, ΠΈΠ·-Π·Π° Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, ΠΏΡ€ΠΎΡˆΠ΅Π΄ΡˆΠ΅Π³ΠΎ с этих послСдних ΠΌΠΎΠ½ΠΎΠ»ΠΎΠ³ΠΎΠ², я надСюсь Ρ‡Ρ‚ΠΎ Π²Ρ‹ прСдоставитС ΠΌΠ½Π΅ совсСм Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π½Π°ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ сСбС, Ρ‚Π°ΠΊ ΠΆΠ΅ ΠΊΠ°ΠΊ ΠΈ Π²Π°ΠΌ, ΠΊΠ°ΠΊ ΠΌΡ‹ ΠΏΠΎΠΏΠ°Π»ΠΈ сюда. ΠœΡ‹ дошли Π΄ΠΎ этого примСняя нСсколько ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ создатСли коммСрчСских компилятором Ρ€Π΅Π΄ΠΊΠΎ ΠΈΠΌΠ΅ΡŽΡ‚ Ρ€ΠΎΡΠΊΠΎΡˆΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ. Π’ΠΎΡ‚ ΠΎΠ½ΠΈ:

β€’ Ѐилософия KISS – Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π΄Π΅Π»Π°ΠΉ слоТныС Π²Π΅Ρ‰ΠΈ Π±Π΅Π· ΠΏΡ€ΠΈΡ‡ΠΈΠ½Ρ‹.

β€’ Π›Π΅Π½ΠΈΠ²ΠΎΠ΅ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ – Никогда Π½Π΅ ΠΎΡ‚ΠΊΠ»Π°Π΄Ρ‹Π²Π°ΠΉ Π½Π° Π·Π°Π²Ρ‚Ρ€Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ моТСшь ΠΎΡ‚Π»ΠΎΠΆΠΈΡ‚ΡŒ навсСгда. (П. Π”ΠΆ. ΠŸΠ»ΠΎΠ΄ΠΆΠ΅Ρ€).

β€’ Π‘ΠΊΠ΅ΠΏΡ‚ΠΈΡ†ΠΈΠ·ΠΌ – ΡƒΠΏΡ€Π°ΠΌΠΎ ΠΎΡ‚ΠΊΠ°Π·Ρ‹Π²Π°ΠΉΡ‚Π΅ΡΡŒ Π΄Π΅Π»Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ-Π»ΠΈΠ±ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ это всСгда дСлалось Ρ‚Π°ΠΊΠΈΠΌ способом.

β€’ ΠŸΡ€ΠΈΠ½ΡΡ‚ΠΈΠ΅ нСэффСктивного ΠΊΠΎΠ΄Π°.

β€’ ΠžΡ‚ΠΊΠ»ΠΎΠ½Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹Ρ… ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ.

Когда я сдСлал ΠΎΠ±Π·ΠΎΡ€ истории конструирования компиляторов, я ΡƒΠ·Π½Π°Π», Ρ‡Ρ‚ΠΎ практичСски ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΏΡ€ΠΎΠΌΡ‹ΡˆΠ»Π΅Π½Π½Ρ‹ΠΉ компилятор Π² истории страдал ΠΈΠ·-Π·Π° ΠΏΡ€Π΅Π΄Π½Π°Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… условий, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ сильно влияли Π½Π° Π΅Π³ΠΎ Π΄ΠΈΠ·Π°ΠΉΠ½. ΠŸΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹ΠΉ компилятор Fortran Π”ΠΆΠΎΠ½Π° Бэкуса Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Π» ΠΊΠΎΠ½ΠΊΡƒΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ с ассСмблСром ΠΈ ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π±Ρ‹Π» Π²Ρ‹Π½ΡƒΠΆΠ΄Π΅Π½ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ΡŒ Ρ‡Ρ€Π΅Π·Π²Ρ‹Ρ‡Π°ΠΉΠ½ΠΎ эффСктивный ΠΊΠΎΠ΄. ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€Ρ‹ IBM для ΠΌΠΈΠ½ΠΈ Π­Π’Πœ 70-Ρ… Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Π»ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ Π² ΠΎΡ‡Π΅Π½ΡŒ Π½Π΅Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΎΠ±ΡŠΠ΅ΠΌΠ°Ρ… ΠžΠ—Π£ Ρ‚ΠΎΠ³Π΄Π° доступных – Ρ‚Π°ΠΊΠΈΡ… Π½Π΅Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΊΠ°ΠΊ 4k. Π Π°Π½Π½ΠΈΠ΅ компиляторы Ada Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Π»ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ сСбя. Π‘Ρ€ΠΈΠ½Ρ‡ Π₯ансСн Ρ€Π΅ΡˆΠΈΠ», Ρ‡Ρ‚ΠΎ Π΅Π³ΠΎ компилятор Паскаля, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹ΠΉ для IBM PC Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ Π½Π° 64k ΠΌΠ°ΡˆΠΈΠ½Π°Ρ…. ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€Ρ‹, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹Π΅ Π½Π° курсах Computer Science Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Π»ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΡˆΠΈΡ€ΠΎΠΊΠΈΠΉ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ языков ΠΈ ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π»ΠΈ LALR синтаксичСских Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ΠΎΠ².

Π’ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΈΠ· этих случаСв эти прСдвзятыС ограничСния Π±ΡƒΠΊΠ²Π°Π»ΡŒΠ½ΠΎ Π΄ΠΎΠΌΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Π»ΠΈ Π½Π°Π΄ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠΌ компилятора.

Π₯ΠΎΡ€ΠΎΡˆΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ – компилятор Π‘Ρ€ΠΈΠ½Ρ‡ Π₯ансСна, описанный Π² Π΅Π³ΠΎ прСвосходной ΠΊΠ½ΠΈΠ³Π΅ Β«Brinch Hansen on Pascal CompilersΒ» (строго Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽ). Π₯отя Π΅Π³ΠΎ компилятор ΠΎΠ΄ΠΈΠ½ ΠΈΠ· самых ясных ΠΈ Π½Π΅Π·Π°Ρ‚Π΅ΠΌΠ½Π΅Π½Π½Ρ‹Ρ… Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΉ компилятора, Ρ‡Ρ‚ΠΎ я Π²ΠΈΠ΄Π΅Π», ΠΎΠ΄Π½ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ большиС Ρ„Π°ΠΉΠ»Ρ‹ Π² нСбольшом ΠžΠ—Π£, ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ управляло Π΄ΠΈΠ·Π°ΠΉΠ½ΠΎΠΌ ΠΈ ΠΎΠ½ Π·Π°ΠΊΠΎΠ½Ρ‡ΠΈΠ» Π½Π΅ Π½Π° ΠΎΠ΄Π½ΠΎΠΌ Π° ΠΌΠ½ΠΎΠ³ΠΈΡ… ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»Π°Ρ…, ΠΊΠ°ΠΊ ΠΈ ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΠΌΠΈ ΠΈΠΌΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ… для ΠΈΡ… записи ΠΈ считывания.

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

Π’ этой ΠΎΠ±ΡƒΡ‡Π°ΡŽΡ‰Π΅ΠΉ сСрии ΠΌΡ‹ слСдовали ΠΏΠΎ шагам Ρ‚Π°ΠΊΠΈΡ… ΠΏΠΈΠΎΠ½Π΅Ρ€ΠΎΠ² Π² ΠΌΠΈΡ€Π΅ ΠΌΠ°Π»Π΅Π½ΡŒΠΊΠΈΡ… компиляторов для PC ΠΊΠ°ΠΊ Π›Π΅ΠΎΡ€ Π—ΠΎΠ»ΠΌΠ°Π½, Π ΠΎΠ½ Каин ΠΈ ДТСймс Π₯Π΅Π½Π΄Ρ€ΠΈΡ…, Ρ‚Π΅Ρ… ΠΊΡ‚ΠΎ Π½Π΅ Π·Π½Π°Π» достаточно Ρ‚Π΅ΠΎΡ€ΠΈΡŽ компиляции Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π½Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ Β«Π½Π΅ ΠΌΠΎΠ³Π»ΠΈ Π΄Π΅Π»Π°Ρ‚ΡŒ это Ρ‚Π°ΠΊΠΈΠΌ способом». ΠœΡ‹ Ρ€Π΅ΡˆΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΡ‚ΠΊΠ°Π·Π°Π»ΠΈΡΡŒ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹Π΅ ограничСния, Π° скорСС Π΄Π΅Π»Π°Π»ΠΈ Ρ‚Π°ΠΊ, ΠΊΠ°ΠΊ Π±Ρ‹Π»ΠΎ ΠΏΡ€ΠΎΡ‰Π΅ Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ ΠΌΡ‹ Ρ€Π°Π·Π²ΠΈΠ»ΠΈ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ, которая, хотя ΠΈ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ ΠΎΡ‚Π»ΠΈΡ‡Π½Π° ΠΎΡ‚ классичСской, Π΄Π΅Π»Π°Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρƒ простым ΠΈ прямым способом.

Π― Π·Π°ΠΊΠΎΠ½Ρ‡Ρƒ эти философствования ΠΎΠ±Π·ΠΎΡ€ΠΎΠΌ понятия ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½ΠΎΠ³ΠΎ языка. Π₯отя я ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΠ» ΠΏΠ΅Ρ€Π΅Π΄ этим, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Π½Π΅ ΠΈΠΌΠ΅Π΅ΠΌ Π΅Π³ΠΎ Π² нашСм компиляторС, это Π½Π΅ совсСм Ρ‚ΠΎΡ‡Π½ΠΎ; Ρƒ Π½Π°Ρ ΠΎΠ½ Π΅ΡΡ‚ΡŒ, ΠΈΠ»ΠΈ ΠΏΠΎ ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ Ρ€Π°Π·Π²ΠΈΠ²Π°Π΅ΠΌ Π΅Π³ΠΎ, Π² Ρ‚ΠΎΠΌ смыслС, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ опрСдСляСм Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ ΠΊΠΎΠ΄Π° для Π²Ρ‹Π·ΠΎΠ²Π° ΠΈΠ· парсСра. Π’ сущности, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Π²Ρ‹Π·ΠΎΠ² ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ ΠΊΠΎΠ΄Π° ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ Π½Π° ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½ΠΎΠΌ языкС. Если ΠΌΡ‹ ΠΊΠΎΠ³Π΄Π° Π»ΠΈΠ±ΠΎ Π½Π°ΠΉΠ΄Π΅ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ΠΌ Ρ„ΠΎΡ€ΠΌΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹ΠΉ язык, Π²ΠΎΡ‚ способ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Π±Ρ‹ ΠΌΡ‹ сдСлали это: Π²Ρ‹Π΄Π°Ρ‚ΡŒ ΠΊΠΎΠ΄Π° ΠΈΠ· синтаксичСского Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Π°, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠ΅ собой Π²Ρ‹Π·ΠΎΠ²Ρ‹ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π° ΠΊΠΎΠ΄Π°, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΊΠΎΠ΄ вызывая эти ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΌ ΠΏΡ€ΠΎΡ…ΠΎΠ΄Π΅, Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠΌ Π² Β«back endΒ». ΠžΡ‚ΠΊΡ€ΠΎΠ²Π΅Π½Π½ΠΎ говоря, я Π½Π΅ Π²ΠΈΠΆΡƒ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΠΊΠΎΠ³Π΄Π° Π»ΠΈΠ±ΠΎ Π½Π°ΠΉΠ΄Π΅ΠΌ ΠΏΠΎΡ‚Ρ€Π΅Π±Π½ΠΎΡΡ‚ΡŒ Π² Ρ‚Π°ΠΊΠΎΠΌ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π΅, Π½ΠΎ это связь, Ссли Π²Ρ‹ Ρ€Π΅ΡˆΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ Π΅ΠΌΡƒ, ΠΌΠ΅ΠΆΠ΄Ρƒ классичСским ΠΈ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΌ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π°ΠΌΠΈ.

Π Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ синтаксичСского Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Π°

Π₯отя я ΠΎΠ±Π΅Ρ‰Π°Π» Π²Π°ΠΌ Π³Π΄Π΅-Ρ‚ΠΎ Π² Π“Π»Π°Π²Π΅ 14, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Π½ΠΈΠΊΠΎΠ³Π΄Π° снова Π½Π΅ Π±ΡƒΠ΄Π΅ΠΌ ΠΏΠ΅Ρ€Π΅ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ ΠΊΠ°ΠΆΠ΄ΡƒΡŽ ΠΎΠ΄ΠΈΠ½ΠΎΡ‡Π½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π·Π°Π½ΠΎΠ²ΠΎ, я Π½Π°Ρ‡Π°Π» Π΄Π΅Π»Π°Ρ‚ΡŒ это с Π“Π»Π°Π²Ρ‹ 15. ЕдинствСнная ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°: эта длинная ΠΏΠ°ΡƒΠ· ΠΌΠ΅ΠΆΠ΄Ρƒ двумя Π³Π»Π°Π²Π°ΠΌΠΈ Π΄Π΅Π»Π°Π»Π° ΠΎΠ±Π·ΠΎΡ€ каТущимся Ρ‡Ρ€Π΅Π·Π²Ρ‹Ρ‡Π°ΠΉΠ½ΠΎ ΠΎΠΏΡ€Π°Π²Π΄Π°Π½Π½Ρ‹ΠΌ... Π΄Π°ΠΆΠ΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ΠΌ ΠΈ для вас ΠΈ для мСня. Π‘ΠΎΠ»Π΅Π΅ Π²Π°ΠΆΠ½ΠΎ, Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ Π² ΠΌΠΎΠ΄ΡƒΠ»ΠΈ заставило нас Π²Π·Π³Π»ΡΠ½ΡƒΡ‚ΡŒ Π½Π° ΠΊΠ°ΠΆΠ΄ΡƒΡŽ ΠΈΠ· Π½ΠΈΡ… снова, Ρ…ΠΎΡ‚Π΅Π»ΠΈ ΠΌΡ‹ этого ΠΈΠ»ΠΈ Π½Π΅Ρ‚. И, Π½Π°ΠΊΠΎΠ½Π΅Ρ†, ΠΎΡ‚ΠΊΡ€ΠΎΠ²Π΅Π½Π½ΠΎ говоря, Π·Π° послСдниС Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ Π³ΠΎΠ΄Π° Ρƒ мСня появились Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½ΠΎΠ²Ρ‹Π΅ ΠΈΠ΄Π΅ΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π»ΠΈ свСТий взгляд Π½Π° Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ старыС Π²Π΅Ρ‰ΠΈ. Когда я спСрва Π½Π°Ρ‡Π°Π» эту ΡΠ΅Ρ€ΠΈΡŽ я Π±Ρ‹Π» искрСннС ΠΏΠΎΡ€Π°ΠΆΠ΅Π½ ΠΈ ΠΎΠ±Ρ€Π°Π΄ΠΎΠ²Π°Π½, ΡƒΠ·Π½Π°Π² насколько простыми ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ сдСланы ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π°Π½Π°Π»ΠΈΠ·Π°. Но Π² этот послСдний Ρ€Π°Π· я ΡƒΠ΄ΠΈΠ²ΠΈΠ» сам сСбя снова ΠΈ Π±Ρ‹Π» способСн Π΄Π΅Π»Π°Ρ‚ΡŒ ΠΈΡ… Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅, Π½ΠΎ Π΄Π°ΠΆΠ΅ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΡ‰Π΅.