Υλοποίησε έναν αξιολογητή για ένα πολύ απλό υποσύνολο της Forth.
Forth είναι μια γλώσσα προγραμματισμού βασισμένη σε στοίβα. Υλοποίησε έναν πολύ βασικό αξιολογητή για ένα μικρό υποσύνολο της Forth.
Ο αξιολογητής σου πρέπει να υποστηρίζει τις παρακάτω λέξεις:
+, -, *, / (ακέραια αριθμητική)DUP, DROP, SWAP, OVER (χειρισμός στοίβας)Ο αξιολογητής σου πρέπει επίσης να υποστηρίζει τον ορισμό νέων λέξεων χρησιμοποιώντας τη συνηθισμένη σύνταξη: : word-name definition ;.
Για να κρατήσουμε τα πράγματα απλά, ο μόνος τύπος δεδομένων που χρειάζεται να υποστηρίξεις είναι οι προσημασμένοι ακέραιοι μεγέθους τουλάχιστον 16 bit.
Πρέπει να χρησιμοποιήσεις τους παρακάτω κανόνες για τη σύνταξη: ένας αριθμός είναι μια ακολουθία από ένα ή περισσότερα ψηφία (ASCII), και μια λέξη είναι μια ακολουθία από ένα ή περισσότερα γράμματα, ψηφία, σύμβολα ή σημεία στίξης που δεν είναι αριθμός. (Η Forth χρησιμοποιεί πιθανώς ελαφρώς διαφορετικούς κανόνες, αλλά αυτό είναι αρκετά κοντά.)
Οι λέξεις δεν κάνουν διάκριση πεζών-κεφαλαίων.
Για να ολοκληρώσεις αυτή την άσκηση, πρέπει να δημιουργήσεις τον τύπο δεδομένων ForthState
και να υλοποιήσεις τις παρακάτω συναρτήσεις:
emptyState επιστρέφει ένα κενό ForthState.evalText αξιολογεί ένα Text εισόδου και επιστρέφει τη νέα κατάσταση.toList επιστρέφει την τρέχουσα στοίβα ως λίστα, με το στοιχείο στην κορυφή
της στοίβας να είναι το πιο δεξιά (τελευταίο) στοιχείο.Θα βρεις μια εικονική δήλωση δεδομένων και τις υπογραφές τύπων ήδη στη θέση τους, αλλά εξαρτάται από εσένα να ορίσεις τις συναρτήσεις και να δημιουργήσεις έναν ουσιαστικό τύπο δεδομένων, newtype ή συνώνυμο τύπου.
Γράψου στο Exercism για να μάθεις και να κατακτήσεις Haskell με 107 ασκήσεις και πραγματική καθοδήγηση από ανθρώπους, όλα δωρεάν.