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

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° транслятора-ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π° ΡƒΡ‡Π΅Π±Π½ΠΎΠ³ΠΎ языка программирования

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

НапримСр, поиск строк ΠΏΠΎ ΠΎΠ±Ρ€Π°Π·Ρ†Ρƒ — вСсьма распространСнная Π·Π°Π΄Π°Ρ‡Π°. РСгулярныС выраТСния — это стандартный язык для задания ΠΎΠ±Ρ€Π°Π·Ρ†ΠΎΠ² поиска. ВмСсто Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ спСциализированныС Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ для сопоставлСния строк с ΠΊΠ°ΠΆΠ΄Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·Ρ†ΠΎΠΌ, Π½Π΅ ΠΏΡ€ΠΎΡ‰Π΅ Π»ΠΈ ΠΏΠΎΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ поиска Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ ΠΌΠΎΠ³ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ рСгулярноС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‰Π΅Π΅ мноТСство строк-ΠΎΠ±Ρ€Π°Π·Ρ†ΠΎΠ². ΠŸΡ€ΠΎΡΡ‚ΠΎΠΉ… Π§ΠΈΡ‚Π°Ρ‚ΡŒ Π΅Ρ‰Ρ‘ >

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° транслятора-ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Π° ΡƒΡ‡Π΅Π±Π½ΠΎΠ³ΠΎ языка программирования (Ρ€Π΅Ρ„Π΅Ρ€Π°Ρ‚, курсовая, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ)

1. ΠŸΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΊΠ° Π·Π°Π΄Π°Ρ‡ΠΈ

2. ОписаниС ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π·Π°Π΄Π°Ρ‡ΠΈ

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

2.2 БинтаксичСский Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€

2.3 Π€ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠŸΠžΠ›Π˜Π—Π°

2.4 Π€ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ‚Ρ€ΠΈΠ°Π΄

2.5 ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ списка Ρ‚Ρ€ΠΈΠ°Π΄

2.6 Π˜Π½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΡ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

3. ОписаниС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

4. ВСстовыС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹

4.1 ВСстированиС лСксичСского Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Π°

4.2 ВСстированиС синтаксичСского Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Π°

4.3 ВСстированиС модуля формирования ΠŸΠžΠ›Π˜Π—Π°

4.4 ВСстированиС модуля формирования Ρ‚Ρ€ΠΈΠ°Π΄

4.5 ВСстированиС модуля формирования Ρ‚Ρ€ΠΈΠ°Π΄

4.6 ВСстированиС модуля ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΠΈ Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

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

Π˜Π½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ - ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° трансляции, которая постоянно находится Π² ΠΏΠ°ΠΌΡΡ‚ΠΈ. ΠŸΠ΅Ρ€Π΅Π²ΠΎΠ΄ΠΈΡ‚ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ языка высокого уровня Π² ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹Π΅ ΠΊΠΎΠ΄Ρ‹ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π² Ρ…ΠΎΠ΄Π΅ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

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

НапримСр, поиск строк ΠΏΠΎ ΠΎΠ±Ρ€Π°Π·Ρ†Ρƒ — вСсьма распространСнная Π·Π°Π΄Π°Ρ‡Π°. РСгулярныС выраТСния — это стандартный язык для задания ΠΎΠ±Ρ€Π°Π·Ρ†ΠΎΠ² поиска. ВмСсто Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ спСциализированныС Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ для сопоставлСния строк с ΠΊΠ°ΠΆΠ΄Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·Ρ†ΠΎΠΌ, Π½Π΅ ΠΏΡ€ΠΎΡ‰Π΅ Π»ΠΈ ΠΏΠΎΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ поиска Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ ΠΌΠΎΠ³ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ рСгулярноС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‰Π΅Π΅ мноТСство строк-ΠΎΠ±Ρ€Π°Π·Ρ†ΠΎΠ².

ΠŸΡ€ΠΎΡ†Π΅ΡΡ компиляции, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, состоит ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… этапов: лСксичСского, синтаксичСского ΠΈ ΡΠ΅ΠΌΠ°Π½Ρ‚ичСского Π°Π½Π°Π»ΠΈΠ·ΠΎΠ², Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°, ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚ΠΈΡ€ΡƒΡŽΡ‰Π΅Π³ΠΎ машинного ΠΊΠΎΠ΄Π°.

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

1. ΠŸΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΊΠ° Π·Π°Π΄Π°Ρ‡ΠΈ

ВрСбуСтся Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ транслятор-ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ ΠΏΠΎ Π·Π°Π΄Π°Π½Π½ΠΎΠΉ Π³Ρ€Π°ΠΌΠΌΠ°Ρ‚ΠΈΠΊΠ΅ языка. ΠœΠΎΠ΄ΡƒΠ»ΡŒ трСбуСтся Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° ΡΠ·Ρ‹ΠΊΠ΅ высокого уровня, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ Π½Π° ΡΠ·Ρ‹ΠΊΠ΅ программирования Java.

Π“Ρ€Π°ΠΌΠΌΠ°Ρ‚ΠΈΠΊΠ° языка Logic5

:=

:=|;

:=:=

:=if?:

:=|#

:=|&

:=||()

:=|+|;

:=|

:=0|1|2|3|4|5|6|7|8|9

:=|

:= A|B|C|D|E|F|G|H|I|J|K|L|M|N|O|P|Q|R|S|T|U|V|W|X|Y|Z

ΠœΠ΅Ρ‚ΠΎΠ΄ синтаксичСского Π°Π½Π°Π»ΠΈΠ·Π° — нисходящий синтаксичСский Π°Π½Π°Π»ΠΈΠ· ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ LR (1).

Богласно Π΄Π°Π½Π½ΠΎΠΉ Π³Ρ€Π°ΠΌΠΌΠ°Ρ‚ΠΈΠΊΠ΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ транслятор-ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€, Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‰ΠΈΠΉ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ дСйствия:

1) лСксичСский Π°Π½Π°Π»ΠΈΠ·;

2) синтаксичСский Π°Π½Π°Π»ΠΈΠ·;

3) ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Π³Ρ€Π°ΠΌΠΌΠ°Ρ‚ΠΈΠΊΠΈ Π² ΠŸΠžΠ›Π˜Π—;

4) построСниС Ρ‚Ρ€ΠΈΠ°Π΄ ΠΈ ΠΈΡ… ΠΎΠΏΡ‚имизация;

5) Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

2. ОписаниС ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π·Π°Π΄Π°Ρ‡ΠΈ

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

Π’ Π·Π°Π΄Π°Π½Π½ΠΎΠΉ Π³Ρ€Π°ΠΌΠΌΠ°Ρ‚ΠΈΠΊΠ΅ Π²Ρ‹Π΄Π΅Π»ΠΈΠΌ всС Ρ‚ΠΈΠΏΡ‹ лСксСм ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠΌ ΠΈΡ… ΠΊΠΎΠ΄Ρ‹ (Π’Π°Π±Π»ΠΈΡ†Π° 2.1)

Π’Π°Π±Π»ΠΈΡ†Π° 2.1 — Π’ΠΈΠΏΡ‹ ΠΈ ΠΊΠΎΠ΄Ρ‹ лСксСм

ЛСксСма

Код

ΠšΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово

;

IF

ΠžΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΡ‚Π΅Π»ΠΈ

;

;

:=

:

#

&

(

)

;

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

