Τη Δευτέρα, 20 Ιουλίου, κυκλοφόρησε η κυκλοφορία του re2c, μιας γρήγορης γεννήτριας λεξικών αναλυτών.
Βασικές αλλαγές:

  • Προστέθηκε υποστήριξη για τη γλώσσα Go
    (ενεργοποιείται είτε με την επιλογή --lang go για re2c, είτε ως αυτόνομο πρόγραμμα re2go).
    Η τεκμηρίωση για το C and Go δημιουργείται από το ίδιο κείμενο, αλλά με διαφορετικό
    παραδείγματα κώδικα. Το υποσύστημα δημιουργίας κώδικα στο re2c έχει επανασχεδιαστεί πλήρως, το οποίο
    θα διευκολύνει την υποστήριξη νέων γλωσσών στο μέλλον.

  • Προστέθηκε εναλλακτικό σύστημα κατασκευής στο CMake (ευχαριστώ ligfx!).
    Προσπάθειες μετάφρασης του re2c σε CMake έχουν γίνει εδώ και πολύ καιρό, αλλά πριν από το ligfx κανείς
    προσέφερε μια ολοκληρωμένη λύση.
    Το παλιό σύστημα κατασκευής στο Autotools συνεχίζει να υποστηρίζεται και να χρησιμοποιείται,
    και στο άμεσο μέλλον δεν υπάρχουν σχέδια εγκατάλειψης (εν μέρει για να μην δημιουργηθεί
    προβλήματα για τους προγραμματιστές διανομής, εν μέρει λόγω του παλιού συστήματος κατασκευής
    πιο σταθερό και συνοπτικό από το νέο).
    Και τα δύο συστήματα δοκιμάζονται εξίσου συνεχώς χρησιμοποιώντας το Travis CI.

  • Προστέθηκε η δυνατότητα ρύθμισης του κώδικα διεπαφής σε διαμορφώσεις κατά τη χρήση
    γενικό API (γενικό API). Προηγουμένως, τα περισσότερα API έπρεπε να προσδιορίζονται στη φόρμα
    συναρτήσεις ή μακροεντολές συναρτήσεων. Τώρα μπορούν να οριστούν με τη μορφή αυθαίρετων
    συμβολοσειρές με ονομασμένες παραμέτρους προτύπου της μορφής @@{name} ή απλώς @@ (αν
    υπάρχει μόνο μία παράμετρος και δεν υπάρχει ασάφεια). Το στυλ API είναι διαμορφώσιμο
    re2c:api:style (η τιμή συναρτήσεων καθορίζει το στυλ λειτουργίας, ενώ η τιμή ελεύθερης μορφής είναι αυθαίρετη).

  • Βελτιωμένη λειτουργία της επιλογής -c, --start-conditions, η οποία σας επιτρέπει να συνδυάσετε πολλά
    διασυνδεδεμένα lexers σε ένα μπλοκ re2c. Τώρα μπορείτε να χρησιμοποιήσετε
    συνηθισμένα μπλοκ ισοδύναμα με τα υπό όρους και ορίστε πολλά άσχετα υπό όρους
    μπλοκ σε ένα αρχείο.
    Βελτιωμένες επιλογές -r, --reuse (επαναχρησιμοποίηση κώδικα από ένα μπλοκ
    σε άλλα μπλοκ) σε συνδυασμό με τις επιλογές -c, --start-conditions και -f, --storable-state
    (ένας λεξικό κατάστασης που μπορεί να διακοπεί σε αυθαίρετη τοποθεσία
    και συνεχίστε την εκτέλεση αργότερα).

  • Διορθώθηκε ένα σφάλμα στον αλγόριθμο που προστέθηκε πρόσφατα για το χειρισμό του τέλους των δεδομένων εισόδου
    (κανόνας ΕΟΦ), που σε σπάνιες περιπτώσεις οδηγούσε σε λανθασμένη επεξεργασία
    αλληλεπικαλυπτόμενοι κανόνες.

  • Απλοποιημένη διαδικασία bootstrap. Προηγουμένως, το σύστημα κατασκευής προσπάθησε να βρει ήδη δυναμικά
    κατασκευάστηκε το re2c που θα μπορούσε να χρησιμοποιηθεί για την ανοικοδόμησή του.
    Αυτό οδήγησε σε εσφαλμένες εξαρτήσεις (επειδή το γράφημα εξαρτήσεων αποδείχθηκε
    δυναμική, κάτι που δεν αρέσει στα περισσότερα συστήματα κατασκευής).
    Τώρα, για την ανοικοδόμηση lexers, απαιτείται ρητά
    διαμορφώστε το σύστημα κατασκευής και ορίστε τη μεταβλητή RE2C_FOR_BUILD.

Ευχαριστώ όλους όσους συνέβαλαν σε αυτήν την κυκλοφορία!

Πηγή: linux.org.ru

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