Π Π°Π·ΡΠ°Π±ΠΎΡΠΊΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ-ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ°
Π Π°ΡΠΏΠΎΠ·Π½Π°Π²Π°ΡΠ΅Π»Π΅ΠΌ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΎΠ² ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ Ident, 16-ΡΠΈΡΠ½ΡΡ ΠΊΠΎΠ½ΡΡΠ°Π½Ρ — ΡΡΠ½ΠΊΡΠΈΡ FConst, ΡΠΈΠΌΡΠΊΠΈΡ ΠΊΠΎΠ½ΡΡΠ°Π½Ρ — ΡΡΠ½ΠΊΡΠΈΡ Rome. ΠΡΠ΅ ΠΎΠ½ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ 1, Π΅ΡΠ»ΠΈ Π»Π΅ΠΊΡΠ΅ΠΌΠ° ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π½Π° ΠΈ — 1 Π² ΠΏΡΠΎΡΠΈΠ²Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅. Π Π°ΡΠΏΠΎΠ·Π½Π°Π²Π°ΡΠ΅Π»Π΅ΠΌ ΡΠ΅ΡΠΌΠΈΠ½Π°Π»ΡΠ½ΡΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ Termin. ΠΠ½Π° Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ 3, Π΅ΡΠ»ΠΈ Π»Π΅ΠΊΡΠ΅ΠΌΠ° — ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ, 1 — Π΅ΡΠ»ΠΈ ΡΠ°Π·Π΄Π΅Π»ΠΈΡΠ΅Π»Ρ, 2 — Π΅ΡΠ»ΠΈ Π·Π½Π°ΠΊ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ. ΠΡΠ»ΠΈ Π»Π΅ΠΊΡΠ΅ΠΌΠ° Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ… Π§ΠΈΡΠ°ΡΡ Π΅ΡΡ >
Π Π°Π·ΡΠ°Π±ΠΎΡΠΊΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ-ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ° (ΡΠ΅ΡΠ΅ΡΠ°Ρ, ΠΊΡΡΡΠΎΠ²Π°Ρ, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½ΡΡΠΎΠ»ΡΠ½Π°Ρ)
- ΠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅
- 1. ΠΠ½Π°Π»ΠΈΠ· Π·Π°Π΄Π°Π½ΠΈΡ
- 2. Π Π°Π·ΡΠ°Π±ΠΎΡΠΊΠ° Π»Π΅ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΠ°
- 2.1 ΠΡΠ±ΠΎΡ ΠΈ ΠΎΠ±ΠΎΡΠ½ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΡΡΠΊΡΡΡ Π΄Π°Π½Π½ΡΡ
- 2.2 Π Π°Π·ΡΠ°Π±ΠΎΡΠΊΠ° Π°Π²ΡΠΎΠΌΠ°ΡΠ½ΡΡ Π³ΡΠ°ΠΌΠΌΠ°ΡΠΈΠΊ Π΄Π»Ρ ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π²Π°Π½ΠΈΡ Π»Π΅ΠΊΡΠ΅ΠΌ
- 2.3 Π Π°Π·ΡΠ°Π±ΠΎΡΠΊΠ° Π°Π²ΡΠΎΠΌΠ°ΡΠΎΠ², ΡΠ°Π±ΠΎΡΠ°ΡΡΠΈΡ ΠΏΠΎ ΠΏΡΠ°Π²ΠΈΠ»Π°ΠΌ Π³ΡΠ°ΠΌΠΌΠ°ΡΠΈΠΊΠΈ
- 2.3.1 ΠΠ²ΡΠΎΠΌΠ°Ρ Π΄Π»Ρ ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π²Π°Π½ΠΈΡ ΠΈΠΌΡΠ½
- 2.3.2 ΠΠ²ΡΠΎΠΌΠ°Ρ Π΄Π»Ρ ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π²Π°Π½ΠΈΡ 16-ΡΠΈΡΠ½ΡΡ ΠΊΠΎΠ½ΡΡΠ°Π½Ρ
- 2.3.3 ΠΠ²ΡΠΎΠΌΠ°Ρ Π΄Π»Ρ ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π²Π°Π½ΠΈΡ ΡΠΈΠΌΡΠΊΠΈΡ ΠΊΠΎΠ½ΡΡΠ°Π½Ρ
- 2.3.4 ΠΠ±ΡΠ΅Π΄ΠΈΠ½ΡΠ½Π½ΡΠΉ Π°Π²ΡΠΎΠΌΠ°Ρ
- 2.4 Π Π°Π·ΡΠ°Π±ΠΎΡΠΊΠ° Π°Π»Π³ΠΎΡΠΈΡΠΌΠ° ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π»Π΅ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π°
- 2.4.1 ΠΡΠ΄Π΅Π»Π΅Π½ΠΈΠ΅ Π»Π΅ΠΊΡΠ΅ΠΌ
- 2.4.2 Π Π°ΡΠΏΠΎΠ·Π½Π°Π²Π°Π½ΠΈΠ΅ Π»Π΅ΠΊΡΠ΅ΠΌ
- 2.4.3 Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π»Π΅ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΠ°
- 2.4.4 Π’Π΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π»Π΅ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΠ°
- 3. Π Π°Π·ΡΠ°Π±ΠΎΡΠΊΠ° ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΠ°
- 3.1 Π£ΡΠΎΡΠ½Π΅Π½ΠΈΠ΅ Π³ΡΠ°ΠΌΠΌΠ°ΡΠΈΠΊΠΈ ΡΠ·ΡΠΊΠ° ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΊ Π²Π°ΡΠΈΠ°Π½ΡΡ Π·Π°Π΄Π°Π½ΠΈΡ
- 3.2 Π Π°Π·ΡΠ°Π±ΠΎΡΠΊΠ° Π°Π»Π³ΠΎΡΠΈΡΠΌΠ° ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π°
- 3.3 ΠΠ»Π³ΠΎΡΠΈΡΠΌΡ ΡΠ°ΡΠΏΠΎΠ·Π½Π°ΡΡΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΉ
- 3.3.1 Π€ΡΠ½ΠΊΡΠΈΡ Lex_Progr
- 3.3.2 Π€ΡΠ½ΠΊΡΠΈΡ Lex_Descr_List
- 3.3.3 Π€ΡΠ½ΠΊΡΠΈΡ Lex_Descr
- 3.3.4 Π€ΡΠ½ΠΊΡΠΈΡ Lex_Name_List
- 3.3.5 Π€ΡΠ½ΠΊΡΠΈΡ Lex_Oper_List
- 3.3.6 Π€ΡΠ½ΠΊΡΠΈΡ Lex_Assign
- 3.3.7 Π€ΡΠ½ΠΊΡΠΈΡ Lex_Exp
- 3.3.8 Π€ΡΠ½ΠΊΡΠΈΡ Lex_Simple_Exp
- 3.3.9 Π€ΡΠ½ΠΊΡΠΈΡ Lex_Term
- 3.3.10 Π€ΡΠ½ΠΊΡΠΈΡ Lex_mnozh
- 3.3.12 Π€ΡΠ½ΠΊΡΠΈΡ Lex_Body
- 3.4 Π’Π΅ΠΊΡΡΡ ΡΠ°ΡΠΏΠΎΠ·Π½Π°ΡΡΠΈΡ ΠΏΡΠΎΡΠ΅Π΄ΡΡ
- 3.5 Π Π΅Π·ΡΠ»ΡΡΠ°ΡΡ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΠ°
- 4. Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π΄Π²ΡΡ ΡΠ°Π·Π½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ°
- 4.1 Π Π΅Π·ΡΠ»ΡΡΠ°ΡΡ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π΄Π²ΡΡ ΡΠ°Π·Π½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ°
- 5. ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ
- 5.1 ΠΠ±ΡΠΈΠ΅ ΡΠ²Π΅Π΄Π΅Π½ΠΈΡ ΠΈ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΠ΅ Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅
- 5.2 ΠΡΠ·ΠΎΠ² ΠΈ Π·Π°Π³ΡΡΠ·ΠΊΠ°
- 5.3 ΠΡ ΠΎΠ΄Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅
- 5.4 ΠΡΡ ΠΎΠ΄Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅
- 5.5 ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΎΠΉ ΡΡΡΡΠΊΡΡΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ
- 5.5.1 Π€Π°ΠΉΠ»Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ
- 5.5.2 ΠΠ±ΡΠ΅Π΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΡΠ°Π±ΠΎΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ
- Π‘ΠΏΠΈΡΠΎΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½Π½ΠΎΠΉ Π»ΠΈΡΠ΅ΡΠ°ΡΡΡΡ
ΠΠΎ ΠΊΠ»Π°ΡΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ ΠΠΠ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΡ ΠΎΡΠ½ΠΎΡΡΡΡΡ ΠΊ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΠΌ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡΠΈΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°ΠΌ. ΠΡ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Ρ ΡΠ·ΡΠΊΠ° Π²ΡΡΠΎΠΊΠΎΠ³ΠΎ ΡΡΠΎΠ²Π½Ρ Π² ΠΌΠ°ΡΠΈΠ½Π½ΡΠΉ ΠΊΠΎΠ΄. Π ΠΏΡΠΎΡΠ΅ΡΡΠ΅ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄Π° Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ Π²ΡΠ΄Π΅Π»ΡΡΡΡΡ ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡΡΡ ΡΠ°ΠΊΠΈΠ΅ ΡΡΠΎΠ²Π½ΠΈ ΠΈΠ»ΠΈ ΡΠ»ΠΎΠΈ ΠΊΠ°ΠΊ Π°Π»ΡΠ°Π²ΠΈΡ, Π»Π΅ΠΊΡΠΈΠΊΠ°, ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ ΠΏΡΠΈ ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΠΈ ΡΠ΅ΠΌΠ°Π½ΡΠΈΠΊΠΈ.
ΠΠ»ΡΠ°Π²ΠΈΡ — Π½Π°Π±ΠΎΡ Π΄ΠΎΠΏΡΡΡΠΈΠΌΡΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² ΠΈ Π·Π½Π°ΠΊΠΎΠ², ΠΈΠ· ΠΊΠΎΡΠΎΡΡΡ ΡΡΡΠΎΡΡΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΡΠ½ΡΠ΅ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ ΡΠ·ΡΠΊΠ°. ΠΡΠ΄Π΅Π»ΡΠ½ΡΠ΅ Π·Π½Π°ΠΊΠΈ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΡΡΡΡΡ Π² Π»Π΅ΠΊΡΠ΅ΠΌΡ.
ΠΠ΅ΠΊΡΠ΅ΠΌΠ° — ΠΎΡΠ΄Π΅Π»ΡΠ½Π°Ρ Π½Π΅Π΄Π΅Π»ΠΈΠΌΠ°Ρ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΡ, ΠΈΠΌΠ΅ΡΡΠ°Ρ ΡΠΌΡΡΠ».
Π‘Π»ΠΎΠ²Π° (Π»Π΅ΠΊΡΠ΅ΠΌΡ) ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΡΡΡΡΡ Π² ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΡ (ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ) ΡΠΎΠ³Π»Π°ΡΠ½ΠΎ ΠΏΡΠ°Π²ΠΈΠ»Π°ΠΌ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ°.
Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡ — ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΉ ΡΠ·ΡΠΊΠ° ΠΈΠ»ΠΈ ΠΏΡΠ°Π²ΠΈΠ» ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΉ ΡΠ·ΡΠΊΠ°.
ΠΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΡ ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· ΡΡΠ°ΠΏΠΎΠ² Π°Π½Π°Π»ΠΈΠ·Π° ΠΈ ΡΠΈΠ½ΡΠ΅Π·Π°. Π Π°Π½Π°Π»ΠΈΠ· Π²Ρ ΠΎΠ΄ΠΈΡ Π»Π΅ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΉ, ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΈ ΡΠ΅ΠΌΠ°Π½ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π°Π½Π°Π»ΠΈΠ·.
ΠΠ΅ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π°Π½Π°Π»ΠΈΠ· ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π²Π°Π½ΠΈΡ Π»Π΅ΠΊΡΠ΅ΠΌ, ΠΈΡ ΠΊΠ»Π°ΡΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΡΡΠΈ.
Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π°Π½Π°Π»ΠΈΠ· Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΠΏΡΠΎΠ²Π΅ΡΠΊΠ΅ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΡΡΠΈ ΡΡΡΡΠΊΡΡΡ ΡΠ·ΡΠΊΠ°, ΡΠ°ΠΊΠΈΡ ΠΊΠ°ΠΊ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΈΠ»ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ ΠΈ Π²ΡΠ΅ΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π² ΡΠ΅Π»ΠΎΠΌ.
1. ΠΠ½Π°Π»ΠΈΠ· Π·Π°Π΄Π°Π½ΠΈΡ
ΠΠ°Π΄Π°Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°Π·Π΄Π΅Π»ΠΈΡΡ Π½Π° 3 ΡΠ°ΡΡΠΈ: Π»Π΅ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π°Π½Π°Π»ΠΈΠ·, ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π°Π½Π°Π»ΠΈΠ·, ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ° Π² ΡΠ΅Π»ΠΎΠΌ
ΠΠ΅ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π°Π½Π°Π»ΠΈΠ· Π²ΠΊΠ»ΡΡΠ°Π΅Ρ ΡΡΠ°ΠΏΡ:
ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ΅ΠΊΡΡΠ° Π² Π΄Π»ΠΈΠ½Π½ΡΡ ΡΡΡΠΎΠΊΡ;
Π²ΡΠ΄Π΅Π»Π΅Π½ΠΈΠ΅ Π»Π΅ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΡ Π΅Π΄ΠΈΠ½ΠΈΡ (Π»Π΅ΠΊΡΠ΅ΠΌ);
ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π²Π°Π½ΠΈΠ΅ ΡΠΈΠΏΠΎΠ² Π»Π΅ΠΊΡΠ΅ΠΌ;
Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π»Π΅ΠΊΡΠ΅ΠΌ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ ΡΠ°Π±Π»ΠΈΡΡ;
ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅ ΡΠ°Π±Π»ΠΈΡ Π² Π²ΠΈΠ΄Π΅ ΡΠ°ΠΉΠ»ΠΎΠ².
Π Π΄Π°Π½Π½ΠΎΠΌ Π·Π°Π΄Π°Π½ΠΈΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΠΈΠΏΡ Π»Π΅ΠΊΡΠ΅ΠΌ:
ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΡ;
ΠΊΠ»ΡΡΠ΅Π²ΡΠ΅ ΡΠ»ΠΎΠ²Π°;
16-ΡΠΈΡΠ½ΡΠ΅ ΠΈ ΡΠΈΠΌΠΊΠΈΠ΅ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ;
Π·Π½Π°ΠΊΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ;
ΡΠ°Π·Π΄Π΅Π»ΠΈΡΠ΅Π»ΠΈ.
ΠΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΡ (ΠΈΠΌΠ΅Π½Π°)
Π‘Π»Π΅Π΄ΡΠ΅Ρ ΠΎΡΠΌΠ΅ΡΠΈΡΡ, ΡΡΠΎ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ ΠΌΠΎΠΆΠ΅Ρ Π½Π°ΡΠΈΠ½Π°ΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Ρ Π±ΡΠΊΠ²Ρ, ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»Ρ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΊΠ°ΠΊ Π±ΡΠΊΠ²Ρ, ΡΠ°ΠΊ ΠΈ ΡΠΈΡΡΡ ΠΈ Π·Π½Π°ΠΊ ΠΏΠΎΠ΄ΡΠ΅ΡΠΊΠΈΠ²Π°Π½ΠΈΡ (`_'). ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΡ Π½Π΅ ΠΌΠΎΠ³ΡΡ ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡΡ ΡΠΎ ΡΠ»ΡΠΆΠ΅Π±Π½ΡΠΌΠΈ ΡΠ»ΠΎΠ²Π°ΠΌΠΈ.
Π Π΄Π°Π½Π½ΠΎΠΌ Π·Π°Π΄Π°Π½ΠΈΠΈ Π²ΡΡΡΠ΅ΡΠ°ΡΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΡ:
`var15', `n'. ΠΡ ΡΠ»Π΅Π΄ΡΠ΅Ρ Π·Π°ΠΏΠΈΡΠ°ΡΡ Π² ΡΠ°Π±Π»ΠΈΡΡ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΎΠ².
ΠΠ»ΡΡΠ΅Π²ΡΠ΅ ΡΠ»ΠΎΠ²Π°
ΠΡΠΎΡ ΠΊΠ»Π°ΡΡ Π»Π΅ΠΊΡΠ΅ΠΌ, ΠΊΠ°ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ, ΠΎΠΏΠΈΡΡΠ²Π°Π΅ΡΡΡ ΡΠ΅ΠΌ ΠΆΠ΅ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠΎΠΌ, ΡΡΠΎ ΠΈ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΡ. ΠΡΠ½ΠΎΠ²Π½ΠΎΠ΅ ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΡΠΎΡΡΠΎΠΈΡ Π² ΡΠΎΠΌ, ΡΡΠΎ Π²ΡΠ΅ ΠΊΠ»ΡΡΠ΅Π²ΡΠ΅ ΡΠ»ΠΎΠ²Π° Π·Π°ΡΠ°Π½Π΅Π΅ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½Ρ ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ ΠΈΠ³ΡΠ°Π΅Ρ Π² ΡΠ·ΡΠΊΠ΅ ΡΠ²ΠΎΡ ΠΎΡΠΎΠ±ΡΡ ΡΠΎΠ»Ρ. ΠΠ½ΠΎ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ Π·Π°ΠΌΠ΅Π½ΡΡΡΡΡ Π΄ΡΡΠ³ΠΈΠΌΠΈ ΠΊΠ»ΡΡΠ΅Π²ΡΠΌΠΈ ΡΠ»ΠΎΠ²Π°ΠΌΠΈ. ΠΠ΅ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΎΡΠ»ΠΈΡΠ°ΡΡ ΠΊΠ»ΡΡΠ΅Π²ΡΠ΅ ΡΠ»ΠΎΠ²Π° ΠΎΡ ΠΎΠ±ΡΡΠ½ΡΡ ΠΈΠΌΠ΅Π½, ΡΠ°Π·Π»ΠΈΡΠ°ΡΡ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠΎΠ±ΠΎΠΉ ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· Π½ΠΈΡ ΡΠ²ΠΎΠΈ (ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΠ΅) Π·Π½Π°ΡΠ΅Π½ΠΈΡ.
ΠΠ΅ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠ°Π·Π»ΠΈΡΠΈΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΊΠ»ΡΡΠ΅Π²ΡΠ΅ ΡΠ»ΠΎΠ²Π°:
`program', `var', `integer', `begin', `repeat', `until', `end', ΠΈ Π·Π°ΠΏΠΈΡΠ°ΡΡ ΠΈΡ Π² ΡΠ°Π±Π»ΠΈΡΡ ΡΠ΅ΡΠΌΠΈΠ½Π°Π»ΡΠ½ΡΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ².
ΠΠΎΠ½ΡΡΠ°Π½ΡΡ.
Π Π΄Π°Π½Π½ΠΎΠΌ Π·Π°Π΄Π°Π½ΠΈΠΈ Π²ΡΡΡΠ΅ΡΠ°ΡΡΡΡ ΠΊΠ°ΠΊ 16-ΡΠΈΡΠ½ΡΠ΅, ΡΠ°ΠΊ ΠΈ ΡΠΈΠΌΡΠΊΠΈΠ΅ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ. ΠΠ΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ, ΡΡΠΎΠ±Ρ Π»Π΅ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ ΡΠ°Π·Π»ΠΈΡΠ°Π» ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ ΠΈ ΡΠ°Π·Π»ΠΈΡΠ°Π» ΠΈΡ ΡΠΈΠΏ (16-ΡΠΈΡΠ½Π°Ρ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ°, ΡΠΈΠΌΡΠΊΠ°Ρ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ°) ΠΈ Π·Π°ΠΏΠΈΡΡΠ²Π°Π» ΡΠΈΠΏ Π² ΡΠ°Π±Π»ΠΈΡΡ ΠΊΠΎΠ½ΡΡΠ°Π½Ρ.
ΠΠΎΠ½ΡΡΠ°Π½ΡΠ° ΡΡΠΈΡΠ°Π΅ΡΡΡ ΡΠΈΠΌΡΠΊΠΎΠΉ, Π΅ΡΠ»ΠΈ ΠΎΠ½Π° ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· Π·Π½Π°ΠΊΠ° ΠΈ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² `X','V' ΠΈ `I' ΠΈ ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½Π° ΠΏΠΎ ΠΏΡΠ°Π²ΠΈΠ»Π°ΠΌ ΡΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠΈΠΌΡΠΊΠΈΡ ΠΊΠΎΠ½ΡΡΠ°Π½Ρ. ΠΠ½Π° ΡΡΠΈΡΠ°Π΅ΡΡΡ 16-ΡΠΈΡΠ½ΠΎΠΉ, Π΅ΡΠ»ΠΈ Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ Ρ ΡΠΈΠΌΠ²ΠΎΠ»Π° `$' ΠΈ Π·Π½Π°ΠΊΠ° ΠΈ ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· ΡΠΈΡΡ ΠΈ Π±ΡΠΊΠ² `A'. 'F'. ΠΠΎΠ½ΡΡΠ°Π½ΡΡ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΊΠ°ΠΊ ΠΏΠΎΠ»ΠΎΠΆΠΈΡΠ΅Π»ΡΠ½ΡΠΌΠΈ, ΡΠ°ΠΊ ΠΈ ΠΎΡΡΠΈΡΠ°ΡΠ΅Π»ΡΠ½ΡΠΌΠΈ, ΡΡΠΎ Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ Π·Π½Π°ΠΊΠ° ΠΏΠΎΡΠ»Π΅ ΡΠΈΠΌΠ²ΠΎΠ»Π° `$'.
ΠΠ΅ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠ°Π·Π»ΠΈΡΠΈΡΡ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ:
`$+00', `$-0A' - ΠΊΠ°ΠΊ 16-ΡΠΈΡΠ½ΡΠ΅;
`-XII' - ΠΊΠ°ΠΊ ΡΠΈΠΌΡΠΊΡΡ.
ΠΡΠΈ Π»Π΅ΠΊΡΠ΅ΠΌΡ ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π·Π°ΠΏΠΈΡΠ°ΡΡ Π² ΡΠ°Π±Π»ΠΈΡΡ ΠΊΠΎΠ½ΡΡΠ°Π½Ρ Ρ ΡΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ ΠΈΡ ΡΠΈΠΏΠ° ('16-ΡΠΈΡ. ' - Π΄Π»Ρ 16-ΡΠΈΡΠ½ΠΎΠΉ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ, 'ΡΠΈΠΌΡΠΊ. ' - Π΄Π»Ρ ΡΠΈΠΌΡΠΊΠΎΠΉ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ) ΠΈ ΡΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ Π΄Π΅ΡΡΡΠΈΡΠ½ΠΎΠΉ ΡΠΎΡΠΌΡ.
ΠΠ½Π°ΠΊΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ.
ΠΡ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΡ ΡΠΎΡΡΠΎΠΈΡ Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΎΠ΄Π½ΠΎ — ΠΈΠ»ΠΈ Π΄Π²ΡΡ ΡΠΈΠΌΠ²ΠΎΠ»ΡΠ½ΡΠΌΠΈ. Π Π΄Π°Π½Π½ΠΎΠΌ Π·Π°Π΄Π°Π½ΠΈΠΈ Π²ΡΡΡΠ΅ΡΠ°ΡΡΡΡ ΠΊΠ°ΠΊ ΠΎΠ΄Π½ΠΎΡΠΈΠΌΠ²ΠΎΠ»ΡΠ½ΡΠ΅, ΡΠ°ΠΊ ΠΈ Π΄Π²ΡΡ ΡΠΈΠΌΠ²ΠΎΠ»ΡΠ½ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ. Π’Π°ΠΊΠΈΠ΅ Π»Π΅ΠΊΡΠ΅ΠΌΡ Π»Π΅ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠ°ΡΠΏΠΎΠ·Π½Π°ΡΡ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ (Π΄Π²ΡΡ ΡΠΈΠΌΠΎΠ²ΠΎΠ»ΡΠ½ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π½Π΅ ΡΠ°Π·Π±ΠΈΠ²Π°ΡΡ Π½Π° ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ) ΠΈ Π·Π°ΠΏΠΈΡΠ°ΡΡ ΠΈΡ Π² ΡΠ°Π±Π»ΠΈΡΡ ΡΠ΅ΡΠΌΠΈΠ½Π°Π»ΡΠ½ΡΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ².
Π Π΄Π°Π½Π½ΠΎΠΌ Π·Π°Π΄Π°Π½ΠΈΠΈ Π²ΡΡΡΠ΅ΡΠ°ΡΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ:
ΠΠ΄Π½ΠΎΡΠΈΠΌΠΎΠ²ΠΎΠ»ΡΠ½ΡΠ΅: `-', `<';
ΠΠ²ΡΡ ΡΠΈΠΌΠ²ΠΎΠ»ΡΠ½ΡΠ΅: `: ='.
Π Π°Π·Π΄Π΅Π»ΠΈΡΠ΅Π»ΠΈ.
Π Π½ΠΈΠΌ ΠΎΡΠ½ΠΎΡΡΡΡΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»Ρ, ΡΠ°Π·Π΄Π΅Π»ΡΡΡΠΈΠ΅ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ ΡΠ·ΡΠΊΠ°, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ:; |, |. | (|) | ΠΏΡΠΎΠ±Π΅Π»Ρ | ΡΠΈΠΌΠ²ΠΎΠ»Ρ ΡΠ°Π±ΡΠ»ΡΡΠΈΠΈ ΠΈ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄Π° Π½Π° Π½ΠΎΠ²ΡΡ ΡΡΡΠΎΠΊΡ. ΠΠ½ΠΈ ΠΌΠΎΠ³ΡΡ Π»ΠΈΠ±ΠΎ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡΡΡ Π² ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π»Π΅ΠΊΡΠ΅ΠΌ, Π»ΠΈΠ±ΠΎ ΡΠΎΠ»ΡΠΊΠΎ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ Π½Π° ΠΎΠΊΠΎΠ½ΡΠ°Π½ΠΈΠ΅ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΉ Π»Π΅ΠΊΡΠ΅ΠΌΡ ΠΈ ΠΏΡΠΎΠΏΡΡΠΊΠ°ΡΡΡΡ ΠΏΡΠΈ Π²Π²ΠΎΠ΄Π΅ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ. ΠΠ΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠ· ΡΡΠΈΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ ΠΌΠΎΠ³ΡΡ ΠΈΠ³ΡΠ°ΡΡ ΡΠΎΠ»Ρ ΡΠ΅ΡΠΌΠΈΠ½Π°Π»ΡΠ½ΡΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² Π² Π³ΡΠ°ΠΌΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΌ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠΈ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΉ ΡΠ·ΡΠΊΠ°.
Π Π΄Π°Π½Π½ΠΎΠΌ Π·Π°Π΄Π°Π½ΠΈΠΈ Π²ΡΡΡΠ΅ΡΠ°ΡΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΠ°Π·Π΄Π΅Π»ΠΈΡΠ΅Π»ΠΈ:
`; ', `: ', `. ',' (`,') '.
ΠΡΠ°Π½ΠΈΡΠ°ΠΌΠΈ Π»Π΅ΠΊΡΠ΅ΠΌ ΡΠ²Π»ΡΡΡΡΡ ΡΠ°Π·Π΄Π΅Π»ΠΈΡΠ΅Π»ΠΈ, Π·Π½Π°ΠΊΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ, ΠΏΡΠΎΠ±Π΅Π»Ρ.
Π ΠΏΡΠΎΡΠ΅ΡΡΠ΅ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π° ΡΠ΅ΡΠ°ΡΡΡΡ Π΄Π²Π΅ Π·Π°Π΄Π°ΡΠΈ:
ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π²Π°Π½ΠΈΠ΅ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΡΠ·ΡΠΊΠ°;
ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΡΡΠΈ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΉ.
ΠΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΡΠΈΡΠ°Π΅ΡΡΡ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠΌ, Π΅ΡΠ»ΠΈ ΠΎΠ½ΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠ΅Π½ΡΠ΅Π½ΡΠΈΠ°Π»ΡΠ½ΡΡ ΡΠΎΡΠΌΡ Π³ΡΠ°ΠΌΠΌΠ°ΡΠΈΠΊΠΈ ΡΠ·ΡΠΊΠ°, Ρ. Π΅. ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π²ΡΠ²Π΅Π΄Π΅Π½ΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠΉ ΡΠ΅ΠΏΠΎΡΠΊΠΈ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ΠΎΠ² ΠΈΠ· Π½Π°ΡΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠΈΠΌΠ²ΠΎΠ»Π° Π³ΡΠ°ΠΌΠΌΠ°ΡΠΈΠΊΠΈ.
Π ΠΏΡΠΎΡΠ΅ΡΡΠ΅ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π° Π²ΡΠ΅Π³ΠΎ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ΅ΠΊΡΡΠ° Π² ΡΠ΅Π»ΠΎΠΌ ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΡ Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΡΡΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π΄Π²Π° Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΡ ΠΏΠΎ ΡΠ΅ΠΏΠΎΡΠΊΠ΅ ΠΏΡΠ°Π²ΠΈΠ»: ΡΠ²Π΅ΡΡ Ρ Π²Π½ΠΈΠ· ΠΈ ΡΠ½ΠΈΠ·Ρ Π²Π²Π΅ΡΡ .
Π ΠΏΡΠΎΡΠ΅ΡΡΠ΅ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π° ΡΡΡΠΎΠΈΡΡΡ Π΄Π΅ΡΠ΅Π²ΠΎ Π³ΡΠ°ΠΌΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΡΠ°Π·Π±ΠΎΡΠ° Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΡΠΎ Π΄Π΅ΡΠ΅Π²ΠΎ ΡΡΡΠΎΠΈΡΡΡ ΠΎΡ Π½Π°ΡΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΊ ΠΊΠΎΠ½Π΅ΡΠ½ΠΎΠΌΡ ΡΠΈΠΌΠ²ΠΎΠ»Ρ ΠΈΠ»ΠΈ Π½Π°ΠΎΠ±ΠΎΡΠΎΡ.
ΠΠ΅ΡΠ΅Π²ΠΎ Π²ΡΠ²ΠΎΠ΄Π° ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· Π½Π°ΡΠ°Π»ΡΠ½ΠΎΠ³ΠΎ (ΠΊΠΎΡΠ½Π΅Π²ΠΎΠ³ΠΎ) ΡΠ·Π»Π°. Π Π½Π΅Π³ΠΎ Π²ΠΊΠ»ΡΡΠ°ΡΡ Π΅ΡΠ΅ ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΎΡΠ½ΡΠ΅ ΡΠ·Π»Ρ ΠΈ Π²Π½Π΅ΡΠ½ΠΈΠ΅ ΡΠ·Π»Ρ.
ΠΠ°ΠΆΠ΄ΠΎΠΉ Π²Π΅ΡΠ²ΠΈ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ ΠΎΠ΄Π½ΠΎ ΠΈΠ· ΠΏΡΠ°Π²ΠΈΠ» Π³ΡΠ°ΠΌΠΌΠ°ΡΠΈΠΊΠΈ.
ΠΡ ΠΎΠ΄Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ — ΡΠ°Π±Π»ΠΈΡΠ° ΠΊΠΎΠ΄ΠΎΠ² Π»Π΅ΠΊΡΠ΅ΠΌ, ΡΡΠΎΡΠΌΠΈΡΠΎΠ²Π°Π½Π½Π°Ρ Π½Π° ΡΡΠ°Π΄ΠΈΠΈ Π»Π΅ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π°.
ΠΡΡ ΠΎΠ΄Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ — ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΎΠ± ΡΡΠΏΠ΅ΡΠ½ΠΎΠΌ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΠΈ Π°Π½Π°Π»ΠΈΠ·Π° ΠΈΠ»ΠΈ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΎΠ± ΠΈΠΌΠ΅ΡΡΠΈΡ ΡΡ ΠΎΡΠΈΠ±ΠΊΠ°Ρ .
2. Π Π°Π·ΡΠ°Π±ΠΎΡΠΊΠ° Π»Π΅ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΠ°
2.1 ΠΡΠ±ΠΎΡ ΠΈ ΠΎΠ±ΠΎΡΠ½ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΡΡΠΊΡΡΡ Π΄Π°Π½Π½ΡΡ
1. Π’Π°Π±Π»ΠΈΡΠ° ΠΊΠΎΠ½ΡΡΠ°Π½Ρ ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΎΠ²Π°Π½Π° Π² Π²ΠΈΠ΄Π΅ Π΄Π²ΠΎΠΈΡΠ½ΡΡ Π΄Π΅ΡΠ΅Π²ΡΠ΅Π²
ΠΠ»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΡΠ°Π±Π»ΠΈΡΡ ΠΈΠΌΠ΅Π½ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΌΠ°ΡΡΠΈΠ² ΠΈΠ· Π·Π°ΠΏΠΈΡΠ΅ΠΉ Const_tab, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ:
ΠΠΎΠΌΠ΅Ρ Π»Π΅ΠΊΡΠ΅ΠΌΡ.
ΠΠ΅ΠΊΡΠ΅ΠΌΠ°.
Π’ΠΈΠΏ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ (16-ΡΠΈΡΠ½Π°Ρ ΠΈΠ»ΠΈ ΡΠΈΠΌΡΠΊΠ°Ρ).
Π¨ΠΈΡΠΈΠ½Π° ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ.
10-ΡΠΈΡΠ½Π°Ρ ΡΠΎΡΠΌΠ°.
ΠΠ΅Π²Π°Ρ Π²Π΅ΡΠ²Ρ Π΄Π΅ΡΠ΅Π²Π° (Π½ΠΎΠΌΠ΅Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ²Π»ΡΠ΅ΡΡΡ Π»Π΅Π²ΠΎΠΉ Π²Π΅ΡΠ²ΡΡ Π΄Π»Ρ Π΄Π°Π½Π½ΠΎΠ³ΠΎ).
ΠΡΠ°Π²Π°Ρ Π²Π΅ΡΠ²Ρ Π΄Π΅ΡΠ΅Π²Π° (Π½ΠΎΠΌΠ΅Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΡΠ°Π²ΠΎΠΉ Π²Π΅ΡΠ²ΡΡ Π΄Π»Ρ Π΄Π°Π½Π½ΠΎΠ³ΠΎ).
ΠΡΡΡ ΠΊ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΏΠΎ Π΄Π΅ΡΠ΅Π²Ρ (ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ Π»Π΅Π²ΡΡ ΠΈ ΠΏΡΠ°Π²ΡΡ Π²Π΅ΡΠ²Π΅ΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡΠΎΠΉΡΠΈ, ΡΡΠΎΠ±Ρ Π΄ΠΎΡΡΠΈΡΡ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°).
2. Π’Π°Π±Π»ΠΈΡΠ° ΡΠ΅ΡΠΌΠΈΠ½Π°Π»ΡΠ½ΡΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΎΠ²Π°Π½Π° Π² Π²ΠΈΠ΄Π΅ Π΄Π²ΠΎΠΈΡΠ½ΡΡ Π΄Π΅ΡΠ΅Π²ΡΠ΅Π²
ΠΠ»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΡΠ°Π±Π»ΠΈΡΡ ΠΈΠΌΠ΅Π½ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΌΠ°ΡΡΠΈΠ² ΠΈΠ· Π·Π°ΠΏΠΈΡΠ΅ΠΉ Term_tab, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ:
ΠΠΎΠΌΠ΅Ρ Π»Π΅ΠΊΡΠ΅ΠΌΡ.
ΠΠ΅ΠΊΡΠ΅ΠΌΠ°.
Π Π°Π·Π΄Π΅Π»ΠΈΡΠ΅Π»Ρ (Π΅ΡΠ»ΠΈ Π»Π΅ΠΊΡΠ΅ΠΌΠ° ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ°Π·Π΄Π΅Π»ΠΈΡΠ΅Π»Π΅ΠΌ, ΡΠΎ ΡΡΠΎ ΠΏΠΎΠ»Π΅ ΡΠ°Π²Π½ΠΎ 1, Π΅ΡΠ»ΠΈ Π½Π΅Ρ, ΡΠΎ 0).
ΠΠ½Π°ΠΊ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ (Π΅ΡΠ»ΠΈ Π»Π΅ΠΊΡΠ΅ΠΌΠ° ΡΠ²Π»ΡΠ΅ΡΡΡ Π·Π½Π°ΠΊΠΎΠΌ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ, ΡΠΎ ΡΡΠΎ ΠΏΠΎΠ»Π΅ ΡΠ°Π²Π½ΠΎ 1, Π΅ΡΠ»ΠΈ Π½Π΅Ρ, ΡΠΎ 0).
ΠΠ»ΡΡΠ΅Π²ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ (Π΅ΡΠ»ΠΈ Π»Π΅ΠΊΡΠ΅ΠΌΠ° ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΊΠ»ΡΡΠ΅Π²ΡΠΌ ΡΠ»ΠΎΠ²ΠΎΠΌ, ΡΠΎ ΡΡΠΎ ΠΏΠΎΠ»Π΅ ΡΠ°Π²Π½ΠΎ 1, Π΅ΡΠ»ΠΈ Π½Π΅Ρ, ΡΠΎ 0)
ΠΠ΅Π²Π°Ρ Π²Π΅ΡΠ²Ρ Π΄Π΅ΡΠ΅Π²Π° (Π½ΠΎΠΌΠ΅Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ²Π»ΡΠ΅ΡΡΡ Π»Π΅Π²ΠΎΠΉ Π²Π΅ΡΠ²ΡΡ Π΄Π»Ρ Π΄Π°Π½Π½ΠΎΠ³ΠΎ).
ΠΡΠ°Π²Π°Ρ Π²Π΅ΡΠ²Ρ Π΄Π΅ΡΠ΅Π²Π° (Π½ΠΎΠΌΠ΅Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΡΠ°Π²ΠΎΠΉ Π²Π΅ΡΠ²ΡΡ Π΄Π»Ρ Π΄Π°Π½Π½ΠΎΠ³ΠΎ).
ΠΡΡΡ ΠΊ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΏΠΎ Π΄Π΅ΡΠ΅Π²Ρ (ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ Π»Π΅Π²ΡΡ ΠΈ ΠΏΡΠ°Π²ΡΡ Π²Π΅ΡΠ²Π΅ΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡΠΎΠΉΡΠΈ, ΡΡΠΎΠ±Ρ Π΄ΠΎΡΡΠΈΡΡ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°).
3. ΠΠ»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΡΠ°Π±Π»ΠΈΡΡ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΌΠ΅ΡΠΎΠ΄ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Ρ ΡΡ-ΡΡΠ½ΠΊΡΠΈΠΉ
ΠΠ»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΡΠ°Π±Π»ΠΈΡΡ ΠΊΠΎΠ½ΡΡΠ°Π½Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΌΠ°ΡΡΠΈΠ² ΠΈΠ· Π·Π°ΠΏΠΈΡΠ΅ΠΉ Id_tab, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ:
Π‘ΡΡΠ»ΠΊΠ° Π½Π° ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΡΠ΅ΠΏΠΎΡΠΊΠΈ.
ΠΠΎΠΌΠ΅Ρ.
ΠΠ΅ΠΊΡΠ΅ΠΌΠ°.
Π Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Ρ ΡΡ-ΡΡΠ½ΠΊΡΠΈΡ Π²ΡΡΠΈΡΠ»ΡΠ΅ΡΡΡ ΠΏΠΎ ΠΌΠ΅ΡΠΎΠ΄Ρ Π΄Π΅Π»Π΅Π½ΠΈΡ, Ρ. Π΅.
h (k): = {K/Π±}
Π³Π΄Π΅ K — ΠΊΠ»ΡΡ Π·Π°ΠΏΠΈΡΠΈ, Π± — Π½Π΅ΠΊΠΎΡΠΎΡΡΠΉ ΠΊΠΎΡΡΡΠΈΡΠΈΠ΅Π½Ρ
ΠΠ»Ρ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡΠ΄ΠΎΠ±Π½ΠΎΠ³ΠΎ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ Π² ΡΠ°Π±Π»ΠΈΡΠ΅ ΠΊΠΎΡΡΡΠΈΡΠΈΠ΅Π½Ρ Π± ΠΏΡΠΈΠΌΠ΅ΠΌ:
Π±= Li+2
Π³Π΄Π΅ L — ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² i-ΡΠΎΠΉ ΡΡΡΠΎΠΊΠΈ, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ Ρ ΡΠ°Π½ΠΈΡΡΡ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ.
ΠΠΎΠ΄ K ΡΠ°ΡΡΡΠΈΡΡΠ²Π°Π΅ΡΡΡ ΠΊΠ°ΠΊ ΡΡΠΌΠΌΠ° ASCII-ΠΊΠΎΠ΄ΠΎΠ² ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² ΡΡΡΠΎΠΊΠΈ, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ Ρ ΡΠ°Π½ΠΈΡΡΡ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ.
4. ΠΠ»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΡΠ°Π±Π»ΠΈΡΡ ΠΊΠΎΠ΄ΠΎΠ² Π»Π΅ΠΊΡΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΌΠ°ΡΡΠΈΠ² ΠΈΠ· Π·Π°ΠΏΠΈΡΠ΅ΠΉ Code_tab, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ:
ΠΠΎΠΌΠ΅Ρ.
Π’ΠΈΠΏ Π»Π΅ΠΊΡΠ΅ΠΌΡ (C — ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ°, I — ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ, T — ΡΠ΅ΡΠΌΠΈΠ½Π°Π»ΡΠ½ΡΠΉ ΡΠΈΠΌΠ²ΠΎΠ»).
ΠΠΎΠΌΠ΅Ρ Π² ΡΠ°Π±Π»ΠΈΡΠ΅ ΠΊΠΎΠ½ΡΡΠ°Π½Ρ, ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΎΠ² ΠΈΠ»ΠΈ ΡΠ΅ΡΠΌΠΈΠ½Π°Π»ΡΠ½ΡΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ².
ΠΠ΅ΠΊΡΠ΅ΠΌΠ°.
ΠΠΎΠΌΠ΅Ρ Π² ΡΠ°Π±Π»ΠΈΡΠ΅ ΠΊΠΎΠ΄ΠΎΠ² Π»Π΅ΠΊΡΠ΅ΠΌ.
ΠΠ»Ρ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΈ ΠΏΠΎΠΈΡΠΊΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄.
2.2 Π Π°Π·ΡΠ°Π±ΠΎΡΠΊΠ° Π°Π²ΡΠΎΠΌΠ°ΡΠ½ΡΡ Π³ΡΠ°ΠΌΠΌΠ°ΡΠΈΠΊ Π΄Π»Ρ ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π²Π°Π½ΠΈΡ Π»Π΅ΠΊΡΠ΅ΠΌ
ΠΠ²ΡΠΎΠΌΠ°ΡΠ½ΡΠΌΠΈ ΠΈΠ»ΠΈ ΡΠ΅Π³ΡΠ»ΡΡΠ½ΡΠΌΠΈ Π³ΡΠ°ΠΌΠΌΠ°ΡΠΈΠΊΠ°ΠΌΠΈ Π½Π°Π·ΡΠ²Π°ΡΡΡΡ Π³ΡΠ°ΠΌΠΌΠ°ΡΠΈΠΊΠΈ, ΠΏΡΠΎΠ΄ΡΠΊΡΠΈΠΈ ΠΊΠΎΡΠΎΡΡΡ ΠΈΠΌΠ΅ΡΡ ΠΎΠ΄Π½Ρ ΠΈΠ· Π΄Π²ΡΡ ΡΠΎΡΠΌ:
ΠΡΠ°Π²ΠΎΠ»ΠΈΠ½Π΅ΠΉΠ½Π°Ρ | ΠΠ΅Π²ΠΎΠ»ΠΈΠ½Π΅ΠΉΠ½Π°Ρ | |
A>aB | A>Ba | |
A>a | A>a | |
Π³Π΄Π΅ a Π’; Π, Π N
ΠΡΠΈ Π³ΡΠ°ΠΌΠΌΠ°ΡΠΈΠΊΠΈ ΡΠΈΡΠΎΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π΄Π»Ρ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ Π»Π΅ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΡ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΠΎΠ². ΠΡΠ°ΠΌΠΌΠ°ΡΠΈΠΊΡ Π»Π΅ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΡ Π΅Π΄ΠΈΠ½ΠΈΡ ΠΎΠ±ΡΡΠ½ΠΎ ΡΠ²Π½ΠΎ Π½Π΅ ΠΎΠΏΠΈΡΡΠ²Π°ΡΡ, Π° ΡΡΡΠΎΡΡ ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ½ΡΠΉ Π΅ΠΉ Π³ΡΠ°Ρ ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π²Π°Π½ΠΈΡ Π»Π΅ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΡ Π΅Π΄ΠΈΠ½ΠΈΡ.
ΠΡΠ°ΠΌΠΌΠ°ΡΠΈΠΊΠ° Π΄Π»Ρ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΎΠ²:
<οΏ½ΠΈΠΌΡ>><οΏ½Π±ΡΠΊΠ²Π°><οΏ½Π±ΡΠΊΠ²Π°>
<οΏ½Π±ΡΠΊΠ²Π°>> ('a'. 'z')
<οΏ½ΡΠΈΡΡΠ°>> (`0'. '9')
ΠΡΠ°ΠΌΠΌΠ°ΡΠΈΠΊΠ° Π΄Π»Ρ ΠΊΠΎΠ½ΡΡΠ°Π½Ρ:
<οΏ½ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ°>><16-ΡΠΈΡ. ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ°>|<οΏ½ΡΠΈΠΌΡΠΊ. ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ°>
ΠΠ»Ρ 16-ΡΠΈΡΠ½ΡΡ ΠΊΠΎΠ½ΡΡΠ°Π½Ρ:
<16-ΡΠΈΡ. ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ°>> (`$+','$-`) (<οΏ½ΡΠΈΡΡΠ°>, `A'. 'F') { (<οΏ½ΡΠΈΡΡΠ°>,`A'. 'F') }
ΠΠ»Ρ ΡΠΈΠΌΡΠΊΠΈΡ ΠΊΠΎΠ½ΡΡΠ°Π½Ρ:
2.3 Π Π°Π·ΡΠ°Π±ΠΎΡΠΊΠ° Π°Π²ΡΠΎΠΌΠ°ΡΠΎΠ², ΡΠ°Π±ΠΎΡΠ°ΡΡΠΈΡ ΠΏΠΎ ΠΏΡΠ°Π²ΠΈΠ»Π°ΠΌ Π³ΡΠ°ΠΌΠΌΠ°ΡΠΈΠΊΠΈ
2.3.1 ΠΠ²ΡΠΎΠΌΠ°Ρ Π΄Π»Ρ ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π²Π°Π½ΠΈΡ ΠΈΠΌΡΠ½
ΡΠΈΡ. 1. ΠΠ²ΡΠΎΠΌΠ°Ρ Π΄Π»Ρ ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π²Π°Π½ΠΈΡ ΠΈΠΌΡΠ½
Π‘ΠΎΡΡΠΎΡΠ½ΠΈΡ Π°Π²ΡΠΎΠΌΠ°ΡΠ°:
S — Π½Π°ΡΠ°Π»ΡΠ½ΠΎΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅;
1 — ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΎΡΠ½ΠΎΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π΅ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½ΠΈΡ ΡΠΎΡΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈΠΌΠ΅Π½ΠΈ;
2 — ΠΊΠΎΠ½Π΅ΡΠ½ΠΎΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π΅ Π²ΡΠ΄Π΅Π»Π΅Π½ΠΈΡ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠ³ΠΎ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠ°;
3 — ΠΊΠΎΠ½Π΅ΡΠ½ΠΎΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π΅ ΠΎΡΠΈΠ±ΠΊΠ΅ ΠΏΡΠΈ Π²ΡΠ΄Π΅Π»Π΅Π½ΠΈΠΈ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠ°.
2.3.2 ΠΠ²ΡΠΎΠΌΠ°Ρ Π΄Π»Ρ ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π²Π°Π½ΠΈΡ 16-ΡΠΈΡΠ½ΡΡ ΠΊΠΎΠ½ΡΡΠ°Π½Ρ
ΡΠΈΡ. 3. ΠΠ²ΡΠΎΠΌΠ°Ρ Π΄Π»Ρ ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π²Π°Π½ΠΈΡ 16-ΡΠΈΡΠ½ΡΡ ΠΊΠΎΠ½ΡΡΠ°Π½Ρ
Π‘ΠΎΡΡΠΎΡΠ½ΠΈΡ Π°Π²ΡΠΎΠΌΠ°ΡΠ°:
S — Π½Π°ΡΠ°Π»ΡΠ½ΠΎΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅;
1 — ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΎΡΠ½ΠΎΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅, ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ°ΡΡΠ΅Π΅, ΡΡΠΎ ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π½ ΡΠΈΠΌΠ²ΠΎΠ» Π½Π°ΡΠ°Π»Π° ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ `$';
2 — ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΎΡΠ½ΠΎΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅, ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ°ΡΡΠ΅Π΅, ΡΡΠΎ ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π½ Π·Π½Π°ΠΊ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ, ΠΈ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½ΠΈΠ΅ ΡΠΎΡΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ;
3 — ΠΊΠΎΠ½Π΅ΡΠ½ΠΎΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π΅ Π²ΡΠ΄Π΅Π»Π΅Π½ΠΈΡ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠΉ 16-ΡΠΈΡΠ½ΠΎΠΉ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ;
4 — ΠΊΠΎΠ½Π΅ΡΠ½ΠΎΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π΅ ΠΎΡΠΈΠ±ΠΊΠ΅ ΠΏΡΠΈ Π²ΡΠ΄Π΅Π»Π΅Π½ΠΈΠΈ 16-ΡΠΈΡΠ½ΠΎΠΉ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ.
2.3.3 ΠΠ²ΡΠΎΠΌΠ°Ρ Π΄Π»Ρ ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π²Π°Π½ΠΈΡ ΡΠΈΠΌΡΠΊΠΈΡ ΠΊΠΎΠ½ΡΡΠ°Π½Ρ
Π ΠΈΠΌΡΠΊΠΈΠ΅ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ ΠΎΠ±ΡΠ°Π·ΡΡΡΡΡ ΠΏΠΎ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΏΡΠ°Π²ΠΈΠ»Π°ΠΌ:
Π ΠΈΠΌΡΠΊΠ°Ρ ΡΠΈΡΡΠ΅ΠΌΠ° Π½ΡΠΌΠ΅ΡΠ°ΡΠΈΠΈ ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· ΡΠ΅ΠΌΠΈ Π·Π½Π°ΠΊΠΎΠ²: I — 1, V — 5, X — 10, C — 100, D — 500, M — 1000. Π Π΄Π°Π½Π½ΠΎΠΉ ΡΠ°Π±ΠΎΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΡΠΈ ΠΏΠ΅ΡΠ²ΡΡ Π·Π½Π°ΠΊΠ°, Ρ. Π΅. Π°Π²ΡΠΎΠΌΠ°Ρ ΠΌΠΎΠΆΠ΅Ρ ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π²Π°ΡΡ ΡΠΈΡΠ»Π° ΠΎΡ 1 (I) Π΄ΠΎ 39 (XXXIX).
ΠΡΠ»ΠΈ ΠΌΠ΅Π½ΡΡΠΈΠΉ Π·Π½Π°ΠΊ ΠΏΠΈΡΠ΅ΡΡΡ ΠΏΠΎΡΠ»Π΅ Π±ΠΎΠ»ΡΡΠ΅Π³ΠΎ, ΡΠΎ Π΅Π³ΠΎ ΠΏΡΠΈΠ±Π°Π²Π»ΡΡΡ ΠΊ Π±ΠΎΠ»ΡΡΠ΅ΠΌΡ ΡΠΈΡΠ»Ρ; Π΅ΡΠ»ΠΈ ΠΆΠ΅ ΠΏΠ΅ΡΠ΅Π΄ Π±ΠΎΠ»ΡΡΠΈΠΌ — Π²ΡΡΠΈΡΠ°ΡΡ. ΠΡΡΠΈΡΠ°ΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ»ΡΠΊΠΎ ΡΠΈΡΠ»Π°, Π½Π°ΡΠΈΠ½Π°ΡΡΠΈΠ΅ΡΡ Ρ 1, Π² Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ — 1, Ρ. ΠΊ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ ΡΠΌΡΡΠ»Π° Π²ΡΡΠΈΡΠ°ΡΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, 5 ΠΈΠ· 5 (Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ 0) ΠΈΠ»ΠΈ ΠΈΠ· 10 (Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ 5).
ΠΠ½Π°ΠΊΠΈ, ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ½ΡΠ΅ ΡΠΈΡΠ»Π°ΠΌ, Π½Π°ΡΠΈΠ½Π°ΡΡΠΈΠΌΡΡ Ρ 1 (1, 10, 100, 1000), ΠΌΠΎΠ³ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΠΎΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π΄ΠΎ 3 ΡΠ°Π·. ΠΠ½Π°ΠΊΠΈ, ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ½ΡΠ΅ ΡΠΈΡΠ»Π°ΠΌ, Π½Π°ΡΠΈΠ½Π°ΡΡΠΈΠΌΡΡ Ρ 5 (5, 50, 500) ΠΌΠΎΠ³ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ 1 ΡΠ°Π·. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΡΡΠΎΠ±Ρ ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°ΡΡ ΡΠΈΡΠ»ΠΎ 4, Π½ΡΠΆΠ½ΠΎ ΠΈΠ· 5 Π²ΡΡΠ΅ΡΡΡ 1 (IV), Π° ΡΡΠΎΠ±Ρ ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°ΡΡ ΡΠΈΡΠ»ΠΎ 6, Π½ΡΠΆΠ½ΠΎ ΠΏΡΠΈΠ±Π°Π²ΠΈΡΡ 1 ΠΊ 5 (VI).
Π ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ Ρ ΠΏΡΠΈΠ²Π΅Π΄ΡΠ½Π½ΡΠΌΠΈ ΠΏΡΠ°Π²ΠΈΠ»Π°ΠΌΠΈ, ΡΡΠΎΡΠΌΠΈΡΡΠ΅ΠΌ ΡΡΠ΄ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠΉ Π΄Π»Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠ°-ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π²Π°ΡΠ΅Π»Ρ:
Π‘ΠΈΠΌΠ²ΠΎΠ» X ΠΌΠΎΠΆΠ΅Ρ Π²ΡΡΡΠ΅ΡΠ°ΡΡΡΡ Π² Π½Π°ΡΠ°Π»Π΅ ΡΡΡΠΎΠΊΠΈ ΠΎΡ 1 Π΄ΠΎ 3 ΡΠ°Π· ΠΏΠΎΠ΄ΡΡΠ΄ (ΡΠΌ. ΠΏΡΠ°Π²ΠΈΠ»ΠΎ 3).
Π‘ΠΈΠΌΠ²ΠΎΠ» V ΠΌΠΎΠΆΠ΅Ρ Π²ΡΡΡΠ΅ΡΠ°ΡΡΡΡ Π½Π΅ Π±ΠΎΠ»Π΅Π΅ 1 ΡΠ°Π·Π° Π² Π½Π°ΡΠ°Π»Π΅ ΡΡΡΠΎΠΊΠΈ ΠΈ ΠΏΠΎΡΠ»Π΅ 1 ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² X (ΡΠΌ. ΠΏΡΠ°Π²ΠΈΠ»ΠΎ 3).
Π‘ΠΈΠΌΠ²ΠΎΠ» I ΠΌΠΎΠΆΠ΅Ρ Π²ΡΡΡΠ΅ΡΠ°ΡΡΡΡ ΠΎΡ 1 Π΄ΠΎ 3 ΡΠ°Π· ΠΏΠΎΠ΄ΡΡΠ΄ Π² Π½Π°ΡΠ°Π»Π΅ ΡΡΡΠΎΠΊΠΈ, Π° ΡΠ°ΠΊΠΆΠ΅ Π² ΠΊΠΎΠ½ΡΠ΅ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ, ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½Π½ΠΎΠΉ ΡΠΈΠΌΠ²ΠΎΠ»Π°ΠΌΠΈ X ΠΈ V (ΡΠΌ. ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ 1 ΠΈ 2, ΠΏΡΠ°Π²ΠΈΠ»ΠΎ 3).
Π‘ΠΈΠΌΠ²ΠΎΠ» X ΠΌΠΎΠΆΠ΅Ρ Π²ΡΡΡΠ΅ΡΠ°ΡΡΡΡ Π² ΠΊΠΎΠ½ΡΠ΅ ΡΡΡΠΎΠΊΠΈ 1 ΡΠ°Π· ΠΏΠΎΡΠ»Π΅ ΡΠΈΠΌΠ²ΠΎΠ»Π° I, Π΅ΡΠ»ΠΈ ΠΏΠ΅ΡΠ΅Π΄ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΌ Π½Π°Ρ ΠΎΠ΄ΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΠΈΠΌΠ²ΠΎΠ»Ρ X ΠΈΠ»ΠΈ Π½ΠΈΡΠ΅Π³ΠΎ (ΠΈΠ½Π°ΡΠ΅ Π±ΡΠ΄Π΅Ρ Π½Π°ΡΡΡΠ΅Π½ΠΎ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ 2 — Π½Π΅ΠΈΠ·Π²Π΅ΡΡΠ½ΠΎ, ΠΊ ΠΊΠ°ΠΊΠΎΠΌΡ ΡΠΈΠΌΠ²ΠΎΠ»Ρ Π±ΡΠ΄Π΅Ρ ΠΎΡΠ½ΠΎΡΠΈΡΡΡΡ ΡΠΈΠΌΠ²ΠΎΠ» I).
Π‘ΠΈΠΌΠ²ΠΎΠ» V ΠΌΠΎΠΆΠ΅Ρ Π²ΡΡΡΠ΅ΡΠ°ΡΡΡΡ Π² ΠΊΠΎΠ½ΡΠ΅ ΡΡΡΠΎΠΊΠΈ 1 ΡΠ°Π· ΠΏΠΎΡΠ»Π΅ ΡΠΈΠΌΠ²ΠΎΠ»Π° I, Π΅ΡΠ»ΠΈ ΠΏΠ΅ΡΠ΅Π΄ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΌ Π½Π°Ρ ΠΎΠ΄ΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΠΈΠΌΠ²ΠΎΠ»Ρ X (Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ 4).
ΡΠΈΡ. 4. ΠΠ²ΡΠΎΠΌΠ°Ρ Π΄Π»Ρ ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π²Π°Π½ΠΈΡ ΡΠΈΠΌΡΠΊΠΈΡ ΠΊΠΎΠ½ΡΡΠ°Π½Ρ
Π‘ΠΎΡΡΠΎΡΠ½ΠΈΡ Π°Π²ΡΠΎΠΌΠ°ΡΠ°:
S — Π½Π°ΡΠ°Π»ΡΠ½ΠΎΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅;
Sg — ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΎΡΠ½ΠΎΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π΅ ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π²Π°Π½ΠΈΡ Π·Π½Π°ΠΊΠ° ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ.
1 — ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΎΡΠ½ΠΎΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π΅ ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π²Π°Π½ΠΈΡ ΡΠΈΠΌΠ²ΠΎΠ»Π° X.
2 — ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΎΡΠ½ΠΎΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π΅ ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π²Π°Π½ΠΈΡ ΡΠΈΠΌΠ²ΠΎΠ»Π° V.
3 — ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΎΡΠ½ΠΎΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π΅ ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π²Π°Π½ΠΈΡ ΡΠΈΠΌΠ²ΠΎΠ»Π° I.
4 — ΠΊΠΎΠ½Π΅ΡΠ½ΠΎΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π΅ ΠΎΡΠΈΠ±ΠΊΠ΅ ΠΏΡ. Π²ΡΠ΄Π΅Π»Π΅Π½ΠΈΠΈ ΡΠΈΠΌΡΠΊΠΎΠΉ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ.
5 — ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΎΡΠ½ΠΎΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π΅ ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π²Π°Π½ΠΈΡ ΡΡΡΠΎΠΊΠΈ XX.
6 — ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΎΡΠ½ΠΎΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π΅ ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π²Π°Π½ΠΈΡ ΡΡΡΠΎΠΊΠΈ XXX.
7 — ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΎΡΠ½ΠΎΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π΅ ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π²Π°Π½ΠΈΡ ΡΠΈΠΌΠ²ΠΎΠ»Π° I ΠΏΠΎΡΠ»Π΅ V, XV, XXV ΠΈΠ»ΠΈ XXXV.
8 — ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΎΡΠ½ΠΎΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π΅ ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π²Π°Π½ΠΈΡ ΡΠΈΠΌΠ²ΠΎΠ»Π° X ΠΏΠΎΡΠ»Π΅ I, XI, XXI ΠΈΠ»ΠΈ XXXI.
9 — ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΎΡΠ½ΠΎΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π΅ ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π²Π°Π½ΠΈΡ ΡΠΈΠΌΠ²ΠΎΠ»Π° V ΠΏΠΎΡΠ»Π΅ I, XI, XXI ΠΈΠ»ΠΈ XXXI.
10 — ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΎΡΠ½ΠΎΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π΅ ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π²Π°Π½ΠΈΡ ΡΠΈΠΌΠ²ΠΎΠ»Π° I ΠΏΠΎΡΠ»Π΅ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ, Π·Π°ΠΊΠ°Π½ΡΠΈΠ²Π°ΡΡΠ΅ΠΉΡΡ Π½Π° I.
11 — ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΎΡΠ½ΠΎΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π΅ ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π²Π°Π½ΠΈΡ ΡΠΈΠΌΠ²ΠΎΠ»Π° I ΠΏΠΎΡΠ»Π΅ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ, Π·Π°ΠΊΠ°Π½ΡΠΈΠ²Π°ΡΡΠ΅ΠΉΡΡ Π½Π° II.
Π ΠΊΠΎΠ½Π΅ΡΠ½ΠΎΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ Π°Π²ΡΠΎΠΌΠ°ΡΠ°, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π΅ ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π²Π°Π½ΠΈΡ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠΉ ΡΠΈΠΌΡΠΊΠΎΠΉ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅ΠΉΡΠΈ ΠΈΠ· Π»ΡΠ±ΠΎΠ³ΠΎ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ, ΠΊΡΠΎΠΌΠ΅ Sg ΠΈ 4, ΠΊΠ°ΠΊ ΡΠΎΠ»ΡΠΊΠΎ Π½Π°ΡΡΡΠΏΠΈΡ ΠΊΠΎΠ½Π΅Ρ Π»Π΅ΠΊΡΠ΅ΠΌΡ.
2.3.4 ΠΠ±ΡΠ΅Π΄ΠΈΠ½ΡΠ½Π½ΡΠΉ Π°Π²ΡΠΎΠΌΠ°Ρ
ΠΠ±ΡΠ΅Π΄ΠΈΠ½ΡΠ½Π½ΡΠΉ Π°Π²ΡΠΎΠΌΠ°Ρ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ΠΌ ΠΏΡΠΈΠ²Π΅Π΄ΡΠ½Π½ΡΡ Π²ΡΡΠ΅ Π°Π²ΡΠΎΠΌΠ°ΡΠΎΠ² ΠΏΡΠΈ ΠΎΠ±ΡΠ΅ΠΌ Π½Π°ΡΠ°Π»ΡΠ½ΠΎΠΌ ΡΠΎΡΡΠΎΡΠ½ΠΈΠΈ S. ΠΡΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ ΠΈ Π²Ρ ΠΎΠ΄Π½ΡΠ΅ ΡΠΈΠ³Π½Π°Π»Ρ ΠΎΡΡΠ°Π½ΡΡΡΡ ΡΠ΅ΠΌΠΈ ΠΆΠ΅.
2.4 Π Π°Π·ΡΠ°Π±ΠΎΡΠΊΠ° Π°Π»Π³ΠΎΡΠΈΡΠΌΠ° ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π»Π΅ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π°
ΠΠ΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ Π»Π΅ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π°Π½Π°Π»ΠΈΠ· ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ 2 ΡΡΠ°ΠΏΠ°: Π²ΡΠ΄Π΅Π»Π΅Π½ΠΈΠ΅ Π»Π΅ΠΊΡΠ΅ΠΌ ΠΈ ΠΈΡ ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π²Π°Π½ΠΈΠ΅. ΠΠ° ΡΠΊΡΠ°Π½ Π²ΡΠ²ΠΎΠ΄ΡΡΡΡ ΡΠ°Π±Π»ΠΈΡΡ ΠΊΠΎΠ½ΡΡΠ°Π½Ρ, ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΎΠ², ΡΠ΅ΡΠΌΠΈΠ½Π°Π»ΡΠ½ΡΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² ΠΈ ΠΊΠΎΠ΄ΠΎΠ² Π»Π΅ΠΊΡΠ΅ΠΌ. ΠΡΠ΅ ΡΠ°Π±Π»ΠΈΡΡ ΡΠΎΡ ΡΠ°Π½ΡΡΡΡΡ Π² ΡΠ°ΠΉΠ»Ρ Π½Π° Π΄ΠΈΡΠΊΠ΅.
ΠΠΎΡΠ»Π΅ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ Π»Π΅ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π° ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠΌ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π°Π½Π°Π»ΠΈΠ·.
2.4.1 ΠΡΠ΄Π΅Π»Π΅Π½ΠΈΠ΅ Π»Π΅ΠΊΡΠ΅ΠΌ
ΠΡΠΎΡΠ΅ΡΡ Π²ΡΠ΄Π΅Π»Π΅Π½ΠΈΡ Π»Π΅ΠΊΡΠ΅ΠΌ ΡΠΎΡΡΠΎΠΈΡ Π² ΠΏΡΠΎΡΠΌΠΎΡΡΠ΅ Π²Ρ ΠΎΠ΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡ ΡΠΈΠΌΠ²ΠΎΠ»Ρ ΠΈ Π² ΡΠ»ΡΡΠ°Π΅ ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½ΠΈΡ ΡΠΈΠΌΠ²ΠΎΠ»Π°-ΡΠ°Π·Π΄Π΅Π»ΠΈΡΠ΅Π»Ρ ΡΠΎΡΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π»Π΅ΠΊΡΠ΅ΠΌΡ. Π‘ΠΈΠΌΠ²ΠΎΠ»Π°ΠΌΠΈ ΡΠ°Π·Π΄Π΅Π»ΠΈΡΠ΅Π»ΡΠΌΠΈ ΡΠ²Π»ΡΡΡΡΡ ΠΊΠ°ΠΊ ΡΠ°ΠΌΠΈ ΡΠ°Π·Π΄Π΅Π»ΠΈΡΠ΅Π»ΠΈ (ΡΠ΅ΡΠΌΠΈΠ½Π°Π»ΡΠ½ΡΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»Ρ) ΡΠ°ΠΊ ΠΈ Π·Π½Π°ΠΊΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ. Π ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ ΠΏΡΠ΅Π΄ΡΡΠΌΠΎΡΡΠ΅Π½Ρ Π΄Π²ΠΎΠΉΠ½ΡΠ΅ Π·Π½Π°ΠΊΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ (`: =').
ΠΡΠΈ ΡΡΠ΅Π½ΠΈΠΈ ΠΎΡΠ΅ΡΠ΅Π΄Π½ΠΎΠ³ΠΎ ΡΠΈΠΌΠ²ΠΎΠ»Π° ΡΠ½Π°ΡΠ°Π»Π° ΠΏΡΠΎΠ²Π΅ΡΡΠ΅ΡΡΡ, ΡΠ²Π»ΡΠ΅ΡΡΡ Π»ΠΈ ΠΎΠ½ ΡΠ°Π·Π΄Π΅Π»ΠΈΡΠ΅Π»Π΅ΠΌ. ΠΡΠ»ΠΈ ΡΡΠΎ Π½Π΅ ΡΠ°ΠΊ, ΡΠΎ ΡΠ°Π·Π΄Π΅Π»ΠΈΡΠ΅Π»Ρ ΡΡΠΈΡΠ°Π΅ΡΡΡ ΡΠ°ΡΡΡΡ ΡΠ΅ΠΊΡΡΠ΅ΠΉ Π»Π΅ΠΊΡΠ΅ΠΌΡ ΠΈ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅ΡΡΡ ΠΏΡΠΎΡΠ΅ΡΡ Π΅Π΅ ΡΠΎΡΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ. ΠΡΠ»ΠΈ ΡΡΠΎ ΡΠ°ΠΊ, ΡΠΎ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅ΡΡΡ Π²Π°ΡΠΈΠ°Π½Ρ Π΄Π²ΠΎΠΉΠ½ΠΎΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΠΈ ΡΠ°Π±ΠΎΡΠ° Π·Π°ΠΊΠ°Π½ΡΠΈΠ²Π°Π΅ΡΡΡ. ΠΡΠ»ΠΈ ΡΡΠΎ Π½Π΅ Π΄Π²ΠΎΠΉΠ½Π°Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ, ΡΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π·Π°ΠΏΠΈΡΡ ΡΠ°Π·Π΄Π΅Π»ΠΈΡΠ΅Π»Ρ, ΠΊΠ°ΠΊ Π»Π΅ΠΊΡΠ΅ΠΌΡ.
Π’Π°ΠΊΠ°Ρ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ ΠΏΠΎΠ²ΡΠΎΡΡΠ΅ΡΡΡ Π΄ΠΎ ΠΎΠΊΠΎΠ½ΡΠ°Π½ΠΈΡ Π²Ρ ΠΎΠ΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ. ΠΡΠΎΡΠ΅ΡΡ Π²ΡΠ΄Π΅Π»Π΅Π½ΠΈΡ Π»Π΅ΠΊΡΠ΅ΠΌ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Π² ΡΡΠ½ΠΊΡΠΈΠΈ Select_Lex, ΠΊΠΎΡΠΎΡΠ°Ρ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΡΡΠΎΠΊΠΈ, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠ΅ Π²ΡΠ΄Π΅Π»Π΅Π½Π½ΡΠ΅ Π»Π΅ΠΊΡΠ΅ΠΌΡ.
2.4.2 Π Π°ΡΠΏΠΎΠ·Π½Π°Π²Π°Π½ΠΈΠ΅ Π»Π΅ΠΊΡΠ΅ΠΌ
ΠΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ ΡΠΈΠΏ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π»Π΅ΠΊΡΠ΅ΠΌΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΡ ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π²Π°ΡΠ΅Π»Π΅ΠΉ. ΠΠ°ΠΆΠ΄Π°Ρ Π»Π΅ΠΊΡΠ΅ΠΌΠ° Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΡΡΡ Π² ΡΠ°Π±Π»ΠΈΡΡ ΠΊΠΎΠ΄ΠΎΠ² Π»Π΅ΠΊΡΠ΅ΠΌ ΠΈ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΡΡ ΡΠΈΠΏΡ ΡΠ°Π±Π»ΠΈΡΡ (ΠΊΠΎΠ½ΡΡΠ°Π½Ρ, ΠΈΠΌΠ΅Π½, ΡΠ΅ΡΠΌΠΈΠ½Π°Π»ΡΠ½ΡΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ²). ΠΡΠ»ΠΈ Π»Π΅ΠΊΡΠ΅ΠΌΠ° ΠΎΡΠΈΠ±ΠΎΡΠ½Π° (Ρ.Π΅. Π½Π΅ ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ Π½ΠΈ ΠΎΠ΄Π½ΠΎΠΌΡ ΠΈΠ· Π²ΡΡΠ΅Π½Π°Π·Π²Π°Π½Π½ΡΡ ΡΠΈΠΏΠΎΠ²), ΡΠΎ Π² ΡΠ°Π±Π»ΠΈΡΠ΅ ΠΊΠΎΠ΄ΠΎΠ² Π»Π΅ΠΊΡΠ΅ΠΌ Π΅ΠΉ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π΅ΡΡΡ ΡΠΈΠΏ Π, ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ°ΡΡΠΈΠΉ ΠΎΡΠΈΠ±ΠΊΡ.
ΠΠ°ΠΆΠ΄Π°Ρ ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ° ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π²Π°Π½ΠΈΡ, ΠΊΡΠΎΠΌΠ΅ ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π²Π°ΡΠ΅Π»Ρ ΡΠ΅ΡΠΌΠΈΠ½Π°Π»ΡΠ½ΡΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ², ΠΏΠΎΡΡΡΠΎΠ΅Π½Π° ΠΊΠ°ΠΊ ΠΊΠΎΠ½Π΅ΡΠ½ΡΠΉ Π°Π²ΡΠΎΠΌΠ°Ρ. ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΡΠ°ΠΌΠΈΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΎΠ² ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ΠΎ Π²ΡΡΠ΅. Π ΠΏΠ»Π°Π½Π΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠΉ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ°ΠΊΠΎΠΉ ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π²Π°ΡΠ΅Π»Ρ ΠΈΠΌΠ΅Π΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ:
ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ°, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡΠ°Ρ Π½Π°ΡΠ°Π»ΡΠ½ΠΎΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ (ΠΎΠ±ΡΡΠ½ΠΎ 0);
ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΡΠΎΡΡΠΎΡΠ½ΠΈΠΉ, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΡ ΡΠ΄Π°ΡΠ½ΠΎΠΌΡ ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π²Π°Π½ΠΈΡ Π»Π΅ΠΊΡΠ΅ΠΌΡ;
ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΡΠΎΡΡΠΎΡΠ½ΠΈΠΉ, ΡΠ²ΠΈΠ΄Π΅ΡΠ΅Π»ΡΡΡΠ²ΡΡΡΠΈΡ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ΅ Π² Π»Π΅ΠΊΡΠ΅ΠΌΠ΅;
Π Π°ΡΠΏΠΎΠ·Π½Π°Π²Π°ΡΠ΅Π»Π΅ΠΌ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΎΠ² ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ Ident, 16-ΡΠΈΡΠ½ΡΡ ΠΊΠΎΠ½ΡΡΠ°Π½Ρ — ΡΡΠ½ΠΊΡΠΈΡ FConst, ΡΠΈΠΌΡΠΊΠΈΡ ΠΊΠΎΠ½ΡΡΠ°Π½Ρ — ΡΡΠ½ΠΊΡΠΈΡ Rome. ΠΡΠ΅ ΠΎΠ½ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ 1, Π΅ΡΠ»ΠΈ Π»Π΅ΠΊΡΠ΅ΠΌΠ° ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π½Π° ΠΈ — 1 Π² ΠΏΡΠΎΡΠΈΠ²Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅. Π Π°ΡΠΏΠΎΠ·Π½Π°Π²Π°ΡΠ΅Π»Π΅ΠΌ ΡΠ΅ΡΠΌΠΈΠ½Π°Π»ΡΠ½ΡΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ Termin. ΠΠ½Π° Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ 3, Π΅ΡΠ»ΠΈ Π»Π΅ΠΊΡΠ΅ΠΌΠ° — ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ, 1 — Π΅ΡΠ»ΠΈ ΡΠ°Π·Π΄Π΅Π»ΠΈΡΠ΅Π»Ρ, 2 — Π΅ΡΠ»ΠΈ Π·Π½Π°ΠΊ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ. ΠΡΠ»ΠΈ Π»Π΅ΠΊΡΠ΅ΠΌΠ° Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ΅ΡΠΌΠΈΠ½Π°Π»ΡΠ½ΡΠΌ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠΌ, ΡΠΎ ΡΡΠ½ΠΊΡΠΈΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ — 1. ΠΡΠ»ΠΈ Π»Π΅ΠΊΡΠ΅ΠΌΠ° ΠΎΡΠΈΠ±ΠΎΡΠ½Π°, ΡΠΎ ΠΎΠ½Π° Π·Π°Π½ΠΎΡΠΈΡΡΡ Π² ΡΠ°Π±Π»ΠΈΡΡ ΠΊΠΎΠ΄ΠΎΠ² Π»Π΅ΠΊΡΠ΅ΠΌ Ρ ΡΠΈΠΏΠΎΠΌ E ΠΈ Π²ΡΠ΄Π°ΡΡΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ΅ (ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ° Err_Lex). ΠΡΠ΅ ΡΡΠΈ ΠΏΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π²ΡΠ·ΡΠ²Π°ΡΡΡΡ ΠΈΠ· ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ TForm1. N5Click (ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ Π²ΡΠ±ΠΎΡΡ ΠΏΡΠ½ΠΊΡΠ° ΠΌΠ΅Π½Ρ ΠΠ½Π°Π»ΠΈΠ·Π°ΡΠΎΡ/ΠΠ΅ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΉ). Π Π½Π΅ΠΉ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡ ΠΎΠ±Π½ΡΠ»Π΅Π½ΠΈΠ΅ Π²ΡΠ΅Ρ ΡΠ°Π±Π»ΠΈΡ, Π²ΡΠ·ΠΎΠ² ΡΡΠ½ΠΊΡΠΈΠΈ Π²ΡΠ΄Π΅Π»Π΅Π½ΠΈΡ Π»Π΅ΠΊΡΠ΅ΠΌ ΠΈ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ WriteLex (ΡΠΌ. Π½ΠΈΠΆΠ΅).
ΠΠΎΠΈΡΠΊ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΎΠ², ΠΊΠΎΠ½ΡΡΠ°Π½Ρ ΠΈ ΡΠ΅ΡΠΌΠΈΠ½Π°Π»ΡΠ½ΡΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΡ ΡΠ°Π±Π»ΠΈΡΠ°Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡ, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ, ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ°ΠΌΠΈ Search_Ident, Search_Const ΠΈ Search_Term, Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π² ΡΠ°Π±Π»ΠΈΡΡ — ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ°ΠΌΠΈ Add_Ident, Add_Const ΠΈ Add_Term. ΠΡΠ΅ ΠΎΠ½ΠΈ Π²ΡΠ·ΡΠ²Π°ΡΡΡΡ ΠΈΠ· ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ WriteLex, Π²Ρ ΠΎΠ΄Π½ΡΠΌΠΈ Π΄Π°Π½Π½ΡΠΌΠΈ Π΄Π»Ρ ΠΊΠΎΡΠΎΡΠΎΠΉ ΡΠ²Π»ΡΡΡΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π²Π°Π½ΠΈΡ Π»Π΅ΠΊΡΠ΅ΠΌ, Ρ. Π΅. ΡΠΈΠΏΡ Π»Π΅ΠΊΡΠ΅ΠΌ. ΠΠ°ΠΏΠΈΡΡ Π² ΡΠ°Π±Π»ΠΈΡΡ ΠΊΠΎΠ΄ΠΎΠ² Π»Π΅ΠΊΡΠ΅ΠΌ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡ ΠΏΡΠΎΡΠ΅Π΄ΡΡΠΎΠΉ WriteCode, Π²ΡΠ²ΠΎΠ΄ Π²ΡΠ΅Ρ ΡΠ°Π±Π»ΠΈΡ Π½Π° ΡΠΊΡΠ°Π½ — ΠΏΡΠΎΡΠ΅Π΄ΡΡΠΎΠΉ vyvod.
ΠΠ΅ΡΠ΅Π²ΠΎΠ΄ ΠΊΠΎΠ½ΡΡΠ°Π½Ρ Π² Π΄Π΅ΡΡΡΠΈΡΠ½ΡΡ ΡΠΎΡΠΌΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡ ΠΏΡΠΎΡΠ΅Π΄ΡΡΠΎΠΉ perevod.
2.4.3 Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π»Π΅ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΠ°
ΠΡΠΈΠ²Π΅Π΄ΡΠΌ ΡΠ΅ΠΊΡΡ ΠΏΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π»Π΅ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΠ°:
// ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ° ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄Π° ΠΊΠΎΠ½ΡΡΠ°Π½Ρ Π² Π΄Π΅ΡΡΡΠΈΡΠ½ΡΡ ΡΠΎΡΠΌΡ
procedure perevod (SS: string; var Str16: string);
var ch3, ch4,ch, i: integer;
zn: string;
begin
ch: =0; // Π΄Π»Ρ ΡΠΈΠΌΡΠΊΠΈΡ ΠΊΠΎΠ½ΡΡΠ°Π½Ρ
if (SS ='X') or (SS ='V') or (SS ='I') then
begin
zn: =SS ;
delete (SS, 1,1);
while Length (SS) <>0 do
begin
if SS ='X' then begin ch: =ch+10; delete (SS, 1,1); end
else begin
if SS ='V'then begin ch: =ch+5; delete (SS, 1,1); end
else begin
if ((SS ='I') and (SS ='I')) or ((SS ='I') and (SS ='')) then begin ch: =ch+1; delete (SS, 1,1); end
else begin
if (SS ='I') and (SS ='X') then begin ch: =ch+9; delete (SS, 1,2); end
else begin
if (SS ='I') and (SS ='V') then begin ch: =ch+4; delete (SS, 1,2); end;
end; end; end; end; end;
str16: =zn+IntToStr (ch);
exit;
end;
// Π΄Π»Ρ 16-ΡΠΈΡ. ΠΊΠΎΠ½ΡΡΠ°Π½Ρ
If SS in ['0'. '9']
then
ch3: =StrToInt (SS [3]) *16
else
if SS in ['A'. 'F']
then
begin
ch3: =ord (SS [3]);
case ch3 of
65: ch3: =10*16;
66: ch3: =11*16;
67: ch3: =12*16;
68: ch3: =13*16;
69: ch3: =14*16;
70: ch3: =15*16;
end;
end;
If SS in ['0'. '9']
then
ch4: =StrToInt (SS [4])
else
if SS in ['A'. 'F']
then
begin
ch4: =ord (SS [4]);
case ch4 of
65: ch4: =10;
66: ch4: =11;
67: ch4: =12;
68: ch4: =13;
69: ch4: =14;
70: ch4: =15;
end;
end;
ch: =ch3+ch4;
If (SS ='0') and (SS ='0')
then Str16: =IntToStr (ch)
else Str16: =SS +IntToStr (ch);
end;
procedure TForm1. N3Click (Sender: TObject);
begin
close;
end;
function Select_Lex (S: string; {ΠΈΡΡ . ΡΡΡΠΎΠΊΠ°} var Rez: string; {Π»Π΅ΠΊΡΠ΅ΠΌΠ°}N: integer {ΡΠ΅ΠΊΡΡΠ°Ρ ΠΏΠΎΠ·ΠΈΡΠΈΡ}): integer;
label 1;
begin // ΡΡΠ½ΠΊΡΠΈΡ Π²ΡΠ±ΠΎΡΠ° ΡΠ»ΠΎΠ² ΠΈΠ· ΡΡΡΠΎΠΊΠΈ
k: = Length (S);
Rez: ='';
i: =N; // ΡΠΎΡΠΊΠ° ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½ΠΈΡ Π² ΡΡΡΠΎΠΊΠ΅
while (S [i] =' ') and (i<= k) do i: =i+1; // ΠΏΡΠΎΠΏΡΡΠΊ ' '
while not (S [i] in deleter) and (i<= k) do // Π½Π°ΠΊΠΎΠΏΠ»Π΅Π½ΠΈΠ΅ Π»Π΅ΠΊΡΠ΅ΠΌΡ
begin
if s [i] ='$' then
begin
Rez: =s [i] +s [i+1] ;
i: =i+2;
end
else begin
1: Rez: =Rez+s [i] ;
i: =i+1;
end;
end;
if Rez='' then
begin
if (s [i] =': ') then
begin
if (s [i+1] ='=') then // Π² ΡΠ»ΡΡΠ°Π΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΠΈΠ· Π΄Π²ΡΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ²
begin
Rez: =s [i] +s [i+1] ;
Select_Lex: =i+2;
end
else
begin
Rez: =s [i] ;
Select_Lex: =i+1;
end;
end else
begin
if ((s [i] ='+') or (s [i] ='-')) and (s [i-1] =' (')
then begin
Rez: =s [i] +s [i+1] ;
i: =i+2;
goto 1;
end
else begin
Rez: =s [i] ;
Select_Lex: =i+1;
end; end;
end else Select_Lex: =i;
end;
procedure Add_Const (Curr_term: integer; str_lex: string); // ΠΡΠΎΡΠ΅Π΄ΡΡΠ° Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΎΠ² Π² Π΄Π΅ΡΠ΅Π²ΠΎ
begin
if NumConst=1 then // ΠΡΠ»ΠΈ ΠΊΠΎΡΠ΅Π½Ρ Π΄Π΅ΡΠ΅Π²Π° Π΅ΡΠ΅ Π½Π΅ ΡΠΎΠ·Π΄Π°Π½, ΡΠΎ ΡΠΎΠ·Π΄Π°Π΅ΠΌ Π΅Π³ΠΎ.
begin
perevod (str_lex, str16);
Const_tab [NumConst]. value: =str_lex;
Const_tab [NumConst]. nomer: =NumConst;
Const_tab [NumConst]. Val10: =str16;
Const_tab [NumConst]. Left: =0;
Const_tab [NumConst]. Right: =0;
Const_tab [NumConst]. Way: ='V';
Exit;
end;
if (CompareStr (Const_tab [Curr_term]. value, str_lex) >0) then // ΠΡΠ»ΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ ΡΠ·Π»Π° Π΄Π΅ΡΠ΅Π²Π° Π±ΠΎΠ»ΡΡΠ΅ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌΠΎΠ³ΠΎ
if Const_tab [Curr_term]. Left=0 then // Π΅ΡΠ»ΠΈ Ρ ΡΡΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° Π΄Π΅ΡΠ΅Π²Π° Π½Π΅Ρ Π»Π΅Π²ΠΎΠ³ΠΎ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ, ΡΠΎ
begin
perevod (str_lex, str16);
Const_tab [Curr_term]. Left: =NumConst; // Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π»Π΅Π²ΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°.
Const_tab [NumConst]. value: =str_lex;
Const_tab [NumConst]. nomer: =NumConst;
Const_tab [NumConst]. Val10: =str16;
Const_tab [NumConst]. Left: =0;
Const_tab [NumConst]. Right: =0;
Const_tab [NumConst]. Way: =Const_tab [NumConst]. Way+'L';
end else begin
Const_tab [NumConst]. Way: =Const_tab [NumConst]. Way+'L';
Add_Const (Const_tab [Curr_term]. Left, str_lex); // ΠΡΠ»ΠΈ Π»Π΅Π²ΡΠΉ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ, ΡΠΎ Π²ΡΠ·ΡΠ²Π°Π΅ΠΌ ΡΠΆΠ΅ ΡΡΠ½ΠΊΡΠΈΡ Π΄Π»Ρ Π»Π΅Π²ΠΎΠ³ΠΎ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ.
end;
if (CompareStr (Const_tab [Curr_term]. value, str_lex) <0) then // Π΅ΡΠ»ΠΈ Ρ ΡΡΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° Π΄Π΅ΡΠ΅Π²Π° Π½Π΅Ρ ΠΏΡΠ°Π²ΠΎΠ³ΠΎ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ, ΡΠΎ
if Const_tab [Curr_term]. Right=0 then
begin
perevod (str_lex, str16);
Const_tab [Curr_term]. Right: =NumConst; // Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ ΠΏΡΠ°Π²ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ.
Const_tab [NumConst]. value: =str_lex;
Const_tab [NumConst]. nomer: =NumConst;
Const_tab [NumConst]. Val10: =str16;
Const_tab [NumConst]. Left: =0;
Const_tab [NumConst]. Right: =0;
Const_tab [NumConst]. Way: =Const_tab [NumConst]. Way+'R';
end else begin
Const_tab [NumConst]. Way: =Const_tab [NumConst]. Way+'R';
Add_Const (Const_tab [Curr_term]. Right, str_lex); // ΠΡΠ»ΠΈ ΠΏΡΠ°Π²ΡΠΉ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ, ΡΠΎ Π²ΡΠ·ΡΠ²Π°Π΅ΠΌ ΡΠΆΠ΅ ΡΡΠ½ΠΊΡΠΈΡ Π΄Π»Ρ ΠΏΡΠ°Π²ΠΎΠ³ΠΎ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ.
end;
end;
procedure Add_Term (Curr_term: integer; str_lex: string); // ΠΡΠΎΡΠ΅Π΄ΡΡΠ° Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΎΠ² Π² Π΄Π΅ΡΠ΅Π²ΠΎ
begin
if NumTerm=1 then // ΠΡΠ»ΠΈ ΠΊΠΎΡΠ΅Π½Ρ Π΄Π΅ΡΠ΅Π²Π° Π΅ΡΠ΅ Π½Π΅ ΡΠΎΠ·Π΄Π°Π½, ΡΠΎ ΡΠΎΠ·Π΄Π°Π΅ΠΌ Π΅Π³ΠΎ.
begin
Term_tab [NumTerm]. lex: =str_lex;
Term_tab [NumTerm]. nomer: =NumTerm;
Term_tab [NumTerm]. Left: =0;
Term_tab [NumTerm]. Right: =0;
Term_tab [NumTerm]. Way: ='V';
Exit;
end;
if (CompareStr (Term_tab [Curr_term]. lex, str_lex) >0) then // ΠΡΠ»ΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ ΡΠ·Π»Π° Π΄Π΅ΡΠ΅Π²Π° Π±ΠΎΠ»ΡΡΠ΅ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌΠΎΠ³ΠΎ
if Term_tab [Curr_term]. Left=0 then // Π΅ΡΠ»ΠΈ Ρ ΡΡΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° Π΄Π΅ΡΠ΅Π²Π° Π½Π΅Ρ Π»Π΅Π²ΠΎΠ³ΠΎ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ, ΡΠΎ
begin
Term_tab [Curr_term]. Left: =NumTerm; // Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π»Π΅Π²ΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°.
Term_tab [NumTerm]. lex: =str_lex;
Term_tab [NumTerm]. nomer: =NumTerm;
Term_tab [NumTerm]. Left: =0;
Term_tab [NumTerm]. Right: =0;
Term_tab [NumTerm]. Way: =Term_tab [NumTerm]. Way+'L';
end else begin
Term_tab [NumTerm]. Way: =Term_tab [NumTerm]. Way+'L';
Add_Term (Term_tab [Curr_term]. Left, str_lex); // ΠΡΠ»ΠΈ Π»Π΅Π²ΡΠΉ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ, ΡΠΎ Π²ΡΠ·ΡΠ²Π°Π΅ΠΌ ΡΠΆΠ΅ ΡΡΠ½ΠΊΡΠΈΡ Π΄Π»Ρ Π»Π΅Π²ΠΎΠ³ΠΎ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ.
end;
if (CompareStr (Term_tab [Curr_term]. lex, str_lex) <0) then // Π΅ΡΠ»ΠΈ Ρ ΡΡΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° Π΄Π΅ΡΠ΅Π²Π° Π½Π΅Ρ ΠΏΡΠ°Π²ΠΎΠ³ΠΎ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ, ΡΠΎ
if Term_tab [Curr_term]. Right=0 then
begin
Term_tab [Curr_term]. Right: =NumTerm; // Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ ΠΏΡΠ°Π²ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ.
Term_tab [NumTerm]. lex: =str_lex;
Term_tab [NumTerm]. nomer: =NumTerm;
Term_tab [NumTerm]. Left: =0;
Term_tab [NumTerm]. Right: =0;
Term_tab [NumTerm]. Way: =Term_tab [NumTerm]. Way+'R';
end else begin
Term_tab [NumTerm]. Way: =Term_tab [NumTerm]. Way+'R';
Add_Term (Term_tab [Curr_term]. Right, str_lex); // ΠΡΠ»ΠΈ ΠΏΡΠ°Π²ΡΠΉ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ, ΡΠΎ Π²ΡΠ·ΡΠ²Π°Π΅ΠΌ ΡΠΆΠ΅ ΡΡΠ½ΠΊΡΠΈΡ Π΄Π»Ρ ΠΏΡΠ°Π²ΠΎΠ³ΠΎ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ.
end;
end;
procedure Add_Ident (str: string); // ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ° Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ
var i: integer;
begin
kod: =Length (str) +2;
hesh: =0;
for i: =1 to Length (str) do hesh: =hesh+ord (str [i]); // Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ Ρ ΡΡ
hesh: =round (hesh/kod); // ΠΌΠ΅ΡΠΎΠ΄ Π΄Π΅Π»Π΅Π½ΠΈΡ
while (Id_tab [hesh]. lex<>'') and (hesh
begin
Id_tab [hesh]. ssylka: =hesh+1;
hesh: =hesh+1;
end;
Id_tab [hesh]. nomer: =Numid; // Π·Π°ΠΏΠΈΡΡ Π΄Π°Π½Π½ΡΡ
Id_tab [hesh]. lex: =str;
end;
function Search_Ident (str: string): integer; // ΡΡΠ½ΠΊΡΠΈΡ ΠΏΠΎΠΈΡΠΊΠ° ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Π°
var i: integer;
label 1;
begin
kod: =Length (str) +2;
hesh: =0;
for i: =1 to Length (str) do hesh: =hesh+ord (str [i]); // Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ Ρ ΡΡ
hesh: =round (hesh/kod);
1: if str=Id_tab [hesh]. lex then Search_Ident: =Id_tab [hesh]. nomer else // ΠΏΠΎΠΈΡΠΊ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠ°
begin
if Id_tab [hesh]. ssylka=0 then Search_Ident: =0 else
begin
hesh: =Id_tab [hesh]. ssylka;
goto 1;
end;
end;
end;
procedure Search_Const (Curr_term: integer; str_lex: string); // ΠΡΠΎΡΠ΅Π΄ΡΡΠ° ΠΏΠΎΠΈΡΠΊΠ° Π»Π΅ΠΊΡΠ΅ΠΌ Π² Π΄Π΅ΡΠ΅Π²Π΅ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΎΠ²
begin
Constyes: =0; // ΡΠ»Π°Π³: Π½Π°ΠΉΠ΄Π΅Π½Π° Π»ΠΈ Π»Π΅ΠΊΡΠ΅ΠΌΠ°
if (NumConst<>0) and (str_lex<>'') then
begin
if (CompareStr (Const_tab [Curr_term]. value, str_lex) >0) and (Const_tab [Curr_term]. Left<>0) then
Search_Const (Const_tab [Curr_term]. Left, str_lex); // ΡΠ΅ΠΊΡΡΡΠΈΠ²Π½ΡΠΉ «ΡΠΏΡΡΠΊ ΠΏΠΎ Π΄Π΅ΡΠ΅Π²Ρ»
if (CompareStr (Const_tab [Curr_term]. value, str_lex) <0) and (Const_tab [Curr_term]. Right<>0) then
Search_Const (Const_tab [Curr_term]. Right, str_lex);
if Const_tab [Curr_term]. value=str_lex then Constyes: =Const_tab [Curr_term]. nomer;
end;
end;
procedure Search_Term (Curr_term: integer; str_lex: string); // ΠΡΠΎΡΠ΅Π΄ΡΡΠ° ΠΏΠΎΠΈΡΠΊΠ° Π»Π΅ΠΊΡΠ΅ΠΌ Π² Π΄Π΅ΡΠ΅Π²Π΅ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΎΠ²
begin
Termyes: =0; // ΡΠ»Π°Π³: Π½Π°ΠΉΠ΄Π΅Π½Π° Π»ΠΈ Π»Π΅ΠΊΡΠ΅ΠΌΠ°
if (NumTerm<>0) and (str_lex<>'') then
begin
if (CompareStr (Term_tab [Curr_term]. lex, str_lex) >0) and (Term_tab [Curr_term]. Left<>0) then
Search_Term (Term_tab [Curr_term]. Left, str_lex); // ΡΠ΅ΠΊΡΡΡΠΈΠ²Π½ΡΠΉ «ΡΠΏΡΡΠΊ ΠΏΠΎ Π΄Π΅ΡΠ΅Π²Ρ»
if (CompareStr (Term_tab [Curr_term]. lex, str_lex) <0) and (Term_tab [Curr_term]. Right<>0) then
Search_Term (Term_tab [Curr_term]. Right, str_lex);
if Term_tab [Curr_term]. lex=str_lex then Termyes: =Term_tab [Curr_term]. nomer;
end;
end;
// ΡΡΠ½ΠΊΡΠΈΡ ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π²Π°Π½ΠΈΡ 16-ΡΠΈΡ. ΠΊΠΎΠ½ΡΡΠ°Π½Ρ
function FConst (str: string): integer;
var
sost: byte;
begin
sost: =0;
if str ='$' then // ΡΠ°ΡΠΏΠΎΠ·Π½Π°ΡΠΌ ΡΠΈΠΌΠ²ΠΎΠ» '$'
begin
sost: =1;
delete (str, 1,1);
end
else exit;
if (str ='+') or (str ='-') then // ΡΠ°ΡΠΏΠΎΠ·Π½Π°ΡΠΌ Π·Π½Π°ΠΊ
begin
sost: =2;
delete (str, 1,1)
end
else begin sost: =4; exit; end;
if str='' then exit;
while length (str) >0 do begin
if (str in cifra) or (str in bukva)
then sost: =2 // ΡΠ°ΡΠΏΠΎΠ·Π½Π°ΡΠΌ Π±ΡΠΊΠ²Ρ ΠΈΠ»ΠΈ ΡΠΈΡΡΡ
else begin sost: =4; exit;
end;
delete (str, 1,1);
end;
sost: =3;
if sost=3 then FConst: =1 else FConst: =-1;
end;
function termin: integer; // ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π²Π°ΡΠ΅Π»Ρ ΡΠ΅ΡΠΌΠΈΠ½Π°Π»ΡΠ½ΡΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ²
begin
termin: =-1;
for k: =1 to 14 do if Words [k] =Lexem then termin: =3;
for k: =1 to 8 do if Razdel [k] =Lexem then termin: =1;
for k: =1 to 11 do if Operacii [k] =Lexem then termin: =2;
end;
function Rome (str: string): integer; // ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π²Π°ΡΠ΅Π»Ρ ΡΠΈΠΌΡΠΊΠΈΡ ΠΊΠΎΠ½ΡΡΠ°Π½Ρ
var sost: byte;
begin
sost: =0;
if (str ='-') or (str ='+')
then begin sost: =12; delete (str, 1,1); end;
if str='' then exit;
if str ='X'
then begin sost: =1; delete (str, 1,1) end
else begin
if str ='V' then begin sost: =2; delete (str, 1,1) end
else begin
if str ='I' then begin sost: =3; delete (str, 1,1) end
else begin sost: =4; exit; end; end; end;
while Length (str) <>0 do begin
case sost of
1: if str ='X'
then begin sost: =5; delete (str, 1,1) end
else begin
if str ='V' then begin sost: =2; delete (str, 1,1) end
else begin
if str ='I' then begin sost: =3; delete (str, 1,1) end
else begin sost: =4; exit; end; end; end;
2: if str ='I'
then begin sost: =7; delete (str, 1,1) end
else begin sost: =4; exit; end;
3: if str ='X'
then begin sost: =8; delete (str, 1,1) end
else begin
if str ='V' then begin sost: =9; delete (str, 1,1) end
else begin
if str ='I' then begin sost: =10; delete (str, 1,1) end
else begin sost: =4; exit; end; end; end;
4: exit;
5: if str ='X'
then begin sost: =6; delete (str, 1,1) end
else begin
if str ='V' then begin sost: =2; delete (str, 1,1) end
else begin
if str ='I' then begin sost: =3; delete (str, 1,1) end
else begin sost: =4; exit; end; end; end;
6: if str ='V'
then begin sost: =2; delete (str, 1,1) end
else begin
if str ='I' then begin sost: =3; delete (str, 1,1) end
else begin sost: =4; exit; end; end;
7: if str ='I'
then begin sost: =10; delete (str, 1,1) end
else begin sost: =4; exit; end;
8: begin sost: =4; exit; end;
9: begin sost: =4; exit; end;
10: if str ='I'
then begin sost: =11; delete (str, 1,1) end
else begin sost: =4; exit; end;
11: begin sost: =4; exit; end;
end;
end;
if (sost=4) or (sost=12) then Rome: =-1 else Rome: =1;
end;
// ΡΡΠ½ΠΊΡΠΈΡ ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π²Π°Π½ΠΈΡ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΎΠ²
function Ident (str: string): integer;
var
sost: byte;
begin
sost: =0; // ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΊΠΎΠ½Π΅ΡΠ½ΠΎΠ³ΠΎ Π°Π²ΡΠΎΠΌΠ°ΡΠ°
if str in ['a'. 'z'] then
begin
sost: =1;
delete (str, 1,1)
end
else exit;
while length (str) >0 do begin
if str in ['a'. 'z','0'. '9','_']
then begin sost: =1; delete (str, 1,1); end
else begin sost: =3; exit; end;
end;
sost: =2;
if sost=2 then ident: =1 else ident: =-1;
end;
procedure WriteCode (nomer: integer; lex: string; typ: char; num: integer); // Π·Π°ΠΏΠΈΡΡ Π² ΡΠ°Π±Π»ΠΈΡΡ ΠΊΠΎΠ΄ΠΎΠ² Π»Π΅ΠΊΡΠ΅ΠΌ
begin
Code_Tab [NumLex]. nomer: =nomer;
Code_Tab [NumLex]. Lex: =lex;
Code_Tab [NumLex]. typ: =typ;
Code_Tab [NumLex]. Num: =num;
Code_Tab [NumLex]. numstr: =string_counter+1;
end;
procedure WriteLex (typelex: char); // Π·Π°ΠΏΠΈΡΡ Π»Π΅ΠΊΡΠ΅ΠΌ Π² ΡΠ°Π±Π»ΠΈΡΡ
begin
case typelex of
'C': begin // Π΅ΡΠ»ΠΈ Π»Π΅ΠΊΡΠ΅ΠΌΠ°-16-ΡΠΈΡ. ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ°
NumLex: =NumLex+1;
Search_Const (1,Lexem);
if Constyes=0 then // Π΅ΡΠ»ΠΈ Π»Π΅ΠΊΡΠ΅ΠΌΠ° Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½Π°
begin
NumConst: =NumConst+1;
Add_Const (1,Lexem);
Const_tab [NumConst]. Typ: ='16-ΡΠΈΡ. ';
Const_tab [Numconst]. Width: ='2 Π±Π°ΠΉΡΠ°';
WriteCode (NumLex, Lexem,'C', NumConst);
end else // Π΅ΡΠ»ΠΈ Π»Π΅ΠΊΡΠ΅ΠΌΠ° Π½Π°ΠΉΠ΄Π΅Π½Π°
begin
WriteCode (NumLex, Lexem,'C', Constyes);
end;
end;
'M': begin // Π΅ΡΠ»ΠΈ Π»Π΅ΠΊΡΠ΅ΠΌΠ°-ΡΠΈΠΌΡΠΊΠ°Ρ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ°
NumLex: =NumLex+1;
Search_Const (1,Lexem);
if Constyes=0 then // Π΅ΡΠ»ΠΈ Π»Π΅ΠΊΡΠ΅ΠΌΠ° Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½Π°
begin
NumConst: =NumConst+1;
Add_Const (1,Lexem);
Const_tab [NumConst]. Typ: ='ΡΠΈΠΌΡΠΊ. ';
Const_tab [Numconst]. Width: ='2 Π±Π°ΠΉΡΠ°';
WriteCode (NumLex, Lexem,'C', NumConst);
end else // Π΅ΡΠ»ΠΈ Π»Π΅ΠΊΡΠ΅ΠΌΠ° Π½Π°ΠΉΠ΄Π΅Π½Π°
begin
WriteCode (NumLex, Lexem,'C', Constyes);
end;
end;
'I': begin // Π΅ΡΠ»ΠΈ Π»Π΅ΠΊΡΠ΅ΠΌΠ°-ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ
NumLex: =NumLex+1;
y: =Search_Ident ({1,}Lexem);
if y=0 then // Π΅ΡΠ»ΠΈ Π»Π΅ΠΊΡΠ΅ΠΌΠ° Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½Π°
begin
NumId: =NumId+1;
WriteCode (NumLex, Lexem,'I', NumId);
Add_Ident (Lexem);
end else WriteCode (NumLex, Lexem,'I', y); // Π΅ΡΠ»ΠΈ Π»Π΅ΠΊΡΠ΅ΠΌΠ° Π½Π°ΠΉΠ΄Π΅Π½Π°
end;
'K': begin // Π΅ΡΠ»ΠΈ Π»Π΅ΠΊΡΠ΅ΠΌΠ°-ΡΠ»ΡΠΆΠ΅Π±Π½ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ
NumLex: =NumLex+1;
Search_Term (1,Lexem);
if Termyes=0 then // Π΅ΡΠ»ΠΈ Π»Π΅ΠΊΡΠ΅ΠΌΠ° Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½Π°
begin
NumTerm: =NumTerm+1;
Add_Term (1,Lexem);
Term_tab [Numterm]. razd: =0;
Term_tab [Numterm]. oper: =0;
Term_tab [Numterm]. slug: =1;
WriteCode (NumLex, Lexem,'T', NumTerm);
end else WriteCode (NumLex, Lexem,'T', Termyes); // Π΅ΡΠ»ΠΈ Π»Π΅ΠΊΡΠ΅ΠΌΠ° Π½Π°ΠΉΠ΄Π΅Π½Π°
end;
'R': begin // Π΅ΡΠ»ΠΈ Π»Π΅ΠΊΡΠ΅ΠΌΠ°-ΡΠ°Π·Π΄Π΅Π»ΠΈΡΠ΅Π»Ρ
NumLex: =NumLex+1;
Search_Term (1,Lexem);
if Termyes=0 then // Π΅ΡΠ»ΠΈ Π»Π΅ΠΊΡΠ΅ΠΌΠ° Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½Π°
begin
NumTerm: =NumTerm+1;
Add_Term (1,Lexem);
Term_tab [NumTerm]. razd: =1;
Term_tab [NumTerm]. oper: =0;
Term_tab [NumTerm]. slug: =0;
WriteCode (NumLex, Lexem,'T', NumTerm)
end else WriteCode (NumLex, Lexem,'T', Termyes) // Π΅ΡΠ»ΠΈ Π»Π΅ΠΊΡΠ΅ΠΌΠ° Π½Π°ΠΉΠ΄Π΅Π½Π°
end;
'O': begin // Π΅ΡΠ»ΠΈ Π»Π΅ΠΊΡΠ΅ΠΌΠ°-Π·Π½Π°ΠΊ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ
NumLex: =NumLex+1;
Search_Term (1,Lexem);
if Termyes=0 then // Π΅ΡΠ»ΠΈ Π»Π΅ΠΊΡΠ΅ΠΌΠ° Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½Π°
begin
NumTerm: =NumTerm+1;
Add_Term (1,Lexem);
Term_tab [Numterm]. razd: =0;
Term_tab [Numterm]. oper: =1;
Term_tab [Numterm]. slug: =0;
WriteCode (NumLex, Lexem,'T', NumTerm)
end else WriteCode (NumLex, Lexem,'T', Termyes) // Π΅ΡΠ΄ΠΈ Π»Π΅ΠΊΡΠ΅ΠΌΠ° Π½Π°ΠΉΠ΄Π΅Π½Π°
end;
end;
end;
procedure TForm1. N5Click (Sender: TObject);
var i, pip: integer;
begin
for k: =1 to numid do // ΠΎΠ±Π½ΡΠ»Π΅Π½ΠΈΠ΅ ΡΠ°Π±Π»ΠΈΡΡ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΎΠ²
begin
id_tab [k]. lex: ='0';
id_tab [k]. nomer: =0;
id_tab [i]. ssylka: =0;
end;
for i: =1 to numlex do // ΠΎΠ±Π½ΡΠ»Π΅Π½ΠΈΠ΅ Π²ΡΡ ΠΎΠ΄Π½ΠΎΠΉ ΡΠ°Π±Π»ΠΈΡΡ
begin
Code_Tab [i]. Lex: ='';
Code_Tab [i]. typ: =#0;
Code_Tab [i]. Num: =0;
Code_Tab [i]. nomer: =0;
end;
for i: =0 to numconst do // ΠΎΠ±Π½ΡΠ»Π΅Π½ΠΈΠ΅ ΡΠ°Π±Π»ΠΈΡΡ ΠΊΠΎΠ½ΡΡΠ°Π½Ρ
begin
Const_tab [i]. nomer: =0;
Const_tab [i]. value: ='';
Const_tab [i]. Typ: ='';
Const_tab [i]. Width: ='';
Const_tab [i]. Val10: ='';
Const_tab [k]. Left: =0;
Const_tab [k]. Right: =0;
Const_tab [k]. Way: ='';
end;
for i: =1 to numterm do
begin
Term_tab [i]. nomer: =0;
Term_tab [i]. Lex: ='';
Term_tab [i]. razd: =0;
Term_tab [i]. oper: =0;
Term_tab [i]. slug: =0;
Term_tab [k]. Left: =0;
Term_tab [k]. Right: =0;
Term_tab [k]. Way: ='';
end;
// ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ
NumLex: =0; NumId: =0; NumConst: =0; NumErr: =0; NumTerm: =0;
Error: =false; Found: =false;
i: =0; j: =0; k: =0; y: =0;
String_counter: =0;
Memo2. Lines. Clear;
N6. Enabled: =true;
while string_counter<=Memo1. Lines. Count do // ΡΠΈΠΊΠ» ΠΏΠΎ ΡΡΡΠΎΠΊΠ°ΠΌ ΡΠ°ΠΉΠ»Π°
begin
n: =1;
m: =1;
s: =Form1. Memo1. Lines. Strings [string_counter] ;
for l: =1 to 2 do
while m<=Length (s) do // ΡΠΈΠΊΠ» ΠΏΠΎ ΡΡΡΠΎΠΊΠ΅
begin
n: =m;
m: =Select_Lex (s, Lexem, n);
if (Lexem<>'') and not (Lexem in [#0. #32]) then
begin
if FConst (Lexem) =1 then WriteLex ('C') else // Π²ΡΠ·ΠΎΠ² ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ Π·Π°ΠΏΠΈΡΠΈ
if Termin=3 then WriteLex ('K') else
if Rome (Lexem) =1 then WriteLex ('M') else
if Ident (Lexem) =1 then WriteLex ('I') else
if Termin=1 then WriteLex ('R') else
if Termin=2 then WriteLex ('O')
else Err_lex;
end;
end;
string_counter: =string_counter+1;
end;
vyvod; // Π²ΡΠ·ΠΎΠ² ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ Π²ΡΠ²ΠΎΠ΄Π°
end;
procedure TForm1. vyvod; // ΠΡΠ²ΠΎΠ΄ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠ²
var
f: textfile; // Π²ΡΡ ΠΎΠ΄Π½ΠΎΠΉ ΡΠ°ΠΉΠ»
begin
StringGrid1. RowCount: =NumConst+1; // ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΡΠΈΡΠ»Π° ΡΡΡΠΎΠΊ Π² ΡΠ°Π±Π»ΠΈΡΠ°Ρ
StringGrid2. RowCount: =NumId+1;
StringGrid3. RowCount: =NumTerm+1;
StringGrid4. RowCount: =NumLex+1;
StringGrid1. Cells [0,0]: ='β'; StringGrid1. Cells [1,0]: ='ΠΠΎΠ½ΡΡΠ°Π½ΡΠ°'; StringGrid1. Cells [2,0]: ='Π’ΠΈΠΏ';
StringGrid1. Cells [3,0]: ='Π¨ΠΈΡΠΈΠ½Π°'; StringGrid1. Cells [4,0]: ='10-ΡΠΈΡΠ½ΡΠΉ ΡΠΎΡΠΌΠ°Ρ';
StringGrid1. Cells [5,0]: ='L'; StringGrid1. Cells [6,0]: ='R';
StringGrid1. Cells [7,0]: ='ΠΡΡΡ'; // ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠ²
for k: =1 to NumConst do // Π²ΡΠ²ΠΎΠ΄ ΡΠ°Π±Π»ΠΈΡΡ ΠΊΠΎΠ½ΡΡΠ°Π½Ρ
begin
StringGrid1. cells [0,k]: = Inttostr (Const_Tab [k]. nomer);
StringGrid1. cells [1,k]: = Const_Tab [k]. value;
StringGrid1. cells [2,k]: = Const_Tab [k]. Typ;
StringGrid1. cells [3,k]: = Const_Tab [k]. Width;
StringGrid1. cells [4,k]: = Const_Tab [k]. Val10;
StringGrid1. cells [5,k]: = Inttostr (Const_Tab [k]. Left);
StringGrid1. cells [6,k]: = Inttostr (Const_Tab [k]. Right);
StringGrid1. cells [7,k]: = Const_Tab [k]. Way;
end;
AssignFile (F,'Const. txt'); // Π·Π°ΠΏΠΈΡΡ Π² ΡΠ°ΠΉΠ» ΡΠ°Π±Π»ΠΈΡΡ ΠΊΠΎΠ½ΡΡΠ°Π½Ρ
Rewrite (F);
for k: =1 to NumConst do
Writeln (F, StringGrid1. cells [0,k] +' '+StringGrid1. cells [1,k] +' '+StringGrid1. cells [2,k] +' '+StringGrid1. cells [3,k]);
CloseFile (F);
StringGrid2. Cells [0,0]: ='β'; StringGrid2. Cells [1,0]: ='ΠΠΌΡ'; // ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠ²
k: =0;
k1: =0;
while k
begin
if Id_tab [k1]. lex<>'' then
begin
StringGrid2. cells [0,k+1]: =IntToStr (Id_tab [k1]. nomer);
StringGrid2. cells [1,k+1]: =Id_Tab [k1]. lex;
k: =k+1;
end;
k1: =k1+1;
end;
AssignFile (F,'Ident. txt'); // Π·Π°ΠΏΠΈΡΡ Π² ΡΠ°ΠΉΠ» ΡΠ°Π±Π»ΠΈΡΡ ΠΊΠΎΠ½ΡΡΠ°Π½Ρ
Rewrite (F);
for k: =1 to NumId do Writeln (F, StringGrid2. cells [0,k] +' '+StringGrid2. cells [1,k]);
CloseFile (F);
StringGrid3. Cells [0,0]: ='β'; StringGrid3. Cells [1,0]: ='Π‘ΠΈΠΌΠ²ΠΎΠ»'; StringGrid3. Cells [2,0]: ='Π Π°Π·Π΄Π΅Π». ';
StringGrid3. Cells [3,0]: ='ΠΠ½. ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ'; StringGrid3. Cells [4,0]: ='ΠΠ»ΡΡ. ΡΠ»ΠΎΠ²ΠΎ';
StringGrid3. Cells [5,0]: ='L'; StringGrid3. Cells [6,0]: ='R';
StringGrid3. Cells [7,0]: ='ΠΡΡΡ'; // ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠ²
for k: =1 to NumTerm do // Π²ΡΠ²ΠΎΠ΄ ΡΠ°Π±Π»ΠΈΡΡ ΡΠ΅ΡΠΌΠΈΠ½Π°Π»ΡΠ½ΡΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ²
begin
StringGrid3. cells [0,k]: = Inttostr (Term_Tab [k]. nomer);
StringGrid3. cells [1,k]: = Term_Tab [k]. lex;
StringGrid3. cells [2,k]: = Inttostr (Term_Tab [k]. razd);
StringGrid3. cells [3,k]: = Inttostr (Term_Tab [k]. oper);
StringGrid3. cells [4,k]: = Inttostr (Term_Tab [k]. slug);
StringGrid3. cells [5,k]: = Inttostr (Term_Tab [k]. Left);
StringGrid3. cells [6,k]: = Inttostr (Term_Tab [k]. Right);
StringGrid3. cells [7,k]: = Term_Tab [k]. Way;
end;
AssignFile (F,'Term. txt'); // Π·Π°ΠΏΠΈΡΡ Π² ΡΠ°ΠΉΠ» ΡΠ°Π±Π»ΠΈΡΡ ΡΠ΅ΡΠΌΠΈΠ½Π°Π»ΡΠ½ΡΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ²
Rewrite (F);
for k: =1 to NumTerm do Writeln (F, StringGrid3. cells [0,k] +' '+StringGrid3. cells [1,k] +' '+StringGrid3. cells [2,k] +' '+StringGrid3. cells [3,k] +' '+StringGrid3. cells [4,k]);
CloseFile (F);
StringGrid4. Cells [0,0]: ='β'; StringGrid4. Cells [1,0]: ='Π’ΠΈΠΏ'; StringGrid4. Cells [2,0]: ='β Π² ΡΠ°Π±Π»ΠΈΡΠ΅'; StringGrid4. Cells [3,0]: ='ΠΠ΅ΠΊΡΠ΅ΠΌΠ°'; // ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠ²
for k: =1 to NumLex do // Π²ΡΠ²ΠΎΠ΄ ΡΠ°Π±Π»ΠΈΡΡ ΠΊΠΎΠ΄ΠΎΠ² Π»Π΅ΠΊΡΠ΅ΠΌ
begin
StringGrid4. cells [0,k]: = Inttostr (Code_Tab [k]. nomer);
StringGrid4. cells [1,k]: = Code_Tab [k]. typ;
StringGrid4. cells [2,k]: = Inttostr (Code_Tab [k]. num);
StringGrid4. cells [3,k]: = Code_Tab [k]. lex;
end;
AssignFile (F,'Cod. txt'); // Π·Π°ΠΏΠΈΡΡ Π² ΡΠ°ΠΉΠ» Π²ΡΡ ΠΎΠ΄Π½ΠΎΠΉ ΡΠ°Π±Π»ΠΈΡΡ
Rewrite (F);
for k: =1 to NumLex do Writeln (F, StringGrid4. cells [0,k] +' '+StringGrid4. cells [1,k] +' '+StringGrid4. cells [2,k] +' '+StringGrid4. cells [3,k]);
CloseFile (F);
end;
procedure TForm1. Err_Lex; // ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ° Π²ΡΠ²ΠΎΠ΄Π° ΠΎΡΠΈΠ±ΠΊΠΈ Π² Π»Π΅ΠΊΡΠ΅ΠΌΠ΅
begin
Memo2. Lines. Add ('Π ΡΡΡΠΎΠΊΠ΅ β'+Inttostr (String_counter+1) +' ΠΎΡΠΈΠ±ΠΎΡΠ½Π°Ρ Π»Π΅ΠΊΡΠ΅ΠΌΠ° '+Lexem);
NumErr: =NumErr+1;
NumLex: =NumLex+1;
Code_Tab [NumLex]. nomer: =NumLex;
Code_Tab [NumLex]. Lex: =Lexem;
Code_Tab [NumLex]. typ: ='E';
Code_Tab [NumLex]. Num: =NumErr;
Exit;
end;
2.4.4 Π’Π΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π»Π΅ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΠ°
Π’Π΅ΠΊΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π½Π΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΎΡΠΈΠ±ΠΎΠΊ:
program var15;
var n: integer;
begin
n: =$+00;
repeat
n: =n- (-XII);
until n<$-0A;
end.
Π Π΅Π·ΡΠ»ΡΡΠ°Ρ — ΡΠ°Π±Π»ΠΈΡΡ ΠΊΠΎΠ½ΡΡΠ°Π½Ρ, ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΎΠ², ΡΠ΅ΡΠΌΠΈΠ½Π°Π»ΡΠ½ΡΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² ΠΈ ΠΊΠΎΠ΄ΠΎΠ² Π»Π΅ΠΊΡΠ΅ΠΌ (ΡΠΌ. ΡΠΈΡ. 5, Π±) ΠΈ ΠΎΡΡΡΡΡΡΠ²ΠΈΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΈΠΉ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ°Ρ (ΡΠΌ. ΡΠΈΡ. 5, Π°).
ΡΠΈΡ. 5, Π°.
ΡΠΈΡ. 5, Π±
ΡΠΈΡ. 5. Π Π΅Π·ΡΠ»ΡΡΠ°ΡΡ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, Π½Π΅ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠ΅ΠΉ ΠΎΡΠΈΠ±ΠΎΠΊ.
Π’Π΅ΠΊΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΎΡΠΈΠ±ΠΎΡΠ½ΡΠ΅ Π»Π΅ΠΊΡΠ΅ΠΌΡ var% ΠΈ $+MN.
program var15;
var% n: integer;
begin
n: =$+MN;
repeat
n: =n- (-XII);
until n<$-0A;
end.
Π Π΅Π·ΡΠ»ΡΡΠ°Ρ — Π² ΡΠ°Π±Π»ΠΈΡΡ ΠΊΠΎΠ΄ΠΎΠ² Π»Π΅ΠΊΡΠ΅ΠΌ ΡΡΠΈ Π»Π΅ΠΊΡΠ΅ΠΌΡ Π·Π°Π½Π΅ΡΠ΅Π½Ρ Ρ ΡΠΈΠΏΠΎΠΌ Π, ΡΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ ΠΎΠ½ΠΈ ΠΎΡΠΈΠ±ΠΎΡΠ½Ρ (ΡΠΌ. Π ΠΈΡ. 6, Π°, Π±), ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π²ΡΠ΄Π°Π»Π° ΡΠ°ΠΊΠΆΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ°Ρ (Π ΠΈΡ. 6, Π²).
Π ΠΈΡ. 6, Π°
Π ΠΈΡ. 6, Π±
Π ΠΈΡ. 6, Π²
Π ΠΈΡ. 6. Π Π΅Π·ΡΠ»ΡΡΠ°ΡΡ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠ΅ΠΉ ΠΎΡΠΈΠ±ΠΎΡΠ½ΡΠ΅ Π»Π΅ΠΊΡΠ΅ΠΌΡ.
3. Π Π°Π·ΡΠ°Π±ΠΎΡΠΊΠ° ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΠ°
3.1 Π£ΡΠΎΡΠ½Π΅Π½ΠΈΠ΅ Π³ΡΠ°ΠΌΠΌΠ°ΡΠΈΠΊΠΈ ΡΠ·ΡΠΊΠ° ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΊ Π²Π°ΡΠΈΠ°Π½ΡΡ Π·Π°Π΄Π°Π½ΠΈΡ
Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π°Π½Π°Π»ΠΈΠ· ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ ΡΠ΅ΠΊΡΡΡΠΈΠ²Π½ΠΎΠ³ΠΎ ΡΠΏΡΡΠΊΠ°.
ΠΠ½Π°Π»ΠΈΠ·Π°ΡΠΎΡ, ΠΎΡΠ½ΠΎΠ²Π°Π½Π½ΡΠΉ Π½Π° ΡΡΠΎΠΌ ΠΌΠ΅ΡΠΎΠ΄Π΅, ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ ΠΏΡΠΎΡΠ΅Π΄ΡΡ Π΄Π»Ρ ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π²Π°Π½ΠΈΡ Π½Π΅ΡΠ΅ΡΠΌΠΈΠ½Π°Π»ΡΠ½ΡΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ², ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΡΡ Π² Π³ΡΠ°ΠΌΠΌΠ°ΡΠΈΠΊΠ΅. ΠΠ°ΠΆΠ΄Π°Ρ ΡΠ°ΠΊΠ°Ρ ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ° ΠΈΡΠ΅Ρ Π²ΠΎ Π²Ρ ΠΎΠ΄Π½ΠΎΠΌ ΠΏΠΎΡΠΎΠΊΠ΅ Π»Π΅ΠΊΡΠ΅ΠΌ ΠΏΠΎΠ΄ΡΡΡΠΎΠΊΡ, ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΠΎΡΡΠ°Π²Π»Π΅Π½ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠ΅ Π½Π΅ΡΠ΅ΡΠΌΠΈΠ½Π°Π»ΡΠ½ΡΠΉ ΡΠΈΠΌΠ²ΠΎΠ», ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π²Π°Π΅ΠΌΡΠΉ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π΄Π°Π½Π½ΠΎΠΉ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ. Π ΠΏΡΠΎΡΠ΅ΡΡΠ΅ ΡΠ²ΠΎΠ΅ΠΉ ΡΠ°Π±ΠΎΡΡ ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ° ΠΌΠΎΠΆΠ΅Ρ ΠΎΠ±ΡΠ°ΡΠΈΡΡΡΡ ΠΊ Π΄ΡΡΠ³ΠΈΠΌ ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΠΌ ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ°ΠΌ Π΄Π»Ρ ΠΏΠΎΠΈΡΠΊΠ° Π΄ΡΡΠ³ΠΈΡ Π½Π΅ΡΠ΅ΡΠΌΠΈΠ½Π°Π»ΡΠ½ΡΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ². ΠΡΠ»ΠΈ ΡΡΠ° ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ° ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠΈΡΡΠ΅Ρ Π²Ρ ΠΎΠ΄Π½ΡΡ ΠΏΠΎΠ΄ΡΡΡΠΎΠΊΡ ΠΊΠ°ΠΊ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΉ Π½Π΅ΡΠ΅ΡΠΌΠΈΠ½Π°Π»ΡΠ½ΡΠΉ ΡΠΈΠΌΠ²ΠΎΠ», ΡΠΎ ΠΎΠ½Π° Π·Π°ΠΊΠ°Π½ΡΠΈΠ²Π°Π΅Ρ ΡΠ²ΠΎΡ ΡΠ°Π±ΠΎΡΡ, ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ Π² Π²ΡΠ·Π²Π°Π²ΡΡΡ Π΅Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΈΠ»ΠΈ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ ΠΏΡΠΈΠ·Π½Π°ΠΊ ΡΡΠΏΠ΅ΡΠ½ΠΎΠ³ΠΎ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ ΠΈ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ ΡΠ΅ΠΊΡΡΠ΅ΠΉ Π»Π΅ΠΊΡΠ΅ΠΌΡ Π½Π° ΠΏΠ΅ΡΠ²ΡΡ Π»Π΅ΠΊΡΠ΅ΠΌΡ ΠΏΠΎΡΠ»Π΅ ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π½Π½ΠΎΠΉ ΠΏΠΎΠ΄ΡΡΡΠΎΠΊΠΈ. ΠΡΠ»ΠΈ ΠΆΠ΅ ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ° Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ Π½Π°ΠΉΡΠΈ ΠΏΠΎΠ΄ΡΡΡΠΎΠΊΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΌΠΎΠ³Π»Π° Π±Ρ Π±ΡΡΡ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠΈΡΠΎΠ²Π°Π½Π° ΠΊΠ°ΠΊ ΡΡΠ΅Π±ΡΠ΅ΠΌΡΠΉ Π½Π΅ΡΠ΅ΡΠΌΠΈΠ½Π°Π»ΡΠ½ΡΠΉ ΡΠΈΠΌΠ²ΠΎΠ», ΠΎΠ½Π° Π·Π°ΠΊΠ°Π½ΡΠΈΠ²Π°Π΅ΡΡΡ Ρ ΠΏΡΠΈΠ·Π½Π°ΠΊΠΎΠΌ Π½Π΅ΡΠ΄Π°ΡΠ½ΠΎΠ³ΠΎ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ ΠΈ Π²ΡΠ΄Π°Π΅Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π΅ Π΄ΠΈΠ°Π³Π½ΠΎΡΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅.
ΠΡΠ°Π²ΠΈΠ»Π° ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π° ΠΎΡΠ½ΠΎΡΡΡΡΡ ΠΊ Π³ΡΠ°ΠΌΠΌΠ°ΡΠΈΠΊΠ΅ Π²ΠΈΠ΄Π° LL (1), Ρ. Π΅. ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π»Π΅Π²ΠΎΡΡΠΎΡΠΎΠ½Π½ΠΈΠΉ ΠΏΡΠΎΡΠΌΠΎΡΡ ΠΈ Π»Π΅Π²ΠΎΡΡΠΎΡΠΎΠ½Π½ΠΈΠΉ Π²ΡΠ²ΠΎΠ΄, ΠΏΡΠΈ ΡΡΠΎΠΌ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡΠΎΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡ Π½Π΅ Π±ΠΎΠ»Π΅Π΅ 1 ΡΠΈΠΌΠ²ΠΎΠ»Π°.
ΠΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΏΡΠ°Π²ΠΈΠ» Π³ΡΠ°ΠΌΠΌΠ°ΡΠΈΠΊΠΈ ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅ΠΌΠΎΠ³ΠΎ ΡΠ·ΡΠΊΠ°, Π·Π°ΠΏΠΈΡΠ°Π½Π½ΡΡ Π² ΡΠΎΡΠΌΠ΅ ΠΡΠΊΡΡΠ°-ΠΠ°ΡΡΠ°, ΠΈΠΌΠ΅Π΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ Π²ΠΈΠ΄:
1. <οΏ½ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°>>program<οΏ½ΠΈΠΌΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ>;
var<οΏ½ΡΠΏΠΈΡΠΎΠΊ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠΉ>
begin<οΏ½ΡΠΏΠΈΡΠΎΠΊ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ²>end.
2. <οΏ½ΠΈΠΌΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ>>ΠΠΠ―
3. <οΏ½ΡΠΏΠΈΡΠΎΠΊ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠΉ>><οΏ½ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅>; {<οΏ½ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅>; }
4. <οΏ½ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅>><οΏ½ΡΠΏΠΈΡΠΎΠΊ ΠΈΠΌΡΠ½>: <οΏ½ΡΠΈΠΏ>
5. <οΏ½ΡΠΈΠΏ>>real
6. <οΏ½ΡΠΏΠΈΡΠΎΠΊ ΠΈΠΌΡΠ½>>ΠΠΠ―{, ΠΠΠ―}
7. <οΏ½ΡΠΏΠΈΡΠΎΠΊ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ²>><οΏ½ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ>; {<οΏ½ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ>; }
8. <οΏ½ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ>><οΏ½ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΠ΅> | <οΏ½ΡΠΈΠΊΠ»>
9. <οΏ½ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΠ΅>>ΠΠΠ―: =<οΏ½Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅>
10. <οΏ½Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅>><οΏ½ΠΏΡΠΎΡΡΠΎΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅>{ (=, <, <>, >, >=, <=) <οΏ½ΠΏΡΠΎΡΡΠΎΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅>}
11. <οΏ½ΠΏΡΠΎΡΡΠΎΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅>><οΏ½ΡΠ΅ΡΠΌ> - <οΏ½ΡΠ΅ΡΠΌ>
12. <οΏ½ΡΠ΅ΡΠΌ>><οΏ½ΠΌΠ½ΠΎΠΆΠΈΡΠ΅Π»Ρ>*<οΏ½ΠΌΠ½ΠΎΠΆΠΈΡΠ΅Π»Ρ>
13. <οΏ½ΠΌΠ½ΠΎΠΆΠΈΡΠ΅Π»Ρ>>ΠΠΠ― | ΠΠΠΠ‘Π’ΠΠΠ’Π | <οΏ½ΠΏΡΠΎΡΡΠΎΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅>
14. <οΏ½ΡΠΈΠΊΠ»>>repeat<οΏ½ΡΠ΅Π»ΠΎ ΡΠΈΠΊΠ»Π°>until<οΏ½Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅>
15. <οΏ½ΡΠ΅Π»ΠΎ ΡΠΈΠΊΠ»Π°>><οΏ½ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ>|<οΏ½ΡΠΎΡΡΠ°Π²Π½ΠΎΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ>
16. <οΏ½ΡΠΎΡΡΠ°Π²Π½ΠΎΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ>>begin<οΏ½ΡΠΏΠΈΡΠΎΠΊ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ²>end
Π Π³ΡΠ°ΠΌΠΌΠ°ΡΠΈΠΊΠ΅, ΠΏΠΎΠΌΠΈΠΌΠΎ ΠΎΠ±ΡΠ΅ΠΏΡΠΈΠ½ΡΡΡΡ , ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΠ΅ΡΠΌΠΈΠ½Π°Π»ΡΠ½ΡΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»Ρ: ΠΠΠ― — ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ; ΠΠΠΠ‘Π’ΠΠΠ’Π — 16-ΡΠΈΡΠ½Π°Ρ ΠΈΠ»ΠΈ ΡΠΈΠΌΡΠΊΠ°Ρ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ°.
3.2 Π Π°Π·ΡΠ°Π±ΠΎΡΠΊΠ° Π°Π»Π³ΠΎΡΠΈΡΠΌΠ° ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π°
Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π°Π½Π°Π»ΠΈΠ· ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ ΡΠ΅ΠΊΡΡΡΠΈΠ²Π½ΠΎΠ³ΠΎ ΡΠΏΡΡΠΊΠ°. Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ Π½Π°Π±ΠΎΡ ΡΡΠ½ΠΊΡΠΈΠΉ, ΠΊΠ°ΠΆΠ΄Π°Ρ ΠΈΠ· ΠΊΠΎΡΠΎΡΡΡ Π΄ΠΎΠ»ΠΆΠ½Π° ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π²Π°ΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΉ Π½Π΅ΡΠ΅ΡΠΌΠΈΠ½Π°Π»ΡΠ½ΡΠΉ ΡΠΈΠΌΠ²ΠΎΠ» Π³ΡΠ°ΠΌΠΌΠ°ΡΠΈΠΊΠΈ. ΠΡΠΈ ΡΡΠΎΠΌ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° ΠΏΡΠΎΡ ΠΎΠ΄ΠΈΡ ΠΎΡ ΠΎΠ±ΡΠ΅Π³ΠΎ ΠΊ ΡΠ°ΡΡΠ½ΠΎΠΌΡ. ΠΠ΅ΡΠ²ΠΎΠΉ ΡΡΡΠΎΠΈΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π²Π°Π½ΠΈΡ Π½Π°ΡΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠΈΠΌΠ²ΠΎΠ»Π° Π³ΡΠ°ΠΌΠΌΠ°ΡΠΈΠΊΠΈ, ΠΏΠΎΡΠΎΠΌ ΡΡΠ½ΠΊΡΠΈΠΈ, Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ Π²ΡΠ·ΡΠ²Π°Π΅ΠΌΡΠ΅ ΠΈΠ· Π½Π΅Π΅ ΠΈ ΡΠ°ΠΊ Π΄Π°Π»Π΅Π΅.
ΠΠ°Π»Π΅Π΅ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡΡΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π²Π°Π½ΠΈΡ. ΠΠ±ΡΠΈΠΉ ΠΌΠ΅ΡΠΎΠ΄ ΠΈΡ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ: ΠΈΠ·Π½Π°ΡΠ°Π»ΡΠ½ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΡΡΡ Π² FALSE. ΠΠ°Π»Π΅Π΅ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΠΏΠΎΠΈΡΠΊ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² Π²Ρ ΠΎΠ΄ΡΡΠΈΡ Π² ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π²Π°Π΅ΠΌΡΠΉ Π½Π΅ΡΠ΅ΡΠΌΠΈΠ½Π°Π». ΠΡΠ»ΠΈ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π΄ΡΡΠ³ΠΎΠΉ Π½Π΅ΡΠ΅ΡΠΌΠΈΠ½Π°Π»ΡΠ½ΡΠΉ ΡΠΈΠΌΠ²ΠΎΠ», ΡΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π²ΡΠ·ΠΎΠ² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅ΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ. ΠΡΠ»ΠΈ ΠΆΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ Π½Π°Π»ΠΈΡΠΈΠ΅ ΡΠ΅ΡΠΌΠΈΠ½Π°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠΈΠΌΠ²ΠΎΠ»Π°, ΡΠΎ ΡΡΠ½ΠΊΡΠΈΡ ΡΠ°ΠΌΠ° Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ Π·Π°ΠΏΡΠΎΡ Π½Π° ΡΡΠ΅Π½ΠΈΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ Π»Π΅ΠΊΡΠ΅ΠΌΡ ΠΈ ΡΡΠ°Π²Π½ΠΈΠ²Π°Π΅Ρ Π΅Π΅ Ρ ΡΠΎΠΉ, ΠΊΠΎΡΠΎΡΠ°Ρ Π΄ΠΎΠ»ΠΆΠ½Π° ΠΏΡΠΈΡΡΡΡΡΠ²ΠΎΠ²Π°ΡΡ Π² ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ. Π§ΡΠ΅Π½ΠΈΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ Π»Π΅ΠΊΡΠ΅ΠΌΡ ΡΠΎΡΡΠΎΠΈΡ Π² Π²ΡΠ±ΠΎΡΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° ΠΈΠ· ΡΠ°Π±Π»ΠΈΡΡ ΠΊΠΎΠ΄ΠΎΠ² Π»Π΅ΠΊΡΠ΅ΠΌ, Ρ. Π΅. Π² ΡΠ²Π΅Π»ΠΈΡΠ΅Π½ΠΈΠΈ Π½ΠΎΠΌΠ΅ΡΠ° ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° Π½Π° 1 (Π² Π±Π»ΠΎΠΊ-ΡΡ Π΅ΠΌΠ΅ Π±ΡΠ΄Π΅Ρ ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ°ΡΡΡΡ ΠΊΠ°ΠΊ Π§ΡΠ‘Π»). ΠΡΠ»ΠΈ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΠΎΡΠΈΠ±ΠΊΠ°, ΡΠΎ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΏΡΠ΅ΠΊΡΠ°ΡΠ°Π΅ΡΡΡ Ρ Π²ΡΠ·ΠΎΠ²ΠΎΠΌ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ Π²ΡΠ²ΠΎΠ΄Π° ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ΅ (Π² Π±Π»ΠΎΠΊ-ΡΡ Π΅ΠΌΠ΅ Π±ΡΠ΄Π΅Ρ ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ°ΡΡΡΡ ΠΊΠ°ΠΊ ΠΡΠΈΠ±ΠΊΠ°). ΠΡΠΈΡΠ΅ΠΌ ΠΏΡΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ Π°Π½Π°Π»ΠΈΠ·Π° ΡΠ°ΠΊΠΎΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ Π²ΡΠ΄Π°Π΅ΡΡΡ ΠΎΠ΄ΠΈΠ½ ΡΠ°Π·, ΠΈΠ½Π°ΡΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΌΠΎΠ³ΡΡ ΠΈΠΌΠ΅ΡΡ Π½Π΅Π΄ΠΎΡΡΠΎΠ²Π΅ΡΠ½ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ. Π‘ΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π½ΠΎΠΌΠ΅Ρ ΡΡΡΠΎΠΊΠΈ ΠΈ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½Π½ΠΎΠΉ ΠΎΡΠΈΠ±ΠΊΠΈ. ΠΡΠ»ΠΈ ΠΎΡΠΈΠ±ΠΎΠΊ Π½Π΅ ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½ΠΎ, ΡΠΎ Π² ΠΊΠΎΠ½ΡΠ΅ ΡΠ°Π±ΠΎΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ Π΅Π΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ TRUE.
Lex_Progr: <οΏ½ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°>
Lex_Progr_Name: <οΏ½ΠΈΠΌΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ>
Lex_Descr_List: <οΏ½ΡΠΏΠΈΡΠΎΠΊ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠΉ>
Lex_Descr: <οΏ½ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅>
Lex_Name_List: <οΏ½ΡΠΏΠΈΡΠΎΠΊ ΠΈΠΌΡΠ½>
Lex_Type: <οΏ½ΡΠΈΠΏ>
Lex_Oper_List: <οΏ½ΡΠΏΠΈΡΠΎΠΊ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ²>
Lex_Oper: <οΏ½ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ>
Lex_Assign: <οΏ½ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΠ΅>
Lex_Exp: <οΏ½Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅>
Lex_Simple_Exp: <οΏ½ΠΏΡΠΎΡΡΠΎΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅>
Lex_Term: <οΏ½ΡΠ΅ΡΠΌ>
Lex_Mnozh <οΏ½ΠΌΠ½ΠΎΠΆΠΈΡΠ΅Π»Ρ>
Lex_Repeat_Intil: <οΏ½ΡΠΈΠΊΠ»>
Lex_Body <οΏ½ΡΠ΅Π»ΠΎ ΡΠΈΠΊΠ»Π°>
3.3 ΠΠ»Π³ΠΎΡΠΈΡΠΌΡ ΡΠ°ΡΠΏΠΎΠ·Π½Π°ΡΡΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΉ
ΠΠΈΠΆΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Ρ ΡΠΏΡΠΎΡΡΠ½Π½ΡΠ΅ Π±Π»ΠΎΠΊ-ΡΡ Π΅ΠΌΡ ΡΡΠ½ΠΊΡΠΈΠΉ ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π²Π°Π½ΠΈΡ. ΠΡΠΎΡΡΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ, ΡΠ°ΠΊΠΈΠ΅, ΠΊΠ°ΠΊ ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π²Π°Π½ΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° ΠΈΠ»ΠΈ ΠΈΠΌΠ΅Π½ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, Π½Π΅ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅ΠΌ Π² ΡΠΈΠ»Ρ ΠΈΡ ΠΎΡΠ΅Π²ΠΈΠ΄Π½ΠΎΡΡΠΈ.
3.3.1 Π€ΡΠ½ΠΊΡΠΈΡ Lex_Progr
3.3.2 Π€ΡΠ½ΠΊΡΠΈΡ Lex_Descr_List
3.3.3 Π€ΡΠ½ΠΊΡΠΈΡ Lex_Descr
3.3.4 Π€ΡΠ½ΠΊΡΠΈΡ Lex_Name_List
3.3.5 Π€ΡΠ½ΠΊΡΠΈΡ Lex_Oper_List
3.3.6 Π€ΡΠ½ΠΊΡΠΈΡ Lex_Assign
3.3.7 Π€ΡΠ½ΠΊΡΠΈΡ Lex_Exp
3.3.8 Π€ΡΠ½ΠΊΡΠΈΡ Lex_Simple_Exp
3.3.9 Π€ΡΠ½ΠΊΡΠΈΡ Lex_Term
3.3.10 Π€ΡΠ½ΠΊΡΠΈΡ Lex_mnozh
3.3.11 Π€ΡΠ½ΠΊΡΠΈΡ Lex_Repeat_Until
3.3.12 Π€ΡΠ½ΠΊΡΠΈΡ Lex_Body
3.4 Π’Π΅ΠΊΡΡΡ ΡΠ°ΡΠΏΠΎΠ·Π½Π°ΡΡΠΈΡ ΠΏΡΠΎΡΠ΅Π΄ΡΡ
function TForm1. Lex_Progr: boolean; // 1. ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°
begin
Lex_Progr: =False;
if Code_Tab [i]. Lex='program' then i: =i+1 else // ΠΊΠΎΠ½Π΅Ρ Π±Π»ΠΎΠΊΠ° Π΄Π»Ρ PROGRAM
begin
Err_Synt ('ΠΡΡΡΡΡΡΠ²ΡΠ΅Ρ ΡΠ»ΡΠΆΠ΅Π±Π½ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ program, Π»ΠΈΠ±ΠΎ Π² Π½Π΅ΠΌ ΠΎΡΠΈΠ±ΠΊΠ° ', i);
Exit;
end;
if Lex_Prog_Name=false then Exit; // Π½Π°ΡΠ°Π»ΠΎ Π±Π»ΠΎΠΊΠ° Π΄Π»Ρ ΠΈΠΌΠ΅Π½ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ
if Code_Tab [i]. Lex='; ' then i: =i+1 else // Π½Π°ΡΠ°Π»ΠΎ Π±Π»ΠΎΠΊΠ° Π΄Π»Ρ ΡΠΎΡΠΊΠΈ Ρ Π·Π°ΠΏΡΡΠΎΠΉ
begin
Err_Synt ('ΠΡΡΡΡΡΡΠ²ΡΠ΅Ρ ΡΠΎΡΠΊΠ° Ρ Π·Π°ΠΏΡΡΠΎΠΉ ΠΏΠΎΡΠ»Π΅ ΠΈΠΌΠ΅Π½ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ', i-1);
Exit;
end;
if Code_Tab [i]. Lex='var' then i: =i+1 else // Π½Π°ΡΠ°Π»ΠΎ Π±Π»ΠΎΠΊΠ° Π΄Π»Ρ VAR
begin
Err_Synt ('ΠΡΡΡΡΡΡΠ²ΡΠ΅Ρ ΡΠ»ΡΠΆΠ΅Π±Π½ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ var ΠΏΠΎΡΠ»Π΅ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ', i);
Exit;
end;
if Lex_descr_list=false then Exit;
if Code_Tab [i]. Lex='begin' then // Π½Π°ΡΠ°Π»ΠΎ Π±Π»ΠΎΠΊΠ° Π΄Π»Ρ BEGIN
begin
i: =i+1;
if Code_Tab [i]. Lex='; ' then
begin
Err_Synt ('ΠΠΎΡΠ»Π΅ begin Π½Π΅Π΄ΠΎΠΏΡΡΡΠΈΠΌ ΡΠΈΠΌΠ²ΠΎΠ» «; «', i);
Exit;
end;
end else
begin
Err_Synt ('ΠΡΡΡΡΡΡΠ²ΡΠ΅Ρ ΡΠ»ΡΠΆΠ΅Π±Π½ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ begin ΠΏΠΎΡΠ»Π΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ', i);
Exit;
end;
if Lex_oper_list=false then Exit;
if Code_Tab [i]. Lex='end' then i: =i+1 else // Π½Π°ΡΠ°Π»ΠΎ Π±Π»ΠΎΠΊΠ° Π΄Π»Ρ END
begin
Err_Synt ('ΠΡΡΡΡΡΡΠ²ΡΠ΅Ρ ΡΠ»ΡΠΆΠ΅Π±Π½ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ end Π² ΠΊΠΎΠ½ΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ', i);
Exit;
end; // Π½Π°ΡΠ°Π»ΠΎ Π±Π»ΠΎΠΊΠ° Π΄Π»Ρ ΡΠΎΡΠΊΠΈ
if Code_Tab [i]. Lex='. ' then Lex_Progr: =true else if Code_Tab [i]. Lex<>'' then Err_Synt ('ΠΠΎΡΠ»Π΅ ΡΠ»ΡΠΆΠ΅Π±Π½ΠΎΠ³ΠΎ ΡΠ»ΠΎΠ²Π° END Π²ΠΌΠ΅ΡΡΠΎ ΡΠΎΡΠΊΠΈ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ «'+Code_Tab [i]. Lex+'» ', i) else Err_Synt ('ΠΠΆΠΈΠ΄Π°Π΅ΡΡΡ ΡΠΎΡΠΊΠ° ΠΏΠΎΡΠ»Π΅ ΡΠ»ΡΠΆΠ΅Π±Π½ΠΎΠ³ΠΎ ΡΠ»ΠΎΠ²Π° END Π² ΠΊΠΎΠ½ΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ', i-1);
end;
procedure TForm1. Err_Synt (text: string; l: integer);
begin
if Error<>true then
begin
Memo1. Lines [Code_tab [l]. numstr-1]: =Memo1. Lines [Code_tab [l]. numstr-1] +'!!! '+'Error!!! ';
Memo2. Lines [0]: =Memo2. Lines +text;
end;
Error: =true;
Exit;
end;
function TForm1. Lex_Prog_Name: boolean; // 2. ΠΈΠΌΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ
begin
Lex_Prog_Name: =False;
if (Code_Tab [i]. typ<>'I') and (Code_Tab [i]. Lex<>'; ') then
begin
Err_Synt ('ΠΠ΅ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠ΅ ΠΈΠΌΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ. ΠΡΠΈΠ±ΠΎΡΠ½ΠΎΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅: «'+Code_Tab [i]. Lex+'» ', i);
Exit;
end;
if Code_Tab [i]. Lex='; ' then
begin
Err_Synt ('ΠΡΡΡΡΡΡΠ²ΡΠ΅Ρ ΠΈΠΌΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΏΠΎΡΠ»Π΅ program', i);
Exit;
end;
Lex_Prog_Name: =true;
i: =i+1;
end;
function TForm1. Lex_Descr_List: boolean; // 3. ΡΠΏΠΈΡΠΎΠΊ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠΉ
begin
Lex_descr_list: =false;
Found: =false;
while Code_Tab [i]. typ='I' do
begin
Found: =true;
if Lex_descr=false then Exit;
if Code_Tab [i]. Lex='; ' then i: =i+1 else
begin
Err_Synt ('ΠΡΡΡΡΡΡΠ²ΡΠ΅Ρ ΡΠΎΡΠΊΠ° Ρ Π·Π°ΠΏΡΡΠΎΠΉ ΠΏΠΎΡΠ»Π΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ', i-1);
Exit;
end;
end;;
if Found=false then
begin
Err_Synt ('ΠΡΡΡΡΡΡΠ²ΡΠ΅Ρ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ Π² ΠΎΠΏΠΈΡΠ°Π½ΠΈΠΈ ', i);
Exit;
end;
Lex_descr_list: =true;
end;
function TForm1. Lex_descr: boolean; // 4. ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅
begin
Lex_descr: =false;
if Lex_name_list=true then
begin
if Code_Tab [i]. Lex=': ' then i: =i+1 else
begin
Err_Synt ('ΠΡΡΡΡΡΡΠ²ΡΠ΅Ρ Π΄Π²ΠΎΠ΅ΡΠΎΡΠΈΠ΅ ΠΏΠ΅ΡΠ΅Π΄ ΡΠΈΠΏΠΎΠΌ '+Code_Tab [i]. Lex, i);
Exit;
end;
if Lex_type=true then Lex_descr: =true else Exit;
end else Exit;
end;
function TForm1. Lex_name_list: boolean; // 6. ΡΠΏΠΈΡΠΎΠΊ ΠΈΠΌΠ΅Π½
begin
Lex_name_list: =false;
if Code_Tab [i]. typ='I' then i: =i+1 else
begin
Err_Synt ('ΠΠΆΠΈΠ΄Π°Π΅ΡΡΡ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ ', i);
Exit;
end;
while Code_Tab [i]. Lex=',' do
begin
i: =i+1;
if Code_Tab [i]. Typ='I' then i: =i+1 else
begin
Err_Synt ('ΠΠΆΠΈΠ΄Π°Π΅ΡΡΡ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ ', i);
Exit;
end;
end;
Lex_name_list: =true;
end;
function TForm1. Lex_type: boolean; // 5. ΡΠΈΠΏ
begin
Lex_type: =false;
if (Code_Tab [i]. Lex='integer') then
begin
Lex_type: =true;
i: =i+1
end else
begin
Err_Synt ('ΠΡΡΡΡΡΡΠ²ΡΠ΅Ρ ΡΠΈΠΏ: integer ', i-1);
Exit;
end;
end;
function TForm1. Lex_oper_list: boolean; // 7. ΡΠΏΠΈΡΠΎΠΊ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ²
begin
Lex_oper_list: =false;
found: =false;
while Lex_oper=true do
begin
Found: =true;
if (Code_Tab [i]. Lex='; ') then i: =i+1 else // ΠΡΠ»ΠΈ ΡΠ»Π΅Π΄. Π»Π΅ΠΊΡΠ΅ΠΌΠ° ΠΏΠΎΡΠ»Π΅ ΠΏΡΠΎΠ²Π΅ΡΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° Π½ΠΈ «; «, Π½ΠΈ END, Π° Π»ΡΠ±Π°Ρ Π΄ΡΡΠ³Π°Ρ Π»Π΅ΠΊΡΠ΅ΠΌΠ°.
if Code_Tab [i]. Lex<>'end' then
begin
Err_Synt ('ΠΠΆΠΈΠ΄Π°Π΅ΡΡΡ ΡΠΎΡΠΊΠ° Ρ Π·Π°ΠΏΡΡΠΎΠΉ ΠΏΠΎΡΠ»Π΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° (ΠΏΠΎΡΠ»Π΅ Π»Π΅ΠΊΡΠ΅ΠΌΡ '+Code_Tab [i-1]. Lex+') ', i-1);
Exit;
end;
end;
Lex_oper_list: =true;
if found=false then
begin
Err_Synt ('ΠΠ΅ Π½Π°ΠΉΠ΄Π΅Π½Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ ΠΌΠ΅ΠΆΠ΄Ρ begin ΠΈ end', i-1);
Lex_oper_list: =false;
end;
end;
function TForm1. Lex_oper: boolean;
begin
Lex_oper: =false;
if (Lex_assign) or (Lex_repeat_until) then Lex_oper: =true else
if (Code_Tab [i]. Lex='; ') and (Code_Tab [i-1]. Lex='; ') then Lex_oper: =true else // ΠΏΡΠΎΠ²Π΅ΡΡΠ΅ΡΡΡ Π½Π° ΠΏΡΡΡΠΎΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ, Ρ. Π΅. Π½Π° «;; «.
if (Code_Tab [i]. Typ='T') and (Code_Tab [i]. Lex<>'end') and (Code_Tab [i]. Lex<>'begin') and (Code_Tab [i]. Lex<>'; ') then Err_Synt ('ΠΠΈΡΠ½ΡΡ Π»Π΅ΠΊΡΠ΅ΠΌΠ° Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅: '+Code_Tab [i]. Lex, i);
end;
function TForm1. Lex_assign: boolean; // 10. ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΠ΅
begin
Lex_assign: =false;
if Code_Tab [i]. typ='I' then
begin
if Code_Tab [i+1]. Lex=': =' then
begin
i: =i+2;
if Lex_Exp=true then Lex_assign: =true else Memo2. Lines [1]: =Memo2. Lines +' Π² ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ΅ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΡ'
end else Err_Synt ('ΠΡΠΈΠ±ΠΊΠ° Π² ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ΅ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΡ', i)
end;
end;
function TForm1. Lex_Exp: boolean; // 11. Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅
begin
Lex_Exp: =false;
if Lex_simple_Exp=true then
begin
if ((Code_Tab [i]. Lex='=') or (Code_Tab [i]. Lex='>') or (Code_Tab [i]. Lex='<')
or (Code_Tab [i]. Lex='<>') or (Code_Tab [i]. Lex='<=') or (Code_Tab [i]. Lex='>=')) then
begin
i: =i+1;
if Lex_simple_Exp=true then
begin
Lex_Exp: =true;
Exit;
end;
end;
end else Exit;
Lex_Exp: =true; // Π΅ΡΠ»ΠΈ ΠΏΡΠΎΡΡΠΎΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π±Π΅Π· Π·Π½Π°ΠΊΠ°
end;
function TForm1. Lex_simple_Exp: boolean; // 12. ΠΏΡΠΎΡΡΠΎΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅
begin
Found: =false;
Lex_simple_Exp: =false;
if Lex_term=true then
begin
Found: =true;
while ((Code_Tab [i]. Lex='+') or (Code_Tab [i]. Lex='-')) and (Found=true) do
begin
i: =i+1;
if Lex_term=false then
begin
Found: =False;
Err_Synt ('ΠΠΆΠΈΠ΄Π°Π΅ΡΡΡ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ°, ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ ΠΈΠ»ΠΈ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ', i-1);
Exit;
end;
end;
if (Code_Tab [i]. Lex=') ') and (Scobka=false) then Err_Synt ('ΠΠΆΠΈΠ΄Π°Π΅ΡΡΡ ΠΎΡΠΊΡΡΠ²Π°ΡΡΠ°ΡΡΡ ΡΠΊΠΎΠ±ΠΊΠ° Π² ΠΌΠ½ΠΎΠΆΠΈΡΠ΅Π»Π΅', i)
end;
if Found=true then Lex_simple_Exp: =true;
end;
function TForm1. Lex_Term: boolean; // 13. ΡΠ΅ΡΠΌ
begin
Found: =false;
Lex_Term: =false;
if Lex_mnozh=true then
begin
Found: =true;
while ((Code_Tab [i]. Lex='*') or (Code_Tab [i]. Lex='/')) and (Found=true) do
begin
i: =i+1;
if Lex_mnozh=false then Found: =False;
end;
end;
if Found=true then Lex_Term: =true;
end;
function TForm1. Lex_mnozh: boolean; // 14. ΠΌΠ½ΠΎΠΆΠΈΡΠ΅Π»Ρ
begin
Lex_mnozh: =false;