;

A…Z

30…54

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

;

0…9

60…70

Π“Ρ€Π°Ρ„ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΎΠ² ΠΈ Π²Ρ‹Ρ…ΠΎΠ΄ΠΎΠ², согласно ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ происходит Ρ€Π°Π·Π±ΠΎΡ€ исходной Π³Ρ€Π°ΠΌΠΌΠ°Ρ‚ΠΈΠΊΠΈ Π½Π° Π»Π΅ΠΊΡΠ΅ΠΌΡ‹ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ А.

По ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠΌΡƒ Π³Ρ€Π°Ρ„Ρƒ построим Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΎΠ² ΠΈ Π²Ρ‹Ρ…ΠΎΠ΄ΠΎΠ² (Π’Π°Π±Π»ΠΈΡ†Π° 2.2)

Π’Π°Π±Π»ΠΈΡ†Π° 2.2 — Π’Π°Π±Π»ΠΈΡ†Π° ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΎΠ² ΠΈ Π²Ρ‹Ρ…ΠΎΠ΄ΠΎΠ²

ΠšΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ состояния Π±ΡƒΠ΄Π΅ΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

— Π‘Ρ‚ΠΎΠ»Π±Ρ†Ρƒ соотвСтствуСт ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ символ;

— Π‘Ρ‚Ρ€ΠΎΠΊΠ΅ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‚ состояния ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΎΠ².

ΠŸΠ΅Ρ€Π΅ΡΠ΅Ρ‡Π΅Π½ΠΈΠ΅ строки ΠΈ ΡΡ‚ΠΎΠ»Π±Ρ†Π° Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Π΄Π°ΡŽΡ‚ символ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ состояния ΠΈ ΠΊΠΎΠ΄ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π°.

Алгоритм Ρ€Π°Π±ΠΎΡ‚Ρ‹:

1) ΠΠ°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ΅ состояниС H;

2) Π‘Π΅Ρ€Π΅ΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ символ;

3) По Ρ‚Π°Π±Π»ΠΈΡ†Π΅ опрСдСляСтся Π½ΠΎΠΌΠ΅Ρ€ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ состояния;

4) Если ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ состояниС: S, Ρ‚ΠΎ ΠΏΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°Π΅ΠΌ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌΡƒ ΡΠΎΡΡ‚ΠΎΡΠ½ΠΈΡŽ Π½ΠΎΠΌΠ΅Ρ€ Π½Π°ΠΉΠ΄Π΅Π½Π½ΠΎΠ³ΠΎ состояния;

5) Если ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ состояниС: H, Ρ‚ΠΎ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ Π² Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ΅ состояниС, ΠΈ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΠΈ ΠΎΡ‚ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° лСксСмы добавляСм лСксСму ΠΊ Π½ΡƒΠΆΠ½ΠΎΠΌΡƒ списку

6) Если ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ состояниС: E, ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ Π² Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ΅ состояниС, выставляСм Ρ„Π»Π°Π³ ошибки

7) Если Π΅ΡΡ‚ΡŒ Π΅Ρ‰Π΅ лСксСмы, Ρ‚ΠΎ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ ΠΊ ΠΏΡƒΠ½ΠΊΡ‚Ρƒ 2, ΠΈΠ½Π°Ρ‡Π΅ ΠΊ ΠΏΡƒΠ½ΠΊΡ‚Ρƒ 8

8) ΠšΠΎΠ½Π΅Ρ†

2.2 БинтаксичСский Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€

Алгоритм синтаксичСского Π°Π½Π°Π»ΠΈΠ·Π° Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ LR (k)-Π³Ρ€Π°ΠΌΠΌΠ°Ρ‚ΠΈΠΊΠΈ относится ΠΊ ΠΊΠ»Π°ΡΡΡƒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² восходящСго Ρ€Π°Π·Π±ΠΎΡ€Π°.

Π‘Ρ‚Ρ€ΠΎΠΊΠ°ΠΌ ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰Π΅ΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ М (LR-Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Ρ€Π°Π·Π±ΠΎΡ€Π°) ставятся Π² ΡΠΎΠΎΡ‚вСтствиС состояния, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€, столбцам — элСмСнты мноТСства.

КаТдая запись Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ стСка прСдставляСт собой ΠΏΠ°Ρ€Ρƒ: (символ, Π½ΠΎΠΌΠ΅Ρ€ состояния). ΠŸΠ΅Ρ€Π΅Π΄ Π½Π°Ρ‡Π°Π»ΠΎΠΌ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° Π² Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ стСк заносится ΠΏΠ°Ρ€Π° ($, 1).

Π’ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ значСния элСмСнтов Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΈ ΠΈΡ… ΠΈΠ½Ρ‚СрпрСтация Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠΌ Ρ€Π°Π·Π±ΠΎΡ€Π° ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ 2.3.

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

N ΠΏ/ΠΏ

Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ элСмСнта Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹

Π˜Π½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΡ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠΌ Ρ€Π°Π·Π±ΠΎΡ€Π°

НомСр i ΠΏΠΎΡ€ΠΎΠΆΠ΄Π°ΡŽΡ‰Π΅Π³ΠΎ ΠΏΡ€Π°Π²ΠΈΠ»Π° Π³Ρ€Π°ΠΌΠΌΠ°Ρ‚ΠΈΠΊΠΈ

Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΈΠ· Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ стСка n Π·Π°ΠΏΠΈΡΠ΅ΠΉ (n — количСство символов Π² ΠΏΡ€Π°Π²ΠΎΠΉ части ΠΏΡ€Π°Π²ΠΈΠ»Π° Π½ΠΎΠΌΠ΅Ρ€ i); имитация считывания Π² ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ Π²Ρ…ΠΎΠ΄Π½ΠΎΠ³ΠΎ символа Π½Π΅Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π° Π»Π΅Π²ΠΎΠΉ части ΠΏΡ€Π°Π²ΠΈΠ»Π° Π½ΠΎΠΌΠ΅Ρ€ i.

(«Π‘Π΄Π²ΠΈΠ³», Π½ΠΎΠΌΠ΅Ρ€

j ΡΠΎΡΡ‚ояния)

Π—Π°ΠΏΠΈΡΡŒ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ Π²Ρ…ΠΎΠ΄Π½ΠΎΠ³ΠΎ символа Π² Π²Ρ‹Ρ…ΠΎΠ΄Π½ΠΎΠΉ стСк ΠΈ Π² ΠΏΠ°Ρ€Π΅ с Π½ΠΎΠΌΠ΅Ρ€ΠΎΠΌ j — Π² Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ стСк; Ссли этот символ Π½Π΅Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π», установка ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ Π½Π° Π½Π΅Π³ΠΎ Π² Π±Π»ΠΈΠΆΠ°ΠΉΡˆΠΈΡ… ΠΊ Π½Π΅ΠΌΡƒ n Π·Π°ΠΏΠΈΡΡΡ… Π²Ρ‹Ρ…ΠΎΠ΄Π½ΠΎΠ³ΠΎ стСка с ΠΏΡƒΡΡ‚Ρ‹ΠΌΠΈ указатСлями.

«Π΄ΠΎΠΏΡƒΡΠΊ»

ΠΊΠΎΠ½Π΅Ρ† Ρ€Π°Π±ΠΎΡ‚Ρ‹

" ошибка"

