Qualche tempo fa sono stato contattato dal creatore di un nuovo progetto per un linguaggio di programmazione libero sotto licenza GPL. Esso si chiama Hybris, e potete raggiungere l’homepage del progetto a questo indirizzo. Le caratteristiche mi sono state descritte così come ve le riporto:
Il progetto, chiamato Hybris, consiste in un linguaggio di scripting procedurale e typeless, ovvero un linguaggio che non richiede la dichiarazione esplicita del tipo di una variabile ma capisce come trattare la variabile in questione in base al valore con il quale viene inizializzata.
La grammatica e il set di funzionalità integrate sono state realizzate con tre soli scopi, scopi che riassumono abbastanza bene il target qualitativo del progetto:
- Eliminare le caratteristiche inutili delle grammatiche fin’ora esistenti per ottenere uno stile pulito, intuitivo e soprattutto che non comporti inutili sprechi di tempo per la scrittura del codice.
- Includere quelle funzionalità che, benché non siano incluse nei “core” degli altri linguaggi, son diventate per qualità e/o per necessità lo “stato dell’arte” nel mondo della programmazione.
- Mantenere una certa interazione a basso livello con il sistema operativo per fornire un linguaggio che, se pur di scripting ed estremamente astratto, abbia potenzialità simili e a volte analoghe a linguaggi compilati di basso livello.
Dato che esiste da diversi mesi, si tratta di un lavoro abbastanza maturo. L’interesse dell’autore è quello di avere programmatori che abbiamo voglia di provare questo linguaggio per poter segnalare eventuali bug o suggerimenti su migliorie da apportare. Io consiglio a chi è interessato di darci un’occhiata perché non sembra affatto male, specialmente la pagina degli esempi.


















Inutile dire che penso che Hybris sia un gran bel nome per un progetto del genere. Grande
Ma no, non è inutile.
Dillo pure.
la domanda che mi faccio io invece è “come si inventa un linguaggio di programmazione?”, si decide quale sia la nuova sintassi e poi si scrive un compilatore?
boh, non ho mai capito.
ma è una cosa che mi ha incuriosito da sempre.
Credo sia più o meno come hai detto tu.
In questo caso non si scrive il compilatore, si scrive l’interprete
Eccomiiiiiiiiii!!! Wow solo ora trovo questo post sul mio progetto ^^
Per rispondere a scimmia :
Prima si scrive un cosìddetto lexer (o scanner) che, partendo da un file di testo contenente il codice del linguaggio, suddivide e classifica ogni “parola” in base a delle regole conosciute come espressioni regolari.
Successivamente, si confronta ogni possibile seguenza di parole chiave con delle seguenze prestabilite, chiamate abstract syntaxt tree, che rappresentano la vera e propria sintassi del linguaggio.
Quando si trova un “match” per una determinata regola, la si esegue ricorsivamente, spezzettandola quando possibile in sotto regole più piccole.
Questo è quanto … spero di esser stato chiaro XD
PS: Per XXX :
In realtà scrivere un interprete o un compilatore non sono cose molto diverse, il compilatore fa la stessa cosa dell’interprete, ma quando trova un match su una regola invece di eseguirla direttamente la compila in codice binario.