Rhyddhau generadur lexer re2c 2.0

cymryd lle rhyddhau re2c 2.0, generadur dadansoddwr geiriadurol am ddim ar gyfer C a C++. Crëwyd y prosiect re2c yn wreiddiol ym 1993 gan Peter Bamboulis fel generadur arbrofol o ddadansoddwyr geirfaol cyflym iawn, sy'n wahanol i gynhyrchwyr eraill oherwydd cyflymder y cod a gynhyrchir a rhyngwyneb defnyddiwr anarferol o hyblyg sy'n caniatáu integreiddio parsers yn hawdd ac yn effeithlon i mewn i gronfa god sy'n bodoli eisoes. . Ers hynny, mae’r prosiect wedi’i ddatblygu gan y gymuned ac mae’n parhau i fod yn llwyfan ar gyfer arbrofi ac ymchwil ym maes gramadegau ffurfiol a pheiriannau gwladol.

Newidiadau mawr:

  • Ychwanegwyd cefnogaeth i'r iaith Go (wedi'i alluogi naill ai gan yr opsiwn "-lang go" ar gyfer re2c, neu fel rhaglen re2go ar wahân). Cynhyrchir y ddogfennaeth ar gyfer C a Go o'r un testun, ond gydag enghreifftiau cod gwahanol. Mae'r is-system cynhyrchu cod yn re2c wedi'i hailgynllunio'n llwyr, a ddylai ei gwneud hi'n haws cefnogi ieithoedd newydd yn y dyfodol.
  • Ychwanegwyd system adeiladu amgen ar CMake (diolch ligfx!). Mae ymdrechion i gyfieithu re2c i CMake wedi'u gwneud ers amser maith, ond cyn ligfx, ni chynigiodd neb ateb cyflawn. Mae'r hen system adeiladu ar Autotools yn parhau i gael ei chefnogi a'i defnyddio, ac nid oes unrhyw gynlluniau i roi'r gorau iddi hyd y gellir rhagweld (yn rhannol er mwyn osgoi problemau i ddatblygwyr dosbarthu, yn rhannol oherwydd bod yr hen system adeiladu yn fwy sefydlog ac yn fwy cryno na'r un newydd ). Mae'r ddwy system yn cael eu profi yr un mor barhaus gan ddefnyddio Travis CI.
  • Ychwanegwyd y gallu i nodi cod rhyngwyneb mewn ffurfweddiadau wrth ddefnyddio'r API generig (API generig). Yn y gorffennol, roedd yn rhaid diffinio'r rhan fwyaf o APIs ar ffurf swyddogaethau neu macros swyddogaeth. Nawr gellir eu nodi ar ffurf llinynnau mympwyol gyda pharamedrau templed a enwir o'r ffurflen "@@{name}" neu yn syml "@@" (os mai dim ond un paramedr sydd ac nad oes unrhyw amwysedd). Mae'r arddull API yn cael ei osod gan y cyfluniad arddull re2c: api: (mae gwerth y swyddogaethau yn pennu'r arddull swyddogaethol, tra bod y gwerth ffurf rydd yn fympwyol).
  • Gwell gweithrediad yr opsiwn "-c", "--start-conditions", sy'n caniatáu cyfuno nifer o lexers rhyng-gysylltiedig mewn un bloc re2c. Nawr gallwch chi ddefnyddio blociau arferol yn ogystal â blociau amodol a diffinio sawl bloc amodol anghysylltiedig mewn un ffeil. Gwell gweithrediad yr opsiwn "-r", "--reuse" (cod ailddefnyddio o un bloc mewn blociau eraill) mewn cyfuniad â "-c", "--start-conditions" a "-f", "--storable- opsiynau state" (geirlyfr gwladwriaethol y gellir torri ar ei draws ar bwynt mympwyol ac ailddechrau yn ddiweddarach).
  • Wedi trwsio nam yn yr algorithm prosesu diwedd mewnbwn a ychwanegwyd yn ddiweddar (rheol EOF), a arweiniodd mewn achosion prin at brosesu rheolau gorgyffwrdd yn anghywir.
  • Proses bootstrap symlach. Yn flaenorol, ceisiodd y system adeiladu ddod o hyd i re2c a adeiladwyd eisoes yn ddeinamig y gellid ei ddefnyddio i ailadeiladu ei hun. Arweiniodd hyn at ddibyniaethau anghywir (gan fod y graff dibyniaeth wedi troi allan i fod yn ddeinamig, nad yw'r rhan fwyaf o systemau adeiladu yn ei hoffi). Nawr, i ailadeiladu geiriadur, mae angen i chi ffurfweddu'r system adeiladu yn benodol a gosod y newidyn RE2C_FOR_BUILD.

Ffynhonnell: opennet.ru

Ychwanegu sylw