Π’Ρ‹Π²ΠΎΠ΄ сообщСния ΠΎΠ± ΠΎΡˆΠΈΠ±ΠΊΠ΅;

ΠšΠΎΠ½Π΅Ρ† Ρ€Π°Π±ΠΎΡ‚Ρ‹.

Для построСния ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰Π΅ΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ М ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π° Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΠ° ΠΏΠΎΡ€ΠΎΠΆΠ΄Π°ΡŽΡ‰ΠΈΡ… ΠΏΡ€Π°Π²ΠΈΠ» Π³Ρ€Π°ΠΌΠΌΠ°Ρ‚ΠΈΠΊΠΈ Π½ΠΎΠΌΠ΅Ρ€Π°ΠΌΠΈ состояний Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Π°. НомСра состояний ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°ΡŽΡ‚ΡΡ Π² ΠΏΡ€Π°Π²ΠΎΠΉ части ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΡ€Π°Π²ΠΈΠ»Π°: ΠΏΠ΅Ρ€Π΅Π΄ ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ символом, ΠΌΠ΅ΠΆΠ΄Ρƒ Π»ΡŽΠ±Ρ‹ΠΌΠΈ двумя символами ΠΈ ΠΏΠΎΡΠ»Π΅ послСднСго символа. ΠŸΡ€ΠΈ этом Π½ΠΎΠΌΠ΅Ρ€ состояния, нСпосрСдствСнно справа ΠΎΡ‚ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ находится Π½Π΅ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π», слСдуСт Ρ€Π°ΡΠΏΡ€ΠΎΡΡ‚Ρ€Π°Π½ΠΈΡ‚ΡŒ Π½Π° ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ ΠΏΠ΅Ρ€Π΅Π΄ ΠΏΠ΅Ρ€Π²Ρ‹ΠΌΠΈ символами всСх ΠΏΡ€Π°Π²Ρ‹Ρ… частСй ΠΏΡ€Π°Π²ΠΈΠ» для Π΄Π°Π½Π½ΠΎΠ³ΠΎ Π½Π΅ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π° (ΠΈ Ρ‚. Π΄. рСкурсивно). А Π΅ΡΠ»ΠΈ нСпосрСдствСнно слСва ΠΎΡ‚ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈ Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ символа Π² ΠΊΠ°ΠΊΠΈΡ…-Π»ΠΈΠ±ΠΎ ΠΏΡ€Π°Π²ΠΈΠ»Π°Ρ… установлСны ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Π΅ мноТСства ΠΌΠ΅Ρ‚ΠΎΠΊ, Ρ‚ΠΎ ΠΈ Π½Π΅ΠΏΠΎΡΡ€Π΅Π΄ΡΡ‚Π²Π΅Π½Π½ΠΎ справа ΠΎΡ‚ ΡΡ‚ΠΎΠ³ΠΎ символа Π² ΡΡ‚ΠΈΡ… ΠΏΡ€Π°Π²ΠΈΠ»Π°Ρ… слСдуСт ΠΏΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΎΠ΄Π½Ρƒ ΠΈ Ρ‚Ρƒ ΠΆΠ΅ ΠΌΠ΅Ρ‚ΠΊΡƒ. ПослС Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΠΈ Π³Ρ€Π°ΠΌΠΌΠ°Ρ‚ΠΈΠΊΠΈ выполняСтся построСниС Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ М ΠΏΠΎ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌΡƒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡƒ.

1. Если символ, А Π² ΠΏΡ€Π°Π²ΠΎΠΉ части ΠΏΡ€Π°Π²ΠΈΠ»Π° ΠΈΠΌΠ΅Π΅Ρ‚ нСпосрСдствСнно слСва ΠΎΡ‚ ΡΠ΅Π±Ρ ΠΌΠ΅Ρ‚ΠΊΡƒ k, Π° Π½Π΅ΠΏΠΎΡΡ€Π΅Π΄ΡΡ‚Π²Π΅Π½Π½ΠΎ справа ΠΎΡ‚ ΡΠ΅Π±Ρ — ΠΌΠ΅Ρ‚ΠΊΡƒ j, Ρ‚ΠΎ

M (k, A) = («ΡΠ΄Π²ΠΈΠ³», j).

2. Если ΠΌΠ΅Ρ‚ΠΊΠ° j Ρ€Π°Π·ΠΌΠ΅Ρ‰Π°Π΅Ρ‚ся Π·Π° ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΌ символом ΠΏΡ€Π°Π²ΠΎΠΉ части ΠΏΡ€Π°Π²ΠΈΠ»Π° Π½ΠΎΠΌΠ΅Ρ€ i (Ссли правая Ρ‡Π°ΡΡ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΠ»Π° — «lambda», j ΡΠΎΠ²ΠΏΠ°Π΄Π°Π΅Ρ‚ с ΠΌΠ΅Ρ‚ΠΊΠΎΠΉ состояния, нСпосрСдствСнно справа ΠΎΡ‚ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ находится Π½Π΅ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π» Π»Π΅Π²ΠΎΠΉ части ΠΏΡ€Π°Π²ΠΈΠ»Π° i), Ρ‚ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅Ρ‚ся мноТСство Q ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π² ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ ΡΠ΅Π½Ρ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΠ΅ ΠΌΠΎΠ³ΡƒΡ‚ ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ Π·Π° Π½Π΅ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»ΠΎΠΌ Π»Π΅Π²ΠΎΠΉ части ΠΏΡ€Π°Π²ΠΈΠ»Π° Π½ΠΎΠΌΠ΅Ρ€ i, ΠΈ M (j, q)=i для всСх q, ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ‰ΠΈΡ… Q.

3. M (1,)="допуск" .

Π’Π°ΠΊ ΠΊΠ°ΠΊ Π³Ρ€Π°ΠΌΠΌΠ°Ρ‚ΠΈΠΊΠ° Π½Π΅ ΡƒΠ΄ΠΎΠ²Π»Π΅Ρ‚воряСт трСбованиям, Ρ‚ΠΎ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅ΠΌ Π΅Π΅, ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½Ρ‚Π½ΡƒΡŽ Π³Ρ€Π°ΠΌΠΌΠ°Ρ‚ΠΈΠΊΡƒ, ΠΏΡ€ΠΈΠ³ΠΎΠ΄Π½ΡƒΡŽ для Π°Π½Π°Π»ΠΈΠ·Π° ΠΏΠΎ LR (1) ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ:

ΠŸΡ€ΠΈΠ²Π΅Π΄Π΅ΠΌ Π³Ρ€Π°ΠΌΠΌΠ°Ρ‚ΠΈΠΊΡƒ языка Logic5:

:=

:=|;

:=:=

:=if?:

:=|#

:=|&

:=||()

:=

:=|

:=0

:=|

:=A

РаспишСм Π³Ρ€Π°ΠΌΠΌΠ°Ρ‚ΠΈΠΊΡƒ:

1 :=

2 :=

3 := 10

4 := 11

5 :=0 12 13

6 :=

7 := 14

8 :=

9 := 15

10 :=

11 :=

12 :=16 17

13 :=

14 :=18

15 :=19

16 :=

17 :=

18 :=60

19 :=

20 :=

21 :=30

Π Π°Π·ΠΌΠ΅Ρ‚ΠΈΠΌ Π³Ρ€Π°ΠΌΠΌΠ°Ρ‚ΠΈΠΊΡƒ:

