Polygen-PHP

Nome progetto: Polygen-PHP
Anni: 2016-2020
Linguaggio: PHP
Stato: Rilasciato
Sorgenti: https://github.com/RBastianini/polygen-php
Indirizzo: https://packagist.org/packages/rb/polygen-php

Quando ero alle superiori in qualche modo scoprii l'esistenza di Polygen. Non saprei davvero dire come. Polygen era uno strumento in grado di processare dei file che definivano delle "strutture di frasi" dette grammatiche e che era in grado di seguire le regole in esse descritte per generare delle frasi in modo più o meno casuale, combinando i pezzi delle frasi presenti nella grammatica.

Potremmo definirlo un generatore di frasi casuali, anche se è un po' riduttivo. Ovviamente, quando lo scoprii ero in grado di capire molto meno di un decimo delle parole presenti nella guida, ma sono sempre stato molto affascinato dal suo funzionamento. In generale, gli interpreti e compilatori mi hanno sempre incuriosito, e questo aveva uno scopo molto frivolo, per cui era perfetto per essere usato anche da qualcuno che ancora di programmazione e di compilatori ne sapeva effettivamente quasi niente.

Molti anni dopo, trovandomi ad avere spesso dei fine settimana liberi, decisi di provare a scrivere un'implementazione di Polygen in PHP, così da poterlo finalmente utilizzare nel mio sito web, cosa che ho spesso sognato di fare negli anni, ma trattandosi di un eseguibile scritto in OCaml, praticamente nessun hosting gratuito permetteva di farlo.

Esisteva un'alternativa, con un nome molto simile, la quale in realtà si limitava a fare chiamate http verso il sito ufficiale di polygen, tramite il quale era possibile ottenere i risultati della generazione di frasi delle grammatiche su di esso caricate... Non era affatto la stessa cosa.

Scrivere un interprete non è facile, ma ho deciso di farlo leggendo guide qua e la e guardando come librerie scritte da gente più esperta di me affrontavano certi problemi (ma non prima di aver passato qualche pomeriggio a cercare di risolverlo per conto mio, cosa che in diverse situazioni mi riusciva pure di fare).

Ho deciso così di applicare un po' delle buone pratiche di programmazione PHP apprese durante gli anni, scrivere buon codice, commentarlo dove serve, aggiungere copiosi test, ed avere una pipeline che eseguisse i test automaticamente erano alcuni dei miei obiettivi e devo dire di essere riuscito a raggiungerli.

Molto del merito va al lockdown di primavera 2020, momento in cui ho deciso di riprendere in mano il progetto e fare il 60%-70% di lavoro che rimaneva per avere piena compatibilità con le grammatiche del Polygen originale (e qualche piccolo extra come il supporto unicode). Il pacchetto è disponibile per l'installazione tramite composer e finalmente posso realizzare il mio sogno di adolescente di averne un pezzo incluso nel mio sito. :)

Salve egregio Riccardo del remoto passato, non aver paura: troverai la felicità, realizzando un porting del Polygen per PHP.

S ::= ">" \ Saluto QualificatorePrima Sottoscritto QualificatoreDopo
    ^ "," Rassicurazione ^ ":" Profezia ^"," realizzando un porting
    del \polygen per "PHP.";

Saluto ::= salve | ossequi | ciao;
QualificatorePrima ::= stimato
    | egregio
    | car ^ [issim] ^ o
    | esimio
    | giovane;
Sottoscritto ::= me [medesimo|stesso]
    | sottoscritto
    | alter ego
    | \ riccardo | autore;
QualificatoreDopo ::= del [remoto] passato
    | dei tempi (che furono|antichi|remoti);
Rassicurazione ::= non (aver paura | temere)
    | stai (pur certo | tranquillo | sereno);
Profezia ::= riuscirai nel tuo intento
    | troverai la "felicità"
    | raggiungerai (il tuo obiettivo | la consapevolezza);