LITTLE è un piccolissimo linguaggio di programmazione imperativo interpretato che ho sviluppato per un esame universitario. Un esempio di programma LITTLE è il seguente:
program gcd
# Calcola l'MCD di due interi
begin
input a
input b
while a <> b begin
if a > b begin
a = a - b
end else begin
b = b - a
end
end
gcd = a
output gcd
end
Il linguaggio è fin troppo semplice in quanto prevede soltanto un tipo di dati (numeri interi) e non consente la scomposizione funzionale. A livello di implementazione non ho usato l’Abstract Syntax Tree, cosa che già durante la realizzazione del ciclo While ha mostrato i suoi pesanti limiti.
L’unica particolarità degna di nota è che LITTLE è il mio primo (ed unico!) lavoro di Literate Programming: sia il codice C++ che la documentazione LaTeX si trovano nel medesimo file little.w. Un particolare programma, nuweb, si occupa di creare rispettivamente un file LaTeX con la documentazione dei sorgenti ed un file C++ con i sorgenti del programma stesso.
Il programma nuweb è incluso all’interno del pacchetto, quindi per creare la documentazione e l’eseguibile di LITTLE è sufficiente un make.
NOTA: durante lo sviluppo di LITTLE ho seguito, molto vagamente, questo fantastico tutorial di Jack Crenshaw; sebbene sia datato è una lettura estremamente piacevole, consigliata a tutti gli anglofoni cui interessano i compilatori!