Π Π°Π·ΡΠ°Π±ΠΎΡΠΊΠ° ΠΊΠΎΠ½Π²Π΅ΡΡΠΎΡΠ° Π½Π° ΡΠ·ΡΠΊΠ΅ Π‘ΠΈ Π΄Π»Ρ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ Π½Π° ΡΠ·ΡΠΊΠ΅ ΠΠ°ΡΠΊΠ°Π»Ρ Π² ΡΠ΅ΠΊΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π½Π° ΡΠ·ΡΠΊΠ΅ Π‘ΠΈ
ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ΠΈΡ ΡΠ΅ΠΊΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΡΠΎΡ ΡΠ°Π½Π΅Π½Π½ΡΠΉ Π² ΡΠ°ΠΉΠ»Π΅ filename1 Ρ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ΠΌ .PAS. ΠΡΡΡ Π½Π° Π²Ρ ΠΎΠ΄Π½ΠΎΠΉ ΡΠ°ΠΉΠ» filename1 ΠΈ ΠΏΡΡΡ Π½Π° Π²ΡΡ ΠΎΠ΄Π½ΠΎΠΉ ΡΠ°ΠΉΠ» filename2 Ρ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ΠΌ .Ρ Π²Π²ΠΎΠ΄ΡΡΡΡ Ρ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ. Π ΠΊΠΎΠ΄Π΅ Π²Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π° Π½ΡΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ: case, assign, rewrite, write, file, ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ, Begin, end ΠΈ ΡΠΈΠΏ Π΄Π°Π½Π½ΡΡ : real Π½Π° ΡΠ·ΡΠΊ C, ΠΏΠΎΡΠ»Π΅ ΡΠ΅Π³ΠΎ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π·Π°ΠΏΠΈΡΡΠ²Π°Π΅ΡΡΡ Π² Π²ΡΡ ΠΎΠ΄Π½ΠΎΠΉ ΡΠ°ΠΉΠ»… Π§ΠΈΡΠ°ΡΡ Π΅ΡΡ >
Π Π°Π·ΡΠ°Π±ΠΎΡΠΊΠ° ΠΊΠΎΠ½Π²Π΅ΡΡΠΎΡΠ° Π½Π° ΡΠ·ΡΠΊΠ΅ Π‘ΠΈ Π΄Π»Ρ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ Π½Π° ΡΠ·ΡΠΊΠ΅ ΠΠ°ΡΠΊΠ°Π»Ρ Π² ΡΠ΅ΠΊΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π½Π° ΡΠ·ΡΠΊΠ΅ Π‘ΠΈ (ΡΠ΅ΡΠ΅ΡΠ°Ρ, ΠΊΡΡΡΠΎΠ²Π°Ρ, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½ΡΡΠΎΠ»ΡΠ½Π°Ρ)
ΠΠΈΠ½ΠΈΡΡΠ΅ΡΡΡΠ²ΠΎ ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ ΠΈ Π½Π°ΡΠΊΠΈ Π ΠΎΡΡΠΈΠΉΡΠΊΠΎΠΉ Π€Π΅Π΄Π΅ΡΠ°ΡΠΈΠΈ Π€Π΅Π΄Π΅ΡΠ°Π»ΡΠ½ΠΎΠ΅ Π°Π³Π΅Π½ΡΡΡΠ²ΠΎ ΠΏΠΎ ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ ΠΠΎΡΡΠ΄Π°ΡΡΡΠ²Π΅Π½Π½ΠΎΠ΅ ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΠ΅ ΡΡΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ Π²ΡΡΡΠ΅Π³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ
" Π‘Π΅Π²Π΅ΡΠΎ-ΠΠ°Π²ΠΊΠ°Π·ΡΠΊΠΈΠΉ ΠΠΎΡΡΠ΄Π°ΡΡΡΠ²Π΅Π½Π½ΡΠΉ Π’Π΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΈΠΉ Π£Π½ΠΈΠ²Π΅ΡΡΠΈΡΠ΅Ρ"
ΠΠ£Π Π‘ΠΠΠΠ ΠΠ ΠΠΠΠ’ ΠΠ ΠΠΠ‘Π¦ΠΠΠΠΠΠ «ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° ΡΠ·ΡΠΊΠ΅ Π²ΡΡΠΎΠΊΠΎΠ³ΠΎ ΡΡΠΎΠ²Π½Ρ»
ΠΠ Π’ΠΠΠ£: «Π Π°Π·ΡΠ°Π±ΠΎΡΠΊΠ° ΠΊΠΎΠ½Π²Π΅ΡΡΠΎΡΠ° Π½Π° ΡΠ·ΡΠΊΠ΅ Π‘ΠΈ Π΄Π»Ρ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ Π½Π° ΡΠ·ΡΠΊΠ΅ ΠΠ°ΡΠΊΠ°Π»Ρ Π² ΡΠ΅ΠΊΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π½Π° ΡΠ·ΡΠΊΠ΅ Π‘ΠΈ»
ΠΡΠΏΠΎΠ»Π½ΠΈΠ» ΡΡΡΠ΄Π΅Π½Ρ II ΠΊΡΡΡΠ° ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎΡΡΠΈ 230 102.65
" ΠΠ²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΈ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ"
Π.Π.ΠΠ»Π°Π΄ΠΊΠΈΠΉ Π‘ΡΠ°Π²ΡΠΎΠΏΠΎΠ»Ρ
ΠΠ½Π½ΠΎΡΠ°ΡΠΈΡ Π Π΄Π°Π½Π½ΠΎΠΌ ΠΊΡΡΡΠΎΠ²ΠΎΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠ΅ ΠΎΠΏΠΈΡΠ°Π½Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°, Π½Π°ΠΏΠΈΡΠ°Π½Π½Π°Ρ Π½Π° ΡΠ·ΡΠΊΠ΅ Visual C++.
ΠΠ΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΡΡΠ°Π²ΠΈΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ΠΈΡ ΠΊΠΎΠ΄ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π½Π° ΡΠ·ΡΠΊΠ΅ Pascal Π² ΠΊΠΎΠ΄ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π½Π° ΡΠ·ΡΠΊΠ΅ Π‘ΠΈ. ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΏΠ΅ΡΠ΅ΡΠ°Π±Π°ΡΡΠ²Π°Π΅Ρ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄ Π½Π° ΡΠ·ΡΠΊΠ΅ Pascal, ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ΠΈΡ Π² ΡΠ·ΡΠΊ Π‘ΠΈ ΠΈ Π·Π°ΠΏΠΈΡΡΠ²Π°Π΅Ρ Π² Π½ΠΎΠ²ΡΠΉ ΡΠ°ΠΉΠ».
Π Π°Π·ΡΠ°Π±ΠΎΡΠ°Π½Π½Π°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ΠΈΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ°ΠΌΠΈ: case, assign, rewrite, write, ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ ΡΠ°ΠΉΠ»Π°, ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ, ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ , ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΡ, Π° ΡΠ°ΠΊ ΠΆΠ΅ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΈ Π°ΡΠΈΡΠΌΠ΅ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ ΡΠΈΠΏ Π΄Π°Π½Π½ΡΡ real ΠΈ integer.
ΠΠ³Π»Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΠ½Π½ΠΎΡΠ°ΡΠΈΡ ΠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅
1. Π’Π΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΎΠ΅ Π·Π°Π΄Π°Π½ΠΈΠ΅
2. ΠΠΎΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Π·Π°Π΄Π°ΡΠΈ
3. ΠΠ½Π΅ΡΠ½ΡΡ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ
4. ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ°
5. Π‘ΡΡΡΠΊΡΡΡΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ
6. ΠΠΈΡΡΠΈΠ½Π³ ΠΊΠΎΠ΄Π°
7. Π Π΅Π·ΡΠ»ΡΡΠ°ΡΡ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π‘ΠΏΠΈΡΠΎΠΊ Π»ΠΈΡΠ΅ΡΠ°ΡΡΡΡ
ΠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅
Π‘ΡΡΠ΅ΡΡΠ²ΡΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄ΠΈΠΊΠΈ Π΄Π»Ρ ΡΡΠ°Π½ΡΠ»ΡΡΠΈΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ. Π‘ΡΡΠ΅ΡΡΠ²ΡΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ Π²ΠΈΠ΄Ρ ΡΡΠ°Π½ΡΠ»ΡΡΠΎΡΠΎΠ²: Π°Π΄ΡΠ΅ΡΠ½ΡΠΉ, Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΡΠΉ, ΠΌΠ½ΠΎΠ³ΠΎΠΏΡΠΎΡ ΠΎΠ΄Π½ΠΎΠΉ, ΠΎΠ±ΡΠ°ΡΠ½ΡΠΉ, ΠΎΠ΄Π½ΠΎΠΏΡΠΎΡ ΠΎΠ΄Π½ΠΎΠΉ, ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΡΡΡΠΈΠΉ, ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ (ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ-ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΡΠΉ), ΡΠ΅ΡΡΠΎΠ²ΡΠΉ.
Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΈ Π»Π΅ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π°Π½Π°Π»ΠΈΠ· — ΡΡΠΎ ΠΎΠ΄Π½ΠΈ ΠΈΠ· ΡΠ°ΠΌΡΡ ΡΠΈΡΠΎΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² Π² ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΎΠ½Π½ΡΡ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΡΡ . ΠΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠΎΠ², ΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ»ΠΈ Π³ΠΎΠ²ΠΎΡΠΈΡΡ Ρ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠΎΠΌ «Π½Π° ΡΠ΅Π»ΠΎΠ²Π΅ΡΠ΅ΡΠΊΠΎΠΌ ΡΠ·ΡΠΊΠ΅», Π΄ΠΎ ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ΡΠΈΠΊΠΎΠ² ΠΈ, Π΄Π°ΠΆΠ΅, ΡΠΏΠ΅Π»Π»ΡΠ΅ΠΊΠ΅ΡΠΎΠ², Π²ΡΡΡΠΎΠ΅Π½Π½ΡΡ ΠΏΠΎΠ²ΡΠ΅ΠΌΠ΅ΡΡΠ½ΠΎ — Π² Π±ΡΠ°ΡΠ·Π΅ΡΠ°Ρ , ΡΠ΅ΠΊΡΡΠΎΠ²ΡΡ ΡΠ΅Π΄Π°ΠΊΡΠΎΡΠ°Ρ , ΠΊΠ»ΠΈΠ΅Π½ΡΠ°Ρ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ. ΠΠ½Π°Π»ΠΈΠ· ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ° ΡΠΎΡΠΌΠ°Π»ΡΠ½ΡΡ ΡΠ·ΡΠΊΠΎΠ² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ (ΡΠ°ΠΊΠΈΡ ΠΊΠ°ΠΊ Pascal ΠΈΠ»ΠΈ Π‘ΠΈ) ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅ΡΡΡ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΏΡΠΎΡΡΡΠΌ Π² ΡΠΈΠ»Ρ ΡΡΡΠΎΠ³ΠΎΡΡΠΈ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ. ΠΠ΅ΡΠΌΠΎΡΡΡ Π½Π° ΡΡΠΎ, ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ° Π°Π½Π°Π»ΠΈΠ·Π° ΡΠ΅ΠΊΡΡΠ° Π² ΠΎΠ±ΠΎΠΈΡ ΡΠ»ΡΡΠ°ΡΡ ΠΏΡΠΎΡ ΠΎΠ΄ΠΈΡ ΠΏΠΎΡ ΠΎΠΆΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ. Π‘Π½Π°ΡΠ°Π»Π° ΡΠ»Π΅Π΄ΡΠ΅Ρ Π»Π΅ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π°Π½Π°Π»ΠΈΠ· ΠΈ ΡΠ΅ΠΊΡΡ ΡΠ°Π·Π±ΠΈΡΠ°Π΅ΡΡΡ Π½Π° Π»Π΅ΠΊΡΠ΅ΠΌΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ°ΠΊ ΠΆΠ΅ ΠΌΠΎΠ³ΡΡ Π½Π°Π·ΡΠ²Π°ΡΡΡΡ ΡΠΎΠΊΠ΅Π½Π°ΠΌΠΈ. ΠΠ°ΡΠ΅ΠΌ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΡΠ°Π·Π° ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π°, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠ΅ ΡΠ°Π±Π»ΠΈΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ², ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π΅Ρ ΠΊΠΎΠ΄. Π Π΄Π°Π½Π½ΠΎΠΌ ΠΊΡΡΡΠΎΠ²ΠΎΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠ΅, ΠΌΡ ΡΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΡΠΏΡΠΎΡΠ΅Π½Π½ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΡΠ°Π±ΠΎΡΠ°ΡΡΡΡ Π² Π΄Π²ΡΡ Π΄Π°Π½Π½ΡΡ ΡΠ°Π·Π°Ρ . ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π±ΡΠ΄Π΅Ρ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ΠΈΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ ΡΠ·ΡΠΊΠ° Pascal Π½Π° ΠΊΠΎΠ΄ Π½Π° ΡΠ·ΡΠΊΠ΅ Π‘ΠΈ.
1. Π’Π΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΎΠ΅ Π·Π°Π΄Π°Π½ΠΈΠ΅ ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Π° Π΄Π»Ρ ΡΡΠ°Π½ΡΠ»ΡΡΠΈΠΈ ΠΊΠΎΠ΄Π° Π½Π° ΡΠ·ΡΠΊΠ΅ Pascal Π² ΠΊΠΎΠ΄ Π½Π° ΡΠ·ΡΠΊΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ C.
ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ΠΈΡ ΡΠ΅ΠΊΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΡΠΎΡ ΡΠ°Π½Π΅Π½Π½ΡΠΉ Π² ΡΠ°ΠΉΠ»Π΅ filename1 Ρ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ΠΌ .PAS. ΠΡΡΡ Π½Π° Π²Ρ ΠΎΠ΄Π½ΠΎΠΉ ΡΠ°ΠΉΠ» filename1 ΠΈ ΠΏΡΡΡ Π½Π° Π²ΡΡ ΠΎΠ΄Π½ΠΎΠΉ ΡΠ°ΠΉΠ» filename2 Ρ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ΠΌ .Ρ Π²Π²ΠΎΠ΄ΡΡΡΡ Ρ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ. Π ΠΊΠΎΠ΄Π΅ Π²Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π° Π½ΡΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ: case, assign, rewrite, write, file, ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ, Begin, end ΠΈ ΡΠΈΠΏ Π΄Π°Π½Π½ΡΡ : real Π½Π° ΡΠ·ΡΠΊ C, ΠΏΠΎΡΠ»Π΅ ΡΠ΅Π³ΠΎ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π·Π°ΠΏΠΈΡΡΠ²Π°Π΅ΡΡΡ Π² Π²ΡΡ ΠΎΠ΄Π½ΠΎΠΉ ΡΠ°ΠΉΠ».
Π ΡΠ»ΡΡΠ°Π΅ ΠΎΡΠΈΠ±ΠΎΡΠ½ΠΎΠΉ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ°, ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅Ρ ΠΊΠΎΠ΄ Π² Π²ΡΡ ΠΎΠ΄Π½ΠΎΠΉ ΡΠ°ΠΉΠ» filename2 <οΏ½ΠΎΡΠΈΠ±ΠΊΠ°!>. ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π½Π΅ ΠΏΡΠ΅ΡΡΠ²Π°Π΅ΡΡΡ, Π΅ΡΠ»ΠΈ Π½Π°ΠΉΠ΄Π΅Π½ ΠΎΡΠΈΠ±ΠΎΡΠ½ΡΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ.
ΠΠ»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΡΡ Visual Studio 2010, ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΠ΅ΡΡΠΎΠ²ΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΡΡΠ΅Π΄Ρ Turbo Pascal 7.0.
ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ Π½Π° ΡΠ·ΡΠΊΠ΅ C Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠΌ ΠΏΠ°ΠΊΠ΅ΡΠ΅ Visual Studio 2010 Express Edition, Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅ Windows XP SP3.
2. ΠΠΎΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Π·Π°Π΄Π°ΡΠΈ ΠΡΡ ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π² ΡΠ°ΠΉΠ»Π΅ filename1. pas Ρ ΠΊΠΎΠ΄ΠΎΠΌ Π½Π° ΡΠ·ΡΠΊΠ΅ Pascal:
filename1 ΠΈΠΌΡ Π²Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π°, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠ΅Π³ΠΎ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ ΡΠ΅ΠΊΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π½Π° ΡΠ·ΡΠΊΠ΅ Pascal, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ case, assign, rewrite, write, file, ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ, Begin, end ΠΈ ΡΠΈΠΏ Π΄Π°Π½Π½ΡΡ : real
ΠΠΎΡΠ»Π΅ ΡΠ°Π±ΠΎΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΡΠΎΠ·Π΄Π°Π΅Ρ ΡΠ°ΠΉΠ» filename2. c, Π° ΡΠ°ΠΊ ΠΆΠ΅ ΡΡΠ΅ΡΡΠΈΠΊΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ² Π΄ΠΎ ΡΡΠ°Π½ΡΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈ ΠΏΠΎΡΠ»Π΅, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΎΡΠΈΠ±ΠΎΡΠ½ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ²:
filename2 ΠΈΠΌΡ Π²ΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π°, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΉ ΠΊΠΎΠ½Π²Π΅ΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΡΠ΅ΠΊΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π½Π° ΡΠ·ΡΠΊ C;
koper1 ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ² Π² ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅;
koper2 ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ² Π² ΠΊΠΎΠ½Π²Π΅ΡΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅;
ker ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΎΡΠΈΠ±ΠΎΡΠ½ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ² Π² ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅;
ΠΠ»Ρ Π±ΠΎΠ»Π΅Π΅ ΡΠ΄ΠΎΠ±Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΡ ΡΠ΅Π»Π΅ΠΉ Π½Π°ΡΠ΅ΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΡΠΎΡΡΠ°Π²ΠΈΠΌ ΡΠ°Π±Π»ΠΈΡΡ 1, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ ΡΡΠ°Π²Π½ΠΈΠΌ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ ΠΏΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ°ΠΌ Π½Π° ΡΠ·ΡΠΊΠ΅ C ΠΈ Π½Π° ΡΠ·ΡΠΊΠ΅ Pascal ΠΏΠΎ Π½Π°ΡΠ΅ΠΌΡ Π²Π°ΡΠΈΠ°Π½ΡΡ.
Π’Π°Π±Π»ΠΈΡΠ° 1 — Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ² Π½Π° ΡΠ·ΡΠΊΠ΅ C ΠΈ Π½Π° ΡΠ·ΡΠΊΠ΅ Pascal
Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° Π½Π° ΡΠ·ΡΠΊΠ΅ Pascal | Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° Π½Π° ΡΠ·ΡΠΊΠ΅ C | |
1.ΠΠΏΠ΅ΡΠ°ΡΠΎΡ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΡ v1:=ae1; | v1=ae1; | |
2. ΠΠΏΠ΅ΡΠ°ΡΠΎΡ case: case k of 1: Begin End; 2:Begin End; | switch (k){ case 1: { break; case 2: { break; | |
3. ΠΠΏΠ΅ΡΠ°ΡΠΎΡ assign, rewrite, write assign (fl,'c:tuctuc.txt'); rewrite (fl); write (fl,'bla'); | fl = fopen («c:tuctuc.txt» ," w"); fcreate (fl); fprintf (fl," bla"); | |
4.ΠΠΏΠ΅ΡΠ°ΡΠΎΡΠ½ΡΠ΅ ΡΠΊΠΎΠ±ΠΊΠΈ Begin…End | {…} | |
5.ΠΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ ΡΠ°ΠΉΠ»Π° fl:file of integer; | FILE *fl; | |
6.ΠΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ: {…} | /*…*/ | |
ΠΡΠΈΡΠΌΠ΅ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΠ΅3
ΠΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΎΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Le2:
3. ΠΠ½Π΅ΡΠ½ΡΡ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΡΡ ΠΎΠ΄Π½ΡΠΉ ΡΠ΅ΠΊΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, Π½Π°ΠΏΠΈΡΠ°Π½Π½ΡΠΉ Π½Π° ΡΠ·ΡΠΊΠ΅ Pascal, filename1. pas Π²Π²ΠΎΠ΄ΠΈΡΡΡ ΠΏΠΎΡΠ»Π΅ Π·Π°ΠΏΡΠΎΡΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ:
ΠΠΌΡ Π²Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π°:<οΏ½ΠΠΌΡ Π²Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π°>
ΠΠΎΡΠ»Π΅ ΡΠ°Π±ΠΎΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, Π²Π²Π΅ΡΡΠΈ ΠΈΠΌΡ ΡΠ°ΠΉΠ»Π°: filename2, Π² ΠΊΠΎΡΠΎΡΡΠΉ Π·Π°ΠΏΠΈΡΡΠ²Π°Π΅ΡΡΡ ΠΊΠΎΠ΄ ΠΏΠΎΡΠ»Π΅ ΡΡΠ°Π½ΡΠ»ΡΡΠΈΠΈ:
ΠΠΌΡ Π²ΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π°:<οΏ½ΠΠΌΡ Π²ΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π°>
ΠΠΎΡΠ»Π΅ ΡΠ°Π±ΠΎΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, Π²ΡΠ²ΠΎΠ΄ΠΈΡΡΡ Π½Π° ΡΠΊΡΠ°Π½ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ² ΠΈΡΡ ΠΎΠ΄Π½ΡΡ , ΡΡΠΏΠ΅ΡΠ½ΠΎ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½Π½ΡΡ ΠΈ ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠΊΠ°Π·Π°Π»ΠΈΡΡ ΠΎΡΠΈΠ±ΠΎΡΠ½ΡΠ΅ (koper1, koper2, ker).
ΠΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ² Π² ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅:<οΏ½ΡΠΈΡΠ»ΠΎ>
ΠΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π² ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅:<οΏ½ΡΠΈΡΠ»ΠΎ>
ΠΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΎΡΠΈΠ±ΠΎΡΠ½ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ² Π² ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅:<οΏ½ΡΠΈΡΠ»ΠΎ>
Π Π΅Π·ΡΠ»ΡΡΠ°Ρ Ρ ΡΠ°Π½ΠΈΡΡΡ Π² ΡΠ°ΠΉΠ»Π΅:<οΏ½ΠΈΠΌΡ Π²ΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π°>
ΠΡΠ»ΠΈ ΠΏΡΡΡ ΠΊ ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠΌΡ ΡΠ°ΠΉΠ»Ρ filename1 Π½Π΅ Π²Π΅ΡΠ΅Π½ Π½Π°ΠΏΠΈΡΠ°ΡΡ:
ΠΡΠΈΠ±ΠΊΠ° ΠΎΡΠΊΡΡΡΠΈΡ ΡΠ°ΠΉΠ»Π°!
4. ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ° ΠΠ΅ΡΠ²Π°Ρ ΡΠ°Π·Π° ΡΡΠ°Π½ΡΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°, ΡΡΠΎ Π»Π΅ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π°Π½Π°Π»ΠΈΠ·. Π Π°Π±ΠΎΡΠ° Π»Π΅ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΠ° ΡΠΎΡΡΠΎΠΈΡ Π² ΡΠΎΠΌ, ΡΡΠΎΠ±Ρ ΡΠ³ΡΡΠΏΠΏΠΈΡΠΎΠ²Π°ΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠ΅ ΡΠ΅ΡΠΌΠΈΠ½Π°Π»ΡΠ½ΡΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»Ρ Π² Π΅Π΄ΠΈΠ½ΡΠ΅ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ, Π½Π°Π·ΡΠ²Π°Π΅ΠΌΡΠ΅ Π»Π΅ΠΊΡΠ΅ΠΌΠ°ΠΌΠΈ. ΠΠ°ΠΊΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ ΡΡΠΈΡΠ°ΡΡ Π»Π΅ΠΊΡΠ΅ΠΌΠ°ΠΌΠΈ Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΡΠ·ΡΠΊΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ, Π² Π½Π°ΡΠ΅ΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ ΡΡΠΎ ΠΌΠ°ΡΡΠΈΠ² ΠΊΠ»ΡΡΠ΅Π²ΡΡ ΡΠ»ΠΎΠ².
ΠΠ΅ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡ — ΡΡΠΎ ΡΡΠ°Π½ΡΠ»ΡΡΠΎΡ, Π²Ρ ΠΎΠ΄ΠΎΠΌ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΡΠ»ΡΠΆΠΈΡ ΡΠ΅ΠΏΠΎΡΠΊΠ° ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ², ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡΠ°Ρ ΠΈΡΡ ΠΎΠ΄Π½ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, Π° Π²ΡΡ ΠΎΠ΄ΠΎΠΌ — ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ Π»Π΅ΠΊΡΠ΅ΠΌ. ΡΡΠΎΡ Π²ΡΡ ΠΎΠ΄ ΠΎΠ±ΡΠ°Π·ΡΠ΅Ρ Π²ΡΡ ΠΎΠ΄ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΠ°.
Π¦Π΅ΠΏΠΎΡΠΊΠ° Π»Π΅ΠΊΡΠ΅ΠΌ ΠΎΠ±ΡΠ°Π·ΡΠ΅Ρ Π²Ρ ΠΎΠ΄ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΠ°, ΠΈΡΡΠ»Π΅Π΄ΡΡΡΠ΅Π³ΠΎ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠ΅ΡΠ²ΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ Π»Π΅ΠΊΡΠ΅ΠΌ — ΠΈΡ ΡΠΈΠΏΡ.
Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π°Π½Π°Π»ΠΈΠ·, ΠΈΠ»ΠΈ ΡΠ°Π·Π±ΠΎΡ — ΡΡΠΎ ΠΏΡΠΎΡΠ΅ΡΡ, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΈΡΡΠ»Π΅Π΄ΡΠ΅ΡΡΡ ΡΠ΅ΠΏΠΎΡΠΊΠ° Π»Π΅ΠΊΡΠ΅ΠΌ ΠΈ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΡΡΡ, ΡΠ΄ΠΎΠ²Π»Π΅ΡΠ²ΠΎΡΡΠ΅Ρ Π»ΠΈ ΠΎΠ½Π° ΡΡΡΡΠΊΡΡΡΠ½ΡΠΌΠΈ ΡΡΠ»ΠΎΠ²ΠΈΡΠΌΠΈ, ΡΠ²Π½ΠΎ ΡΡΠΎΡΠΌΡΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌ Π² ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ° ΡΠ·ΡΠΊΠ°.
Π Π°Π·Π±ΠΎΡ — ΠΎΠ΄Π½Π° ΠΈΠ· Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ½ΡΡΠ½ΡΡ ΡΠ°Π· ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ. ΠΠΎ ΡΠΎΠ²ΠΎΠΊΡΠΏΠ½ΠΎΡΡΠΈ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΡ ΠΏΡΠ°Π²ΠΈΠ» ΠΌΠΎΠΆΠ½ΠΎ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΏΠΎΡΡΡΠΎΠΈΡΡ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ΄Π΅Ρ ΠΏΡΠΎΠ²Π΅ΡΡΡΡ, ΠΈΠΌΠ΅Π΅Ρ Π»ΠΈ ΠΈΡΡ ΠΎΠ΄Π½Π°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΡΡ ΡΡΡΡΠΊΡΡΡΡ, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΠΌΡΡ ΡΡΠΈΠΌΠΈ ΠΏΡΠ°Π²ΠΈΠ»Π°ΠΌΠΈ.
ΠΡΡ ΠΎΠ΄ΠΎΠΌ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΠ° ΡΠ»ΡΠΆΠΈΡ Π΄Π΅ΡΠ΅Π²ΠΎ, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΡΡ ΡΡΡΡΠΊΡΡΡΡ, ΠΏΡΠΈΡΡΡΡΡ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅.(Π ΠΈΡΡΠ½ΠΎΠΊ 1)
Π ΠΈΡΡΠ½ΠΎΠΊ 1 — ΠΠ΅ΡΠ΅Π²ΠΎ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΡΡΡΡΠΊΡΡΡΡ.
ΠΠ° ΡΠΈΡΡΠ½ΠΊΠ΅ 1 ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΡΠ°Π½ΡΠ»ΠΈΡΠΎΠ²Π°ΡΡ Π½Π°ΡΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ: ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ (Comment_is_find, Comment_is_finish), case (Process_case), write, rewrite, assign (Process_begin, Process_write, Process_rewrite, Process_assign), ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ (Process_Var, Process_Vardescr), ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° Π½Π°Π»ΠΈΡΠΈΠ΅ ΠΎΡΠΈΠ±ΠΎΡΠ½ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ² (Errore_Program).
5. Π‘ΡΡΡΠΊΡΡΡΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ
ΠΠ°Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ:
errore_program — ΠΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΎΡΠΈΠ±ΠΎΠΊ, Π²ΠΊΠ»ΡΡΠ°Π΅Ρ Π² ΡΠ΅Π±Ρ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΌΠ΅ΡΡΠ° ΠΎΡΠΈΠ±ΠΊΠΈ, Π° ΡΠ°ΠΊ ΠΆΠ΅ Π²ΡΠ΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ»Π½ΠΎΠΉ ΠΎΡΠΈΠ±ΠΎΡΠ½ΠΎΠΉ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ. ΠΠ°Π½ΠΎΡΠΈΡ Π΄Π°Π½Π½ΡΠ΅ ΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π΅ ΠΎΡΠΈΠ±ΠΎΠΊ Π² ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ.
comment_is_find — ΠΡΠΎΠ²Π΅ΡΡΠ΅Ρ ΡΡΡΠΎΠΊΡ Π½Π° Π½Π°Π»ΠΈΡΠΈΠ΅ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΡ, ΠΈ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅Ρ Π΅Π³ΠΎ Π΅ΡΠ»ΠΈ ΡΡΠΎ ΡΠ°ΠΊ.
ReadingWord — ΠΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π°Π½Π°Π»ΠΈΠ·Π° ΡΠ΅ΠΊΡΡΠ° Π½Π° Π½Π°Π»ΠΈΡΠΈΠ΅ ΡΠΎΠΊΠ΅Π½ΠΎΠ². ΠΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΡΠΈΠΏ ΡΠΎΠΊΠ΅Π½Π° ΠΈ Π΄Π΅Π»Π°Π΅Ρ Π΅Π³ΠΎ ΠΏΡΠΎΠ²Π΅ΡΠΊΡ. ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΏΠΎΠ·ΠΈΡΠΈΡ Π½Π°ΡΠ°Π»Π°, ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² Π² ΡΠΎΠΊΠ΅Π½Π΅, Π° ΡΠ°ΠΊ ΠΆΠ΅ Π΅Π³ΠΎ ΡΠΈΠΏ. ΠΠ°ΠΎΠ΄Π½ΠΎ ΠΏΡΠΎΠΏΡΡΠΊΠ°Π΅Ρ ΠΏΡΠΎΠ±Π΅Π»Ρ.
process_begin — ΠΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Π±Π»ΠΎΠΊΠ° Begin… End, Π·Π°ΠΏΡΡΠΊΠ°Π΅ΡΡΡ ΠΏΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ ΠΊΠ°ΠΊ Π²ΠΎ Π²Ρ ΠΎΠ΄Π½ΠΎΠΌ ΡΠ°ΠΉΠ»Π΅ Π²ΡΡΡΠ΅ΡΠ΅Π½ΠΎ ΡΠ»ΠΎΠ²ΠΎ begin ΠΈ Π·Π°ΠΌΠ΅Π½ΡΠ΅Ρ ΠΈΡ Π½Π° {…}
Process_Var — ΠΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Π±Π»ΠΎΠΊΠ° ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ — var. ΠΡΠΎΠ²Π΅ΡΡΠ΅Ρ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ Π½Π° ΠΈΡ ΡΠΈΠΏ: ΠΎΠ±ΡΡΠ½ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΈΠ»ΠΈ ΠΌΠ΅ΡΠΊΠ°. ΠΠΎΡΠ»Π΅ ΡΠ΅Π³ΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°Π΅Ρ ΠΏΠΎΡΠΎΠΊ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π² ΡΡ ΠΈΠ»ΠΈ ΠΈΠ½ΡΡ ΡΡΠ½ΠΊΡΠΈΡ.
Comment_is_finish — ΠΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΎΠΊΠΎΠ½ΡΠ°Π½ΠΈΡ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΡ.
ReadingWordS — ΠΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΏΠΎΡΠΈΠΌΠ²ΠΎΠ»ΡΠ½ΠΎ ΠΏΡΠΎΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅Ρ ΡΠ°ΠΉΠ» ΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΠΊ ΡΠ΅ΠΌΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΠ½Π΅ΡΡΠΈ Π΄Π°Π½Π½ΡΠΉ ΡΠΈΠΌΠ²ΠΎΠ».
process_rewrite — ΠΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ³ΠΎ ΡΠ»ΠΎΠ²Π° rewrite.
process_assign — ΠΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ³ΠΎ ΡΠ»ΠΎΠ²Π° assign.
process_write — ΠΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ³ΠΎ ΡΠ»ΠΎΠ²Π° write
ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΊΠΎΠ½ΡΡΠ°Π½Ρ, ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΈ ΡΡΠ½ΠΊΡΠΈΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ.
ΠΠΎΠ½ΡΡΠ°Π½ΡΡ
Array_Key_Word — ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ°, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠ°Π²Π½Π° ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Ρ ΡΠ»ΠΎΠ² Π² ΠΌΠ°ΡΡΠΈΠ²Π΅. Π Π½Π°ΡΠ΅ΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ ΠΎΠ½ΠΎ ΡΠ°Π²Π½ΠΎ 16. ΠΡΠΎ ΡΠ°ΠΊΠΈΠ΅ ΡΠ»ΠΎΠ²Π° ΠΊΠ°ΠΊ: «begin», «end», «var», «real», «boolean», «false», «true», «type, «and», «or», «case», «assign», «rewrite» Ρ
allbuf — ΠΡΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ΅ ΠΊΠΎΠ΄Π° ΠΌΡ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²ΡΠ²Π°Π΅ΠΌ ΠΌΠ°ΡΡΠΈΠ² ΡΡΡΠΎΠΊ ΠΎΠ΄Π½Ρ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΡ ΡΡΡΠΎΠΊΡ, ΠΏΠΎΡΡΠΎΠΌΡ ΠΌΡ Π²Π²ΠΎΠ΄ΠΈΠΌ ΠΎΠ³ΡΠ°Π½ΠΈΡΠΈΡΠ΅Π»Ρ Π½Π° Π΄Π»ΠΈΠ½Ρ ΡΡΠΎΠΉ ΡΡΡΠΎΠΊΠΈ. Π Π΄Π°Π½Π½ΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°ΡΡ ΡΡΡ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ Π΄ΠΎ ΠΊΠΎΠ½ΡΠ° ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ «int», ΠΏΠΎΡΠ»Π΅ Π΄ΠΎΡΡΠΈΠΆΠ΅Π½ΠΈΡ ΡΡΠΎΠ³ΠΎ ΠΎΠ³ΡΠ°Π½ΠΈΡΠΈΡΠ΅Π»Ρ Π±ΡΠ΄Π΅Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠΌΠ΅Π½ΡΡΡ ΡΠΈΠΏ Π΄Π°Π½Π½ΡΡ .
Π€ΡΠ½ΠΊΡΠΈΠΈ ΠΈ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ
void IncDt () — ΡΡΠ½ΠΊΡΠΈΡ ΡΠ²Π΅Π»ΠΈΡΠ΅Π½ΠΈΠ΅ ΠΎΡΡΡΡΠΏΠ°.
void DecDt () — ΡΡΠ½ΠΊΡΠΈΡ ΡΠΌΠ΅Π½ΡΡΠ΅Π½ΠΈΡ ΠΎΡΡΡΡΠΏΠ°.
void copychar () — ΠΊΠΎΠΏΠΈΡΡΠ΅Ρ ΡΠ»ΠΎΠ²ΠΎ ΠΈΠ· Π²Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π° Π² Π²ΡΡ ΠΎΠ΄Π½ΠΎΠΉ Π±Π΅Π· ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ.
int fae () — Π²ΡΠΏΠΎΠΌΠΎΠ³Π°ΡΠ΅Π»ΡΠ½Π°Ρ ΠΏΠΎΠ΄ΡΡΠ½ΠΊΡΠΈΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Π°ΡΠΈΡΠΌΠ΅ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ.
int ae () — ΡΡΠ½ΠΊΡΠΈΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Π°ΡΠΈΡΠΌΠ΅ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ.
Π€ΡΠ½ΠΊΡΠΈΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΡΠ»Π΅Π΄ΡΡΡΠΈΡ ΠΊΠΎΠ΄ΠΎΠ²
// ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΡ ΡΠΈΠΏΠΎΠ² ΡΠ»ΠΎΠ²
Word_errore 0 // ΠΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ ΠΎΡΠΈΠ±ΠΎΡΠ½ΠΎΠ³ΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ°
Word_space 1 // ΠΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ ΡΠΈΠΌΠ²ΠΎΠ»Π° ΠΏΡΠΎΠ±Π΅Π»Π°
Word_string 2 // ΠΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ ΡΡΡΠΎΠΊΠΈ
Word_numb 3 // ΠΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ ΡΠΈΡΠ»Π°
Word_char 4 // ΠΡΠ±ΡΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»Ρ ΡΠ°Π·Π΄Π΅Π»ΠΈΡΠ΅Π»ΠΈ, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ n t ΠΈ ΡΠ΄
Π’Π°Π±Π»ΠΈΡΠ° ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΉ:
ΠΠ»ΡΡΠ΅Π²ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ | ΠΠΎΠΌΠ΅Ρ | |
KeyS_begin | ||
KeyS_end | ||
KeyS_var | ||
KeyS_real | ||
KeyS_boolean | ||
KeyS_false | ||
KeyS_true | ||
KeyS_array | ||
KeyS_type | ||
KeyS_and | ||
KeyS_or | ||
KeyS_case | ||
KeyS_assign | ||
KeyS_read | ||
KeyS_write | ||
KeyS_rewrite | ||
6. ΠΠΈΡΡΠΈΠ½Π³ ΠΊΠΎΠ΄Π°
// Gladky. cpp: ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΡΠΎΡΠΊΡ Π²Ρ ΠΎΠ΄Π° Π΄Π»Ρ ΠΊΠΎΠ½ΡΠΎΠ»ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
#include
#include
#include
#include
#include
FILE *filename1, *filename2;
const int allbuf = 10 000;//Π²Π΅ΡΡ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ ΡΠ΅ΠΊΡΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅ΡΡΡ ΠΎΠ΄Π½ΠΎΠΉ Π±ΠΎΠ»ΡΡΠΎΠΉ ΡΠΈΠΌΠ²ΠΎΠ»ΡΠ½ΠΎΠΉ ΡΡΡΠΎΠΊΠΎΠΉ, Π° Π½Π΅ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠΌ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ², ΡΡΠΎ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½Π°Ρ Π΄Π»ΠΈΠ½Π°
const int Array_Key_Word = 18;
char * KWs[Array_Key_Word] =
{
" begin", «end», «var», «real» ,
" boolean", «false», «true», «array» ,
" while", «do», «type», «and» ,
" or", «case», «assign», «read» ,
" write", «rewrite»
};// ΡΡΠΎ ΠΌΠ°ΡΡΠΈΠ² ΠΊΠ»ΡΡΠ΅Π²ΡΡ ΡΠ»ΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡΡΡ Π΄Π°Π½Π½ΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΎΠΉ
//ΠΊΠ»ΡΡΠ΅Π²ΡΠΉ ΡΠ»ΠΎΠ²Π°
//ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡ ΠΊΠ»ΡΡΠ΅Π²ΠΎΠΌΡ ΡΠ»ΠΎΠ²Ρ ΠΏΡΠΈΡΠ²ΠΎΠ΅Π½ Π½ΠΎΠΌΠ΅Ρ, ΡΡΠΎ Π±ΡΠ΄Π΅Ρ Π΄Π°Π»ΡΡΠ΅ ΠΈΡΠΏΠΎΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π² ΠΏΡΠΎΠ³Π΅
#define KeyS_begin 1
#define KeyS_end 2
#define KeyS_var 3
#define KeyS_real 4
#define KeyS_boolean 5
#define KeyS_false 6
#define KeyS_true 7
#define KeyS_array 8
#define KeyS_while 9
#define KeyS_do 10
#define KeyS_type 11
#define KeyS_and 12
#define KeyS_or 13
#define KeyS_case 14
#define KeyS_assign 15
#define KeyS_read 16
#define KeyS_write 17
#define KeyS_rewrite 18
//ΡΠΈΠΏΡ
//ΡΠΎΠΆΠ΅ ΠΏΡΠΈΡΠ²ΠΎΠ΅Π½Ρ Π½ΠΎΠΌΠ΅ΡΠ°
#define t_Int 1 //ΡΠ΅Π»ΡΠΉ
#define t_Real 2 //Π΄ΡΠΎΠ±Π½ΡΠΉ
#define t_Bool 3 //Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΠΉ
#define t_Array 4 //ΠΌΠ°ΡΡΠΈΠ²
#define t_File 5
const int cuservars = 6;
int uvars;
//ΡΠΈΠΏ «ΡΠ»ΠΎΠ²Π°»
#define Word_errore 0 //ΠΎΡΠΈΠ±ΠΊΠ°
#define Word_space 1 //ΠΏΡΠΎΠ±Π΅Π»Ρ
#define Word_string 2 //ΡΡΡΠΎΠΊΠ°
#define Word_numb 3 //ΡΠΈΡΠ»ΠΎ
#define Word_char 4 //ΡΠΈΠΌΠ²ΠΎΠ» (ΡΠ°Π·Π΄Π΅Π»ΠΈΡΠ΅Π»Ρ, …)
//ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎ ΡΡΠΎ Π½Π°ΡΠΈ Π²Ρ ΠΎΠ΄Π½ΡΠ΅ ΠΈ Π²ΡΡ ΠΎΠ΄Π½ΡΠ΅ Π±ΠΎΠ»ΡΡΠΈΠ΅ ΡΡΡΠΎΠΊΠΈ, Π² ΡΡΠΈ Π±ΠΎΠ»ΡΡΠΈΠ΅
//ΡΡΡΠΎΠΊΠΈ Π·Π°ΠΏΠΈΡΡΠ²Π°ΡΡΡΡ ΡΠ°ΠΊΠΆΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»Ρ ΠΊΠΎΠ½ΡΠ° ΡΡΡΠΎΠΊΠΈ 'n', ΡΡΠΎ ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π² Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠ΅ΠΌ Π΄Π»Ρ ΡΠΎΡΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π²ΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ΅ΡΡΠ° ΠΏΠΎΡΡΡΠΎΡΠ½ΠΎ
char instr[allbuf],
outstr[allbuf];
int inlen, outlen, inpos;//ΡΠ΅ΠΊΡΡΠΈΠ΅ ΠΏΠΎΠ·ΠΈΡΠΈΠΈ (ΡΡΡΠΎΠΊΠΈ Π²Ρ ΠΎΠ΄Π½ΡΠ΅, Π²ΡΡ ΠΎΠ΄Π½ΡΠ΅, ΠΏΠΎΠ·ΠΈΡΠΈΡ Π² ΡΡΡΠΎΠΊΠ΅ Π²Ρ ΠΎΠ΄Π½ΠΎΠΉ)
int koper1, koper2,ker;//ΡΡΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΡΡΠΈΡΠ°ΡΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ² Π²ΠΎ Π²Ρ ΠΎΠ΄Π½ΠΎΠΌ, Π²ΡΡ ΠΎΠ΄Π½ΠΎΠΌ ΡΠ°ΠΉΠ»Π΅ ΠΈ ΠΊΠΎΠ»-Π²ΠΎ ΠΎΡΠΈΠ±ΠΎΠΊ
int wlen; //Π΄Π»ΠΈΠ½Π° «ΡΠ»ΠΎΠ²Π°»
int wtype; //ΡΠΈΠΏ «ΡΠ»ΠΎΠ²Π°»
int wnumf; //0 — ΡΠ΅Π»ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ, 1 — Π΄ΡΠΎΠ±Π½ΠΎΠ΅
int dt; //ΡΠ°Π·ΠΌΠ΅Ρ ΠΎΡΡΡΡΠΏΠ° (ΠΎΡ Π½Π°ΡΠ°Π»Π° ΡΡΡΠΎΠΊΠΈ)
typedef struct var{ //ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΡΠΏΠΈΡΠΊΠ° ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
char s[64]; //ΠΈΠ΄Π΅Π½Ρ-Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ
int tp; //ΡΠΈΠΏ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ
var * next;
};
typedef struct types{ //ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΡΠΏΠΈΡΠΊΠ° ΡΠΈΠΏΠΎΠ²
char s[64]; //ΠΈΠ΄Π΅Π½Ρ-Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ
int tid;
types * next;
};
var *vars, *lvars; //ΡΠΏΠΈΡΠΊΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
//(Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΡΡ ΠΈ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΡ )
types * typeslist;
// ΠΏΡΠΎΡΠΎΡΠΈΠΏΡ ΡΡΠ½ΠΊΡΠΈΠΉ
int fle ();
// ΠΠ°Π»ΡΠ½Π΅ΠΉΡΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΎΠΏΠΈΡΡΠ²Π°ΡΡ ΡΠ°Π±ΠΎΡΡ Ρ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠΉ ΠΏΠ°ΠΌΡΡΡΡ,
// Π ΠΊΠΎΡΠΎΡΠΎΠΉ ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ ΡΠΏΠΈΡΠΎΠΊ Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌΠΈ, ΠΈΡ ΡΠΈΠΏΠ°ΠΌΠΈ ΠΈ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ
// ΠΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΡΠΎΡ ΡΠΏΠΈΡΠΎΠΊ, Π·Π°ΡΠ΅ΠΌ ΠΈΠ΄Π΅Ρ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΠ΅ ΡΠ°Π·Π΄Π΅Π»Π° ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
// Π² c++
//Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Π² ΡΠΏΠΈΡΠΎΠΊ
// Π³Π΄Π΅ gl — ΡΠΈΠΏ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ, Π³Π»ΠΎΠ±Π°Π»ΡΠ½Π°Ρ ΠΈΠ»ΠΈ Π»ΠΎΠΊΠ°Π»ΡΠ½Π°Ρ.
int addvar (int gl){
var *np, *p;
if (gl) p = vars; else p = lvars;
// int memcmp (const void *buf1, const void *buf2, size_t count);
// Π€ΡΠ½ΠΊΡΠΈΡ memcmp () ΡΡΠ°Π²Π½ΠΈΠ²Π°Π΅Ρ ΠΏΠ΅ΡΠ²ΡΠ΅ count ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ², Π°Π΄ΡΠ΅ΡΡΠ΅ΠΌΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°ΠΌΠΈ buf1 ΠΈ buf2.
// buf1 ΠΌΠ΅Π½ΡΡΠ΅ buf2 = ΠΌΠ΅Π½ΡΡΠ΅ Π½ΡΠ»Ρ
// buf1 ΡΠ°Π²Π΅Π½ buf2 = 0
// buf1 Π±ΠΎΠ»ΡΡΠ΅ buf2 = Π±ΠΎΠ»ΡΡΠ΅ Π½ΡΠ»Ρ
while (p) {
if (strlen (p->s)==wlen&&
!memcmp (p->s,&instr[inpos], wlen)) return 0;
p = p->next;
}
np = new var;
// void *memcpy (void *to, const void *from, size_t count);
// Π€ΡΠ½ΠΊΡΠΈΡ memcpy () ΠΊΠΎΠΏΠΈΡΡΠ΅Ρ count ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² ΠΈΠ· ΠΌΠ°ΡΡΠΈΠ²Π°,
// Π°Π΄ΡΠ΅ΡΡΠ΅ΠΌΠΎΠ³ΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠΌ from, Π² ΠΌΠ°ΡΡΠΈΠ², Π°Π΄ΡΠ΅ΡΡΠ΅ΠΌΡΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠΌ to.
// ΠΡΠ»ΠΈ Π·Π°Π΄Π°Π½Π½ΡΠ΅ ΠΌΠ°ΡΡΠΈΠ²Ρ ΠΏΠ΅ΡΠ΅ΠΊΡΡΠ²Π°ΡΡΡΡ, ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ memcopy () Π½Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΎ.
memcpy (np->s,&instr[inpos], wlen);
// ΠΏΠΎΡΠ»Π΅ ΠΈΠΌΠ΅Π½ΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΌΡ Π·Π°ΠΏΠΈΡΡΠ²Π°Π΅ΠΌ 0 (ΠΌΠ΅ΡΠΊΠ°
// ΡΡΠΎ Π±Ρ ΠΏΠΎΡΠΎΠΌ ΡΠΈΡΠ°ΡΡ ΠΈΠΌΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π΄ΠΎ ΡΡΠΎΠ³ΠΎ ΡΠΈΠΌΠ²ΠΎΠ»Π°)
np->s[wlen]=0;
// ΡΠΈΠΏ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π·Π°Π΄Π°Π΅ΠΌ ΠΊΠ°ΠΊ -1 (ΠΌΠ΅ΡΠΊΠ°, ΡΡΠΎ Π±Ρ ΠΏΠΎΡΠΎΠΌ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ)
np->tp = -1;
// ΠΡΠ»ΠΈ Π³Π»ΠΎΠ±Π°Π»ΡΠ½Π°Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ, ΡΠΎ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ ΡΡΠΎΡ ΡΠ»Π΅ΠΌΠ΅Π½Ρ Π² Π½Π°ΡΠ°Π»ΠΎ
// (Ρ.Π΅. ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΡΡ ΡΡΠ΅ΠΊ ΠΈΠ· ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ) ΡΠΏΠΈΡΠΊΠ° Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
// ΠΈΠ½Π°ΡΠ΅ Π² Π½Π°ΡΠ°Π»ΠΎ ΡΠΏΠΈΡΠΊΠ° Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΡ
if (gl) {
np->next = vars;
vars = np;
} else {
np->next = lvars;
lvars = np;
}
return 1;
}
int addnewtype ()
{
types *head=typeslist, *ntype;
while (head) {
if (strlen (head->s)==wlen&&
!memcmp (head->s,&instr[inpos], wlen)) return 0;
head = head->next;
}
ntype = new types;
memcpy (ntype->s,&instr[inpos], wlen);
ntype->s[wlen]=0;
ntype->tid = uvars;
uvars++;
ntype->next = typeslist;
typeslist = ntype;
return 1;
}
//ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΡΠΈΠΏΠ° ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ
// Π΅ΡΠ»ΠΈ gl — ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΠΎΡΡΠΈ = 1, ΡΠΎ ΡΡΠΎ Π³Π»ΠΎΠ±Π°Π»ΡΠ½Π°Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ
// ΠΈΠ½Π°ΡΠ΅ Π»ΠΎΠΊΠ°Π»ΡΠ½Π°Ρ
// Π΅ΡΡΡ ΡΠ΅ΡΡΡΠ΅ ΡΠΈΠΏΠ° ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ (ΠΎΠΏΠΈΡΠ°Π½Ρ Π²ΡΡΠ΅)
// ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΡ while ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°ΡΡΠΈΡΡΠΎΠ²Π°ΡΡ ΡΠ°ΠΊ:
// ΠΏΠΎΠΊΠ° ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° ΡΡΡΡΠΊΡΡΡΡ p ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ:
// Π΅ΡΠ»ΠΈ ΡΠΈΠΏ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ -1 ΡΠΎ ΠΏΡΠΈΡΠ²ΠΎΠΈΡΡ Π΅ΠΉ Π·Π°Π΄Π°Π½Π½ΡΠΉ ΡΠΈΠΏ
// ΠΈ Π΄Π°Π»Π΅Π΅ ΡΠ°Π³ Π²ΠΏΠ΅ΡΠ΅Π΄
void settype (int gl, int type){
var *p;
if (gl) p = vars; else p = lvars;
while (p) {
if (p->tp==-1) p->tp = type;
p = p->next;
}
}
// ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΡΠΈΠΏΠ° ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ
// ΠΏΡΠΈ ΡΡΠΎΠΌ ΡΠΈΠΏ ΡΠΆΠ΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΠ» Π·Π°ΡΠ°Π½Π΅Π΅ Π·Π°Π΄Π°Π½
int vartype (){
var * p;
// ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
p = lvars;
while (p) {
if (strlen (p->s)==wlen&& // Π΅ΡΠ»ΠΈ ΡΠ»ΠΎΠ²ΠΎ Π²ΠΎ Π²Ρ ΠΎΠ΄Π½ΠΎΠΌ ΡΠ΅ΠΊΡΡΠ΅ ΡΠ°Π²Π½ΠΎ Π½Π°Π·Π²Π°Π½ΠΈΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ (Π² ΡΠΏΠΈΡΠΊΠ΅),
!memcmp (p->s,&instr[inpos], wlen)) return p->tp; // ΡΠΎ Π²Π΅ΡΠ½ΡΡΡ ΡΠΈΠΏ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ
p = p->next;
}
// ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
p = vars;
while (p) {
if (strlen (p->s)==wlen&&
!memcmp (p->s,&instr[inpos], wlen)) return p->tp;
p = p->next;
}
return 0;
}
char* usertype ()
{
types * p;
// ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
p = typeslist;
while (p) {
if (strlen (p->s)==wlen&& // Π΅ΡΠ»ΠΈ ΡΠ»ΠΎΠ²ΠΎ Π²ΠΎ Π²Ρ ΠΎΠ΄Π½ΠΎΠΌ ΡΠ΅ΠΊΡΡΠ΅ ΡΠ°Π²Π½ΠΎ Π½Π°Π·Π²Π°Π½ΠΈΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ (Π² ΡΠΏΠΈΡΠΊΠ΅),
!memcmp (p->s,&instr[inpos], wlen)) return p->s; // ΡΠΎ Π²Π΅ΡΠ½ΡΡΡ ΡΠΈΠΏ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ
p = p->next;
}
return «0» ;
}
// ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ ΡΠΏΠΈΡΠΊΠ° ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
// ΠΏΡΠΎΡΡΠΎ ΡΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΎΠ±ΠΎΠΈΡ ΡΠΏΠΈΡΠΊΠΎΠ²
// ΠΊΠ°ΠΊ Π΄Π»Ρ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ , ΡΠ°ΠΊ ΠΈ Π΄Π»Ρ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΡΡ
void freevars (int gl){
var *p, *pp;
p = lvars;
while (p) {
pp = p;
p = p->next;
delete pp;
}
lvars = NULL;
if (gl) {
p = vars;
while (p) {
pp = p;
p = p->next;
delete pp;
}
vars = NULL;
}
}
// ΠΠ΄Π½Π° ΠΈΠ· Π³Π»Π°Π²Π½ΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΡΠ»ΠΎΠ²Π°, Π·Π΄Π΅ΡΡ ΠΏΠΎΡΠΈΠΌΠ²ΠΎΠ»ΡΠ½ΠΎ Π°Π½Π°Π»ΠΈΠ·ΠΈΡΡΠ΅ΡΡΡ ΡΠ΅ΠΊΡΡ
// ΠΠΊΡΠ°ΡΡΠ΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΡΠ°ΠΊ
// ΠΏΡΠΎΠ³Π° Π°Π½Π°Π»ΠΈΠ·ΠΈΡΡΠ΅Ρ ΡΠ΅ΠΊΡΡ ΠΏΠΎΡΠΈΠΌΠ²ΠΎΠ»ΡΠ½ΠΎ ΠΈ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π· ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΡΠΈΠΏ ΡΠΈΠΌΠ²ΠΎΠ»Π°
// (ΡΠΈΡΠ»ΠΎ, Π±ΡΠΊΠ²Π°, ΠΏΡΠΎΠ±Π΅Π» ΠΈΡ.Π΄.),
// ΠΊΠΎΠ³Π΄Π° ΡΠ΄Π°Π΅ΡΡΡ ΡΡΠ½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΡΠΎΠ³ΠΎ ΡΠΈΠΌΠ²ΠΎΠ»Π° (ΡΠΈΡΡΠ°, ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ ΠΈ Ρ. Π΄.)
// ΠΈΠ»ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² (ΠΏΠ΅ΡΠ΅ΠΌΠ½Π½Π°Ρ, ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ ΠΈ Ρ. Π΄.)
// Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΏΡΠ΅ΡΡΠ²Π°Π΅ΡΡΡ ΠΎΠ½Π° Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠΈΠΏ ΡΡΠΎΠ³ΠΎ ΡΠ»ΠΎΠ²Π°
//Π€ΡΠ½ΠΊΡΠΈΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΡΠ»Π΅Π΄ΡΡΡΠΈΡ ΠΊΠΎΠ΄ΠΎΠ²
////ΡΠΈΠΏ «ΡΠ»ΠΎΠ²Π°»
// Word_errore 0 //ΠΎΡΠΈΠ±ΠΊΠ°
// Word_space 1 //ΠΏΡΠΎΠ±Π΅Π»Ρ
// Word_string 2 //ΡΡΡΠΎΠΊΠ°
// w_numb 3 //ΡΠΈΡΠ»ΠΎ
// Word_char 4 //ΡΠΈΠΌΠ²ΠΎΠ» (ΡΠ°Π·Π΄Π΅Π»ΠΈΡΠ΅Π»Ρ, …)
// ΡΡΠ΅Π½ΠΈΠ΅ ΡΠ»ΠΎΠ²Π°
int ReadingWord ()
{
int st = 0;
char c; // ΡΠΈΠΌΠ²ΠΎΠ» ΠΊΠΎΡΠΎΡΡΠΉ ΡΡΠ°Π²Π½ΠΈΠ²Π°Π΅ΡΡΡ
wlen = 0;// Π΄Π»ΠΈΠ½Π° Π°Π½Π°Π»ΠΈΠ·ΡΡΡΠ΅ΠΌΠΎΠ³ΠΎ ΡΠ»ΠΎΠ²Π°
while (wlen+inpos
c = instr[inpos+wlen];
switch (st){ // ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»Π° ΠΈ Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠΈΠΉ Π²ΡΠ±ΠΎΡ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ
case 0:
if (c==' ' || c=='t' || c=='n') st = 1;
else
if ((c>='A' && c<='Z')||(c>='a' && c<='z')) st = 2;
else
if (c>='0' && c<='9') st = 3;
else
if (
c=='.' || c<=',' || c >=':' || c<=';' ||
c=='+' || c<='-' || c>='*' || c<='/' ||
c=='''
)
{ wlen = 1; return wtype = Word_char; }//Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ, ΡΡΠΎ ΡΡΠΎ ΡΠΈΠΌΠ²ΠΎΠ»
else { wlen = 0; return wtype = Word_errore; }
break;
case 1:
if (c==' ' || c=='t' || c=='n') wlen++;
else return wtype = Word_space; ///Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ, ΡΡΠΎ ΡΡΠΎ ΡΠΈΠΌΠ²ΠΎΠ» ΠΏΡΠΎΠ±Π΅Π»
break;
case 2:
if (
(c>='A' && c<='Z') ||
(c>='a' && c<='z') ||
(c>='0' && c<='9') ||
c=='_'
) wlen++;
else return wtype = Word_string;
break;
case 3:
if (c>='0' && c<='9') wlen++; else
if (c=='.'&& instr[inpos+wlen+1]≠'.') { // Π³ΠΎΠ²ΠΎΡΠΈΡ, ΡΡΠΎ Π΅ΡΡΡ ΡΠΎΡΠΊΠ° Π² ΡΠΈΡΠ»Π΅, Ρ. Π΅ ΠΎΠ½ΠΎ Π΄ΡΠΎΠ±Π½ΠΎΠ΅
wlen++;
st = 5;
}
else{
wnumf = 0;
return wtype = w_numb;//Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ, ΡΡΠΎ ΡΡΠΎ ΡΠΈΡΠ»ΠΎ
}
break;
case 5:
if (c>='0' && c<='9') wlen++; else {
wnumf = 1;
return wtype = w_numb;//Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ, ΡΡΠΎ ΡΡΠΎ ΡΠΈΡΠ»ΠΎ (Π΄ΡΠΎΠ±Π½ΡΡ ΡΠ°ΡΡΡ)
}
}
}
wlen = 0;
return 0;
}
//Π·Π°ΠΏΠΈΡΡ ΡΡΡΠΎΠΊΠΈ Π² Π²ΡΡ ΠΎΠ΄Π½ΠΎΠΉ Π±ΡΡΠ΅Ρ
void put_str (char * s){
int l = strlen (s);
memcpy (&outstr[outlen], s, l);
outlen += l;
}
int scmp (char * m, char * s, int n){
int l = strlen (s);
if (n>l) l = n;
/*int memicmp (buf1, buf2, cnt);
char *buf1; ΠΏΠ΅ΡΠ²ΡΠΉ Π±ΡΡΠ΅Ρ
char *buf2; Π²ΡΠΎΡΠΎΠΉ Π±ΡΡΠ΅Ρ
unsigned cnt; ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ²
Π€ΡΠ½ΠΊΡΠΈΡ memicmp Π»Π΅ΠΊΡΠΈΠΊΠΎΠ³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΡΡΠ°Π²Π½ΠΈΠ²Π°Π΅Ρ ΠΏΠ΅ΡΠ²ΡΠ΅ cnt
Π±Π°ΠΉΡΠΎΠ² ΠΈΠ· buf1 ΠΈ buf2 Π²Π½Π΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΡΠΈΠΏΠ° ΡΠ΅Π³ΠΈΡΡΡΠ°, Ρ. Π΅. Π±ΡΠΊ;
Π²Ρ Π²Π΅ΡΡ Π½Π΅Π³ΠΎ ΠΈ Π½ΠΈΠΆΠ½Π΅Π³ΠΎ ΡΠ΅Π³ΠΈΡΡΡΠΎΠ² ΡΡΠΈΡΠ°ΡΡΡΡ ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ½ΡΠΌΠΈ. Π€ΡΠ½ΠΊΡΠΈΡ
memicmp Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, ΡΠΊΠ°Π·ΡΠ²Π°ΡΡΠ΅Π΅ ΡΠΎΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠ΅ buf1 ΠΈ buf2,
Π° ΠΈΠΌΠ΅Π½Π½ΠΎ:
ΠΠ΅Π»ΠΈΡΠΈΠ½Π° ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅
ΠΌΠ΅Π½ΡΡΠ΅ 0 buf1 ΠΌΠ΅Π½ΡΡΠ΅, ΡΠ΅ΠΌ buf2
0 buf1 ΠΈΠ΄Π΅Π½ΡΠΈΡΠ½ΠΎ buf2
Π±ΠΎΠ»ΡΡΠ΅ 0 buf1 Π±ΠΎΠ»ΡΡΠ΅, ΡΠ΅ΠΌ buf2*/
return memicmp (m, s, l);
}
//Π·Π°ΠΏΠΈΡΡ ΡΠΈΠΌΠ²ΠΎΠ»Π° Π² Π²ΡΡ ΠΎΠ΄Π½ΠΎΠΉ Π±ΡΡΠ΅Ρ
void put_char (char c){
outstr[outlen] = c;
outlen++;
}
void copychar (){
memcpy (&outstr[outlen],&instr[inpos], wlen);
inpos += wlen;
outlen += wlen;
}
int wequ (char * s){
return (!scmp (&instr[inpos], s, wlen));
}
//ΠΏΡΠΎΠΏΡΡΠΊΠ°Π΅Ρ ΠΏΡΠΎΠ±Π΅Π»Ρ
void wskip (){
inpos += wlen;
}
void wstr (char * s){
// char *strncpy (char *dst, const char *src, size_t len);
// dst — ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° Π±ΡΡΠ΅Ρ Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΡ.
// src — ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° ΠΈΡΡ ΠΎΠ΄Π½ΡΡ ΡΡΡΠΎΠΊΡ.
// len — ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΊΠΎΠΏΠΈΡΡΠ΅ΠΌΡΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² (ΡΠΌ. ΡΠ°Π·Π΄Π΅Π» ΠΠ΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡ Π½ΠΈΠΆΠ΅).
// Π€ΡΠ½ΠΊΡΠΈΡ ΠΊΠΎΠΏΠΈΡΡΠ΅Ρ ΠΈΠ· ΡΡΡΠΎΠΊΠΈ src Π² Π±ΡΡΠ΅Ρ dst Π½Π΅ Π±ΠΎΠ»Π΅Π΅ ΡΠ΅ΠΌ len ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ²
// (Π²ΠΊΠ»ΡΡΠ°Ρ Π½ΡΠ»Π΅Π²ΠΎΠΉ ΡΠΈΠΌΠ²ΠΎΠ»), Π½Π΅ Π³Π°ΡΠ°Π½ΡΠΈΡΡΡ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ ΡΡΡΠΎΠΊΠΈ
// Π½ΡΠ»Π΅Π²ΡΠΌ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠΌ (Π΅ΡΠ»ΠΈ Π΄Π»ΠΈΠ½Π° ΡΡΡΠΎΠΊΠΈ src Π±ΠΎΠ»ΡΡΠ΅ ΠΈΠ»ΠΈ ΡΠ°Π²Π½Π° len).
// ΠΡΠ»ΠΈ Π΄Π»ΠΈΠ½Π° ΡΡΡΠΎΠΊΠΈ src ΠΌΠ΅Π½ΡΡΠ΅ len, ΡΠΎ Π±ΡΡΠ΅Ρ Π΄ΠΎΠ±ΠΈΠ²Π°Π΅ΡΡΡ Π΄ΠΎ len Π½ΡΠ»ΡΠΌΠΈ.
// Π€ΡΠ½ΠΊΡΠΈΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ dst.
strncpy (s,&instr[inpos], wlen);
}
//ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΡΠ»ΠΎΠ², ΠΈ Π΅ΡΠ»ΠΈ ΡΠΈΠΏ ΡΠ»ΠΎΠ²Π° ΠΏΡΠΎΠ±Π΅Π»Ρ, Π·Π°ΠΏΡΡΠΊΠ°Π΅Ρ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ, ΠΏΡΠΎΠΏΡΡΠΊΠ°ΡΡΡΡ ΠΏΡΠΎΠ±Π΅Π»Ρ
int ReadingWordS (){
ReadingWord ();
if (wtype==Word_space) {
wskip ();
ReadingWord ();
}
return wtype;
}
//ΡΠ²Π΅Π»ΠΈΡΠ΅Π½ΠΈΠ΅ ΠΎΡΡΡΡΠΏΠ°
void IncDt ()
{
dt += 2;
}
//ΡΠΌΠ΅Π½ΡΡΠ΅Π½ΠΈΠ΅ ΠΎΡΡΡΡΠΏΠ°
void DecDt ()
{
dt -= 2;
}
//Π²ΡΠ²ΠΎΠ΄ ΠΎΡΡΡΡΠΏΠ°
void put_dt ()
{
for (int i=0; i
}
//Π²ΡΠ²ΠΎΠ΄ ΠΎΡΡΡΡΠΏΠ°
void put_dt11()
{
char s[10];
for (int i=0; i
sprintf (s," %d", i/2);
put_str (s);
}
}
//ΠΎΡΠΊΡΡΡΠΈΠ΅ ΡΠ°ΠΉΠ»Π°
int RecText (char * s1)
{
if ((filename1 = fopen (s1, «rt»)) == NULL){
return 0;
}
fseek (filename1, 0, SEEK_END);
inlen = ftell (filename1);
fseek (filename1, 0, SEEK_SET);
if (inlen>allbuf) inlen = allbuf;
inlen = Process_read (instr, 1, inlen, filename1);
instr[inlen] = 0;
inpos = 0;
outlen = 0;
return 1;
}
//Π²ΡΠ²ΠΎΠ΄ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½Π½ΠΎΠ³ΠΎ ΡΠ΅ΠΊΡΡΠ°
int PutText (char * s2)
{
if ((filename2 = fopen (s2, «wt»)) == NULL){
return 0;
}
Process_write (outstr, outlen, 1, filename2);
return 1;
}
//Π²ΡΠ²ΠΎΠ΄ ΠΎΡΠΈΠ±ΠΎΡΠ½ΠΎΠ³ΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ°
void errore_program ()
{
put_char ('n');
put_str («< ΠΡΠΈΠ±ΠΊΠ°! > n»);
int k;
while (1){
ReadingWordS ();
if (instr[inpos]== ';' || inpos>= inlen) {
copychar ();
break;
};
copychar ();
}
ker++; // ΡΠ²Π΅Π»ΠΈΡΠ΅Π½ΠΈΠ΅ ΡΡΠ΅ΡΡΠΈΠΊΠ° ΠΎΡΠΈΠ±ΠΎΠΊ
}
int flabel (int gl);
//ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ
int Comment_is_find (){
return (instr[inpos]=='instr[inpos+1]=='*');
//ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° Π·Π°ΠΊΡΡΡΠΈΠ΅ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΡ
void Comment_is_finish (){
if (instr[inpos]=='{'){
outstr[outlen] = '/';
outstr[outlen+1] = '*';
inpos++;
outlen += 2;
while (instr[inpos]≠'}' && inpos
if (inpos>=inlen) return;
outstr[outlen] = instr[inpos];
inpos++;
outlen++;
}
outstr[outlen] = '*';
outstr[outlen+1] = '/';
inpos++;
outlen += 2;
}
else{
outstr[outlen] = '/';
outstr[outlen+1] = '*';
inpos += 2;
outlen += 2;
while (!(instr[inpos]=='*' && instr[inpos+1]==')')
&& inpos
if (inpos>=inlen) return;
outstr[outlen] = instr[inpos];
inpos++;
outlen++;
}
outstr[outlen] = '*';
outstr[outlen+1] = '/';
inpos += 2;
outlen += 2;
}
put_char ('n');
}
// Π·Π΄Π΅ΡΡ ΠΈΠ΄Π΅Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ,
// ΡΡΠ°Π²Π½ΠΈΠ²Π°ΡΡΡΡ ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΠΎΠ΅ Π½Π°ΠΌΠΈ ΡΠ»ΠΎΠ²ΠΎ ΡΠΎ ΡΠ»ΠΎΠ²ΠΎΠΌ ΠΈΠ· ΡΠΏΠΈΡΠΊΠ°
// ΠΈ Π΅ΡΠ»ΠΈ Π΄Π°, ΡΠΎ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΡΡΡ Π½ΠΎΠΌΠ΅Ρ ΡΠ»ΠΎΠ²Π° Π² ΡΠΏΠΈΡΠΊΠ΅
// ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ
int fkW (){
for (int i=0; i
if (!scmp (&instr[inpos], KWs[i], wlen))
return i+1;
}
return 0;
}
// Π²ΠΎΡ ΡΡΠΎ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΏΠΎΡΠ»Π΅ ΡΠ»ΠΎΠ²Π° var,
// Π·Π΄Π΅ΡΡ ΠΈΠ΄ΡΡ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΡ ΠΊ ΡΠ΅ΠΌ ΡΠ΅ΡΡΡΠ΅ΠΌ ΡΡΠ½ΠΊΡΠΈΡΠΌ ΡΠ°Π±ΠΎΡΠ°ΡΡΠΈΠΌ ΡΠΎ ΡΠΏΠΈΡΠΊΠΎΠΌ ΠΏΠ΅ΡΠ΅ΠΌΠ½Π½ΡΡ
// ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ : x1,., xn: ΡΠΈΠΏ;
int fIntRealBoolAr (int svar, int gl){
char s[256];
int label;
int sp = 0;
ReadingWordS ();
while (1){
if (wtype≠Word_string||fkW ()|| gl>0&&vartype ()) return 0;
addvar (gl);
if (svar) {
s[sp] = '&';
s[sp+1] = ' ';
sp += 2;
}
memcpy (&s[sp],&instr[inpos], wlen);
inpos += wlen;
sp += wlen;
ReadingWordS ();
if (instr[inpos]==','){
s[sp]=',';
inpos++;
sp++;
} else break;
ReadingWordS ();
} // while (1)
if (instr[inpos]==':'){ //ΡΠΈΠΏ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
inpos++;
ReadingWordS ();
if (wtype≠Word_string) return 0;
if (!scmp (&instr[inpos]," boolean", wlen)){
settype (gl, t_Bool);
put_str («int «);
wskip ();
memcpy (&outstr[outlen],&s[0], sp);
outlen += sp;
}
else
if (!scmp (&instr[inpos]," real", wlen)){
settype (gl, t_Real);
put_str («float «);
wskip ();
memcpy (&outstr[outlen],&s[0], sp);
outlen += sp;
}
else
if (!scmp (&instr[inpos]," integer", wlen)){
settype (gl, t_Int);
put_str («int «);
wskip ();
memcpy (&outstr[outlen],&s[0], sp);
outlen += sp;
}
else
if (!scmp (&instr[inpos], usertype (), wlen)){
put_str (usertype ());
put_str (««);
wskip ();
memcpy (&outstr[outlen],&s[0], sp);
outlen += sp;
}
else
if (!scmp (&instr[inpos]," array", wlen)){
wskip ();
settype (gl, t_Array);
ReadingWordS ();
if (instr[inpos]≠'[') return 0;
s[sp]='[';
inpos++;
sp++;
while (1) {
ReadingWordS ();
if (instr[inpos]≠'1') return 0;
wskip ();
ReadingWordS ();
if (instr[inpos]≠'.'||instr[inpos+1]≠'.')
return 0;
inpos += 2;
ReadingWordS ();
if (wtype≠w_numb) return 0;
memcpy (&s[sp],&instr[inpos], wlen);
inpos += wlen;
sp += wlen;
ReadingWordS ();
if (instr[inpos]==']'){
s[sp]=']';
inpos++;
sp++;
break;
}
if (instr[inpos]==','){
inpos++;
s[sp]=']';
sp++;
s[sp]='[';
sp++;
}
}
ReadingWordS ();
if (wtype≠Word_string) return 0;
if (scmp (&instr[inpos]," of", wlen)) return 0;
wskip ();
ReadingWordS ();
if (wtype≠Word_string) return 0;
if (scmp (&instr[inpos]," real", wlen)) return 0;
wskip ();
put_str («float «);
memcpy (&outstr[outlen],&s[0], sp);
outlen += sp;
}
if (wequ («file»))
{
wskip ();
ReadingWordS ();
if (!wequ («of»)) return 0;
wskip ();
ReadingWordS ();
put_str («FILE *»);
memcpy (&outstr[outlen],&s[0], sp);
outlen += sp;
wskip ();
settype (gl, t_File);
}
}
else return 0;
return 1;
}
//ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ Π±Π»ΠΎΠΊΠ° ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
int Process_var (int gl){
inpos += wlen;
ReadingWordS ();
do{
koper1++;
if (Comment_is_find ()){ //ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ
Comment_is_finish ();
koper2++;
continue;
}
put_dt ();
if (!fIntRealBoolAr (0,gl)) errore_program ();
else koper2++;
ReadingWordS ();
if (instr[inpos]≠';')
return 0;
wskip ();
put_str («;n»);
ReadingWordS ();
if (wtype≠Word_string || fkW ())
return 1;
}while (1);
}
//ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π±Π»ΠΎΠΊΠ° ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
int Process_vardescr (){
inpos += wlen;
int k, svar;
ReadingWordS ();
do{
k = fkW ();
svar = k==KeyS_var;
if (svar) {
wskip ();
ReadingWordS ();
}
if (!fIntRealBoolAr (svar, 0)) return 0;
ReadingWordS ();
if (instr[inpos]≠';') return 1;
wskip ();
put_str («, «);
ReadingWordS ();
k= fkW ();
if (wtype≠Word_string || k&&k≠KeyS_var) return 0;
}while (1);
}
int fbegin (int k);
//ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° case
int Process_case ()
{
int beg;
wskip ();
put_dt ();
put_str («switch»);
put_str («(»);
ReadingWordS ();
copychar ();
put_str («){n»);
ReadingWordS ();
if (!wequ («of»)) return 0;
wskip ();
while (1)
{
ReadingWordS ();
if (wequ («end»)) {
wskip ();
inpos++;
DecDt ();
put_dt ();
put_str («}n»);
break;
}
put_dt ();
put_str («case «);
if ((wtype≠Word_string)&&(wtype≠w_numb)&&(wtype≠Word_char)) return 0;
if (instr[inpos]==''') {wskip (); put_str («'»);}
ReadingWordS ();
copychar ();
if (instr[inpos]==''') {wskip (); put_str («'»);}
ReadingWordS ();
if (instr[inpos]≠':') return 0;
copychar ();
ReadingWordS ();
beg = 0; // ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌ case 1: blabla;
if (wequ («begin»)) {wskip (); beg = 1;}; // beg — Π΄Π»Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ begin end Π² ΠΊΠ΅ΠΉΡ.
put_str («n»);
IncDt ();
fbegin (3); // 3 — ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ case
DecDt ();
if (wequ («end»)&&beg)
{
put_dt ();
put_str («break;n»);
wskip ();
if (instr[inpos]==';') inpos++;
} else { put_dt (); put_str («break;n»);}
}
return 1;
}
int Process_rewrite ()
{
wskip ();
if (instr[inpos]≠'(') return 0;
inpos++;
put_dt ();
put_str («fcreate (»);
ReadingWordS ();
if (vartype ()≠t_File) return 0;
copychar ();
if (instr[inpos]≠')') return 0;
inpos++;
put_str («)»);
if (instr[inpos]≠';') return 0;
inpos++;
put_str («;n»);
return 1;
}
int Process_reset ()
{
wskip ();
if (instr[inpos]≠'(') return 0;
inpos++;
ReadingWordS ();
wskip ();
if (instr[inpos]≠')') return 0;
inpos++;
if (instr[inpos]≠';') return 0;
inpos++;
return 1;
}
int Process_assign ()
{
int t;
wskip ();
if (instr[inpos]≠'(') return 0;
inpos++;
ReadingWordS ();
if (t = vartype ())
{
if (t==t_File)
{
put_dt ();
copychar ();
put_str («= fopen (««);
if (instr[inpos]≠',') return 0;
inpos+=2;
while (instr[inpos]≠ ''')
{
outstr[outlen] = instr[inpos];
inpos++;
outlen++;
}
inpos++;
put_str (««»);
put_str («,» w" «);
ReadingWordS ();
if (instr[inpos]≠')') return 0;
inpos++;
put_str («)»);
if (instr[inpos]≠';') return 0;
inpos++;
put_str («;n»);
return 1;
}
}
return 1;
}
//ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° read
int Process_read (int ln){
char s[256];
int sp;
int t;
wskip ();
put_dt ();
ReadingWordS ();
if (instr[inpos]≠'(') return 0;
inpos++;
ReadingWordS ();
if (t = vartype ())
{
if (t==t_File)
{
put_str («fscanf (»);
copychar ();
if (instr[inpos]≠',') return 0;
inpos++;
put_str («,»);
while (instr[inpos]≠ ')')
{
outstr[outlen] = instr[inpos];
inpos++;
outlen++;
}
ReadingWordS ();
if (instr[inpos]≠')') return 0;
inpos++;
put_str («)»);
if (instr[inpos]≠';') return 0;
inpos++;
put_str («;n»);
return 1;
}
}
put_str («scanf»);
put_str («(» «);
sp=0;
while (1) {
ReadingWordS ();
if (wtype≠Word_string) return 0;
t = vartype ();
if (t==t_Int) put_str («%d»);
else if (t==t_Real) put_str («%f»);
else return 0;
s[sp] = '&';
sp += wlen;
ReadingWordS ();
memcpy (&s[sp],&instr[inpos], wlen);
inpos += wlen;
sp += wlen;
ReadingWordS ();
if (instr[inpos]≠',') break;
s[sp] = instr[inpos];
inpos++;
sp++;
}
put_str (««,»);
memcpy (&outstr[outlen], s, sp);
outlen += sp;
ReadingWordS ();
if (instr[inpos]≠')') return 0;
inpos++;
put_char (')');
ReadingWordS ();
if (instr[inpos]≠';') return 0;
inpos++;
if (ln) put_str («; printf („\n“);n»);
else put_str («;n»);
return 1;
}
//ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° write
int Process_write (int ln){
char s[256];
int sp;
int t;
wskip ();
put_dt ();
ReadingWordS ();
if (instr[inpos]≠'(') return 0;
inpos++;
/* ΠΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΡΠ°ΠΉΠ»Π° */
ReadingWordS ();
if (t = vartype ())
{
if (t==t_File)
{
put_str («fprintf (»);
copychar ();
if (instr[inpos]≠',') return 0;
inpos+=2;
put_str («,» «);
while (instr[inpos]≠ ''')
{
outstr[outlen] = instr[inpos];
inpos++;
outlen++;
}
inpos++;
put_str (««»);
ReadingWordS ();
if (instr[inpos]≠')') return 0;
inpos++;
put_str («)»);
if (instr[inpos]≠';') return 0;
inpos++;
put_str («;n»);
return 1;
}
}
put_str («printf»);
put_char ('(');
ReadingWordS ();
if (instr[inpos]≠''') return 0;
put_char ('" ');
inpos++;
while (instr[inpos]≠ ''') {
outstr[outlen] = instr[inpos];
inpos++;
outlen++;
}
inpos++;
if (instr[inpos]==')')
{
if (ln) put_str («\n»);
put_char (')');
inpos++;
if (instr[inpos]≠';') return 0;
inpos++;
put_str («;n»);
return 1;
}
if (instr[inpos]≠',') return 0;
inpos++;
sp=0;
while (1) {
ReadingWordS ();
if (wtype≠Word_string) return 0;
t = vartype ();
if (t==t_Int) put_str («%d»);
else if (t==t_Real) put_str («%f»);
else return 0;
memcpy (&s[sp],&instr[inpos], wlen);
inpos += wlen;
sp += wlen;
ReadingWordS ();
if (instr[inpos]≠',') break;
s[sp] = instr[inpos];
inpos++;
sp++;
}
if (ln) put_str («\n»);
put_char ('" ');
ReadingWordS ();
put_str («,»);
memcpy (&outstr[outlen], s, sp);
outlen += sp;
ReadingWordS ();
if (instr[inpos]≠')') return 0;
inpos++;
put_char (')');
ReadingWordS ();
if (instr[inpos]≠';') return 0;
inpos++;
put_str («;n»);
return 1;
}
//ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π°ΡΠΈΡΠΌΠ΅ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ
int fae () {
ReadingWordS ();
if (instr[inpos]=='+'){
copychar ();
}
else
if (instr[inpos]=='-'){
copychar ();
}
while (1){
ReadingWordS ();
if (wtype==w_numb) copychar (); else
if (wtype==Word_string&&vartype ()==t_Int) copychar (); else
if (wtype==Word_string&&vartype ()==t_Real) copychar (); else
if (wtype==Word_string&&vartype ()==t_Array) {
copychar ();
ReadingWordS ();
if (instr[inpos]=='['){
copychar ();
while (1) {
if (!fae ()) return 0;
put_str («-1»);
ReadingWordS ();
if (instr[inpos]==']'){
copychar ();
break;
}
if (instr[inpos]==','){
wskip ();
put_str («][»);
}
}
}
} else
if (instr[inpos]=='('){
copychar ();
if (!fae ()) return 0;
ReadingWordS ();
if (instr[inpos]≠')') return 0;
inpos++;
put_char (')');
}
else return 0;
ReadingWordS ();
char c = instr[inpos];
if (c=='+'||c=='-'||c=='*'||c=='/') copychar ();
else return 1;
}
}
//ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π°ΡΠΈΡΠΌΠ΅ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ
int ae (){
char c, c1;
if (!fae ()) return 0;
ReadingWordS ();
c = instr[inpos];
c1 = instr[inpos+1];
if (c=='<'&&c1=='>') {
inpos += 2;
put_str («≠»);
}
else
if (c=='=') {
inpos++;
put_str («==»);
}
else
if (c=='>'||c=='<') {
if (c1=='='){
inpos += 2;
}
else copychar ();
}
ReadingWordS ();
if (!fae ()) return 0;
return 1;
}
//ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ
int fle () {
int k;
char c, c1;
int arifm, ip, op;
while (1){
ReadingWordS ();
k = fkW ();
int ip, op;
ip = inpos;
op = outlen;
arifm = 0;
if (instr[inpos]=='+'||
instr[inpos]=='('||
instr[inpos]=='-'||
wtype==Word_string&&!fkW () ||
wtype==w_numb)
arifm = ae ();
if (!arifm){
inpos = ip;
outlen = op;
ReadingWordS ();
k = fkW ();
//———
if (wtype==Word_string&&k==KeyS_true){
wskip ();
put_char ('1');
}
else
if (wtype==Word_string&&k==KeyS_false) {
wskip ();
put_char ('0');
}
else
if (wtype==Word_string&&vartype ()==t_Bool) copychar (); else
if (instr[inpos]=='('){
copychar ();
if (!fle ()) return 0;
ReadingWordS ();
if (instr[inpos]≠')') return 0;
inpos++;
put_char (')');
}
else return 0;
}
ReadingWordS ();
k = fkW ();
if (k==KeyS_or) put_str («||»); else
if (k==KeyS_and) put_str («&&»);
else return 1;
wskip ();
}
}
//ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΠ΅
int asign (){
int type = vartype ();
if (!(type==t_Bool||type==t_Real||type==t_Int)) return 0;
//put_char ('n');
put_dt ();
copychar ();
ReadingWordS ();
if (instr[inpos]≠':'||instr[inpos+1]≠'=')
return 0;
put_char ('=');
inpos += 2;
if (type==t_Bool) {
if (!fle ()) return 0;
}
else
if (!fae ()) return 0;
ReadingWordS ();
if (instr[inpos]≠';') return 0;
copychar ();
put_char ('n');
return 1;
}
//ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° while
int fwhile () fkW ()≠KeyS_do) return 0;
wskip ();
put_str («)n»);
return 1;
//ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π±Π»ΠΎΠΊΠ° ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ²
int fbegin (int gl){
int rep_n = 0;
if (gl≠3) wskip ();
if (gl==1) put_str («nnvoid main ()n»);
if ((gl≠2)||(gl≠3)) {
put_dt ();
put_str («{n»);
IncDt ();
}
int b;
do{
b = 1;
ReadingWordS ();
if (Comment_is_find ()){
Comment_is_finish ();
continue;
}
switch (fkW ()){
case KeyS_begin:
koper1++;
if (!fbegin (0)) return 0;
koper2++;
break;
case KeyS_case:
koper1++;
if (!Process_case ()) return 0;
break;
case KeyS_read:
koper1++;
if (!Process_read (0)) return 0;
koper2++;
break;
case KeyS_write:
koper1++;
if (!Process_write (0)) return 0;
koper2++;
break;
case KeyS_rewrite:
koper1++;
if (!Process_rewrite ()) return 0;
koper2++;
break;
case KeyS_assign:
koper1++;
if (!Process_assign ()) return 0;
koper2++;
break;
case KeyS_while:
koper1++;
if (!fwhile ()) return 0;
koper2++;
break;
case KeyS_end:
koper1++;
if (gl == 3) return 3;
wskip ();
DecDt ();
put_dt ();
put_str («}n»);
ReadingWordS ();
if (gl==1&&instr[inpos]=='.' ||
gl≠1&&instr[inpos]==';'){
wskip ();
koper2++;
return 1;
}
else
{
wskip ();
return 0;
}
case 0:
if (!asign ()) return 0; //ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΠ΅
break;
default:
return 0;
}
} while (b);
return 1;
}
//Π³Π»Π°Π²Π½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ ΡΡΠ΅ΠΊΡΡΠ°
//ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ΅ΠΊΡΡΠ°
int Translate ()
{
int b;
int k;
koper1 = koper2 = 0;
put_str («#include nn»); //Π΄Π»Ρ scanf ΠΈ printf
do{
b = 1;
ReadingWordS ();
k = fkW (); //ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ
if (k==KeyS_var){ //Π½Π°ΡΠ°Π»ΠΎ Π±Π»ΠΎΠΊΠ° ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
koper1++;
if (!Process_var (1)) {
errore_program ();
}
else koper2++; }
else
if (k==KeyS_type){ //Π±Π»ΠΎΠΊ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ ΡΠΈΠΏΠΎΠ²
koper1++;
if (!frecord ()) {
errore_program ();
}
else koper2++;
}
else
if (k==KeyS_begin){ //Π½Π°ΡΠ°Π»ΠΎ Π±Π»ΠΎΠΊΠ° ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ²
if (!fbegin (1)) {
errore_program ();
}
b = 0;
}
else
if (Comment_is_find ()) Comment_is_finish (); //ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ
else {
koper1++;
errore_program ();
};
} while (b==1);
if (instr[inpos]≠'.') return 0; //ΡΠΎΡΠΊΠ° Π² ΠΊΠΎΠ½ΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ
inpos++;
return 1;
}
void main ()
{
setlocale (LC_ALL," Russian");
char s[128];
printf («ΠΠ²Π΅Π΄ΠΈΡΠ΅ ΠΈΠΌΡ Π²Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π°: «);
scanf («%s», s);
if (!RecText (s))
{
printf («nΠΡΠΈΠ±ΠΊΠ° ΠΎΡΠΊΡΡΡΠΈΡ ΡΠ°ΠΉΠ»Π°!»);
}
vars = NULL;
lvars = NULL;
uvars = cuservars;
Translate ();
freevars (1);
printf («nΠΠ²Π΅Π΄ΠΈΡΠ΅ ΠΈΠΌΡ Π²ΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π°:»);
scanf («%s», s);
if (!PutText (s))
{
printf («nΠΡΠΈΠ±ΠΊΠ° ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠ°ΠΉΠ»Π°!»);
}
printf («nΠΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ²»
" Π² ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠΌ ΡΠ°ΠΉΠ»Π΅: %d", koper1);
printf («nΠΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ²»
" Π² ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΠΎΠΌ ΡΠ°ΠΉΠ»Π΅: %d", koper2);
printf («nΠΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΎΡΠΈΠ±ΠΎΡΠ½ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ²»
" ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ Π±ΡΠ»ΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½Ρ: %d", ker);
printf («nnΠ Π΅Π·ΡΠ»ΡΡΠ°Ρ Ρ ΡΠ°Π½ΠΈΡΡΡ Π² ΡΠ°ΠΉΠ»Π΅: %s», s);
fclose (filename1);
fclose (filename2);
while (!kbhit ()) ;
}
7. Π Π΅Π·ΡΠ»ΡΡΠ°ΡΡ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ
ΠΠ° Π²Ρ ΠΎΠ΄Π΅:
var
i, k: integer;
m:real;
fl:file of integer;
begin
assign (fl,'c:tuctuc.txt');
rewrite (fl);
write (fl,'bla');
Case k of
1: Begin
End;
2: Begin
End;
3: Begin
writeln ('privet!');
readln ();
End;
4: Begin
End;
end;
End.
ΠΠ° Π²ΡΡ ΠΎΠ΄Π΅:
#include
int i, k;
float m;
FILE *fl;
void main ()
{
fl = fopen («c:tuctuc.txt» ," w");
fcreate (fl);
fprintf (fl," bla");
switch (k){
case 1:
{
break;
case 2:
{
break;
case 3:
{
break;
case writeln
< ΠΡΠΈΠ±ΠΊΠ°! >
('privet!');
ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΊΠΎΠ΄ ΡΠ·ΡΠΊ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ
ΠΠ° ΡΠΈΡΡΠ½ΠΊΠ΅ 1 ΡΠΊΡΠΈΠ½ΡΠΎΡ ΡΠΊΡΠ°Π½Π° ΠΏΠΎΡΠ»Π΅ ΡΠ°Π±ΠΎΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ
Π ΠΈΡΡΠ½ΠΎΠΊ 1 — Π Π΅Π·ΡΠ»ΡΡΠ°Ρ ΡΠ°Π±ΠΎΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
ΠΡ ΠΏΡΠΈΠΎΠ±ΡΠ΅Π»ΠΈ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ Π½Π°Π²ΡΠΊΠΈ ΠΏΡΠΈ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΡΡΠ°Π½ΡΠ»ΡΡΠΎΡΠ°. ΠΡ ΡΠ°ΠΊ ΠΆΠ΅ ΠΈΠ·ΡΡΠΈΠ»ΠΈ ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ Π²ΠΈΠ΄Ρ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΡ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΠΎΠ² ΠΈ ΡΠΏΠΎΡΠΎΠ±Ρ ΠΈΡ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ, Π° ΡΠ°ΠΊ ΠΆΠ΅ ΡΠ·Π½Π°Π»ΠΈ ΠΏΡΠΈΠ½ΡΠΈΠΏΡ ΡΠ°Π±ΠΎΡΡ ΡΠ°ΠΊΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ. Π‘ΠΎΠ·Π΄Π°Π»ΠΈ ΡΡΠ°Π³ΠΌΠ΅Π½Ρ ΡΡΠ°Π½ΡΠ»ΡΡΠΎΡΠ° ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠ΅Π³ΠΎ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ΠΈΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ°ΡΡΡ ΠΊΠΎΠ΄Π°, Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ°ΡΡΠΈ Π±ΡΠ»ΠΈ ΡΠΏΡΠΎΡΠ΅Π½Ρ, Π½ΠΎ ΡΡΠΎΠΈΡ ΡΠΊΠ°Π·Π°ΡΡ, ΡΡΠΎ Π»ΡΠ±ΠΎΠΉ ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΉ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ»ΠΎΠΆΠ½ΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΎΠΉ.
ΠΡΠ½ΠΎΠ²Π½Π°Ρ
ΠΠ°ΠΉΡΠ΅Π²Π°, Π. Π. ΠΠ»Π³ΠΎΡΠΈΡΠΌΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΠ·ΡΠΊΠΈ ΠΈ ΠΏpoΠ³paΠΌΠΌΠΈpoΠ²aΠ½ΠΈe / Π. Π. ΠaΠΉΡeΠ²a. — Π.: ΠΠΠΠ£, 1996.
Π€apoΠ½oΠ², Π. Π. ΠpoΠ³paΠΌΠΌΠΈpoΠ²aΠ½ΠΈe Π½a ΠΠΠΠ Π² ΡpeΠ΄e Π’ΡpΠ±o-ΠaΡΠΊaΠ»Ρ / Π. Π. Π€apoΠ½oΠ². — Π.: ΠΠΠ’Π£, 1999.
Alfred V. Aho Jeffrey D. Ullman The theory of parsing, translation and compiling Prentice-Hall, inc Englewood Clifis, N. J., 1972
ΠoΠΏoΠ»Π½ΠΈΡeΠ»ΡΠ½aΡ
1. ΠpaΡoΠ², A. Π. ΠpoΠ³paΠΌΠΌΠΈpoΠ²aΠ½ΠΈe Π½a Borland C ΠΏoΠ΄ MS Windows / A. Π. ΠpaΡoΠ². — Π‘ΠΠ±.: Π‘ΠΠ±ΠΠ£Π’, 2001.
2. ΠaΠΉΡeΠ²a, Π. Π. ΠeΡoΠ΄ΠΈΡeΡΠΊΠΈe ΡΠΊaΠ·aΠ½ΠΈΡ Π΄Π»Ρ Π²ΡΠΏoΠ»Π½eΠ½ΠΈΡ ΠΊΡpΡoΠ²oΠ³o ΠΏpoeΠΊΡa ΠΏo Π΄ΠΈΡΡΠΈΠΏΠ»ΠΈΠ½e «AΠ»Π³opΠΈΡΠΌΠΈΡeΡΠΊΠΈe ΡΠ·ΡΠΊΠΈ ΠΈ ΠΏpoΠ³paΠΌΠΌΠΈpoΠ²aΠ½ΠΈe» ΠΏo ΡΠΏeΡ. 2203 / Π. Π. ΠaΠΉΡeΠ²a, Π. Π. Π‘ΡopΠΈΠ½, E. A. EpoΡ ΠΈΠ½a, 2005.