ืฉื—ืจื•ืจ ืฉืœ re2c lexer generator 1.2

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

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

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

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

  • ื ื•ืกืคื” ืืช ื”ื™ื›ื•ืœืช ืœื›ืœื•ืœ ืงื‘ืฆื™ื ื—ื™ืฆื•ื ื™ื™ื ื‘ืืžืฆืขื•ืช ื”ื•ืจืื”
    "/*!include:re2c "file.re" */", ื›ืืฉืจ "file.re" ื”ื•ื ืฉื ื”ืงื•ื‘ืฅ ืฉื™ืฉ ืœื›ืœื•ืœ. 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-encoding {ascii | utf8}",
    ืžื” ืฉืžืืคืฉืจ ืœืš ืœืฉื ื•ืช ืืช ื”ื”ืชื ื”ื’ื•ืช ื•ืœื ืชื— "โˆ€x โˆƒy" ื›
    "2200 78 20 2203 79."

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

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

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

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

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

  • ื”ืชื™ืขื•ื“ ื”ื•ืฉืœื ื•ื ื›ืชื‘ ืžื—ื“ืฉ; ื‘ืžื™ื•ื—ื“ ื ื•ืกืคื• ื—ื“ืฉื™ื
    ืคืจืงื™ื ืขืœ http://re2c.org/manual/manual.html#buffer-refilling ะทะฐะฟะพะปะฝะตะฝะธะต ะฑัƒั„ะตั€ะฐ
    ะธ ืขืœ ื“ืจื›ื™ื ืœื‘ื“ื•ืง ืืช ืกื•ืฃ ื ืชื•ื ื™ ื”ืงืœื˜.
    ื”ืชื™ืขื•ื“ ื”ื—ื“ืฉ ื ืืกืฃ ื‘ื˜ื•ืคืก
    ืžื“ืจื™ืš ืžืงื™ืฃ ื‘ืŸ ืขืžื•ื“ ืื—ื“
    ืขื ื“ื•ื’ืžืื•ืช (ืื•ืชื ืžืงื•ืจื•ืช ืžื•ืฆื’ื™ื ื‘-manpage ื•ื‘ืชื™ืขื•ื“ ื”ืžืงื•ื•ืŸ).
    ื ืขืฉื• ื ื™ืกื™ื•ื ื•ืช ื’ืจื•ืขื™ื ืœืฉืคืจ ืืช ืงืจื™ืื•ืช ื”ืืชืจ ื‘ื˜ืœืคื•ื ื™ื.

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

ืžืงื•ืจ: OpenNet.ru

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