рд╕реЛрдорд╡рд╛рд░, 20 рдЬреБрд▓реИ рд░реЛрдЬреА, re2c, рдПрдХ рд╡реЗрдЧрд╡рд╛рди рд▓реЗрдХреНрд╕рд┐рдХрд▓ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдЬрдирд░реЗрдЯрд░, рд░рд┐рд▓реАрдЬ рдЭрд╛рд▓рд╛.
рдореБрдЦреНрдп рдмрджрд▓:

  • рдЧреЛ рднрд╛рд╖рд╛ рд╕рдорд░реНрдерди рдЬреЛрдбрд▓реЗ
    (рдПрдХрддрд░ re2c рд╕рд╛рдареА --lang go рдкрд░реНрдпрд╛рдпрд╛рджреНрд╡рд╛рд░реЗ рдХрд┐рдВрд╡рд╛ рд╡реЗрдЧрд│реНрдпрд╛ re2go рдкреНрд░реЛрдЧреНрд░рд╛рдо рджреНрд╡рд╛рд░реЗ рд╕рдХреНрд╖рдо).
    C рдЖрдгрд┐ Go рд╕рд╛рдареА рджрд╕реНрддрдРрд╡рдЬреАрдХрд░рдг рд╕рдорд╛рди рдордЬрдХреБрд░рд╛рддреВрди рд╡реНрдпреБрддреНрдкрдиреНрди рдХреЗрд▓реЗ рдЬрд╛рддреЗ, рдкрд░рдВрддреБ рднрд┐рдиреНрди
    рдХреЛрдб рдЙрджрд╛рд╣рд░рдгреЗ. re2c рдордзреАрд▓ рдХреЛрдб рдЬрдирд░реЗрд╢рди рдЙрдкрдкреНрд░рдгрд╛рд▓реА рдкреВрд░реНрдгрдкрдгреЗ рдкреБрдирд░реНрд░рдЪрдирд╛ рдХреЗрд▓реА рдЧреЗрд▓реА рдЖрд╣реЗ, рдЬреА
    рднрд╡рд┐рд╖реНрдпрд╛рдд рдирд╡реАрди рднрд╛рд╖рд╛рдВрдирд╛ рд╕рдорд░реНрдерди рджреЗрдгреЗ рд╕реЛрдкреЗ рдХреЗрд▓реЗ рдкрд╛рд╣рд┐рдЬреЗ.

  • CMake рд╕рд╛рдареА рдкрд░реНрдпрд╛рдпреА рдмрд┐рд▓реНрдб рд╕рд┐рд╕реНрдЯрдо рдЬреЛрдбрд▓реА (рдзрдиреНрдпрд╡рд╛рдж ligfx!).
    re2c рдЪреЗ CMake рдордзреНрдпреЗ рднрд╛рд╖рд╛рдВрддрд░ рдХрд░рдгреНрдпрд╛рдЪрд╛ рдкреНрд░рдпрддреНрди рдмрд░реНтАНрдпрд╛рдЪ рдХрд╛рд│рд╛рдкрд╛рд╕реВрди рдХреЗрд▓рд╛ рдЬрд╛рдд рдЖрд╣реЗ, рдкрд░рдВрддреБ ligfx рдкреВрд░реНрд╡реА рдХреЛрдгреАрд╣реА рдирд╛рд╣реА
    рдПрдХ рд╕рдВрдкреВрд░реНрдг рдЙрдкрд╛рдп рдСрдлрд░ рдХреЗрд▓рд╛.
    Autotools рд╡рд░реАрд▓ рдЬреБрдиреА рдмрд┐рд▓реНрдб рд╕рд┐рд╕реНрдЯреАрдо рд╕рдорд░реНрдерд┐рдд рдЖрдгрд┐ рд╡рд╛рдкрд░рд▓реА рдЬрд╛рдд рдЖрд╣реЗ,
    рдЖрдгрд┐ рдирдЬреАрдХрдЪреНрдпрд╛ рднрд╡рд┐рд╖реНрдпрд╛рдд рддреЗ рд╕реЛрдбрдгреНрдпрд╛рдЪреА рдХреЛрдгрддреАрд╣реА рдпреЛрдЬрдирд╛ рдирд╛рд╣реА (рдЕрдВрд╢рддрдГ рддрдпрд╛рд░ рд╣реЛрдК рдирдпреЗ рдореНрд╣рдгреВрди
    рд╡рд┐рддрд░рдг рд╡рд┐рдХрд╛рд╕рдХрд╛рдВрд╕рд╛рдареА рд╕рдорд╕реНрдпрд╛, рдЕрдВрд╢рддрдГ рдЬреБрдиреНрдпрд╛ рдмрд┐рд▓реНрдб рд╕рд┐рд╕реНрдЯрдордореБрд│реЗ
    рдирд╡реАрди рдкреЗрдХреНрд╖рд╛ рдЕрдзрд┐рдХ рд╕реНрдерд┐рд░ рдЖрдгрд┐ рдЕрдзрд┐рдХ рд╕рдВрдХреНрд╖рд┐рдкреНрдд).
    рдЯреНрд░реЕрд╡реНрд╣рд┐рд╕ рд╕реАрдЖрдп рд╡рд╛рдкрд░реВрди рджреЛрдиреНрд╣реА рдкреНрд░рдгрд╛рд▓реАрдВрдЪреА рд╕рддрдд рдЪрд╛рдЪрдгреА рдХреЗрд▓реА рдЬрд╛рддреЗ.

  • рд╡рд╛рдкрд░рддрд╛рдирд╛ рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рдирдордзреНрдпреЗ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЛрдб рд╕реЗрдЯ рдХрд░рдгреНрдпрд╛рдЪреА рдХреНрд╖рдорддрд╛ рдЬреЛрдбрд▓реА
    рдЬреЗрдиреЗрд░рд┐рдХ API. рдкреВрд░реНрд╡реА, рдмрд╣реБрддреЗрдХ API рдлреЙрд░реНрдордордзреНрдпреЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рд╣реЛрддреЗ
    рдлрдВрдХреНрд╢рдиреНрд╕ рдХрд┐рдВрд╡рд╛ рдлрдВрдХреНрд╢рди рдореЕрдХреНрд░реЛ. рдЖрддрд╛ рддреЗ рдЕрдирд┐рдпрдВрддреНрд░рд┐рдд рд╕реНрд╡рд░реВрдкрд╛рдд рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХреЗрд▓реЗ рдЬрд╛рдК рд╢рдХрддрд╛рдд
    @@{name} рдХрд┐рдВрд╡рд╛ рдлрдХреНрдд @@ (рдЬрд░
    рдлрдХреНрдд рдПрдХ рдкреЕрд░рд╛рдореАрдЯрд░ рдЖрд╣реЗ рдЖрдгрд┐ рдХреЛрдгрддреАрд╣реА рдЕрд╕реНрдкрд╖реНрдЯрддрд╛ рдирд╛рд╣реА). API рд╢реИрд▓реА рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рдирджреНрд╡рд╛рд░реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХреЗрд▓реА рдЖрд╣реЗ
    re2c:api:style (рдлрдВрдХреНрд╢рди рд╡реНрд╣реЕрд▓реНрдпреВ рдлрдВрдХреНрд╢рдирд▓ рд╢реИрд▓реА рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреЗ рдЖрдгрд┐ рдлреНрд░реА-рдлреЙрд░реНрдо рдПрдХ рдЕрдирд┐рдпрдВрддреНрд░рд┐рдд рд╢реИрд▓реА рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреЗ).

  • -c, --start-conditions рдкрд░реНрдпрд╛рдпрд╛рдЪреЗ рдСрдкрд░реЗрд╢рди рд╕реБрдзрд╛рд░рд▓реЗ рдЧреЗрд▓реЗ рдЖрд╣реЗ, рдЬреНрдпрд╛рдореБрд│реЗ рддреБрдореНрд╣рд╛рд▓рд╛ рдЕрдиреЗрдХ рдПрдХрддреНрд░ рдХрд░рддрд╛ рдпреЗрддреАрд▓.
    рдПрдХрд╛ re2c рдмреНрд▓реЙрдХрдордзреНрдпреЗ рдЗрдВрдЯрд░рдХрдиреЗрдХреНрдЯреЗрдб рд▓реЗрдХреНрд╕рд░реНрд╕. рдЖрддрд╛ рддреБрдореНрд╣реА рд╡рд╛рдкрд░реВ рд╢рдХрддрд╛
    рд╕рд╢рд░реНрдд рдмреНрд▓реЙрдХреНрд╕рд╕рд╣ рдирд┐рдпрдорд┐рдд рдмреНрд▓реЙрдХреНрд╕ рдЖрдгрд┐ рдЕрдиреЗрдХ рдЕрд╕рдВрдмрдВрдзрд┐рдд рд╕рд╢рд░реНрдд рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рд╛
    рдПрдХрд╛ рдлрд╛рдИрд▓рдордзреНрдпреЗ рдмреНрд▓реЙрдХ.
    -r, --reuse рдкрд░реНрдпрд╛рдпрд╛рдЪреЗ рд╕реБрдзрд╛рд░рд┐рдд рдСрдкрд░реЗрд╢рди (рдПрдХрд╛ рдмреНрд▓реЙрдХрдордзреАрд▓ рдХреЛрдбрдЪрд╛ рдкреБрдирд░реНрд╡рд╛рдкрд░
    рдЗрддрд░ рдмреНрд▓реЙрдХреНрд╕рдордзреНрдпреЗ) -c, --start-conditions рдЖрдгрд┐ -f, --storable-state рдкрд░реНрдпрд╛рдпрд╛рдВрдЪреНрдпрд╛ рд╕рдВрдпреЛрдЬрдирд╛рдд
    (рдПрдХ рд╕реНрдЯреЗрдЯрдлреБрд▓ рд▓реЗрдХреНрд╕рд░ рдЬреЛ рдХреЛрдгрддреНрдпрд╛рд╣реА рдХреНрд╖рдгреА рд╡реНрдпрддреНрдпрдп рдЖрдгреВ рд╢рдХрддреЛ
    рдЖрдгрд┐ рдирдВрддрд░ рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреА рд╕реБрд░реВ рдареЗрд╡рд╛).

  • рдиреБрдХрддреНрдпрд╛рдЪ рдЬреЛрдбрд▓реЗрд▓реНрдпрд╛ рдПрдиреНрдб-рдСрдл-рдЗрдирдкреБрдЯ рдЕрд▓реНрдЧреЛрд░рд┐рджрдордордзреАрд▓ рдмрдЧрдЪреЗ рдирд┐рд░рд╛рдХрд░рдг рдХреЗрд▓реЗ
    (EOF рдирд┐рдпрдо), рдЬреНрдпрд╛рдореБрд│реЗ рдХреНрд╡рдЪрд┐рдд рдкреНрд░рд╕рдВрдЧреА рдЪреБрдХреАрдЪреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╣реЛрддреЗ
    рдЖрдЪреНрдЫрд╛рджрд┐рдд рдирд┐рдпрдо.

  • рдмреВрдЯрд╕реНрдЯреНрд░реЕрдк рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕реБрд▓рдн рдХреЗрд▓реА рдЖрд╣реЗ. рдкреВрд░реНрд╡реА, рдмрд┐рд▓реНрдб рд╕рд┐рд╕реНрдЯрдордиреЗ рдЧрддрд┐рд╢реАрд▓рдкрдгреЗ рдЖрдзреАрдЪ рд╢реЛрдзрдгреНрдпрд╛рдЪрд╛ рдкреНрд░рдпрддреНрди рдХреЗрд▓рд╛
    рдПрдХ re2c рдмрд┐рд▓реНрдб рдЬреНрдпрд╛рдЪрд╛ рд╡рд╛рдкрд░ рд╕реНрд╡рддрдГрд▓рд╛ рдкреБрдиреНрд╣рд╛ рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдХреЗрд▓рд╛ рдЬрд╛рдК рд╢рдХрддреЛ.
    рдпрд╛рдЪрд╛ рдкрд░рд┐рдгрд╛рдо рдЪреБрдХреАрдЪреНрдпрд╛ рдЕрд╡рд▓рдВрдмрдирд╛рдд рдЭрд╛рд▓рд╛ (рдЕрд╡рд▓рдВрдмрди рдЖрд▓реЗрдЦ рдЕрд╕рд▓реНрдпрд╛рдиреЗ
    рдбрд╛рдпрдиреЕрдорд┐рдХ, рдЬреЗ рдмрд╣реБрддреЗрдХ рдмрд┐рд▓реНрдб рд╕рд┐рд╕реНрдЯрдордирд╛ рдЖрд╡рдбрдд рдирд╛рд╣реА).
    рдЖрддрд╛, рд▓реЗрдХреНрд╕рд░реНрд╕рдЪреА рдкреБрдирд░реНрдмрд╛рдВрдзрдгреА рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рдЖрдкрд▓реНрдпрд╛рд▓рд╛ рд╕реНрдкрд╖реНрдЯрдкрдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ
    рдмрд┐рд▓реНрдб рд╕рд┐рд╕реНрдЯрдо рдХреЙрдиреНрдлрд┐рдЧрд░ рдХрд░рд╛ рдЖрдгрд┐ RE2C_FOR_BUILD рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓ рд╕реЗрдЯ рдХрд░рд╛.

рдпрд╛ рдкреНрд░рдХрд╛рд╢рдирд╛рдЪреНрдпрд╛ рддрдпрд╛рд░реАрдд рд╕рд╣рднрд╛рдЧреА рдЭрд╛рд▓реЗрд▓реНрдпрд╛ рдкреНрд░рддреНрдпреЗрдХрд╛рдЪреЗ рдЖрднрд╛рд░!

рд╕реНрддреНрд░реЛрдд: linux.org.ru

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╛