L'analisi al contrario è generazione del codice .
Pensa a un compilatore come traduttore: in primo luogo, analizza di solito una struttura di dati intermedia (spesso un albero), quindi cammina su quella struttura di dati intermedia che genera codice per un'altra lingua, a volte come output testuale. Essenzialmente la generazione del codice è l'opposto dell'analisi.
La lingua di output di un compilatore è solitamente più primitiva (cioè codice byte, assembly o codice macchina), ma può anche essere facilmente un altro linguaggio di alto livello.
Vedi, ad esempio, compilatore di chiusura di google (input JavaScript, output JavaScript). Oppure TypeScript, che prende l'input TypeScript per l'output di JavaScript.
Quindi, dovresti provare a codificare il tuo contenuto come un albero e impiegare tecniche di generazione del codice. Oppure codifica come testo e utilizza tecniche di traduzione (analizza il testo in ingresso, genera output di testo).
La traduzione può essere fatta per molte ragioni. Ad esempio, nei primi tempi, diverse implementazioni SQL avevano in realtà una precedenza di operatore diversa! Quindi, la traduzione della tecnologia del compilatore è stata impiegata per prendere SQL scritto per un fornitore e tradurre in SQL completamente tra parentesi per usarlo con un altro.