Prima di iniziare questo viaggio per cercare di imparare l’informatica, c’erano certi termini e frasi che mi facevano venir voglia di scappare nella direzione opposta.
Ma invece di scappare, fingevo di conoscerli, annuendo nelle conversazioni, fingendo di sapere a cosa qualcuno si stesse riferendo anche se la verità era che non ne avevo idea e avevo smesso completamente di ascoltare quando avevo sentito quel Super Scary Computer Science Term™. Nel corso di questa serie, sono riuscito a coprire un sacco di terreno e molti di questi termini sono effettivamente diventati molto meno spaventosi!
C’è uno grande, però, che ho evitato per un po’. Fino ad ora, ogni volta che ho sentito questo termine, mi sono sentito paralizzato. È venuto fuori in conversazioni casuali in incontri e a volte in conferenze. Ogni volta, penso alle macchine che girano e ai computer che sputano fuori stringhe di codice che sono indecifrabili, tranne per il fatto che tutti gli altri intorno a me possono effettivamente decifrarli, quindi in realtà sono solo io che non so cosa sta succedendo (whoops come è successo?!).
Forse non sono l’unico che si è sentito così. Ma suppongo che dovrei dirvi cos’è questo termine, giusto? Beh, preparatevi, perché mi sto riferendo al sempre sfuggente e apparentemente confuso albero della sintassi astratta, o AST in breve. Dopo molti anni di intimidazione, sono entusiasta di poter finalmente smettere di avere paura di questo termine e di capire veramente di cosa diavolo si tratta.
È ora di affrontare a testa alta la radice dell’albero della sintassi astratta – e migliorare il nostro gioco di parsing!
Ogni buona ricerca inizia con una solida base, e la nostra missione di demistificare questa struttura dovrebbe iniziare esattamente allo stesso modo: con una definizione, ovviamente!
Un albero di sintassi astratto (di solito chiamato semplicemente AST) non è altro che una versione semplificata e condensata di un albero di analisi. Nel contesto della progettazione di compilatori, il termine “AST” è usato in modo intercambiabile con albero di sintassi.