ΠΡΠ±Π»ΠΈΠΊΡΠ²Π°Π½Π° Π΅ Π²Π΅ΡΡΠΈΡΡΠ° Π½Π° re2c 4.0 - Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡ Π½Π° Π»Π΅ΠΊΡΠΈΠΊΠ°Π»Π½ΠΈ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΠΈ (ΠΈΠ·Π²Π΅ΡΡΠ΅Π½ ΠΎΡΠ΅ ΠΊΠ°ΡΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΎΡ Π½Π° ΡΠ΅Π³ΡΠ»ΡΡΠ½ΠΈ ΠΈΠ·ΡΠ°Π·ΠΈ Π² ΠΊΠΎΠ΄ Π½Π° ΡΠ΅Π»Π΅Π²ΠΈΡ Π΅Π·ΠΈΠΊ Π·Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΠ°Π½Π΅). Re2c Π΅ ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½ Π² Π³Π΅Π½Π΅ΡΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° Π±ΡΡΠ·ΠΈ ΠΈ Π»Π΅ΡΠ½ΠΈ Π·Π° Π²Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅ Π»Π΅ΠΊΡΠ΅ΡΠΈ ΠΈ ΡΠ΅ ΡΠ°Π·Π»ΠΈΡΠ°Π²Π° ΠΎΡ ΡΠ²ΠΎΡ ΠΏΠΎ-ΠΈΠ·Π²Π΅ΡΡΠ΅Π½ ΠΊΠΎΠ»Π΅Π³Π° Flex Π² ΡΠ²ΠΎΡ Π³ΡΠ²ΠΊΠ°Π² ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ, Π³Π΅Π½Π΅ΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠ°Π½ΠΈ Π½Π΅ΡΠ°Π±ΡΠ»Π°ΡΠ½ΠΈ Π»Π΅ΠΊΡΠ΅ΡΠΈ ΠΈ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° ΠΈΠ·Π²Π»ΠΈΡΠ°Π½Π΅ Π½Π° ΠΏΠΎΠ΄ΡΡΠ²ΠΏΠ°Π΄Π΅Π½ΠΈΠ΅, Π±Π°Π·ΠΈΡΠ°Π½ΠΎ Π½Π° ΠΌΠ°ΡΠΊΠΈΡΠ°Π½ΠΈ Π΄Π΅ΡΠ΅ΡΠΌΠΈΠ½ΠΈΡΡΠΈΡΠ½ΠΈ ΠΊΡΠ°ΠΉΠ½ΠΈ Π°Π²ΡΠΎΠΌΠ°ΡΠΈ (TDFA). re2c ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π² ΠΏΡΠΎΠ΅ΠΊΡΠΈ, ΠΊΡΠ΄Π΅ΡΠΎ ΡΠΊΠΎΡΠΎΡΡΡΠ° Π½Π° Π»Π΅ΠΊΡΠ΅ΡΠ° Π΅ Π²Π°ΠΆΠ½Π°, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Π² Ninja ΠΈ PHP.
ΠΡΠ² Π²Π΅ΡΡΠΈΡ 4.0 ΠΏΠΎΠ΄ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ° Π·Π° Π³Π΅Π½Π΅ΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΊΠΎΠ΄ Π±Π΅ΡΠ΅ ΡΠ°Π΄ΠΈΠΊΠ°Π»Π½ΠΎ ΠΏΡΠ΅ΡΠ°Π±ΠΎΡΠ΅Π½Π°, ΠΊΠΎΠ΅ΡΠΎ Π½Π°ΠΏΡΠ°Π²ΠΈ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΡΠ½Π΅ΡΠΎ Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° ΠΎΡΠ΅ΠΌ Π½ΠΎΠ²ΠΈ Π΅Π·ΠΈΠΊΠ° (D, Haskell, Java, JavaScript, OCaml, Python, V, Zig) Π² Π΄ΠΎΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΡΠΌ Π²Π΅ΡΠ΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°Π½ΠΈΡΠ΅ (C /C++, Go, Rust), Π° ΡΡΡΠΎ ΠΈ ΠΏΡΠΈΠ»Π°Π³Π°Π½Π΅ Π½Π° ΠΎΠ±Ρ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΡΠΌ Π·Π° Π΄ΠΎΠ±Π°Π²ΡΠ½Π΅ Π½Π° Π½ΠΎΠ²ΠΈ Π΅Π·ΠΈΡΠΈ ΡΡΠ΅Π· ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅.
ΠΠ΅Π½Π΅ΡΠ°ΡΠΎΡΡΡ Π½Π° ΠΊΠΎΠ΄ Π΅ ΠΎΡΠ³ΠΎΠ²ΠΎΡΠ΅Π½ Π·Π° ΠΏΡΠ΅Π²ΠΎΠ΄Π° Π½Π° Π²Π΅ΡΠ΅ ΠΈΠ·Π³ΡΠ°Π΄Π΅Π½ ΠΈ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠ°Π½ ΠΊΡΠ°Π΅Π½ Π°Π²ΡΠΎΠΌΠ°Ρ Π² ΠΊΠΎΠ΄, Ρ.Π΅. Π½Π΅Π³ΠΎΠ²Π°ΡΠ° Π·Π°Π΄Π°ΡΠ° Π΅ Π΄Π° ΠΈΠ·Π±Π΅ΡΠ΅ ΡΠΏΡΠ°Π²Π»ΡΠ²Π°ΡΠΈ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ, ΡΠΈΠΏΠΎΠ²Π΅ Π΄Π°Π½Π½ΠΈ, ΠΎΠ±ΡΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ΅Π½ ΠΌΠΎΠ΄Π΅Π» ΠΈ Ρ.Π½., ΠΊΠΎΠΈΡΠΎ ΡΠ° ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΠΈ Π·Π° ΡΠ΅Π»Π΅Π²ΠΈΡ Π΅Π·ΠΈΠΊ. ΠΡΠ΅Π΄ΠΈ ΡΠΎΠ²Π° ΡΡΠ»Π°ΡΠ° ΡΠ°Π·ΠΈ Π»ΠΎΠ³ΠΈΠΊΠ° Π±Π΅ΡΠ΅ ΡΠ°ΡΡ ΠΎΡ ΠΈΠ·Ρ ΠΎΠ΄Π½ΠΈΡ ΠΊΠΎΠ΄ Π½Π° re2c ΠΈ Π·Π° Π΄Π° Π³ΠΎ ΠΏΡΠΎΠΌΠ΅Π½ΠΈΡΠ΅ ΠΈΠ»ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡΠ΅ Π½ΠΎΠ² Π΅Π·ΠΈΠΊ, ΡΡΡΠ±Π²Π°ΡΠ΅ Π΄Π° Π·Π°ΠΊΡΡΠΏΠΈΡΠ΅ ΠΈΠ·Ρ ΠΎΠ΄Π½ΠΈΡ ΠΊΠΎΠ΄ ΠΈ Π΄Π° ΠΈΠ·Π³ΡΠ°Π΄ΠΈΡΠ΅ ΠΎΡΠ½ΠΎΠ²ΠΎ re2c. Π’Π°ΠΊΠΈΠ²Π° ΠΊΠΎΡΠ΅ΠΊΡΠΈΠΈ Π½Π΅ Π±ΡΡ Π° ΠΏΡΠΈΠ΅ΡΠΈ Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΡΠΎ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ Π±Π΅Π· Π²Π½Π΅Π΄ΡΡΠ²Π°Π½Π΅ Π½Π° ΡΡΠ°Π½Π΄Π°ΡΡΠ΅Π½ Π½Π°Π±ΠΎΡ ΠΎΡ ΠΏΡΠΈΠΌΠ΅ΡΠΈ ΠΈ ΡΠ΅ΡΡΠΎΠ²Π΅, ΠΊΠΎΠ΅ΡΠΎ Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½ΠΎ ΡΡΠ»ΠΎΠΆΠ½ΠΈ ΡΠ΅Π»ΠΈΡ ΠΏΡΠΎΡΠ΅Ρ.
Π‘Π΅Π³Π° ΡΡΠ»Π°ΡΠ° ΡΠ°Π·ΠΈ Π»ΠΎΠ³ΠΈΠΊΠ° Π΅ ΠΏΡΠ΅ΠΌΠ΅ΡΡΠ΅Π½Π° Π² ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ½ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ - ΡΠ΅ΠΊΡΡΠΎΠ²ΠΈ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅, ΠΊΠΎΠΈΡΠΎ ΠΌΠΎΠ³Π°Ρ Π΄Π° Π±ΡΠ΄Π°Ρ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π΅Π½ΠΈ ΠΎΡ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»Ρ (re2c ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΈ ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅). ΠΠ·Ρ ΠΎΠ΄Π½ΠΈΡΡ ΠΊΠΎΠ΄ Π½Π° re2c Π΅ Π½Π°ΠΏΡΠ»Π½ΠΎ ΡΠ²ΠΎΠ±ΠΎΠ΄Π΅Π½ ΠΎΡ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ½ΠΈ Π·Π° Π΅Π·ΠΈΠΊΠ° ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎΡΡΠΈ ΠΈ ΡΠ°Π·ΡΠΈΡΠ° ΡΠ°ΠΌΠΎ Π½Π° ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ½ΠΈΡ ΡΠ°ΠΉΠ». ΠΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΡΡ ΠΌΠΎΠΆΠ΅ ΡΠ°ΡΡΠΈΡΠ½ΠΎ Π΄Π° Π·Π°ΠΌΠ΅Π½ΠΈ ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π°Ρ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ΅Π½ ΡΠ°ΠΉΠ» ΠΈΠ»ΠΈ Π΄Π° Π½Π°ΠΏΠΈΡΠ΅ Π½ΠΎΠ² ΠΎΡ Π½ΡΠ»Π°ΡΠ°. ΠΡΠΈΡΠΊΠΈ ΠΎΡΠΈΡΠΈΠ°Π»Π½ΠΎ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°Π½ΠΈ Π΅Π·ΠΈΡΠΈ ΠΈΠΌΠ°Ρ ΠΏΡΠ»Π½Π° Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ Ρ ΠΏΡΠΈΠΌΠ΅ΡΠΈ.
ΠΠ·Π΄Π°Π½ΠΈΠ΅ΡΠΎ ΡΡΡΠΎ ΡΠ°ΠΊΠ° Π²ΠΊΠ»ΡΡΠ²Π° ΠΌΠ½ΠΎΠ³ΠΎ Π΄ΡΡΠ³ΠΈ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ Π·Π° ΠΎΠΏΡΠΎΡΡΡΠ²Π°Π½Π΅ Π½Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΡΠΊΠΈΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΠΈ ΠΏΠΎΠ΄ΠΎΠ±ΡΡΠ²Π°Π½Π΅ Π½Π° ΡΠ°Π±ΠΎΡΠ°ΡΠ° Ρ Π³ΡΡΠΏΠΈΡΠ΅ Π·Π° ΡΠ»Π°Π²ΡΠ½Π΅. ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΎΠ½Π»Π°ΠΉΠ½ ΡΡΠ΅Π΄Π° Π·Π° ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠ°Π½Π΅ ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠ°Π½Π΅ Π½Π° ΠΏΡΠΈΠΌΠ΅ΡΠΈ.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: opennet.ru
