Un linguaggio di programmazione ispirato alle canzoni indie italiane
Pyndie è progettato per funzionare su Python 3.8.10.
Per usarlo scarica ed estrai il file .zip oppure clona il repository digitando
git clone https://github.com/Eleirbag89/pyndie.git
Aggiungi la cartella di Pyndie al PATH
usando uno dei due comandi seguenti (su Linux)
- Temporaneo: Scrivi
export PATH=$PATH:/path/to/Pyndie
nel terminale. - Permanente: Aggiungi
export PATH=$PATH:/path/to/Pyndie
alla fine del tuo file~/.bashrc
.
- Scrivi un file pyndie usando l'opportuna sintassi.
- Esegui
pyndie /path/to/pyndie/file
- PROFIT!
Visitando il sito pyndie.grimstack.xyz è possibile scrivere ed eseguire programmi direttamente dal proprio browser.
La funzionalità è sperimentale, aggiunta in fretta e furia in vista di un evento, pertanto al momento è mal documentata e probabilmente buggata 🦖
Per esegurlo in locale è necessario che il file index.html sia servito da un webserver. Python offre un webserver "out of the box".
Per eseguirlo è sufficiente aprire un terminale nella cartella contente l'eseguibile di Pyndie e lanciare
python -m http.server
Pyndie include diverse funzionalità perfette per ogni aspirante cantane indie:
- Ogni programma deve contenere il nome di una città.
- Le istruzioni sono progettate per essere dei tormentoni orecchiabili.
- Il linguaggio è case insensitive per permettere la massima libertà.
La grammatica nasce dopo anni di studio e ascolto, siamo riusciti a distillare l'essenza dell'indie italiano. Ecco come puoi essere anche tu l'idolo degli hipster alternativi
Operatori Aritmetici:
più
fa la sommameno
fa la sottrazioneper
fa la moltiplicazionediviso
fa la divisioneMODULE
fa il modulo
MODULE può assumere i seguenti valori:divisibile|resto|resta
Operatori Logici:
non
not booleanoo
or booleanoe
and booleanoCOMPARATOR
operatore di uguaglianzaminore
indicapiù piccolo di
maggiore
indicapiù grande di
COMPARATOR può assumere i seguenti valori:sembra|sembri|sembriamo|sembrate|sembro
Numeri
- Farmacologici: DRUG NUMBER
dove DRUG è un farmaco fraparacetamolo|tachipirina|aulin|oki
e NUMBER un numero intero - Poetici: formati da una sequenza di parole.
Il numero risultante è la concatenazione della lunghezza modulo 10 di ogni parola, gli articoli sono ignorati
Variabili:
- Puoi usare tutti gli spazi che vuoi per il nome delle tue variabili
- vai a capo per differenziare due variabili consecutive
- Puoi effettuare un assegnamento così:
variabile EQUALS espressione
- Le stringhe sono racchiuse da doppi apici
"Stringa"
EQUALS può assumere i seguenti valori:è|sono|sei|siete|siamo|ero|eri|era|eravamo|eravate
Controllo del flusso
- Per creare un costrutto IF:
variabile OPERATORE espressione ? istruzioni [ELSE istruzioni] HEY
OPERATORE è uno qualunque degli operatori logici. mentre ELSE può assumere i valoriinvece|altrimenti
- Per un ciclo while:
WHILE boolean_expression DO statements HEY
WHILE può assumere i valorifinché|finchè
mentre DOfaccio|fate|facciamo
Funzioni
- Definire una funzione usando:
SAI CHE EQUALS variable AS params HEY statements OH
- Richiamare una funzione usando:
CALL variable CHE EQUALS params_actual !
- Far ritornare un valore ad una funzione:
dammi valore
Input/Output
- Stampare sullo schermo;
PRINT espressione
PRINT può assumere i seguenti valori:sussurra|gridavate|gridava|gridavi|gridavano|grido|grida|sussurravate|sussurravi|sussurrava|sussurra|sussurro
Terminare un'istruzione
- Nel caso di ambiguita nella fine di un'istruzione è possibile usare il carattere
.
dammi una abbindolata hey
dammi l'aria per ricordare bella che è l'aria meno Albuquerque! oh
mi sussurrava ricorda la bella che è sparita!
Questo codice definisce una funzione chiamata "bella" che calcola il fattoriale di 7 in maniera ricorsiva.
Sentiti libero di contribuire al progetto con commit, idee, suggerimenti.
Apri delle issue per suggerire delle modifiche alla sintassi o proporre nuove funzionalità.
Le PR sono sempre ben accette, però cerca di mantenerle il più pulite possibile :-)
Puoi contribuire anche scrivendo del codice Pyndie e arricchendo la nostra galleria di esempi.