ΠΡΠ½ΠΎΠ²Π½ΠΈ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ:
- ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° Π΅Π·ΠΈΠΊΠ° 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