freigeben , ein kostenloser lexikalischer Analysegenerator fĂŒr die Sprachen C und C++. Denken Sie daran, dass re2c 1993 von Peter Bambulis als experimenteller Generator fĂŒr sehr schnelle lexikalische Analysatoren geschrieben wurde und sich von anderen Generatoren durch die Geschwindigkeit des generierten Codes und eine ungewöhnlich flexible BenutzeroberflĂ€che unterscheidet, die eine einfache und effiziente Integration von Analysatoren in einen vorhandenen Code ermöglicht Base. Seitdem wurde das Projekt von der Community weiterentwickelt und ist weiterhin eine Plattform fĂŒr Experimente und Forschung im Bereich formaler Grammatiken und endlicher Zustandsmaschinen.
Die Vorbereitungen fĂŒr die Veröffentlichung dauerten fast ein ganzes Jahr. Die meiste Zeit wurde wie immer fĂŒr die Entwicklung eines theoretischen Rahmens und das Schreiben aufgewendet
Artikel "«.
Die im Artikel beschriebenen Algorithmen sind in der experimentellen Bibliothek libre2c implementiert
(Der Aufbau der Bibliothek und Leistungstests sind standardmĂ€Ăig deaktiviert und werden durch die Konfigurationsoption ââenable-libsâ aktiviert.) Die Bibliothek ist nicht als Konkurrenz zu bestehenden Projekten wie RE2 gedacht, sondern als Forschungsplattform fĂŒr die Entwicklung neuer Projekte
Algorithmen (die dann in re2c oder in anderen Projekten verwendet werden können). Es ist auch praktisch im Hinblick auf Tests, Leistungsmessungen und die Erstellung von Bindungen zu anderen Sprachen.
Wichtigste Neuerungen in Version re2c 1.2:
- Eine neue vereinfachte Methode zur ĂberprĂŒfung des Endes von Eingabedaten (âEOF-Regelâ) hinzugefĂŒgt. Hierzu wurde die Konfiguration âre2c:eofâ hinzugefĂŒgt,
ermöglicht Ihnen die Auswahl des Endzeichens,
und eine Sonderregel â$â, die ausgelöst wird, wenn der Lexer
Das Ende der Eingabedaten wurde erfolgreich erreicht.
Historisch gesehen bietet re2c eine Auswahl verschiedener Verifizierungsmethoden fĂŒr
Ende der Eingaben, die sich in Begrenzung, Effizienz und Einfachheit unterscheiden
Anwendungen. Die neue Methode soll das Schreiben von Code vereinfachen
Dabei bleibt es wirksam und weithin anwendbar. Alte Wege
funktionieren immer noch und können in manchen FĂ€llen bevorzugt werden. - Es wurde die Möglichkeit hinzugefĂŒgt, externe Dateien mithilfe einer Direktive einzubinden
â/*!include:re2c âfile.reâ */â, wobei âfile.reâ der Name der einzubindenden Datei ist. Re2c sucht nach Dateien im enthaltenen Dateiverzeichnis.
sowie in der Liste der mit der Option â-Iâ angegebenen Pfade.
Enthaltene Dateien können andere Dateien enthalten.
Re2c stellt âStandardâ-Dateien im Verzeichnis âinclude/â bereit
Projekt - es wird erwartet, dass sich dort nĂŒtzliche Definitionen ansammeln
regulĂ€re AusdrĂŒcke, so etwas wie die Standardbibliothek.
Bisher wurde auf Wunsch der Arbeitnehmer eine Datei mit Definitionen von Unicode-Kategorien hinzugefĂŒgt. - Es wurde die Möglichkeit hinzugefĂŒgt, Header-Dateien mit beliebigen Header-Dateien zu generieren
Inhalt mit den Optionen â-t --type-headerâ (oder entsprechend)
Konfigurationen) und neue Direktiven â/*!header:re2c:on*/â und
"/*!header:re2c:off*/". Dies kann in FĂ€llen nĂŒtzlich sein, in denen
wenn re2c Definitionen von Variablen, Strukturen und Makros generieren muss,
wird in anderen Ăbersetzungseinheiten verwendet. - Re2c versteht jetzt UTF8-Literale und Zeichenklassen in regulĂ€ren AusdrĂŒcken.
StandardmĂ€Ăig analysiert re2c AusdrĂŒcke wie ââx âyâ als
Folge von 1-Bit-ASCII-Zeichen âe2 88 80 78 20 e2 88 83 79â
(Hex-Codes) und Benutzer mĂŒssen Unicode-Zeichen manuell maskieren:
â\\u2200x \\u2203y.â Dies ist fĂŒr viele sehr unbequem und unerwartet
Benutzer (wie durch stÀndige Fehlerberichte belegt). Also jetzt
re2c bietet die Option â--input-encoding {ascii | utf8}",
Dadurch können Sie das Verhalten Ă€ndern und ââx âyâ als analysieren
â2200 78 20 2203 79.â - Re2c ermöglicht jetzt die Verwendung regulĂ€rer re2c-Blöcke im â-r --reuseâ-Modus.
Dies ist praktisch, wenn die Eingabedatei viele Blöcke und nur einige davon enthÀlt
muss wiederverwendet werden. - Jetzt können Sie das Format von Warnungen und Fehlermeldungen festlegen
mit der neuen Option â--location-format {gnu | msvc}". Das GNU-Format wird angezeigt
als âDateiname:Zeile:Spalte:â und das MSVC-Format als âDateiname(Zeile,Spalte)â.
Diese Funktion kann fĂŒr IDE-Liebhaber nĂŒtzlich sein.
AuĂerdem wurde eine Option â--verboseâ hinzugefĂŒgt, die bei Erfolg eine kurze Siegmeldung anzeigt. - Der âKompatibilitĂ€tsâ-Modus mit Flex wurde verbessert â einige Parsing-Fehler wurden behoben und
In seltenen FÀllen kommt es zu einer falschen OperatorprioritÀt.
Historisch gesehen ermöglichte die Option â-F --flex-supporâ das Schreiben von Code
gemischt im Flex-Stil und im Re2c-Stil, was das Parsen etwas schwierig macht.
Der Flex-KompatibilitÀtsmodus wird in neuem Code selten verwendet.
re2c unterstĂŒtzt es jedoch weiterhin aus GrĂŒnden der AbwĂ€rtskompatibilitĂ€t. - Es gilt jetzt der Zeichenklassen-Subtraktionsoperator â/â.
bevor die Kodierung erweitert wird, was die Verwendung in einer gröĂeren Anzahl von FĂ€llen ermöglicht,
wenn eine Kodierung mit variabler ZeichenlÀnge verwendet wird (zum Beispiel UTF8). - Die Ausgabedatei wird nun atomar erstellt: re2c erstellt zunÀchst eine temporÀre Datei
und schreibt das Ergebnis hinein und benennt dann die temporÀre Datei in die Ausgabe um
eine Operation. - Die Dokumentation wurde vervollstÀndigt und neu geschrieben; insbesondere kamen neue hinzu
Kapitel ĂŒber
Đž .
Die neue Dokumentation wird im Formular gesammelt
mit Beispielen (die gleichen Quellen werden in der Manpage und in der Online-Dokumentation wiedergegeben).
Es wurden nur unzureichende Versuche unternommen, die Lesbarkeit der Website auf Mobiltelefonen zu verbessern. - Aus Sicht der Entwickler hat re2c ein vollstÀndigeres Subsystem erhalten
Debuggen Das Debuggen von Code ist jetzt in Release-Builds und deaktiviert
kann mit der Konfigurationsoption â--enable-debugâ aktiviert werden.
Source: opennet.ru
