From 60bbb6023c5b22c2c35baed7ca42ccafa3ac78ef Mon Sep 17 00:00:00 2001 From: Leopoldo Teixeira Date: Tue, 21 Nov 2023 16:57:14 -0300 Subject: [PATCH] material das aulas de 16 e 21 de Novembro --- 2023-11-16.md | 30 ++++++++++++++++++++++++++++++ 2023-11-21.md | 24 ++++++++++++++++++++++++ README.md | 36 ++++++++++++++++++------------------ 3 files changed, 72 insertions(+), 18 deletions(-) create mode 100644 2023-11-16.md create mode 100644 2023-11-21.md diff --git a/2023-11-16.md b/2023-11-16.md new file mode 100644 index 0000000..e6004f9 --- /dev/null +++ b/2023-11-16.md @@ -0,0 +1,30 @@ +# IF688 - Teoria e Implementação de Linguagens Computacionais + +## Análise Sintática --- Introdução a Bottom-Up Parsing + +### Objetivo + +O objetivo desta aula é introduzir conceitos fundamentais relacionados à _bottom-up parsing_, como _handles_, prefixos viáveis, e análise _shift-reduce_, bem como apresentar como criar *parsers bottom-up* por meio da construção de autômatos de itens LR(0), representando prefixos viáveis. + +### Questões para Discussão + +- Quais as desvantagens de usar gramáticas LL(1)? +- Como funciona um _parser bottom-up_, intuitivamente? +- O que significa reduzir um item a partir de um _handle_? +- Como identificar _handles_, e saber quando reduzir? +- Como construir uma tabela de _parsing_ automaticamente a partir do autômato de itens LR(0)? + +### Vídeos + +- [Análise Sintática - Introdução a Bottom-Up parsing](https://www.youtube.com/watch?v=ZgJXvOUWDXg&list=PLHoVp5NAbKJacS1u8HDoQR6lp8mk6iHwJ) +- [Análise Sintática - Reduções Problemáticas e Handles](https://www.youtube.com/watch?v=oUC3dBsdhfg&list=PLHoVp5NAbKJacS1u8HDoQR6lp8mk6iHwJ&index=2) +- [Análise Sintática - Análise Shift-Reduce](https://www.youtube.com/watch?v=xlYFJzAjl-8&list=PLHoVp5NAbKJacS1u8HDoQR6lp8mk6iHwJ&index=3) +- [Análise Sintática - Prefixos Viáveis](https://www.youtube.com/watch?v=O34N2YQw3ho&list=PLHoVp5NAbKJacS1u8HDoQR6lp8mk6iHwJ&index=4) +- [Análise Sintática - LR(0) parsers](https://www.youtube.com/watch?v=d9QvTiDl9eI&list=PLHoVp5NAbKJacS1u8HDoQR6lp8mk6iHwJ&index=5) +- [Análise Sintática - Construindo tabelas de parsing LR](https://www.youtube.com/watch?v=BBFsBJjkjHo&list=PLHoVp5NAbKJacS1u8HDoQR6lp8mk6iHwJ&index=6) +- [Análise Sintática - Algoritmo de parsing usando tabelas LR](https://www.youtube.com/watch?v=WRLQWO7xg4Y&list=PLHoVp5NAbKJacS1u8HDoQR6lp8mk6iHwJ&index=7) + +### Links Relacionados + +- [Bottom-up Parsing](https://en.wikipedia.org/wiki/Bottom-up_parsing) +- [LR parser](https://en.wikipedia.org/wiki/LR_parser) \ No newline at end of file diff --git a/2023-11-21.md b/2023-11-21.md new file mode 100644 index 0000000..fc5124b --- /dev/null +++ b/2023-11-21.md @@ -0,0 +1,24 @@ +# IF688 - Teoria e Implementação de Linguagens Computacionais + +## Bottom-up Parsing e gramáticas LR(k) + +### Objetivo + +O objetivo desta aula é apresentar os conceitos fundamentais relacionados à parsers LR(1), introduzir o conceito de itens LR(1) na construção de autômatos de prefixos viáveis. + +### Questões para Discussão + +- Que tipos de conflito podem surgir a partir da estratégia LR(0)? +- Como construir autômatos que reconhecem prefixos viáveis, a partir de itens LR(1)? +- Como construir uma tabela de _parsing_ automaticamente a partir do autômato de itens LR(1)? + +### Vídeos + +- [Análise Sintática - Conflitos Shift-Reduce](https://www.youtube.com/watch?v=4pYcDYqrPj8&list=PLHoVp5NAbKJacS1u8HDoQR6lp8mk6iHwJ&index=8) +- [Análise Sintática - LR(1) parsing](https://www.youtube.com/watch?v=07gZ5TxNjD4&list=PLHoVp5NAbKJacS1u8HDoQR6lp8mk6iHwJ&index=9) + +### Links Relacionados + +- [LR(1) Parsing](https://en.wikipedia.org/wiki/Canonical_LR_parser) +- [Practical LR(k) Parser Construction](http://david.tribble.com/text/lrk_parsing.html) +- [DeRemer, Franklin L. (1969). Practical Translators for LR(k) languages (Ph.D.). MIT.](http://publications.csail.mit.edu/lcs/pubs/pdf/MIT-LCS-TR-065.pdf) \ No newline at end of file diff --git a/README.md b/README.md index fec9fb8..02b9aee 100644 --- a/README.md +++ b/README.md @@ -53,7 +53,7 @@ Na disciplina, utilizaremos uma mistura de aulas tradicionais com exercícios e ### Recursos -- [Discord](https://discord.gg/w28mu7H9) +- [Discord](https://discord.gg/cw7CbxfK) - [Google Classroom](https://classroom.google.com/c/NjM0MDYxNTk1NTI3?cjc=fa6nvzx) - Github Classroom - Ver instruções no Google Classroom @@ -83,17 +83,17 @@ Na disciplina, utilizaremos uma mistura de aulas tradicionais com exercícios e | 07.11.23 | Terça | [Análise Sintática Top-Down - Intro](2023-11-07.md) | | | 09.11.23 | Quinta | [Análise Sintática Top-Down - LL(1) Parsing](2023-11-09.md) | | | 14.11.23 | Terça | [Análise Sintática Top-Down - Recursive Descent Parsing](2023-11-14.md) | | -| 16.11.23 | Quinta | Análise Sintática Bottom-Up - Intro | | -| 21.11.23 | Terça | Análise Sintática Bottom-Up - LR(1) Parsing | | +| 16.11.23 | Quinta | [Análise Sintática Bottom-Up - Intro e LR(0)](2023-11-16.md) | | +| 21.11.23 | Terça | [Análise Sintática Bottom-Up - LR(1) Parsing](2023-11-21.md) | | | 23.11.23 | Quinta | Análise Semântica | | | 28.11.23 | Terça | Análise Semântica | | -| 30.11.23 | Quinta | APS | | -| 05.12.23 | Terça | Revisão | | -| 07.12.23 | Quinta | Revisão | | -| 12.12.23 | Terça | **1 Exercício Escolar** | | -| 14.12.23 | Quinta | Representações Intermediárias de Código | | -| 19.12.23 | Terça | Representações Intermediárias de Código | | -| 21.12.23 | Quinta | Análise e Otimização de Código | | +| 30.11.23 | Quinta | APS - Exercícios | | +| 05.12.23 | Terça | APS - Exercícios | | +| 07.12.23 | Quinta | APS - Exercícios | | +| 12.12.23 | Terça | Análise Semântica | | +| 14.12.23 | Quinta | Análise Semântica | | +| 19.12.23 | Terça | **1 Exercício Escolar** | | +| 21.12.23 | Quinta | APS - Exercícios | | | 26.12.23 | Terça | **Recesso Escolar** | --- | | 28.12.23 | Quinta | **Recesso Escolar** | --- | | 02.01.24 | Terça | **Recesso Escolar** | --- | @@ -104,16 +104,16 @@ Na disciplina, utilizaremos uma mistura de aulas tradicionais com exercícios e | 18.01.24 | Quinta | **Recesso Escolar** | --- | | 23.01.24 | Terça | **Recesso Escolar** | --- | | 25.01.24 | Quinta | **Recesso Escolar** | --- | -| 30.01.24 | Terça | Análise e Otimização de Código | | -| 01.02.24 | Quinta | Análise e Otimização de Código | | -| 06.02.24 | Terça | Análise e Otimização de Código | | +| 30.01.24 | Terça | Representação Intermediária de Código | | +| 01.02.24 | Quinta | Representação Intermediária de Código | | +| 06.02.24 | Terça | APS | | | 08.02.24 | Quinta | APS | | | 13.02.24 | Terça | **CARNAVAL** | | -| 15.02.24 | Quinta | Ambientes de Execução | | -| 20.02.24 | Terça | Ambientes de Execução | | -| 22.02.24 | Quinta | Ambientes de Execução | | -| 27.02.24 | Terça | Geração de Código | | -| 29.02.24 | Quinta | Geração de Código | | +| 15.02.24 | Quinta | Análise e Otimização de Código | | +| 20.02.24 | Terça | Análise e Otimização de Código | | +| 22.02.24 | Quinta | Análise e Otimização de Código | | +| 27.02.24 | Terça | Ambientes de Execução | | +| 29.02.24 | Quinta | Ambientes de Execução | | | 05.03.24 | Terça | Geração de Código | | | 07.03.24 | Quinta | Geração de Código | | | 12.03.24 | Terça | Revisão | |