Per i programmi che leggono nel codice sorgente, trasforma quel codice sorgente e poi riscrivi il codice sorgente trasformato in modo che possa essere letto e modificato dagli esseri umani, che tipo di strutture dati sono tipicamente usate per rappresentare il codice sorgente con i suoi dettagli testuali? Esiste una struttura dati "da manuale" standard per questo? (ad esempio qualcosa di analogo all'AST per un'analisi più tradizionale)
Alcuni esempi dei tipi di programmi che ho in mente sono i molti strumenti basati su clang per trasformare C e C ++, gli strumenti Python per tradurre Python 2 in Python 3 ei molti strumenti per trasformare Go.
Credo che la risposta potrebbe essere semplice come un AST con extra-dati (ad esempio spazi bianchi, parentesi) sui nodi non foglia, ma non sono sicuro. Sembra che potrebbe essere più complicato dal momento che la struttura deve negoziare la tensione tra il mantenimento dei dettagli testuali e la possibilità di trasformazioni di codice sorgente di alto livello.