Выпуск Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π° лСксичСских Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ΠΎΠ² re2c 4.0

ΠžΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½ Ρ€Π΅Π»ΠΈΠ· re2c 4.0 — Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π° лСксичСских Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ΠΎΠ² (ΠΎΠ½ ΠΆΠ΅ компилятор рСгулярных Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ Π² ΠΊΠΎΠ΄ Π½Π° Ρ†Π΅Π»Π΅Π²ΠΎΠΌ языкС программирования). Re2c спСциализируСтся Π½Π° Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ быстрых ΠΈ Π»Π΅Π³ΠΊΠΎ встраиваСмых лСксСров ΠΈ отличаСтся ΠΎΡ‚ Π±ΠΎΠ»Π΅Π΅ извСстного Π°Π½Π°Π»ΠΎΠ³Π° Flex Π³ΠΈΠ±ΠΊΠΈΠΌ интСрфСйсом, Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠ΅ΠΉ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… Π½Π΅Ρ‚Π°Π±Π»ΠΈΡ‡Π½Ρ‹Ρ… лСксСров ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ Π·Π°Ρ…Π²Π°Ρ‚ΠΎΠ² (submatch extraction) Π½Π° основС Π΄Π΅Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹Ρ… Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΎΠ² с тэгами (TDFA). re2c ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°Ρ…, Π³Π΄Π΅ Π²Π°ΠΆΠ½Π° ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρ‹ лСксСра, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π² Ninja ΠΈ Π² PHP.

Π’ Ρ€Π΅Π»ΠΈΠ·Π΅ 4.0 ΠΊΠΎΡ€Π΅Π½Π½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΏΠ΅Ρ€Π΅Ρ€Π°Π±ΠΎΡ‚Π°Π½Π° подсистСма Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ ΠΊΠΎΠ΄Π°, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ»ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ восьми Π½ΠΎΠ²Ρ‹Ρ… языков (D, Haskell, Java, JavaScript, OCaml, Python, V, Zig) Π² Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊ ΡƒΠΆΠ΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹ΠΌ (C/C++, Go, Rust), Π° Ρ‚Π°ΠΊΠΆΠ΅ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±Ρ‰ΠΈΠΉ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ добавлСния Π½ΠΎΠ²Ρ‹Ρ… языков Ρ‡Π΅Ρ€Π΅Π· ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹.

ΠšΠΎΠ΄ΠΎΠ³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π·Π° Ρ‚Ρ€Π°Π½ΡΠ»ΡΡ†ΠΈΡŽ ΡƒΠΆΠ΅ построСнного ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠ³ΠΎ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚Π° Π² ΠΊΠΎΠ΄, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π΅Π³ΠΎ Π·Π°Π΄Π°Ρ‡Π° — Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ подходящиС для Ρ†Π΅Π»Π΅Π²ΠΎΠ³ΠΎ языка ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΠ΅ конструкции, Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΎΠ±Ρ‰ΡƒΡŽ модСль ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈ Ρ‚.Π΄. Π Π°Π½Π΅Π΅ вся эта Π»ΠΎΠ³ΠΈΠΊΠ° Π±Ρ‹Π»Π° Ρ‡Π°ΡΡ‚ΡŒΡŽ исходного ΠΊΠΎΠ΄Π° re2c, ΠΈ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π΅Ρ‘ ΠΈΠ»ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ язык, ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΠ»ΠΎΡΡŒ ΠΏΠ°Ρ‚Ρ‡ΠΈΡ‚ΡŒ исходный ΠΊΠΎΠ΄ ΠΈ ΠΏΠ΅Ρ€Π΅ΡΠΎΠ±ΠΈΡ€Π°Ρ‚ΡŒ re2c. ΠŸΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ ΠΏΠ°Ρ‚Ρ‡ΠΈ Π½Π΅ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π»ΠΈΡΡŒ Π² основной Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ Π±Π΅Π· Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ стандартного Π½Π°Π±ΠΎΡ€Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² ΠΈ тСстов, Ρ‡Ρ‚ΠΎ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ услоТняло вСсь процСсс.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ вся эта Π»ΠΎΠ³ΠΈΠΊΠ° пСрСнСсСна Π² синтаксичСскиС Ρ„Π°ΠΉΠ»Ρ‹ — тСкстовыС ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ прСдоставлСны ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ (ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ re2c ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ стандартныС). Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ re2c ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ свободСн ΠΎΡ‚ Π΄Π΅Ρ‚Π°Π»Π΅ΠΉ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ языка ΠΈ полагаСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° синтаксичСский Ρ„Π°ΠΉΠ». ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ частично ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ синтаксичСский Ρ„Π°ΠΉΠ» ΠΈΠ»ΠΈ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ с нуля. Для всСх ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹Ρ… языков Π΅ΡΡ‚ΡŒ полная докумСнтация с ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌΠΈ.

Π’ Ρ€Π΅Π»ΠΈΠ· Ρ‚Π°ΠΊΠΆΠ΅ вошло ΠΌΠ½ΠΎΠ³ΠΎ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ для упрощСния ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса ΠΈ ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π·Π°Ρ…Π²Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΌΠΈ Π³Ρ€ΡƒΠΏΠΏΠ°ΠΌΠΈ (capturing groups). Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΎΠ½Π»Π°ΠΉΠ½-срСда для рСдактирования ΠΈ компиляции ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ².

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru