Π ΠΏΠΎΠ½Π΅Π΄Π΅Π»Π½ΠΈΠΊ, 20 ΡΠ»ΠΈ, Π±Π΅ΡΠ΅ ΠΏΡΡΠ½Π°ΡΠ° Π²Π΅ΡΡΠΈΡΡΠ° Π½Π° re2c, Π±ΡΡΠ· Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡ Π½Π° Π»Π΅ΠΊΡΠΈΠΊΠ°Π»Π΅Π½ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡ.
ΠΡΠ½ΠΎΠ²Π½ΠΈ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ:
-
ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° Π΅Π·ΠΈΠΊ Go
(Π°ΠΊΡΠΈΠ²ΠΈΡΠ°Π½ΠΎ ΠΈΠ»ΠΈ Ρ ΠΎΠΏΡΠΈΡΡΠ° --lang go Π·Π° re2c, ΠΈΠ»ΠΈ ΠΊΠ°ΡΠΎ ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»Π½Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ° re2go).
ΠΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡΡΠ° Π·Π° C ΠΈ Go ΡΠ΅ Π³Π΅Π½Π΅ΡΠΈΡΠ° ΠΎΡ Π΅Π΄ΠΈΠ½ ΠΈ ΡΡΡ ΡΠ΅ΠΊΡΡ, Π½ΠΎ Ρ ΡΠ°Π·Π»ΠΈΡΠ΅Π½
ΠΏΡΠΈΠΌΠ΅ΡΠΈ Π·Π° ΠΊΠΎΠ΄ΠΎΠ²Π΅. ΠΠΎΠ΄ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ° Π·Π° Π³Π΅Π½Π΅ΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΊΠΎΠ΄ Π² re2c Π΅ Π½Π°ΠΏΡΠ»Π½ΠΎ ΠΏΡΠ΅ΡΠ°Π±ΠΎΡΠ΅Π½Π°, ΠΊΠΎΠ΅ΡΠΎ
ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ»Π΅ΡΠ½ΠΈ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ°ΡΠ° Π½Π° Π½ΠΎΠ²ΠΈ Π΅Π·ΠΈΡΠΈ Π² Π±ΡΠ΄Π΅ΡΠ΅. -
ΠΠΎΠ±Π°Π²Π΅Π½Π° Π°Π»ΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ° Π·Π° ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅ Π½Π° CMake (Π±Π»Π°Π³ΠΎΠ΄Π°ΡΡ ligfx!).
ΠΠΏΠΈΡΠΈΡΠ΅ Π·Π° ΠΏΡΠ΅Π²ΠΎΠ΄ Π½Π° re2c Π² CMake ΡΠ° ΠΏΡΠ°Π²Π΅Π½ΠΈ ΠΎΡ Π΄ΡΠ»Π³ΠΎ Π²ΡΠ΅ΠΌΠ΅, Π½ΠΎ ΠΏΡΠ΅Π΄ΠΈ ligfx Π½ΠΈΠΊΠΎΠΉ
ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠΈ ΡΡΠ»ΠΎΡΡΠ½ΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅.
Π‘ΡΠ°ΡΠ°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ° Π·Π° ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅ Π½Π° Autotools ΠΏΡΠΎΠ΄ΡΠ»ΠΆΠ°Π²Π° Π΄Π° ΡΠ΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ° ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°,
ΠΈ Π² ΠΎΠ±ΠΎΠ·ΡΠΈΠΌΠΎ Π±ΡΠ΄Π΅ΡΠ΅ Π½ΡΠΌΠ° ΠΏΠ»Π°Π½ΠΎΠ²Π΅ Π·Π° ΠΈΠ·ΠΎΡΡΠ°Π²ΡΠ½Π΅ΡΠΎ ΠΌΡ (ΠΎΡΡΠ°ΡΡΠΈ Π·Π° Π΄Π° Π½Π΅ ΡΠ΅ ΡΡΠ·Π΄Π°Π²Π°
ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ Π·Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈΡΠ΅ Π½Π° ΡΠ°Π·ΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½ΠΈΠ΅, ΠΎΡΡΠ°ΡΡΠΈ ΠΏΠΎΡΠ°Π΄ΠΈ ΡΡΠ°ΡΠ°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ° Π·Π° ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅
ΠΏΠΎ-ΡΡΠ°Π±ΠΈΠ»Π΅Π½ ΠΈ ΠΊΡΠ°ΡΡΠΊ ΠΎΡ Π½ΠΎΠ²ΠΈΡ).
Π Π΄Π²Π΅ΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΠΈ ΡΠ° Π΅Π΄Π½Π°ΠΊΠ²ΠΎ Π½Π΅ΠΏΡΠ΅ΠΊΡΡΠ½Π°ΡΠΎ ΡΠ΅ΡΡΠ²Π°Π½ΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° Travis CI. -
ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ Π·Π° Π·Π°Π΄Π°Π²Π°Π½Π΅ Π½Π° ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ½ΠΈΡ ΠΊΠΎΠ΄ Π² ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ ΠΏΡΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅
Π³Π΅Π½Π΅ΡΠΈΡΠ΅Π½ API (Π³Π΅Π½Π΅ΡΠΈΡΠ΅Π½ API). ΠΡΠ΅Π΄ΠΈ ΡΠΎΠ²Π° ΠΏΠΎΠ²Π΅ΡΠ΅ΡΠΎ API ΡΡΡΠ±Π²Π°ΡΠ΅ Π΄Π° Π±ΡΠ΄Π°Ρ ΠΏΠΎΡΠΎΡΠ΅Π½ΠΈ Π²ΡΠ² ΡΠΎΡΠΌΡΠ»ΡΡΠ°
ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈΠ»ΠΈ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΈ ΠΌΠ°ΠΊΡΠΎΡΠΈ. Π‘Π΅Π³Π° ΡΠ΅ ΠΌΠΎΠ³Π°Ρ Π΄Π° Π±ΡΠ΄Π°Ρ Π·Π°Π΄Π°Π΄Π΅Π½ΠΈ ΠΏΠΎΠ΄ ΡΠΎΡΠΌΠ°ΡΠ° Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»Π½ΠΈ
Π½ΠΈΠ·ΠΎΠ²Π΅ Ρ ΠΈΠΌΠ΅Π½ΡΠ²Π°Π½ΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈ Π½Π° ΡΠ°Π±Π»ΠΎΠ½Π° Π²ΡΠ² ΡΠΎΡΠΌΠ°ΡΠ° @@{name} ΠΈΠ»ΠΈ ΠΏΡΠΎΡΡΠΎ @@ (Π°ΠΊΠΎ
ΠΈΠΌΠ° ΡΠ°ΠΌΠΎ Π΅Π΄ΠΈΠ½ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΠΈ Π½ΡΠΌΠ° Π΄Π²ΡΡΠΌΠΈΡΠ»ΠΈΠ΅). Π‘ΡΠΈΠ»ΡΡ Π½Π° API ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°
re2c:api:style (ΡΡΠΎΠΉΠ½ΠΎΡΡΡΠ° Π½Π° ΡΡΠ½ΠΊΡΠΈΠΈΡΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Ρ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΈΡ ΡΡΠΈΠ», Π΄ΠΎΠΊΠ°ΡΠΎ ΡΡΠΎΠΉΠ½ΠΎΡΡΡΠ° Π² ΡΠ²ΠΎΠ±ΠΎΠ΄Π½Π° ΡΠΎΡΠΌΠ° Π΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»Π½Π°). -
ΠΠΎΠ΄ΠΎΠ±ΡΠ΅Π½Π° ΡΠ°Π±ΠΎΡΠ° Π½Π° ΠΎΠΏΡΠΈΡΡΠ° -c, --start-conditions, ΠΊΠΎΡΡΠΎ Π²ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΄Π° ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡΠ°ΡΠ΅ Π½ΡΠΊΠΎΠ»ΠΊΠΎ
Π²Π·Π°ΠΈΠΌΠΎΡΠ²ΡΡΠ·Π°Π½ΠΈ Π»Π΅ΠΊΡΠ΅ΡΠΈ Π² Π΅Π΄ΠΈΠ½ re2c Π±Π»ΠΎΠΊ. Π‘Π΅Π³Π° ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅
ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈ Π±Π»ΠΎΠΊΠΎΠ²Π΅ Π½Π°ΡΠ°Π²Π½ΠΎ Ρ ΡΡΠ»ΠΎΠ²Π½ΠΈΡΠ΅ ΠΈ Π·Π°Π΄Π°ΠΉΡΠ΅ Π½ΡΠΊΠΎΠ»ΠΊΠΎ Π½Π΅ΡΠ²ΡΡΠ·Π°Π½ΠΈ ΡΡΠ»ΠΎΠ²Π½ΠΈ
Π±Π»ΠΎΠΊΠΎΠ²Π΅ Π² Π΅Π΄ΠΈΠ½ ΡΠ°ΠΉΠ».
ΠΠΎΠ΄ΠΎΠ±ΡΠ΅Π½ΠΈ ΠΎΠΏΡΠΈΠΈ -r, --reuse (ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ΠΊΠΎΠ΄ ΠΎΡ Π΅Π΄ΠΈΠ½ Π±Π»ΠΎΠΊ
Π² Π΄ΡΡΠ³ΠΈ Π±Π»ΠΎΠΊΠΎΠ²Π΅) Π² ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΡ Ρ ΠΎΠΏΡΠΈΠΈΡΠ΅ -c, --start-conditions ΠΈ -f, --storable-state
(Π»Π΅ΠΊΡΠ΅Ρ ΡΡΡ ΡΡΡΡΠΎΡΠ½ΠΈΠ΅, ΠΊΠΎΠΉΡΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ ΠΏΡΠ΅ΠΊΡΡΠ½Π°Ρ Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»Π½ΠΎ ΠΌΡΡΡΠΎ
ΠΈ ΠΏΡΠΎΠ΄ΡΠ»ΠΆΠ΅ΡΠ΅ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ΡΠΎ ΠΏΠΎ-ΠΊΡΡΠ½ΠΎ). -
ΠΠΎΠΏΡΠ°Π²Π΅Π½Π° Π΅ Π³ΡΠ΅ΡΠΊΠ° Π² Π½ΠΎΠ²ΠΎΠ΄ΠΎΠ±Π°Π²Π΅Π½ΠΈΡ Π°Π»Π³ΠΎΡΠΈΡΡΠΌ Π·Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° ΠΊΡΠ°Ρ Π½Π° Π²Ρ ΠΎΠ΄Π½ΠΈΡΠ΅ Π΄Π°Π½Π½ΠΈ
(ΠΏΡΠ°Π²ΠΈΠ»ΠΎ EOF), ΠΊΠΎΠ΅ΡΠΎ Π² ΡΠ΅Π΄ΠΊΠΈ ΡΠ»ΡΡΠ°ΠΈ Π΅ Π΄ΠΎΠ²Π΅Π»ΠΎ Π΄ΠΎ Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»Π½Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ°
ΠΏΡΠΈΠΏΠΎΠΊΡΠΈΠ²Π°ΡΠΈ ΡΠ΅ ΠΏΡΠ°Π²ΠΈΠ»Π°. -
ΠΠΏΡΠΎΡΡΠ΅Π½ ΠΏΡΠΎΡΠ΅Ρ Π½Π° ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅. ΠΡΠ΅Π΄ΠΈ ΡΠΎΠ²Π° ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ° Π·Π° ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅ Π²Π΅ΡΠ΅ ΡΠ΅ ΠΎΠΏΠΈΡΠ²Π°ΡΠ΅ Π΄Π° Π½Π°ΠΌΠ΅ΡΠΈ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ½ΠΎ
ΠΏΠΎΡΡΡΠΎΠ΅Π½ re2c, ΠΊΠΎΠΉΡΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π·Π° ΡΠ°ΠΌΠΎΠ²ΡΠ·ΡΡΠ°Π½ΠΎΠ²ΡΠ²Π°Π½Π΅.
Π’ΠΎΠ²Π° Π΄ΠΎΠ²Π΅Π΄Π΅ Π΄ΠΎ Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»Π½ΠΈ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ (ΡΡΠΉ ΠΊΠ°ΡΠΎ Π³ΡΠ°ΡΠΈΠΊΠ°ΡΠ° Π½Π° Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡΠ° ΡΠ΅ ΠΎΠΊΠ°Π·Π°
Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅Π½, ΠΊΠΎΠΉΡΠΎ ΠΏΠΎΠ²Π΅ΡΠ΅ΡΠΎ ΡΠΈΡΡΠ΅ΠΌΠΈ Π·Π° ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅ Π½Π΅ Ρ Π°ΡΠ΅ΡΠ²Π°Ρ).
Π‘Π΅Π³Π°, Π·Π° Π΄Π° ΡΠ΅ ΠΈΠ·Π³ΡΠ°Π΄ΡΡ ΠΎΡΠ½ΠΎΠ²ΠΎ Π»Π΅ΠΊΡΠ΅ΡΠΈ, ΡΠ΅ ΠΈΠ·ΠΈΡΠΊΠ²Π° ΠΈΠ·ΡΠΈΡΠ½ΠΎ
ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°ΠΉΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ° Π·Π° ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅ ΠΈ Π·Π°Π΄Π°ΠΉΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π°ΡΠ° RE2C_FOR_BUILD.
ΠΠ»Π°Π³ΠΎΠ΄Π°ΡΠΈΠΌ Π½Π° Π²ΡΠΈΡΠΊΠΈ, ΠΊΠΎΠΈΡΠΎ Π΄ΠΎΠΏΡΠΈΠ½Π΅ΡΠΎΡ Π° Π·Π° ΡΠΎΠ²Π° ΠΈΠ·Π΄Π°Π½ΠΈΠ΅!
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: linux.org.ru