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

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

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

ЕдинствСнная ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°, Π½Π° самом Π΄Π΅Π»Π΅, ΠΈΠΌΠ΅Π΅Ρ‚ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ ΠΊ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹ΠΌ словам. Π­Ρ‚ΠΎ Ρ„Π°ΠΊΡ‚ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½ΠΎΠΉ ΠΆΠΈΠ·Π½ΠΈ, Ρ‡Ρ‚ΠΎ синтаксис ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ³ΠΎ слова ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚Ρƒ ΠΆΠ΅ ΡΠ°ΠΌΡƒΡŽ Ρ„ΠΎΡ€ΠΌΡƒ, Ρ‡Ρ‚ΠΎ ΠΈ синтаксис любого Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π°. ΠœΡ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΏΠΎΠΊΠ° Π½Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ ΠΏΠΎΠ»Π½ΠΎΠ΅ слово Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π»ΠΈ это ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово. К ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ пСрСмСнная IFILE ΠΈ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово IF выглядят просто ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΌΠΈ Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° Π²Ρ‹ Π½Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ Ρ‚Ρ€Π΅Ρ‚ΠΈΠΉ символ. Π’ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ… Π΄ΠΎ настоящСго Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΌΡ‹ Π±Ρ‹Π»ΠΈ всСгда способны ΠΏΡ€ΠΈΠ½ΡΡ‚ΡŒ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅, основанноС Π½Π° ΠΏΠ΅Ρ€Π²ΠΎΠΌ символС Ρ‚ΠΎΠΊΠ΅Π½Π°, Π½ΠΎ это большС Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΊΠΎΠ³Π΄Π° ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‚ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ слова. Нам Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π·Π½Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ данная строка являСтся ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹ΠΌ словом Π΄ΠΎ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΌΡ‹ Π½Π°Ρ‡Π½Π΅ΠΌ Π΅Π΅ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ. И ΠΈΠΌΠ΅Π½Π½ΠΎ поэтому Π½Π°ΠΌ Π½ΡƒΠΆΠ΅Π½ сканСр.

На послСднСм ΡƒΡ€ΠΎΠΊΠ΅ я Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠΎΠ±Π΅Ρ‰Π°Π», Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ‹ ΠΏΡ€Π΅Π΄ΡƒΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½Ρ‹Π΅ Ρ‚ΠΎΠΊΠ΅Π½Ρ‹ Π±Π΅Π· Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΡƒΠΆΠ΅ сдСлали. Π― Π½Π΅ солгал... ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ, ΠΊΠ°ΠΊ Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅ ΠΏΠΎΠ·Π΄Π½Π΅Π΅. Но ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° я намСрСвался Π²ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ эти элСмСнты Π² синтаксичСский Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΡ‹ ΡƒΠΆΠ΅ построили, Ρƒ мСня Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π»ΠΈ ΠΏΠ»ΠΎΡ…ΠΈΠ΅ чувства Π² ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΈ ΠΈΡ…. ВсС это слишком ΠΏΠΎΡ…ΠΎΠ΄ΠΈΠ»ΠΎ Π½Π° Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ ΠΌΠ΅Ρ€Ρƒ. Π’ ΠΊΠΎΠ½Ρ†Π΅ ΠΊΠΎΠ½Ρ†ΠΎΠ² я выяснил ΠΏΡ€ΠΈΡ‡ΠΈΠ½Ρƒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹: я установил ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ лСксичСского Π°Π½Π°Π»ΠΈΠ·Π° Π½Π΅ объяснив Π²Π°ΠΌ Π²Π½Π°Ρ‡Π°Π»Π΅ всС ΠΎ лСксичСском Π°Π½Π°Π»ΠΈΠ·Π΅, ΠΈ ΠΊΠ°ΠΊΠΈΠ΅ Π΅ΡΡ‚ΡŒ Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Ρ‹. Π”ΠΎ настоящСго Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ я ΡΡ‚Π°Ρ€Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΈΠ·Π±Π΅Π³Π°Π» Π΄Π°Π²Π°Ρ‚ΡŒ Π²Π°ΠΌ ΠΌΠ½ΠΎΠ³ΠΎ Ρ‚Π΅ΠΎΡ€ΠΈΠΈ ΠΈ, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹Π΅ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹. Π― ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π½Π΅ Π²ΠΎΡΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽ Ρ…ΠΎΡ€ΠΎΡˆΠΎ ΡƒΡ‡Π΅Π±Π½ΠΈΠΊΠΈ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄Π°ΡŽΡ‚ Π΄Π²Π°Π΄Ρ†Π°Ρ‚ΡŒ ΠΏΡΡ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… способов ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ, Π½ΠΎ Π½ΠΈΠΊΠ°ΠΊΠΈΡ… свСдСний ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊΠΎΠΉ способ Π»ΡƒΡ‡ΡˆΠ΅ всСго Π²Π°ΠΌ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚. Π― попытался ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ этой Π»ΠΎΠ²ΡƒΡˆΠΊΠΈ, просто ΠΏΠΎΠΊΠ°Π·Π°Π² Π²Π°ΠΌ ΠΎΠ΄ΠΈΠ½ способ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚.

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

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

