Hnub Friday, Lub Yim Hli 2, kev tso tawm ntawm re2c, lub tshuab hluav taws xob pub dawb ntawm lexical analyzers rau cov lus C thiab C ++, tau tso tawm. Re2c tau sau nyob rau hauv 1993 los ntawm Peter Bambiulis ua ib tug sim generator ntawm ceev heev lexical analyzers, txawv los ntawm lwm yam generators los ntawm kev ceev ntawm cov generated code thiab ib tug txawv txawv saj zawg zog neeg siv interface uas tso cai rau cov analyzers tau yooj yim thiab zoo embedded rau hauv ib tug uas twb muaj lawm code puag. Txij thaum ntawd los, qhov project tau tsim los ntawm cov zej zog thiab txuas ntxiv mus ua lub platform rau kev sim thiab kev tshawb fawb hauv thaj tsam ntawm cov qauv sau ntawv thiab cov tshuab txiav txim siab lub xeev.

Cov kev hloov tshiab tseem ceeb hauv version 1.2:

  • Ntxiv ib txoj hauv kev tshiab (simplified) los xyuas qhov kawg ntawm cov ntaub ntawv nkag
    (English β€œEOF rule”).
    Rau qhov no, re2c:eof configuration tau ntxiv,
    tso cai rau koj xaiv tus cim davhlau ya nyob twg,
    thiab ib txoj cai $ tshwj xeeb uas tua hluav taws yog tus lexer
    ntse mus txog qhov kawg ntawm cov ntaub ntawv nkag.
    Keeb kwm, re2c muab kev xaiv ntawm ntau txoj hauv kev pov thawj rau
    kawg ntawm inputs sib txawv nyob rau hauv kev txwv, efficiency thiab simplicity
    daim ntawv thov. Txoj kev tshiab yog tsim los ua kom yooj yim sau code, thaum
    thaum tseem siv tau thiab siv dav. Txoj kev qub
    tseem ua haujlwm thiab tej zaum yuav nyiam nyob rau qee kis.

  • Ntxiv lub peev xwm los suav nrog cov ntaub ntawv sab nraud siv cov lus qhia
    /*!include:re2c "file.re" */ qhov twg file.re
    qhov no yog lub npe ntawm cov ntaub ntawv suav nrog. Re2c nrhiav cov ntaub ntawv hauv suav nrog cov ntaub ntawv teev npe,
    raws li nyob rau hauv daim ntawv teev cov paths teev siv qhov kev xaiv -I.
    Cov ntaub ntawv suav nrog yuav suav nrog lwm cov ntaub ntawv.
    Re2c muab cov ntaub ntawv "tus qauv" hauv cov suav nrog / phau ntawv
    qhov project - nws cia siab tias cov ntsiab lus tseem ceeb yuav khaws cia rau ntawd
    cov lus qhia tsis tu ncua, qee yam zoo li lub tsev qiv ntawv txheem.
    Txog tam sim no, ntawm qhov kev thov ntawm cov neeg ua haujlwm, ib cov ntaub ntawv nrog cov ntsiab lus ntawm Unicode pawg tau ntxiv.

  • Ntxiv lub peev xwm los tsim cov ntaub ntawv header nrog arbitrary
    cov ntsiab lus siv -t --type-header xaiv (los yog tsim nyog
    configurations) thiab cov lus qhia tshiab /*!header:re2c:on*/ thiab
    /*!header:re2c:off*/. Qhov no tej zaum yuav pab tau nyob rau hauv rooj plaub uas
    thaum re2c xav tau los tsim cov ntsiab lus ntawm qhov sib txawv, cov qauv thiab macros,
    siv nyob rau hauv lwm chav txhais lus.

  • Re2c tam sim no nkag siab UTF8 cov ntawv nyeem thiab cov chav kawm ua cim hauv cov kab lus tsis tu ncua.
    Los ntawm lub neej ntawd, re2c parses kab lus xws li "βˆ€x βˆƒy" li.
    1-ntsis ASCII cov cim e2 88 80 78 20 e2 88 83 79
    (hex codes), thiab cov neeg siv yuav tsum khiav tawm cov cim Unicode manually:
    "u2200x u2203y". Qhov no yog qhov tsis yooj yim heev thiab xav tsis thoob rau ntau tus
    cov neeg siv (raws li pov thawj los ntawm cov kab mob tas li). Yog li tam sim no
    re2c muab kev xaiv --input-encoding ,
    uas tso cai rau koj hloov tus cwj pwm thiab parse "βˆ€x βˆƒy" li
    2200 78 20 2203 79.

  • Re2c tam sim no tso cai rau siv cov re2c blocks tsis tu ncua hauv -r --reuse hom.
    Qhov no yooj yim yog tias cov ntaub ntawv tawm tswv yim muaj ntau cov blocks thiab tsuas yog qee qhov ntawm lawv
    xav tau rov siv dua.

  • Tam sim no koj tuaj yeem teeb tsa hom ntawv ceeb toom thiab cov lus yuam kev
    siv qhov tshiab --location-format xaiv . GNU hom ntawv tso tawm kom pom
    li filename:line:column:, thiab MSVC format as filename(kab,kum).
    Cov yam ntxwv no yuav muaj txiaj ntsig zoo rau IDE cov neeg nyiam.
    Ib qho kev xaiv --verbose kuj tau ntxiv, uas luam tawm cov lus luv luv yog tias ua tiav.

  • Hom "compatibility" nrog flex tau raug txhim kho - qee qhov kev txheeb xyuas tsis raug tau kho thiab
    incorrect operator precedence nyob rau hauv tsawg zaus.
    Keeb kwm, qhov -F --flex-txhawb kev xaiv tso cai rau koj sau code
    tov nyob rau hauv flex style thiab re2c style, uas ua rau parsing me ntsis nyuaj.
    Flex compatibility hom tsis tshua siv nyob rau hauv cov cai tshiab,
    tab sis re2c tseem txhawb nqa nws kom rov qab sib raug zoo.

  • Cov cim chav kawm rho tawm tus neeg teb xov tooj / tam sim no siv
    ua ntej nthuav cov encoding, uas tso cai rau nws mus siv nyob rau hauv ntau tus neeg mob,
    yog siv tus cim qhov ntev ntawm qhov sib txawv encoding (piv txwv li UTF8).

  • Cov ntaub ntawv tso tawm tam sim no tsim atomically: re2c tsim cov ntaub ntawv ib ntus ua ntej
    thiab sau cov txiaj ntsig rau hauv nws, thiab tom qab ntawd hloov npe cov ntaub ntawv ib ntus rau cov zis
    ib txoj haujlwm.

  • Cov ntaub ntawv tau ua tiav thiab rov sau dua; tshwj xeeb, cov tshiab tau ntxiv
    tshooj hais txog filling qhov tsis
    ΠΈ hais txog txoj hauv kev los xyuas qhov kawg ntawm cov ntaub ntawv nkag.
    Cov ntaub ntawv tshiab yog sau rau hauv daim ntawv
    phau ntawv qhia ib nplooj ntawv
    nrog cov piv txwv (cov ntaub ntawv tib yam tau muab tso rau hauv manpage thiab hauv cov ntaub ntawv online).
    Kev sim tsis zoo tau ua los txhim kho kev nyeem ntawv ntawm lub xaib hauv xov tooj.

  • Los ntawm cov neeg tsim tawm txoj kev xav, re2c tau txais ib qho kev ua tiav ntau dua
    debugging Debugging code yog tam sim no xiam oob qhab hauv kev tsim tawm thiab
    tuaj yeem qhib tau siv qhov kev xaiv configure --enable-debug.

