Tso tawm ntawm re2c lexer generator 2.0

coj qhov chaw tso tawm ib 2c 2.0, dawb lexical analyzer generator rau C thiab C ++ hom lus. Qhov project re2c yog thawj zaug tsim nyob rau hauv 1993 los ntawm Peter Bamboulis raws li 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 qho 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 loj:

  • Ntxiv kev txhawb nqa rau Go lus (ua haujlwm los ntawm "--lang go" kev xaiv rau re2c, lossis raws li ib qho kev sib cais re2go). Cov ntaub ntawv rau C thiab Go yog tsim los ntawm tib cov ntawv nyeem, tab sis nrog cov qauv sib txawv. Txoj cai tsim subsystem hauv re2c tau raug kho dua tshiab, uas yuav tsum ua kom yooj yim los txhawb cov lus tshiab yav tom ntej.
  • Ntxiv lwm qhov kev tsim kho rau CMake (ua tsaug ligfx!). Kev sim txhais lus re2c rau CMake tau ua rau lub sijhawm ntev, tab sis txog thaum ligfx tsis muaj leej twg tau thov kev daws teeb meem tag nrho. Cov qub Autotools tsim cov txheej txheem txuas ntxiv txhawb nqa thiab siv, thiab tsis muaj kev npaj yuav tso tseg rau yav tom ntej (ib feem kom tsis txhob tsim teeb meem rau cov neeg tsim khoom faib tawm, ib feem vim tias cov txheej txheem qub tsim tau ruaj khov thiab ntau dua li qhov tshiab. ). Ob lub tshuab tau sim txuas ntxiv siv Travis CI.
  • Ntxiv qhov muaj peev xwm los qhia meej tus lej interface hauv kev teeb tsa thaum siv API generic. Yav dhau los, feem ntau APIs yuav tsum tau teev nyob rau hauv daim ntawv ntawm kev ua haujlwm lossis kev ua haujlwm macros. Tam sim no lawv tuaj yeem raug teev nyob rau hauv daim ntawv ntawm cov hlua tsis ncaj ncees nrog lub npe qauv ntawm daim ntawv "@@{name}" lossis tsuas yog "@@" (yog tias tsuas muaj ib qho parameter thiab tsis muaj qhov tsis meej). API style yog teeb tsa los ntawm re2c:api: style configuration (tus nqi zog qhia txog kev ua haujlwm zoo, thiab daim ntawv pub dawb qhia txog qhov tsis txaus ntseeg).
  • Kev ua haujlwm ntawm "-c", "-start-conditions" kev xaiv tau raug txhim kho, tso cai rau koj los ua ke ob peb qhov sib cuam tshuam lexers hauv ib qho re2c block. Tam sim no koj tuaj yeem siv cov blocks tsis tu ncua nrog rau cov xwm txheej thiab txhais tau ntau yam tsis cuam tshuam nrog cov thaiv hauv ib cov ntaub ntawv. Txhim kho kev ua haujlwm ntawm "-r", "-- rov siv dua" kev xaiv (rov siv cov lej los ntawm ib qho thaiv hauv lwm cov blocks) ua ke nrog "-c", "--start-conditions" thiab "-f", "-- storable-state" cov kev xaiv (lub xeev lexer uas tuaj yeem cuam tshuam ntawm txhua qhov chaw thiab txuas ntxiv ua tiav tom qab).
  • Kho kab laum nyob rau hauv qhov tsis ntev los no tau ntxiv qhov kawg ntawm cov tswv yim (EOF txoj cai) algorithm, uas tsis tshua muaj tshwm sim ua rau kev ua tsis raug ntawm kev sib tshooj.
  • Cov txheej txheem bootstrap tau yooj yim. Yav dhau los, lub kaw lus tsim sim dynamically nrhiav ib qho uas twb tau ua re2c uas tuaj yeem siv los tsim kho nws tus kheej. Qhov no ua rau muaj kev cuam tshuam tsis raug (vim tias daim duab kev vam khom tsis zoo, uas feem ntau tsim cov tshuab tsis nyiam). Tam sim no, txhawm rau txhim kho lexers, koj yuav tsum tau teeb tsa qhov kev tsim kom meej thiab teeb tsa RE2C_FOR_BUILD sib txawv.

Tau qhov twg los: opennet.ru

Ntxiv ib saib