ЛСксичСский Π°Π½Π°Π»ΠΈΠ·

ЛСксичСский Π°Π½Π°Π»ΠΈΠ· – это процСсс сканирования ΠΏΠΎΡ‚ΠΎΠΊΠ° Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… символов ΠΈ раздСлСния Π΅Π³ΠΎ Π½Π° строки, Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹Π΅ лСксСмами. Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ ΠΊΠ½ΠΈΠ³ ΠΏΠΎ компиляторам Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ΡΡ с этого ΠΈ ΠΏΠΎΡΠ²ΡΡ‰Π°ΡŽΡ‚ нСсколько Π³Π»Π°Π² ΠΎΠ±ΡΡƒΠΆΠ΄Π΅Π½ΠΈΡŽ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² построСния сканСров. Π’Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΈΠΌΠ΅Π΅Ρ‚ своС мСсто, Π½ΠΎ, ΠΊΠ°ΠΊ Π²Ρ‹ ΡƒΠΆΠ΅ Π²ΠΈΠ΄Π΅Π»ΠΈ, ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ мноТСство Π²Π΅Ρ‰Π΅ΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π΄Π°ΠΆΠ΅ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΠΎΠ±Ρ€Π°Ρ‰Π°Π²ΡˆΠΈΡΡŒ ΠΊ этому вопросу, ΠΈ, фактичСски, сканСр, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΡ‹ здСсь Π·Π°ΠΊΠΎΠ½Ρ‡ΠΈΠΌ, Π½Π΅ ΠΎΡ‡Π΅Π½ΡŒ Π±ΡƒΠ΄Π΅Ρ‚ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Ρ‚ΡŒ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ эти тСксты ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚. ΠŸΡ€ΠΈΡ‡ΠΈΠ½Π°? ВСория компиляторов ΠΈ, ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΈΠ· Π½Π΅Π΅, Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎΠΌ ΠΎΠ±Ρ‰ΠΈΡ… ΠΏΡ€Π°Π²ΠΈΠ» синтаксичСского Π°Π½Π°Π»ΠΈΠ·Π°. ΠœΡ‹ ΠΆΠ΅ Π½Π΅ Π΄Π΅Π»Π°Π΅ΠΌ этого. Π’ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΌ ΠΌΠΈΡ€Π΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ синтаксис языка Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ достаточно довольно простого сканСра. И ΠΊΠ°ΠΊ всСгда KISS – наш Π΄Π΅Π²ΠΈΠ·.

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

Π—Π°Ρ‡Π΅ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅? ΠžΡ‚Π²Π΅Ρ‚ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΈ Ρ‚Π΅ΠΎΡ€Π΅Ρ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ основы.

