ื‘ื™ื•ื ืฉื™ืฉื™, 2 ื‘ืื•ื’ื•ืกื˜, ืฉื•ื—ืจืจื” ื”ืฉื—ืจื•ืจ ืฉืœ re2c, ืžื—ื•ืœืœ ื—ื™ื ืžื™ ืฉืœ ืžื ืชื—ื™ื ืžื™ืœื•ื ื™ื™ื ืœืฉืคื•ืช C ื•-C++. Re2c ื ื›ืชื‘ ื‘-1993 ืขืœ ื™ื“ื™ Peter Bamboulis ื›ืžื—ื•ืœืœ ื ื™ืกื™ื•ื ื™ ืฉืœ ืžื ืชื—ื™ื ืžื™ืœื•ื ื™ื™ื ืžื”ื™ืจื™ื ืžืื•ื“, ื”ืžื•ื‘ื—ืŸ ืžืžื—ื•ืœืœื™ื ืื—ืจื™ื ืขืœ ื™ื“ื™ ืžื”ื™ืจื•ืช ื”ืงื•ื“ ืฉื ื•ืฆืจ ื•ืžืžืฉืง ืžืฉืชืžืฉ ื’ืžื™ืฉ ื‘ืฆื•ืจื” ื™ื•ืฆืืช ื“ื•ืคืŸ ื”ืžืืคืฉืจ ืœื”ื˜ืžื™ืข ืžื ืชื—ื™ื ื‘ืงืœื•ืช ื•ื‘ื™ืขื™ืœื•ืช ื‘ื‘ืกื™ืก ืงื•ื“ ืงื™ื™ื. ืžืื–, ื”ืคืจื•ื™ืงื˜ ืคื•ืชื— ืขืœ ื™ื“ื™ ื”ืงื”ื™ืœื” ื•ืžืžืฉื™ืš ืœื”ื•ื•ืช ืคืœื˜ืคื•ืจืžื” ืœื ื™ืกื•ื™ื™ื ื•ืžื—ืงืจื™ื ื‘ืชื—ื•ื ื”ื“ืงื“ื•ืงื™ื ื”ืคื•ืจืžืœื™ื™ื ื•ืžื›ื•ื ื•ืช ื”ืžืฆื‘ ื”ืกื•ืคื™.

ื—ื™ื“ื•ืฉื™ื ืขื™ืงืจื™ื™ื ื‘ื’ืจืกื” 1.2:

  • ื ื•ืกืคื” ื“ืจืš ื—ื“ืฉื” (ืคืฉื•ื˜ื”) ืœื‘ื“ื•ืง ืืช ืกื•ืฃ ื ืชื•ื ื™ ื”ืงืœื˜
    (ื‘ืื ื’ืœื™ืช "ื—ื•ืง EOF").
    ืœืฉื ื›ืš, ื ื•ืกืคื” ืชืฆื•ืจืช re2c:eof,
    ืžืืคืฉืจ ืœืš ืœื‘ื—ื•ืจ ืืช ืชื• ื”ื˜ืจืžื™ื ืœ,
    ื•ื›ืœืœ $ ืžื™ื•ื—ื“ ืฉื™ื•ืจื” ืื ื”ืœืงืกืจ
    ื”ื’ื™ืข ื‘ื”ืฆืœื—ื” ืœืกื•ืฃ ื ืชื•ื ื™ ื”ืงืœื˜.
    ืžื‘ื—ื™ื ื” ื”ื™ืกื˜ื•ืจื™ืช, re2c ืžืกืคืงืช ื‘ื—ื™ืจื” ืฉืœ ืžืกืคืจ ืฉื™ื˜ื•ืช ืื™ืžื•ืช ืขื‘ื•ืจ
    ืกื•ืฃ ืชืฉื•ืžื•ืช ืžืฉืชื ื•ืช ื‘ืžื’ื‘ืœื”, ื™ืขื™ืœื•ืช ื•ืคืฉื˜ื•ืช
    ื™ื™ืฉื•ืžื™ื. ื”ืฉื™ื˜ื” ื”ื—ื“ืฉื” ื ื•ืขื“ื” ืœืคืฉื˜ ืืช ื›ืชื™ื‘ืช ื”ืงื•ื“, ืชื•ืš ื›ื“ื™
    ืชื•ืš ืฉืžื™ืจื” ืขืœ ืืคืงื˜ื™ื‘ื™ื•ืช ื•ื™ืฉื™ืžื” ื ืจื—ื‘ืช. ื“ืจื›ื™ื ื™ืฉื ื•ืช
    ืขื“ื™ื™ืŸ ืขื•ื‘ื“ ื•ืขืฉื•ื™ ืœื”ื™ื•ืช ืžื•ืขื“ืฃ ื‘ืžืงืจื™ื ืžืกื•ื™ืžื™ื.

  • ื ื•ืกืคื” ืืช ื”ื™ื›ื•ืœืช ืœื›ืœื•ืœ ืงื‘ืฆื™ื ื—ื™ืฆื•ื ื™ื™ื ื‘ืืžืฆืขื•ืช ื”ื•ืจืื”
    /*!include:re2c "file.re" */ ืฉื‘ื• file.re
    ื–ื” ื”ืฉื ืฉืœ ืงื•ื‘ืฅ include. Re2c ืžื—ืคืฉ ืงื‘ืฆื™ื ื‘ืกืคืจื™ื™ืช ื”ืงื‘ืฆื™ื ื”ื›ื•ืœืœื™ื,
    ื›ืžื• ื’ื ื‘ืจืฉื™ืžืช ื”ื ืชื™ื‘ื™ื ืฉืฆื•ื™ื ื• ื‘ืืžืฆืขื•ืช ื”ืืคืฉืจื•ืช -I.
    ื”ืงื‘ืฆื™ื ื”ื›ืœื•ืœื™ื ืขืฉื•ื™ื™ื ืœื›ืœื•ืœ ืงื‘ืฆื™ื ืื—ืจื™ื.
    Re2c ืžืกืคืง ืงื‘ืฆื™ื "ืกื˜ื ื“ืจื˜ื™ื™ื" ื‘ืกืคืจื™ื™ืช include/
    ืคืจื•ื™ืงื˜ - ืฆืคื•ื™ ืฉื™ืฆื˜ื‘ืจื• ืฉื ื”ื’ื“ืจื•ืช ืฉื™ืžื•ืฉื™ื•ืช
    ื‘ื™ื˜ื•ื™ื™ื ืจื’ื•ืœืจื™ื™ื, ืžืฉื”ื• ื›ืžื• ื”ืกืคืจื™ื™ื” ื”ืกื˜ื ื“ืจื˜ื™ืช.
    ืขื“ ื›ื”, ืœื‘ืงืฉืช ื”ืขื•ื‘ื“ื™ื, ื ื•ืกืฃ ืงื•ื‘ืฅ ืื—ื“ ืขื ื”ื’ื“ืจื•ืช ืฉืœ ืงื˜ื’ื•ืจื™ื•ืช Unicode.

  • ื ื•ืกืคื” ืืช ื”ื™ื›ื•ืœืช ืœื™ืฆื•ืจ ืงื‘ืฆื™ ื›ื•ืชืจืช ืขื ืฉืจื™ืจื•ืชื™ืช
    ืชื•ื›ืŸ ื‘ืืžืฆืขื•ืช ืืคืฉืจื•ื™ื•ืช -t --type-header (ืื• ืžืชืื™ื
    ืชืฆื•ืจื•ืช) ื•ื”ื ื—ื™ื•ืช ื—ื“ืฉื•ืช /*!header:re2c:on*/ ื•
    /*!header:re2c:off*/. ื–ื” ืขืฉื•ื™ ืœื”ื™ื•ืช ืฉื™ืžื•ืฉื™ ื‘ืžืงืจื™ื ืฉื‘ื”ื
    ื›ืืฉืจ re2c ืฆืจื™ืš ืœื™ืฆื•ืจ ื”ื’ื“ืจื•ืช ืฉืœ ืžืฉืชื ื™ื, ืžื‘ื ื™ื ื•ืคืงื•ื“ื•ืช ืžืืงืจื•,
    ื‘ืฉื™ืžื•ืฉ ื‘ื™ื—ื™ื“ื•ืช ืชืจื’ื•ื ืื—ืจื•ืช.

  • Re2c ืžื‘ื™ืŸ ื›ืขืช UTF8 ืžื™ืœื•ืœื™ ื•ืžื—ืœืงื•ืช ืชื•ื•ื™ื ื‘ื‘ื™ื˜ื•ื™ื™ื ืจื’ื•ืœืจื™ื™ื.
    ื›ื‘ืจื™ืจืช ืžื—ื“ืœ, re2c ืžื ืชื— ื‘ื™ื˜ื•ื™ื™ื ื›ืžื• "โˆ€x โˆƒy" as.
    ืจืฆืฃ ืฉืœ ืชื•ื•ื™ ASCII 1-bit e2 88 80 78 20 e2 88 83 79
    (ืงื•ื“ื™ hex), ื•ื”ืžืฉืชืžืฉื™ื ืฆืจื™ื›ื™ื ืœื”ื™ืžืœื˜ ืžืชื•ื•ื™ Unicode ื‘ืื•ืคืŸ ื™ื“ื ื™:
    "u2200x u2203y". ื–ื” ืžืื•ื“ ืœื ื ื•ื— ื•ื‘ืœืชื™ ืฆืคื•ื™ ืขื‘ื•ืจ ืจื‘ื™ื
    ืžืฉืชืžืฉื™ื (ื›ืคื™ ืฉืžืขื™ื“ื™ื ื“ื™ื•ื•ื—ื™ ื‘ืื’ื™ื ืงื‘ื•ืขื™ื). ืื– ืขื›ืฉื™ื•
    re2c ืžืกืคืง ืืคืฉืจื•ืช ืงื™ื“ื•ื“ --input ,
    ืžื” ืฉืžืืคืฉืจ ืœืš ืœืฉื ื•ืช ืืช ื”ื”ืชื ื”ื’ื•ืช ื•ืœื ืชื— "โˆ€x โˆƒy" ื›
    2200 78 20 2203.

  • Re2c ืžืืคืฉืจ ื›ืขืช ืฉื™ืžื•ืฉ ื‘ืœื•ืงื™ื ืจื’ื™ืœื™ื ืฉืœ re2c ื‘ืžืฆื‘ -r --reuse.
    ื–ื” ื ื•ื— ืื ืงื•ื‘ืฅ ื”ืงืœื˜ ืžื›ื™ืœ ื‘ืœื•ืงื™ื ืจื‘ื™ื ื•ืจืง ื—ืœืง ืžื”ื
    ืฆืจื™ืš ืœืขืฉื•ืช ืฉื™ืžื•ืฉ ื—ื•ื–ืจ.

  • ืขื›ืฉื™ื• ืืชื” ื™ื›ื•ืœ ืœื”ื’ื“ื™ืจ ืืช ื”ืคื•ืจืžื˜ ืฉืœ ืื–ื”ืจื•ืช ื•ื”ื•ื“ืขื•ืช ืฉื’ื™ืื”
    ื‘ืืžืฆืขื•ืช ื”ืืคืฉืจื•ืช ื”ื—ื“ืฉื” --location-format . ืคื•ืจืžื˜ GNU ืžื•ืฆื’
    ื‘ืชื•ืจ ืฉื ืงื•ื‘ืฅ:ืฉื•ืจื”:ืขืžื•ื“ื”:, ื•ืคื•ืจืžื˜ MSVC ื‘ืชื•ืจ ืฉื ืงื•ื‘ืฅ(ืฉื•ืจื”,ืขืžื•ื“ื”).
    ืชื›ื•ื ื” ื–ื• ืขืฉื•ื™ื” ืœื”ื™ื•ืช ืฉื™ืžื•ืฉื™ืช ืขื‘ื•ืจ ืื•ื”ื‘ื™ IDE.
    ื ื•ืกืคื” ื’ื ืืคืฉืจื•ืช --verbose, ืืฉืจ ืžื“ืคื™ืกื” ื”ื•ื“ืขืช ื ื™ืฆื—ื•ืŸ ืงืฆืจื” ืื ื”ื™ื ืžืฆืœื™ื—ื”.

  • ืžืฆื‘ ื”"ืชืื™ืžื•ืช" ืขื flex ืฉื•ืคืจ - ื›ืžื” ืฉื’ื™ืื•ืช ื ื™ืชื•ื— ืชื•ืงื ื• ื•
    ืขื“ื™ืคื•ืช ืžืคืขื™ืœ ืฉื’ื•ื™ื” ื‘ืžืงืจื™ื ื ื“ื™ืจื™ื.
    ืžื‘ื—ื™ื ื” ื”ื™ืกื˜ื•ืจื™ืช, ื”ืืคืฉืจื•ืช -F --flex-support ืืคืฉืจื” ืœืš ืœื›ืชื•ื‘ ืงื•ื“
    ืžืขื•ืจื‘ื‘ ื‘ืกื’ื ื•ืŸ flex ื•ืกื’ื ื•ืŸ re2c, ืžื” ืฉืžืงืฉื” ืžืขื˜ ืขืœ ื”ื ื™ืชื•ื—.
    ืžืฆื‘ ืชืื™ืžื•ืช Flex ืžืฉืžืฉ ืœืขืชื™ื ืจื—ื•ืงื•ืช ื‘ืงื•ื“ ื—ื“ืฉ,
    ืื‘ืœ re2c ืžืžืฉื™ื›ื” ืœืชืžื•ืš ื‘ื• ืœืชืื™ืžื•ืช ืœืื—ื•ืจ.

  • ืื•ืคืจื˜ื•ืจ ื—ื™ืกื•ืจ ืžื—ืœืงืช ื”ืชื•ื•ื™ื / ื—ืœ ื›ืขืช
    ืœืคื ื™ ื”ืจื—ื‘ืช ื”ืงื™ื“ื•ื“, ืžื” ืฉืžืืคืฉืจ ืœื”ืฉืชืžืฉ ื‘ื• ื‘ืžืกืคืจ ื’ื“ื•ืœ ื™ื•ืชืจ ืฉืœ ืžืงืจื™ื,
    ืื ื ืขืฉื” ืฉื™ืžื•ืฉ ื‘ืงื™ื“ื•ื“ ืื•ืจืš ืชื• ืžืฉืชื ื” (ืœื“ื•ื’ืžื” UTF8).

  • ืงื•ื‘ืฅ ื”ืคืœื˜ ื ื•ืฆืจ ื›ืขืช ื‘ืฆื•ืจื” ืื˜ื•ืžื™ืช: re2c ื™ื•ืฆืจ ืชื—ื™ืœื” ืงื•ื‘ืฅ ื–ืžื ื™
    ื•ื›ื•ืชื‘ ืœืชื•ื›ื• ืืช ื”ืชื•ืฆืื”, ื•ืื– ืžืฉื ื” ืืช ืฉื ื”ืงื•ื‘ืฅ ื”ื–ืžื ื™ ืœืคืœื˜
    ืคืขื•ืœื” ืื—ืช.

  • ื”ืชื™ืขื•ื“ ื”ื•ืฉืœื ื•ื ื›ืชื‘ ืžื—ื“ืฉ; ื‘ืžื™ื•ื—ื“ ื ื•ืกืคื• ื—ื“ืฉื™ื
    ืคืจืงื™ื ืœื’ื‘ื™ ืžื™ืœื•ื™ ื”ืžืื’ืจ
    ะธ ืขืœ ื“ืจื›ื™ื ืœื‘ื“ื•ืง ืืช ืกื•ืฃ ื ืชื•ื ื™ ื”ืงืœื˜.
    ื”ืชื™ืขื•ื“ ื”ื—ื“ืฉ ื ืืกืฃ ื‘ื˜ื•ืคืก
    ืžื“ืจื™ืš ืžืงื™ืฃ ื‘ืŸ ืขืžื•ื“ ืื—ื“
    ืขื ื“ื•ื’ืžืื•ืช (ืื•ืชื ืžืงื•ืจื•ืช ืžื•ืฆื’ื™ื ื‘-manpage ื•ื‘ืชื™ืขื•ื“ ื”ืžืงื•ื•ืŸ).
    ื ืขืฉื• ื ื™ืกื™ื•ื ื•ืช ื’ืจื•ืขื™ื ืœืฉืคืจ ืืช ืงืจื™ืื•ืช ื”ืืชืจ ื‘ื˜ืœืคื•ื ื™ื.

  • ืžื ืงื•ื“ืช ื”ืžื‘ื˜ ืฉืœ ื”ืžืคืชื—ื™ื, re2c ืจื›ืฉื” ืชืช-ืžืขืจื›ืช ืฉืœืžื” ื™ื•ืชืจ
    ืื™ืชื•ืจ ื‘ืื’ื™ื ืงื•ื“ ืื™ืชื•ืจ ื‘ืื’ื™ื ืžื•ืฉื‘ืช ื›ืขืช ื‘-builds ืžื”ื“ื•ืจื” ื•
    ื ื™ืชืŸ ืœื”ืคืขื™ืœ ื‘ืืžืฆืขื•ืช ืืคืฉืจื•ืช ื”ืชืฆื•ืจื” --enable-debug.

