Πώς να γράψετε έναν μεταφραστή

Πίνακας περιεχομένων:

Πώς να γράψετε έναν μεταφραστή
Πώς να γράψετε έναν μεταφραστή

Βίντεο: Πώς να γράψετε έναν μεταφραστή

Βίντεο: Πώς να γράψετε έναν μεταφραστή
Βίντεο: Άννα Βίσση u0026 Μπάμπης Στόκας - Κι Όμως Δεν Τελειώνει - Official Music Video 2024, Ενδέχεται
Anonim

Υπάρχουν πολλές γλώσσες προγραμματισμού που έχουν τα δικά τους μοναδικά χαρακτηριστικά. Αλλά για να λειτουργήσει ένα πρόγραμμα γραμμένο σε οποιοδήποτε από αυτά, πρέπει να το μεταδώσετε. Μερικές φορές οι γλώσσες προγραμματισμού αναπτύσσονται για τις δικές τους ανάγκες (για παράδειγμα, υποστήριξη για αυτοματοποίηση σε μεγάλες εφαρμογές) και στη συνέχεια καθίσταται απαραίτητο να γράψετε έναν μεταφραστή.

Πώς να γράψετε έναν μεταφραστή
Πώς να γράψετε έναν μεταφραστή

Απαραίτητη

  • - φυσική γραμματική ή BNF της γλώσσας πηγής ·
  • - εργαλεία ανάπτυξης.

Οδηγίες

Βήμα 1

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

Βήμα 2

Εφαρμογή μονάδας ή lexer. Στην είσοδο, θα πρέπει να λάβει μια "ακατέργαστη" ροή δεδομένων και στην έξοδο σχηματίζει μια λίστα στοιχείων που περιέχουν διακριτικά και τα αναγνωριστικά τύπου τους με τη σειρά με την οποία εμφανίζονται στο αρχικό κείμενο. Το πρόγραμμα ανάλυσης μπορεί να είναι αρκετά απλό " σαρωτής ενός επιπέδου. Η εφαρμογή της αποκατάστασης σφαλμάτων δεν έχει νόημα. Οι μη έγκυροι χαρακτήρες πρέπει να αντιμετωπίζονται ως σφάλματα.

Βήμα 3

Προετοιμάστε τα δεδομένα για ανάλυση. Με βάση τη φυσική γραμματική ή το BNF της γλώσσας πηγής, συνθέστε τη γραμματική LL1. Με βάση αυτόν τον τύπο γραμματικής, καταρτίστε ένα σχέδιο ανάλυσης όσον αφορά τις κατηγορίες έγκυρων σημείων και σημασιολογικών κατασκευών της γλώσσας.

Βήμα 4

Εφαρμογή λειτουργικής μονάδας ή ανάλυσης. Στην είσοδο, θα πρέπει να λάβει μια λίστα με μάρκες που προετοιμάζονται στο στάδιο της λεξικής ανάλυσης. Αναπτύξτε αναδρομικούς αλγόριθμους ελέγχου σύνταξης χρησιμοποιώντας το σχήμα που δημιουργήσατε στο τρίτο βήμα. Εάν είναι απαραίτητο, εφαρμόστε μηχανισμούς αποκατάστασης σφαλμάτων. Προσθέστε λειτουργικότητα στους αλγόριθμους ανάλυσης για να δημιουργήσετε ένα δέντρο για τον υπολογισμό συναρτήσεων, μεθόδων κλάσης. Με τη σωστή δομή των αλγορίθμων ανάλυσης, αυτή η λειτουργικότητα μπορεί να εφαρμοστεί χωρίς προβλήματα. Αυτό αποφεύγει την ανάγκη εφαρμογής του ως ξεχωριστής ενότητας. Οι δομές δεδομένων που δημιουργήθηκαν θα πρέπει να περιέχουν λίστες οδηγιών με τη μορφή "επίπεδων" ακολουθιών (αριθμητικές εκφράσεις που επεκτείνονται σε μορφή postfix κατάλληλη για υπολογισμό σε μηχανή στοίβας, βρόχους που μετατρέπονται σε συνδυασμούς ακολουθιών υπολογιστικών οδηγιών και άλματα υπό όρους ή άνευ όρων κ.λπ.).

Βήμα 5

Δημιουργήστε μια μονάδα βελτιστοποίησης, εάν χρειάζεται. Θα πρέπει να επεξεργαστεί και να μεταμορφώσει τις δομές δεδομένων που προετοιμάστηκαν στο προηγούμενο βήμα. Οι αλγόριθμοι και οι μέθοδοι βελτιστοποίησης είναι πολύ διαφορετικοί.

Βήμα 6

Αναπτύξτε μια γεννήτρια κώδικα. Κατά την επεξεργασία των δομών που προετοιμάστηκαν στο τέταρτο ή πέμπτο βήμα, θα πρέπει απλώς να μετατρέψει τις ακολουθίες αφηρημένων οδηγιών σε οδηγίες εκτέλεσης σε μια συγκεκριμένη πλατφόρμα.

Βήμα 7

Δημιουργήστε ένα πρόγραμμα συνδέσμου (σύνδεσμος) εάν χρειάζεται. Θα πρέπει να σχηματίσει την προκύπτουσα εκτελέσιμη ενότητα επιλέγοντας τη θέση των τμημάτων κώδικα, υπολογίζοντας τις διευθύνσεις των ετικετών κ.λπ.

Συνιστάται: