Κυκλοφορία του re2c lexer generator 1.2

πήρε θέση απελευθέρωση re2c, μια δωρεάν γεννήτρια λεξικού αναλυτή για γλώσσες C και C++. Θυμηθείτε ότι το re2c γράφτηκε το 1993 από τον Peter Bambulis ως μια πειραματική γεννήτρια πολύ γρήγορων λεξικών αναλυτών, που διαφέρουν από άλλες γεννήτριες στην ταχύτητα του παραγόμενου κώδικα και σε μια ασυνήθιστα ευέλικτη διεπαφή χρήστη που επιτρέπει στους αναλυτές να ενσωματώνονται εύκολα και αποτελεσματικά σε έναν υπάρχοντα κώδικα βάση. Έκτοτε, το έργο έχει αναπτυχθεί από την κοινότητα και συνεχίζει να είναι μια πλατφόρμα για πειράματα και έρευνες στον τομέα των τυπικών γραμματικών και των μηχανών πεπερασμένων καταστάσεων.

Η προετοιμασία για την κυκλοφορία κράτησε σχεδόν έναν ολόκληρο χρόνο. Ο περισσότερος χρόνος, όπως πάντα, αφιερώθηκε στην ανάπτυξη ενός θεωρητικού πλαισίου και στη συγγραφή
άρθρα"Αποτελεσματική εξαγωγή δευτερεύοντος αντιστοίχισης POSIX σε NFA".
Οι αλγόριθμοι που περιγράφονται στο άρθρο υλοποιούνται στην πειραματική βιβλιοθήκη libre2c
(η δημιουργία της βιβλιοθήκης και των δοκιμών απόδοσης είναι απενεργοποιημένη από προεπιλογή και ενεργοποιείται από την επιλογή διαμόρφωσης «—enable-libs»). Η βιβλιοθήκη δεν προορίζεται ως ανταγωνιστής υφιστάμενων έργων όπως το RE2, αλλά ως πλατφόρμα έρευνας για την ανάπτυξη νέων
αλγόριθμους (που στη συνέχεια μπορούν να χρησιμοποιηθούν στο re2c ή σε άλλα έργα). Είναι επίσης βολικό από την άποψη της δοκιμής, της μέτρησης της απόδοσης και της δημιουργίας δεσμών σε άλλες γλώσσες.

