{"id":36759,"date":"2019-10-31T22:13:39","date_gmt":"2019-10-31T19:13:39","guid":{"rendered":"https:\/\/prohoster.info\/blog\/re2c-1-2\/"},"modified":"2019-10-31T22:13:39","modified_gmt":"2019-10-31T19:13:39","slug":"re2c-1-2","status":"publish","type":"post","link":"https:\/\/prohoster.info\/no\/blog\/news\/re2c-1-2","title":{"rendered":"re2c 1.2","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Fredag 2. august ble det utgitt en versjon av re2c \u2013 en gratis generator av leksikalske analyserere for C- og C++-spr\u00e5k. Vi minner om at re2c ble skrevet i 1993 av Peter Bambulis som en eksperimentell generator for veldig raske leksikalske analyserere, kjent for hastigheten p\u00e5 den genererte koden og det uvanlig fleksible brukergrensesnittet som gj\u00f8r det enkelt og effektivt \u00e5 integrere analyserere i eksisterende kodebaser. Siden den gang har prosjektet utviklet seg i fellesskapet og fortsetter \u00e5 v\u00e6re en plattform for eksperimentering og forskning innen formelle grammatikker og endelige automater.<\/p>\n<p>Hovednyhetene i versjon 1.2:<\/p>\n<ul>\n<li>\n<p>En ny (forenklet) metode for \u00e5 sjekke for slutten av inngangsdata<br \/>\n(eng. \u00abEOF rule\u00bb).<br \/>\nFor dette er konfigurasjonen re2c:eof lagt til,<br \/>\nsom lar deg velge terminatorsymbolet,<br \/>\nog en spesialregel $, som aktiveres hvis leksikeren<br \/>\nhar n\u00e5dd slutten av inngangsdataene.<br \/>\nHistorisk sett tilbyr re2c flere metoder for \u00e5 sjekke for<br \/>\nslutten av inngangsdataene, som varierer i begrensning, effektivitet og enkelhet<br \/>\ni bruk. Den nye metoden er designet for \u00e5 forenkle kodeforfatting samtidig som<br \/>\nden er effektiv og bredt anvendbar. De gamle metodene<br \/>\nfungerer fortsatt og kan v\u00e6re foretrukket i enkelte tilfeller.<\/p>\n<\/li>\n<li>\n<p>Mulighet for \u00e5 inkludere eksterne filer med en direktiv er lagt til,<br \/>\n\/*!include:re2c &quot;file.re&quot; *\/, \u0433\u0434\u0435 file.re<br \/>\ndet er navnet p\u00e5 den inkluderte filen. Re2c ser etter filer i katalogen til den inkluderende filen,<br \/>\nsamt i listen over stier angitt med alternativet -I.<br \/>\nInkluderte filer kan inkludere andre filer.<br \/>\nRe2c leverer \u00abstandard\u00bb filer i include\/-katalogen.<br \/>\ntil prosjektet \u2013 det antas at nyttige definisjoner vil bli samlet der.<br \/>\nav regul\u00e6re uttrykk vil bli samlet der, noe i retning av en standardbibliotek.<br \/>\nS\u00e5 langt, p\u00e5 foresp\u00f8rsel fra brukerne, er \u00e9n fil med definisjoner av Unicode-kategorier lagt til.<\/p>\n<\/li>\n<li>\n<p>Mulighet for \u00e5 generere header-filer med vilk\u00e5rlig<br \/>\ninnhold ved hjelp av alternativene -t \u2014type-header (eller tilsvarende.<br \/>\nkonfigurasjoner) og de nye direktivene \/*!header:re2c:on*\/ og<br \/>\n\/*!header:re2c:off*\/. \u042d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043f\u043e\u043b\u0435\u0437\u043d\u043e \u0432 \u0441\u043b\u0443\u0447\u0430\u044f\u0445,<br \/>\nn\u00e5r re2c m\u00e5 generere definisjoner for variabler, strukturer og makroer,<br \/>\nsom brukes i andre oversettingsenheter.<\/p>\n<\/li>\n<li>\n<p>Re2c forst\u00e5r n\u00e5 UTF8-litteraler og tegnklasser i regul\u00e6re uttrykk.<br \/>\nSom standard analyserer re2c uttrykk som \u00ab\u2200x \u2203y\u00bb som.<br \/>\nen sekvens av 1-bit ASCII-tegn e2 88 80 78 20 e2 88 83 79<br \/>\n(hex-koder), og brukerne m\u00e5 escapa Unicode-tegn manuelt:<br \/>\n\u00abu2200x u2203y\u00bb. Dette er veldig upraktisk og uventet for mange.<br \/>\nbrukere (noe som fremg\u00e5r av de konstante bug-rapportene). S\u00e5 n\u00e5<br \/>\nRe2c gir muligheten \u2014input-encoding ,<br \/>\nsom lar deg endre oppf\u00f8rselen og analysere \u00ab\u2200x \u2203y\u00bb som.<br \/>\n2200 78 20 2203 79.<\/p>\n<\/li>\n<li>\n<p>Re2c tillater n\u00e5 bruk av vanlige re2c-blokker i -r \u2014reuse-modus.<br \/>\nDette er praktisk hvis inngangsfilen inneholder mange blokker, og bare en del av dem<br \/>\nbeh\u00f8ver \u00e5 bli gjenbrukt.<\/p>\n<\/li>\n<li>\n<p>Muligheten for \u00e5 angi formatet for advarsler og feilmeldinger<br \/>\nved hjelp av det nye alternativet \u2014location-format . GNU-formatet vises<br \/>\nsom filnavn:linje:kolonne:, mens MSVC-formatet \u2013 som filnavn(linje, kolonne).<br \/>\nDenne funksjonen kan v\u00e6re nyttig for IDE-entusiaster.<br \/>\nDet ble ogs\u00e5 lagt til et alternativ \u2014verbose, som gir en kort suksessmelding i tilfelle suksess.<\/p>\n<\/li>\n<li>\n<p>Kompatibilitetsmodusen med flex har blitt forbedret \u2013 noen parsningsfeil har blitt rettet og<br \/>\nfeil prioritering av operatorer er rettet i sjeldne tilfeller.<br \/>\nHistorisk sett gj\u00f8r alternativet -F \u2014flex-support det mulig \u00e5 skrive kode.<br \/>\nblandet i flex-stil og re2c-stil, noe som gj\u00f8r parsing noe mer utfordrende.<br \/>\nKompatibilitetsmodus med flex blir sjelden brukt i ny kode,<br \/>\nmen re2c fortsetter \u00e5 st\u00f8tte det for bakoverkompatibilitet.<\/p>\n<\/li>\n<li>\n<p>Operat\u00f8ren for subtraksjon av tegnklasser \/ brukes n\u00e5<br \/>\nf\u00f8r dekoding, noe som gj\u00f8r at den kan brukes i flere tilfeller,<br \/>\nhvis det brukes en koding med variabel lengde (for eksempel UTF8).<\/p>\n<\/li>\n<li>\n<p>Utgangsfilen opprettes n\u00e5 atomisk: re2c oppretter f\u00f8rst en midlertidig fil<br \/>\nog skriver resultatet til den, f\u00f8r den deretter gir den midlertidige filen nytt navn som utgangsfil<br \/>\ni \u00e9n operasjon.<\/p>\n<\/li>\n<li>\n<p>Dokumentasjonen har blitt fullf\u00f8rt og omskrevet; spesielt har det blitt lagt til nye<br \/>\n<noindex>kapitler <a rel=\"nofollow\" href=\"http:\/\/re2c.org\/manual\/manual.html#buffer-refilling\">om bufferfylling<\/a><\/noindex><br \/>\nog <a rel=\"nofollow\" href=\"http:\/\/re2c.org\/manual\/manual.html#eof-handling\">om m\u00e5ter \u00e5 sjekke for slutten av inndata<\/a>.<br \/>\nDen nye dokumentasjonen er samlet i en<br \/>\n<a rel=\"nofollow\" href=\"http:\/\/re2c.org\/manual\/manual.html\">omfattende en-siders manual<\/a><br \/>\nmed eksempler (de samme kildene tegnes i manpage og i online-dokumentasjonen).<br \/>\nDet har v\u00e6rt svakere fors\u00f8k p\u00e5 \u00e5 forbedre lesbarheten til nettstedet p\u00e5 telefoner.<\/p>\n<\/li>\n<li>\n<p>Fra utviklernes perspektiv har re2c f\u00e5tt et mer fullstendig system for<br \/>\nfeils\u00f8king. Feils\u00f8kingskoden er n\u00e5 deaktivert i release-buildene og<br \/>\nkan aktiveres med configure-alternativet \u2014enable-debug.<\/p>\n<\/li>\n<\/ul>\n<p>Denne utgivelsen tok lang tid \u2013 nesten ett helt \u00e5r.<br \/>\nDet meste av tiden, som alltid, gikk med til \u00e5 utvikle den teoretiske basen og skrive<br \/>\nartikkel <a rel=\"nofollow\" href=\"http:\/\/re2c.org\/2019_borsotti_trofimovich_efficient_posix_submatch_extraction_on_nfa.pdf\">\u00abEfficient POSIX Submatch Extraction on NFA\u00bb<\/a>.<br \/>\nAlgoritmene beskrevet i artikkelen er implementert i det eksperimentelle biblioteket libre2c<br \/>\n(byggingen av biblioteket og benchmarkene er deaktivert som standard og aktiveres med configure-alternativet<br \/>\n\u2014enable-libs). Biblioteket er ikke ment som en konkurrent til eksisterende.<br \/>\nprosjekter som RE2, men som en forskningsplattform for \u00e5 utvikle nye<br \/>\nalgoritmer (som senere kan brukes i re2c eller andre prosjekter).<br \/>\nDette er ogs\u00e5 praktisk med tanke p\u00e5 testing, benchmarking og opprettelse av bindinger til andre spr\u00e5k.<\/p>\n<p>Takk fra utviklerne av re2c til alle som hjalp med \u00e5 gj\u00f8re denne utgivelsen mulig,<br \/>\nog generelt til fellesskapet for ideer, bugrapporter, patcher, kamp\u00e5nd osv. ;]<\/p>\n<p>Kilde: <a \ncontent=\"nofollow\" rel=\"nofollow\" href=\"http:\/\/www.linux.org.ru\/news\/development\/15144630\">linux.org.ru<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0412 \u043f\u044f\u0442\u043d\u0438\u0446\u0443 2-\u0433\u043e \u0430\u0432\u0433\u0443\u0441\u0442\u0430 \u0432\u044b\u0448\u0435\u043b \u0440\u0435\u043b\u0438\u0437 re2c &mdash; \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u043e\u0433\u043e \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u0430 \u043b\u0435\u043a\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u043e\u0432 \u0434\u043b\u044f \u044f\u0437\u044b\u043a\u043e\u0432 C \u0438 C++. \u041d\u0430\u043f\u043e\u043c\u043d\u0438\u043c, \u0447\u0442\u043e re2c \u0431\u044b\u043b \u043d\u0430\u043f\u0438\u0441\u0430\u043d \u0432 1993 \u0433\u043e\u0434\u0443 \u041f\u0438\u0442\u0435\u0440\u043e\u043c \u0411\u0430\u043c\u0431\u0443\u043b\u0438\u0441\u043e\u043c \u043a\u0430\u043a \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u044b\u0439 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440 \u043e\u0447\u0435\u043d\u044c \u0431\u044b\u0441\u0442\u0440\u044b\u0445 \u043b\u0435\u043a\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u043e\u0432, \u043e\u0442\u043b\u0438\u0447\u0430\u044e\u0449\u0438\u0439\u0441\u044f \u043e\u0442 \u0434\u0440\u0443\u0433\u0438\u0445 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u043e\u0432 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c\u044e \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430 \u0438 \u043d\u0435\u043e\u0431\u044b\u0447\u043d\u043e \u0433\u0438\u0431\u043a\u0438\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u043c \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043b\u0435\u0433\u043a\u043e \u0438 \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e \u0432\u0441\u0442\u0440\u0438\u0432\u0430\u0442\u044c \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u044b \u0432 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0443\u044e [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[702],"tags":[],"class_list":["post-36759","post","type-post","status-publish","format-standard","hentry","category-news"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.5 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0412 \u043f\u044f\u0442\u043d\u0438\u0446\u0443 2-\u0433\u043e \u0430\u0432\u0433\u0443\u0441\u0442\u0430 \u0432\u044b\u0448\u0435\u043b \u0440\u0435\u043b\u0438\u0437 re2c \u2014 \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u043e\u0433\u043e \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u0430 \u043b\u0435\u043a\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u043e\u0432 \u0434\u043b\u044f \u044f\u0437\u044b\u043a\u043e\u0432 C \u0438 C++.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/no\/blog\/news\/re2c-1-2\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.5\" \/>\n\t\t<meta property=\"og:locale\" content=\"nn_NO\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47re2c 1.2 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0412 \u043f\u044f\u0442\u043d\u0438\u0446\u0443 2-\u0433\u043e \u0430\u0432\u0433\u0443\u0441\u0442\u0430 \u0432\u044b\u0448\u0435\u043b \u0440\u0435\u043b\u0438\u0437 re2c \u2014 \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u043e\u0433\u043e \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u0430 \u043b\u0435\u043a\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u043e\u0432 \u0434\u043b\u044f \u044f\u0437\u044b\u043a\u043e\u0432 C \u0438 C++.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/no\/blog\/news\/re2c-1-2\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-10-31T19:13:39+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T19:13:39+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47re2c 1.2 | ProHoster","description":"Fredag 2. august ble re2c-utgivelsen \u2014 en fri generator av leksikalske analyseverkt\u00f8y for C- og C++-spr\u00e5kene, lansert.","canonical_url":"https:\/\/prohoster.info\/no\/blog\/news\/re2c-1-2","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"nn_NO","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47re2c 1.2 | ProHoster","og:description":"\u0412 \u043f\u044f\u0442\u043d\u0438\u0446\u0443 2-\u0433\u043e \u0430\u0432\u0433\u0443\u0441\u0442\u0430 \u0432\u044b\u0448\u0435\u043b \u0440\u0435\u043b\u0438\u0437 re2c \u2014 \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u043e\u0433\u043e \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u0430 \u043b\u0435\u043a\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0430\u043d\u0430\u043b\u0438\u0437\u0430\u0442\u043e\u0440\u043e\u0432 \u0434\u043b\u044f \u044f\u0437\u044b\u043a\u043e\u0432 C \u0438 C++.","og:url":"https:\/\/prohoster.info\/no\/blog\/news\/re2c-1-2","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T19:13:39+00:00","article:modified_time":"2019-10-31T19:13:39+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"36759","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-22 04:45:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 01:39:23","updated":"2026-01-22 04:45:19","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/posts\/36759","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/comments?post=36759"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/posts\/36759\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/media?parent=36759"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/categories?post=36759"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/no\/wp-json\/wp\/v2\/tags?post=36759"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}