Για να δημιουργήσετε έναν διερμηνέα, πρέπει να γράψετε έναν αναλυτή πηγαίου κώδικα, έναν βρόχο εκτέλεσης bytecode και ένα τεράστιο ποσό τυπικού κώδικα βιβλιοθήκης. Δεν είναι πάντα διασκεδαστικό και εύκολο εάν δεν χρησιμοποιείτε τα εργαλεία που θα δημιουργήσει ο μεταγλωττιστής και ο αναλυτής για εσάς. Μαζί τους, θα είναι τόσο εύκολο όσο το ξεφλουδίζοντας αχλάδια να γράψετε έναν διερμηνέα γλωσσών για ένα άτομο με γνώσεις. Ας δούμε ένα παράδειγμα γραφής διερμηνέα με JIT στο PyPy.
Οδηγίες
Βήμα 1
Επιλέξτε μια γλώσσα για γραφή. Σε αυτήν την περίπτωση, είναι μυαλό. Είναι πολύ απλό και αποτελείται από μια ταινία ακεραίων, που αρχικοποιούνται στο μηδέν, και 1 δείκτη στο τρέχον κελί της κασέτας. Υπάρχουν μόνο οκτώ εντολές στη γλώσσα: ">" - μετακινήστε το δείκτη στο επόμενο κελί,"
Βήμα 2
Γράψτε έναν διερμηνέα στην απλή Python. Ο μετρητής εντολών θα αποθηκεύσει δείκτες στην τρέχουσα οδηγία. Η πρώτη έκφραση θα ανακτήσει τη δήλωση, μετά την οποία πολλές δηλώσεις καθορίζουν τον τρόπο εκτέλεσης της. Παραλείψτε την εφαρμογή των τελεστών "[" και "]", καθώς πρέπει να αλλάξουν τον μετρητή εντολών στη θέση της ίδιας παρένθεσης.
Βήμα 3
Εφαρμόστε μια τάξη κασέτας που αποθηκεύει έναν δείκτη στον τρέχοντα αριθμό και μια κασέτα ακέραιων αριθμών. Η ταινία θα μεγαλώσει όπως απαιτείται. Αναλύστε τον πηγαίο κώδικα εκ των προτέρων, ώστε να μην διαβάζονται πολλά σχόλια ένα byte τη φορά. Δημιουργήστε επίσης ένα λεξικό παρένθεσης, ώστε να μπορείτε να βρείτε αντίστοιχες παρενθέσεις σε αυτό, εάν χρειάζεται.
Βήμα 4
Εκτελέστε def parse (πρόγραμμα). Αυτή η συνάρτηση επιστρέφει συμβολοσειρές μόνο από εντολές και το λεξικό παρένθεσης.
Βήμα 5
Συγκεντρώστε τα πάντα και έχετε έναν διερμηνέα που λειτουργεί καλά. Ξεκινήστε τον διερμηνέα Python και βεβαιωθείτε ότι λειτουργεί. Πρόκειται για ένα μόνο παράδειγμα γραφής διερμηνέα χρησιμοποιώντας την απλούστερη γλώσσα. Εάν θέλετε, μπορείτε να γράψετε σε σχεδόν οποιαδήποτε γλώσσα, έχοντας εξοικειωθεί με τις ιδιότητες και το σκοπό της.