ΠŸΡƒΡΠΊΠ°Π½Π΅ Π½Π° re2c лСксСр Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ 2.0

сС ΡΡŠΡΡ‚ΠΎΡ освобоТдаванС re2c 2.0, Π±Π΅Π·ΠΏΠ»Π°Ρ‚Π΅Π½ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ Π½Π° лСксикалСн Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ Π·Π° C ΠΈ C++. ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ΡŠΡ‚ re2c ΠΏΡŠΡ€Π²ΠΎΠ½Π°Ρ‡Π°Π»Π½ΠΎ Π΅ създадСн ΠΏΡ€Π΅Π· 1993 Π³. ΠΎΡ‚ ΠŸΠΈΡ‚ΡŠΡ€ Бамбулис ΠΊΠ°Ρ‚ΠΎ СкспСримСнталСн Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ Π½Π° ΠΌΠ½ΠΎΠ³ΠΎ Π±ΡŠΡ€Π·ΠΈ лСксикални Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ΠΈ, ΠΎΡ‚Π»ΠΈΡ‡Π°Π²Π°Ρ‰ сС ΠΎΡ‚ Π΄Ρ€ΡƒΠ³ΠΈΡ‚Π΅ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ΠΈ ΠΏΠΎ скоростта Π½Π° гСнСрирания ΠΊΠΎΠ΄ ΠΈ Π½Π΅ΠΎΠ±ΠΈΡ‡Π°ΠΉΠ½ΠΎ гъвкав потрСбитСлски интСрфСйс, ΠΊΠΎΠΉΡ‚ΠΎ позволява Π½Π° Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ΠΈΡ‚Π΅ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ лСсно ΠΈ Π΅Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎ ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€Π°Π½ΠΈ Π² ΡΡŠΡ‰Π΅ΡΡ‚Π²ΡƒΠ²Π°Ρ‰Π° ΠΊΠΎΠ΄ΠΎΠ²Π° Π±Π°Π·Π° . ΠžΡ‚Ρ‚ΠΎΠ³Π°Π²Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΡŠΡ‚ Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π΅Π½ ΠΎΡ‚ общността ΠΈ ΠΏΡ€ΠΎΠ΄ΡŠΠ»ΠΆΠ°Π²Π° Π΄Π° бъдС ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° Π·Π° СкспСримСнти ΠΈ изслСдвания Π² областта Π½Π° Ρ„ΠΎΡ€ΠΌΠ°Π»Π½ΠΈΡ‚Π΅ Π³Ρ€Π°ΠΌΠ°Ρ‚ΠΈΠΊΠΈ ΠΈ Π΄ΡŠΡ€ΠΆΠ°Π²Π½ΠΈ машини.

Основни ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ:

  • Π”ΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π·Π° Π΅Π·ΠΈΠΊΠ° 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.

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

ДобавянС Π½Π° Π½ΠΎΠ² ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€