1 := 1 2

2 := 1,4 3

3 := 1,4 3 10 4 5

4 := 1,4,12,14 23 11 8 9

5 := 1,4,12,14 0 10 11 12 12 13 13 14 15

6 := 8,25 16

7 := 8,25 9 14 18 19

8 := 8,18,25 20

9 := 8,18,25 16 15 21 22

10 := 8,18,21,25 23

11 := 8,18,21,25 24

12 := 8,18,21,25 16 25 9 17 27

13 := 8,18,21,25 28

14 := 8,18,21,25,29,31 33

15 := 8,18,21,25,29,31 28 34

16 := 8,18,21,25,28,29,31 60 35

17 := 6,8,10,18,21,25,1,4,12,14 36

18 := 6,8,10,18,21,25,1,4,12,14 23 37

19 := 6,8,10,18,21,23,25,1,4,12,14 30 38

ΠŸΠΎΡΡ‚Ρ€ΠΎΠΈΠΌ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ для LR (1)-Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Π°:

2.3 Π€ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠŸΠžΠ›Π˜Π—Π°

ΠŸΠžΠ›Π˜Π— — Ρ„ΠΎΡ€ΠΌΠ° записи матСматичСских Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Ρ‹ располоТСны ΠΏΠ΅Ρ€Π΅Π΄ Π·Π½Π°ΠΊΠ°ΠΌΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ. Π’Π°ΠΊΠΆΠ΅ имСнуСтся ΠΊΠ°ΠΊ обратная польская запись.

ΠŸΡ€ΠΈΠ²Π΅Π΄Π΅ΠΌ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ΠΎΠ²:

ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΡ

ΠŸΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚

IF

:

;

&

#

:=

(

)

ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Π² ΠŸΠžΠ›Π˜Π— логичСских Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ Π±ΡƒΠ΄Π΅ΠΌ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΏΠΎ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌ:

1) Входная строка рассматриваСтся слСва Π½Π°ΠΏΡ€Π°Π²ΠΎ. ΠžΠΏΠ΅Ρ€Π°Π½Π΄Ρ‹ ΠΏΠ΅Ρ€Π΅ΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ΡΡ Π² Π²Ρ‹Ρ…ΠΎΠ΄Π½ΡƒΡŽ строку, Π° Π·Π½Π°ΠΊΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ ΠΏΠΎΠΌΠ΅Ρ‰Π°ΡŽΡ‚ΡΡ Π²Π½Π°Ρ‡Π°Π»Π΅ Π² ΡΡ‚Π΅ΠΊ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ.

2) Если ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ Π²Ρ…ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π·Π½Π°ΠΊΠ° Ρ€Π°Π²Π΅Π½ Π½ΡƒΠ»ΡŽ ΠΈΠ»ΠΈ большС ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚Π° Π·Π½Π°ΠΊΠ°, находящСгося Π² Π²Π΅Ρ€ΡˆΠΈΠ½Π΅ стСка, Ρ‚ΠΎ Π½ΠΎΠ²Ρ‹ΠΉ Π·Π½Π°ΠΊ добавляСтся ΠΊ Π²Π΅Ρ€ΡˆΠΈΠ½Π΅ стСка. Π’ ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС ΠΈΠ· ΡΡ‚Π΅ΠΊΠ° «Π²Ρ‹Ρ‚алкиваСтся» ΠΈ ΠΏΠ΅Ρ€Π΅ΠΏΠΈΡΡ‹Π²Π°Π΅Ρ‚ся Π² Π²Ρ‹Ρ…ΠΎΠ΄Π½ΡƒΡŽ строку Π·Π½Π°ΠΊ, находящийся Π² Π²Π΅Ρ€ΡˆΠΈΠ½Π΅, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Π·Π° Π½ΠΈΠΌ Π·Π½Π°ΠΊΠΈ с ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚Π°ΠΌΠΈ большими ΠΈΠ»ΠΈ Ρ€Π°Π²Π½Ρ‹ΠΌΠΈ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚Ρƒ Π²Ρ…ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π·Π½Π°ΠΊΠ°. ПослС этого Π²Ρ…ΠΎΠ΄Π½ΠΎΠΉ Π·Π½Π°ΠΊ добавляСтся ΠΊ Π²Π΅Ρ€ΡˆΠΈΠ½Π΅ стСка.

2.4 Π€ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ‚Ρ€ΠΈΠ°Π΄

Π’Ρ€ΠΈΠ°Π΄Ρ‹ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ собой запись ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ Π² Ρ„ΠΎΡ€ΠΌΠ΅ ΠΈΠ· Ρ‚Ρ€Π΅Ρ… ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΡ…: <�опСрация>, <οΏ½ΠΎΠΏΠ΅Ρ€Π°Π½Π΄1> ΠΈ <οΏ½ΠΎΠΏΠ΅Ρ€Π°Π½Π΄2>, ΠΏΡ€ΠΈ этом ΠΎΠ΄ΠΈΠ½ ΠΈΠ»ΠΈ ΠΎΠ±Π° ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Π° ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ссылками Π½Π° Π΄Ρ€ΡƒΠ³ΡƒΡŽ Ρ‚Ρ€ΠΈΠ°Π΄Ρƒ Π² Ρ‚ΠΎΠΌ случаС, Ссли Π² ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Π° Π΄Π°Π½Π½ΠΎΠΉ Ρ‚Ρ€ΠΈΠ°Π΄Ρ‹ выступаСт Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния Π΄Ρ€ΡƒΠ³ΠΎΠΉ Ρ‚Ρ€ΠΈΠ°Π΄Ρ‹.

Π’Ρ€ΠΈΠ°Π΄Ρ‹ ΠΏΡ€ΠΈ записи Π±ΡƒΠ΄Π΅ΠΌ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π½ΠΎΠΌΠ΅Ρ€ΠΎΠ²Π°Ρ‚ΡŒ для удобства указания ссылок ΠΎΠ΄Π½ΠΈΡ… Ρ‚Ρ€ΠΈΠ°Π΄ Π½Π° Π΄Ρ€ΡƒΠ³ΠΈΠ΅.

Рассмотрим Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ формирования Ρ‚Ρ€ΠΈΠ°Π΄:

1) просматриваСтся строка ΠŸΠžΠ›Π˜Π—Π°, начиная с ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ символа;

2) Ссли Π²ΡΡ‚Ρ€Π΅Ρ‚ΠΈΠ»Π°ΡΡŒ пСрСмСнная ΠΈΠ»ΠΈ число, Ρ‚ΠΎ ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅ счСтчика;

3) Ссли Π²ΡΡ‚Ρ€Π΅Ρ‚ΠΈΠ»Π°ΡΡŒ опСрация, Ρ‚ΠΎ Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠΉ Ρ‚Ρ€ΠΈΠ°Π΄Ρ‹ с ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ ΠΊΠΎΠ΄ΠΎΠΌ; Π² ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ΠΎΠ² бСрутся ΠΎΠ΄ΠΈΠ½ ΠΈΠ»ΠΈ Π΄Π²Π° (Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΠΈ ΠΎΡ‚ Π²ΠΈΠ΄Π° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ) ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΡ… символа ΠŸΠžΠ›Π˜Π—Π°, Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΈΡ… Π² ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ΠΎΠ² Ρ‚Ρ€ΠΈΠ°Π΄Ρ‹ ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΈΠ· ΠŸΠžΠ›Π˜Π—Π°; Π² ΠŸΠžΠ›Π˜Π— записываСтся ссылка Π½Π° ΡΡ‚Ρƒ Ρ‚Ρ€ΠΈΠ°Π΄Ρƒ;

