Programa | 1. Gramáticas de Atributos (GA) como instrumento de especificação formal da semântica: introdução do conceito, sua formalização e uso; abordagens ao cálculo dos atributos, concorrência e cálculo incremental; visão da GA como suporte à geração automática de Processadores de Linguagens. 2. Qualidade de Linguagens e Gramáticas, caraterização e interligação. 3. Design-patterns e recurso ao padrão dos 'Visitors' para especificar e desenvolver Processadores de Linguagens. 4. Análise estática e dinâmica de código para compreensão ou deteção de anomalias. 5. Paradigmas para visualização de programas. 6. Transformação de programas. |
Bibliografia | P.R. Henriques, "Brincando às Linguagens com rigor: Engenharia Gramatical". UM, 2012. P.R. Henriques, "Atributos e Modularidade na Especificação de Linguagens Formais''. PhD thesis, UM, 1992. P. Deransart, M. Jourdan, and B. Lorho, "Attribute grammars: Main results, existing systems and bibliography''. LNCS 341. Springer-Verlag, 1988. A. van Deursen and P. Klint, "Little languages: Little maintenance?''. Journal of Software Maintenance, 1998. C.A.R. Hoare, "Hints on programming language design''. Technical Report CS-TR-73-403, Stanford Univ, 1973. |
Resultados da aprendizagem | - Desenvolver especificações formais da sintaxe/semântica de linguagens com gramáticas de atributos; - Analisar e discutir a qualidade de linguagens de programação e de gramáticas; - Gerar programas (processadores de linguagens) usando ferramentas automáticas baseadas em gramáticas de atributos e na estratégia do padrão designado por ‘visitors’; - Conceber e implementar estruturas de dados complexas (tabelas de mapeamento, árvores e grafos) para representação intermédia da informação extraída da análise do código; - Criar representações visuais adequadas à compreensão clara do conhecimento complexo extraído dos programas; - Desenvolver software como uma tarefa de transformação de programas e/ou especificações em implementações eficientes; - Desenvolver ferramentas para ajuda à compreensão de código com vista à sua otimização, ou deteção de vulnerabilidades. |
Método de avaliação | A avaliação envolve: um trabalho experimental, a realizar em grupo, com peso 30% ; uma prova teórica individual, com peso 60%; e informação relativa à participação nas aulas, a pesar 10%. Todas as partes são obrigatórias e a média deve ser maior ou igual a 10. |