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

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«ΠŸΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠ΅ ΠΈ распрСдСлСнноС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° Π‘++Β». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 119

Автор Π₯ьюз ΠšΠ°ΠΌΠ΅Ρ€ΠΎΠ½

50 }

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ 11.3.1 FIFO-стуктура channel.l открываСтся для Π²Ρ‹Π²ΠΎΠ΄Π° Π΄Π°Π½Π½Ρ‹Ρ…, Π° Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ 11.3.2 Ρ‚Π° ΠΆΠ΅ FIFO-структура channel. 1 β€” для Π²Π²ΠΎΠ΄Π° Π΄Π°Π½Π½Ρ‹Ρ…. Π‘Π»Π΅Π»ΡƒΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Π² Π²ΠΈΠ΄Ρƒ, Ρ‡Ρ‚ΠΎ FIFO-структуры Π΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‚ ΠΊΠ°ΠΊ ΠΎΠ΄Π½ΠΎΠ½Π°ΠΏΡ€Π°Π²Π»Π΅Π½Π½Ρ‹Π΅ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡ‹ связи, поэтому Π½Π΅ ΠΏΡ‹Ρ‚Π°ΠΉΡ‚Π΅ΡΡŒ ΠΏΠ΅Ρ€Π΅ΡΡ‹Π»Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ Π² ΠΎΠ±ΠΎΠΈΡ… направлСниях! Достоинство использования iostreams -классов Π² сочСтании с FIFO-структурами состоит Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ iostreams -ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊ FIFO-структурам. НапримСр, Π² ΡΡ‚Ρ€ΠΎΠΊΠ΅Π—Πž ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ is_open() класса basic_filebuf, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Π° Π»ΠΈ FIFO-структура. Если ΠΎΠ½Π° Π½Π΅ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Π°, Ρ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° 11.3.2 Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ΡΡ. Π”Π΅Ρ‚Π°Π»ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ 11.3.2 ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ Β«ΠŸΡ€ΠΎΡ„ΠΈΠ»ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ 11.3.2Β».

ΠŸΡ€ΠΎΡ„ΠΈΠ»ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ 11.3.2

Имя ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

programll-3b.ee

ОписаниС

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° считываСт ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΈΠ· FIFO-структуры с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Ρ‚ΠΈΠΏΠ° ifstream. Для пСрСсылки Π΄Π°Π½Π½Ρ‹Ρ… Ρ‡Π΅Ρ€Π΅Π· FIFO-структуру здСсь ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€ Ρ‚ΠΈΠΏΠ° ostream_iterator ΠΈ стандартный Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ transform.

Π’Ρ€Π΅Π±ΡƒΠ΅ΠΌΡ‹Π΅ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ

><unistd.h>, <iomanip>, <algorithm>, <fstream.h>, <vector>, <iterator>, <strstream.h>, <stdlib.h>, <sys/wait.h>, <sys/types.h>, <sys/stat.h>, ^<fcntl .h>, <numeric>.

Π˜Π½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΠΈ ΠΏΠΎ компиляции ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ

с++ -о programll-3b programll-3b.сс

; Π‘Ρ€Π΅Π΄Π° для тСстирования

SuSE Linux 7.1, GCC 2.95.2, Solaris 8, Sun Workshop 6.0.

Π˜Π½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΠΈ ΠΏΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡŽ

program11.3a & program11-3b

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΡ

CΠ½Π°Ρ‡Π°Π»Π° запускаСтся ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°11.3.1. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°11.3.2 содСрТит ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ Sleep, которая восполняСт собой отсутствиС Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΉ синхронизации.

Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡΠ½Ρ‹Π΅ FIFO-классы

Π£ΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒ мСТпроцСссноС взаимодСйствиС (IPC) ΠΌΠΎΠΆΠ½ΠΎ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ iostreams-классов ΠΈΠ»ΠΈ классов istream_iterator ΠΈ ostream_iterator, Π½ΠΎ ΠΈ посрСдством инкапсуляции FIFO-ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° Π² FIFO-классС (листинг 11.23).

// Листинг 11.23. ОбъявлСниС FIFO-класса

class fifo{

mutex Mutex;

//.. .

protected:

string Name; public:

fifo &operator<<(fifo &In, int X);

fifo &operator<<(fifo &In, char X);

fifo &operator>>(fifo &Out, float X);

//.. .

};

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

ΠšΠ°Ρ€ΠΊΠ°ΡΠ½Ρ‹Π΅ классы

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

β€’Β ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ достовСрности;

β€’Β ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ выдСлСния лСксСм;

β€’Β ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ грамматичСского Ρ€Π°Π·Π±ΠΎΡ€Π°;

β€’Β ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ синтаксичСского Π°Π½Π°Π»ΠΈΠ·Π°;

β€’Β ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ лСксичСского Π°Π½Π°Π»ΠΈΠ·Π°.

Π­Ρ‚ΠΈ части ПО ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΡ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΡƒΠΆΠ΅ Π·Π½Π°ΠΊΠΎΠΌΡƒΡŽ Π½Π°ΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΡƒΡŽ ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ (листинг11.24).

// Листинг 11.24. ОбъявлСниС класса language_processor

//Β ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° process_input

class language_processor {

//...

protected:

virtual bool getString(void) = 0;

virtual bool validateString(void) = 0;

virtual bool parseString(void) = 0;

//...

public:

bool process_input(void);

};

bool language_processor::process_input(void) {

getString();

validateString();

parseString();

//.. .

compareTokens();

//.. .

}

Π’ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, класс language_processor являСтся абстрактным ΠΈ Π±Π°Π·ΠΎΠ²Ρ‹ΠΌ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½ содСрТит чисто Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ:

virtual bool getString(void) = 0;

virtual bool validateString(void) = 0;

virtual bool parseString(void) = 0;

Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ класс language_processor Π½Π΅ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ для нСпосрСдствСнного использования. Он слуТит Π² качСствС ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° для ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹Ρ… классов. ОсобСнно стоит ΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒΡΡ Π½Π° ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ process_input (). Π­Ρ‚ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ прСдставляСт собой ΠΏΠ»Π°Π½ Ρ€Π°Π±ΠΎΡ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ прСдстои Ρ‚ ΠΎΠ±ΠΎΠ±Ρ‰ΠΈΡ‚ ь классу language_processor. Π’ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡΡ… ΠΈΠΌΠ΅Π½Π½ΠΎ это ΠΈ ΠΎΡ‚Π»ΠΈΡ‡Π°Π΅Ρ‚ каркасныС классы ΠΎΡ‚ классов Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ‚ΠΈΠΏΠΎΠ². ΠšΠ°Ρ€ΠΊΠ°ΡΠ½Ρ‹ΠΉ класс описываСт Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ±ΠΎΠ±Ρ‰Π΅Π½Π½ΡƒΡŽ структуру ΠΈ Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΉ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌΠΈ, Π½ΠΎ содСрТит ΠΈ Π·Π°Ρ€Π°Π½Π΅Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ выполняСмых дСйствий. Однако Π² Ρ‚Π°ΠΊΠΎΠΌ своСобразном описании повСдСния Π½Π΅ ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ Π΄Π΅Ρ‚Π°Π»ΠΈ Π΅Π³ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ. Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС модСль повСдСния задаСтся Π½Π°Π±ΠΎΡ€ΠΎΠΌ чисто Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ. ΠšΠ°Ρ€ΠΊΠ°ΡΠ½Ρ‹ΠΉ класс Π½Π΅ опрСдСляСт, ΠΊΠ°ΠΊ ΠΈΠΌΠ΅Π½Π½ΠΎ эти дСйствия Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Ρ‹, β€” Π²Π°ΠΆΠ½ΠΎ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Ρ‹, ΠΏΡ€ΠΈΡ‡Π΅ΠΌ Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌ порядкС. А ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹ΠΉ класс Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ всСх чисто Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ. ΠŸΡ€ΠΈ этом ΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²Π΅Π½Π½ΠΎΡΡ‚ΡŒ Π·Π° ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΡΡ‚ΡŒ выполняСмых дСйствий Ρ†Π΅Π»ΠΈΠΊΠΎΠΌ возлагаСтся Π½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹ΠΉ класс. ΠšΠ°Ρ€ΠΊΠ°ΡΠ½Ρ‹Π΅ классы ΠΏΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΡŽ β€” Π΄ΠΎΠ³ΠΎΠ²ΠΎΡ€Π½Ρ‹Π΅ классы. Для достиТСния ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠ³ΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° трСбуСтся Π½Π°Π΄Π»Π΅ΠΆΠ°Ρ‰Π΅Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΎΠ±Π΅ΠΈΡ… частСй Π΄ΠΎΠ³ΠΎΠ²ΠΎΡ€Π°. ΠšΠ°Ρ€ΠΊΠ°ΡΠ½Ρ‹ΠΉ класс Π½Π°ΠΌΠ΅Ρ‡Π°Π΅Ρ‚ Ρ‡Π΅Ρ‚ΠΊΠΈΠΉ ΠΏΠ»Π°Π½, Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹ΠΉ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ этот ΠΏΠ»Π°Π½ Π² Π²ΠΈΠ΄Π΅ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ опрСдСлСния чисто Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ. ΠŸΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ дСйствий, «намСчСнная» ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ process_input (), ΡΠΎΠ±Π»ΡŽΠ΄Π°Π΅Ρ‚ΡΡ Π² Ρ‚Π°ΠΊΠΈΡ… прилоТСниях.

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