Κύριες καινοτομίες στην έκδοση re2c 1.2:

  • Προστέθηκε μια νέα απλοποιημένη μέθοδος για τον έλεγχο του τέλους των δεδομένων εισόδου ("Κανόνας EOF"). Για αυτό, έχει προστεθεί η διαμόρφωση "re2c:eof",
    σας επιτρέπει να επιλέξετε τον τερματικό χαρακτήρα,
    και ένας ειδικός κανόνας "$", ο οποίος ενεργοποιείται εάν το lexer
    έφτασε με επιτυχία στο τέλος των δεδομένων εισόδου.
    Ιστορικά, το re2c παρέχει μια επιλογή από διάφορες μεθόδους επαλήθευσης για
    το τέλος των εισροών ποικίλλει ως προς τον περιορισμό, την αποτελεσματικότητα και την απλότητα
    εφαρμογές. Η νέα μέθοδος έχει σχεδιαστεί για να απλοποιεί τη σύνταξη κώδικα, ενώ
    ενώ παραμένει αποτελεσματική και ευρέως εφαρμόσιμη. Παλιοί τρόποι
    εξακολουθεί να λειτουργεί και μπορεί να προτιμάται σε ορισμένες περιπτώσεις.

  • Προστέθηκε η δυνατότητα συμπερίληψης εξωτερικών αρχείων χρησιμοποιώντας μια οδηγία
    "/*!include:re2c "file.re" */", όπου "file.re" είναι το όνομα του αρχείου που θα συμπεριληφθεί. Το Re2c αναζητά αρχεία στον κατάλογο αρχείων συμπεριλαμβανομένων,
    καθώς και στη λίστα των διαδρομών που καθορίζονται χρησιμοποιώντας την επιλογή «-I».
    Τα αρχεία που περιλαμβάνονται ενδέχεται να περιλαμβάνουν άλλα αρχεία.
    Το Re2c παρέχει "τυποποιημένα" αρχεία στον κατάλογο "include/".
    έργο - αναμένεται ότι θα συσσωρευτούν χρήσιμοι ορισμοί
    κανονικές εκφράσεις, κάτι σαν την τυπική βιβλιοθήκη.
    Μέχρι στιγμής, κατόπιν αιτήματος των εργαζομένων, έχει προστεθεί ένα αρχείο με ορισμούς κατηγοριών Unicode.

  • Προστέθηκε η δυνατότητα δημιουργίας αρχείων κεφαλίδας με αυθαίρετα
    περιεχόμενο χρησιμοποιώντας τις επιλογές "-t --type-header" (ή κατάλληλο
    διαμορφώσεις) και νέες οδηγίες "/*!header:re2c:on*/" και
    "/*!header:re2c:off*/". Αυτό μπορεί να είναι χρήσιμο σε περιπτώσεις όπου
    όταν το re2c χρειάζεται να δημιουργήσει ορισμούς μεταβλητών, δομών και μακροεντολών,
    χρησιμοποιείται σε άλλες μεταφραστικές ενότητες.

  • Το Re2c καταλαβαίνει πλέον τα κυριολεκτικά UTF8 και τις κατηγορίες χαρακτήρων σε κανονικές εκφράσεις.
    Από προεπιλογή, το re2c αναλύει εκφράσεις όπως "∀x ∃y" ως
    ακολουθία χαρακτήρων ASCII 1 bit "e2 88 80 78 20 e2 88 83 79"
    (δεκαεξαδικοί κωδικοί) και οι χρήστες πρέπει να διαφύγουν από τους χαρακτήρες Unicode με μη αυτόματο τρόπο:
    "\\u2200x \\u2203y." Αυτό είναι πολύ άβολο και απροσδόκητο για πολλούς
    χρήστες (όπως αποδεικνύεται από συνεχείς αναφορές σφαλμάτων). Ωστε τώρα
    Το re2c παρέχει την επιλογή "--input-encoding {ascii | utf8}",
    που σας επιτρέπει να αλλάξετε τη συμπεριφορά και να αναλύσετε το "∀x ∃y" ως
    “2200 78 20 2203 79.”

  • Το Re2c επιτρέπει πλέον τη χρήση κανονικών μπλοκ re2c σε λειτουργία "-r --reuse".
    Αυτό είναι βολικό εάν το αρχείο εισόδου περιέχει πολλά μπλοκ και μόνο μερικά από αυτά
    πρέπει να επαναχρησιμοποιηθεί.

  • Τώρα μπορείτε να ορίσετε τη μορφή των προειδοποιήσεων και των μηνυμάτων σφαλμάτων
    χρησιμοποιώντας τη νέα επιλογή "--location-format {gnu | msvc}". Εμφανίζεται η μορφή GNU
    ως "όνομα αρχείου: γραμμή: στήλη:", και τη μορφή MSVC ως "όνομα αρχείου(γραμμή,στήλη)".
    Αυτή η δυνατότητα μπορεί να είναι χρήσιμη για τους λάτρεις του IDE.
    Προστέθηκε επίσης μια επιλογή "--verbose", η οποία εμφανίζει ένα σύντομο μήνυμα νίκης εάν είναι επιτυχές.

  • Η λειτουργία "συμβατότητας" με το flex έχει βελτιωθεί - ορισμένα σφάλματα ανάλυσης έχουν διορθωθεί και
    λανθασμένη προτεραιότητα χειριστή σε σπάνιες περιπτώσεις.
    Ιστορικά, η επιλογή "-F --flex-suppor" σάς επέτρεπε να γράψετε κώδικα
    ανάμειξη σε στυλ flex και στυλ re2c, γεγονός που καθιστά την ανάλυση λίγο δύσκολη.
    Η λειτουργία ευέλικτης συμβατότητας χρησιμοποιείται σπάνια σε νέο κώδικα,
    αλλά το re2c συνεχίζει να το υποστηρίζει για συμβατότητα προς τα πίσω.

  • Τώρα ισχύει ο τελεστής αφαίρεσης κατηγορίας χαρακτήρων "/".
    πριν από την επέκταση της κωδικοποίησης, η οποία επιτρέπει τη χρήση της σε μεγαλύτερο αριθμό περιπτώσεων,
    εάν χρησιμοποιείται κωδικοποίηση μεταβλητού μήκους χαρακτήρων (για παράδειγμα UTF8).

  • Το αρχείο εξόδου δημιουργείται πλέον ατομικά: το re2c δημιουργεί πρώτα ένα προσωρινό αρχείο
    και εγγράφει το αποτέλεσμα σε αυτό και, στη συνέχεια, μετονομάζει το προσωρινό αρχείο στην έξοδο
    μία επέμβαση.

  • Η τεκμηρίωση συμπληρώθηκε και ξαναγράφτηκε. ειδικότερα προστέθηκαν νέα
    κεφάλαια για http://re2c.org/manual/manual.html#buffer-refilling заполнение буфера
    и σχετικά με τους τρόπους ελέγχου για το τέλος των δεδομένων εισόδου.
    Η νέα τεκμηρίωση συλλέγεται στη φόρμα
    έναν ολοκληρωμένο μονοσέλιδο οδηγό
    με παραδείγματα (οι ίδιες πηγές αποδίδονται στη manpage και στην ηλεκτρονική τεκμηρίωση).
    Έχουν γίνει κακές προσπάθειες για τη βελτίωση της αναγνωσιμότητας του ιστότοπου στα τηλέφωνα.

  • Από την πλευρά των προγραμματιστών, το re2c έχει αποκτήσει ένα πιο ολοκληρωμένο υποσύστημα
    αποσφαλμάτωση Ο κώδικας εντοπισμού σφαλμάτων είναι πλέον απενεργοποιημένος στις εκδόσεις και
    μπορεί να ενεργοποιηθεί χρησιμοποιώντας την επιλογή διαμόρφωσης "--enable-debug".

Πηγή: opennet.ru

Προσθέστε ένα σχόλιο