Π’ понСдСльник 20 июля Π²Ρ‹ΡˆΠ΅Π» Ρ€Π΅Π»ΠΈΠ· re2c – Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π° быстрых лСксичСских Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ΠΎΠ².
ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ измСнСния:

  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° языка Go
    (Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ ΠΈΠ»ΠΈ ΠΎΠΏΡ†ΠΈΠ΅ΠΉ —lang go для re2c, ΠΈΠ»ΠΈ Π² Π²ΠΈΠ΄Π΅ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ re2go).
    ДокумСнтация для C ΠΈ Go гСнСрируСтся ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈ Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ тСкста, Π½ΠΎ с Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ
    ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌΠΈ ΠΊΠΎΠ΄Π°. ΠŸΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΏΠ΅Ρ€Π΅Ρ€Π°Π±ΠΎΡ‚Π°Π½Π° подсистСма ΠΊΠΎΠ΄ΠΎΠ³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ Π² re2c, Ρ‡Ρ‚ΠΎ
    Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΎΠ±Π»Π΅Π³Ρ‡ΠΈΡ‚ΡŒ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ Π½ΠΎΠ²Ρ‹Ρ… языков Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ.

  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Π°Ρ систСма сборки Π½Π° CMake (спасибо ligfx!).
    ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠΈ пСрСвСсти re2c Π½Π° CMake ΠΏΡ€Π΅Π΄ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π»ΠΈΡΡŒ ΡƒΠΆΠ΅ Π΄Π°Π²Π½ΠΎ, Π½ΠΎ Π΄ΠΎ ligfx Π½ΠΈΠΊΡ‚ΠΎ Π½Π΅
    ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠΈΠ» ΠΏΠΎΠ»Π½ΠΎΡ†Π΅Π½Π½ΠΎΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅.
    Бтарая систСма сборки Π½Π° Autotools ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅Ρ‚ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒΡΡ ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ,
    ΠΈ Π² ΠΎΠ±ΠΎΠ·Ρ€ΠΈΠΌΠΎΠΌ Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ Π½Π΅Ρ‚ ΠΏΠ»Π°Π½ΠΎΠ² ΠΎΡ‚ Π½Π΅Ρ‘ ΠΎΡ‚ΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ (отчасти Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ
    ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ дистрибутивов, отчасти ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ старая систСма сборки
    ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½Π΅Π΅ ΠΈ Π»Π°ΠΊΠΎΠ½ΠΈΡ‡Π½Π΅Π΅ Π½ΠΎΠ²ΠΎΠΉ).
    ОбС систСмы Π½Π°Ρ€Π°Π²Π½Π΅ Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½ΠΎ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΡƒΡŽΡ‚ΡΡ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Travis CI.

  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ задания интСрфСйсного ΠΊΠΎΠ΄Π° Π² конфигурациях ΠΏΡ€ΠΈ использовании
    ΠΎΠ±ΠΎΠ±Ρ‰Ρ‘Π½Π½Π³ΠΎ АПИ (generic API). РаньшС Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ АПИ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΠ»ΠΎΡΡŒ Π·Π°Π΄Π°Π²Π°Ρ‚ΡŒ Π² Ρ„ΠΎΡ€ΠΌΠ΅
    Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈΠ»ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… макросов. Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π΄Π°Π²Π°Ρ‚ΡŒ Π² Ρ„ΠΎΡ€ΠΌΠ΅ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹Ρ…
    строк с ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½Ρ‹ΠΌΠΈ ΡˆΠ°Π±Π»ΠΎΠ½Π½Ρ‹ΠΌΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ Π²ΠΈΠ΄Π° @@{name} ΠΈΠ»ΠΈ просто @@ (Ссли
    ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ ΠΎΠ΄ΠΈΠ½ ΠΈ Π½Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ нСоднозначности). Π‘Ρ‚ΠΈΠ»ΡŒ АПИ задаётся ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠ΅ΠΉ
    re2c:api:style (Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ functions Π·Π°Π΄Π°Ρ‘Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ ΡΡ‚ΠΈΠ»ΡŒ, Π° free-form – ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹ΠΉ).

  • Π£Π»ΡƒΡ‡ΡˆΠ΅Π½Π° Ρ€Π°Π±ΠΎΡ‚Π° ΠΎΠΏΡ†ΠΈΠΈ -c, —start-conditions, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π΅ΠΉ ΡΠΎΠ²ΠΌΠ΅Ρ‰Π°Ρ‚ΡŒ нСсколько
    взаимосвязанных лСксСров Π² ΠΎΠ΄Π½ΠΎΠΌ re2c-Π±Π»ΠΎΠΊΠ΅. Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ
    ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Π΅ Π±Π»ΠΎΠΊΠΈ Π½Π°Ρ€Π°Π²Π½Π΅ с условными ΠΈ Π·Π°Π΄Π°Π²Π°Ρ‚ΡŒ нСсколько Π½Π΅ связанных условных
    Π±Π»ΠΎΠΊΠΎΠ² Π² ΠΎΠ΄Π½ΠΎΠΌ Ρ„Π°ΠΉΠ»Π΅.
    Π£Π»ΡƒΡ‡ΡˆΠ΅Π½Π° Ρ€Π°Π±ΠΎΡ‚Π° ΠΎΠΏΡ†ΠΈΠΈ -r, —reuse (ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ΅ использованиС ΠΊΠΎΠ΄Π° ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π±Π»ΠΎΠΊΠ°
    Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… Π±Π»ΠΎΠΊΠ°Ρ…) Π² сочСтании с опциями -c, —start-conditions ΠΈ -f, —storable-state
    (лСксСр с сохраняСмым состояниСм, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€Π΅Ρ€Π²Π°Ρ‚ΡŒ Π² ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎΠΌ мСстС
    ΠΈ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ·ΠΆΠ΅).

  • Π˜ΡΠΏΡ€Π°Π²Π»Π΅Π½Π° ошибка Π² Π½Π΅Π΄Π°Π²Π½ΠΎ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π½ΠΎΠΌ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ΅ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΊΠΎΠ½Ρ†Π° Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…
    (EOF rule), ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΠ²ΡˆΠ°Ρ Π² Ρ€Π΅Π΄ΠΊΠΈΡ… случаях ΠΊ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠΉ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅
    ΠΏΠ΅Ρ€Π΅ΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰ΠΈΡ…ΡΡ ΠΏΡ€Π°Π²ΠΈΠ».

  • Π£ΠΏΡ€ΠΎΡ‰Ρ‘Π½ процСсс бутстрапа. РаньшС систСма сборки ΠΏΡ‹Ρ‚Π°Π»Π°ΡΡŒ динамичСски Π½Π°ΠΉΡ‚ΠΈ ΡƒΠΆΠ΅
    собранный re2c, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π±Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для пСрСсборки самого сСбя.
    Π­Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΠ»ΠΎ ΠΊ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΌ зависимостям (ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π³Ρ€Π°Ρ„ зависимостСй получался
    динамичСским, Ρ‡Π΅Π³ΠΎ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ систСм сборки Π½Π΅ Π»ΡŽΠ±ΠΈΡ‚).
    Π’Π΅ΠΏΠ΅Ρ€ΡŒ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠ΅Ρ€Π΅ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ лСксСры, трСбуСтся Π² явном Π²ΠΈΠ΄Π΅
    ΡΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ систСму сборки ΠΈ Π·Π°Π΄Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ RE2C_FOR_BUILD.

Бпасибо всСм, ΠΊΡ‚ΠΎ участвовал Π² ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠ΅ этого Ρ€Π΅Π»ΠΈΠ·Π°!

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