β€’ Π˜Π½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Ρ‹ ΠΊΠΎ ΠΌ Π°Π½Π΄

β€’ ΠžΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ СстСствСнных языков

β€’ ΠŸΡ€ΠΎΠ³Ρ€Π° ΠΌΠΌ Ρ‹ ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ-Π΄Π΅ΡˆΠΈΡ„Ρ€ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ

β€’ Π£ΠΏΠ°ΠΊΠΎΠ²ΠΊΠ°-распаковка

β€’ ΠŸΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Ρ‹ пСрСсылки Ρ„Π°ΠΉΠ»ΠΎΠ²

β€’ ГрафичСскиС интСрфСйсы ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ

β€’ ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Ρ‹ устройств

ΠšΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Π°Ρ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° каркасного класса language_processsor (ΠΏΡ€ΠΈ Π½Π°Π΄Π»Π΅ΠΆΠ°Ρ‰Π΅ΠΌ Π΅Π³ΠΎ тСстировании ΠΈ ΠΎΡ‚Π»Π°Π΄ΠΊΠ΅) позволяСт ΡƒΡΠΊΠΎΡ€ΠΈΡ‚ΡŒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ ΡˆΠΈΡ€ΠΎΠΊΠΎΠ³ΠΎ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.

ΠŸΠΎΠ½ΡΡ‚ΠΈΠ΅ каркасного класса Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ ΠΏΡ€Π΅Π΄ΡŠΡΠ²Π»ΡΡŽΡ‚ΡΡ трСбования ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΠΈΠ·ΠΌΠ°. Π’Π°ΠΊ, использованиС Π°Π³Π΅Π½Ρ‚-Π½Ρ‹Ρ… каркасов ΠΈ каркасов «классной доски» фиксируСт Π±Π°Π·ΠΎΠ²ΡƒΡŽ структуру ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΠΈΠ·ΠΌΠ° ΠΈ схСмы Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π² этих структурах. Майкл Π’ΡƒΠ»Π΄Ρ€ΠΈΠ΄ΠΆ Π² своСй ΠΊΠ½ΠΈΠ³Π΅ [51] ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΎΠ±ΠΎΠ±Ρ‰Π΅Π½Π½Ρ‹ΠΉ Ρ†ΠΈΠΊΠ» управлСния Π°Π³Π΅Π½Ρ‚Π°ΠΌΠΈ.

Алгоритм: Ρ†ΠΈΠΊΠ» управлСния Π°Π³Π΅Π½Ρ‚Π°ΠΌΠΈ

Π’ = Π’Πž