Π’ 1956 Ноам Π₯омский ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠ» Β«Π˜Π΅Ρ€Π°Ρ€Ρ…ΠΈΡŽ Π₯омского» для Π³Ρ€Π°ΠΌΠΌΠ°Ρ‚ΠΈΠΊ. Π’ΠΎΡ‚ ΠΎΠ½ΠΈ:

Π’ΠΈΠΏ 0. НСограничСнныС (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Английский язык)

Π’ΠΈΠΏ 1. ΠšΠΎΠ½Ρ‚Π΅ΠΊΡΡ‚Π½ΠΎ-зависимыС

Π’ΠΈΠΏ 2. ΠšΠΎΠ½Ρ‚Π΅ΠΊΡΡ‚Π½ΠΎ-свободныС

Π’ΠΈΠΏ 3. РСгулярныС.

НСкоторыС характСристики Ρ‚ΠΈΠΏΠΈΡ‡Π½Ρ‹Ρ… языков программирования (особСнно старых, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ Π€ΠΎΡ€Ρ‚Ρ€Π°Π½) относят ΠΈΡ… ΠΊ Π’ΠΈΠΏΡƒ 1, Π½ΠΎ большая Ρ‡Π°ΡΡ‚ΡŒ всСх соврСмСнных языков программирования ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ описана с использованиСм Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π΄Π²ΡƒΡ… послСдних Ρ‚ΠΈΠΏΠΎΠ² ΠΈ с Π½ΠΈΠΌΠΈ ΠΌΡ‹ ΠΈ Π±ΡƒΠ΄Π΅ΠΌ здСсь Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ.

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

Аналогично Π³Ρ€Π°ΠΌΠΌΠ°Ρ‚ΠΈΠΊΠΈ Π’ΠΈΠΏΠ° 2 (контСкстно-свободныС) всСгда ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹ с использованиСм ΠΌΠ°Π³Π°Π·ΠΈΠ½Π½ΠΎΠ³ΠΎ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚Π° (ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΉ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚, Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½Π½Ρ‹ΠΉ стСком). ΠœΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Ρ‹Π²Π°Π»ΠΈ эти ΠΌΠ°ΡˆΠΈΠ½Ρ‹. ВмСсто Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ явного стСка для выполнСния Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΌΡ‹ полоТились Π½Π° встроСнный стСк связанный с рСкурсивным ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΈ это фактичСски являСтся ΠΏΡ€Π΅Π΄ΠΎΡ‡Ρ‚ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ способом для нисходящСго синтаксичСского Π°Π½Π°Π»ΠΈΠ·Π°.

БлучаСтся Ρ‡Ρ‚ΠΎ Π² Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Ρ…, практичСских Π³Ρ€Π°ΠΌΠΌΠ°Ρ‚ΠΈΠΊΠ°Ρ… части, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΊΠ²Π°Π»ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ рСгулярныС выраТСния, ΠΈΠΌΠ΅ΡŽΡ‚ ΡΠΊΠ»ΠΎΠ½Π½ΠΎΡΡ‚ΡŒ Π±Ρ‹Ρ‚ΡŒ Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹ΠΌΠΈ частями, ΠΊΠ°ΠΊ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π°:

<ident> ::= <letter> [ <letter> | <digit> ]*

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

