Π‘ΠΎΡΡΠΎΡΠ»ΡΡ ΡΠ΅Π»ΠΈΠ· re2c 3.0, ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡΠ° Π»Π΅ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΡ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΠΎΠ² Π΄Π»Ρ ΡΠ·ΡΠΊΠΎΠ² C, C++, Go ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π½ΠΎΠ³ΠΎ Π² ΡΡΠΎΠΌ ΡΠ΅Π»ΠΈΠ·Π΅ ΡΠ·ΡΠΊΠ° Rust. ΠΠ»Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ Rust ΠΏΡΠΈΡΠ»ΠΎΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄ΡΡΠ³ΡΡ ΠΌΠΎΠ΄Π΅Π»Ρ ΠΊΠΎΠ΄ΠΎΠ³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ, Π³Π΄Π΅ ΠΊΠΎΠ½Π΅ΡΠ½ΡΠΉ Π°Π²ΡΠΎΠΌΠ°Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ Π² Π²ΠΈΠ΄Π΅ ΡΠΈΠΊΠ»Π° ΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ-ΡΠΎΡΡΠΎΡΠ½ΠΈΡ, Π° Π½Π΅ Π² Π²ΠΈΠ΄Π΅ ΠΌΠ΅ΡΠΎΠΊ ΠΈ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ΠΎΠ² (ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π² Rust Π½Π΅Ρ goto, Π² ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ Π‘, Π‘++ ΠΈ Go).
Re2c ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠ΅ΡΡΡ Π½Π° Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ Π±ΡΡΡΡΡΡ
ΠΈ Π»Π΅Π³ΠΊΠΎ Π²ΡΡΡΠ°ΠΈΠ²Π°Π΅ΠΌΡΡ
Π»Π΅ΠΊΡΠ΅ΡΠΎΠ². ΠΠ½ ΠΎΡΠ»ΠΈΡΠ°Π΅ΡΡΡ ΠΎΡ Π±ΠΎΠ»Π΅Π΅ ΠΈΠ·Π²Π΅ΡΡΠ½ΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΎΠ³Π° flex Π³ΠΈΠ±ΠΊΠΈΠΌ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠΌ, Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠ΅ΠΉ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ
Π½Π΅ΡΠ°Π±Π»ΠΈΡΠ½ΡΡ
Π»Π΅ΠΊΡΠ΅ΡΠΎΠ² ΠΈ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΎΠΉ Π·Π°Ρ
Π²Π°ΡΠΎΠ² (submatch extraction) Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ Π΄Π΅ΡΠ΅ΡΠΌΠΈΠ½ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ
ΠΊΠΎΠ½Π΅ΡΠ½ΡΡ
Π°Π²ΡΠΎΠΌΠ°ΡΠΎΠ² Ρ ΡΡΠ³Π°ΠΌΠΈ (TDFA). Re2c ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π² ΠΏΡΠΎΠ΅ΠΊΡΠ°Ρ
, Π³Π΄Π΅ Π²Π°ΠΆΠ½Π° ΡΠΊΠΎΡΠΎΡΡΡ ΡΠ°Π±ΠΎΡΡ Π»Π΅ΠΊΡΠ΅ΡΠ°, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Π² Ninja ΠΈ Π² PHP. ΠΠ° ΡΠ°ΠΉΡΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΠΈΠΌΠ΅Π΅ΡΡΡ ΠΏΠΎΠ΄Π±ΠΎΡΠΊΠ° ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ΅ΠΏΠ΅ΡΡ ΠΏΠΎΡΡΠΈΡΠΎΠ²Π°Π½Ρ Π² ΡΠΎΠΌ ΡΠΈΡΠ»Π΅ Π½Π° Rust.
ΠΡΡΠΎΡΠ½ΠΈΠΊ: opennet.ru