_constpu 2.0 5.09Β Β Β Β 497Β 0.22
_addΒ Β Β Β 1.7 5.18Β Β Β 1683Β 0.05
_getargΒ 1.5 5.26Β Β Β 1683Β 0.05
_yyparse 0.6 5.30Β Β Β Β Β Β 3 11.11
$
Π Π΅Π·ΡΠ»ΡΡΠ°ΡΡ, ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΡΠ΅ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²ΡΠΈΠΊΠ°, ΡΠ°ΠΊΠΆΠ΅ ΠΏΠΎΠ΄Π²Π΅ΡΠΆΠ΅Π½Ρ ΡΠ»ΡΡΠ°ΠΉΠ½ΡΠΌ Π²Π°ΡΠΈΠ°ΡΠΈΡΠΌ, ΠΊΠ°ΠΊ ΠΈ ΡΠ΅, ΡΡΠΎ ΠΏΠΎΠ»ΡΡΠ΅Π½Ρ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ
time
, ΠΏΠΎΡΡΠΎΠΌΡ ΠΈΡ
ΡΠ»Π΅Π΄ΡΠ΅Ρ ΡΡΠΈΡΠ°ΡΡ Π»ΠΈΡΡ ΡΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ Π½Π°ΡΡΠΎΡΡΠΈΡ
Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ, Π° Π½Π΅ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ Π·Π° Π°Π±ΡΠΎΠ»ΡΡΠ½ΡΡ ΠΈΡΡΠΈΠ½Ρ. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ ΠΏΡΠΈ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΌΠΎΠ³ΡΡ ΠΏΠΎΠΌΠΎΡΡ ΠΏΠΎΠ²ΡΡΠΈΡΡ Π±ΡΡΡΡΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ
hoc
. ΠΡΠΈΠ±Π»ΠΈΠ·ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΡΠ΅ΡΡΡ ΡΠ°ΡΡΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΡΡΠ°ΡΠΈΡΡΡ Π½Π° Π·Π°ΠΏΠΈΡΡ ΠΈ ΡΡΠ΅Π½ΠΈΠ΅ ΠΈΠ· ΡΡΠ΅ΠΊΠ°. ΠΠ°ΠΊΠ»Π°Π΄Π½ΡΠ΅ ΡΠ°ΡΡ
ΠΎΠ΄Ρ Π΅ΡΠ΅ Π±ΠΎΠ»Π΅Π΅ Π²ΠΎΠ·ΡΠ°ΡΡΡΡ, Π΅ΡΠ»ΠΈ ΠΌΡ Π±ΡΠ΄Π΅ΠΌ ΡΡΠΈΡΡΠ²Π°ΡΡ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΉ ΡΠ²ΡΠ·ΠΈ
csv
ΠΈ
cret
ΠΌΠ΅ΠΆΠ΄Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°ΠΌΠΈ Π‘ΠΈ (ΡΡΠ½ΠΊΡΠΈΡ
mcount
ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ ΡΠ°ΡΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Ρ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ, ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π΅Π΅
-Ρ
.). ΠΠ°ΠΌΠ΅Π½Π° Π²ΡΠ·ΠΎΠ²ΠΎΠ² ΡΡΠ½ΠΊΡΠΈΠΉ Π½Π° ΠΌΠ°ΠΊΡΠΎΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΡ Π΄Π°ΡΡ Π·Π°ΠΌΠ΅ΡΠ½ΡΡ ΡΠ°Π·Π½ΠΈΡΡ Π²ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ.
ΠΠ»Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΡΡΠΎΠ³ΠΎ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΌΡ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»ΠΈ
code.c
, Π·Π°ΠΌΠ΅Π½ΠΈΠ² Π²ΡΠ·ΠΎΠ²Ρ
push
ΠΈ
pop
Π½Π° ΠΌΠ°ΠΊΡΠΎΠΊΠΎΠΌΠ°Π½Π΄Ρ, ΡΠΏΡΠ°Π²Π»ΡΡΡΠΈΠ΅ ΡΡΠ΅ΠΊΠΎΠΌ:
#define push(d) *stackp++ = (d)
#define popm() *--stackp = pop() /* ΡΡΠ½ΠΊΡΠΈΡ Π²ΡΠ΅-ΡΠ°ΠΊΠΈ Π½ΡΠΆΠ½Π° */
(Π€ΡΠ½ΠΊΡΠΈΡ
pop
Π²ΡΠ΅-ΡΠ°ΠΊΠΈ Π½ΡΠΆΠ½Π° Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΊΠΎΠ΄Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π½Π°ΡΠ΅ΠΉ ΠΌΠ°ΡΠΈΠ½Ρ, ΠΏΠΎΡΡΠΎΠΌΡ Π½Π΅Π»ΡΠ·Ρ Π·Π°ΠΌΠ΅Π½ΠΈΡΡ Π²ΡΠ΅ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΡ ΠΊ Π½Π΅ΠΉ.) ΠΠΎΠ²Π°Ρ Π²Π΅ΡΡΠΈΡ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Π½Π° 35% Π±ΡΡΡΡΠ΅Π΅; Π²ΡΠ΅ΠΌΡ Π² ΡΠ°Π±Π». 8.1 ΡΠΎΠΊΡΠ°ΡΠ°Π΅ΡΡΡ ΠΎΡ 5.5 Π΄ΠΎ 3.7 Ρ ΠΈ ΠΎΡ 5.0 Π΄ΠΎ 3.1 Ρ.
Π£ΠΏΡΠ°ΠΆΠ½Π΅Π½ΠΈΠ΅ 8.22
Π ΠΌΠ°ΠΊΡΠΎΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ
push
ΠΈ
popm
Π½Π΅ ΠΏΡΠ΅Π΄ΡΡΠΌΠΎΡΡΠ΅Π½ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ ΠΎΡΠΈΠ±ΠΎΠΊ. ΠΡΠΎΠΊΠΎΠΌΠΌΠ΅Π½ΡΠΈΡΡΠΉΡΠ΅ ΡΠ°Π·ΡΠΌΠ½ΠΎΡΡΡ ΡΠ°ΠΊΠΎΠ³ΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΡ. ΠΠ°ΠΊ Π±Ρ Π²Ρ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ»ΠΈ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ ΠΎΡΠΈΠ±ΠΎΠΊ, ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΠΌΡΠΉ Π² Π²Π΅ΡΡΠΈΠΈ Ρ ΡΡΠ½ΠΊΡΠΈΡΠΌΠΈ, Π½Π΅ ΡΠ½ΠΈΠΆΠ°Ρ Π±ΡΡΡΡΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ ΠΌΠ°ΠΊΡΠΎΠΊΠΎΠΌΠ°Π½Π΄?
8.8 ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
ΠΠ·Π½Π°ΠΊΠΎΠΌΠΈΠ²ΡΠΈΡΡ Ρ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»ΠΎΠΌ ΡΡΠΎΠΉ Π³Π»Π°Π²Ρ, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠ΄Π΅Π»Π°ΡΡ Π²Π°ΠΆΠ½ΡΠ΅ Π²ΡΠ²ΠΎΠ΄Ρ. ΠΠΎ-ΠΏΠ΅ΡΠ²ΡΡ
, ΡΡΠ΅Π΄ΡΡΠ²Π° Π΄Π»Ρ ΡΠ°Π·Π²ΠΈΡΠΈΡ ΡΠ·ΡΠΊΠΎΠ² ΠΎΡΠ΅Π½Ρ Π½ΡΠΆΠ½Ρ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΡΠΊΠΎΠ½ΡΠ΅Π½ΡΡΠΈΡΠΎΠ²Π°ΡΡ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎΠΉ ΡΠ°Π±ΠΎΡΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ ΡΠ·ΡΠΊΠ° (Ρ Π½ΠΈΠΌ Π»Π΅Π³ΠΊΠΎ ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°ΡΡ). ΠΡΠ°ΠΌΠΌΠ°ΡΠΈΠΊΠ° ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΡΠ³Π°Π½ΠΈΠ·ΡΡΡΠ΅ΠΉ ΡΡΡΡΠΊΡΡΡΠΎΠΉ ΠΏΡΠΈ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ: ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΏΡΠΈΠ²ΡΠ·ΡΠ²Π°ΡΡΡΡ ΠΊ Π³ΡΠ°ΠΌΠΌΠ°ΡΠΈΠΊΠ΅ ΠΈ Π²ΡΠ·ΡΠ²Π°ΡΡΡΡ Π² ΠΏΠΎΠ΄Ρ
ΠΎΠ΄ΡΡΠΈΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ Π² ΠΏΡΠΎΡΠ΅ΡΡΠ΅ ΡΠ°Π·Π±ΠΎΡΠ°.
ΠΠΎ-Π²ΡΠΎΡΡΡ
, ΠΈ ΡΡΠΎ ΡΠΆΠ΅ ΡΠΈΠ»ΠΎΡΠΎΡΡΠΊΠΈΠΉ Π°ΡΠΏΠ΅ΠΊΡ, ΡΠ΅Π½Π½Π° ΡΠ°ΠΌΠ° ΠΏΠΎΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Π·Π°Π΄Π°ΡΠΈ ΡΠ΅ΡΡ ΠΈΠ΄Π΅Ρ ΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅ ΡΠ·ΡΠΊΠ°, Π° Π½Π΅ ΠΏΡΠΎΡΡΠΎ ΠΎ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ. ΠΠΎΡΡΡΠΎΠ΅Π½ΠΈΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΊΠ°ΠΊ ΡΠ·ΡΠΊΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ° ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ ΡΠ΅Π³ΡΠ»ΡΡΠ½ΠΎΡΡΡ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ° (Ρ.Π΅. Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ), Π΄Π΅Π»Π°Π΅Ρ Π±ΠΎΠ»Π΅Π΅ ΡΡΡΡΠΊΡΡΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΉ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΠΌΡ ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ Π³Π°ΡΠ°Π½ΡΠΈΡ, ΡΡΠΎ Π½ΠΎΠ²ΡΠ΅ ΡΡΠ΅Π΄ΡΡΠ²Π° Π±ΡΠ΄ΡΡ Ρ
ΠΎΡΠΎΡΠΎ ΡΠΎΠ³Π»Π°ΡΠΎΠ²ΡΠ²Π°ΡΡΡΡ Ρ ΡΠΆΠ΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΡΠΌΠΈ. ΠΠΎΠ΄ "ΡΠ·ΡΠΊΠ°ΠΌΠΈ", ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ, ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΏΠΎΠ½ΠΈΠΌΠ°ΡΡ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΡΡΠ°Π΄ΠΈΡΠΈΠΎΠ½Π½ΡΠ΅ ΡΠ·ΡΠΊΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ, Π½ΠΎ ΠΈ ΡΠΆΠ΅ ΡΠΏΠΎΠΌΠΈΠ½Π°Π²ΡΠΈΠ΅ΡΡ Π²ΡΡΠ΅ Π² ΠΏΡΠΈΠΌΠ΅ΡΠ°Ρ
ΡΠ·ΡΠΊΠΈ
eqn
ΠΈ
pick
, Π° ΡΠ°ΠΊΠΆΠ΅
yacc
,
lex
, ΠΈ
make
.
Π Π°ΡΡΠΌΠΎΡΡΠ΅Π½Ρ Π·Π΄Π΅ΡΡ ΠΈ Π²ΠΎΠΏΡΠΎΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΡ
ΡΡΠ΅Π΄ΡΡΠ². Π ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ, ΠΏΠΎΠΊΠ°Π·Π°Π½Π° ΡΠΎΠ»Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ
make
, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠ°Π΅Ρ ΡΠ΅Π»ΡΠΉ ΠΊΠ»Π°ΡΡ ΠΎΡΠΈΠ±ΠΎΠΊ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π²Ρ Π·Π°Π±ΡΠ»ΠΈ ΠΏΠ΅ΡΠ΅ΡΡΠ°Π½ΡΠ»ΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠ°ΠΊΡΡ-ΡΠΎ ΠΏΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ). ΠΠ½Π° ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΈΠ·Π±Π°Π²ΠΈΡΡΡΡ ΠΎΡ Π»ΠΈΡΠ½Π΅ΠΉ ΡΠ°Π±ΠΎΡΡ ΠΈ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠ΄ΠΎΠ±Π½ΡΠΉ ΡΠΏΠΎΡΠΎΠ± ΡΠ³ΡΡΠΏΠΏΠΈΡΠΎΠ²Π°ΡΡ Π² ΠΎΠ΄Π½ΠΎΠΌ ΡΠ°ΠΉΠ»Π΅ Π±ΠΎΠ»ΡΡΠΎΠ΅ ΡΠΈΡΠ»ΠΎ ΡΠ²ΡΠ·Π°Π½Π½ΡΡ
ΠΈ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π·Π°Π²ΠΈΡΠΈΠΌΡΡ
ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ.
Π‘ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠ°ΠΉΠ»ΠΎΠ² ΠΌΠ°ΠΊΡΠΎΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠΉ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½ΠΈΡΠΎΠ²Π°ΡΡ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ
, Π΄ΠΎΡΡΡΠΏΠ½ΡΡ
Π±ΠΎΠ»Π΅Π΅ ΡΠ΅ΠΌ Π² ΠΎΠ΄Π½ΠΎΠΌ ΡΠ°ΠΉΠ»Π΅. ΠΡΠΎΠ²ΠΎΠ΄Ρ ΡΠ΅Π½ΡΡΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ, ΠΎΠ½ΠΈ ΠΈΡΠΊΠ»ΡΡΠ°ΡΡ ΠΎΡΠΈΠ±ΠΊΠΈ, Π²ΡΠ·Π²Π°Π½Π½ΡΠ΅ Π½Π΅ΡΠΎΠ³Π»Π°ΡΠΎΠ²Π°Π½Π½ΠΎΡΡΡΡ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΠΌΡΡ
Π²Π΅ΡΡΠΈΠΉ, ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ Π΅ΡΠ»ΠΈ Π΄Π΅ΠΉΡΡΠ²ΡΡΡ ΡΠΎΠ²ΠΌΠ΅ΡΡΠ½ΠΎ Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΎΠΉ
make
. ΠΠ΅ΡΡΠΌΠ° Π²Π°ΠΆΠ½ΠΎ ΡΠ°Π·Π±ΠΈΡΡ Π΄Π°Π½Π½ΡΠ΅ ΠΈ ΠΏΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π½Π° ΡΠ°ΠΉΠ»Ρ ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΡΡΠΎΠ±Ρ ΠΎΠ½ΠΈ Π½Π΅ Π±ΡΠ»ΠΈ Π²ΠΈΠ΄ΠΈΠΌΡ, Π΅ΡΠ»ΠΈ Π² ΡΡΠΎΠΌ Π½Π΅Ρ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ.
Π₯ΠΎΡΠ΅Π»ΠΎΡΡ Π±Ρ ΠΎΡΠΌΠ΅ΡΠΈΡΡ, ΡΡΠΎ ΠΈΠ·-Π·Π° ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΌΠ° ΠΊΠ½ΠΈΠ³ΠΈ ΠΌΡ ΠΌΠ°Π»ΠΎ Π²Π½ΠΈΠΌΠ°Π½ΠΈΡ ΡΠ΄Π΅Π»ΠΈΠ»ΠΈ ΡΠ΅ΠΌ ΡΡΠ΅Π΄ΡΡΠ²Π°ΠΌ UNIX, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ ΠΏΡΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅ ΡΠ΅ΠΌΠ΅ΠΉΡΡΠ²Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ
hoc
. ΠΠ°ΠΆΠ΄Π°Ρ Π²Π΅ΡΡΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π½Π°Ρ
ΠΎΠ΄ΠΈΡΡΡ Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠΌ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅, Π΄Π»Ρ ΠΈΠ΄Π΅Π½ΡΠΈΡΠ½ΡΡ
ΡΠ°ΠΉΠ»ΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΡΠ²ΡΠ·ΠΈ; ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎ Π²ΡΠ·ΡΠ²Π°ΡΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ
ls
ΠΈ
du
, ΡΡΠΎΠ±Ρ ΡΠ»Π΅Π΄ΠΈΡΡ Π·Π° ΡΠ΅ΠΌ, ΠΊΠ°ΠΊΠΈΠ΅ ΡΠ°ΠΉΠ»Ρ Π³Π΄Π΅ Π½Π°Ρ
ΠΎΠ΄ΡΡΡΡ. ΠΠ° ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Π²ΠΎΠΏΡΠΎΡΡ ΠΎΡΠ²Π΅ΡΡ Π΄Π°ΡΡ ΡΠ°ΠΌΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π½Π° Π²ΠΎΠΏΡΠΎΡ: "ΠΠ΄Π΅ ΠΎΠΏΠΈΡΠ°Π½Π° Π΄Π°Π½Π½Π°Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ?" ΠΎΡΠ²Π΅ΡΠ°Π΅Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°
grep
. "ΠΠ°ΠΊ ΠΌΡ Π²Π½Π΅ΡΠ»ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² Π΄Π°Π½Π½ΡΡ Π²Π΅ΡΡΠΈΡ?" ΠΎΡΠ²Π΅ΡΠ°Π΅Ρ
idiff
. "ΠΠ°ΡΠΊΠΎΠ»ΡΠΊΠΎ Π²Π΅Π»ΠΈΠΊ ΡΠ°ΠΉΠ»?" ΠΎΡΠ²Π΅ΡΠ°Π΅Ρ
wc
. ΠΠΎΡΠ° Π΄Π΅Π»Π°ΡΡ ΠΊΠΎΠΏΠΈΡ ΡΠ°ΠΉΠ»Π° ΠΎΠ±ΡΠ°ΡΠΈΡΠ΅ΡΡ ΠΊ ΠΊΠΎΠΌΠ°Π½Π΄Π΅
cp
. ΠΡΠΆΠ½ΠΎ ΡΠΊΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ΅ ΡΠ°ΠΉΠ»Ρ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»ΠΈΡΡ ΡΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π³ΠΎ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΡ? ΠΠ°ΠΌ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ Π² ΡΡΠΎΠΌ Π΄Π΅Π»Π΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°
make
.
Π’Π°ΠΊΠΎΠΉ ΠΎΠ±ΡΠΈΠΉ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄ ΡΠΈΠΏΠΈΡΠ΅Π½ Π΄Π»Ρ ΠΏΠΎΠ²ΡΠ΅Π΄Π½Π΅Π²Π½ΠΎΠΉ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ Π² ΡΠΈΡΡΠ΅ΠΌΠ΅ UNIX: ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Π½Π΅Π±ΠΎΠ»ΡΡΠΈΡ
ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΡ
ΡΡΠ΅Π΄ΡΡΠ², ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΡΡΠΈ ΠΈΠ»ΠΈ ΠΈΡ
ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΡΠΎΡΠ΅ΡΠ°Π½ΠΈΡ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΡΠ°Π±ΠΎΡΡ, ΠΊΠΎΡΠΎΡΡΡ ΠΈΠ½Π°ΡΠ΅ ΠΏΡΠΈΡΠ»ΠΎΡΡ Π±Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ Π²ΡΡΡΠ½ΡΡ.
ΠΡΡΠΎΡΠΈΡΠ΅ΡΠΊΠ°Ρ ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΠ³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠ°Ρ ΡΠΏΡΠ°Π²ΠΊΠ°
ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°
yacc
ΡΠΎΠ·Π΄Π°Π½Π° Π‘. ΠΠΆΠΎΠ½ΡΠΎΠ½ΠΎΠΌ. ΠΠ»Π°ΡΡ ΡΠ·ΡΠΊΠΎΠ², Π΄Π»Ρ ΠΊΠΎΡΠΎΡΡΡ
yacc ΠΌΠΎΠΆΠ΅Ρ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΡΠ°Π·Π±ΠΎΡΠ°, Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ LALR-(1): ΡΠ°Π·Π±ΠΎΡ Π·Π΄Π΅ΡΡ Π²Π΅Π΄Π΅ΡΡΡ ΡΠ»Π΅Π²Π° Π½Π°ΠΏΡΠ°Π²ΠΎ ΠΈ Π²Ρ
ΠΎΠ΄Π½ΠΎΠΉ ΠΏΠΎΡΠΎΠΊ ΠΏΡΠΎΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅ΡΡΡ Π½Π΅ Π±ΠΎΠ»Π΅Π΅ ΡΠ΅ΠΌ Π½Π° ΠΎΠ΄Π½Ρ Π»Π΅ΠΊΡΠ΅ΠΌΡ Π²ΠΏΠ΅ΡΠ΅Π΄. ΠΠΎΠ½ΡΡΠΈΠ΅ ΡΠ°Π·Π΄Π΅Π»ΡΠ½ΡΡ
ΠΎΠΏΠΈΡΠ°Π½ΠΈΠΉ Π΄Π»Ρ Π·Π°Π΄Π°Π½ΠΈΡ ΠΏΡΠΈΠΎΡΠΈΡΠ΅ΡΠΎΠ² ΠΈ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡ Π½Π΅ΠΎΠ΄Π½ΠΎΠ·Π½Π°ΡΠ½ΠΎΡΡΠ΅ΠΉ Π² Π³ΡΠ°ΠΌΠΌΠ°ΡΠΈΠΊΠ΅ ΠΏΠΎΡΠ²ΠΈΠ»ΠΎΡΡ Π²ΠΌΠ΅ΡΡΠ΅ Ρ
yacc
. ΠΡΠΎΡ Π²ΠΎΠΏΡΠΎΡ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅ΡΡΡ Π² ΡΡΠ°ΡΡΠ΅ Π. Π. ΠΡ
ΠΎ, Π‘. Π. ΠΠΆΠΎΠ½ΡΠΎΠ½Π° ΠΈ Π. Π. Π£Π»ΡΠΌΠ°Π½Π° "Deterministic parsing of ambiguous grammars" (CACM, August, 1975). Π’Π°ΠΌ ΠΆΠ΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Ρ Π½ΠΎΠ²ΡΠ΅ Π°Π»Π³ΠΎΡΠΈΡΠΌΡ ΠΈ ΡΡΡΡΠΊΡΡΡΡ Π΄Π°Π½Π½ΡΡ
Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΈ Ρ
ΡΠ°Π½Π΅Π½ΠΈΡ ΡΠ°Π±Π»ΠΈΡ ΡΠ°Π·Π±ΠΎΡΠ°.
ΠΡΠ½ΠΎΠ²Ρ ΡΠ΅ΠΎΡΠΈΠΈ, Π½Π° Π±Π°Π·Π΅ ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΏΠΎΡΡΡΠΎΠ΅Π½Ρ
yacc
ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΡ, ΠΈΠ·Π»Π°Π³Π°ΡΡΡΡ Π² ΠΊΠ½ΠΈΠ³Π΅ Π. Π. ΠΡ
ΠΎ ΠΈ Π. Π. Π£Π»ΡΠΌΠ°Π½Π° "Principles of Compiler Design" (Addison Wesley, 1977). Π‘Π°ΠΌΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°
yacc
ΠΎΠΏΠΈΡΠ°Π½Π° Π² ΡΠΏΡΠ°Π²ΠΎΡΠ½ΠΎΠΌ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²Π΅ ΠΏΠΎ UNIX (ΡΠΎΠΌ 2B). Π ΡΡΠΎΠΌ ΡΠ°Π·Π΄Π΅Π»Π΅ ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ ΠΊΠ°Π»ΡΠΊΡΠ»ΡΡΠΎΡ, ΡΡΠ°Π²Π½ΠΈΠΌΡΠΉ Ρ
hoc2
: Π΄Π»Ρ Π²Π°Ρ ΡΠ°ΠΊΠΎΠ΅ ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ ΠΎΠΊΠ°Π·Π°ΡΡΡΡ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΌ.
ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°
lex
ΠΏΠ΅ΡΠ²ΠΎΠ½Π°ΡΠ°Π»ΡΠ½ΠΎ Π±ΡΠ»ΠΎ Π½Π°ΠΏΠΈΡΠ°Π½Π° Π. ΠΠ΅ΡΠΊΠΎΠΌ. Π’Π΅ΠΎΡΠΈΡ lex ΠΎΡΠ²Π΅ΡΠ΅Π½Π° Π² ΠΊΠ½ΠΈΠ³Π΅ ΠΡ
ΠΎ ΠΈ Π£Π»ΡΠΌΠ°Π½Π°, Π° ΡΠ°ΠΌ ΡΠ·ΡΠΊ
lex
ΠΎΠΏΠΈΡΠ°Π½ Π² ΡΠΏΡΠ°Π²ΠΎΡΠ½ΠΎΠΌ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²Π΅ ΠΏΠΎ UNIX.
ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΡ
yacc
ΠΈ Π² ΠΌΠ΅Π½ΡΡΠ΅ΠΉ ΡΡΠ΅ΠΏΠ΅Π½ΠΈ
lex
ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈΡΡ Π΄Π»Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΌΠ½ΠΎΠ³ΠΈΡ
ΡΠ·ΡΠΊΠΎΠ²ΡΡ
ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠΎΠ², Π²ΠΊΠ»ΡΡΠ°Ρ ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠΈΠΌΡΠΉ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ Π‘ΠΈ, ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΡ Π½Π° ΠΠ°ΡΠΊΠ°Π»Π΅, Π€ΠΎΡΡΡΠ°Π½Π΅ 77, Π Π°ΡΡΠΎΡΠ΅,
awk
,
be
,
egn
ΠΈ
pick
.
ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°
make
ΡΠΎΠ·Π΄Π°Π½Π° Π‘. Π€Π΅Π»ΡΠ΄ΠΌΠ°Π½ΠΎΠΌ ΠΈ ΠΎΠΏΠΈΡΠ°Π½Π° Π² ΡΡΠ°ΡΡΠ΅ "MAKE a program for maintaining computer programs" (Software-Practice & Experience, April, 1979).
Π ΠΊΠ½ΠΈΠ³Π΅ Π. ΠΠ΅Π½ΡΠ»ΠΈ "Writing Efficient Programs" (Prentice-Hall, 1982) ΠΎΠ±ΡΡΠΆΠ΄Π°Π΅ΡΡΡ ΡΠ΅Ρ
Π½ΠΈΠΊΠ° ΡΡΠΊΠΎΡΠ΅Π½ΠΈΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ. ΠΠΊΡΠ΅Π½Ρ Π² Π½Π΅ΠΉ Π΄Π΅Π»Π°Π΅ΡΡΡ Π½Π° ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄ΡΡΠ΅Π³ΠΎ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ°, Π° ΡΠ°ΠΊΠΆΠ΅ Π½Π° ΡΠ»ΡΡΡΠ΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π°, Π΅ΡΠ»ΠΈ Π² ΡΡΠΎΠΌ Π΅ΡΡΡ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎΡΡΡ.