Diario delle lezioni

  1. 10/3/11. Presentazione del corso. Le fasi della compilazione.
  2. 13/3/11. L'analisi lessicale. Espressioni regolari. Automi finiti deterministici e non.
  3. 17/3/11. Osservazioni sulla generazione automatica di analizzatori lessicali.
  4. 21/3/11. Grammatiche context-free. Derivazioni ed alberi di derivazione. Grammatiche ambigue.
  5. 28/3/11. Algoritmi di parsing. Introduzione alle famiglie LL ed LR. Associatività e precedenza nelle espressioni aritmetiche.
  6. 31/3/11. Parsing shift-reduce. Item LR(0), base e chiusura.
  7. 4/4/11. L'algoritmo LR(0). Conflitti shift-reduce.
  8. 7/4/11. Il potere espressivo della famiglia LR(k).
  9. 11/4/11. Parsing top-down: l'algoritmo LL. Implementazione recursive descent.
  10. 14/4/11. Calcolo dei "predict set". Funzioni ausiliarie EPS, FIRST e FOLLOW.
  11. 18/4/11. Introduzione al tool ANTLR.
  12. 28/4/11. L'algoritmo di parsing LL(*).
  13. 2/5/11. Limiti dell'algoritmo LL(*). Gestione delle ambiguità lessicali e sintattiche con ANTLR.
  14. 5/5/11. I predicati sintattici con ANTLR.
  15. 9/5/11. Regole complesse con ANTLR. Esercitazione.
  16. 12/5/11. I predicati semantici di disambiguazione.
  17. 16/5/11. Esercitazione.
  18. 19/5/11. Opzioni di output di ANTLR. I template e la libreria StringTemplate. Grammatiche composite e loro architettura.
  19. 23/5/11. Esercitazione.
  20. 26/5/11. Creazione di alberi sintattici: forma implicita (operatori ! e ^) e forma esplicita (rewrite rules).
  21. 30/5/11. Creazione di alberi sintattici: operatori estesi. Esercitazione.
  22. 6/6/11. Esercitazione.
  23. 9/6/11. Grammatiche su alberi. Esercitazione.
  24. 13/6/11. Gestione degli errori. Tecniche di error recovery. Esercitazione. Discussione progetto.