Implementa un valutatore per un sottoinsieme molto semplice di Forth.
Forth è un linguaggio di programmazione basato sullo stack. Implementa un valutatore di base per un piccolo sottoinsieme di Forth.
Il valutatore deve supportare le seguenti parole:
+, -, *, / (aritmetica con numeri interi)DUP, DROP, SWAP, OVER (manipolazione dello stack)Il valutatore deve anche supportare la definizione di nuove parole usando la sintassi abituale: : word-name definition ;.
Per mantenere le cose semplici, l'unico tipo di dato che devi supportare sono i numeri interi con segno di almeno 16 bit.
Per la sintassi, usa le seguenti regole: un numero è una sequenza di una o più cifre (ASCII), una parola è una sequenza di una o più lettere, cifre, simboli o segni di punteggiatura che non sia un numero. (Probabilmente Forth usa regole leggermente diverse, ma queste sono abbastanza vicine.)
Le parole non distinguono maiuscole e minuscole.
Per completare questo esercizio, devi creare il tipo di dato ForthState
e implementare le seguenti funzioni:
emptyState restituisce un ForthState vuoto.evalText valuta un Text di input, restituendo il nuovo stato.toList restituisce la pila corrente come array, con l'elemento in cima
alla pila che è l'elemento più a destra (l'ultimo).Troverai una dichiarazione di dati fittizia e le firme dei tipi già presenti, ma sta a te definire le funzioni e creare un tipo di dato significativo, un newtype o un sinonimo di tipo.
Iscriviti a Exercism per imparare e padroneggiare Haskell con 107 esercizi e il mentoring di persone reali, tutto gratis.