4) Ссли встрСчаСтся ΠΌΠ΅Ρ‚ΠΊΠ°, Ρ‚ΠΎ Π·Π°ΠΏΠΎΠΌΠΈΠ½Π°Π΅Ρ‚ся Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ ΠΌΠ΅Ρ‚ΠΎΠΊ Π½ΠΎΠΌΠ΅Ρ€ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ Ρ‚Ρ€ΠΈΠ°Π΄Ρ‹, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ Π΄Π°Π½Π½ΠΎΠΌΡƒ Π½ΠΎΠΌΠ΅Ρ€Ρƒ ΠΌΠ΅Ρ‚ΠΊΠΈ.

ПослС прохоТдСния всСй Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠΈ ΠŸΠžΠ›Π˜Π—Π° просматриваСтся список Ρ‚Ρ€ΠΈΠ°Π΄, ΠΈ ΡΡΡ‹Π»ΠΊΠΈ Π½Π° ΠΌΠ΅Ρ‚ΠΊΠΈ Π·Π°ΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ ссылками Π½Π° Ρ‚Ρ€ΠΈΠ°Π΄Ρ‹ с ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌΠΈ Π½ΠΎΠΌΠ΅Ρ€Π°ΠΌΠΈ.

2.5 ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ списка Ρ‚Ρ€ΠΈΠ°Π΄

Π’ ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Π²Ρ‹Π±Ρ€Π°Π½ ΠΌΠ΅Ρ‚ΠΎΠ΄ удалСния ΠΎΠ±Ρ‰ΠΈΡ… ΠΏΠΎΠ΄Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ.

Π‘ΡƒΡ‚ΡŒ Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠ³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ:

1) выявлСниС ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Ρ… Ρ‚Ρ€ΠΈΠ°Π΄;

2) ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Ρ… Ρ‚Ρ€ΠΈΠ°Π΄, ΠΊΡ€ΠΎΠΌΠ΅ ΠΏΠ΅Ρ€Π²ΠΎΠΉ, ΠΏΡƒΡ‚Π΅ΠΌ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ прямого указатСля (ПУ) ΠΈ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ указатСля (ОУ). ΠŸΡ€ΡΠΌΠΎΠΉ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Ρ‚Ρ€ΠΈΠ°Π΄Ρ‹, ΠΏΡ€Π΅Π΄ΡˆΠ΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ удаляСмой, Ρ€Π°Π²Π΅Π½ ΠŸΠ£ удаляСмой, Π° ΠžΠ£ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ Π·Π° ΡƒΠ΄Π°Π»ΡΠ΅ΠΌΠΎΠΉ, Ρ€Π°Π²Π΅Π½ ΠžΠ£ удаляСмой;

3) всС ссылки Π½Π° ΡƒΠ΄Π°Π»ΡΠ΅ΠΌΡƒΡŽ Ρ‚Ρ€ΠΈΠ°Π΄Ρƒ Π·Π°ΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ ссылками Π½Π° ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΈΠ· Ρ€Π°Π²Π½Ρ‹Ρ… Ρ‚Ρ€ΠΈΠ°Π΄. ΠŸΡ€ΠΎΡ†Π΅ΡΡ повторяСтся, начиная с ΠΏ. 1 Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° ΠΏΠΎΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Π΅ Ρ‚Ρ€ΠΈΠ°Π΄Ρ‹.

2.6 Π˜Π½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΡ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

Π˜Π½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΡ — Π°Π½Π°Π»ΠΈΠ·, ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΈ Ρ‚ΡƒΡ‚ ΠΆΠ΅ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ исходной ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈΠ»ΠΈ запроса (Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΠΈ, ΠΏΡ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° транслируСтся Π±Π΅Π· Π΅Ρ‘ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ). Π˜Π½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΡ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠΈΡΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΏΠΎ ΡΠΏΠΈΡΠΊΡƒ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… Ρ‚Ρ€ΠΈΠ°Π΄. НиТС прСдставлСн Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ трансляции:

Алгоритм ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΠΈ:

1. ИндСкс Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Ρ‚Ρ€ΠΈΠ°Π΄Ρ‹=0

2. Если индСкс Ρ‚Ρ€ΠΈΠ°Π΄Ρ‹ ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°Π΅Ρ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€ списка Ρ‚Ρ€ΠΈΠ°Π΄, Ρ‚ΠΎ ΠΊ ΠΏ. 6.

3. Π‘Π΅Ρ€Π΅ΠΌ Ρ‚Ρ€ΠΈΠ°Π΄Ρ‹ ΠΏΠΎ ΠΈΠ½Π΄Π΅ΠΊΡΡƒ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Ρ‚Ρ€ΠΈΠ°Π΄Ρ‹

4. Π‘Π΅Ρ€Π΅ΠΌ Ρ‚Ρ€ΠΈΠ°Π΄Ρƒ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ

4.1. Π‘Π΅Ρ€Π΅ΠΌ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄

4.2. Если этот ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ — ссылка Π½Π° Π΄Ρ€ΡƒΠ³ΡƒΡŽ Ρ‚Ρ€ΠΈΠ°Π΄Ρƒ, Ρ‚ΠΎ Ρ€Π΅ΠΊΡƒΡ€ΡΠΈΠ²Π½ΠΎ рассчитываСм Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Π°

4.3. Π˜Π½Π°Ρ‡Π΅ Π±Π΅Ρ€Π΅ΠΌ Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ ΠΈ ΠΏΡ€ΠΎΠ΄Π΅Π»Ρ‹Π²Π°Π΅ΠΌ Π½Π°Π΄ Π½ΠΈΠΌ всС Ρ‚Π΅ ΠΆΠ΅ Π΄Π΅ΠΉΡΡ‚вия, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π»ΠΈ Π½Π°Π΄ ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ

4.4. Π˜ΡΡ…ΠΎΠ΄Ρ ΠΈΠ· ΠΊΠΎΠ΄Π° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ выполняСм Ρ‚Ρ€ΠΈΠ°Π΄Ρƒ

5. РассчитываСм индСкс ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ выполняСмой Ρ‚Ρ€ΠΈΠ°Π΄Ρ‹, ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ ΠΊ ΠΏ. 2

6. ΠšΠΎΠ½Π΅Ρ†

3. ОписаниС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

ΠŸΡ€ΠΎΡ†Π΅ΡΡ трансляции разбиваСтся Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ основныС Π±Π»ΠΎΠΊΠΈ:

1. ЛСксичСский Π°Π½Π°Π»ΠΈΠ· — Π²Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΈΠ· Π²Ρ…ΠΎΠ΄Π½ΠΎΠ³ΠΎ тСкста ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ лСксСм ΠΈ ΠΈΡ… ΠΊΠΎΠ΄ΠΎΠ². ΠŸΡ€ΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ ошибок доступ ΠΊ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡŽ ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… Π±Π»ΠΎΠΊΠΎΠ² Π·Π°ΠΊΡ€Ρ‹Ρ‚;

