Maanantaina 20. heinäkuuta julkaistiin re2c, nopea leksikaalinen analysaattorigeneraattori.
Suurimmat muutokset:
-
Lisätty Go-kielituki
(ota käyttöön joko --lang go -vaihtoehdolla re2c:lle tai erillisenä re2go-ohjelmana).
C:n ja Go:n dokumentaatio luodaan samasta tekstistä, mutta eri tekstillä
koodiesimerkkejä. Re2c:n koodin luontialijärjestelmä on suunniteltu kokonaan uudelleen, mikä
pitäisi helpottaa uusien kielten tukemista tulevaisuudessa. -
Lisätty vaihtoehtoinen rakennusjärjestelmä CMakelle (kiitos ligfx!).
Re2c:tä on yritetty kääntää CMakeksi jo pitkään, mutta ennen ligfx:ää ei kukaan
tarjosi täydellisen ratkaisun.
Autotoolsin vanhaa rakennusjärjestelmää tuetaan ja käytetään edelleen,
ja lähitulevaisuudessa ei ole suunnitelmia luopua siitä (osittain jotta ei luoda
ongelmia jakelun kehittäjille, osittain vanhan koontijärjestelmän vuoksi
vakaampi ja ytimekkäämpi kuin uusi).
Molempia järjestelmiä testataan jatkuvasti Travis CI:n avulla. -
Lisätty mahdollisuus asettaa käyttöliittymäkoodi kokoonpanoihin käytettäessä
yleinen API. Aikaisemmin useimmat API:t piti määrittää lomakkeessa
funktioita tai funktiomakroja. Nyt ne voidaan määrittää mielivaltaisena
rivit nimetyillä malliparametreilla, kuten @@{nimi} tai vain @@ (jos
on vain yksi parametri, eikä siinä ole epäselvyyttä). API-tyyli määritellään kokoonpanossa
re2c:api:style (funktion arvo määrittää toiminnallisen tyylin ja vapaamuotoinen määrittelee mielivaltaisen tyylin). -
Valinnan -c, --start-conditions toimintaa on parannettu, jolloin voit yhdistää useita
toisiinsa yhdistetyt lekserit yhdessä re2c-lohkossa. Nyt voit käyttää
säännölliset lohkot ehdollisten lohkojen kanssa ja määritä useita toisiinsa liittymättömiä ehdollisia
lohkoja yhdessä tiedostossa.
Parannettu -r, --reuse -vaihtoehdon toiminta (koodin uudelleenkäyttö yhdestä lohkosta
muissa lohkoissa) yhdessä vaihtoehtojen -c, --start-conditions ja -f, --storable-state kanssa
(tilallinen lexer, joka voidaan keskeyttää milloin tahansa
ja jatka suorittamista myöhemmin). -
Korjattu äskettäin lisätyn syötteen loppu-algoritmin virhe
(EOF-sääntö), joka harvoissa tapauksissa johti virheelliseen käsittelyyn
päällekkäisiä sääntöjä. -
Bootstrap-prosessia on yksinkertaistettu. Aiemmin rakennusjärjestelmä yritti löytää jo dynaamisesti
re2c-versio, jota voitaisiin käyttää itsensä rakentamiseen.
Tämä johti vääriin riippuvuuksiin (koska riippuvuuskaavio oli
dynaaminen, josta useimmat rakennusjärjestelmät eivät pidä).
Nyt, jotta voit rakentaa lekserit uudelleen, sinun on tehtävä se erikseen
määritä koontijärjestelmä ja aseta RE2C_FOR_BUILD-muuttuja.
Kiitos kaikille tämän julkaisun valmisteluun osallistuneille!
Lähde: linux.org.ru