Engenharia Gramatical
Fichas teórico-práticas para avaliação contínua
Ficha 1 (2011.11.21):
Considere novamente o processador da Lista de Elementos Mistos (palavras e inteiros), apresentada como Exemplo 5.
Pretende-se que altera a sua GA de modo a calcular o somatório de cada sub-sequência de inteiros que surja a seguir a uma sub-sequência de palavras com 3 ou mais palavras.
Por exemplo, dada a frase "a b 1 1 1 1 c d e f 2 2 g h 3 3 3 i j k l m 4 4 4 4" daria como resultado: 4 e 16.
Cada grupo deve: elaborar uma sucinto relatório de desenvolvimento (em LaTeX) descrevendo a forma como resolveu
o exercício (em papel e em VisualLisa). Um dos grupos será escolhido para apresentação para a Turma. Dispõe de 1 semana para fazer este TPC.
Ficha 2 (2011.12.04):
Para efeitos de avaliação prática, devem terminar o exercício iniciado nas aulas (Exemplo 4, Genea) e
entregar individualmente todo o problema proposto resolvido e implementado em AnTLR.
Ficha 3 (2012.01.23):
Consideremos um pequeno robot usado para aspirar uma área de forma retangular. Esta área é conhecida pelo robot de modo limitar o seu raio de ação (Nota: o robot é colocado inicialmente nas coordenadas (0,0), i.e. no centro, mas pode prever a sua colocação noutra posição no interior da área de ação).
O robot pode movimentar-se nas quatro direções (NORTE, SUL, ESTE e OESTE) deslocando-se zero (virar para a direção) ou mais (virar e mover-se na dada direção) unidades de distância (assuma-se, e.g., 1u = 25cm) de cada vez.
Para além dos movimentos, o robot aceita as ações LIGAR e DESLIGAR para ativar e desativar, respetivamente, o sistema de aspiração.
Com base nesta descrição para o robot:
- crie uma linguagem capaz de descrever uma rotina de limpeza para este robot. Essa linguagem deve prever também que no início se declarem as dimensões do retângulo que define a área de ação. Nota: na linguagem que criar, pode prever a indicação do posicionamento inicial do robot.
- crie um processador para as frases desta linguagem que ofereça as seguintes funcionalidades:
- a. Verificar que a especificação não leva o robot para fora da área de limpeza (mostrando erro caso isso aconteça);
- b. Calcular a distância, em cm, que o robot percorre durante toda a sua atividade;
- c. Determinar quantas vezes o robot altera a sua direcao;
- d. Determinar quantas unidades em média o robot se desloca de cada vez numa dada direção.
Ficha 4 (2011.12.04):
Dada uma GA gerada em formato textual XAGRA pelo VisualLISA escreva um processador que a traduza para AnTLR.
Fases:
- Considere só os Terminais, e Gere apenas o Analisador Léxico.
- Considere agora toda a GIC, e Gere apenas o Parser.
- Considere toda a GA, e Gere um Processador completo.
Ficha 5 (2012.05.21):
Resolva um problema com GA e AST, semelhante ao que se fez no Exercício 8 para C--, agora para definir uma linguagem para descrição de Mapas de Conceitos (parecida com a CMC já apresentada nas aulas) que permita validar as ligações face aos conceitos e relações declarados e que permitam fazer links (em pagina Web) para as ocorrências ou instâncias dos conceitos extraidos de uma BD.
Ficha 6 (2012.02.13):
As duas ferramentas abaixo listadas são plugins para o Eclipse e servem ambas para definição/geração de DSLs e dos respetivos ambientes de desenvolvimento (os editores são gerados também como uma aplicação Eclipse):
- EMFText -- http://www.emftext.org/index.php/EMFText
- XText -- http://www.eclipse.org/Xtext/
O que se pretende é que cada grupo analise as duas ferramentas e escolha uma delas para estudar com mais detalhe, devendo criar um editor/processador para a linguagem
Genea, a DSL que será considerada como caso de estudo.
Notem que os grupos que explorarem o
Xtext devem explorar em complemento os módulos afins
Xtend +
Xbase.
Cada grupo deve: elaborar uma pequena monografia (em LaTeX) descrevendo a ferramenta e a experimentação; e preparar uma breve apresentação para a Turma. Dispõe de 3 semanas para fazer este TPC.
Questões colocadas nas aulas, para reflexão e avaliação contínua
Q1 (2011.12.04):
Discorra sobre a afirmação "o recurso a geradores de compiladores, ou de uma forma geral a geradores de programas, é uma importante forma de re-utilização".