Anno: 2022
Durata: 3 ore
Istruzioni:
Tutte le domande sono obbligatorie.
Tutte le domande portano lo stesso punteggio.
Sezione 1:
Descrivere la gerarchia di Chomsky con riferimento agli automi finiti, agli automi pushdown e alle macchine di Turing.
Fornire una breve panoramica delle principali funzioni e componenti di un analizzatore lessicale.
Discutere le varie tecniche di analisi utilizzate nei compilatori, prestando particolare attenzione ai metodi di analisi top-down e bottom-up.
Spiegare con esempi rilevanti il concetto di grammatiche attribuite a L e attribuite a S.
Illustrare come la rappresentazione intermedia gioca un ruolo cruciale nel processo di compilazione.
Sezione 2:
Progettare un analizzatore lessicale per identificare identificatori e parole chiave in un linguaggio di programmazione.
Scrivi un'espressione regolare per verificare la presenza di indirizzi email validi.
Spiegare come un compilatore esegue il controllo del tipo e le conversioni del tipo di dati.
Costruisci una tabella di analisi LR(0) per una data grammatica.
Sviluppare un algoritmo per costruire grafici di flusso di controllo per una rappresentazione intermedia.
Sezione 3:
Fornire una panoramica dei diversi tipi di tecniche di ottimizzazione del codice eseguite durante la compilazione.
Discuti l'importanza e le sfide della generazione di codice macchina efficiente.
Spiegare i concetti di allocazione delle variabili locali, codice di spill e allocazione dei registri nel contesto della generazione del codice.
Evidenzia i compromessi tra l'ottimizzazione dello spazio o della velocità durante la generazione del codice.
Scrivi brevi note su quanto segue:
Piegatura del codice
Controllare l'appiattimento del flusso
Eliminazione del codice morto
Svolgimento del ciclo
Assegnazione del registro
Buona fortuna!
Programmazione © www.354353.com