2. БинтаксичСский Π°Π½Π°Π»ΠΈΠ· — ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠΉ Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠΈ лСксСм Π½Π° ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌ исходной Π³Ρ€Π°ΠΌΠΌΠ°Ρ‚ΠΈΠΊΠΈ. ΠŸΡ€ΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ ошибок доступ ΠΊ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡŽ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… этапов Π·Π°ΠΊΡ€Ρ‹Ρ‚;

3. Π€ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠŸΠžΠ›Π˜Π—Π° — Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ‚Π°ΠΊΠΎΠΉ Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠΈ лСксСм ΠΈ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ΠΎΠ², Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π²ΡΡ‚Ρ€Π΅Ρ‡Π°ΡŽΡ‚ΡΡ Π² ΠΏΠΎΡ€ΡΠ΄ΠΊΠ΅ ΠΈΡ… Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ;

4. Π€ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ‚Ρ€ΠΈΠ°Π΄ — Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π΅Π³ΠΎ Π² Π΄Π°Π»ΡŒΠ½Π΅ΠΉΡˆΠ΅ΠΌ ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ Π½Π° ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ язык;

5. ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ Ρ‚Ρ€ΠΈΠ°Π΄ — выявлСниС Π½Π΅ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹Ρ… участков ΠΊΠΎΠ΄Π° Π² ΡΠΏΠΈΡΠΊΠ΅ Ρ‚Ρ€ΠΈΠ°Π΄ с Ρ†Π΅Π»ΡŒΡŽ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ΅Π½ΠΈΡ ΠΈΡ… ΠΊΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²Π°, ΠΈ, соотвСтствСнно, Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ выполнСния ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°.

6. Π˜Π½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΡ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ — Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΏΠΎ Ρ‚Ρ€ΠΈΠ°Π΄Π°ΠΌ

Π›ΠΎΠ³ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ структуру ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ прСдставим Π½Π° Ρ€ΠΈΡ. 3.1.

Рисунок 3.1 — ЛогичСская структура ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

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

4. ВСстовыС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹

4.1 ВСстированиС лСксичСского Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Π°

Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ Ρ‚Ρ€ΠΈΠ°Π΄Π° транслятор ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ № 1. (ΠŸΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€)

Π’Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅:

A:=5;

B:=0;

C:=1;

IF C? B:=2: B:=3;

C:=B#A;

A:=C&B;

B:=B#A

Π’Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅:

Анализ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹:

ВвСдСнная ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°:

A:=5;

B:=0;

C:=1;

IF C? B:=2: B:=3;

C:=B#A;

A:=C&B;

B:=B#A

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

ΠžΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΡ‚Π΅Π»ΡŒ: :=

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

ΠžΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΡ‚Π΅Π»ΡŒ: ;

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

ΠžΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΡ‚Π΅Π»ΡŒ: :=

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

ΠžΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΡ‚Π΅Π»ΡŒ: ;

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

ΠžΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΡ‚Π΅Π»ΡŒ: :=

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

ΠžΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΡ‚Π΅Π»ΡŒ: ;

ΠšΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово: IF

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

ΠžΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΡ‚Π΅Π»ΡŒ: ?

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

ΠžΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΡ‚Π΅Π»ΡŒ: :=

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

ΠžΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΡ‚Π΅Π»ΡŒ: :

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

ΠžΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΡ‚Π΅Π»ΡŒ: :=

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

ΠžΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΡ‚Π΅Π»ΡŒ: ;

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

ΠžΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΡ‚Π΅Π»ΡŒ: :=

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

ΠžΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΡ‚Π΅Π»ΡŒ: #

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

ΠžΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΡ‚Π΅Π»ΡŒ: ;

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

ΠžΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΡ‚Π΅Π»ΡŒ: :=

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

ΠžΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΡ‚Π΅Π»ΡŒ: &

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

ΠžΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΡ‚Π΅Π»ΡŒ: ;

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

ΠžΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΡ‚Π΅Π»ΡŒ: :=

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

ΠžΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΡ‚Π΅Π»ΡŒ: #

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

Π’ Ρ…ΠΎΠ΄Π΅ Π°Π½Π°Π»ΠΈΠ·Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π±Ρ‹Π» ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ список Ρ€Π°Π·Π±ΠΎΡ€Π°:

[30, 11, 61, 10, 31, 11, 62, 10, 32, 11, 60, 10, 0, 32, 12, 31, 11, 63, 13, 31, 11, 64, 10, 32, 11, 31, 14, 30, 10, 30, 11, 32, 15, 31, 10, 31, 11, 31, 14, 30]

Π’Π°Π±Π»ΠΈΡ†Π° ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ²:

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

30 A

31 B

32 C

Π’Π°Π±Π»ΠΈΡ†Π° констант:

Код ΠšΠΎΠ½ΡΡ‚Π°Π½Ρ‚Π°

60 1

61 5

62 0

63 2

64 3

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ № 2. (ΠΠ΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€)

Π’Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅:

var a;b

begin

a=78;

b=78*98;

end

Π’Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅:

ВрСмя ΠΈ Π΄Π°Ρ‚Π° запуска: Thu Apr 26 18:05:51 EEST 2012

АнализируСмая ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°:

VAR A;B BEGIN A=78; B=78*98; END $

По ΡΠΈΠΌΠ²ΠΎΠ»Ρƒ [ V ] ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ Π² ΡΠΎΡΡ‚ояниС: S1

По ΡΠΈΠΌΠ²ΠΎΠ»Ρƒ [ A ] ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ Π² ΡΠΎΡΡ‚ояниС: S2

По ΡΠΈΠΌΠ²ΠΎΠ»Ρƒ [ R ] ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ Π² ΡΠΎΡΡ‚ояниС: S3

По ΡΠΈΠΌΠ²ΠΎΠ»Ρƒ [ ] ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ Π² ΡΠΎΡΡ‚ояниС: H0

ΠžΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ΠΎ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово: VAR

По ΡΠΈΠΌΠ²ΠΎΠ»Ρƒ [ ] ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ Π² ΡΠΎΡΡ‚ояниС: H99

По ΡΠΈΠΌΠ²ΠΎΠ»Ρƒ [ A ] ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ Π² ΡΠΎΡΡ‚ояниС: S19

По ΡΠΈΠΌΠ²ΠΎΠ»Ρƒ [; ] ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ Π² ΡΠΎΡΡ‚ояниС: H20

ΠžΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€: A

По ΡΠΈΠΌΠ²ΠΎΠ»Ρƒ [; ] ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ Π² ΡΠΎΡΡ‚ояниС: S21

По ΡΠΈΠΌΠ²ΠΎΠ»Ρƒ [ B ] ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ Π² ΡΠΎΡΡ‚ояниС: H10

ΠžΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΡ‚Π΅Π»ΡŒ: ;

По ΡΠΈΠΌΠ²ΠΎΠ»Ρƒ [ B ] ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ Π² ΡΠΎΡΡ‚ояниС: S4

По ΡΠΈΠΌΠ²ΠΎΠ»Ρƒ [ ] ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ Π² ΡΠΎΡΡ‚ояниС: H20

ΠžΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€: B

По ΡΠΈΠΌΠ²ΠΎΠ»Ρƒ [ ] ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ Π² ΡΠΎΡΡ‚ояниС: H99

По ΡΠΈΠΌΠ²ΠΎΠ»Ρƒ [ B ] ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ Π² ΡΠΎΡΡ‚ояниС: S4

