Ficha Unidade Curricular (FUC)
Informação Geral / General Information
Carga Horária / Course Load
Área científica / Scientific area
Ciências e Tecnologias da Programação
Departamento / Department
Departamento de Ciências e Tecnologias da Informação
Ano letivo / Execution Year
2025/2026
Pré-requisitos / Pre-Requisites
Algoritmos e Estruturas de Dados Programação Orientada para Objetos
Objetivos Gerais / Objectives
Abordar a engenharia de linguagens de programação utilizando métodos e ferramentas atuais, nas perspectivas de interpretação e compilação.
Objetivos de Aprendizagem e a sua compatibilidade com o método de ensino (conhecimentos, aptidões e competências a desenvolver pelos estudantes) / Learning outcomes
OA1. Saber definir e validar a sintaxe de uma linguagem estruturada. OA2. Saber manipular árvores de sintaxe abstrata. OA3. Saber concretizar uma linguagem de programação elementar.
Conteúdos Programáticos / Syllabus
CP1. Expressões regulares e tokenização. CP2. Gramáticas livres de contexto e formalismo Backus-Naur (EBNF). CP3. Geradores de parsers e árvores de sintaxe abstrata (AST). CP4. Interpretadores de AST e análise semântica. CP5. Geração de código máquina.
Demonstração da coerência dos conteúdos programáticos com os objetivos de aprendizagem da UC / Evidence that the curricular unit's content dovetails with the specified learning outcomes
OA1 associado a: - CP1 referente ao domínio de uma técnica de tokenização - CP2 referente ao domínio de um formalismo de gramáticas - CP3 referente à utilização de uma tecnologia para construção de parsers OA2 associado a: - CP3 referente à utilização de uma tecnologia para obtenção de ASTs - CP4 referente ao domínio de manipulação de ASTs OA3 associado a: - CP1 referente ao domínio de uma técnica de tokenização - CP2 referente ao domínio de um formalismo de gramáticas - CP3 referente à utilização de uma tecnologia para construção de parsers - CP4 referente à concretização de interpretadores - CP5 referente à concretização de compiladores
Avaliação / Assessment
Avaliação ao longo do semestre: Teste (50%), a entregar no final do semestre Projeto (50%), a entregar e defender durante o período de avaliação (época de exames) Não é possível ser aprovado na UC sem realizar o Projeto, não existindo a possibilidade de avaliação por Exame para 100%. A avaliação em Época Especial consiste na entrega e discussão do Projeto, sendo obrigatório que o mesmo tenha sido iniciado e acompanhado pelo docente durante o período letivo.
Metodologias de Ensino / Teaching methodologies
A UC tem apenas uma tipologia de aulas: prática e laboratorial (PL). Aulas práticas e laboratoriais (PL) - 36h HTC - em blocos de 3h. Primeira parte da aula (aprox. 1h) expositiva onde as matérias relevantes para os exercícios são expostas num estilo demonstrativo. Segunda parte da aula (aprox. 2h) focada na resolução de exercícios, recorrendo às matérias introduzidas na primeira parte. Trabalho autónomo (TA) - resolução dos exercícios disponibilizados nas fichas práticas que não foram concluídos em aula; desenvolvimento do projeto.
Demonstração da coerência das metodologias de ensino e avaliação com os objetivos de aprendizagem da UC / Evidence that the teaching and assessment methodologies are appropriate for the learning outcomes
O alinhamento entre as metodologias de ensino e avaliação e os objetivos de aprendizagem definidos para a UC é realizado da seguinte forma: OA1-OA3 - Aulas práticas e laboratoriais (PL) - Projeto / Teste OA1-OA3 - Trabalho autónomo (TA) - Projeto / Teste O projeto a ser realizado na avaliação ao longo do semestre abrange todos os conteúdos programáticos da UC e os objetivos de aprendizagem, ficando o estudante em plena posse dos conhecimentos mais importantes lecionados nesta UC.
Observações / Observations
.
Bibliografia Principal / Main Bibliography
Martin Fowler, Domain-Specific Languages, Addison-Wesley Signature Series (Fowler), 2010.
Bibliografia Secundária / Secondary Bibliography
Terrence Parr, The Definitive ANTLR 4 Reference (2nd Edition), Pragmatic Bookshelf, 2013.
Data da última atualização / Last Update Date
2025-07-17