Π˜ΠΌΠ΅Π΅Ρ‚ΡΡ другая, Π±ΠΎΠ»Π΅Π΅ практичСская ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π° для отдСлСния сканСра ΠΎΡ‚ синтаксичСского Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Π°. ΠœΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ Π΄ΡƒΠΌΠ°Ρ‚ΡŒ ΠΎ Π²Ρ…ΠΎΠ΄Π½ΠΎΠΌ исходном Ρ„Π°ΠΉΠ»Π΅ ΠΊΠ°ΠΊ ΠΏΠΎΡ‚ΠΎΠΊΠ΅ символов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌ справа Π½Π°Π»Π΅Π²ΠΎ Π±Π΅Π· Π²ΠΎΠ·Π²Ρ€Π°Ρ‚ΠΎΠ². На ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ это Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ. ΠŸΠΎΡ‡Ρ‚ΠΈ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ язык ΠΈΠΌΠ΅Π΅Ρ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ слова Ρ‚ΠΈΠΏΠ° IF, WHILE ΠΈ END. Как я упомянул Ρ€Π°Π½Π΅Π΅, Π² Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΌΡ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ Π·Π½Π°Ρ‚ΡŒ являСтся Π»ΠΈ данная строка ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹ΠΌ словом Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€ ΠΏΠΎΠΊΠ° ΠΌΡ‹ Π½Π΅ достигнСм Π΅Π΅ ΠΊΠΎΠ½Ρ†Π°, Ρ‡Ρ‚ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΎ ΠΏΡ€ΠΎΠ±Π΅Π»ΠΎΠΌ ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠΌ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»Π΅ΠΌ. Π’Π°ΠΊ Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ строку достаточно Π΄ΠΎΠ»Π³ΠΎ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ΡΡΠ½ΠΈΡ‚ΡŒ ΠΈΠΌΠ΅Π΅ΠΌ ΠΌΡ‹ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово ΠΈΠ»ΠΈ Π½Π΅Ρ‚. Π­Ρ‚ΠΎ ограничСнная Ρ„ΠΎΡ€ΠΌΠ° ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€Π° с Π²ΠΎΠ·Π²Ρ€Π°Ρ‚ΠΎΠΌ.

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

ΠšΠΎΠ½Π΅Ρ‡Π½Ρ‹Π΅ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚Ρ‹ ΠΈ Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Ρ‹

Π― упомянул, Ρ‡Ρ‚ΠΎ рСгулярныС выраТСния ΠΌΠΎΠ³ΡƒΡ‚ Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ с использованиСм ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠ³ΠΎ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚Π°. Π’ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ ΠΊΠ½ΠΈΠ³ ΠΏΠΎ компиляторам Π° Ρ‚Π°ΠΊΠΆΠ΅ Π² Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ компиляторов, Π²Ρ‹ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ это примСняСтся Π±ΡƒΠΊΠ²Π°Π»ΡŒΠ½ΠΎ. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ ΠΎΠ½ΠΈ ΠΈΠΌΠ΅ΡŽΡ‚ Π½Π°ΡΡ‚ΠΎΡΡ‰ΡƒΡŽ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠ³ΠΎ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚Π° с Ρ†Π΅Π»Ρ‹ΠΌΠΈ числами, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΌΠΈ для опрСдСлСния Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ состояния ΠΈ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ΠΉ дСйствий, выполняСмых для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΠΈ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ состояния ΠΈ Π²Ρ…ΠΎΠ΄Π½ΠΎΠ³ΠΎ символа. Если Π²Ρ‹ ΠΏΠΈΡˆΠΈΡ‚Π΅ Β«front endΒ» для компилятора, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ популярныС Unix инструмСнты LEX ΠΈ YACC, это Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅. Π’Ρ‹Ρ…ΠΎΠ΄ LEX – ΠΊΠΎΠ½Π΅Ρ‡Ρ‹ΠΉ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚, Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Π½Π° C плюс Ρ‚Π°Π±Π»ΠΈΡ†Π° дСйствий, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π°Ρ Π²Ρ…ΠΎΠ΄Π½ΠΎΠΉ Π³Ρ€Π°ΠΌΠΌΠ°Ρ‚ΠΈΠΊΠ΅ Π΄Π°Π½Π½ΠΎΠΉ LEX. Π’Ρ‹Π²ΠΎΠ΄ YACC Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π΅Π½... исскуствСнный Ρ‚Π°Π±Π»ΠΈΡ‡Π½ΠΎ-управляСмый синтаксичСский Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ плюс Ρ‚Π°Π±Π»ΠΈΡ†Π°, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π°Ρ синтаксису языка.

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

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