По ΡΠΈΠΌΠ²ΠΎΠ»Ρƒ [ E ] ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ Π² ΡΠΎΡΡ‚ояниС: S5

По ΡΠΈΠΌΠ²ΠΎΠ»Ρƒ [ G ] ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ Π² ΡΠΎΡΡ‚ояниС: S6

По ΡΠΈΠΌΠ²ΠΎΠ»Ρƒ [ I ] ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ Π² ΡΠΎΡΡ‚ояниС: S7

По ΡΠΈΠΌΠ²ΠΎΠ»Ρƒ [ N ] ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ Π² ΡΠΎΡΡ‚ояниС: S8

По ΡΠΈΠΌΠ²ΠΎΠ»Ρƒ [ ] ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ Π² ΡΠΎΡΡ‚ояниС: H1

ΠžΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ΠΎ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово: BEGIN

По ΡΠΈΠΌΠ²ΠΎΠ»Ρƒ [ ] ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ Π² ΡΠΎΡΡ‚ояниС: H99

По ΡΠΈΠΌΠ²ΠΎΠ»Ρƒ [ A ] ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ Π² ΡΠΎΡΡ‚ояниС: S19

По ΡΠΈΠΌΠ²ΠΎΠ»Ρƒ [ = ] ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ Π² ΡΠΎΡΡ‚ояниС: H20

ΠžΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€: A

По ΡΠΈΠΌΠ²ΠΎΠ»Ρƒ [ = ] ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ Π² ΡΠΎΡΡ‚ояниС: H-1

ΠžΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ нСдопустимоС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅:

По ΡΠΈΠΌΠ²ΠΎΠ»Ρƒ [ 7 ] ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ Π² ΡΠΎΡΡ‚ояниС: S20

По ΡΠΈΠΌΠ²ΠΎΠ»Ρƒ [ 8 ] ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ Π² ΡΠΎΡΡ‚ояниС: S20

По ΡΠΈΠΌΠ²ΠΎΠ»Ρƒ [; ] ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ Π² ΡΠΎΡΡ‚ояниС: H50

ΠžΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½Π° константа: 78

По ΡΠΈΠΌΠ²ΠΎΠ»Ρƒ [; ] ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ Π² ΡΠΎΡΡ‚ояниС: S21

По ΡΠΈΠΌΠ²ΠΎΠ»Ρƒ [ ] ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ Π² ΡΠΎΡΡ‚ояниС: H10

ΠžΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΡ‚Π΅Π»ΡŒ: ;

По ΡΠΈΠΌΠ²ΠΎΠ»Ρƒ [ ] ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ Π² ΡΠΎΡΡ‚ояниС: H99

По ΡΠΈΠΌΠ²ΠΎΠ»Ρƒ [ B ] ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ Π² ΡΠΎΡΡ‚ояниС: S4

По ΡΠΈΠΌΠ²ΠΎΠ»Ρƒ [ = ] ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ Π² ΡΠΎΡΡ‚ояниС: H20

ΠžΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€: B

По ΡΠΈΠΌΠ²ΠΎΠ»Ρƒ [ = ] ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ Π² ΡΠΎΡΡ‚ояниС: H-1

ΠžΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ нСдопустимоС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅:

По ΡΠΈΠΌΠ²ΠΎΠ»Ρƒ [ 7 ] ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ Π² ΡΠΎΡΡ‚ояниС: S20

По ΡΠΈΠΌΠ²ΠΎΠ»Ρƒ [ 8 ] ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ Π² ΡΠΎΡΡ‚ояниС: S20

Π‘Ρ‹Π» Π½Π°ΠΉΠ΄Π΅Π½ нСдопустимый символ: [ * ]

По ΡΠΈΠΌΠ²ΠΎΠ»Ρƒ [ 9 ] ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ Π² ΡΠΎΡΡ‚ояниС: S20

Π‘Ρ‹Π» Π½Π°ΠΉΠ΄Π΅Π½ нСдопустимый символ: [ ^ ]

По ΡΠΈΠΌΠ²ΠΎΠ»Ρƒ [ 8 ] ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ Π² ΡΠΎΡΡ‚ояниС: S20

По ΡΠΈΠΌΠ²ΠΎΠ»Ρƒ [; ] ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ Π² ΡΠΎΡΡ‚ояниС: H50

ΠžΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½Π° константа: 8

По ΡΠΈΠΌΠ²ΠΎΠ»Ρƒ [; ] ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ Π² ΡΠΎΡΡ‚ояниС: S21

По ΡΠΈΠΌΠ²ΠΎΠ»Ρƒ [ ] ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ Π² ΡΠΎΡΡ‚ояниС: H10

ΠžΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΡ‚Π΅Π»ΡŒ: ;

По ΡΠΈΠΌΠ²ΠΎΠ»Ρƒ [ ] ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ Π² ΡΠΎΡΡ‚ояниС: H99

По ΡΠΈΠΌΠ²ΠΎΠ»Ρƒ [ E ] ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ Π² ΡΠΎΡΡ‚ояниС: S9

По ΡΠΈΠΌΠ²ΠΎΠ»Ρƒ [ N ] ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ Π² ΡΠΎΡΡ‚ояниС: S10

По ΡΠΈΠΌΠ²ΠΎΠ»Ρƒ [ D ] ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ Π² ΡΠΎΡΡ‚ояниС: S11

По ΡΠΈΠΌΠ²ΠΎΠ»Ρƒ [ ] ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ Π² ΡΠΎΡΡ‚ояниС: H2

ΠžΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ΠΎ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово: END

По ΡΠΈΠΌΠ²ΠΎΠ»Ρƒ [ ] ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ Π² ΡΠΎΡΡ‚ояниС: H99

По ΡΠΈΠΌΠ²ΠΎΠ»Ρƒ [ $ ] ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ Π² ΡΠΎΡΡ‚ояниС: K0

ЛСксичСский Π°Π½Π°Π»ΠΈΠ· закончился с ΠΎΡˆΠΈΠ±ΠΊΠΎΠΉ

4.2 ВСстированиС синтаксичСского Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Π°

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ № 1. (ΠŸΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€)

Π’Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅:

30 11 61 10 31 11 62 10 32 11 60 10 0 32 12 31 11 63 13 31 11 64 10 32 11 31 14 30 10 30 11 32 15 31 10 31 11 31 14 30

Π’Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅:

Начало синтаксичСского Π°Π½Π°Π»ΠΈΠ·Π°:

ΠŸΠΎΠ΄Π°Π½Π½Ρ‹ΠΉ список лСксСм:

[30, 11, 61, 10, 31, 11, 62, 10, 32, 11, 60, 10, 0, 32, 12, 31, 11, 63, 13, 31, 11, 64, 10, 32, 11, 31, 14, 30, 10, 30, 11, 32, 15, 31, 10, 31, 11, 31, 14, 30]

Π’Π°Π±Π»ΠΈΡ†Π° Ρ€Π°Π·Π±ΠΎΡ€Π°:

Π Π°Π±ΠΎΡ‡ΠΈΠΉ стСк M (, a) Π’Ρ…ΠΎΠ΄Π½ΠΎΠΉ символ ΠŸΡ€Π°Π²ΠΈΠ»ΠΎ

1 M (1 — 30) = S, 38 30

————————————————————————————————————————————

30,38 M (38 — 11) = R, 19 11 19

