áá¯ááºáá±ááŸá¯á¡ááœáẠááŒááºáááºááŸá¯ááŸá¬ áá
áºááŸá
áºáááºáá¯á¶ážáá®ážáá«áž á¡áá»áááºáá°áá²á·ááááºá á¡áá»áááºá¡áá»á¬ážá
á¯ááᯠáá®á¡áá¯áá®áá±á¬ááºáá
áºáᯠáá±ážááœá²ááŒááºážááŸáá·áº á
á¬áá±ážááŒááºážá¡ááœáẠá¡áá»áááºá¡áá»á¬ážá
á¯ááᯠáá¯á¶ážá
áœá²áá²á·áááºá
áá±á¬ááºážáá«ážáá»á¬áž
áá±á¬ááºážáá«ážááœááºáá±á¬áºááŒáá¬ážááá·áº á¡ááºáááá¯áá®áááºáá»á¬ážááᯠá
ááºážáááºá
á¬ááŒáá·áºááá¯áẠlibre2c ááœáẠá¡áá±á¬ááºá¡áááºáá±á¬áºáá¬ážáááºá
(á
á¬ááŒáá·áºááá¯ááºáááºáá±á¬ááºááŒááºážááŸáá·áº á
áœááºážáá±á¬ááºáááºá
ááºážáááºááŸá¯áá»á¬ážááᯠáá¯á¶ááŸááºá¡á¬ážááŒáá·áº ááááºáá¬ážááŒá®áž configure option ââenable-libsâ ááŒáá·áº ááœáá·áºáá¬ážáááº)á á
á¬ááŒáá·áºááá¯ááºááẠRE2 áá²á·ááá¯á·áá±á¬ áááºááŸáááá±á¬áá»ááºáá»á¬ážááŸáá·áº ááŒáá¯ááºáááºá¡ááŒá
Ạááááºááœááºáá±á¬áºáááºáž á¡áá
áºáá»á¬áž ááœá¶á·ááŒáá¯ážááá¯ážáááºááŸá¯á¡ááœáẠáá¯áá±ááááááºáá±á¬ááºážáá
áºáá¯á¡áá±ááŒáá·áºá
algorithms (ááá¯á·áá±á¬áẠre2c ááá¯á·ááá¯áẠá¡ááŒá¬ážááá±á¬áá»ááºáá»á¬ážááœáẠáá¯á¶ážááá¯ááºáááº)á á
ááºážáááºááŒááºážá á
áœááºážáá±á¬ááºááẠááá¯ááºážáá¬ááŒááºážááŸáá·áº á¡ááŒá¬ážáá¬áá¬á
áá¬ážáá»á¬ážááá¯á· áá»áááºáááºááŸá¯áá»á¬áž áááºáá®ážááŒááºážááá¯á·ááŸáááºáž á¡áááºááŒá±áá«áááºá
re2c 1.2 áá¬ážááŸááºážááœáẠá¡ááá áááºážáá áºáá®ááœááºááŸá¯áá»á¬áž-
- ááá·áºááœááºážáá±áá¬áá¡áá¯á¶ážá
á
áºáá±ážááŒááºážá¡ááœáẠááá¯ážááŸááºážáá±á¬áááºážáááºážá¡áá
Ạ("EOF á
ááºážáá»ááºáž") ááᯠááá·áºááœááºážáá²á·áááºá áááºážá¡ááœááºá âre2c:eofâ ááœá²á·á
ááºážááŸá¯áá¯á¶á
á¶ááᯠááá·áºááœááºážáá¬ážáááºá
terminal character ááᯠááœá±ážáá»ááºááá¯ááºá á±ááŒááºážá
ááŸáá·áº lexer ááá¯áá»áŸáẠá¡á áá»áá¯ážááá·áº á¡áá°ážá ááºážáá»ááºáž "$" ááŒá áºáááºá
ááá·áºááœááºážáá±áá¬áá¡áá¯á¶ážááá¯á· á¡á±á¬ááºááŒááºá áœá¬áá±á¬ááºááŸááá²á·áááºá
áááá¯ááºážááŒá±á¬ááºážá¡áá re2c á¡ááœáẠá¡áááºááŒá¯ááŒááºážáááºážáááºážáá»á¬ážá áœá¬ááᯠááœá±ážáá»ááºáá±ážáá«áááºá
ááá·áºáááºáá»ááºáá»á¬ážá áááá±á¬ááºááŸá¯ááŸáá·áº ááá¯ážááŸááºážááŸá¯ááá¯á·ááœáẠááœááºážá¡á¬ážá á¯áá»á¬ážáá¡áá¯á¶áž
áá»áŸá±á¬ááºááœáŸá¬áá»á¬ážá áááºážáááºážá¡áá áºááẠáá¯ááºáá±ážáá±á ááºááœáẠááá¯ážááŸááºážá á±ááẠáá®ááá¯ááºážáá¯ááºáá¬ážáááºá
áá»ááºááŸááá±áá»áááºááŸá¬áá±á¬á· áááá±á¬ááºááŒá®áž áá»ááºáá»ááºááŒáá·áºááŒáá·áº á¡áá¯á¶ážááŒá¯ááá¯ááºáá«áááºá áááºážáááºážáá±á¬ááºážáá»á¬áž
á¡áá¯ááºáá¯ááºáá²ááŒá áºááŒá®áž á¡áá»áá¯á·ááá á¹á áá»á¬ážááœáẠáŠážá á¬ážáá±ážááŒá áºááá¯ááºáááºá - ááœáŸááºááŒá¬ážáá»ááºááᯠá¡áá¯á¶ážááŒá¯á ááŒááºáááá¯ááºáá»á¬ážááᯠááá·áºááœááºážááá¯ááºááá·áº á
áœááºážáááºááᯠááá·áºááœááºážáá¬ážáááºá
"/*!include:re2c "file.re" */" áá±áá¬ááœáẠ"file.re" ááẠááá·áºááœááºážáááá·áºááá¯ááºáá¡áááºááŒá áºáááºá Re2c ááẠfile directory á¡áá«á¡ááẠááá¯ááºáá»á¬ážááᯠááŸá¬ááœá±áááºá
ááá¯á·á¡ááŒáẠâ-Iâ ááœá±ážáá»ááºááŸá¯ááᯠá¡áá¯á¶ážááŒá¯á áááºááŸááºáá¬ážááá·áº áááºážááŒá±á¬ááºážáá»á¬ážá á¬áááºážááœáẠáá«áááºáááºá
áá«áááºáá±á¬ááá¯ááºáá»á¬ážááẠá¡ááŒá¬ážááá¯ááºáá»á¬áž áá«áááºááá¯ááºáááºá
Re2c ááẠ"include/" directory ááœáẠ"á á¶" ááá¯ááºáá»á¬ážááᯠáá¶á·ááá¯ážáá±ážáááºá
ááá±á¬áá»áẠ- á¡áá¯á¶ážáááºáá±á¬ á¡áááá¹áá«ááºááœáá·áºááá¯áá»ááºáá»á¬áž ááá¯áá±áá¬ááœáẠá á¯ááŒá¯á¶áá¬áááá·áºáááºáᯠáá»áŸá±á¬áºááá·áºáá«áááºá
áá¯á¶ááŸááºá¡áá¯á¶ážá¡ááŸá¯ááºážáá»á¬ážá á á¶á á¬ááŒáá·áºááá¯ááºáá²á·ááá¯á· á¡áá¬áá áºáá¯á
ááá¯á¡áá»áááºá¡áá á¡áá¯ááºááá¬ážáá»á¬ážá áá±á¬ááºážááá¯áá»ááºá¡á áá°áá®áá¯áẠá¡áá»áá¯ážá¡á á¬ážáá»á¬ážá á¡áááá¹áá«ááºááœáá·áºááá¯áá»ááºáá«áá±á¬ ááá¯ááºáá áºááá¯ááºááᯠááá·áºááœááºážáá¬ážáá«áááºá - áá±á«ááºážá
á®ážááá¯ááºáá»á¬ážááᯠá¡áá»á¬ážáá°ááŸá¬ áá¯ááºáá±ážááá¯ááºá
áœááºážááᯠááá·áºááœááºážáá¬ážáááºá
"-t --type-header" ááœá±ážáá»ááºá áá¬áá»á¬áž (ááá¯á·ááá¯ááºááá·áºáá»á±á¬áºáááºá
configurations) ááŸáá·áº áááºážááœáŸááºáá»ááºá¡áá Ạ"/*!header:re2c:on*/" ááŸáá·áº
"/*!header:re2c:off*/"á áááºážááẠáááºááá·áºááá á¹á áá»á¬ážááœáẠá¡áá¯á¶ážáááºááá¯ááºáááºáááºážá
re2c ááẠvariablesá structures ááŸáá·áº macro ááá¯á·á á¡áááá¹áá«ááºááœáá·áºááá¯áá»ááºáá»á¬ážááᯠáááºáá®ážáááºááá¯á¡ááºáá±á¬á¡áá«á
á¡ááŒá¬ážáá¬áá¬ááŒááºáá°áá áºáá»á¬ážááœáẠá¡áá¯á¶ážááŒá¯áááºá - ááᯠRe2c ááẠáá¯á¶ááŸááºá¡áá¯á¶ážá¡ááŸá¯ááºážáá»á¬ážááœáẠUTF8 á
á¬áá¯á¶ážáá»á¬ážááŸáá·áº áá¬ááºáá±á¬ááºá¡áááºážáá»á¬ážááᯠáá¬ážáááºáááºá
áá°áááºážá¡á¬ážááŒáá·áºá re2c ááẠ"âx ây" áá²á·ááá¯á· á áá¬ážáááºáá»á¬ážááᯠááœá²ááŒááºážá áááºááŒá¬áááºá
1-bit ASCII á¡áá¹ááá¬áá»á¬ážá á¡á á®á á¥áº âe2 88 80 78 20 e2 88 83 79â
( hex áá¯ááºáá»á¬áž ) ááŸáá·áº á¡áá¯á¶ážááŒá¯áá°áá»á¬ážááẠáá°áá®áá¯áẠá¡áá¹ááá¬áá»á¬ážááᯠááá¯ááºááá¯áẠááœááºááŒá±á¬ááºááẠááá¯á¡ááºááẠá
â\\u2200x \\u2203yâ áá«á áá±á¬áºáá±á¬áºááᯠá¡áááºáááŒá±áááᯠáá°áá±á¬áºáá±á¬áºáá»á¬ážáá»á¬ážá¡ááœáẠááá»áŸá±á¬áºááá·áºáá¬ážáá«áá°ážá
á¡áá¯á¶ážááŒá¯áá°áá»á¬áž (á¡áááºáááŒáẠbug á¡á á®áááºáá¶áá»ááºáá»á¬ážá០áááºáá±ááŒáá¬ážááá·áºá¡ááá¯ááºáž)á áá«ááᯠá¡áá¯
re2c ááẠááœá±ážáá»ááºá áᬠ"--input-encoding {ascii | utf8}",
áááºážááẠááá·áºá¡á¬áž á¡ááŒá¯á¡áá°ááᯠááŒá±á¬ááºážáá²á á±ááŒá®áž ââx âyâ á¡ááŒá Ạááœá²ááŒááºážá áááºááŒá¬ááá¯ááºá á±áá«áááºá
âáááá áá áá áááá ááá - ááᯠRe2c ááẠáá¯á¶ááŸáẠre2c blocks áá»á¬ážááᯠ"-r --reuse" áá¯ááºááœáẠá¡áá¯á¶ážááŒá¯ááœáá·áºáá±ážáá¬ážáá«áááºá
ááá·áºááœááºážááá·áºááá¯ááºááœáẠááá±á¬ááºáá»á¬ážá áœá¬áá«áááºááŒá®áž áááºážááá¯á·áá²ááŸá¡áá»áá¯á·áᬠááŸááá«á áááºážááẠá¡áááºááŒá±áááºá
ááŒááºáááºá¡áá¯á¶ážááŒá¯áááºááá¯á¡ááºáááºá - ááᯠáááºááẠááááá±ážáá»ááºáá»á¬ážááŸáá·áº á¡ááŸá¬ážáááºáá±á·áá»áºáá»á¬ážá áá±á¬áºáááºááᯠáááºááŸááºááá¯ááºáá«ááŒá®á
ááœá±ážáá»ááºááŸá¯á¡áá Ạ"--location-format {gnu | msvc}" GNU áá±á¬áºáááºááᯠááŒááá¬ážáááºá
"filename:line:column:" á¡ááŒá áºááŸáá·áº "filename(lineácolumn)" á¡ááŒá ẠMSVC áá±á¬áºáááºá
á€á¡ááºá¹áá«áááºááẠIDE ááŸá áºáááºáá°áá»á¬ážá¡ááœáẠá¡áá¯á¶ážáááºááá¯ááºáá«áááºá
á¡á±á¬ááºááŒááºáá«á á¡á±á¬ááºááœá²áá¶á á¬ááá¯ááᯠááŒáááá·áº "--verbose" ááœá±ážáá»ááºááœáá·áºááá¯áááºáž ááá·áºááœááºážáá¬ážáááºá - flex ááŸáá·áº "ááá¯ááºáááºáá®ááŸá¯" áá¯ááºááᯠááá¯ááá¯áá±á¬ááºážááœááºá¡á±á¬áẠááŒá¯áá¯ááºáá¬ážááẠ- á¡áá»áá¯á·áá±á¬ ááœá²ááŒááºážá
áááºááŒá¬ááŸá¯á¡ááŸá¬ážáá»á¬ážááᯠááŒááºáááºááŒá®áž
ááŸá¬ážááŸá¬ážáá«ážáá«áž ááá á¹á áá»á¬ážááœáẠááŸá¬ážááœááºážáá±á¬ á¡á±á¬áºááá±áᬠáŠážá á¬ážáá±ážá
áááá¯ááºážá¡áá "-F --flex-suppor" option ááẠááá·áºá¡á¬áž áá¯ááºáá±ážááẠááœáá·áºááŒá¯áá¬ážáááºá
ááœá²ááŒááºážá áááºááŒá¬ááẠá¡áááºážáááºáááºáá²á á±áááºá
Flex compatibility mode ááᯠáá¯ááºá¡áá áºááœáẠá¡áá¯á¶ážááŒá¯áá²áááºá
ááá¯á·áá±á¬áº re2c ááẠáá±á¬ááºááŒááºááá¯ááºáááºááŸá¯ááŸáá á±ááẠáááºáááºáá¶á·ááá¯ážáá±ážáá«áááºá - á¡áá¹ááᬠá¡áááºážá¡á
á¬áž á¡áá¯ááºá¡á±á¬áºááá±áᬠ"/" ááẠááᯠá¡áá»á¯á¶ážáááºáá«áááºá
áá¯ááºáá¶áá«ááºááᯠáá»á²á·ááœááºááŒááºážáááŒá¯áá®á áááºážááᯠá¡áá±á¡ááœáẠááá¯áá»á¬ážáá±á¬ ááá á¹á áá»á¬ážááœáẠá¡áá¯á¶ážááŒá¯ááẠááœáá·áºááŒá¯áá±ážáá±á¬á
ááŒá±á¬ááºážáá²ááá¯ááºáá±á¬ á¡áá¹ááá¬á¡ááŸááºááᯠáá¯ááºáá¶áá«ááºááᯠá¡áá¯á¶ážááŒá¯áá«á (á¥ááᬠUTF8)á - á¡ááœááºááá¯ááºááᯠááᯠá¡ááºáááºáááºážááŒáá·áº áááºáá®ážáá¬ážáááº- re2c ááẠáá¬áá®ááá¯ááºááᯠáŠážá
áœá¬ áááºáá®ážáááºá
ááááºááᯠáááºážááœááºáá±ážááŒá®áž áá¬áá®ááá¯ááºááᯠoutput ááá¯á· á¡áááºááŒá±á¬ááºážáá«á
á á áºáááºáá±ážáá áºáá¯á - á
á¬ááœááºá
á¬áááºážá¡á¬áž ááŒá®ážááŒá±á¬ááºááŒá®áž ááŒááºáááºáá±ážáá¬ážááŒááºážá á¡áá°ážáááŒáá·áº á¡áá
áºááœá± áááºááá·áºáááºá
á¡áááºážáá»á¬ážá¡ááŒá±á¬ááºážhttp://re2c.org/manual/manual.html#buffer-refilling запПлМеМОе бÑÑеÑа
Оinput data áá¡áá¯á¶ážááá¯á á áºáá±ážáááºáááºážáááºážáá»á¬ážá¡ááŒá±á¬ááºáž .
á á¬ááœááºá á¬áááºážá¡áá áºááᯠáá¯á¶á á¶ááŒáá·áº á á¯áá±á¬ááºážáá¬ážáááºá
ááŒáá·áºá á¯á¶áá±á¬ áá áºáá»ááºááŸá¬áááºážááœáŸááº
á¥ááá¬áá»á¬ážááŒáá·áº (áá°áá®áá±á¬áááºážááŒá áºáá»á¬ážááᯠmanpage ááŸáá·áº á¡áœááºááá¯ááºážá á¬ááœááºá á¬áááºážáá»á¬ážááœáẠááŒááºááá¯áá¬ážáááº)á
áá¯ááºážáá»á¬ážááœáẠáááºááá¯ááºá áááºááŸá¯ááá¯ááºááŸá¯ááᯠááŒáŸáá·áºáááºááẠáá¶á·áá»ááºážáá±á¬ ááŒáá¯ážáááºážááŸá¯áá»á¬áž ááŒá¯áá¯ááºáá¬ážáááºá - developer áá»á¬ážáá¡ááŒááºá¡á re2c ááẠááá¯ááá¯ááŒá®ážááŒáá·áºá
á¯á¶áá±á¬ á
áá
áºááœá²áá
áºáá¯ááᯠáááŸááá²á·áááºá
á¡ááŸá¬ážááŸá¬ááŒááºážá ááá¯ááœááºááŸááá¬ážáá±á¬ áááºáá±á¬ááºááŸá¯áá»á¬ážááœáẠá¡ááŸá¬ážááŸá¬ááŒááºááŒááºážáá¯ááºááᯠááááºáá¬ážáááºá
configure option "--enable-debug" ááᯠá¡áá¯á¶ážááŒá¯á ááœáá·áºááá¯ááºáááºá
source: opennet.ru