ΠΠ΄Π½ΠΎΠΏΡΠΎΡ ΠΎΠ΄Π½ΡΠΉ/Π΄Π²ΡΡ ΠΏΡΠΎΡ ΠΎΠ΄Π½ΡΠΉ ΡΡΠ°Π½ΡΠ»ΡΡΠΎΡ Ρ ΡΠ·ΡΠΊΠ° ΠΌΠ°ΡΠ΅ΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΉ Π½Π° ΡΠ·ΡΠΊ Π΄Π΅ΡΠ΅Π²ΡΠ΅Π² Π²ΡΠ²ΠΎΠ΄Π°
ΠΠ° ΡΠΈΡ. 2.1 ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Π° ΠΎΠ±ΡΠ°Ρ ΡΡ Π΅ΠΌΠ° ΡΠ°Π±ΠΎΡΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ°. ΠΠ· Π½Π΅Π΅ Π²ΠΈΠ΄Π½ΠΎ, ΡΡΠΎ Π² ΡΠ΅Π»ΠΎΠΌ ΠΏΡΠΎΡΠ΅ΡΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· Π΄Π²ΡΡ ΠΎΡΠ½ΠΎΠ²Π½ΡΡ ΡΡΠ°ΠΏΠΎΠ² — Π°Π½Π°Π»ΠΈΠ·Π° ΠΈ ΡΠΈΠ½ΡΠ΅Π·Π°. ΠΠ° ΡΡΠ°ΠΏΠ΅ Π°Π½Π°Π»ΠΈΠ·Π° Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π²Π°Π½ΠΈΠ΅ ΡΠ΅ΠΊΡΡΠ° ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΈ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΡΠ°Π±Π»ΠΈΡ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΎΠ². Π Π΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠΌ Π΅Π³ΠΎ ΡΠ°Π±ΠΎΡΡ ΡΠ»ΡΠΆΠΈΡ Π½Π΅ΠΊΠΎΠ΅ Π²Π½ΡΡΡΠ΅Π½Π½Π΅Π΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΠΏΠΎΠ½ΡΡΠ½ΠΎΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΡ. ΠΠ° ΡΡΠ°ΠΏΠ΅ ΡΠΈΠ½ΡΠ΅Π·Π° Π½Π° ΠΎΡΠ½ΠΎΠ²Π°Π½ΠΈΠΈ… Π§ΠΈΡΠ°ΡΡ Π΅ΡΡ >
ΠΠ΄Π½ΠΎΠΏΡΠΎΡ ΠΎΠ΄Π½ΡΠΉ/Π΄Π²ΡΡ ΠΏΡΠΎΡ ΠΎΠ΄Π½ΡΠΉ ΡΡΠ°Π½ΡΠ»ΡΡΠΎΡ Ρ ΡΠ·ΡΠΊΠ° ΠΌΠ°ΡΠ΅ΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΉ Π½Π° ΡΠ·ΡΠΊ Π΄Π΅ΡΠ΅Π²ΡΠ΅Π² Π²ΡΠ²ΠΎΠ΄Π° (ΡΠ΅ΡΠ΅ΡΠ°Ρ, ΠΊΡΡΡΠΎΠ²Π°Ρ, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½ΡΡΠΎΠ»ΡΠ½Π°Ρ)
ΠΠ°ΡΠ΅Π΄ΡΠ° ΠΠΠ
ΠΡΡΠ΅Ρ ΠΏΠΎ ΠΊΡΡΡΠΎΠ²ΠΎΠΉ ΡΠ°Π±ΠΎΡΠ΅
ΠΏΠΎ Π΄ΠΈΡΡΠΈΠΏΠ»ΠΈΠ½Π΅
«Π‘ΠΈΡΡΠ΅ΠΌΠ½ΠΎΠ΅ ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ΅ ΠΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΠ΅»
Π½Π° ΡΠ΅ΠΌΡ
«ΠΠ΄Π½ΠΎΠΏΡΠΎΡ ΠΎΠ΄Π½ΡΠΉ/Π΄Π²ΡΡ ΠΏΡΠΎΡ ΠΎΠ΄Π½ΡΠΉ ΡΡΠ°Π½ΡΠ»ΡΡΠΎΡ Ρ ΡΠ·ΡΠΊΠ° ΠΌΠ°ΡΠ΅ΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΉ Π½Π° ΡΠ·ΡΠΊ Π΄Π΅ΡΠ΅Π²ΡΠ΅Π² Π²ΡΠ²ΠΎΠ΄Π°.
ΠΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡ ΡΠ·ΡΠΊΠ° Π΄Π΅ΡΠ΅Π²ΡΠ΅Π² Π²ΡΠ²ΠΎΠ΄Π°"
ΠΠΎΡΠΊΠ²Π° 2009
ΠΠ½Π½ΠΎΡΠ°ΡΠΈΡ
Π¦Π΅Π»Ρ Π΄Π°Π½Π½ΠΎΠΉ ΠΊΡΡΡΠΎΠ²ΠΎΠΉ ΡΠ°Π±ΠΎΡΡ:
— ΠΈΠ·ΡΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠΈΠ½ΡΠΈΠΏΠΎΠ² ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ ΡΡΠ°Π½ΡΠ»ΡΡΠΎΡΠΎΠ²
— Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠ΅ Π½Π° ΡΠ·ΡΠΊΠ΅ C++ ΠΊΠ»Π°ΡΡΠ°, ΡΠ΅Π°Π»ΠΈΠ·ΡΡΡΠ΅Π³ΠΎ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ Π½Π°Π΄ ΠΌΠ°ΡΠ΅ΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΌΠΈ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡΠΌΠΈ:
— Π»Π΅ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π°Π½Π°Π»ΠΈΠ·
— ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π°Π½Π°Π»ΠΈΠ·
— Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ
— Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΡΡΠ°Π½ΡΠ»ΡΡΠΎΡΠ° Ρ ΡΠ·ΡΠΊΠ° ΠΌΠ°ΡΠ΅ΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΉ Π½Π° ΡΠ·ΡΠΊ Π΄Π΅ΡΠ΅Π²ΡΠ΅Π² Π²ΡΠ²ΠΎΠ΄Π°
— Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΠ° ΡΠ·ΡΠΊΠ° Π΄Π΅ΡΠ΅Π²ΡΠ΅Π² Π²ΡΠ²ΠΎΠ΄Π°
Π’Π΅ΠΎΡΠ΅ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ Π²Π²Π΅Π΄Π΅Π½ΠΈΠ΅
Π’Π΅ΠΎΡΠΈΡ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ ΡΡΠ°Π½ΡΠ»ΡΡΠΎΡΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ ΠΎΠ±Π»Π°ΡΡΡΡ , ΡΠ²ΡΠ·Π°Π½Π½ΡΡ Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΠΌ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΠ΅ΠΌ. ΠΠ°ΠΆΠ½ΠΎΡΡΡ ΡΡΠΎΠΉ ΡΠ΅ΠΌΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΎΠΈΠ»Π»ΡΡΡΡΠΈΡΠΎΠ²Π°ΡΡ Π½Π° ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΡΠ·ΡΠΊΠ° Π²ΡΡΠΎΠΊΠΎΠ³ΠΎ ΡΡΠΎΠ²Π½Ρ C++: Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π½Π° C++ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π³ΠΎΡΠ°Π·Π΄ΠΎ ΠΌΠ΅Π½ΡΡΠ΅ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ, ΡΠ΅ΠΌ Π½Π° ΡΠ·ΡΠΊΠ°Ρ Π±ΠΎΠ»Π΅Π΅ Π½ΠΈΠ·ΠΊΠΎΠ³ΠΎ ΡΡΠΎΠ²Π½Ρ.
Π€ΠΎΡΠΌΠ°Π»ΡΠ½ΡΠ΅ Π³ΡΠ°ΠΌΠΌΠ°ΡΠΈΠΊΠΈ
Π€ΠΎΡΠΌΠ°Π»ΡΠ½ΠΎΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π³ΡΠ°ΠΌΠΌΠ°ΡΠΈΠΊΠΈ. Π€ΠΎΡΠΌΠ° ΠΡΠΊΡΡΠ°-ΠΠ°ΡΡΠ°
ΠΡΠ°ΠΌΠΌΠ°ΡΠΈΠΊΠ° — ΡΡΠΎ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΡΠΏΠΎΡΠΎΠ±Π° ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΡΠ·ΡΠΊΠ°. ΠΠ½ΡΠΌΠΈ ΡΠ»ΠΎΠ²Π°ΠΌΠΈ, Π³ΡΠ°ΠΌΠΌΠ°ΡΠΈΠΊΠ° — ΡΡΠΎ ΠΌΠ°ΡΠ΅ΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠ°Ρ ΡΠΈΡΡΠ΅ΠΌΠ°, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡΠ°Ρ ΡΠ·ΡΠΊ. Π€Π°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΠ² Π³ΡΠ°ΠΌΠΌΠ°ΡΠΈΠΊΡ ΡΠ·ΡΠΊΠ°, ΠΌΡ ΡΠΊΠ°Π·ΡΠ²Π°Π΅ΠΌ ΠΏΡΠ°Π²ΠΈΠ»Π° ΠΏΠΎΡΠΎΠΆΠ΄Π΅Π½ΠΈΡ ΡΠ΅ΠΏΠΎΡΠ΅ΠΊ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ², ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°ΡΠΈΡ ΡΡΠΎΠΌΡ ΡΠ·ΡΠΊΡ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Π³ΡΠ°ΠΌΠΌΠ°ΡΠΈΠΊΠ° — ΡΡΠΎ Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡ ΡΠ΅ΠΏΠΎΡΠ΅ΠΊ ΡΠ·ΡΠΊΠ°.
ΠΡΠ°Π²ΠΈΠ»ΠΎ (ΠΈΠ»ΠΈ ΠΏΡΠΎΠ΄ΡΠΊΡΠΈΡ) — ΡΡΠΎ ΡΠΏΠΎΡΡΠ΄ΠΎΡΠ΅Π½Π½Π°Ρ ΠΏΠ°ΡΠ° ΡΠ΅ΠΏΠΎΡΠ΅ΠΊ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² (?, ?). Π ΠΏΡΠ°Π²ΠΈΠ»Π°Ρ Π²Π°ΠΆΠ΅Π½ ΠΏΠΎΡΡΠ΄ΠΎΠΊ ΡΠ΅ΠΏΠΎΡΠ΅ΠΊ, ΠΏΠΎΡΡΠΎΠΌΡ ΠΈΡ ΡΠ°ΡΠ΅ Π·Π°ΠΏΠΈΡΡΠ²Π°ΡΡ Π² Π²ΠΈΠ΄Π΅? >? (ΠΈΠ»ΠΈ ?:= ?). Π’Π°ΠΊΠ°Ρ Π·Π°ΠΏΠΈΡΡ ΡΠΈΡΠ°Π΅ΡΡΡ ΠΊΠ°ΠΊ «? ΠΏΠΎΡΠΎΠΆΠ΄Π°Π΅Ρ ?» ΠΈΠ»ΠΈ «? ΠΏΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ Π΅ΡΡΡ ?».
ΠΡΠ°ΠΌΠΌΠ°ΡΠΈΠΊΠ° ΡΠ·ΡΠΊΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΏΡΠ°Π²ΠΈΠ»Π° Π΄Π²ΡΡ ΡΠΈΠΏΠΎΠ²: ΠΏΠ΅ΡΠ²ΡΠ΅ (ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡΠΈΠ΅ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ ΡΠ·ΡΠΊΠ°) Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ Π»Π΅Π³ΠΊΠΎ ΠΏΠΎΠ΄Π΄Π°ΡΡΡΡ ΡΠΎΡΠΌΠ°Π»ΡΠ½ΠΎΠΌΡ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ; Π²ΡΠΎΡΡΠ΅ (ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡΠΈΠ΅ ΡΠ΅ΠΌΠ°Π½ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ ΡΠ·ΡΠΊΠ°) ΠΎΠ±ΡΡΠ½ΠΎ ΠΈΠ·Π»Π°Π³Π°ΡΡΡΡ Π² Π½Π΅ΡΠΎΡΠΌΠ°Π»ΡΠ½ΠΎΠΉ ΡΠΎΡΠΌΠ΅. ΠΠΎΡΡΠΎΠΌΡ Π»ΡΠ±ΠΎΠ΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ (ΠΈΠ»ΠΈ ΡΡΠ°Π½Π΄Π°ΡΡ) ΡΠ·ΡΠΊΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΎΠ±ΡΡΠ½ΠΎ ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· Π΄Π²ΡΡ ΡΠ°ΡΡΠ΅ΠΉ: Π²Π½Π°ΡΠ°Π»Π΅ ΡΠΎΡΠΌΠ°Π»ΡΠ½ΠΎ ΠΈΠ·Π»Π°Π³Π°ΡΡΡΡ ΠΏΡΠ°Π²ΠΈΠ»Π° ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΉ, Π° ΠΏΠΎΡΠΎΠΌ Π½Π° Π΅ΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎΠΌ ΡΠ·ΡΠΊΠ΅ Π΄Π°Π΅ΡΡΡ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΡΠ΅ΠΌΠ°Π½ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΠΏΡΠ°Π²ΠΈΠ».
Π―Π·ΡΠΊ, Π·Π°Π΄Π°Π½Π½ΡΠΉ Π³ΡΠ°ΠΌΠΌΠ°ΡΠΈΠΊΠΎΠΉ G, ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ°Π΅ΡΡΡ ΠΊΠ°ΠΊ L (G).
ΠΠ²Π΅ Π³ΡΠ°ΠΌΠΌΠ°ΡΠΈΠΊΠΈ G ΠΈ G' Π½Π°Π·ΡΠ²Π°ΡΡΡΡ ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ½ΡΠΌΠΈ, Π΅ΡΠ»ΠΈ ΠΎΠ½ΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ ΠΎΠ΄ΠΈΠ½ ΠΈ ΡΠΎΡ ΠΆΠ΅ ΡΠ·ΡΠΊ: L (G) = L (G'). ΠΠ²Π΅ Π³ΡΠ°ΠΌΠΌΠ°ΡΠΈΠΊΠΈ G ΠΈ G' Π½Π°Π·ΡΠ²Π°ΡΡΡΡ ΠΏΠΎΡΡΠΈ ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ½ΡΠΌΠΈ, Π΅ΡΠ»ΠΈ Π·Π°Π΄Π°Π½Π½ΡΠ΅ ΠΈΠΌΠΈ ΡΠ·ΡΠΊΠΈ ΡΠ°Π·Π»ΠΈΡΠ°ΡΡΡΡ Π½Π΅ Π±ΠΎΠ»Π΅Π΅ ΡΠ΅ΠΌ Π½Π° ΠΏΡΡΡΡΡ ΡΠ΅ΠΏΠΎΡΠΊΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ²:
Π€ΠΎΡΠΌΠ°Π»ΡΠ½ΠΎ Π³ΡΠ°ΠΌΠΌΠ°ΡΠΈΠΊΠ° G ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ ΠΊΠ°ΠΊ ΡΠ΅ΡΠ²Π΅ΡΠΊΠ° G (VT, VN, P, S), Π³Π΄Π΅:
VT — ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΡΠ΅ΡΠΌΠΈΠ½Π°Π»ΡΠ½ΡΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² ΠΈΠ»ΠΈ Π°Π»ΡΠ°Π²ΠΈΡ ΡΠ΅ΡΠΌΠΈΠ½Π°Π»ΡΠ½ΡΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ²;
VN — ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Π½Π΅ΡΠ΅ΡΠΌΠΈΠ½Π°Π»ΡΠ½ΡΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² ΠΈΠ»ΠΈ Π°Π»ΡΠ°Π²ΠΈΡ Π½Π΅ΡΠ΅ΡΠΌΠΈΠ½Π°Π»ΡΠ½ΡΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ²;
Π — ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΏΡΠ°Π²ΠΈΠ» (ΠΏΡΠΎΠ΄ΡΠΊΡΠΈΠΉ) Π³ΡΠ°ΠΌΠΌΠ°ΡΠΈΠΊΠΈ, Π²ΠΈΠ΄Π°, Π³Π΄Π΅ ,
S — ΡΠ΅Π»Π΅Π²ΠΎΠΉ (Π½Π°ΡΠ°Π»ΡΠ½ΡΠΉ) ΡΠΈΠΌΠ²ΠΎΠ» Π³ΡΠ°ΠΌΠΌΠ°ΡΠΈΠΊΠΈ .
ΠΠ»ΡΠ°Π²ΠΈΡΡ ΡΠ΅ΡΠΌΠΈΠ½Π°Π»ΡΠ½ΡΡ ΠΈ Π½Π΅ΡΠ΅ΡΠΌΠΈΠ½Π°Π»ΡΠ½ΡΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² Π³ΡΠ°ΠΌΠΌΠ°ΡΠΈΠΊΠΈ Π½Π΅ ΠΏΠ΅ΡΠ΅ΡΠ΅ΠΊΠ°ΡΡΡΡ:. Π¦Π΅Π»Π΅Π²ΠΎΠΉ ΡΠΈΠΌΠ²ΠΎΠ» Π³ΡΠ°ΠΌΠΌΠ°ΡΠΈΠΊΠΈ — ΡΡΠΎ Π²ΡΠ΅Π³Π΄Π° Π½Π΅ΡΠ΅ΡΠΌΠΈΠ½Π°Π»ΡΠ½ΡΠΉ ΡΠΈΠΌΠ²ΠΎΠ». ΠΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Π½Π°Π·ΡΠ²Π°ΡΡ ΠΏΠΎΠ»Π½ΡΠΌ Π°Π»ΡΠ°Π²ΠΈΡΠΎΠΌ Π³ΡΠ°ΠΌΠΌΠ°ΡΠΈΠΊΠΈ G.
ΠΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΡΠ΅ΡΠΌΠΈΠ½Π°Π»ΡΠ½ΡΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² VT ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠΈΠΌΠ²ΠΎΠ»Ρ, ΠΊΠΎΡΠΎΡΡΠ΅ Π²Ρ ΠΎΠ΄ΡΡ Π² Π°Π»ΡΠ°Π²ΠΈΡ ΡΠ·ΡΠΊΠ°, ΠΏΠΎΡΠΎΠΆΠ΄Π°Π΅ΠΌΠΎΠ³ΠΎ Π³ΡΠ°ΠΌΠΌΠ°ΡΠΈΠΊΠΎΠΉ. ΠΠ°ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ, ΡΠΈΠΌΠ²ΠΎΠ»Ρ ΠΈΠ· ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π° VT Π²ΡΡΡΠ΅ΡΠ°ΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π² ΡΠ΅ΠΏΠΎΡΠΊΠ°Ρ ΠΏΡΠ°Π²ΡΡ ΡΠ°ΡΡΠ΅ΠΉ ΠΏΡΠ°Π²ΠΈΠ». ΠΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Π½Π΅ΡΠ΅ΡΠΌΠΈΠ½Π°Π»ΡΠ½ΡΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² VN ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠΈΠΌΠ²ΠΎΠ»Ρ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ ΡΠ»ΠΎΠ²Π°, ΠΏΠΎΠ½ΡΡΠΈΡ, ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ ΡΠ·ΡΠΊΠ°. ΠΠ°ΠΆΠ΄ΡΠΉ ΡΠΈΠΌΠ²ΠΎΠ» ΡΡΠΎΠ³ΠΎ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π° ΠΌΠΎΠΆΠ΅Ρ Π²ΡΡΡΠ΅ΡΠ°ΡΡΡΡ Π² ΡΠ΅ΠΏΠΎΡΠΊΠ°Ρ ΠΊΠ°ΠΊ Π»Π΅Π²ΠΎΠΉ, ΡΠ°ΠΊ ΠΈ ΠΏΡΠ°Π²ΠΎΠΉ ΡΠ°ΡΡΠ΅ΠΉ ΠΏΡΠ°Π²ΠΈΠ» Π³ΡΠ°ΠΌΠΌΠ°ΡΠΈΠΊΠΈ, Π½ΠΎ ΠΎΠ½ ΠΎΠ±ΡΠ·Π°Π½ Ρ ΠΎΡΡ Π±Ρ ΠΎΠ΄ΠΈΠ½ ΡΠ°Π· Π±ΡΡΡ Π² Π»Π΅Π²ΠΎΠΉ ΡΠ°ΡΡΠΈ Ρ ΠΎΡΡ Π±Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΡΠ°Π²ΠΈΠ»Π°.
ΠΠΎ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π΅ ΠΏΡΠ°Π²ΠΈΠ» Π³ΡΠ°ΠΌΠΌΠ°ΡΠΈΠΊΠΈ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΡΠ°Π²ΠΈΠ», ΠΈΠΌΠ΅ΡΡΠΈΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΠ΅ Π»Π΅Π²ΡΠ΅ ΡΠ°ΡΡΠΈ, Π²ΠΈΠ΄Π°:. Π’ΠΎΠ³Π΄Π° ΡΡΠΈ ΠΏΡΠ°Π²ΠΈΠ»Π° ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΡΡΡ Π²ΠΌΠ΅ΡΡΠ΅ ΠΈ Π·Π°ΠΏΠΈΡΡΠ²Π°ΡΡ Π² Π²ΠΈΠ΄Π΅:. ΠΠ΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠ΅ Π² ΡΠ°ΠΊΠΎΠΉ Π·Π°ΠΏΠΈΡΠΈ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ ΡΡΠ°Π·Ρ n ΠΏΡΠ°Π²ΠΈΠ».
Π’Π°ΠΊΡΡ ΡΠΎΡΠΌΡ Π·Π°ΠΏΠΈΡΠΈ ΠΏΡΠ°Π²ΠΈΠ» Π³ΡΠ°ΠΌΠΌΠ°ΡΠΈΠΊΠΈ Π½Π°Π·ΡΠ²Π°ΡΡ ΡΠΎΡΠΌΠΎΠΉ ΠΡΠΊΡΡΠ°-ΠΠ°ΡΡΠ°. Π€ΠΎΡΠΌΠ° ΠΡΠΊΡΡΠ°-ΠΠ°ΡΡΠ° ΠΏΡΠ΅Π΄ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅Ρ, ΠΊΠ°ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ, ΡΠ°ΠΊΠΆΠ΅, ΡΡΠΎ Π½Π΅ΡΠ΅ΡΠΌΠΈΠ½Π°Π»ΡΠ½ΡΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»Ρ Π±Π΅ΡΡΡΡΡ Π² ΡΠ³Π»ΠΎΠ²ΡΠ΅ ΡΠΊΠΎΠ±ΠΊΠΈ: < >.
ΠΡΠΈΠΌΠ΅Ρ Π³ΡΠ°ΠΌΠΌΠ°ΡΠΈΠΊΠΈ, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡΠ΅ΠΉ ΡΠ·ΡΠΊ ΡΠ΅Π»ΡΡ Π΄Π΅ΡΡΡΠΈΡΠ½ΡΡ ΡΠΈΡΠ΅Π» ΡΠΎ Π·Π½Π°ΠΊΠΎΠΌ:
Π‘ ({0,1,2. 3,4.5. 6,7.8.9.-,+}, {<οΏ½ΡΠΈΡΠ»ΠΎ>,<οΏ½ΡΡ>.<οΏ½ΡΠΈΡΡΠ°>}, Π ,<οΏ½ΡΠΈΡΠ»ΠΎ>)
P:
<<οΏ½ΡΠΈΡΠ»ΠΎ> -> <οΏ½ΡΡ> | +<οΏ½ΡΡ> | -<οΏ½ΡΡ>
<<οΏ½ΡΡ> -> <οΏ½ΡΠΈΡΡΠ°> | <οΏ½ΡΡ><οΏ½ΡΠΈΡΡΠ°>
<<οΏ½ΡΠΈΡΡΠ°> ->0|1|2|3|4|5|6|7|8|9
Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΡΠΎΡΡΠ°Π²Π»ΡΡΡΠΈΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ Π³ΡΠ°ΠΌΠΌΠ°ΡΠΈΠΊΠΈ G:
Β· ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΡΠ΅ΡΠΌΠΈΠ½Π°Π»ΡΠ½ΡΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² VT ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π΄Π²Π΅Π½Π°Π΄ΡΠ°ΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ²: Π΄Π΅ΡΡΡΡ Π΄Π΅ΡΡΡΠΈΡΠ½ΡΡ ΡΠΈΡΡ ΠΈ Π΄Π²Π° Π·Π½Π°ΠΊΠ°;
Β· ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Π½Π΅ΡΠ΅ΡΠΌΠΈΠ½Π°Π»ΡΠ½ΡΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² VN ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΡΠΈ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°: ΡΠΈΠΌΠ²ΠΎΠ»Ρ <οΏ½ΡΠΈΡΠ»ΠΎ>, <οΏ½ΡΡ> ΠΈ <οΏ½ΡΠΈΡΡΠ°>;
Β· ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΏΡΠ°Π²ΠΈΠ» ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ 15 ΠΏΡΠ°Π²ΠΈΠ», ΠΊΠΎΡΠΎΡΡΠ΅ Π·Π°ΠΏΠΈΡΠ°Π½Ρ Π² ΡΡΠΈ ΡΡΡΠΎΠΊΠΈ (ΡΠΎ Π΅ΡΡΡ ΠΈΠΌΠ΅Π΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΡΠΈ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΠΏΡΠ°Π²ΡΡ ΡΠ°ΡΡΠΈ ΠΏΡΠ°Π²ΠΈΠ»);
Β· ΡΠ΅Π»Π΅Π²ΡΠΌ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠΌ Π³ΡΠ°ΠΌΠΌΠ°ΡΠΈΠΊΠΈ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΈΠΌΠ²ΠΎΠ» <οΏ½ΡΠΈΡΠ»ΠΎ>.
ΠΠ°Π·Π²Π°Π½ΠΈΡ Π½Π΅ΡΠ΅ΡΠΌΠΈΠ½Π°Π»ΡΠ½ΡΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² Π½Π΅ ΠΎΠ±ΡΠ·Π°Π½Ρ Π±ΡΡΡ ΠΎΡΠΌΡΡΠ»Π΅Π½Π½ΡΠΌΠΈ. ΠΡΠΎ ΡΠ΄Π΅Π»Π°Π½ΠΎ Π΄Π»Ρ ΡΠ΄ΠΎΠ±ΡΡΠ²Π° ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΡ ΠΏΡΠ°Π²ΠΈΠ» Π³ΡΠ°ΠΌΠΌΠ°ΡΠΈΠΊΠΈ ΡΠ΅Π»ΠΎΠ²Π΅ΠΊΠΎΠΌ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ Π½Π° ΡΠ·ΡΠΊΠ΅ Pascal ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΠΈΠΌΠ΅Π½Π° ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΎΠ², ΠΈ ΠΏΡΠΈ ΡΡΠΎΠΌ Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡΡ ΡΠΌΡΡΠ» ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ. ΠΠ»Ρ ΡΠ΅ΡΠΌΠΈΠ½Π°Π»ΡΠ½ΡΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² ΡΡΠΎ Π½Π΅Π²Π΅ΡΠ½ΠΎ. ΠΠ°Π±ΠΎΡ ΡΠ΅ΡΠΌΠΈΠ½Π°Π»ΡΠ½ΡΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² Π²ΡΠ΅Π³Π΄Π° ΡΡΡΠΎΠ³ΠΎ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ Π°Π»ΡΠ°Π²ΠΈΡΡ ΡΠ·ΡΠΊΠ°, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΠΌΠΎΠ³ΠΎ Π³ΡΠ°ΠΌΠΌΠ°ΡΠΈΠΊΠΎΠΉ.
ΠΡΠΈΠ½ΡΠΈΠΏ ΡΠ΅ΠΊΡΡΡΠΈΠΈ Π² ΠΏΡΠ°Π²ΠΈΠ»Π°Ρ Π³ΡΠ°ΠΌΠΌΠ°ΡΠΈΠΊΠΈ
ΠΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΡ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π½Π½ΡΡ Π²ΡΡΠ΅ ΡΠΎΡΠΌΠ°Π»ΡΠ½ΡΡ Π³ΡΠ°ΠΌΠΌΠ°ΡΠΈΠΊ Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΎΠ½ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ Π±Π΅ΡΠΊΠΎΠ½Π΅ΡΠ½ΠΎΠ΅ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΡΠ΅ΠΏΠΎΡΠ΅ΠΊ ΡΠ·ΡΠΊΠ° Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΠ½Π΅ΡΠ½ΠΎΠ³ΠΎ Π½Π°Π±ΠΎΡΠ° ΠΏΡΠ°Π²ΠΈΠ». ΠΡΠΈΠ²Π΅Π΄Π΅Π½Π½Π°Ρ Π²ΡΡΠ΅ Π² ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Π³ΡΠ°ΠΌΠΌΠ°ΡΠΈΠΊΠ° Π΄Π»Ρ ΡΠ΅Π»ΡΡ Π΄Π΅ΡΡΡΠΈΡΠ½ΡΡ ΡΠΈΡΠ΅Π» ΡΠΎ Π·Π½Π°ΠΊΠΎΠΌ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ Π±Π΅ΡΠΊΠΎΠ½Π΅ΡΠ½ΠΎΠ΅ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΡΠ΅Π»ΡΡ ΡΠΈΡΠ΅Π» Ρ ΠΏΠΎΠΌΠΎΡΡΡ 15 ΠΏΡΠ°Π²ΠΈΠ». Π ΡΠ°ΠΊΠΎΠΉ ΡΠΎΡΠΌΠ΅ Π·Π°ΠΏΠΈΡΠΈ Π³ΡΠ°ΠΌΠΌΠ°ΡΠΈΠΊΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΠΊΠΎΠ½Π΅ΡΠ½ΡΠΌ Π½Π°Π±ΠΎΡΠΎΠΌ ΠΏΡΠ°Π²ΠΈΠ» Π΄ΠΎΡΡΠΈΠ³Π°Π΅ΡΡΡ Π·Π° ΡΡΠ΅Ρ ΡΠ΅ΠΊΡΡΡΠΈΠ²Π½ΡΡ ΠΏΡΠ°Π²ΠΈΠ». Π Π΅ΠΊΡΡΡΠΈΡ Π² ΠΏΡΠ°Π²ΠΈΠ»Π°Ρ Π³ΡΠ°ΠΌΠΌΠ°ΡΠΈΠΊΠΈ Π²ΡΡΠ°ΠΆΠ°Π΅ΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π½Π΅ΡΠ΅ΡΠΌΠΈΠ½Π°Π»ΡΠ½ΡΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ ΡΠ°ΠΌ ΡΠ΅ΡΠ΅Π· ΡΠ΅Π±Ρ. Π Π΅ΠΊΡΡΡΠΈΡ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎΠΉ (ΡΠ²Π½ΠΎΠΉ) — ΡΠΎΠ³Π΄Π° ΡΠΈΠΌΠ²ΠΎΠ» ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ ΡΠ°ΠΌ ΡΠ΅ΡΠ΅Π· ΡΠ΅Π±Ρ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΏΡΠ°Π²ΠΈΠ»Π΅, Π»ΠΈΠ±ΠΎ ΠΊΠΎΡΠ²Π΅Π½Π½ΠΎΠΉ (Π½Π΅ΡΠ²Π½ΠΎΠΉ) — ΡΠΎΠ³Π΄Π° ΡΠΎ ΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΡΠ΅ΡΠ΅Π· ΡΠ΅ΠΏΠΎΡΠΊΡ ΠΏΡΠ°Π²ΠΈΠ».
Π ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π½Π½ΠΎΠΉ Π²ΡΡΠ΅ Π³ΡΠ°ΠΌΠΌΠ°ΡΠΈΠΊΠ΅ G Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½Π°Ρ ΡΠ΅ΠΊΡΡΡΠΈΡ ΠΏΡΠΈΡΡΡΡΡΠ²ΡΠ΅Ρ Π² ΠΏΡΠ°Π²ΠΈΠ»Π΅: <οΏ½ΡΡ> <οΏ½ΡΡ><οΏ½ΡΠΈΡΡΠ°>.
Π§ΡΠΎΠ±Ρ ΡΠ΅ΠΊΡΡΡΠΈΡ Π½Π΅ Π±ΡΠ»Π° Π±Π΅ΡΠΊΠΎΠ½Π΅ΡΠ½ΠΎΠΉ, Π΄Π»Ρ ΡΡΠ°ΡΡΠ²ΡΡΡΠ΅Π³ΠΎ Π² Π½Π΅ΠΉ Π½Π΅ΡΠ΅ΡΠΌΠΈΠ½Π°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠΈΠΌΠ²ΠΎΠ»Π° Π³ΡΠ°ΠΌΠΌΠ°ΡΠΈΠΊΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΡΡΠ΅ΡΡΠ²ΠΎΠ²Π°ΡΡ ΡΠ°ΠΊΠΆΠ΅ ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ ΠΏΡΠ°Π²ΠΈΠ»Π°, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ Π΅Π³ΠΎ, ΠΌΠΈΠ½ΡΡ Π΅Π³ΠΎ ΡΠ°ΠΌΠΎΠ³ΠΎ, ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ Π±Π΅ΡΠΊΠΎΠ½Π΅ΡΠ½ΠΎΠ³ΠΎ ΡΠ΅ΠΊΡΡΡΠΈΠ²Π½ΠΎΠ³ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ (Π² ΠΏΡΠΎΡΠΈΠ²Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΡΠΎΡ ΡΠΈΠΌΠ²ΠΎΠ» Π² Π³ΡΠ°ΠΌΠΌΠ°ΡΠΈΠΊΠ΅ Π±ΡΠ» Π±Ρ ΠΏΡΠΎΡΡΠΎ Π½Π΅ Π½ΡΠΆΠ΅Π½). Π’Π°ΠΊΠΈΠΌΠΈ ΠΏΡΠ°Π²ΠΈΠ»Π°ΠΌΠΈ ΡΠ²Π»ΡΡΡΡΡ <οΏ½ΡΡ><οΏ½ΡΠΈΡΡΠ°> - Π² Π³ΡΠ°ΠΌΠΌΠ°ΡΠΈΠΊΠ΅ G.
Π ΡΠ΅ΠΎΡΠΈΠΈ ΡΠΎΡΠΌΠ°Π»ΡΠ½ΡΡ ΡΠ·ΡΠΊΠΎΠ² Π±ΠΎΠ»Π΅Π΅ Π½ΠΈΡΠ΅Π³ΠΎ ΡΠΊΠ°Π·Π°ΡΡ ΠΎ ΡΠ΅ΠΊΡΡΡΠΈΠΈ Π½Π΅Π»ΡΠ·Ρ. ΠΠΎ ΡΡΠΎΠ±Ρ ΠΏΠΎΠ»Π½Π΅Π΅ ΠΏΠΎΠ½ΡΡΡ ΡΠΌΡΡΠ» ΡΠ΅ΠΊΡΡΡΠΈΠΈ, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΈΠ±Π΅Π³Π½ΡΡΡ ΠΊ ΡΠ΅ΠΌΠ°Π½ΡΠΈΠΊΠ΅ ΡΠ·ΡΠΊΠ° — Π² ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π½Π½ΠΎΠΌ Π²ΡΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΡΡΠΎ ΡΠ·ΡΠΊ ΡΠ΅Π»ΡΡ Π΄Π΅ΡΡΡΠΈΡΠ½ΡΡ ΡΠΈΡΠ΅Π» ΡΠΎ Π·Π½Π°ΠΊΠΎΠΌ. Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ Π΅Π³ΠΎ ΡΠΌΡΡΠ».
ΠΡΠ»ΠΈ ΠΏΠΎΠΏΡΡΠ°ΡΡΡΡ Π΄Π°ΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΡΠΎΠΌΡ, ΡΡΠΎ ΠΆΠ΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΈΡΠ»ΠΎΠΌ, ΡΠΎ Π½Π°ΡΠ°ΡΡ ΠΌΠΎΠΆΠ½ΠΎ Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎ Π»ΡΠ±Π°Ρ ΡΠΈΡΡΠ° ΡΠ°ΠΌΠ° ΠΏΠΎ ΡΠ΅Π±Π΅ Π΅ΡΡΡ ΡΠΈΡΠ»ΠΎ. ΠΠ°Π»Π΅Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΌΠ΅ΡΠΈΡΡ, ΡΡΠΎ Π»ΡΠ±ΡΠ΅ Π΄Π²Π΅ ΡΠΈΡΡΡ — ΡΡΠΎ ΡΠΎΠΆΠ΅ ΡΠΈΡΠ»ΠΎ, Π·Π°ΡΠ΅ΠΌ — ΡΡΠΈ ΡΠΈΡΡΡ ΠΈ Ρ. Π΄. ΠΡΠ»ΠΈ ΡΡΡΠΎΠΈΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΡΠΈΡΠ»Π° ΡΠ°ΠΊΠΈΠΌ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ, ΡΠΎ ΠΎΠ½ΠΎ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π±ΡΠ΄Π΅Ρ Π·Π°ΠΊΠΎΠ½ΡΠ΅Π½ΠΎ (Π² ΠΌΠ°ΡΠ΅ΠΌΠ°ΡΠΈΠΊΠ΅ ΡΠ°Π·ΡΡΠ΄Π½ΠΎΡΡΡ ΡΠΈΡΠ»Π° Π½ΠΈΡΠ΅ΠΌ Π½Π΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π°). ΠΠ΄Π½Π°ΠΊΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΌΠ΅ΡΠΈΡΡ, ΡΡΠΎ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π·, ΠΏΠΎΡΠΎΠΆΠ΄Π°Ρ Π½ΠΎΠ²ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ, ΠΌΡ ΠΏΡΠΎΡΡΠΎ Π΄ΠΎΠΏΠΈΡΡΠ²Π°Π΅ΠΌ ΡΠΈΡΡΡ ΡΠΏΡΠ°Π²Π° (ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΏΡΠΈΠ²ΡΠΊΠ»ΠΈ ΠΏΠΈΡΠ°ΡΡ ΡΠ»Π΅Π²Π° Π½Π°ΠΏΡΠ°Π²ΠΎ) ΠΊ ΡΠΆΠ΅ Π½Π°ΠΏΠΈΡΠ°Π½Π½ΠΎΠΌΡ ΡΡΠ΄Ρ ΡΠΈΡΡ. Π ΡΡΠΎΡ ΡΡΠ΄ ΡΠΈΡΡ, Π½Π°ΡΠΈΠ½Π°Ρ ΠΎΡ ΠΎΠ΄Π½ΠΎΠΉ ΡΠΈΡΡΡ, ΡΠΎΠΆΠ΅ Π² ΡΠ²ΠΎΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΈΡΠ»ΠΎΠΌ. Π’ΠΎΠ³Π΄Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π΄Π»Ρ ΠΏΠΎΠ½ΡΡΠΈΡ «ΡΠΈΡΠ»ΠΎ» ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΡΡΠΎΠΈΡΡ ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ: «ΡΠΈΡΠ»ΠΎ — ΡΡΠΎ Π»ΡΠ±Π°Ρ ΡΠΈΡΡΠ° Π»ΠΈΠ±ΠΎ Π΄ΡΡΠ³ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ, ΠΊ ΠΊΠΎΡΠΎΡΠΎΠΌΡ ΡΠΏΡΠ°Π²Π° Π΄ΠΎΠΏΠΈΡΠ°Π½Π° Π»ΡΠ±Π°Ρ ΡΠΈΡΡΠ°». ΠΠΌΠ΅Π½Π½ΠΎ ΡΡΠΎ ΠΈ ΡΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΎΡΠ½ΠΎΠ²Ρ ΠΏΡΠ°Π²ΠΈΠ» Π³ΡΠ°ΠΌΠΌΠ°ΡΠΈΠΊΠΈ G ΠΈ ΠΎΡΡΠ°ΠΆΠ΅Π½ΠΎ Π² ΠΏΡΠ°Π²ΠΈΠ»Π°Ρ
<οΏ½ΡΡ> <οΏ½ΡΠΈΡΡΠ°> | <οΏ½ΡΡ><οΏ½ΡΠΈΡΡΠ°>. ΠΡΡΠ³ΠΈΠ΅ ΠΏΡΠ°Π²ΠΈΠ»Π° Π² ΡΡΠΎΠΉ Π³ΡΠ°ΠΌΠΌΠ°ΡΠΈΠΊΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΠΊ ΡΠΈΡΠ»Ρ Π·Π½Π°ΠΊ ΠΈ Π΄Π°ΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ½ΡΡΠΈΡ «ΡΠΈΡΡΠ°».
ΠΡΠΈΠ½ΡΠΈΠΏ ΡΠ΅ΠΊΡΡΡΠΈΠΈ — Π²Π°ΠΆΠ½ΠΎΠ΅ ΠΏΠΎΠ½ΡΡΠΈΠ΅ Π² ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠΈ ΠΎ ΡΠΎΡΠΌΠ°Π»ΡΠ½ΡΡ Π³ΡΠ°ΠΌΠΌΠ°ΡΠΈΠΊΠ°Ρ . Π’Π°ΠΊ ΠΈΠ»ΠΈ ΠΈΠ½Π°ΡΠ΅, ΡΠ²Π½ΠΎ ΠΈΠ»ΠΈ Π½Π΅ΡΠ²Π½ΠΎ ΡΠ΅ΠΊΡΡΡΠΈΡ Π²ΡΠ΅Π³Π΄Π° ΠΏΡΠΈΡΡΡΡΡΠ²ΡΠ΅Ρ Π² Π³ΡΠ°ΠΌΠΌΠ°ΡΠΈΠΊΠ°Ρ Π»ΡΠ±ΡΡ ΡΠ΅Π°Π»ΡΠ½ΡΡ ΡΠ·ΡΠΊΠΎΠ² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ. ΠΠΌΠ΅Π½Π½ΠΎ ΠΎΠ½Π° ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΡΡΠΎΠΈΡΡ Π±Π΅ΡΠΊΠΎΠ½Π΅ΡΠ½ΠΎΠ΅ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΡΠ΅ΠΏΠΎΡΠ΅ΠΊ ΡΠ·ΡΠΊΠ°. ΠΠ°ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ, Π² Π³ΡΠ°ΠΌΠΌΠ°ΡΠΈΠΊΠ΅ ΡΠ΅Π°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠ·ΡΠΊΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡΡΡ Π½Π΅ ΠΎΠ΄Π½ΠΎ, Π° ΡΠ΅Π»ΠΎΠ΅ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΏΡΠ°Π²ΠΈΠ», ΠΏΠΎΡΡΡΠΎΠ΅Π½Π½ΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠ΅ΠΊΡΡΡΠΈΠΈ.
ΠΠ°Π΄Π°ΡΠ° ΡΠ°Π·Π±ΠΎΡΠ°
ΠΠ»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠ·ΡΠΊΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π²Π°ΠΆΠ½ΠΎ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΡΠΌΠ΅ΡΡ ΠΏΠΎΡΡΡΠΎΠΈΡΡ ΡΠ΅ΠΊΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π½Π° ΡΡΠΎΠΌ ΡΠ·ΡΠΊΠ΅, Π½ΠΎ ΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ½ΠΎΡΡΡ ΠΈΠΌΠ΅ΡΡΠ΅Π³ΠΎΡΡ ΡΠ΅ΠΊΡΡΠ° ΠΊ Π΄Π°Π½Π½ΠΎΠΌΡ ΡΠ·ΡΠΊΡ. ΠΠΌΠ΅Π½Π½ΠΎ ΡΡΡ Π·Π°Π΄Π°ΡΡ ΡΠ΅ΡΠ°ΡΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΡ Π² ΡΠΈΡΠ»Π΅ ΠΏΡΠΎΡΠΈΡ Π·Π°Π΄Π°Ρ (ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ°ΡΠΏΠΎΠ·Π½Π°ΡΡ ΠΈΡΡ ΠΎΠ΄Π½ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, Π½ΠΎ ΠΈ ΠΏΠΎΡΡΡΠΎΠΈΡΡ ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ½ΡΡ Π΅ΠΉ ΡΠ΅Π·ΡΠ»ΡΡΠΈΡΡΡΡΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ). Π ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠΈ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ Π²ΡΡΡΡΠΏΠ°Π΅Ρ ΠΊΠ°ΠΊ ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π²Π°ΡΠ΅Π»Ρ, Π° ΡΠ΅Π»ΠΎΠ²Π΅ΠΊ, ΡΠΎΠ·Π΄Π°Π²ΡΠΈΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π½Π° Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠΌ ΡΠ·ΡΠΊΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ, Π²ΡΡΡΡΠΏΠ°Π΅Ρ Π² ΡΠΎΠ»ΠΈ Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡΠ° ΡΠ΅ΠΏΠΎΡΠ΅ΠΊ ΡΡΠΎΠ³ΠΎ ΡΠ·ΡΠΊΠ°.
ΠΡΠ°ΠΌΠΌΠ°ΡΠΈΠΊΠΈ ΠΈ ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π²Π°ΡΠ΅Π»ΠΈ — Π΄Π²Π° Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΡΡ ΠΌΠ΅ΡΠΎΠ΄Π°, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ΅Π°Π»ΡΠ½ΠΎ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½Ρ Π΄Π»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Π»ΠΈΠ±ΠΎ ΡΠ·ΡΠΊΠ°. ΠΠ΄Π½Π°ΠΊΠΎ ΠΏΡΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ° Π΄Π»Ρ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΡΠ·ΡΠΊΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ Π·Π°Π΄Π°ΡΠ°, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΡΠ΅Π±ΡΠ΅Ρ ΡΠ²ΡΠ·Π°ΡΡ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠΎΠ±ΠΎΠΉ ΡΡΠΈ ΠΌΠ΅ΡΠΎΠ΄Ρ Π·Π°Π΄Π°Π½ΠΈΡ ΡΠ·ΡΠΊΠΎΠ². Π Π°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠΎΠ² ΠΈΠ½ΡΠ΅ΡΠ΅ΡΡΡΡ, ΠΏΡΠ΅ΠΆΠ΄Π΅ Π²ΡΠ΅Π³ΠΎ, ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ ΡΠ·ΡΠΊΠΎΠ² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ. ΠΠ»Ρ ΡΡΠΈΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΉ Π΄ΠΎΠΊΠ°Π·Π°Π½ΠΎ, ΡΡΠΎ Π·Π°Π΄Π°ΡΠ° ΡΠ°Π·Π±ΠΎΡΠ° Π΄Π»Ρ Π½ΠΈΡ ΡΠ°Π·ΡΠ΅ΡΠΈΠΌΠ°. ΠΠΎΠ»Π΅Π΅ ΡΠΎΠ³ΠΎ, Π΄Π»Ρ Π½ΠΈΡ Π½Π°ΠΉΠ΄Π΅Π½Ρ ΡΠΎΡΠΌΠ°Π»ΡΠ½ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ Π΅Π΅ ΡΠ΅ΡΠ΅Π½ΠΈΡ. ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΠ·ΡΠΊΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π½Π΅ ΡΠ²Π»ΡΡΡΡΡ ΡΠΈΡΡΠΎ ΡΠΎΡΠΌΠ°Π»ΡΠ½ΡΠΌΠΈ ΡΠ·ΡΠΊΠ°ΠΌΠΈ ΠΈ Π½Π΅ΡΡΡ Π² ΡΠ΅Π±Π΅ Π½Π΅ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΌΡΡΠ» (ΡΠ΅ΠΌΠ°Π½ΡΠΈΠΊΡ), ΡΠΎ Π·Π°Π΄Π°ΡΠ° ΡΠ°Π·Π±ΠΎΡΠ° Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠ΅Π°Π»ΡΠ½ΡΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠΎΠ² ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅ΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠΈΡΠ΅, ΡΠ΅ΠΌ ΠΎΠ½Π° ΡΠΎΡΠΌΡΠ»ΠΈΡΡΠ΅ΡΡΡ Π΄Π»Ρ ΡΠΈΡΡΠΎ ΡΠΎΡΠΌΠ°Π»ΡΠ½ΡΡ ΡΠ·ΡΠΊΠΎΠ². ΠΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π½Π΅ ΠΏΡΠΎΡΡΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ½ΠΎΡΡΡ Π²Ρ ΠΎΠ΄Π½ΠΎΠΉ ΡΠ΅ΠΏΠΎΡΠΊΠΈ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² Π·Π°Π΄Π°Π½Π½ΠΎΠΌΡ ΡΠ·ΡΠΊΡ, Π½ΠΎ ΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ Π΅Π΅ ΡΠΌΡΡΠ»ΠΎΠ²ΡΡ Π½Π°Π³ΡΡΠ·ΠΊΡ. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π²ΡΡΠ²ΠΈΡΡ ΡΠ΅ ΠΏΡΠ°Π²ΠΈΠ»Π° Π³ΡΠ°ΠΌΠΌΠ°ΡΠΈΠΊΠΈ, Π½Π° ΠΎΡΠ½ΠΎΠ²Π°Π½ΠΈΠΈ ΠΊΠΎΡΠΎΡΡΡ ΡΠ΅ΠΏΠΎΡΠΊΠ° Π±ΡΠ»Π° ΠΏΠΎΡΡΡΠΎΠ΅Π½Π°.
ΠΡΠ»ΠΈ ΠΆΠ΅ Π²Ρ ΠΎΠ΄Π½Π°Ρ ΡΠ΅ΠΏΠΎΡΠΊΠ° ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² Π½Π΅ ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ Π·Π°Π΄Π°Π½Π½ΠΎΠΌΡ ΡΠ·ΡΠΊΡ — ΠΈΡΡ ΠΎΠ΄Π½Π°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΎΡΠΈΠ±ΠΊΡ, — ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π½Π΅ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎ ΠΏΡΠΎΡΡΠΎ ΡΠ·Π½Π°ΡΡ ΡΠ°ΠΌ ΡΠ°ΠΊΡ Π½Π°Π»ΠΈΡΠΈΡ ΠΎΡΠΈΠ±ΠΊΠΈ. Π Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π·Π°Π΄Π°ΡΠ° ΡΠ°Π·Π±ΠΎΡΠ° ΡΠ°ΠΊΠΆΠ΅ ΡΠ°ΡΡΠΈΡΡΠ΅ΡΡΡ: ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π²Π°ΡΠ΅Π»Ρ Π² ΡΠΎΡΡΠ°Π²Π΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ° Π΄ΠΎΠ»ΠΆΠ΅Π½ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΡΠ°ΠΊΡ ΠΏΡΠΈΡΡΡΡΡΠ²ΠΈΡ ΠΎΡΠΈΠ±ΠΊΠΈ Π²ΠΎ Π²Ρ ΠΎΠ΄Π½ΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅, Π½ΠΎ ΠΈ ΠΏΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΡΠΈΠΏ ΠΎΡΠΈΠ±ΠΊΠΈ ΠΈ ΡΠΎ ΠΌΠ΅ΡΡΠΎ Π²ΠΎ Π²Ρ ΠΎΠ΄Π½ΠΎΠΉ ΡΠ΅ΠΏΠΎΡΠΊΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ², Π³Π΄Π΅ ΠΎΠ½Π° Π²ΡΡΡΠ΅ΡΠ°Π΅ΡΡΡ.
ΠΠΈΠ΄Ρ ΡΠ΅ΠΊΡΡΡΠΈΠΉ ΠΈ ΡΠ°Π·Π±ΠΎΡΠ°
ΠΡΠ°Π²ΠΈΠ»Π°, ΠΈΠΌΠ΅ΡΡΠΈΠ΅ Π²ΠΈΠ΄
1) T-> T * A
2) T-> A * T
ΠΠ°Π·ΡΠ²Π°ΡΡΡΡ Π»Π΅Π²ΠΎΡΠ΅ΠΊΡΡΡΠΈΠ²Π½ΡΠΌΠΈ ΠΈ ΠΏΡΠ°Π²ΠΎΡΠ΅ΠΊΡΡΡΠΈΠ²Π½ΡΠΌΠΈ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ.
Π Π°Π·Π±ΠΎΡ Π²Ρ ΠΎΠ΄Π½ΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΊΠ°ΠΊ Π½ΠΈΡΡ ΠΎΠ΄ΡΡΠΈΠΌ ΡΠ°ΠΊ ΠΈ Π²ΠΎΡΡ ΠΎΠ΄ΡΡΠΈΠΌ. ΠΡΠΈ Π½ΠΈΡΡ ΠΎΠ΄ΡΡΠ΅ΠΌ ΡΠ°Π·Π±ΠΎΡΠ΅ Π½Π΅Π΄ΠΎΠΏΡΡΡΠΈΠΌΠ° Π»Π΅Π²Π°Ρ ΡΠ΅ΠΊΡΡΡΠΈΡ Π² ΠΏΡΠ°Π²ΠΈΠ»Π°Ρ , Ρ. ΠΊ. ΠΎΠ½Π° ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ Π±Π΅ΡΠΊΠΎΠ½Π΅ΡΠ½ΠΎΠΌΡ Π·Π°ΡΠΈΠΊΠ»ΠΈΠ²Π°Π½ΠΈΡ. ΠΠ΅Π²ΡΡ ΡΠ΅ΠΊΡΡΡΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°ΡΡ Π² ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΡΡ ΠΏΡΠ°Π²ΠΎΡΠ΅ΠΊΡΡΡΠΈΠ²Π½ΡΡ ΡΠΎΡΠΌΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
T-> A M
M-> * A | M
ΠΡΠΈ Π²ΠΎΡΡ ΠΎΠ΄ΡΡΠ΅ΠΌ ΡΠ°Π·Π±ΠΎΡΠ΅ Π² ΠΏΡΠ°Π²ΠΈΠ»Π°Ρ Π½Π΅Π΄ΠΎΠΏΡΡΡΠΈΠΌΠ° ΠΏΡΠ°Π²Π°Ρ ΡΠ΅ΠΊΡΡΡΠΈΡ. ΠΠ½Π°Π»ΠΎΠ³ΠΈΡΠ½ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²ΡΠ²Π°ΡΡΡΡ ΠΏΡΠ°Π²ΠΈΠ»Π° Ρ ΠΏΡΠ°Π²ΠΎΠΉ ΡΠ΅ΠΊΡΡΡΠΈΠ΅ΠΉ Π² ΠΏΡΠ°Π²ΠΈΠ»Π° Ρ Π»Π΅Π²ΠΎΠΉ ΡΠ΅ΠΊΡΡΡΠΈΠ΅ΠΉ.
ΠΠ»Π°ΡΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ ΡΠ·ΡΠΊΠΎΠ² ΠΈ Π³ΡΠ°ΠΌΠΌΠ°ΡΠΈΠΊ
Π§Π΅ΠΌ ΡΠ»ΠΎΠΆΠ½Π΅Π΅ ΡΠ·ΡΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΡΠ΅ΠΌ Π²ΡΡΠ΅ Π²ΡΡΠΈΡΠ»ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ Π·Π°ΡΡΠ°ΡΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ° Π½Π° Π°Π½Π°Π»ΠΈΠ· ΡΠ΅ΠΏΠΎΡΠ΅ΠΊ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, Π½Π°ΠΏΠΈΡΠ°Π½Π½ΠΎΠΉ Π½Π° ΡΡΠΎΠΌ ΡΠ·ΡΠΊΠ΅, Π° ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ, ΡΠ»ΠΎΠΆΠ½Π΅Π΅ ΡΠ°ΠΌ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ ΠΈ Π΅Π³ΠΎ ΡΡΡΡΠΊΡΡΡΠ°. ΠΠ»Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΡΠΈΠΏΠΎΠ² ΡΠ·ΡΠΊΠΎΠ² Π² ΠΏΡΠΈΠ½ΡΠΈΠΏΠ΅ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΡΡΠΎΠΈΡΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π±Ρ Π°Π½Π°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π» ΠΈΡΡ ΠΎΠ΄Π½ΡΠ΅ ΡΠ΅ΠΊΡΡΡ Π½Π° ΡΡΠΈΡ ΡΠ·ΡΠΊΠ°Ρ Π·Π° ΠΏΡΠΈΠ΅ΠΌΠ»Π΅ΠΌΠΎΠ΅ Π²ΡΠ΅ΠΌΡ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π½ΡΡ Π²ΡΡΠΈΡΠ»ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΡΠ΅ΡΡΡΡΠΎΠ² (ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΏΠΎΡΡΠΎΠΌΡ Π΄ΠΎ ΡΠΈΡ ΠΏΠΎΡ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π½Π° Π΅ΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΡΡ ΡΠ·ΡΠΊΠ°Ρ , Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Π½Π° ΡΡΡΡΠΊΠΎΠΌ ΠΈΠ»ΠΈ Π°Π½Π³Π»ΠΈΠΉΡΠΊΠΎΠΌ).
ΠΠ»Π°ΡΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ Π³ΡΠ°ΠΌΠΌΠ°ΡΠΈΠΊ ΠΏΠΎ Π₯ΠΎΠΌΡΠΊΠΎΠΌΡ
Π‘ΠΎΠ³Π»Π°ΡΠ½ΠΎ ΠΊΠ»Π°ΡΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ, ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠΉ Π°ΠΌΠ΅ΡΠΈΠΊΠ°Π½ΡΠΊΠΈΠΌ Π»ΠΈΠ½Π³Π²ΠΈΡΡΠΎΠΌ ΠΠΎΠ°ΠΌΠΎΠΌ Π₯ΠΎΠΌΡΠΊΠΈΠΌ, ΡΠΎΡΠΌΠ°Π»ΡΠ½ΡΠ΅ Π³ΡΠ°ΠΌΠΌΠ°ΡΠΈΠΊΠΈ ΠΊΠ»Π°ΡΡΠΈΡΠΈΡΠΈΡΡΡΡΡΡ ΠΏΠΎ ΡΡΡΡΠΊΡΡΡΠ΅ ΠΈΡ ΠΏΡΠ°Π²ΠΈΠ». ΠΡΠ»ΠΈ Π²ΡΠ΅ Π±Π΅Π· ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΏΡΠ°Π²ΠΈΠ»Π° Π³ΡΠ°ΠΌΠΌΠ°ΡΠΈΠΊΠΈ ΡΠ΄ΠΎΠ²Π»Π΅ΡΠ²ΠΎΡΡΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠΉ Π·Π°Π΄Π°Π½Π½ΠΎΠΉ ΡΡΡΡΠΊΡΡΡΠ΅, ΡΠΎ ΡΠ°ΠΊΡΡ Π³ΡΠ°ΠΌΠΌΠ°ΡΠΈΠΊΡ ΠΎΡΠ½ΠΎΡΡΡ ΠΊ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌΡ ΡΠΈΠΏΡ.
Π₯ΠΎΠΌΡΠΊΠΈΠΉ Π²ΡΠ΄Π΅Π»ΠΈΠ» ΡΠ΅ΡΡΡΠ΅ ΡΠΈΠΏΠ° Π³ΡΠ°ΠΌΠΌΠ°ΡΠΈΠΊ.
Π’ΠΈΠΏ 0: Π³ΡΠ°ΠΌΠΌΠ°ΡΠΈΠΊΠΈ Ρ ΡΡΠ°Π·ΠΎΠ²ΠΎΠΉ ΡΡΡΡΠΊΡΡΡΠΎΠΉ
ΠΠ° ΡΡΡΡΠΊΡΡΡΡ ΠΈΡ ΠΏΡΠ°Π²ΠΈΠ» Π½Π΅ Π½Π°ΠΊΠ»Π°Π΄ΡΠ²Π°Π΅ΡΡΡ Π½ΠΈΠΊΠ°ΠΊΠΈΡ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠΉ: Π΄Π»Ρ Π³ΡΠ°ΠΌΠΌΠ°ΡΠΈΠΊΠΈ Π²ΠΈΠ΄Π° G (VT, VN, P, S), ΠΏΡΠ°Π²ΠΈΠ»Π° ΠΈΠΌΠ΅ΡΡ Π²ΠΈΠ΄:, Π³Π΄Π΅ .
ΠΡΠΎ ΡΠ°ΠΌΡΠΉ ΠΎΠ±ΡΠΈΠΉ ΡΠΈΠΏ Π³ΡΠ°ΠΌΠΌΠ°ΡΠΈΠΊ. Π Π½Π΅Π³ΠΎ ΠΏΠΎΠ΄ΠΏΠ°Π΄Π°ΡΡ Π²ΡΠ΅ Π±Π΅Π· ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΡΠΎΡΠΌΠ°Π»ΡΠ½ΡΠ΅ Π³ΡΠ°ΠΌΠΌΠ°ΡΠΈΠΊΠΈ, Π½ΠΎ ΡΠ°ΡΡΡ ΠΈΠ· Π½ΠΈΡ , ΠΊ ΠΎΠ±ΡΠ΅ΠΉ ΡΠ°Π΄ΠΎΡΡΠΈ, ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠ°ΠΊΠΆΠ΅ ΠΎΡΠ½Π΅ΡΠ΅Π½Π° ΠΈ ΠΊ Π΄ΡΡΠ³ΠΈΠΌ ΠΊΠ»Π°ΡΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΎΠ½Π½ΡΠΌ ΡΠΈΠΏΠ°ΠΌ. ΠΠ΅Π»ΠΎ Π² ΡΠΎΠΌ, ΡΡΠΎ Π³ΡΠ°ΠΌΠΌΠ°ΡΠΈΠΊΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΡΠ½ΠΎΡΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΊ ΡΠΈΠΏΡ 0 ΠΈ Π½Π΅ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΎΡΠ½Π΅ΡΠ΅Π½Ρ ΠΊ Π΄ΡΡΠ³ΠΈΠΌ ΡΠΈΠΏΠ°ΠΌ, ΡΠ²Π»ΡΡΡΡΡ ΡΠ°ΠΌΡΠΌΠΈ ΡΠ»ΠΎΠΆΠ½ΡΠΌΠΈ ΠΏΠΎ ΡΡΡΡΠΊΡΡΡΠ΅.
ΠΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ Π³ΡΠ°ΠΌΠΌΠ°ΡΠΈΠΊΠΈ, ΠΎΡΠ½ΠΎΡΡΡΠΈΠ΅ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΊ ΡΠΈΠΏΡ 0, Π½Π΅ ΠΈΠΌΠ΅ΡΡ.
Π’ΠΈΠΏ 1: ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ½ΠΎ-Π·Π°Π²ΠΈΡΠΈΠΌΡΠ΅ (ΠΠ) ΠΈ Π½Π΅ΡΠΊΠΎΡΠ°ΡΠΈΠ²Π°ΡΡΠΈΠ΅ Π³ΡΠ°ΠΌΠΌΠ°ΡΠΈΠΊΠΈ
Π ΡΡΠΎΡ ΡΠΈΠΏ Π²Ρ ΠΎΠ΄ΡΡ Π΄Π²Π° ΠΎΡΠ½ΠΎΠ²Π½ΡΡ ΠΊΠ»Π°ΡΡΠ° Π³ΡΠ°ΠΌΠΌΠ°ΡΠΈΠΊ:
ΠΠΎΠ½ΡΠ΅ΠΊΡΡΠ½ΠΎ-Π·Π°Π²ΠΈΡΠΈΠΌΡΠ΅ Π³ΡΠ°ΠΌΠΌΠ°ΡΠΈΠΊΠΈ G (VT, VN, P, S), ΠΈΠΌΠ΅ΡΡ ΠΏΡΠ°Π²ΠΈΠ»Π° Π²ΠΈΠ΄Π°:
Π³Π΄Π΅
ΠΠ΅ΡΠΊΠΎΡΠ°ΡΠΈΠ²Π°ΡΡΠΈΠ΅ Π³ΡΠ°ΠΌΠΌΠ°ΡΠΈΠΊΠΈ G (VT, VN, P, S), ΠΈΠΌΠ΅ΡΡ ΠΏΡΠ°Π²ΠΈΠ»Π° Π²ΠΈΠ΄Π°:
Π³Π΄Π΅
Π‘ΡΡΡΠΊΡΡΡΠ° ΠΏΡΠ°Π²ΠΈΠ» ΠΠ-Π³ΡΠ°ΠΌΠΌΠ°ΡΠΈΠΊ ΡΠ°ΠΊΠΎΠ²Π°, ΡΡΠΎ ΠΏΡΠΈ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΠΈ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΈΠΌΠΈ ΡΠ·ΡΠΊΠ° ΠΎΠ΄ΠΈΠ½ ΠΈ ΡΠΎΡ ΠΆΠ΅ Π½Π΅ΡΠ΅ΡΠΌΠΈΠ½Π°Π»ΡΠ½ΡΠΉ ΡΠΈΠΌΠ²ΠΎΠ» ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π·Π°ΠΌΠ΅Π½Π΅Π½ Π½Π° ΡΡ ΠΈΠ»ΠΈ ΠΈΠ½ΡΡ ΡΠ΅ΠΏΠΎΡΠΊΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΡΠΎΠ³ΠΎ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ°, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΎΠ½ Π²ΡΡΡΠ΅ΡΠ°Π΅ΡΡΡ. ΠΠΌΠ΅Π½Π½ΠΎ ΠΏΠΎΡΡΠΎΠΌΡ ΡΡΠΈ Π³ΡΠ°ΠΌΠΌΠ°ΡΠΈΠΊΠΈ Π½Π°Π·ΡΠ²Π°ΡΡ «ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ½ΠΎ-Π·Π°Π²ΠΈΡΠΈΠΌΡΠΌΠΈ». Π¦Π΅ΠΏΠΎΡΠΊΠΈ ΠΈ Π² ΠΏΡΠ°Π²ΠΈΠ»Π°Ρ Π³ΡΠ°ΠΌΠΌΠ°ΡΠΈΠΊΠΈ ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ°ΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ (- Π»Π΅Π²ΡΠΉ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ, Π° — ΠΏΡΠ°Π²ΡΠΉ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ), Π² ΠΎΠ±ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ Π»ΡΠ±Π°Ρ ΠΈΠ· Π½ΠΈΡ (ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ ΠΎΠ±Π΅) ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΡΡΡΠΎΠΉ. ΠΠ΅ΡΠΊΠΎΡΠ°ΡΠΈΠ²Π°ΡΡΠΈΠ΅ Π³ΡΠ°ΠΌΠΌΠ°ΡΠΈΠΊΠΈ ΠΈΠΌΠ΅ΡΡ ΡΠ°ΠΊΡΡ ΡΡΡΡΠΊΡΡΡΡ ΠΏΡΠ°Π²ΠΈΠ», ΡΡΠΎ ΠΏΡΠΈ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΠΈ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΡΠ·ΡΠΊΠ°, Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ Π³ΡΠ°ΠΌΠΌΠ°ΡΠΈΠΊΠΎΠΉ, Π»ΡΠ±Π°Ρ ΡΠ΅ΠΏΠΎΡΠΊΠ° ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π·Π°ΠΌΠ΅Π½Π΅Π½Π° Π½Π° ΡΠ΅ΠΏΠΎΡΠΊΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² Π½Π΅ ΠΌΠ΅Π½ΡΡΠ΅ΠΉ Π΄Π»ΠΈΠ½Ρ. ΠΡΡΡΠ΄Π° ΠΈ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ «Π½Π΅ΡΠΊΠΎΡΠ°ΡΠΈΠ²Π°ΡΡΠΈΠ΅».
ΠΠΎΠΊΠ°Π·Π°Π½ΠΎ, ΡΡΠΎ ΡΡΠΈ Π΄Π²Π° ΠΊΠ»Π°ΡΡΠ° Π³ΡΠ°ΠΌΠΌΠ°ΡΠΈΠΊ ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ½Ρ.
ΠΡΠΈ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠΎΠ² ΡΠ°ΠΊΠΈΠ΅ Π³ΡΠ°ΠΌΠΌΠ°ΡΠΈΠΊΠΈ Π½Π΅ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ ΡΠ·ΡΠΊΠΎΠ² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅ΠΌΡΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ°ΠΌΠΈ, ΠΈΠΌΠ΅ΡΡ Π±ΠΎΠ»Π΅Π΅ ΠΏΡΠΎΡΡΡΡ ΡΡΡΡΠΊΡΡΡΡ ΠΈ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΏΠΎΡΡΡΠΎΠ΅Π½Ρ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π³ΡΠ°ΠΌΠΌΠ°ΡΠΈΠΊ Π΄ΡΡΠ³ΠΈΡ ΡΠΈΠΏΠΎΠ². Π§ΡΠΎ ΠΊΠ°ΡΠ°Π΅ΡΡΡ ΡΠ΅ΠΌΠ°Π½ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠΉ ΡΠ·ΡΠΊΠΎΠ² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΡΠΎ Ρ ΡΠΎΡΠΊΠΈ Π·ΡΠ΅Π½ΠΈΡ Π·Π°ΡΡΠ°Ρ Π²ΡΡΠΈΡΠ»ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΡΠ΅ΡΡΡΡΠΎΠ² ΠΈΡ Π²ΡΠ³ΠΎΠ΄Π½Π΅Π΅ ΠΏΡΠΎΠ²Π΅ΡΡΡΡ Π΄ΡΡΠ³ΠΈΠΌΠΈ ΠΌΠ΅ΡΠΎΠ΄Π°ΠΌΠΈ, Π° Π½Π΅ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ½ΠΎ-Π·Π°Π²ΠΈΡΠΈΠΌΡΡ Π³ΡΠ°ΠΌΠΌΠ°ΡΠΈΠΊ.
Π’ΠΈΠΏ 2: ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ½ΠΎ-ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΡΠ΅ (ΠΠ‘) Π³ΡΠ°ΠΌΠΌΠ°ΡΠΈΠΊΠΈ
ΠΠΎΠ½ΡΠ΅ΠΊΡΡΠ½ΠΎ-ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΡΠ΅ (ΠΠ‘) Π³ΡΠ°ΠΌΠΌΠ°ΡΠΈΠΊΠΈ G (VT, VN, P, S), ΠΈΠΌΠ΅ΡΡ ΠΏΡΠ°Π²ΠΈΠ»Π° Π²ΠΈΠ΄Π°, Π³Π΄Π΅. Π’Π°ΠΊΠΈΠ΅ Π³ΡΠ°ΠΌΠΌΠ°ΡΠΈΠΊΠΈ ΡΠ°ΠΊΠΆΠ΅ ΠΈΠ½ΠΎΠ³Π΄Π° Π½Π°Π·ΡΠ²Π°ΡΡ Π½Π΅ΡΠΊΠΎΡΠ°ΡΠΈΠ²Π°ΡΡΠΈΠΌΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ½ΠΎ-ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΡΠΌΠΈ (ΠΠΠ‘) Π³ΡΠ°ΠΌΠΌΠ°ΡΠΈΠΊΠ°ΠΌΠΈ (Π²ΠΈΠ΄Π½ΠΎ, ΡΡΠΎ Π² ΠΏΡΠ°Π²ΠΎΠΉ ΡΠ°ΡΡΠΈ ΠΏΡΠ°Π²ΠΈΠ»Π° Ρ Π½ΠΈΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²ΡΠ΅Π³Π΄Π° ΡΡΠΎΡΡΡ ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡΠΌ ΠΎΠ΄ΠΈΠ½ ΡΠΈΠΌΠ²ΠΎΠ»). Π‘ΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΡΠ°ΠΊΠΆΠ΅ ΠΏΠΎΡΡΠΈ ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ½ΡΠΉ ΠΈΠΌ ΠΊΠ»Π°ΡΡ Π³ΡΠ°ΠΌΠΌΠ°ΡΠΈΠΊ — ΡΠΊΠΎΡΠ°ΡΠΈΠ²Π°ΡΡΠΈΠ΅ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ½ΠΎ-ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΡΠ΅ (Π£ΠΠ‘) Π³ΡΠ°ΠΌΠΌΠ°ΡΠΈΠΊΠΈ G (VT, VN, P, S),, ΠΏΡΠ°Π²ΠΈΠ»Π° ΠΊΠΎΡΠΎΡΡΡ ΠΌΠΎΠ³ΡΡ ΠΈΠΌΠ΅ΡΡ Π²ΠΈΠ΄:, Π³Π΄Π΅.
Π Π°Π·Π½ΠΈΡΠ° ΠΌΠ΅ΠΆΠ΄Ρ ΡΡΠΈΠΌΠΈ Π΄Π²ΡΠΌΡ ΠΊΠ»Π°ΡΡΠ°ΠΌΠΈ Π³ΡΠ°ΠΌΠΌΠ°ΡΠΈΠΊ Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π»ΠΈΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ Π² Π£ΠΠ‘-Π³ΡΠ°ΠΌΠΌΠ°ΡΠΈΠΊΠ°Ρ Π² ΠΏΡΠ°Π²ΠΎΠΉ ΡΠ°ΡΡΠΈ ΠΏΡΠ°Π²ΠΈΠ» ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΡΡΡΡΡΠ²ΠΎΠ²Π°ΡΡ ΠΏΡΡΡΠ°Ρ ΡΠ΅ΠΏΠΎΡΠΊΠ° (X), Π° Π² ΠΠΠ‘-Π³ΡΠ°ΠΌΠΌΠ°ΡΠΈΠΊΠ°Ρ — Π½Π΅Ρ. ΠΠΎΠΊΠ°Π·Π°Π½ΠΎ, ΡΡΠΎ ΡΡΠΈ Π΄Π²Π° ΠΊΠ»Π°ΡΡΠ° Π³ΡΠ°ΠΌΠΌΠ°ΡΠΈΠΊ ΠΏΠΎΡΡΠΈ ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ½Ρ.
ΠΠ‘-Π³ΡΠ°ΠΌΠΌΠ°ΡΠΈΠΊΠΈ ΡΠΈΡΠΎΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΠΏΡΠΈ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠΈ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΉ ΡΠ·ΡΠΊΠΎΠ² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ. Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π° ΠΈΠ·Π²Π΅ΡΡΠ½ΡΡ ΡΠ·ΡΠΊΠΎΠ² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΎΡΠ½ΠΎΠ²Π°Π½ ΠΈΠΌΠ΅Π½Π½ΠΎ Π½Π° ΠΠ‘-Π³ΡΠ°ΠΌΠΌΠ°ΡΠΈΠΊΠ°Ρ .
ΠΠ½ΡΡΡΠΈ ΡΠΈΠΏΠ° ΠΠ‘-Π³ΡΠ°ΠΌΠΌΠ°ΡΠΈΠΊ ΠΊΡΠΎΠΌΠ΅ ΠΊΠ»Π°ΡΡΠΎΠ² ΠΠΠ‘ ΠΈ Π£ΠΠ‘ Π²ΡΠ΄Π΅Π»ΡΡΡ Π΅ΡΠ΅ ΡΠ΅Π»ΠΎΠ΅ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΠΊΠ»Π°ΡΡΠΎΠ² Π³ΡΠ°ΠΌΠΌΠ°ΡΠΈΠΊ, ΠΈ Π²ΡΠ΅ ΠΎΠ½ΠΈ ΠΎΡΠ½ΠΎΡΡΡΡΡ ΠΊ ΡΠΈΠΏΡ 2.
Π’ΠΈΠΏ 3: ΡΠ΅Π³ΡΠ»ΡΡΠ½ΡΠ΅ Π³ΡΠ°ΠΌΠΌΠ°ΡΠΈΠΊΠΈ
Π ΡΠΈΠΏΡ ΡΠ΅Π³ΡΠ»ΡΡΠ½ΡΡ ΠΎΡΠ½ΠΎΡΡΡΡΡ Π΄Π²Π° ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ½ΡΡ ΠΊΠ»Π°ΡΡΠ° Π³ΡΠ°ΠΌΠΌΠ°ΡΠΈΠΊ: Π»Π΅Π²ΠΎΠ»ΠΈΠ½Π΅ΠΉΠ½ΡΠ΅ ΠΈ ΠΏΡΠ°Π²ΠΎΠ»ΠΈΠ½Π΅ΠΉΠ½ΡΠ΅.
ΠΠ΅Π²ΠΎΠ»ΠΈΠ½Π΅ΠΉΠ½ΡΠ΅ Π³ΡΠ°ΠΌΠΌΠ°ΡΠΈΠΊΠΈ G (VT, VN, P, S), ΠΌΠΎΠ³ΡΡ ΠΈΠΌΠ΅ΡΡ ΠΏΡΠ°Π²ΠΈΠ»Π° Π΄Π²ΡΡ Π²ΠΈΠ΄ΠΎΠ²: ΠΈΠ»ΠΈ, Π³Π΄Π΅ .
Π ΡΠ²ΠΎΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ, ΠΏΡΠ°Π²ΠΎΠ»ΠΈΠ½Π΅ΠΉΠ½ΡΠ΅ Π³ΡΠ°ΠΌΠΌΠ°ΡΠΈΠΊΠΈ G (VT, VN, P, S), ΠΌΠΎΠ³ΡΡ ΠΈΠΌΠ΅ΡΡ ΠΏΡΠ°Π²ΠΈΠ»Π° ΡΠΎΠΆΠ΅ Π΄Π²ΡΡ Π²ΠΈΠ΄ΠΎΠ²: ΠΈΠ»ΠΈ, Π³Π΄Π΅.
ΠΡΠΈ Π΄Π²Π° ΠΊΠ»Π°ΡΡΠ° Π³ΡΠ°ΠΌΠΌΠ°ΡΠΈΠΊ ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ½Ρ ΠΈ ΠΎΡΠ½ΠΎΡΡΡΡΡ ΠΊ ΡΠΈΠΏΡ ΡΠ΅Π³ΡΠ»ΡΡΠ½ΡΡ Π³ΡΠ°ΠΌΠΌΠ°ΡΠΈΠΊ.
Π Π΅Π³ΡΠ»ΡΡΠ½ΡΠ΅ Π³ΡΠ°ΠΌΠΌΠ°ΡΠΈΠΊΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΠΏΡΠΈ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠΈ ΠΏΡΠΎΡΡΠ΅ΠΉΡΠΈΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΉ ΡΠ·ΡΠΊΠΎΠ² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ: ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΎΠ², ΠΊΠΎΠ½ΡΡΠ°Π½Ρ, ΡΡΡΠΎΠΊ, ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠ΅Π² ΠΈ Ρ. Π΄. ΠΡΠΈ Π³ΡΠ°ΠΌΠΌΠ°ΡΠΈΠΊΠΈ ΠΈΡΠΊΠ»ΡΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΏΡΠΎΡΡΡ ΠΈ ΡΠ΄ΠΎΠ±Π½Ρ Π² ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ, ΠΏΠΎΡΡΠΎΠΌΡ Π² ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ°Ρ Π½Π° ΠΈΡ ΠΎΡΠ½ΠΎΠ²Π΅ ΡΡΡΠΎΡΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ Π»Π΅ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π° Π²Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ·ΡΠΊΠ°.
Π‘ΠΎΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠΈΠΏΠ°ΠΌΠΈ Π³ΡΠ°ΠΌΠΌΠ°ΡΠΈΠΊ
Π’ΠΈΠΏΡ Π³ΡΠ°ΠΌΠΌΠ°ΡΠΈΠΊ ΡΠΎΠΎΡΠ½ΠΎΡΡΡΡΡ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠΎΠ±ΠΎΠΉ ΠΎΡΠΎΠ±ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ. ΠΠ· ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΡΠΈΠΏΠΎΠ² 2 ΠΈ 3 Π²ΠΈΠ΄Π½ΠΎ, ΡΡΠΎ Π»ΡΠ±Π°Ρ ΡΠ΅Π³ΡΠ»ΡΡΠ½Π°Ρ Π³ΡΠ°ΠΌΠΌΠ°ΡΠΈΠΊΠ° ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΠ‘-Π³ΡΠ°ΠΌΠΌΠ°ΡΠΈΠΊΠΎΠΉ, Π½ΠΎ Π½Π΅ Π½Π°ΠΎΠ±ΠΎΡΠΎΡ. Π’Π°ΠΊΠΆΠ΅ ΠΎΡΠ΅Π²ΠΈΠ΄Π½ΠΎ, ΡΡΠΎ Π»ΡΠ±Π°Ρ Π³ΡΠ°ΠΌΠΌΠ°ΡΠΈΠΊΠ° ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΎΡΠ½Π΅ΡΠ΅Π½Π° ΠΊ ΡΠΈΠΏΡ 0, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΎΠ½ Π½Π΅ Π½Π°ΠΊΠ»Π°Π΄ΡΠ²Π°Π΅Ρ Π½ΠΈΠΊΠ°ΠΊΠΈΡ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠΉ Π½Π° ΠΏΡΠ°Π²ΠΈΠ»Π°. Π ΡΠΎ ΠΆΠ΅ Π²ΡΠ΅ΠΌΡ ΡΡΡΠ΅ΡΡΠ²ΡΡΡ ΡΠΊΠΎΡΠ°ΡΠΈΠ²Π°ΡΡΠΈΠ΅ ΠΠ‘-Π³ΡΠ°ΠΌΠΌΠ°ΡΠΈΠΊΠΈ (ΡΠΈΠΏ 2), ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ ΡΠ²Π»ΡΡΡΡΡ Π½ΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ½ΠΎ-Π·Π°Π²ΠΈΡΠΈΠΌΡΠΌΠΈ, Π½ΠΈ Π½Π΅ΡΠΊΠΎΡΠ°ΡΠΈΠ²Π°ΡΡΠΈΠΌΠΈ (ΡΠΈΠΏ 1), ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΌΠΎΠ³ΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ ΠΏΡΠ°Π²ΠΈΠ»Π° Π²ΠΈΠ΄Π°, Π½Π΅Π΄ΠΎΠΏΡΡΡΠΈΠΌΡΠ΅ Π² ΡΠΈΠΏΠ΅ 1.
ΠΠ΄Π½Π° ΠΈ ΡΠ° ΠΆΠ΅ Π³ΡΠ°ΠΌΠΌΠ°ΡΠΈΠΊΠ° Π² ΠΎΠ±ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΎΡΠ½Π΅ΡΠ΅Π½Π° ΠΊ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌ ΠΊΠ»Π°ΡΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΎΠ½Π½ΡΠΌ ΡΠΈΠΏΠ°ΠΌ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊΠ°ΠΊ ΡΠΆΠ΅ Π±ΡΠ»ΠΎ ΡΠΊΠ°Π·Π°Π½ΠΎ, Π²ΡΠ΅ Π±Π΅Π· ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ Π³ΡΠ°ΠΌΠΌΠ°ΡΠΈΠΊΠΈ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΎΡΠ½Π΅ΡΠ΅Π½Ρ ΠΊ ΡΠΈΠΏΡ 0). ΠΠ»Ρ ΠΊΠ»Π°ΡΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ Π³ΡΠ°ΠΌΠΌΠ°ΡΠΈΠΊΠΈ Π²ΡΠ΅Π³Π΄Π° Π²ΡΠ±ΠΈΡΠ°ΡΡ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠΉ ΡΠΈΠΏ, ΠΊ ΠΊΠΎΡΠΎΡΠΎΠΌΡ ΠΎΠ½Π° ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΎΡΠ½Π΅ΡΠ΅Π½Π°. Π‘Π»ΠΎΠΆΠ½ΠΎΡΡΡ Π³ΡΠ°ΠΌΠΌΠ°ΡΠΈΠΊΠΈ ΠΎΠ±ΡΠ°ΡΠ½ΠΎ ΠΏΡΠΎΠΏΠΎΡΡΠΈΠΎΠ½Π°Π»ΡΠ½Π° Π½ΠΎΠΌΠ΅ΡΡ ΡΠΈΠΏΠ°, ΠΊ ΠΊΠΎΡΠΎΡΠΎΠΌΡ ΠΎΡΠ½ΠΎΡΠΈΡΡΡ Π³ΡΠ°ΠΌΠΌΠ°ΡΠΈΠΊΠ°.
Π’ΡΠ°Π½ΡΠ»ΡΡΠΎΡΡ
Π€ΠΎΡΠΌΠ°Π»ΡΠ½ΠΎΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΡΡΠ°Π½ΡΠ»ΡΡΠΎΡΠ°
Π’ΡΠ°Π½ΡΠ»ΡΡΠΎΡ — ΡΡΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π½Π° ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠΌ (Π²Ρ ΠΎΠ΄Π½ΠΎΠΌ) ΡΠ·ΡΠΊΠ΅ Π² ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ½ΡΡ Π΅ΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π½Π° ΡΠ΅Π·ΡΠ»ΡΡΠΈΡΡΡΡΠ΅ΠΌ (Π²ΡΡ ΠΎΠ΄Π½ΠΎΠΌ) ΡΠ·ΡΠΊΠ΅.
Π‘ ΡΠΎΡΠΊΠΈ Π·ΡΠ΅Π½ΠΈΡ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π²Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ·ΡΠΊΠ° Π² ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ½ΡΠ΅ ΠΈΠΌ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΡ Π²ΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ·ΡΠΊΠ° ΡΡΠ°Π½ΡΠ»ΡΡΠΎΡ Π²ΡΡΡΡΠΏΠ°Π΅Ρ ΠΊΠ°ΠΊ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ΡΠΈΠΊ.
Π Π΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠΌ ΡΠ°Π±ΠΎΡΡ ΡΡΠ°Π½ΡΠ»ΡΡΠΎΡΠ° Π±ΡΠ΄Π΅Ρ ΡΠ΅Π·ΡΠ»ΡΡΠΈΡΡΡΡΠ°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°, Π½ΠΎ ΡΠΎΠ»ΡΠΊΠΎ Π² ΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, Π΅ΡΠ»ΠΈ ΡΠ΅ΠΊΡΡ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠΌ — Π½Π΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΎΡΠΈΠ±ΠΎΠΊ Ρ ΡΠΎΡΠΊΠΈ Π·ΡΠ΅Π½ΠΈΡ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ° ΠΈ ΡΠ΅ΠΌΠ°Π½ΡΠΈΠΊΠΈ Π²Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ·ΡΠΊΠ°. ΠΡΠ»ΠΈ ΠΈΡΡ ΠΎΠ΄Π½Π°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½Π°Ρ (ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Ρ ΠΎΡΡ Π±Ρ ΠΎΠ΄Π½Ρ ΠΎΡΠΈΠ±ΠΊΡ), ΡΠΎ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠΌ ΡΠ°Π±ΠΎΡΡ ΡΡΠ°Π½ΡΠ»ΡΡΠΎΡΠ° Π±ΡΠ΄Π΅Ρ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ΅.
ΠΡΠ°ΠΏΡ ΡΡΠ°Π½ΡΠ»ΡΡΠΈΠΈ. ΠΠ±ΡΠ°Ρ ΡΡ Π΅ΠΌΠ° ΡΠ°Π±ΠΎΡΡ ΡΡΠ°Π½ΡΠ»ΡΡΠΎΡΠ°
ΠΠ° ΡΠΈΡ. 2.1 ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Π° ΠΎΠ±ΡΠ°Ρ ΡΡ Π΅ΠΌΠ° ΡΠ°Π±ΠΎΡΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ°. ΠΠ· Π½Π΅Π΅ Π²ΠΈΠ΄Π½ΠΎ, ΡΡΠΎ Π² ΡΠ΅Π»ΠΎΠΌ ΠΏΡΠΎΡΠ΅ΡΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· Π΄Π²ΡΡ ΠΎΡΠ½ΠΎΠ²Π½ΡΡ ΡΡΠ°ΠΏΠΎΠ² — Π°Π½Π°Π»ΠΈΠ·Π° ΠΈ ΡΠΈΠ½ΡΠ΅Π·Π°. ΠΠ° ΡΡΠ°ΠΏΠ΅ Π°Π½Π°Π»ΠΈΠ·Π° Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π²Π°Π½ΠΈΠ΅ ΡΠ΅ΠΊΡΡΠ° ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΈ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΡΠ°Π±Π»ΠΈΡ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΎΠ². Π Π΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠΌ Π΅Π³ΠΎ ΡΠ°Π±ΠΎΡΡ ΡΠ»ΡΠΆΠΈΡ Π½Π΅ΠΊΠΎΠ΅ Π²Π½ΡΡΡΠ΅Π½Π½Π΅Π΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΠΏΠΎΠ½ΡΡΠ½ΠΎΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΡ. ΠΠ° ΡΡΠ°ΠΏΠ΅ ΡΠΈΠ½ΡΠ΅Π·Π° Π½Π° ΠΎΡΠ½ΠΎΠ²Π°Π½ΠΈΠΈ Π²Π½ΡΡΡΠ΅Π½Π½Π΅Π³ΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΈ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠ΅ΠΉΡΡ Π² ΡΠ°Π±Π»ΠΈΡΠ΅ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΎΠ², ΠΏΠΎΡΠΎΠΆΠ΄Π°Π΅ΡΡΡ ΡΠ΅ΠΊΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠΈΡΡΡΡΠ΅ΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ. Π Π΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠΌ ΡΡΠΎΠ³ΠΎ ΡΡΠ°ΠΏΠ° ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΡΠΉ ΠΊΠΎΠ΄. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, Π² ΡΠΎΡΡΠ°Π²Π΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ° ΠΏΡΠΈΡΡΡΡΡΠ²ΡΠ΅Ρ ΡΠ°ΡΡΡ, ΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½Π°Ρ Π·Π° Π°Π½Π°Π»ΠΈΠ· ΠΈ ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΎΡΠΈΠ±ΠΎΠΊ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΡΠΈ Π½Π°Π»ΠΈΡΠΈΠΈ ΠΎΡΠΈΠ±ΠΊΠΈ Π² ΡΠ΅ΠΊΡΡΠ΅ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π΄ΠΎΠ»ΠΆΠ½Π° ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎ ΠΏΠΎΠ»Π½ΠΎ ΠΈΠ½ΡΠΎΡΠΌΠΈΡΠΎΠ²Π°ΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΎ ΡΠΈΠΏΠ΅ ΠΎΡΠΈΠ±ΠΊΠΈ ΠΈ ΠΌΠ΅ΡΡΠ΅ Π΅Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΡ. Π Π»ΡΡΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠΈΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π²Π°ΡΠΈΠ°Π½Ρ ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΎΡΠΈΠ±ΠΊΠΈ.
ΠΡΠΈ ΡΡΠ°ΠΏΡ, Π² ΡΠ²ΠΎΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ, ΡΠΎΡΡΠΎΡΡ ΠΈΠ· Π±ΠΎΠ»Π΅Π΅ ΠΌΠ΅Π»ΠΊΠΈΡ ΡΡΠ°ΠΏΠΎΠ², Π½Π°Π·ΡΠ²Π°Π΅ΠΌΡΡ ΡΠ°Π·Π°ΠΌΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ. Π‘ΠΎΡΡΠ°Π² ΡΠ°Π· ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ Π½Π° ΡΠΈΡ. 2.1 ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ Π² ΡΠ°ΠΌΠΎΠΌ ΠΎΠ±ΡΠ΅ΠΌ Π²ΠΈΠ΄Π΅, ΠΈΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½Π°Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΈ ΠΏΡΠΎΡΠ΅ΡΡ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ ΠΌΠΎΠ³ΡΡ, ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ, ΡΠ°Π·Π»ΠΈΡΠ°ΡΡΡΡ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ Π²Π΅ΡΡΠΈΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ°.
ΠΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ Π² ΡΠ΅Π»ΠΎΠΌ, Ρ ΡΠΎΡΠΊΠΈ Π·ΡΠ΅Π½ΠΈΡ ΡΠ΅ΠΎΡΠΈΠΈ ΡΠΎΡΠΌΠ°Π»ΡΠ½ΡΡ ΡΠ·ΡΠΊΠΎΠ², Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ Π΄Π²Π΅ ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ:
— ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π²Π°Π½ΠΈΠ΅ ΡΠ·ΡΠΊΠ° ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ
— Π³Π΅Π½Π΅ΡΠ°ΡΠΈΡ ΡΠ΅Π·ΡΠ»ΡΡΠΈΡΡΡΡΠ΅ΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π½Π° Π·Π°Π΄Π°Π½Π½ΠΎΠΌ ΡΠ·ΡΠΊΠ΅.
ΠΠ°Π»Π΅Π΅ Π΄Π°Π΅ΡΡΡ ΠΏΠ΅ΡΠ΅ΡΠ΅Π½Ρ ΠΎΡΠ½ΠΎΠ²Π½ΡΡ ΡΠ°Π· (ΡΠ°ΡΡΠ΅ΠΉ) ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ ΠΈ ΠΊΡΠ°ΡΠΊΠΎΠ΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΉ.
ΠΠ΅ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡ (ΡΠΊΠ°Π½Π΅Ρ) — ΡΡΠΎ ΡΠ°ΡΡΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ°, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠΈΡΠ°Π΅Ρ Π»ΠΈΡΠ΅ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π½Π° ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠΌ ΡΠ·ΡΠΊΠ΅ ΠΈ ΡΡΡΠΎΠΈΡ ΠΈΠ· Π½ΠΈΡ ΡΠ»ΠΎΠ²Π° (Π»Π΅ΠΊΡΠ΅ΠΌΡ) ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ·ΡΠΊΠ°. ΠΠ° Π²Ρ ΠΎΠ΄ Π»Π΅ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΠ° ΠΏΠΎΡΡΡΠΏΠ°Π΅Ρ ΡΠ΅ΠΊΡΡ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, Π° Π²ΡΡ ΠΎΠ΄Π½Π°Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΡΡΡ Π΄Π»Ρ Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠ΅ΠΉ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠΎΠΌ Π½Π° ΡΡΠ°ΠΏΠ΅ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΡΠ°Π·Π±ΠΎΡΠ°. Π‘ ΡΠ΅ΠΎΡΠ΅ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΡΠΎΡΠΊΠΈ Π·ΡΠ΅Π½ΠΈΡ Π»Π΅ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡ Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎΠΉ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΠΉ ΡΠ°ΡΡΡΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ°. ΠΠ΄Π½Π°ΠΊΠΎ ΡΡΡΠ΅ΡΡΠ²ΡΡΡ ΠΏΡΠΈΡΠΈΠ½Ρ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ Π΅Π³ΠΎ ΠΏΡΠΈΡΡΡΡΡΠ²ΠΈΠ΅ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π²ΠΎ Π²ΡΠ΅Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ°Ρ .
Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡ — ΡΡΠΎ ΠΎΡΠ½ΠΎΠ²Π½Π°Ρ ΡΠ°ΡΡΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ° Π½Π° ΡΡΠ°ΠΏΠ΅ Π°Π½Π°Π»ΠΈΠ·Π°. ΠΠ½Π° Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ Π²ΡΠ΄Π΅Π»Π΅Π½ΠΈΠ΅ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΉ Π² ΡΠ΅ΠΊΡΡΠ΅ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½Π½ΠΎΠΌ Π»Π΅ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΌ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΠΎΠΌ. ΠΠ° ΡΡΠΎΠΉ ΠΆΠ΅ ΡΠ°Π·Π΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅ΡΡΡ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠ°Ρ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΡΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ. Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΡΠ°Π·Π±ΠΎΡ ΠΈΠ³ΡΠ°Π΅Ρ ΡΠΎΠ»Ρ ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π²Π°ΡΠ΅Π»Ρ ΡΠ΅ΠΊΡΡΠ° Π²Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ·ΡΠΊΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ.
Π‘Π΅ΠΌΠ°Π½ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡ — ΡΡΠΎ ΡΠ°ΡΡΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ°, ΠΏΡΠΎΠ²Π΅ΡΡΡΡΠ°Ρ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΡΡΡ ΡΠ΅ΠΊΡΡΠ° ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Ρ ΡΠΎΡΠΊΠΈ Π·ΡΠ΅Π½ΠΈΡ ΡΠ΅ΠΌΠ°Π½ΡΠΈΠΊΠΈ Π²Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ·ΡΠΊΠ°. ΠΡΠΎΠΌΠ΅ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΡΠ΅ΠΌΠ°Π½ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π°Π½Π°Π»ΠΈΠ· Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ ΡΠ΅ΠΊΡΡΠ°, ΡΡΠ΅Π±ΡΠ΅ΠΌΡΠ΅ ΡΠ΅ΠΌΠ°Π½ΡΠΈΠΊΠΎΠΉ Π²Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ·ΡΠΊΠ° (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ°ΠΊΠΈΠ΅, ΠΊΠ°ΠΊ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΉ Π½Π΅ΡΠ²Π½ΠΎΠ³ΠΎ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ ΡΠΈΠΏΠΎΠ²). Π ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠΎΠ² ΡΠ΅ΠΌΠ°Π½ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π°Π½Π°Π»ΠΈΠ· ΠΌΠΎΠΆΠ΅Ρ ΡΠ°ΡΡΠΈΡΠ½ΠΎ Π²Ρ ΠΎΠ΄ΠΈΡΡ Π² ΡΠ°Π·Ρ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΡΠ°Π·Π±ΠΎΡΠ°, ΡΠ°ΡΡΠΈΡΠ½ΠΎ — Π² ΡΠ°Π·Ρ ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΊΠΈ ΠΊ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ ΠΊΠΎΠ΄Π°.
ΠΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΊΠ° ΠΊ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ ΠΊΠΎΠ΄Π° — ΡΡΠΎ ΡΠ°Π·Π°, Π½Π° ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠΎΠΌ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ, Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ ΡΠ²ΡΠ·Π°Π½Π½ΡΠ΅ Ρ ΡΠΈΠ½ΡΠ΅Π·ΠΎΠΌ ΡΠ΅ΠΊΡΡΠ° ΡΠ΅Π·ΡΠ»ΡΡΠΈΡΡΡΡΠ΅ΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, Π½ΠΎ Π΅ΡΠ΅ Π½Π΅ Π²Π΅Π΄ΡΡΠΈΠ΅ ΠΊ ΠΏΠΎΡΠΎΠΆΠ΄Π΅Π½ΠΈΡ ΡΠ΅ΠΊΡΡΠ° Π½Π° Π²ΡΡ ΠΎΠ΄Π½ΠΎΠΌ ΡΠ·ΡΠΊΠ΅. ΠΠ±ΡΡΠ½ΠΎ Π² ΡΡΡ ΡΠ°Π·Ρ Π²Ρ ΠΎΠ΄ΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ, ΡΠ²ΡΠ·Π°Π½Π½ΡΠ΅ Ρ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠ΅ΠΉ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΡΠ·ΡΠΊΠ°, ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΏΠ°ΠΌΡΡΠΈ ΠΈ Ρ. ΠΏ.
ΠΠ΅Π½Π΅ΡΠ°ΡΠΈΡ ΠΊΠΎΠ΄Π° — ΡΡΠΎ ΡΠ°Π·Π°, Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ ΡΠ²ΡΠ·Π°Π½Π½Π°Ρ Ρ ΠΏΠΎΡΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ΠΌ ΠΊΠΎΠΌΠ°Π½Π΄, ΡΠΎΡΡΠ°Π²Π»ΡΡΡΠΈΡ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΡ Π²ΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ·ΡΠΊΠ° ΠΈ Π² ΡΠ΅Π»ΠΎΠΌ ΡΠ΅ΠΊΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠΈΡΡΡΡΠ΅ΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ. ΠΡΠΎ ΠΎΡΠ½ΠΎΠ²Π½Π°Ρ ΡΠ°Π·Π° Π½Π° ΡΡΠ°ΠΏΠ΅ ΡΠΈΠ½ΡΠ΅Π·Π° ΡΠ΅Π·ΡΠ»ΡΡΠΈΡΡΡΡΠ΅ΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ. ΠΡΠΎΠΌΠ΅ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎΡΠΎΠΆΠ΄Π΅Π½ΠΈΡ ΡΠ΅ΠΊΡΡΠ° ΡΠ΅Π·ΡΠ»ΡΡΠΈΡΡΡΡΠ΅ΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΡ ΠΎΠ±ΡΡΠ½ΠΎ Π²ΠΊΠ»ΡΡΠ°Π΅Ρ Π² ΡΠ΅Π±Ρ ΡΠ°ΠΊΠΆΠ΅ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ — ΠΏΡΠΎΡΠ΅ΡΡ, ΡΠ²ΡΠ·Π°Π½Π½ΡΠΉ Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΎΠΉ ΡΠΆΠ΅ ΠΏΠΎΡΠΎΠΆΠ΄Π΅Π½Π½ΠΎΠ³ΠΎ ΡΠ΅ΠΊΡΡΠ°. ΠΠ½ΠΎΠ³Π΄Π° ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ Π²ΡΠ΄Π΅Π»ΡΡΡ Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ ΡΠ°Π·Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½Π° ΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ ΡΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎΠ΅ Π²Π»ΠΈΡΠ½ΠΈΠ΅ Π½Π° ΠΊΠ°ΡΠ΅ΡΡΠ²ΠΎ ΠΈ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠΈΡΡΡΡΠ΅ΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ.
ΠΡΠΎΡ ΠΎΠ΄ ΡΡΠ°Π½ΡΠ»ΡΡΠΎΡΠ° — ΠΏΡΠΎΡΠ΅ΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ ΡΡΠ΅Π½ΠΈΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠΎΠΌ Π΄Π°Π½Π½ΡΡ ΠΈΠ· ΠΏΠ°ΠΌΡΡΠΈ, ΠΈΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΈ ΠΏΠΎΠΌΠ΅ΡΡΠ½ΠΈΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ° Π² ΠΏΠ°ΠΌΡΡΡ. Π ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ΠΎ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΎΡ ΠΎΠ΄ΠΎΠ², Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ΠΏΡΠΎΡ ΠΎΠ΄Ρ Π»Π΅ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΈ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΠ°. Π Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΡΠ»ΡΡΠ°ΡΡ ΠΏΡΠΎΡ ΠΎΠ΄Ρ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½Ρ Π² ΠΎΠ΄ΠΈΠ½ ΠΏΡΠΎΡ ΠΎΠ΄.
ΠΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΡ
ΠΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡ — ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°, Π²ΠΎΡΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡΠ°Ρ ΠΈΡΡ ΠΎΠ΄Π½ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π½Π° Π²Ρ ΠΎΠ΄Π½ΠΎΠΌ (ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠΌ) ΡΠ·ΡΠΊΠ΅ ΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΠ°Ρ Π΅Π΅.
ΠΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡ, ΡΠ°ΠΊΠΆΠ΅ ΠΊΠ°ΠΊ ΠΈ ΡΡΠ°Π½ΡΠ»ΡΡΠΎΡ, Π°Π½Π°Π»ΠΈΠ·ΠΈΡΡΠ΅Ρ ΡΠ΅ΠΊΡΡ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, Π½ΠΎ ΠΎΠ½ Π½Π΅ ΠΏΠΎΡΠΎΠΆΠ΄Π°Π΅Ρ ΡΠ΅Π·ΡΠ»ΡΡΠΈΡΡΡΡΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, Π° ΡΡΠ°Π·Ρ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΠΈΡΡ ΠΎΠ΄Π½ΡΡ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ Ρ Π΅Π΅ ΡΠΌΡΡΠ»ΠΎΠΌ, Π·Π°Π΄Π°Π½Π½ΡΠΌ ΡΠ΅ΠΌΠ°Π½ΡΠΈΠΊΠΎΠΉ Π΅Π΅ ΡΠ·ΡΠΊΠ°.
Lex ΠΈ Yacc
ΠΠ±Π·ΠΎΡ Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡΠΎΠ² ΠΊΠΎΠ΄Π°
Π‘ΠΈΡΡΠ΅ΠΌΡ GNU/Linux ΠΏΠΎΡΡΠ°Π²Π»ΡΡΡΡΡ Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°ΠΌΠΈ Π΄Π»Ρ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ. ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠΏΡΠ»ΡΡΠ½Ρ:
Β· Flex, Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡ Π»Π΅ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΠ°
Β· Bison, Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΠ°
Β· Gperf, ΡΠ°Π·Π²ΠΈΡΡΠΉ Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡ Ρ ΡΡ-ΡΡΠ½ΠΊΡΠΈΠΈ ΠΡΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π³Π΅Π½Π΅ΡΠΈΡΡΡΡ ΡΠ΅ΠΊΡΡΡ Π΄Π»Ρ ΡΠ·ΡΠΊΠ° C. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ΄ΠΈΠ²ΠΈΡΡΡΡ, ΠΏΠΎΡΠ΅ΠΌΡ ΠΎΠ½ΠΈ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ Π² Π²ΠΈΠ΄Π΅ Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡΠΎΠ² ΠΊΠΎΠ΄Π°, Π° Π½Π΅ Π² Π²ΠΈΠ΄Π΅ ΡΡΠ½ΠΊΡΠΈΠΉ. Π’ΠΎΠΌΡ Π΅ΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΈΡΠΈΠ½:
Β· ΠΡ ΠΎΠ΄Π½ΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ Π΄Π»Ρ ΡΡΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΉ ΡΠ²Π»ΡΡΡΡΡ ΠΎΡΠ΅Π½Ρ ΡΠ»ΠΎΠΆΠ½ΡΠΌΠΈ ΠΈ ΠΈΡ Π½Π΅ΠΏΡΠΎΡΡΠΎ Π²ΡΡΠ°Π·ΠΈΡΡ Π² Π²ΠΈΠ΄Π΅, ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎΠΌ Π΄Π»Ρ C-ΠΊΠΎΠ΄Π°.
Β· ΠΡΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π²ΡΡΠΈΡΠ»ΡΡΡ ΠΈ Π³Π΅Π½Π΅ΡΠΈΡΡΡΡ ΠΌΠ½ΠΎΠ³ΠΎ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΡΠ°Π±Π»ΠΈΡ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ Π΄Π»Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ, ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ, Π»ΡΡΡΠ΅ ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°ΡΡ ΡΡΠΈ ΡΠ°Π±Π»ΠΈΡΡ ΠΎΠ΄ΠΈΠ½ ΡΠ°Π· ΠΏΠ΅ΡΠ΅Π΄ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠ΅ΠΉ, ΡΠ΅ΠΌ ΠΏΡΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Π·Π°ΠΏΡΡΠΊΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ.
Β· ΠΠ½ΠΎΠ³ΠΈΠ΅ Π°ΡΠΏΠ΅ΠΊΡΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΡΠΈΡ ΡΠΈΡΡΠ΅ΠΌ Π½Π°ΡΡΡΠ°ΠΈΠ²Π°ΡΡΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ, ΠΏΠΎΠΌΠ΅ΡΠ°Π΅ΠΌΡΠΌ Π½Π° ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠ΅ ΠΏΠΎΠ·ΠΈΡΠΈΠΈ. ΠΡΠΎΡ ΠΊΠΎΠ΄ ΠΌΠΎΠΆΠ΅Ρ Π²ΠΏΠΎΡΠ»Π΅Π΄ΡΡΠ²ΠΈΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ, ΡΠ²Π»ΡΡΡΠΈΠ΅ΡΡ ΡΠ°ΡΡΡΡ ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΉ ΡΡΡΡΠΊΡΡΡΡ, ΠΏΠΎΡΡΡΠΎΠ΅Π½Π½ΠΎΠΉ Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡΠΎΠΌ ΠΊΠΎΠ΄Π°, Π±Π΅Π· Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ ΠΈ ΠΈΠ·Π²Π»Π΅ΠΊΠ°ΡΡ Π²ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ Π²ΡΡΡΠ½ΡΡ.
ΠΠ°ΠΆΠ΄ΠΎΠ΅ ΠΈΠ· ΡΡΠΈΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°Π»ΡΠ½ΡΡ ΡΡΠ΅Π΄ΡΡΠ² ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΎ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΡΠΈΠΏΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ. Bison ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ Π³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΡ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΠΎΠ²; Flex — Π΄Π»Ρ Π³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π»Π΅ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΡ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΠΎΠ². ΠΡΡΠ³ΠΈΠ΅ ΡΡΠ΅Π΄ΡΡΠ²Π° ΠΏΠΎΡΠ²ΡΡΠ΅Π½Ρ, Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ, Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΠΈ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΡ Π°ΡΠΏΠ΅ΠΊΡΠΎΠ² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² Π΄ΠΎΡΡΡΠΏΠ° ΠΊ Π±Π°Π·Π΅ Π΄Π°Π½Π½ΡΡ Π² ΠΈΠΌΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½ΡΠ΅ ΡΠ·ΡΠΊΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠ°ΡΡΠΎ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΡΡΠΈΠ½Π½ΠΎΠΉ ΡΠ°Π±ΠΎΡΠΎΠΉ. ΠΠ»Ρ Π΅Π΅ ΠΎΠ±Π»Π΅Π³ΡΠ΅Π½ΠΈΡ ΠΈ ΡΡΠ°Π½Π΄Π°ΡΡΠΈΠ·Π°ΡΠΈΠΈ ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ Embedded SQL — ΡΠΈΡΡΠ΅ΠΌΠ° ΠΌΠ΅ΡΠ°ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠ°Ρ Π΄Π»Ρ ΠΏΡΠΎΡΡΠΎΠ³ΠΎ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ Π±Π°Π·Π΅ Π΄Π°Π½Π½ΡΡ ΠΈ C.
Π₯ΠΎΡΡ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π½Π΅ΠΌΠ°Π»ΠΎ Π΄ΠΎΡΡΡΠΏΠ½ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΡ ΠΎΠ±ΡΠ°ΡΠ°ΡΡΡΡ ΠΊ Π±Π°Π·Π°ΠΌ Π΄Π°Π½Π½ΡΡ Π² C, ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ°ΠΊΠΎΠ³ΠΎ Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡΠ° ΠΊΠΎΠ΄Π° ΠΊΠ°ΠΊ Embedded SQL Π΄Π΅Π»Π°Π΅Ρ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ C ΠΈ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ Π±Π°Π·Π΅ Π΄Π°Π½Π½ΡΡ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ Π±ΠΎΠ»Π΅Π΅ Π»Π΅Π³ΠΊΠΈΠΌ ΠΏΡΡΠ΅ΠΌ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ SQL-ΡΡΡΠ½ΠΎΡΡΠ΅ΠΉ Π² C Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ ΡΠ·ΡΠΊΠ°. ΠΠ½ΠΎΠ³ΠΈΠ΅ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Embedded SQL, ΠΎΠ΄Π½Π°ΠΊΠΎ, Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ ΡΠ²Π»ΡΡΡΡΡ ΠΏΡΠΎΡΡΡΠΌΠΈ ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌΠΈ ΠΌΠ°ΠΊΡΠΎΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ°ΠΌΠΈ, Π³Π΅Π½Π΅ΡΠΈΡΡΡΡΠΈΠΌΠΈ ΠΎΠ±ΡΡΠ½ΡΠ΅ C-ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Embedded SQL Π΄Π΅Π»Π°Π΅Ρ Π΄Π»Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠ° Π΄ΠΎΡΡΡΠΏ ΠΊ Π±Π°Π·Π΅ Π΄Π°Π½Π½ΡΡ Π±ΠΎΠ»Π΅Π΅ Π΅ΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΡΠΌ, ΠΈΠ½ΡΡΠΈΡΠΈΠ²Π½ΡΠΌ ΠΈ ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΡΠΌ ΠΎΡ ΠΎΡΠΈΠ±ΠΎΠΊ ΠΏΠΎ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ Ρ ΠΏΡΡΠΌΡΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ. ΠΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ Embedded SQL Π·Π°ΠΏΡΡΠ°Π½Π½ΠΎΡΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π±Π°Π· Π΄Π°Π½Π½ΡΡ ΠΌΠ°ΡΠΊΠΈΡΡΠ΅ΡΡΡ ΠΌΠ°ΠΊΡΠΎΡΠ·ΡΠΊΠΎΠΌ
Π‘ΠΎΠ²ΠΌΠ΅ΡΡΠ½ΠΎΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Lex ΠΈ Yacc
ΠΠΎ 1975 Π³ΠΎΠ΄Π° ΠΏΡΠΎΡΠ΅ΡΡ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠΎΠ² Π·Π°Π½ΠΈΠΌΠ°Π» ΠΎΡΠ΅Π½Ρ ΠΌΠ½ΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ. ΠΠ°ΡΠ΅ΠΌ Lesk[1975] ΠΈ Johnson[1975] ΠΎΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°Π»ΠΈ ΡΡΡΠ΄Ρ ΠΏΠΎ lex ΠΈ yacc. ΠΡΠΈ ΡΡΠΈΠ»ΠΈΡΡ ΡΠΈΠ»ΡΠ½ΠΎ ΡΠΏΡΠΎΡΡΠΈΠ»ΠΈ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠΎΠ². ΠΠ΅ΡΠ°Π»ΠΈ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ Π½Π°ΠΉΠ΄Π΅Π½Ρ Ρ Aho[1986]
Π¨Π°Π±Π»ΠΎΠ½Ρ ΠΊΠΎΠ΄Π° ΠΏΠΎΠΌΠ΅ΡΠ°ΡΡΡΡ Π½Π° Π²Ρ ΠΎΠ΄ Lex. Lex ΡΠΈΡΠ°Π΅Ρ ΡΠ°Π±Π»ΠΎΠ½Ρ ΠΈ Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅Ρ C ΠΊΠΎΠ΄ Π΄Π»Ρ Π»Π΅ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΠ° ΠΈΠ»ΠΈ ΡΠΊΠ°Π½Π΅ΡΠ°.
ΠΠ΅ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡ ΠΈΡΠ΅Ρ ΡΠΎΠ²ΠΏΠ°Π΄Π΅Π½ΠΈΠ΅ ΡΡΡΠΎΠΊ Π²ΠΎ Π²Ρ ΠΎΠ΄Π½ΡΡ Π΄Π°Π½Π½ΡΡ , ΠΎΡΠ½ΠΎΠ²ΡΠ²Π°ΡΡΡ Π½Π° Π·Π°Π΄Π°Π½Π½ΡΡ ΡΠ°Π±Π»ΠΎΠ½Π°Ρ , ΠΈ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ΅Ρ ΡΡΡΠΎΠΊΠΈ Π² ΡΠΎΠΊΠ΅Π½Ρ.
Π’ΠΎΠΊΠ΅Π½Ρ ΡΠ²Π»ΡΡΡΡΡ ΡΠΈΡΠ»ΠΎΠ²ΡΠΌ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ ΡΡΡΠΎΠΊ ΡΠΏΡΠΎΡΠ°ΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ.
ΠΠΎΠ³Π΄Π° Π»Π΅ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡ Π½Π°Ρ ΠΎΠ΄ΠΈΡ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΡ Π²ΠΎ Π²Ρ ΠΎΠ΄Π½ΠΎΠΌ ΠΏΠΎΡΠΎΠΊΠ΅, ΠΎΠ½ΠΈ Π²Π½ΠΎΡΡΡΡΡ Π² ΡΠ°Π±Π»ΠΈΡΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ². Π’Π°Π±Π»ΠΈΡΠ° ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ Π΄ΡΡΠ³ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΡΠ°ΠΊΡΡ, ΠΊΠ°ΠΊ ΡΠΈΠΏ Π΄Π°Π½Π½ΡΡ (ΡΠ΅Π»ΡΠΉ ΠΈΠ»ΠΈ Π²Π΅ΡΠ΅ΡΡΠ²Π΅Π½Π½ΡΠΉ) ΠΈ ΠΌΠ΅ΡΡΠΎ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π² ΠΏΠ°ΠΌΡΡΠΈ. ΠΡΠ΅ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΡΡΠ»ΠΊΠΈ Π½Π° ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΡ ΡΡΡΠ»Π°ΡΡΡΡ Π½Π° ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΉ ΠΈΠ½Π΄Π΅ΠΊΡ ΡΠ°Π±Π»ΠΈΡΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ².
ΠΠΎΠ΄ Π³ΡΠ°ΠΌΠΌΠ°ΡΠΈΠΊΠΈ ΠΏΠΎΠ΄Π°ΡΡΡΡ Π½Π° Π²Ρ ΠΎΠ΄ yacc. Yacc ΡΠΈΡΠ°Π΅Ρ Π³ΡΠ°ΠΌΠΌΠ°ΡΠΈΠΊΡ ΠΈ Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅Ρ C ΠΊΠΎΠ΄ Π΄Π»Ρ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΠ° ΠΈΠ»ΠΈ ΡΠ°Π·Π±ΠΎΡΡΠΈΠΊΠ°. Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ Π³ΡΠ°ΠΌΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΏΡΠ°Π²ΠΈΠ»Π°, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ Π΅ΠΌΡ Π°Π½Π°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΡΠΎΠΊΠ΅Π½Ρ ΠΈΠ· Π»Π΅ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΠ° ΠΈ ΡΠΎΠ·Π΄Π°ΡΡ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ Π΄Π΅ΡΠ΅Π²ΠΎ. Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ Π΄Π΅ΡΠ΅Π²ΠΎ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ ΠΈΠ΅ΡΠ°ΡΡ ΠΈΡΡΠΊΡΡ ΡΡΡΡΠΊΡΡΡΡ ΡΠΎΠΊΠ΅Π½ΠΎΠ². ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ precedence ΠΈ Π°ΡΡΠΎΡΠΈΠ°ΡΠΈΠ²Π½ΠΎΡΡΠΈ (associativity) ΠΏΠΎΠΊΠ°Π·Π°Π½Ρ Π² ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠΌ Π΄Π΅ΡΠ΅Π²Π΅. Π‘Π»Π΅Π΄ΡΡΡΠΈΠΉ ΡΠ°Π³, Π³Π΅Π½Π΅ΡΠ°ΡΠΈΡ ΠΊΠΎΠ΄Π°, ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅ΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΎΠ±Ρ ΠΎΠ΄Π° ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π΄Π΅ΡΠ΅Π²Π°. ΠΠ΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΡ ΡΠΎΠ·Π΄Π°ΡΡ ΠΌΠ°ΡΠΈΠ½Π½ΡΠΉ ΠΊΠΎΠ΄, ΠΊΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ — ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π½Π° ΡΠ·ΡΠΊΠ°Ρ Π°ΡΡΠ΅ΠΌΠ±Π»Π΅ΡΠ°.
ΠΠΎΠΌΠ°Π½Π΄Ρ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ°, bas.exe, ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Ρ Π½ΠΈΠΆΠ΅:
yacc — d bas.y # create y.tab.h, y.tab.c
lex bas. l # create lex.yy.c
cc lex.yy.c y.tab.c — obas.exe # compile/link
Yacc ΡΠΈΡΠ°Π΅Ρ Π³ΡΠ°ΠΌΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ Π² bas.y ΠΈ Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅Ρ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡ (parser), ΠΊΠΎΡΠΎΡΡΠΉ Π²ΠΊΠ»ΡΡΠ°Π΅Ρ ΡΡΠ½ΠΊΡΠΈΡ yyparse, Π² ΡΠ°ΠΉΠ»Π΅ y.tab.c. Π€Π°ΠΉΠ» bas.y ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π² ΡΠ΅Π±Π΅ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ ΡΠΎΠΊΠ΅Π½ΠΎΠ². ΠΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΎΠΏΡΠΈΠΈ — d Π²Π΅Π΄Π΅Ρ ΠΊ ΡΠΎΠΌΡ, ΡΡΠΎ yacc Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ Π΄Π»Ρ ΡΠΎΠΊΠ΅Π½ΠΎΠ² ΠΈ ΠΏΠΎΠΌΠ΅ΡΠ°Π΅Ρ ΠΈΡ Π² ΡΠ°ΠΉΠ» y.tab.h. Lex ΡΠΈΡΠ°Π΅Ρ ΡΠ°Π±Π»ΠΎΠ½Ρ, ΠΎΠΏΠΈΡΠ°Π½Π½ΡΠ΅ Π² bas.l, Π²ΠΊΠ»ΡΡΠ°ΡΡΠΈΠ΅ ΡΠ°ΠΉΠ» y.tab.h ΠΈ Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅Ρ Π»Π΅ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π²ΠΊΠ»ΡΡΠ°Π΅Ρ ΡΡΠ½ΠΊΡΠΈΡ yylex, Π² ΡΠ°ΠΉΠ»Π΅ lex.yy.c. ΠΠ°ΠΊΠΎΠ½Π΅Ρ, Π»Π΅ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡ (lexer) ΠΈ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡ (parser) ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΡΡΡΡ ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½ΡΡΡΡΡ Π²ΠΌΠ΅ΡΡΠ΅, ΠΎΠ±ΡΠ°Π·ΡΡ ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΠΉ ΡΠ°ΠΉΠ» bas.exe. ΠΠ· main, ΠΌΡ Π²ΡΠ·ΡΠ²Π°Π΅ΠΌ yyparse, ΡΡΠΎΠ±Ρ Π·Π°ΠΏΡΡΡΠΈΡΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ. Π€ΡΠ½ΠΊΡΠΈΡ yyparse Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π²ΡΠ·ΡΠ²Π°Π΅Ρ yylex, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠΎΠΊΠ΅Π½.
Lex
Theory
ΠΠ΅ΡΠ²Π°Ρ ΡΠ°Π·Π° Π² ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ΅ — ΡΡΠ΅Π½ΠΈΠ΅ Π²Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π° ΠΈ Π΅Π³ΠΎ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Π² ΡΠΎΠΊΠ΅Π½Ρ. ΠΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΠ΅Π³ΡΠ»ΡΡΠ½ΡΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠ°Π±Π»ΠΎΠ½Ρ Π΄Π»Ρ Π»Π΅ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π°, ΠΈ ΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠΎΠ΄, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ ΡΠΊΠ°Π½ΠΈΡΠΎΠ²Π°ΡΡ ΠΈ Π½Π°ΠΉΡΠΈ ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡΡΠΈΠ΅ ΡΡΡΠΎΠΊΠΈ Π² ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠΎΠ΄Π΅. ΠΠ°ΠΆΠ΄ΠΎΠΌΡ ΡΠ°Π±Π»ΠΎΠ½Ρ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΌΡ Π² ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠΎΠ΄Π΅ Π΄Π»Ρ Π»Π΅ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π°, ΡΠΎΠΏΠΎΡΡΠ°Π²Π»ΡΠ΅ΡΡΡ Π°ΡΡΠΎΡΠΈΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅. ΠΠ±ΡΡΠ½ΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠΎΠΊΠ΅Π½, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡΡΡΡ ΡΡΡΠΎΠΊΡ, Π² ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΌ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΠΎΠΌ. Π‘Π½Π°ΡΠ°Π»Π° ΠΏΡΠΎΡΡΠΎ ΠΏΠ΅ΡΠ°ΡΠ°Π΅ΠΌ ΡΠΎΠ²ΠΏΠ°Π²ΡΡΡ ΡΡΡΠΎΠΊΡ, Π΅ΡΠ»ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠΎΠΊΠ΅Π½Π°.
ΠΠ°Π»Π΅Π΅ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΡΠΎΡΡΠΎΠ³ΠΎ ΡΠ°Π±Π»ΠΎΠ½Π°, ΡΠΎΡΡΠ°Π²Π»ΡΡΡΠ΅Π³ΠΎ ΡΠ΅Π³ΡΠ»ΡΡΠ½ΠΎΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΈΡΠ΅Ρ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΡ. Lex ΡΠΈΡΠ°Π΅Ρ ΡΡΠΎΡ ΡΠ°Π±Π»ΠΎΠ½ ΠΈ ΡΠΎΠ·Π΄Π°Π΅Ρ C ΠΊΠΎΠ΄ Π΄Π»Ρ Π»Π΅ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΠ°, ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΡΠ΅Ρ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΡ.
letter (letter|digit)*
ΠΡΠΎΡ ΡΠ°Π±Π»ΠΎΠ½ ΠΈΡΠ΅Ρ ΡΡΡΠΎΠΊΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ², ΠΊΠΎΡΠΎΡΠ°Ρ Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ Ρ Π΅Π΄ΠΈΠ½ΠΈΡΠ½ΠΎΠ³ΠΎ ΡΠΈΠΌΠ²ΠΎΠ»Π°, ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ Π·Π° Π½ΡΠ»Π΅ΠΌ ΠΈΠ»ΠΈ Π±ΠΎΠ»ΡΡΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² ΠΈΠ»ΠΈ ΡΠΈΡΡ. ΠΡΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ Ρ ΠΎΡΠΎΡΠΎ ΠΈΠ»Π»ΡΡΡΡΠΈΡΡΠ΅Ρ, ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ, ΡΠ°Π·ΡΠ΅ΡΠ΅Π½Π½ΡΠ΅, Π° ΡΠ΅Π³ΡΠ»ΡΡΠ½ΡΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡΡ :
* ΠΏΠΎΠ²ΡΠΎΡΠ΅Π½ΠΈΠ΅, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Π½ΠΎΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠΌ «*» (repetition)
* ΡΠ΅ΡΠ΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Π½ΠΎΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠΌ «|» (alternation)
* ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ (concatenation)
ΠΡΠ±ΠΎΠ΅ ΡΠ΅Π³ΡΠ»ΡΡΠ½ΠΎΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΎ Π°Π²ΡΠΎΠΌΠ°ΡΠΎΠΌ Ρ ΠΊΠΎΠ½Π΅ΡΠ½ΡΠΌ ΡΠΈΡΠ»ΠΎΠΌ ΡΠΎΡΡΠΎΡΠ½ΠΈΠΉ (finite state automaton, FSA). ΠΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΡΡ FSA, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠ΅Π΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ ΠΈ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄Ρ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠΎΡΡΠΎΡΠ½ΠΈΡΠΌΠΈ. Π‘ΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΠΎΠ΄Π½ΠΎ Π½Π°ΡΠ°Π»ΡΠ½ΠΎΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΠΈ ΠΎΠ΄Π½ΠΎ, ΠΈΠ»ΠΈ Π±ΠΎΠ»ΡΡΠ΅, ΠΊΠΎΠ½Π΅ΡΠ½ΡΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΠΉ ΠΈΠ»ΠΈ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½Π½ΡΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΠΉ.
ΠΠ° ΡΠΈΡ. 3, ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ 0 — ΡΠ²Π»ΡΠ΅ΡΡΡ Π½Π°ΡΠ°Π»ΡΠ½ΡΠΌ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ΠΌ, Π° ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ 2 — ΡΠ°Π·ΡΠ΅ΡΠ΅Π½Π½ΡΠΌ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ΠΌ. ΠΠΎΠ³Π΄Π° ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΡΡΠ΅Π½ΠΈΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»Π°, ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ Π² Π΄ΡΡΠ³ΠΎΠ΅. ΠΠΎΠ³Π΄Π° ΡΠΈΡΠ°Π΅ΡΡΡ ΠΏΠ΅ΡΠ²ΡΠΉ ΡΠΈΠΌΠ²ΠΎΠ», ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ Π² ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ 1. ΠΠ²ΡΠΎΠΌΠ°Ρ ΠΎΡΡΠ°Π΅ΡΡΡ Π² ΡΠΎΡΡΠΎΡΠ½ΠΈΠΈ 1, ΠΏΠΎΠΊΠ° ΡΠΈΡΠ°ΡΡΡΡ Π±ΡΠΊΠ²Ρ (letters) ΠΈΠ»ΠΈ ΡΠΈΡΡΡ (digits). ΠΠΎΠ³Π΄Π° ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅ΡΡΡ ΡΡΠ΅Π½ΠΈΠ΅ ΠΈΠ½ΠΎΠ³ΠΎ ΡΠΈΠΌΠ²ΠΎΠ»Π°, ΠΊΡΠΎΠΌΠ΅ Π±ΡΠΊΠ²Ρ ΠΈΠ»ΠΈ ΡΠΈΠΌΠ²ΠΎΠ»Π°, ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ Π² ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ 2, ΡΠ°Π·ΡΠ΅ΡΠ΅Π½Π½ΠΎΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅. ΠΡΠ±ΠΎΠΉ FSA ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ½ΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΡΠΎΡ Π°Π²ΡΠΎΠΌΠ°Ρ Ρ 3 ΠΌΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΡΠΌΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠ΅ΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
start: goto state0
state0: read c
if c = letter goto state1
goto state0
state1: read c
if c = letter goto state1
if c = digit goto state1
goto state2
state2: accept string
ΠΡΠΎ ΡΠ΅Ρ Π½ΠΈΠΊΠ°, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠ°Ρ lex. Π Π΅Π³ΡΠ»ΡΡΠ½ΡΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ ΡΡΠ°Π½ΡΠ»ΠΈΡΡΡΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ lex Π² ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ½ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅Ρ FSA. ΠΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ Π²Ρ ΠΎΠ΄Π½ΠΎΠΉ ΡΠΈΠΌΠ²ΠΎΠ» ΠΈ ΡΠ΅ΠΊΡΡΠ΅Π΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅, ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π² ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΉ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠΎΠΌ ΡΠ°Π±Π»ΠΈΡΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠΉ.
Π’Π΅ΠΏΠ΅ΡΡ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ Π»Π΅Π³ΠΊΠΎ ΠΏΠΎΠ½ΡΡΡ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ Π² lex. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, lex Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½.
Π’Π°Π±Π»ΠΈΡΠ° 1. ΠΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΡΠ½ΡΠ΅ ΡΠ°Π±Π»ΠΎΠ½Ρ (Pattern Matching Primitives)
ΠΠ΅ΡΠ°ΡΠΈΠΌΠ²ΠΎΠ» (Metacharacter) | Π‘ΠΎΠ²ΠΏΠ°Π΄Π΅Π½ΠΈΡ (Matches) | |
. | ΠΡΠ±ΠΎΠΉ ΡΠΈΠΌΠ²ΠΎΠ», ΠΊΡΠΎΠΌΠ΅ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄Π° ΡΡΡΠΎΠΊΠΈ | |
n | Π‘ΠΈΠΌΠ²ΠΎΠ» ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄Π° ΡΡΡΠΎΠΊΠΈ | |
* | 0 ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΊΠΎΠΏΠΈΠΉ ΠΏΡΠ΅Π΄ΡΠ΅ΡΡΠ²ΡΡΡΠΈΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΉ | |
1 ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΊΠΎΠΏΠΈΠΉ ΠΏΡΠ΅Π΄ΡΠ΅ΡΡΠ²ΡΡΡΠΈΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΉ | ||
? | 0 ΠΈΠ»ΠΈ 1 ΠΊΠΎΠΏΠΈΡ ΠΏΡΠ΅Π΄ΡΠ΅ΡΡΠ²ΡΡΡΠΈΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΉ | |
^ | ΠΠ°ΡΠ°Π»ΠΎ ΡΡΡΠΎΠΊΠΈ | |
$ | ΠΠΎΠ½Π΅Ρ ΡΡΡΠΎΠΊΠΈ | |
a|b | a ΠΈΠ»ΠΈ b | |
(ab)+ | ΠΠ΄Π½Π° ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΊΠΎΠΏΠΈΠΉ ab (Π³ΡΡΠΏΠΏΠΈΡΠΎΠ²ΠΊΠ°, grouping) | |
«a+b» | Π»ΠΈΡΠ΅ΡΠ°Π» «a+b» (C escapes still work) | |
[] | ΠΠ»Π°ΡΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² | |
Π’Π°Π±Π»ΠΈΡΠ° 2. ΠΡΠΈΠΌΠ΅ΡΡ ΡΠ°Π±Π»ΠΎΠ½ΠΎΠ² Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΉ (Pattern Matching Examples)
ΠΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ (Expression) | Π‘ΠΎΠ²ΠΏΠ°Π΄Π΅Π½ΠΈΡ (Matches) | |
abc | abc | |
abc* | ab abc abcc abccc… | |
abc+ | abc abcc abccc… | |
a (bc)+ | abc abcbc abcbcbc… | |
a (bc)? | a abc | |
[abc] | ΠΠ΄Π½ΠΎ ΠΈΠ·: a, b, c | |
[a-z] | ΠΡΠ±ΠΎΠΉ ΡΠΈΠΌΠ²ΠΎΠ», a-z | |
[a-z] | ΠΠ΄Π½ΠΎ ΠΈΠ·: a, -, z | |
[-az] | ΠΠ΄Π½ΠΎ ΠΈΠ·: -, a, z | |
[A-Za-z0-9]+ | ΠΠ΄ΠΈΠ½ ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² Π°Π»ΡΠ°Π²ΠΈΡΠ° ΠΈΠ»ΠΈ ΡΠΈΡΡ | |
[tn]+ | ΠΡΠΎΠ±Π΅Π»ΡΠ½ΡΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»Ρ | |
[^ab] | ΠΡΠ΅, ΠΊΡΠΎΠΌΠ΅: a, b | |
[a^b] | ΠΠ΄Π½ΠΎ ΠΈΠ·: a, ^, b | |
[a|b] | ΠΠ΄Π½ΠΎ ΠΈΠ·: a, |, b | |
a|b | ΠΠ΄Π½ΠΎ ΠΈΠ·: a, b | |
Π Π΅Π³ΡΠ»ΡΡΠ½ΡΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ Π² lex ΡΠΎΡΡΠ°Π²Π»ΡΡΡΡΡ ΠΈΠ· ΠΌΠ΅ΡΠ°ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² (Π’Π°Π±Π»ΠΈΡΠ° 1). ΠΡΠΈΠΌΠ΅ΡΡ ΡΠΎΠ²ΠΏΠ°Π΄Π΅Π½ΠΈΡ ΡΠ°Π±Π»ΠΎΠ½ΠΎΠ² ΠΏΠΎΠΊΠ°Π·Π°Π½Ρ Π² ΡΠ°Π±Π»ΠΈΡΠ΅ 2. ΠΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΠΊΠ»Π°ΡΡΠ° ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ², ΠΎΠ±ΡΡΠ½ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ ΡΠ΅ΡΡΡΡ ΡΠ²ΠΎΠ΅ Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅.
Π‘Π»Π΅Π΄ΡΡΡΠΈΠ΅ Π΄Π²Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° ΡΠ°Π·ΡΠ΅ΡΠ΅Π½Ρ Π² ΠΊΠ»Π°ΡΡΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ²: Π΄Π΅ΡΠΈΡ («-», hyphen) ΠΈ ΡΠΈΡΠΊΡΠΌΡΠ»Π΅ΠΊΡ («^», circumflex). ΠΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΠΌΠ΅ΠΆΠ΄Ρ Π΄Π²ΡΠΌΡ ΡΠΈΠΌΠ²ΠΎΠ»Π°ΠΌΠΈ Π΄Π΅ΡΠΈΡΠ°, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅ΡΡΡ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ². Π¦ΠΈΡΠΊΡΠΌΡΠ»Π΅ΠΊΡ, ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ Π΅Π³ΠΎ ΠΊΠ°ΠΊ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ ΡΠΈΠΌΠ²ΠΎΠ»Π°, ΠΎΡΡΠΈΡΠ°Π΅Ρ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅. ΠΡΠ»ΠΈ Π΄Π²Π° ΡΠ°Π±Π»ΠΎΠ½Π° ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡΡ Ρ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠΉ ΡΡΡΠΎΠΊΠΎΠΉ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡΠ°Π±Π»ΠΎΠ½, ΠΏΠΎ ΠΊΠΎΡΠΎΡΠΎΠΌΡ Π½Π°ΠΉΠ΄Π΅Π½Π° Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π΄Π»ΠΈΠ½Π½Π°Ρ ΡΡΡΠΎΠΊΠ°, Π² ΡΠ»ΡΡΠ°Π΅, Π΅ΡΠ»ΠΈ Π΄Π»ΠΈΠ½Π° ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Π°, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΏΠ΅ΡΠ²ΡΠΉ ΡΠ°Π±Π»ΠΎΠ½.
… definitions…
%%
… rules…
%%
… subroutines…
ΠΡ ΠΎΠ΄Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ lex Π΄Π΅Π»ΡΡΡΡ Π½Π° 3 ΡΠ΅ΠΊΡΠΈΠΈ, Ρ ΡΠΈΠΌΠ²ΠΎΠ»Π°ΠΌΠΈ%%, ΡΠ°Π·Π΄Π΅Π»ΡΡΡΠΈΠΌΠΈ ΡΠ΅ΠΊΡΠΈΠΈ. ΠΡΠΎ ΠΏΡΠΎΠΈΠ»Π»ΡΡΡΡΠΈΡΠΎΠ²Π°Π½ΠΎ Π² ΠΏΡΠΈΠΌΠ΅ΡΠ΅. ΠΠ΅ΡΠ²ΡΠΉ ΠΏΡΠΈΠΌΠ΅Ρ — ΡΡΠΎ Π½Π°ΠΈΠΌΠ΅Π½ΡΡΠΈΠΉ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠΉ ΡΠ°ΠΉΠ» lex:
%%
ΠΡ ΠΎΠ΄Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ ΠΊΠΎΠΏΠΈΡΡΡΡΡΡ Π²ΡΡ ΠΎΠ΄Π½ΡΠ΅ ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡ ΡΠΈΠΌΠ²ΠΎΠ»Ρ Π·Π° ΡΠ°Π·. ΠΠ΅ΡΠ²ΡΠΉ ΡΠ°Π·Π΄Π΅Π»ΠΈΡΠ΅Π»Ρ%% ΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π²ΡΠ΅Π³Π΄Π°, ΡΠ°ΠΊ ΠΊΠ°ΠΊ Π²ΡΠ΅Π³Π΄Π° Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡΡΡ ΡΠ΅ΠΊΡΠΈΡ ΠΏΡΠ°Π²ΠΈΠ». ΠΡΠ»ΠΈ Π½Π΅ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠΈΡΠΎΠ²Π°ΡΡ Π½ΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΡΠ°Π²ΠΈΠ»Π°, ΡΠΎΠ³Π΄Π° Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ — ΡΠΎΠ²ΠΏΠ°Π΄Π΅Π½ΠΈΠ΅ Π²ΡΠ΅Π³ΠΎ ΠΈ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π² Π²ΡΡ ΠΎΠ΄Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅. ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π΄Π»Ρ Π²Ρ ΠΎΠ΄Π½ΡΡ ΠΈ Π²ΡΡ ΠΎΠ΄Π½ΡΡ Π΄Π°Π½Π½ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ stdin ΠΈ stdout, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ. ΠΠΎΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠΈΠΌΠ΅Ρ, Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΊΠΎΠ΄Π° ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ:
%%
/* Π‘ΠΎΠ²ΠΏΠ°Π΄Π΅Π½ΠΈΠ΅ Π²ΡΠ΅Π³ΠΎ, ΠΊΡΠΎΠΌΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»Π° Π½ΠΎΠ²ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ */
ECHO;
/* Π‘ΠΎΠ²ΠΏΠ°Π΄Π΅Π½ΠΈΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»Π° ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄Π° ΡΡΡΠΎΠΊΠΈ */
n ECHO;
%%
int yywrap (void) {
return 1;
}
int main (void) {
yylex ();
return 0;
}
ΠΠ²Π° ΡΠ°Π±Π»ΠΎΠ½Π° ΡΠΏΠ΅ΡΠΈΡΠΈΡΠΈΡΠΎΠ²Π°Π½Ρ Π² ΡΠ΅ΠΊΡΠΈΠΈ ΠΏΡΠ°Π²ΠΈΠ». ΠΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π±Π»ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π½Π°ΡΠΈΠ½Π°ΡΡΡΡ Π² ΠΏΠ΅ΡΠ²ΠΎΠΌ ΡΡΠΎΠ»Π±ΡΠ΅, ΡΠΎ Π΅ΡΡΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΡ Π·Π° ΠΏΡΠΎΠ±Π΅Π»ΡΠ½ΡΠΌ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠΌ. ΠΠΏΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ Π°ΡΡΠΎΡΠΈΠΈΡΡΠ΅ΡΡΡ Ρ ΡΠ°Π±Π»ΠΎΠ½ΠΎΠΌ. ΠΠ΅ΠΉΡΡΠ²ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π΅Π΄ΠΈΠ½ΠΈΡΠ½ΡΠΌ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ Π½Π° ΡΠ·ΡΠΊΠ΅ C ΠΈΠ»ΠΈ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π΅Π½Π½ΡΠΌ, Π·Π°ΠΊΠ»ΡΡΠ΅Π½Π½ΡΠΌ Π² ΡΠΊΠΎΠ±ΠΊΠΈ. ΠΡΠ΅, Π½Π΅ Π½Π°ΡΠΈΠ½Π°ΡΡΠ΅Π΅ΡΡ Ρ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ ΡΡΠΎΠ»Π±ΡΠ°, Π΄ΠΎΡΠ»ΠΎΠ²Π½ΠΎ ΠΊΠΎΠΏΠΈΡΡΠ΅ΡΡΡ Π² Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅ΠΌΡΠΉ C ΡΠ°ΠΉΠ». ΠΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠΎ Π΄Π»Ρ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠ΅Π² Π² lex ΡΠ°ΠΉΠ»Π΅. Π ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Π΅ΡΡΡ 2 Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ:
"." ΠΈ «n» Ρ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ΠΌ ECHO, Π°ΡΡΠΎΡΠΈΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌ Ρ ΠΊΠ°ΠΆΠ΄ΡΠΌ ΡΠ°Π±Π»ΠΎΠ½ΠΎΠΌ. ΠΠ΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΌΠ°ΠΊΡΠΎΡΠΎΠ² ΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Ρ Π² lex. ECHO — ΡΡΠΎ ΠΌΠ°ΠΊΡΠΎΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΈΡΠ΅Ρ ΠΊΠΎΠ΄, ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡΡΠΈΠΉ Ρ ΡΠ°Π±Π»ΠΎΠ½ΠΎΠΌ. ΠΡΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π½Π΅ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡΡΠ΅ΠΉ ΡΡΡΠΎΠΊΠΈ. ΠΠ±ΡΡΠ½ΠΎ ECHO ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ ΠΊΠ°ΠΊ
#define ECHO fwrite (yytext, yyleng, 1, yyout)
ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ yytext — ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° ΡΠΎΠ²ΠΏΠ°Π²ΡΡΡ ΡΡΡΠΎΠΊΡ (ΠΎΠΊΠ°Π½ΡΠΈΠ²Π°ΡΡΠΈΠΉΡΡ NULL-ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠΌ), ΠΈ yyleng — Π΄Π»ΠΈΠ½Π° ΡΠΎΠ²ΠΏΠ°Π²ΡΠ΅ΠΉ ΡΡΡΠΎΠΊΠΈ. ΠΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ yyout ΡΠ²Π»ΡΠ΅ΡΡΡ Π²ΡΡ ΠΎΠ΄Π½ΡΠΌ ΡΠ°ΠΉΠ»ΠΎΠΌ ΠΈ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΡΠ²Π»ΡΠ΅ΡΡΡ stdout. Π€ΡΠ½ΠΊΡΠΈΡ yywrap Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ lex, ΠΊΠΎΠ³Π΄Π° Π²Ρ ΠΎΠ΄Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ Π·Π°ΠΊΠΎΠ½ΡΠΈΠ»ΠΈΡΡ. ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ 1, Π΅ΡΠ»ΠΈ Π·Π°ΠΊΠΎΠ½ΡΠ΅Π½ΠΎ, 0 Π΅ΡΠ»ΠΈ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠ°Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ°. ΠΠ°ΠΆΠ΄Π°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π½Π° C ΡΡΠ΅Π±ΡΠ΅Ρ main ΡΡΠ½ΠΊΡΠΈΡ. Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΏΡΠΎΡΡΠΎ Π²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ yylex,
ΠΡΠ½ΠΎΠ²Π½Π°Ρ ΡΠΎΡΠΊΠ° Π²Ρ ΠΎΠ΄Π° Π΄Π»Ρ lex. ΠΠ΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ lex Π²ΠΊΠ»ΡΡΠ°ΡΡ ΠΊΠΎΠΏΠΈΠΈ main ΠΈ yywrap Π² Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ, ΡΡΡΡΠ°Π½ΡΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΡ ΡΠ²Π½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ ΠΈΡ . ΠΠΎΡΡΠΎΠΌΡ ΠΏΠ΅ΡΠ²ΡΠΉ ΠΏΡΠΈΠΌΠ΅Ρ, Π½Π°ΠΈΠΌΠ΅Π½ΡΡΠ°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° lex ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ ΡΡΠ½ΠΊΡΠΈΠΎΠ½ΠΈΡΡΠ΅Ρ.
Name | Function | |
int yylex (void) | ΠΡΠ·ΡΠ²Π°Π΅ΡΡΡ Π΄Π»Ρ Π·Π°ΠΏΡΡΠΊΠ° Π»Π΅ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΠ°, Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠΎΠΊΠ΅Π½ | |
char *yytext | Π£ΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° ΡΠΎΠ²ΠΏΠ°Π²ΡΡΡ ΡΡΡΠΎΠΊΡ | |
yyleng | ΠΠ»ΠΈΠ½Π° ΡΠΎΠ²ΠΏΠ°Π²ΡΠ΅ΠΉ ΡΡΡΠΎΠΊΠΈ | |
yylval | ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅, Π°ΡΡΠΎΡΠΈΠΈΡΡΠ΅ΠΌΠΎΠ΅ Ρ ΡΠΎΠΊΠ΅Π½ΠΎΠΌ | |
int yywrap (void) | Wrapup — ΠΎΠ±Π΅ΡΡΠΊΠ° Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ 1 — Π΅ΡΠ»ΠΈ Π·Π°Π²Π΅ΡΡΠ΅Π½Π°, 0 — Π΅ΡΠ»ΠΈ Π½Π΅ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΎ | |
FILE *yyout | ΠΡΡ ΠΎΠ΄Π½ΠΎΠΉ ΡΠ°ΠΉΠ» | |
FILE *yyin | ΠΡ ΠΎΠ΄Π½ΠΎΠΉ ΡΠ°ΠΉΠ» | |
INITIAL | ΠΡΡ ΠΎΠ΄Π½ΠΎΠ΅ ΡΡΠ»ΠΎΠ²ΠΈΠ΅ ΡΡΠ°ΡΡΠ° | |
BEGIN | Π£ΡΠ»ΠΎΠ²ΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ°ΡΡΠ΅Π΅ ΡΡΠ»ΠΎΠ²ΠΈΠ΅ ΡΡΠ°ΡΡΠ° | |
ECHO | ΠΠ°ΠΏΠΈΡΠ°ΡΡ ΡΠΎΠ²ΠΏΠ°Π²ΡΡΡ ΡΡΡΠΎΠΊΡ | |
Π‘Π»Π΅Π΄ΡΡΡΠΈΠΉ ΠΏΡΠΈΠΌΠ΅Ρ ΠΏΡΠΈΡΠΎΠ΅Π΄ΠΈΠ½ΡΠ΅Ρ ΡΠ»Π΅Π²Π° Π½ΠΎΠΌΠ΅Ρ Π»ΠΈΠ½ΠΈΠΈ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π»ΠΈΠ½ΠΈΠΈ Π² ΡΠ°ΠΉΠ»Π΅. ΠΠ΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ lex ΠΏΡΠ΅Π΄ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ yylineno. ΠΡ ΠΎΠ΄Π½ΠΎΠΉ ΡΠ°ΠΉΠ» Π΄Π»Ρ lex — ΡΡΠΎ yyin, ΠΈ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ stdin.
%{
int yylineno;
%}
%%
^(.*)n printf («%4dt % s«, ++yylineno, yytext);
%%
int main (int argc, char *argv[]) {
yyin = fopen (argv[1], «r»);
yylex ();
fclose(yyin);
}
Π‘Π΅ΠΊΡΠΈΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠΉ ΡΠΎΡΡΠΎΡΡ ΠΈΠ· Π·Π°ΠΌΠ΅Π½, ΠΊΠΎΠ΄Π° ΠΈ Π½Π°ΡΠ°Π»ΡΠ½ΡΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΠΉ. ΠΠΎΠ΄ Π² ΡΠ΅ΠΊΡΠΈΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΏΡΠΎΡΡΠΎ ΠΊΠΎΠΏΠΈΡΡΠ΅ΡΡΡ Π² Π½Π°ΡΠ°Π»ΠΎ Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅ΠΌΠΎΠ³ΠΎ C ΡΠ°ΠΉΠ»Π°, ΠΏΡΠΈ ΡΡΠΎΠΌ ΠΊΠΎΠ΄ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ Π² ΡΠΊΠΎΠ±ΠΊΠ°Ρ %{" ΠΈ «%}». ΠΠ°ΠΌΠ΅Π½Ρ ΠΎΠ±Π»Π΅Π³ΡΠ°ΡΡΡΡ ΠΏΡΠ°Π²ΠΈΠ»Π°ΠΌΠΈ ΡΠΎΠ²ΠΏΠ°Π΄Π΅Π½ΠΈΡ ΡΠ°Π±Π»ΠΎΠ½ΠΎΠ². ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΡΠΈΡΡΡ ΠΈ ΡΠΈΠΌΠ²ΠΎΠ»Ρ:
digit [0-9]
letter [A-Za-z]
%{
int count;
%}
%%
/* match identifier */
{letter} ({letter}|{digit})* count++;
%%
int main (void) {
yylex ();
printf («number of identifiers =%dn«, count);
return 0;
}
ΠΡΠΎΠ±Π΅Π» Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠ°Π·Π΄Π΅Π»ΡΡΡ ΡΠ΅ΡΠΌ ΠΈ Π°ΡΡΠΎΡΠΈΠΈΡΡΠ΅ΠΌΠΎΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅. Π‘ΡΡΠ»ΠΊΠΈ Π½Π° ΠΏΠΎΠ΄ΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ Π² ΡΠ΅ΠΊΡΠΈΡΡ ΠΏΡΠ°Π²ΠΈΠ» ΠΎΠΊΡΡΠΆΠ΅Π½Ρ ΡΠΊΠΎΠ±ΠΊΠ°ΠΌΠΈ ({letter}), ΡΡΠΎΠ±Ρ ΡΠ°Π·Π»ΠΈΡΠ°ΡΡ ΠΈΡ Ρ ΡΠΈΠΌΠ²ΠΎΠ»Π°ΠΌΠΈ. ΠΠΎΠ³Π΄Π° ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΡΠΎΠ²ΠΏΠ°Π΄Π΅Π½ΠΈΠ΅ Π² ΡΠ΅ΠΊΡΠΈΠΈ ΠΏΡΠ°Π²ΠΈΠ», Π°ΡΡΠΎΡΠΈΠΈΡΡΠ΅ΠΌΡΠΉ C ΠΊΠΎΠ΄ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ. ΠΠΎΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΡΠΈΡΠ°Π΅Ρ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ², ΡΠ»ΠΎΠ² ΠΈ Π»ΠΈΠ½ΠΈΠΉ Π² ΡΠ°ΠΉΠ»Π΅ (ΠΏΠΎΠ΄ΠΎΠ±Π½Π°Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ wc Π² Unix):
%{
int nchar, nword, nline;
%}
%%
n {nline++; nchar++;}
[^ tn]+ {nword++, nchar += yyleng;}
{nchar++;}
%%
int main (void) {
yylex ();
printf («%dt % dt % dn», nchar, nword, nline);
return 0;
}
Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ lex Π² Unix
Π ΡΠ΅Π»ΠΎΠΌ ΠΏΠΎΠ΄ΡΠΈΡΡΠ΅ΠΌΠ° LEX Π΄Π»Ρ ΡΠΈΡΡΠ΅ΠΌ UNIX Π²ΠΊΠ»ΡΡΠ°Π΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΠ°ΠΉΠ»Ρ:
/usr/ccs/bin/lex;
lex.yy.c;
/usr/ccs/lib/lex/ncform;
/usr/lib/libl.a;
/usr/lib/libl.so.
Π ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅ /usr/ccs/lib/lex ΠΈΠΌΠ΅Π΅ΡΡΡ ΡΠ°ΠΉΠ»-Π·Π°Π³ΠΎΡΠΎΠ²ΠΊΠ° ncform, ΠΊΠΎΡΠΎΡΡΠΉ LEX ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ ΠΠ. ΠΡΠΎΡ ΡΠ°ΠΉΠ» ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΆΠ΅ Π³ΠΎΡΠΎΠ²ΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΎΠΉ Π»Π΅ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π°. ΠΠΎ Π² Π½Π΅ΠΌ Π½Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Ρ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΠΏΡΠΈ ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π²Π°Π½ΠΈΠΈ Π»Π΅ΠΊΡΠ΅ΠΌ, ΠΎΡΡΡΡΡΡΠ²ΡΡΡ ΠΈ ΡΠ°ΠΌΠΈ Π»Π΅ΠΊΡΠ΅ΠΌΡ, Π½Π΅ ΡΡΠΎΡΠΌΠΈΡΠΎΠ²Π°Π½Ρ ΡΠ°Π±ΠΎΡΠΈΠ΅ ΠΌΠ°ΡΡΠΈΠ²Ρ ΠΈ Ρ. Π΄. Π‘ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ lex ΡΠ°ΠΉΠ» ncform Π΄ΠΎΡΡΡΠ°ΠΈΠ²Π°Π΅ΡΡΡ. Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΠΌΡ ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ ΡΠ°ΠΉΠ» ΡΠΎ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ lex.yy.c. ΠΡΠ»ΠΈ LEX-ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΡΠ°Π·ΠΌΠ΅ΡΠ΅Π½Π° Π² ΡΠ°ΠΉΠ»Π΅ program. l, ΡΠΎ Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΠΠ Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ program Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ Π½Π°Π±ΠΎΡ ΠΊΠΎΠΌΠ°Π½Π΄:
lex program. l
cc lex.yy.c — ll — o program
ΠΡΠ»ΠΈ ΠΈΠΌΡ Π²Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π° Π΄Π»Ρ ΠΊΠΎΠΌΠ°Π½Π΄Ρ lex Π½Π΅ ΡΠΊΠ°Π·Π°Π½ΠΎ, ΡΠΎ Π±ΡΠ΄Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΡΠ°ΠΉΠ» ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠ³ΠΎ Π²Π²ΠΎΠ΄Π°. Π€Π»Π°Π³ — ll ΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ /usr/ccs/lib/libl.a — Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ LEX. ΠΡΠ»ΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΠΊΠ°ΠΊ Π² Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΈΠ· Π½Π΅Π΅ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π³Π»Π°Π²Π½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ main. Π ΠΏΡΠΎΡΠΈΠ²Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, Π΅ΡΠ»ΠΈ ΠΈΠΌΠ΅Π΅ΡΡΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΡ Π²ΠΊΠ»ΡΡΠΈΡΡ ΠΠ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π² Π΄ΡΡΠ³ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π°), ΡΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π²ΡΠ·Π²Π°ΡΡ ΡΠΆΠ΅ ΠΏΡΠΈ ΡΠ±ΠΎΡΠΊΠ΅. Π’ΠΎΠ³Π΄Π°, Π΅ΡΠ»ΠΈ main ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ Π² Π²ΡΠ·ΡΠ²Π°ΡΡΠ΅ΠΉ ΠΠ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅, ΡΠ΅Π΄Π°ΠΊΡΠΎΡ ΡΠ²ΡΠ·Π΅ΠΉ Π½Π΅ Π±ΡΠ΄Π΅Ρ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°ΡΡ ΡΠ°Π·Π΄Π΅Π» main ΠΈΠ· Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ LEX.
ΠΠ±ΡΠΈΠΉ ΡΠΎΡΠΌΠ°Ρ Π²ΡΠ·ΠΎΠ²Π° ΠΊΠΎΠΌΠ°Π½Π΄Ρ lex:
lex [-ctvn — V — Q [y|n]] [file]
Π€Π»Π°Π³ΠΈ:
— c — Π²ΠΊΠ»ΡΡΠ°Π΅Ρ ΡΠ°Π·Ρ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ Π‘ΠΈ-ΡΠ°ΠΉΠ»Π° (ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΡΡΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ);
— t — ΠΏΠΎΠΌΠ΅ΡΡΠΈΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π² ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΉ ΡΠ°ΠΉΠ» Π²ΡΠ²ΠΎΠ΄Π°, Π° Π½Π΅ Π² ΡΠ°ΠΉΠ» lex.yy.c;
— v — Π²ΡΠ²Π΅ΡΡΠΈ ΡΠ°Π·ΠΌΠ΅ΡΡ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΡ ΡΠ°Π±Π»ΠΈΡ;
— n — Π½Π΅ Π²ΡΠ²ΠΎΠ΄ΠΈΡΡ ΡΠ°Π·ΠΌΠ΅ΡΡ ΡΠ°Π±Π»ΠΈΡ (ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΡΡΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ);
— V — Π²ΡΠ²Π΅ΡΡΠΈ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ Π²Π΅ΡΡΠΈΠΈ LEX Π² ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΉ ΡΠ°ΠΉΠ» ΠΎΡΠΈΠ±ΠΎΠΊ;
— Q — Π²ΡΠ²Π΅ΡΡΠΈ (Qy) Π»ΠΈΠ±ΠΎ Π½Π΅ Π²ΡΠ²ΠΎΠ΄ΠΈΡΡ (Qn, ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΡΡΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ) ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ Π²Π΅ΡΡΠΈΠΈ Π² ΡΠ°ΠΉΠ» lex.yy.c.
YACC — Yet Another Compiler Compiler
ΠΡΠ°ΠΌΠΌΠ°ΡΠΈΠΊΠΈ Π΄Π»Ρ yacc ΠΎΠΏΠΈΡΡΠ²Π°ΡΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π€ΠΎΡΠΌΡ ΠΡΠΊΡΡΠ°-ΠΠ°ΡΡΠ° (Backus Naur Form, BNF)
ΠΡΡ ΡΠ΅Ρ Π½ΠΈΠΊΡ Π±ΡΠ»Π° Π²Π²Π΅Π»ΠΈ John Backus ΠΈ Peter Naur ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ Π΅Π΅, ΡΡΠΎΠ±Ρ ΠΎΠΏΠΈΡΠ°ΡΡ ALGOL60. ΠΡΠ°ΠΌΠΌΠ°ΡΠΈΠΊΠ° BNF ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½Π° Π΄Π»Ρ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ½ΠΎ-ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΡΡ ΡΠ·ΡΠΊΠΎΠ². ΠΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΉ ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Ρ Π² BNF.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π³ΡΠ°ΠΌΠΌΠ°ΡΠΈΠΊΠ° Π΄Π»Ρ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΡΠΌΠ½ΠΎΠΆΠ°Π΅Ρ ΠΈ ΡΠΊΠ»Π°Π΄ΡΠ²Π°Π΅Ρ ΡΠΈΡΠ»Π° ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Π° ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
E -> E + E
E -> E * E
E -> id
ΠΡΠ»ΠΈ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠΈΡΠΎΠ²Π°Π½Ρ 3 ΠΏΡΠ°Π²ΠΈΠ»Π° ΠΏΡΠΎΠ΄ΡΠΊΡΠΈΠΈ. Π’Π΅ΡΠΌΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ Ρ Π»Π΅Π²ΠΎΠΉ ΡΡΠΎΡΠΎΠ½Ρ ΠΏΡΠ°Π²ΠΈΠ» ΠΏΡΠΎΠ΄ΡΠΊΡΠΈΠΈ (lhs) ΠΏΡΠΎΠ΄ΡΠΊΡΠΈΠΈ, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ E (expression), ΡΠ²Π»ΡΡΡΡΡ Π½Π΅ΡΠ΅ΡΠΌΠΈΠ½Π°Π»ΡΠ½ΡΠΌΠΈ ΡΠΈΠΌΠ²ΠΎΠ»Π°ΠΌΠΈ. Π’Π΅ΡΠΌΡ, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ id (identifier) ΡΠ²Π»ΡΡΡΡΡ ΡΠ΅ΡΠΌΠΈΠ½Π°Π»ΡΠ½ΡΠΌΠΈ ΡΠΈΠΌΠ²ΠΎΠ»Π°ΠΌΠΈ (ΡΠΎΠΊΠ΅Π½Π°ΠΌΠΈ, Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΡΠΌΠΈ lex) ΠΈ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Ρ ΠΏΡΠ°Π²ΠΎΠΉ ΡΡΠΎΡΠΎΠ½Ρ ΠΏΡΠ°Π²ΠΈΠ» ΠΏΡΠΎΠ΄ΡΠΊΡΠΈΠΈ (rhs).
ΠΡΠ° Π³ΡΠ°ΠΌΠΌΠ°ΡΠΈΠΊΠ° ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ, ΡΡΠΎ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΡΠΌΠΌΠΎΠΉ Π΄Π²ΡΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΉ, ΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ΠΌ Π΄Π²ΡΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΉ ΠΈΠ»ΠΈ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΎΠΌ. ΠΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΡ Π³ΡΠ°ΠΌΠΌΠ°ΡΠΈΠΊΡ, ΡΡΠΎΠ±Ρ ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°ΡΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ:
E -> E * E (r2)
-> E * z (r3)
-> E + E * z (r1)
-> E + y * z (r3)
-> x + y * z (r3)
ΠΠ° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΡΠ°Π³Π΅ ΠΌΡ ΡΠ°ΡΡΠΈΡΡΠ΅ΠΌ ΡΠ΅ΡΠΌ, Π·Π°ΠΌΠ΅Π½ΡΠ΅ΠΌ Π»Π΅Π²ΡΡ ΡΠ°ΡΡΡ ΠΏΡΠΎΠ΄ΡΠΊΡΠΈΠΈ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅ΠΉ ΠΏΡΠ°Π²ΠΎΠΉ ΡΠ°ΡΡΡΡ. Π§ΠΈΡΠ»Π° ΡΠΏΡΠ°Π²Π° ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°ΡΡ ΠΊΠ°ΠΊΠΎΠ΅ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ. Π§ΡΠΎΠ±Ρ ΡΠ°ΡΠΏΠΎΠ·Π½Π°ΡΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠ° ΠΎΠ±ΡΠ°ΡΠ½Π°Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΡΡΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π½Π°ΡΠΈΠ½Π°ΡΡ Ρ Π΅Π΄ΠΈΠ½ΠΈΡΠ½ΠΎΠ³ΠΎ Π½Π΅ΡΠ΅ΡΠΌΠΈΠ½Π°Π»ΡΠ½ΠΎΠ³ΠΎ (Π½Π°ΡΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠΈΠΌΠ²ΠΎΠ»Π°), ΠΈ Π³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°ΡΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠ· Π³ΡΠ°ΠΌΠΌΠ°ΡΠΈΠΊΠΈ. ΠΡΠΎ ΠΈΠ·Π²Π΅ΡΡΠ½ΠΎ ΠΏΠΎΠ΄ ΡΠ΅ΡΠΌΠΈΠ½ΠΎΠΌ Π²ΠΎΡΡ ΠΎΠ΄ΡΡΠΈΠΉ (bottom-up) Π°Π½Π°Π»ΠΈΠ· ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΠ΅ΠΊΠ° Π΄Π»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΡΠ΅ΡΠΌΠΎΠ². ΠΠΎΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠΈΠΌΠ΅Ρ Π² ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠ΅:
1. x + y * z shift
2 x. + y * z reduce (r3)
3 E. + y * z shift
4 E +. y * z shift
5 E + y. * z reduce (r3)
6 E + E. * z shift
7 E + E *. z shift
8 E + E * z. reduce (r3)
9 E + E * E. reduce (r2) emit multiply
10 E + E. reduce (r1) emit add
11 E. accept
Π‘ΡΡΡΠΊΡΡΡΠ° YACC-ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ
ΠΠ°ΠΆΠ΄ΡΠΉ ΡΠ°ΠΉΠ» ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΉ ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· ΡΡΠ΅Ρ ΡΠ΅ΠΊΡΠΈΠΉ: ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ, (Π³ΡΠ°ΠΌΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅) ΠΏΡΠ°Π²ΠΈΠ»Π°, ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ. Π‘Π΅ΠΊΡΠΈΠΈ ΡΠ°Π·Π΄Π΅Π»ΡΡΡΡΡ ΡΠΈΠΌΠ²ΠΎΠ»Π°ΠΌΠΈ Π΄Π²ΠΎΠΉΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΡΠ΅Π½ΡΠ° «%%». ΠΡΡΠ³ΠΈΠΌΠΈ ΡΠ»ΠΎΠ²Π°ΠΌΠΈ, ΠΏΠΎΠ»Π½ΡΠΉ ΡΠ°ΠΉΠ» ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΠΊΠ°ΠΊ:
ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ
%%
ΠΏΡΠ°Π²ΠΈΠ»Π°
%%
ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ
Π‘Π΅ΠΊΡΠΈΡ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠΉ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΡΡΡΠ°. ΠΠΎΠ»Π΅Π΅ ΡΠΎΠ³ΠΎ, Π΅ΡΠ»ΠΈ ΡΠ΅ΠΊΡΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ ΠΎΠΏΡΡΠ΅Π½Π°, ΡΠΎ Π²ΡΠΎΡΠ°Ρ ΠΌΠ΅ΡΠΊΠ° «%%» ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΎΠΏΡΡΠ΅Π½Π°; ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½Π°Ρ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½Π½Π°Ρ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ Yacc Π΅ΡΡΡ:
%%
ΠΏΡΠ°Π²ΠΈΠ»Π°
ΠΡΠΈΠΌΠ΅Ρ ΠΏΡΠΎΡΡΠ΅ΠΉΡΠ΅ΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π½Π° YACC’e:
%token name
%start e
%%
e: e '+' m | e '-' m | m;
m: m '*' t | m '/' t | t;
t: name | ' (' e ')';
%%
Π‘Π΅ΠΊΡΠΈΡ ΠΏΡΠ°Π²ΠΈΠ» ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΡΠΎΠΌ, ΡΡΠΎ ΡΠΈΠΌΠ²ΠΎΠ» name ΡΠ²Π»ΡΠ΅ΡΡΡ Π»Π΅ΠΊΡΠ΅ΠΌΠΎΠΉ (ΡΠ΅ΡΠΌΠΈΠ½Π°Π»ΠΎΠΌ) Π³ΡΠ°ΠΌΠΌΠ°ΡΠΈΠΊΠΈ, Π° ΡΠΈΠΌΠ²ΠΎΠ» e — Π΅Π΅ Π½Π°ΡΠ°Π»ΡΠ½ΡΠΌ Π½Π΅ΡΠ΅ΡΠΌΠΈΠ½Π°Π»ΠΎΠΌ.
ΠΡΠ°ΠΌΠΌΠ°ΡΠΈΠΊΠ° Π·Π°ΠΏΠΈΡΠ°Π½Π° ΠΎΠ±ΡΡΠ½ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ — ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΡ ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ°ΡΡ ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Ρ ΠΈ Π½Π΅ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Ρ, ΡΠΈΠΌΠ²ΠΎΠ»ΡΠ½ΡΠ΅ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ ΡΠΈΠΏΠ° '+' '-' - ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Ρ. Π‘ΠΈΠΌΠ²ΠΎΠ»Ρ: |; - ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ ΠΌΠ΅ΡΠ°ΡΠ·ΡΠΊΡ ΠΈ ΡΠΈΡΠ°ΡΡΡΡ «Π΅ΡΡΡ ΠΏΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ», «ΠΈΠ»ΠΈ» ΠΈ «ΠΊΠΎΠ½Π΅Ρ ΠΏΡΠ°Π²ΠΈΠ»Π°» ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ.
Π‘Π΅ΠΌΠ°Π½ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ
ΠΠ°ΠΆΠ΄ΠΎΠΌΡ ΠΏΡΠ°Π²ΠΈΠ»Ρ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΡΠ°Π²ΠΈΡΡ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠ΅ Π½Π΅ΠΊΠΎΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π±ΡΠ΄Π΅Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ Π²ΡΡΠΊΠΈΠΉ ΡΠ°Π·, ΠΊΠ°ΠΊ ΡΡΠΎ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ Π±ΡΠ΄Π΅Ρ ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π½ΠΎ. ΠΠ΅ΠΉΡΡΠ²ΠΈΡ ΠΌΠΎΠ³ΡΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΈ ΠΌΠΎΠ³ΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ, Π²ΠΎΠ·Π²ΡΠ°ΡΠ΅Π½Π½ΡΠΌΠΈ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΠΌΠΈ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠΌΠΈ. ΠΠΎΠ»Π΅Π΅ ΡΠΎΠ³ΠΎ, Π»Π΅ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡ ΠΌΠΎΠΆΠ΅Ρ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π΄Π»Ρ ΡΠΎΠΊΠ΅Π½ΠΎΠ² (Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎ), Π΅ΡΠ»ΠΈ Ρ ΠΎΡΠ΅ΡΡΡ. ΠΠ΅ΠΉΡΡΠ²ΠΈΠ΅ — ΡΡΠΎ ΠΎΠ±ΡΡΠ½ΡΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ ΡΠ·ΡΠΊΠ° Π‘ΠΈ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ Π²Π²ΠΎΠ΄, Π²ΡΠ²ΠΎΠ΄, Π²ΡΠ·ΡΠ²Π°ΡΡ ΠΏΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅.
ΠΠ΅ΠΉΡΡΠ²ΠΈΡ, ΡΠΎΡΡΠΎΡΡΠΈΠ΅ ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ², Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π·Π°ΠΊΠ»ΡΡΠ°ΡΡ Π² ΡΠΈΠ³ΡΡΠ½ΡΠ΅ ΡΠΊΠΎΠ±ΠΊΠΈ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
A: ' (' B ')'
{hello (1, «abc»);}
ΠΈ
XXX: YYY ZZZ
{printf («a messagen»); flag = 25;}
ΡΠ²Π»ΡΡΡΡΡ Π³ΡΠ°ΠΌΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΌΠΈ ΠΏΡΠ°Π²ΠΈΠ»Π°ΠΌΠΈ Ρ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠΌΠΈ.
Π§ΡΠΎΠ±Ρ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΡΡ ΡΠ²ΡΠ·Ρ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ Ρ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΠΎΠΌ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΠΏΠ΅ΡΡΠΈΠΌΠ²ΠΎΠ» «Π΄ΠΎΠ»Π»Π°Ρ» ($). Π§ΡΠΎΠ±Ρ Π²Π΅ΡΠ½ΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ ΠΎΠ±ΡΡΠ½ΠΎ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π΅Ρ Π΅Π³ΠΎ ΠΏΡΠ΅Π²Π΄ΠΎΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ $$. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π½Π΅ Π΄Π΅Π»Π°Π΅Ρ Π½ΠΈΡΠ΅Π³ΠΎ, Π½ΠΎ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π΅Π΄ΠΈΠ½ΠΈΡΡ:
{$$ = 1;}
Π§ΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ, Π²ΠΎΠ·Π²ΡΠ°ΡΠ΅Π½Π½ΡΠ΅ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΠΌΠΈ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠΌΠΈ ΠΈ Π»Π΅ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΌ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΠΎΠΌ, Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΡΠ΅Π²Π΄ΠΎΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ $ 1, $ 2 ΠΈ Ρ. Π΄., ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌ, Π²ΠΎΠ·Π²ΡΠ°ΡΠ΅Π½Π½ΡΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°ΠΌΠΈ ΠΏΡΠ°Π²ΠΎΠΉ ΡΠ°ΡΡΠΈ ΠΏΡΠ°Π²ΠΈΠ»Π°, ΡΡΠΈΡΠ°Ρ ΡΠ»Π΅Π²Π° Π½Π°ΠΏΡΠ°Π²ΠΎ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Π΅ΡΠ»ΠΈ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ ΠΈΠΌΠ΅Π΅Ρ Π²ΠΈΠ΄:
A: B C D;
ΡΠΎ $ 2 ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΡ, Π²ΠΎΠ·Π²ΡΠ°ΡΠ΅Π½Π½ΠΎΠΌΡ Π½Π΅ΡΠ΅ΡΠΌΠΈΠ½Π°Π»ΠΎΠΌ C, a $ 3 — Π½Π΅ΡΠ΅ΡΠΌΠΈΠ½Π°Π»ΠΎΠΌ D. ΠΠΎΠ»Π΅Π΅ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠΉ ΠΏΡΠΈΠΌΠ΅Ρ:
expr: ' (' expr ')';
ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ, Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΡΠΌ ΡΡΠΈΠΌ ΠΏΡΠ°Π²ΠΈΠ»ΠΎΠΌ, ΠΎΠ±ΡΡΠ½ΠΎ ΡΠ²Π»ΡΠ΅ΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ Π² ΡΠΊΠΎΠ±ΠΊΠ°Ρ , ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π·Π°ΠΏΠΈΡΠ°Π½ΠΎ ΡΠ°ΠΊ:
expr: ' (' expr ')'
{$$ = $ 2;}
ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ, Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ ΠΏΡΠ°Π²ΠΈΠ»Π° ΡΡΠΈΡΠ°Π΅ΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, Π²ΠΎΠ·Π²ΡΠ°ΡΠ΅Π½Π½ΠΎΠ΅ ΠΏΠ΅ΡΠ²ΡΠΌ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠΌ ($ 1). Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Π΅ΡΠ»ΠΈ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ, Yacc Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π΄ΠΎΠ±Π°Π»ΡΠ΅Ρ Π΅Π³ΠΎ Π² Π²ΠΈΠ΄Π΅ $$=$ 1;, Π±Π»Π°Π³ΠΎΠ΄Π°ΡΡ ΡΠ΅ΠΌΡ Π΄Π»Ρ ΠΏΡΠ°Π²ΠΈΠ»Π° Π²ΠΈΠ΄Π°
A: B;
ΠΎΠ±ΡΡΠ½ΠΎ Π½Π΅ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΡΠ°ΠΌΠΎΠΌΡ ΠΏΠΈΡΠ°ΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅.
Π Π²ΡΡΠ΅ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΡΡ ΠΏΡΠΈΠΌΠ΅ΡΠ°Ρ Π²ΡΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ ΡΡΠΎΡΠ»ΠΈ Π² ΠΊΠΎΠ½ΡΠ΅ ΠΏΡΠ°Π²ΠΈΠ», Π½ΠΎ ΠΈΠ½ΠΎΠ³Π΄Π° ΠΆΠ΅Π»Π°ΡΠ΅Π»ΡΠ½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΡΡΠΎ-Π»ΠΈΠ±ΠΎ Π΄ΠΎ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ Π±ΡΠ΄Π΅Ρ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΡΠ°Π·ΠΎΠ±ΡΠ°Π½ΠΎ. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Yacc ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π·Π°ΠΏΠΈΡΡΠ²Π°ΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ Π² ΠΊΠΎΠ½ΡΠ΅ ΠΏΡΠ°Π²ΠΈΠ»Π°, Π½ΠΎ ΠΈ Π² Π΅Π³ΠΎ ΡΠ΅ΡΠ΅Π΄ΠΈΠ½Π΅. ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠ°ΠΊΠΎΠ³ΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ Π΄ΠΎΡΡΡΠΏΠ½ΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠΌ, ΡΡΠΎΡΡΠΈΠΌ ΠΏΡΠ°Π²Π΅Π΅, ΡΠ΅ΡΠ΅Π· ΠΎΠ±ΡΡΠ½ΡΠΉ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ:
A: B
{$$ = 1;}
C
{x = $ 2; y = $ 3;}
;
Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΡΠ°Π·Π±ΠΎΡΠ° ΠΈΠΊΡΡ (x) ΠΏΡΠΈΡΠ²ΠΎΠΈΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ 1, Π° ΠΈΠ³ΡΠ΅ΠΊΡ (y) — Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, Π²ΠΎΠ·Π²ΡΠ°ΡΠ΅Π½Π½ΠΎΠ΅ Π½Π΅ΡΠ΅ΡΠΌΠΈΠ½Π°Π»ΠΎΠΌ C. ΠΠ΅ΠΉΡΡΠ²ΠΈΠ΅, ΡΡΠΎΡΡΠ΅Π΅ Π² ΡΠ΅ΡΠ΅Π΄ΠΈΠ½Π΅ ΠΏΡΠ°Π²ΠΈΠ»Π°, ΡΡΠΈΡΠ°Π΅ΡΡΡ Π·Π° Π΅Π³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ, ΠΏΠΎΡΡΠΎΠΌΡ x=$ 2 ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π΅Ρ X-Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, Π²ΠΎΠ·Π²ΡΠ°ΡΠ΅Π½Π½ΠΎΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ΠΌ $$=1;
ΠΠ»Ρ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ, Π½Π°Ρ ΠΎΠ΄ΡΡΠΈΡ ΡΡ Π² ΡΠ΅ΡΠ΅Π΄ΠΈΠ½Π΅ ΠΏΡΠ°Π²ΠΈΠ», Yacc ΡΠΎΠ·Π΄Π°Π΅Ρ Π½ΠΎΠ²ΡΠΉ Π½Π΅ΡΠ΅ΡΠΌΠΈΠ½Π°Π» ΠΈ Π½ΠΎΠ²ΠΎΠ΅ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ Ρ ΠΏΡΡΡΠΎΠΉ ΠΏΡΠ°Π²ΠΎΠΉ ΡΠ°ΡΡΡΡ ΠΈ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΠΏΠΎΡΠ»Π΅ ΡΠ°Π·Π±ΠΎΡΠ° ΡΡΠΎΠ³ΠΎ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡΠ°Π²ΠΈΠ»Π°. ΠΠ° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ Yacc ΡΡΠ°ΠΊΡΡΠ΅Ρ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ ΠΏΡΠΈΠΌΠ΅Ρ ΠΊΠ°ΠΊ
NEW_ACT: /* empty */ /* ΠΠΠΠΠ ΠΠ ΠΠΠΠΠ */
{$$ = 1;}
;
A: B NEW_ACT C
{x = $ 2; y = $ 3;}
;
Π Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ Π½Π΅ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ Π²Π²ΠΎΠ΄Π° / Π²ΡΠ²ΠΎΠ΄Π°, Π° ΠΊΠΎΠ½ΡΡΡΡΠΈΡΡΡΡ ΠΈ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ Π² ΠΏΠ°ΠΌΡΡΠΈ ΡΡΡΡΠΊΡΡΡΡ Π΄Π°Π½Π½ΡΡ , Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Π΄Π΅ΡΠ΅Π²ΠΎ ΡΠ°Π·Π±ΠΎΡΠ°. Π’Π°ΠΊΠΈΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ ΠΏΡΠΎΡΠ΅ Π²ΡΠ΅Π³ΠΎ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ Π²ΡΠ·ΡΠ²Π°Ρ ΠΏΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΈ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΡΡΡΡΠΊΡΡΡ Π΄Π°Π½Π½ΡΡ . ΠΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, ΡΡΠΎ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΡΡΠ½ΠΊΡΠΈΡ node, Π½Π°ΠΏΠΈΡΠ°Π½Π½Π°Ρ ΡΠ°ΠΊ, ΡΡΠΎ Π²ΡΠ·ΠΎΠ² node (L, n1, n2) ΡΠΎΠ·Π΄Π°Π΅Ρ Π²Π΅ΡΡΠΈΠ½Ρ Ρ ΠΌΠ΅ΡΠΊΠΎΠΉ L, Π²Π΅ΡΠ²ΡΠΌΠΈ n1 ΠΈ n2 ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΈΠ½Π΄Π΅ΠΊΡ ΡΠ²Π΅ΠΆΠ΅ΡΠΎΠ·Π΄Π°Π½Π½ΠΎΠΉ Π²Π΅ΡΡΠΈΠ½Ρ. Π’ΠΎΠ³Π΄Π° Π΄Π΅ΡΠ΅Π²ΠΎ ΡΠ°Π·Π±ΠΎΡΠ° ΠΌΠΎΠΆΠ΅Ρ ΡΡΡΠΎΠΈΡΡΡΡ ΡΠ°ΠΊ:
expr: expr '+' expr
{$$ = node ('+', $ 1, $ 3);}
ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡ ΠΌΠΎΠΆΠ΅Ρ ΡΠ°ΠΊΠΆΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅, Π΄ΠΎΡΡΡΠΏΠ½ΡΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠΌ. ΠΡ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ ΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠ΄Π΅Π»Π°Π½ΠΎ Π² ΡΠ΅ΠΊΡΠΈΠΈ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠΉ, Π·Π°ΠΊΠ»ΡΡΠ΅Π½Π½ΠΎΠ΅ Π² ΡΠΈΠΌΠ²ΠΎΠ»Ρ%{ΠΈ%}. Π’Π°ΠΊΠΈΠ΅ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ ΠΈΠΌΠ΅ΡΡ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΡΡ ΠΎΠ±Π»Π°ΡΡΡ Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡΠΈ, Π±Π»Π°Π³ΠΎΠ΄Π°ΡΡ ΡΠ΅ΠΌΡ Π΄ΠΎΡΡΡΠΏΠ½Ρ ΠΊΠ°ΠΊ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠΌ, ΡΠ°ΠΊ ΠΈ Π»Π΅ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠΌΡ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ:
%{
int variable = 0;
%}
Π’Π°ΠΊΠΈΠ΅ ΡΡΡΠΎΡΠΊΠΈ, ΠΏΠΎΠΌΠ΅ΡΠ΅Π½Π½ΡΠ΅ Π² ΡΠ°Π·Π΄Π΅Π» ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠΉ, ΠΎΠ±ΡΡΠ²Π»ΡΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ variable ΡΠΈΠΏΠ° int ΠΈ Π΄Π΅Π»Π°ΡΡ Π΅Π΅ Π΄ΠΎΡΡΡΠΏΠ½ΠΎΠΉ Π΄Π»Ρ Π²ΡΠ΅Ρ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ. ΠΡΠ΅ ΠΈΠΌΠ΅Π½Π° Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Yacca Π½Π°ΡΠΈΠ½Π°ΡΡΡΡ c Π΄Π²ΡΡ Π±ΡΠΊΠ² y, ΠΏΠΎΡΡΠΎΠΌΡ Π½Π΅ ΡΠ»Π΅Π΄ΡΠ΅Ρ Π΄Π°Π²Π°ΡΡ ΡΠ²ΠΎΠΈΠΌ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌ ΠΈΠΌΠ΅Π½Π° ΡΠΈΠΏΠ° yymy.
ΠΠ΅ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π°Π½Π°Π»ΠΈΠ·
ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠΈΠΉ Yacc Π΄ΠΎΠ»ΠΆΠ΅Π½ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΡΠ°ΠΌ (ΠΈΠ»ΠΈ ΡΠΎΠ·Π΄Π°ΡΡ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΡΠΈΠΏΠ° Lex) Π²Π½Π΅ΡΠ½ΠΈΠΉ Π»Π΅ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ΄Π΅Ρ ΡΠΈΡΠ°ΡΡ ΡΠΈΠΌΠ²ΠΎΠ»Ρ ΠΈΠ· Π²Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΠΎΡΠΎΠΊΠ° (ΠΊΠ°ΠΊΠΎΠ³ΠΎ — ΡΡΠΎ Π²Π½ΡΡΡΠ΅Π½Π½Π΅Π΅ Π΄Π΅Π»ΠΎ Π»Π΅ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΠ°), ΠΎΠ±Π½Π°ΡΡΠΆΠΈΠ²Π°ΡΡ ΡΠ΅ΡΠΌΠΈΠ½Π°Π»ΡΠ½ΡΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»Ρ (ΡΠΎΠΊΠ΅Π½Ρ) ΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°ΡΡ ΠΈΡ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠΌΡ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΡ, ΠΏΠΎΡΡΡΠΎΠ΅Π½Π½ΠΎΠΌΡ YaccΠΎΠΌ (Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΌΠ΅ΡΡΠ΅ Ρ Π½Π΅ΠΊΠΈΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ) Π΄Π»Ρ Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠ΅Π³ΠΎ ΡΠ°Π·Π±ΠΎΡΠ°. ΠΠ΅ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΠΎΡΠΎΡΠΌΠ»Π΅Π½ ΠΊΠ°ΠΊ ΡΡΠ½ΠΊΡΠΈΡ Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ yylex, Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡΠ°Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠΈΠΏΠ° int, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ ΡΠΈΠΏ (Π½ΠΎΠΌΠ΅Ρ) ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ Π²ΠΎ Π²Ρ ΠΎΠ΄Π½ΠΎΠΌ ΠΏΠΎΡΠΎΠΊΠ΅ ΡΠΎΠΊΠ΅Π½Π°. ΠΡΠ»ΠΈ Π΅ΡΡΡ ΠΆΠ΅Π»Π°Π½ΠΈΠ΅ Π²Π΅ΡΠ½ΡΡΡ Π΅ΡΠ΅ Π½Π΅ΠΊΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Π½ΠΎΠΌΠ΅Ρ Π² Π³ΡΡΠΏΠΏΠ΅), ΠΎΠ½ΠΎ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΡΠΈΡΠ²ΠΎΠ΅Π½ΠΎ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΠΎΠΉ, Π²Π½Π΅ΡΠ½Π΅ΠΉ (ΠΏΠΎ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΡ ΠΊ yylex) ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΈ yylval.
ΠΠ΅ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡ ΠΈ Yacc Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΠ΅ Π½ΠΎΠΌΠ΅ΡΠ° ΡΠΎΠΊΠ΅Π½ΠΎΠ², ΡΡΠΎΠ±Ρ ΠΏΠΎΠ½ΠΈΠΌΠ°ΡΡ Π΄ΡΡΠ³ Π΄ΡΡΠ³Π°. ΠΡΠΈ Π½ΠΎΠΌΠ΅ΡΠ° ΠΎΠ±ΡΡΠ½ΠΎ Π²ΡΠ±ΠΈΡΠ°ΡΡΡΡ YaccΠΎΠΌ, Π½ΠΎ ΠΌΠΎΠ³ΡΡ Π²ΡΠ±ΠΈΡΠ°ΡΡΡΡ ΠΈ ΡΠ΅Π»ΠΎΠ²Π΅ΠΊΠΎΠΌ. Π Π»ΡΠ±ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ define ΡΠ·ΡΠΊΠ° Π‘ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π»Π΅ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠΌΡ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ ΡΡΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π² ΡΠΈΠΌΠ²ΠΎΠ»ΠΈΡΠ΅ΡΠΊΠΎΠΌ Π²ΠΈΠ΄Π΅. ΠΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠ΅ΠΌ, ΡΡΠΎ ΡΠΎΠΊΠ΅Π½ ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΈ DIGIT Π±ΡΠ» ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ Π² ΡΠ΅ΠΊΡΠΈΠΈ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠΉ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ YaccΠ°, ΡΠΎΠ³Π΄Π° ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΉ ΡΠ΅ΠΊΡΡ Π»Π΅ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΠ° ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ ΡΠ°ΠΊ:
yylex ()
{
extern int yylval;
int c;
…
c = getchar ();
…
switch © {
…
case '0':
case '1':
…
case '9':
yylval = c — '0';
return DIGIT;
…
}
…
ΠΡΡΠ΅ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΡΠΉ ΡΡΠ°Π³ΠΌΠ΅Π½Ρ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π½ΠΎΠΌΠ΅Ρ ΡΠΎΠΊΠ΅Π½Π° DIGIT ΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, ΡΠ°Π²Π½ΠΎΠ΅ ΡΠΈΡΡΠ΅. ΠΡΠ»ΠΈ ΠΏΡΠΈ ΡΡΠΎΠΌ ΡΠ°ΠΌ ΡΠ΅ΠΊΡΡ Π»Π΅ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΠ° Π±ΡΠ» ΠΏΠΎΠΌΠ΅ΡΠ΅Π½ Π² ΡΠ΅ΠΊΡΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ Yacca — Π΅ΡΡΡ Π³Π°ΡΠ°Π½ΡΠΈΡ, ΡΡΠΎ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ DIGIT Π±ΡΠ» ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ Π½ΠΎΠΌΠ΅ΡΠΎΠΌ ΡΠΎΠΊΠ΅Π½Π° DIGIT, ΠΏΡΠΈΡΠ΅ΠΌ ΡΠ΅ΠΌ ΡΠ°ΠΌΡΠΌ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΠΆΠΈΠ΄Π°Π΅Ρ Yacc.
Π’Π°ΠΊΠΎΠΉ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΠΏΠΎΠ½ΡΡΠ½ΡΠ΅, Π»Π΅Π³ΠΊΠΈΠ΅ Π² ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ Π»Π΅ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΡ. ΠΠ΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΌ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅ΠΌ ΡΠ²Π»ΡΠ΅ΡΡΡ Π·Π°ΠΏΡΠ΅Ρ Π½Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΈΠΌΠ΅Π½ΠΈ ΡΠΎΠΊΠ΅Π½Π° ΡΠ»ΠΎΠ², Π·Π°ΡΠ΅Π·Π΅ΡΠ²ΠΈΡΠΎΠ²Π°Π½ΡΡ ΠΈΠ»ΠΈ ΡΠ°ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ Π² ΡΠ·ΡΠΊΠ΅ Π‘ΠΈ ΡΠ»ΠΎΠ². ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΈΠΌΠ΅Π½ ΡΠΎΠΊΠ΅Π½ΠΎΠ² ΡΠ°ΠΊΠΈΡ ΡΠ»ΠΎΠ² ΠΊΠ°ΠΊ if ΠΈΠ»ΠΈ while, ΠΏΠΎΡΡΠΈ Π½Π°Π²Π΅ΡΠ½ΡΠΊΠ° ΠΏΡΠΈΠ²Π΅Π΄Π΅Ρ ΠΊ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ ΠΏΡΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ Π»Π΅ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΠ°. ΠΡΠΎΠΌΠ΅ ΡΡΠΎΠ³ΠΎ, ΠΈΠΌΡ error Π·Π°ΡΠ΅Π·Π΅ΡΠ²ΠΈΡΠΎΠ²Π°Π½ΠΎ Π΄Π»Ρ ΡΠΎΠΊΠ΅Π½Π°, ΡΠ»ΡΠΆΠ°ΡΠ΅Π³ΠΎ Π΄Π΅Π»Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΎΡΠΈΠ±ΠΎΠΊ, ΠΈ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ.
ΠΠ°ΠΊ ΡΠΆΠ΅ Π±ΡΠ»ΠΎ ΡΠΊΠ°Π·Π°Π½ΠΎ, Π½ΠΎΠΌΠ΅ΡΠ° ΡΠΎΠΊΠ΅Π½ΠΎΠ² Π²ΡΠ±ΠΈΡΠ°ΡΡΡΡ Π»ΠΈΠ±ΠΎ YaccΠΎΠΌ, Π»ΠΈΠ±ΠΎ ΡΠ΅Π»ΠΎΠ²Π΅ΠΊΠΎΠΌ, Π½ΠΎ ΡΠ°ΡΠ΅ YaccΠΎΠΌ, ΠΏΡΠΈ ΡΡΠΎΠΌ Π΄Π»Ρ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Π΄Π»Ρ (ΠΈΠ»ΠΈ;) Π²ΡΠ±ΠΈΡΠ°Π΅ΡΡΡ Π½ΠΎΠΌΠ΅Ρ, ΡΠ°Π²Π½ΡΠΉ ASCII ΠΊΠΎΠ΄Ρ ΡΡΠΎΠ³ΠΎ ΡΠΈΠΌΠ²ΠΎΠ»Π°. ΠΠ»Ρ Π΄ΡΡΠ³ΠΈΡ ΡΠΎΠΊΠ΅Π½ΠΎΠ² Π½ΠΎΠΌΠ΅ΡΠ° Π²ΡΠ±ΠΈΡΠ°ΡΡΡΡ Π½Π°ΡΠΈΠ½Π°Ρ Ρ 257.
ΠΠ»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΠΏΡΠΈΡΠ²ΠΎΠΈΡΡ ΡΠΎΠΊΠ΅Π½Ρ (ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ Π»ΠΈΡΠ΅ΡΠ΅) Π½ΠΎΠΌΠ΅Ρ Π²ΡΡΡΠ½ΡΡ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π² ΡΠ΅ΠΊΡΠΈΠΈ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠΉ ΠΏΠΎΡΠ»Π΅ ΠΈΠΌΠ΅Π½ΠΈ ΡΠΎΠΊΠ΅Π½Π° Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΠΏΠΎΠ»ΠΎΠΆΠΈΡΠ΅Π»ΡΠ½ΠΎΠ΅ ΡΠ΅Π»ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΈ ΡΡΠ°Π½Π΅Ρ Π½ΠΎΠΌΠ΅ΡΠΎΠΌ ΡΠΎΠΊΠ΅Π½Π° ΠΈΠ»ΠΈ Π»ΠΈΡΠ΅ΡΡ, ΠΏΡΠΈ ΡΡΠΎΠΌ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠ·Π°Π±ΠΎΡΠΈΡΡΡΡ ΠΎΠ± ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΠΎΡΡΠΈ Π½ΠΎΠΌΠ΅ΡΠΎΠ². ΠΡΠ»ΠΈ ΡΠΎΠΊΠ΅Π½Ρ Π½Π΅ ΠΏΡΠΈΡΠ²ΠΎΠ΅Π½ Π½ΠΎΠΌΠ΅Ρ ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Yacc ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π΅Ρ Π΅ΠΌΡ Π½ΠΎΠΌΠ΅Ρ ΠΏΠΎ ΡΠ²ΠΎΠ΅ΠΌΡ Π²ΡΠ±ΠΎΡΡ.
ΠΠΎ ΡΡΠ°Π΄ΠΈΡΠΈ, ΠΊΠΎΠ½ΡΠ΅Π²ΠΎΠΉ ΠΌΠ°ΡΠΊΠ΅Ρ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΠΌΠ΅ΡΡ Π½ΠΎΠΌΠ΅Ρ ΡΠΎΠΊΠ΅Π½Π°, ΡΠ°Π²Π½ΡΠΉ, Π»ΠΈΠ±ΠΎ ΠΌΠ΅Π½ΡΡΠΈΠΉ Π½ΡΠ»Ρ, ΠΈ Π»Π΅ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ Π½ΠΎΠ»Ρ ΠΈΠ»ΠΈ ΠΎΡΡΠΈΡΠ°ΡΠ΅Π»ΡΠ½ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ ΠΏΡΠΈ Π΄ΠΎΡΡΠΈΠΆΠ΅Π½ΠΈΠΈ ΠΊΠΎΠ½ΡΠ° Π²Π²ΠΎΠ΄Π° (ΠΈΠ»ΠΈ ΡΠ°ΠΉΠ»Π°).
ΠΡΠ΅Π½Ρ Π½Π΅ΠΏΠ»ΠΎΡ ΠΈΠΌ ΡΡΠ΅Π΄ΡΡΠ²ΠΎΠΌ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π»Π΅ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΡ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΠΎΠ² ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Lex. ΠΠ΅ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΡ, ΠΏΠΎΡΡΡΠΎΠ΅Π½Π½ΡΠ΅ Ρ Π΅Π΅ ΠΏΠΎΠΌΠΎΡΡΡ ΠΏΡΠ΅ΠΊΡΠ°ΡΠ½ΠΎ Π³Π°ΡΠΌΠΎΠ½ΠΈΡΡΡΡ Ρ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΌΠΈ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΠ°ΠΌΠΈ, ΠΏΠΎΡΡΡΠΎΠ΅Π½Π½ΡΠΌΠΈ YaccΠΎΠΌ. Lex ΠΌΠΎΠΆΠ½ΠΎ Π»Π΅Π³ΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ Π»Π΅ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΠ° ΠΈΠ· ΡΠ°ΠΉΠ»Π° ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΉ, ΠΎΡΠ½ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ΅ ΡΠ΅Π³ΡΠ»ΡΡΠ½ΡΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΉ (Π² ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ ΡΠΈΡΡΠ΅ΠΌΡ Π³ΡΠ°ΠΌΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΠΏΡΠ°Π²ΠΈΠ» Π΄Π»Ρ Yacca), Π½ΠΎ, ΠΏΡΠ°Π²Π΄Π°, ΡΡΡΠ΅ΡΡΠ²ΡΡΡ ΡΠ·ΡΠΊΠΈ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Π€ΠΎΡΡΡΠ°Π½) Π½Π΅ ΠΏΠΎΠΏΠ°Π΄Π°ΡΡΠΈΠ΅ Π½ΠΈ ΠΏΠΎΠ΄ ΠΊΠ°ΠΊΡΡ ΡΠ΅ΠΎΡΠ΅ΡΠΈΡΠ΅ΡΠΊΡ ΡΡ Π΅ΠΌΡ, Π½ΠΎ Π΄Π»Ρ Π½ΠΈΡ ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΡΡΡ ΠΏΠΈΡΠ°ΡΡ Π»Π΅ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡ Π²ΡΡΡΠ½ΡΡ.
Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Yacc Π² Unix
YACC (1)
ΠΠΠΠΠΠΠΠ
yacc — Π΅ΡΠ΅ ΠΎΠ΄ΠΈΠ½ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠΎΠ²
Π‘ΠΠΠ’ΠΠΠ‘ΠΠ‘
yacc [-v] [-d] [-l] [-t] Π³ΡΠ°ΠΌΠΌΠ°ΡΠΈΠΊΠ°
ΠΠΠΠ‘ΠΠΠΠ
ΠΠΎΠΌΠ°Π½Π΄Π° yacc ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ΅Ρ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ½ΠΎ-ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΡΡ Π³ΡΠ°ΠΌΠΌΠ°ΡΠΈΠΊΡ Π² Π½Π°Π±ΠΎΡ ΡΠ°Π±Π»ΠΈΡ Π΄Π»Ρ ΠΏΡΠΎΡΡΠΎΠ³ΠΎ LR (1) — ΡΠ°Π·Π±ΠΎΡΠ°. ΠΡΠ°ΠΌΠΌΠ°ΡΠΈΠΊΠ° ΠΌΠΎΠΆΠ΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ Π½Π΅ΠΎΠ΄Π½ΠΎΠ·Π½Π°ΡΠ½ΠΎΡΡΠΈ; ΡΡΠΎΠ±Ρ ΠΈΡ ΠΏΡΠ΅ΠΎΠ΄ΠΎΠ»Π΅ΡΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π·Π°Π΄Π°Π½Π½ΡΠ΅ ΠΏΡΠ°Π²ΠΈΠ»Π° ΠΏΡΠ΅Π΄ΡΠ΅ΡΡΠ²ΠΎΠ²Π°Π½ΠΈΡ.
ΠΡΡ ΠΎΠ΄Π½ΠΎΠΉ ΡΠ°ΠΉΠ» y.tab.c ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ΅ΡΡΡ C-ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠΎΠΌ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ yyparse, ΠΊΠΎΡΠΎΡΡΡ Π½ΡΠΆΠ½ΠΎ ΡΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²Π°ΡΡ Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΎΠΉ Π»Π΅ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π° yylex, Π° ΡΠ°ΠΊΠΆΠ΅ Ρ ΠΏΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΎΠΉ main ΠΈ ΠΏΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΎΠΉ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΎΡΠΈΠ±ΠΎΠΊ yyerror. ΠΡΠΈ ΠΏΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»Π΅Π½Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ; ΠΏΡΠΈ ΠΏΠΎΡΠΎΠΆΠ΄Π΅Π½ΠΈΠΈ Π»Π΅ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΡ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΠΎΠ² ΠΏΠΎΠ»Π΅Π·Π΅Π½ lex (1).
ΠΠΎΠΏΡΡΡΠΈΠΌΡΠ΅ ΠΎΠΏΡΠΈΠΈ:
-v | Π‘Π³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠ°ΠΉΠ» y. output, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΡΠ°Π±Π»ΠΈΡ ΡΠ°Π·Π±ΠΎΡΠ° Ρ ΡΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΠ½ΡΡ ΡΠΈΡΡΠ°ΡΠΈΠΉ, Π²ΡΠ·Π²Π°Π½Π½ΡΡ Π½Π΅ΠΎΠ΄Π½ΠΎΠ·Π½Π°ΡΠ½ΠΎΡΡΡΠΌΠΈ Π³ΡΠ°ΠΌΠΌΠ°ΡΠΈΠΊΠΈ. |