1

————————————————————————————————————————————

1 M (1 —) = S, 36

————————————————————————————————————————————

36 M (36 — 11) = R, 17 11 17

1

———————————————————————————————————————————;

1 M (1 —) = S, 23

————————————————————————————————————————————

5 M (5 —) = R, 3 3 10,4

3, 1

——————————————————————————————————————————————

1 M (1 —) = S, 2

——————————————————————————————————————————————

2 M (2 —) = E, 0

——————————————————————————————————————————————

Π Π°Π·Π±ΠΎΡ€ Π±Ρ‹Π» ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ № 2. (ΠΠ΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€)

Π’Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅:

0 20 10 21 10 22 1 20 11 51 1 11 13 20 14 21 2

Π’Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅:

ВрСмя ΠΈ Π΄Π°Ρ‚Π° запуска: Thu Apr 26 18:18:37 EEST 2012

Бписок ΠΏΠΎΠ΄Π°Π½Π½Ρ‹Ρ… Π·Π°ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… лСксСм:

[0, 20, 10, 21, 10, 22, 1, 20, 11, 51, 1, 11, 13, 20, 14, 21, 2, 9]

— 0 0 M (, 0) = 1

9−0

—————————————————————————————

0−1 0 M (0, 0) = -1

— 1

— 1

9−0

—————————————————————————————

— 1 20 M (, 20) = 2

— 1

9−0

—————————————————————————————

— 1 20 M (, 20) = 24

— 1

— 1

9−0

—————————————————————————————

— 1 51 M (, 51) = 23

— 1

— 1

— 1

— 1

2−1

9−0

—————————————————————————————

50−1 51 M (50, 51) = -1

— 1

— 1

— 1

— 1

2−1

9−0

—————————————————————————————

— 1 1 M (, 1) = 0

— 1

— 1

— 1

2−1

9−0

Анализ Π±Ρ‹Π» Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ввСдСнная ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π½Π΅ ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ‚ Π³Ρ€Π°ΠΌΠΌΠ°Ρ‚ΠΈΠΊΠ΅ языка Logic3

4.3 ВСстированиС модуля формирования ΠŸΠžΠ›Π˜Π—Π°

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ № 1. (ΠŸΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€)

Π’Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅:

30 11 61 10 31 11 62 10 32 11 60 10 0 32 12 31 11 63 13 31 11 64 10 32 11 31 14 30 10 30 11 32 15 31 10 31 11 31 14 30

Π’Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅:

30 61 11 31 62 11 32 60 11 32 60 22 20 31 63 11 21 31 64 11 32 31 30 14 11 30 32 31 15 11 31 31 30 14 11

4.4 ВСстированиС модуля формирования Ρ‚Ρ€ΠΈΠ°Π΄

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ № 1. (ΠŸΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€)

Π’Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅:

30 61 11 31 62 11 32 60 11 32 60 22 20 31 63 11 21 31 64 11 32 31 30 14 11 30 32 31 15 11 31 31 30 14 11

Π’Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅:

0 11 30 61

1 11 31 62

2 11 32 60

3 22 32 60

4 20 83 87

5 11 31 63

6 21 89 0

7 11 31 64

8 14 31 30

9 11 32 88

10 15 32 31

11 11 30 90

12 14 31 30

13 11 31 92

4.5 ВСстированиС модуля формирования Ρ‚Ρ€ΠΈΠ°Π΄

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ № 1. (ΠŸΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€)

Π’Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅:

0 11 30 61

1 11 31 62

2 11 32 60

3 22 32 60

4 20 83 87

5 11 31 63

6 21 89 0

7 11 31 64

8 14 31 30

9 11 32 88

10 15 32 31

11 11 30 90

12 14 31 30

13 11 31 92

Π’Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅:

ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ ΠΏΡ€ΠΎΡˆΠ»Π° ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ, ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠ΅ количСство Ρ‚Ρ€ΠΈΠ°Π΄: 1

0 11 30 61

1 11 31 62

2 11 32 60

3 22 32 60

4 20 83 87

5 11 31 63

6 21 89 0

7 11 31 64

8 14 31 30

9 11 32 88

10 15 32 31

11 11 30 90

13 11 31 88

4.6 ВСстированиС модуля ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΠΈ

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ № 1. (ΠŸΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€)

Π’Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅:

0 11 30 61

1 11 31 62

2 11 32 60

3 22 32 60

4 20 83 87

5 11 31 63

6 21 89 0

7 11 31 64

8 14 31 30

9 11 32 88

10 15 32 31

11 11 30 90

13 11 31 88

Π’Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅:

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Π’ Ρ…ΠΎΠ΄Π΅ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π½Π°Π΄ курсовым ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠΌ Π±Ρ‹Π»Π° ΠΈΠ·ΡƒΡ‡Π΅Π½Π° ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈΠΊΠ° построСния компилятора, ΠΏΡ€ΠΎΡˆΠ»ΠΎ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠ»Π΅Π½ΠΈΠ΅ с ΡΡ‚Π°ΠΏΠ°ΠΌΠΈ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΠΈ. Π‘Ρ‹Π»ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Ρ‹ практичСскиС Π½Π°Π²Ρ‹ΠΊΠΈ ΠΏΠΎ ΡΠΎΠ·Π΄Π°Π½ΠΈΡŽ ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ компилятора для подмноТСства Π³Ρ€Π°ΠΌΠΌΠ°Ρ‚ΠΈΠΊΠΈ ΡƒΡ‡Π΅Π±Π½ΠΎΠ³ΠΎ языка Logic5. ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΠ»ΠΎ Π² Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΎ этапов: ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π±Π»ΠΎΠΊΠ° лСксичСского Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Π°, ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π±Π»ΠΎΠΊΠ° синтаксичСского Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Π°, ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π±Π»ΠΎΠΊΠ° формирования ΠŸΠžΠ›Π˜Π—Π°, ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π±Π»ΠΎΠΊΠΎΠ² построСния ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ списка Ρ‚Ρ€ΠΈΠ°Π΄, ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π±Π»ΠΎΠΊΠ° ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΠΈ ΠΊΠΎΠ΄Π°. ΠŸΡ€ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ лСксичСского Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Π° Π±Ρ‹Π»Π° использована тСория ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹Ρ… Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΎΠ² ΠΈ ΠΏΠΎΡΡ‚Ρ€ΠΎΠ΅Π½Π° Π΅Π³ΠΎ автоматная модСль, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π°Ρ Ρ€Π°Π·Π±ΠΈΡ‚ΡŒ исходный тСкст ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° Π»Π΅ΠΊΡΠ΅ΠΌΡ‹. ΠŸΡ€ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ синтаксичСского Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Π° Π±Ρ‹Π» использован ΠΌΠ΅Ρ‚ΠΎΠ΄ LR (1). ΠŸΠΎΡΡ‚Ρ€ΠΎΠ΅Π½ΠΈΠ΅ ΠŸΠžΠ›Π˜Π—Π° ΠΈ Ρ‚Ρ€ΠΈΠ°Π΄ ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΠ»ΠΎΡΡŒ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠΈ лСксСм, ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌΠΎΠΉ с Π²Ρ‹Ρ…ΠΎΠ΄Π° лСксичСского Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Π°. ВСстированиС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΏΠΎΠΊΠ°Π·Π°Π»ΠΎ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ.

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