Qhov kev tso tawm no tau siv sijhawm ntev - yuav luag ib xyoos.
Feem ntau ntawm lub sijhawm, raws li ib txwm muaj, tau siv los tsim cov txheej txheem theoretical thiab sau ntawv
lus "Nyob zoo POSIX Submatch Extraction ntawm NFA".
Cov algorithms tau piav nyob rau hauv tsab xov xwm yog siv nyob rau hauv lub tsev qiv ntawv sim libre2c
(tsim lub tsev qiv ntawv thiab cov qauv ntsuas tau raug cuam tshuam los ntawm lub neej ntawd thiab tau qhib los ntawm kev xaiv teeb tsa
--enable-libs). Lub tsev qiv ntawv tsis yog xav ua tus neeg sib tw rau cov uas twb muaj lawm
tej yaam num zoo li RE2, tab sis raws li kev tshawb fawb platform rau kev tsim kho tshiab
algorithms (uas tuaj yeem siv tau hauv re2c lossis lwm yam haujlwm).
Nws kuj yog qhov yooj yim los ntawm qhov pom ntawm kev sim, ntsuas ntsuas thiab tsim kev khi rau lwm yam lus.

Ua tsaug los ntawm re2c developers rau txhua tus neeg uas tau pab qhov kev tso tawm no,
thiab rau cov zej zog feem ntau rau cov tswv yim, kab ntawv qhia, thaj ua rau thaj, kev coj ncaj ncees, thiab lwm yam. ;]

Tau qhov twg los: linux.org.ru ua

Ntxiv ib saib