ื”ืฉื—ืจื•ืจ ื”ื–ื” ืœืงื— ื”ืจื‘ื” ื–ืžืŸ - ื›ืžืขื˜ ืฉื ื” ืฉืœืžื”.
ืจื•ื‘ ื”ื–ืžืŸ, ื›ืžื• ืชืžื™ื“, ื”ื•ืฉืงืข ื‘ืคื™ืชื•ื— ืžืกื’ืจืช ืชื™ืื•ืจื˜ื™ืช ื•ื‘ื›ืชื™ื‘ื”
ืžืืžืจื™ื "ื—ื™ืœื•ืฅ POSIX Submatch ื™ืขื™ืœ ื‘-NFA".
ื”ืืœื’ื•ืจื™ืชืžื™ื ื”ืžืชื•ืืจื™ื ื‘ืžืืžืจ ืžื™ื•ืฉืžื™ื ื‘ืกืคืจื™ื™ืช ื”ื ื™ืกื•ื™ libre2c
(ื‘ื ื™ื™ืช ื”ืกืคืจื™ื™ื” ื•ื”ืืžื•ืช ืžื™ื“ื” ืžื•ืฉื‘ืชืช ื›ื‘ืจื™ืจืช ืžื—ื“ืœ ื•ืžื•ืคืขืœืช ืขืœ ื™ื“ื™ ืืคืฉืจื•ืช ื”ืชืฆื•ืจื”
--enable-libs). ื”ืกืคืจื™ื™ื” ืื™ื ื” ื ืชืคืกืช ื›ืžืชื—ืจื” ืœืงื™ื™ื
ืคืจื•ื™ืงื˜ื™ื ื›ืžื• RE2, ืืœื ื›ืคืœื˜ืคื•ืจืžืช ืžื—ืงืจ ืœืคื™ืชื•ื— ื—ื“ืฉ
ืืœื’ื•ืจื™ืชืžื™ื (ืฉืืคืฉืจ ืœื”ืฉืชืžืฉ ื‘ื”ื ื‘-re2c ืื• ื‘ืคืจื•ื™ืงื˜ื™ื ืื—ืจื™ื).
ื–ื” ื ื•ื— ื’ื ืžื ืงื•ื“ืช ืžื‘ื˜ ืฉืœ ื‘ื“ื™ืงื•ืช, ืืžื•ืช ืžื™ื“ื” ื•ื™ืฆื™ืจืช ื›ืจื™ื›ื•ืช ืœืฉืคื•ืช ืื—ืจื•ืช.

ืชื•ื“ื” ืžืžืคืชื—ื™ re2c ืœื›ืœ ืžื™ ืฉืขื–ืจ ืœื’ืจืกื” ื”ื–ื• ืœืงืจื•ืช,
ื•ืœืงื”ื™ืœื” ื‘ื›ืœืœ ืœืจืขื™ื•ื ื•ืช, ื“ื™ื•ื•ื—ื™ ื‘ืื’ื™ื, ืชื™ืงื•ื ื™ื, ืžื•ืจืœ ื•ื›ื•'. ;]

ืžืงื•ืจ: linux.org.ru

ื”ื•ืกืคืช ืชื’ื•ื‘ื”