Modo de funcionamento do Projecto Integrado no 2ºSemestre, 2ªParte.
Apresentação dos 3 Casos de Estudo que servirão de suporte à disciplina:
CS1 (Gestão de Candidaturas de projectos de I&D a financiamento da FCT): neste caso a entidade principal é 'Candidatura' que tem uma 'Equipe' de investigadores que pertencem a 'Instituições Parceiras' e participam num projecto organizado em 'Tarefas' que tem 'Resultados' avaliados em 'Milestones' -- o sistema permite carregar candidaturas, lacrar, avaliar, aprovar, fazer os pagamentos e as medidas de execução, fechar.
CS2 (Gestão de Marcação de Consultas numa Clínica Médica): neste caso a entidade central é 'Consulta' que envolve 'Paciente', 'Médico' e 'Ficha Clínica' -- além de manter a informação sobre Médicos e Pacientes, é preciso Marcar Consultas e Registar Episódio Clínico na ficha.
CS3 (Sistema para estudo Prosopográfico do Clero Catedralício): aqui a entidade principal, não é uma, são duas. Na 1ªfase é a 'Ficha de Documento' à qual estão associadas as fichas com descrições individuais dos Clérigos; na 2ªfase é a 'Ficha Prosopográfica de cada Clérigo' com as sua referências para as fontes documentais -- neste caso o objectivo, além de carregar e mostrar a informação, é fazer a 'Normalização' das fichas e a 'Fusão' das várias fichas com descrições individuais dos Clérigos na respectiva Ficha Prosopográfica.
Apresentação do enunciado da componente do projecto integrado, Sistema DRAW, que será trabalhada nesta 2ªparte --- uma linguagem para especificação do Modelo de DadosdreqL:
Análise de Requisitos: a linguagem deve permitir definir os Tipos Atómicos (Primitivos, Renomeados, Enumerados), Tipos Estruturados (Set, Seq, Tree, Tuple e Map), Relações implícita ou explicitamente. Além disso, alguns atributos dos campos devem ser especificados (editável, nulo, visível, comprimento máximo, mascarado, chave, auto-increment).
TPC: a) Criar o Modelo de Dados (UML ou VDM) para os 3 Casos de Estudo; b) terminar a análise de requisitos para dreqL.
09 de Março de 2009
Recapitulação dos objectivos e modo de funcionamento do Projecto Integrado no 2ºSemestre, 2ªParte.
Revisão do enunciado da componente do projecto que vai ser trabalhada nesta parte: a linguagem dreqL para descrição da estrutura de dados de uma aplicação e sua integração com a linguagem DRAW.
Discussão muito detalhada do TPC realizado pelos alunos no sentido de criar um Modelo Lógico (DER ou Diagrama de Classes UML) para os 3 Casos de Estudo que servirão de suporte à disciplina:
CS1 (Gestão de Candidaturas de projectos de I&D a financiamento da FCT): apuramento do Modelo proposto por Miguel Esteves (em comparação com o do Sérgio e outros) -- ver Diagrama de Classes Final.
TPC: terminar os modelos para os 2 outros casos e entregar em papel o 1ºmodelo.
16 de Março de 2009
Discussão muito detalhada do TPC realizado pelos alunos no sentido de criar um Modelo Lógico (DER ou Diagrama de Classes UML) para os 3 Casos de Estudo que servirão de suporte à disciplina:
CS2 (Gestão de Candidaturas de projectos de I&D a financiamento da FCT): apuramento do Modelo final -- ver Diagrama de Classes Final.
CS3 (Sistema para estudo Prosopográfico do Clero Catedralício): discussão do modelo inicial e dos conceitos envolvidos.
Discussão muito calorosa sobre Modelação de Sistemas de Informação; o Modelo Relacional e o DER versus o Modelo Orientado a Objectos e o DClasses.
TPC: terminar o modelo para o último caso e entregar em papel e em formato electrónico o Diagrama dos 3 Modelos.
23 de Março de 2009
Discussão muito detalhada do TPC realizado pelos alunos no sentido de criar um Modelo Lógico (DER ou Diagrama de Classes UML) para os 3 Casos de Estudo, já propostos, que servirão de suporte à disciplina:
CS3 (Sistema para estudo Prosopográfico do Clero Catedralício): discussão do modelo final; comparação de interpretações e abordagens diversas.
Apresentação de mais 2 Casos de Estudo que servirão de suporte à disciplina:
CS4 (Gestão de Aquisições num Organismo Público): neste caso a entidade principal é 'Ficha de Aquisição', a qual se associa a unidades organicas e produtos, fornecedores e orçamento, de modo a poder-se fazer a sua cabimentação nas rubricas orçamentais e a respectiva autorização de compra.
CS5 (Gestão de Correspondência): neste caso a entidade principal é 'Correspondência' estando ligada a 'Funcionarios' de modo a permitir fazer o registo completa de cada correspondencia que chega à institução, identificando o destinatário interno e fazendo os eu tracking até ser arquivada.
Enquadramento desta componente de PI com o trabalho já feito, em realização e futuro:
para o efeito foi revista a Arquitectura geral de uma Aplicação Web do tipo Data-centric, formada por 3 camadas: a camada de interacção (dita o Front-Office do sistema); o repositório de dados (em torno do qual se centram as operações); e a camada intermédia (o Middleware) que estabelece a ligação entre as outras duas camadas.
a linguagem DRAW serve para especificar a camada de interacção;
para interligação das duas será definida uma outra linguagem, interL, que mapeia os dados da interface com os dados contidos no repositório;
a linguagem dreqL surge para especificar o repositório -- sua estrutura e manutenção (ou seja, o conjunto de operações que formam o Back-Office do sistema).
TPC1: fazer o modelo para os dois novos casos e entregar em papel e em formato electrónico o respectivo Diagrama.
TPC2: propor uma definição para a linguagem dreqL; apresentar a sua GIC.
30 de Março de 2009
Discussão muito detalhada do TPC realizado pelos alunos no sentido de criar um Modelo Lógico (DER ou Diagrama de Classes UML) para os 5 Casos de Estudo, já propostos, que servirão de suporte à disciplina:
CS4 (Sistema para estudo Gestão de Aquisições num Organismo do Estado): discussão do modelo final; comparação de interpretações e abordagens diversas.
CS5 (Sistema para estudo Gestão de Corresondência num Organismo do Estado): discussão do modelo final; comparação de interpretações e abordagens diversas.
Discussão muito detalhada das propostas para a linguagem dreqL apresentadas por cada grupo; análise da gramática e de frases concretas.
TPC1: apresentar a versão final da gramática para definição da linguagem dreqL e frases de sua instanciação aplicadas aos 5 Casos de Estudo.
20 de Abril de 2009
Discussão e avaliação, grupo a grupo, da linguagem dreqL proposta, da sua gramática e parser gerado pelo AnTLR e análise de frases concretas aplicadas a cada um dos 5 Casos de Estudo.
TPC1: gerar código SQL para Criar as Tabelas de uma Base de Dados que implemente o sistema de informação especificado em dreqL
27 de Abril de 2009
1ªetape de avaliação (do 2ºsemestre) do Projecto Integrado: estado de definição das linguagens DRAW e dreqL e de desenvolvimento dos respectivos processadores (geração do código SQL para criação das Tabelas correspondentes ao modelo descrito); aplicação aos Casos de Estudo.
04 de Maio de 2009
Conclusão da 1ªetape de avaliação (do 2ºsemestre) do Projecto Integrado.
Início do desenvolvimento do Gerador de Código associado à dreqL para realizar as funções de CRUD.
11 de Maio de 2009
Não houve aula devido às festividades do Enterro da Gata.
18 de Maio de 2009
Aula dada pelo JJ.
25 de Maio de 2009
Discussão e continuação do desenvolvimento do Gerador de Código associado à dreqL para geração das funções em Perl que invocam as instruções SQL para implementar as funções de CRUD (uma função por tabela).
02 de Junho de 2009
Discussão e continuação do desenvolvimento do Gerador de Código associado à dreqL para geração das funções em Perl que invocam as instruções SQL para implementar as funções de CRUD (uma função por tabela).
Preparação da 3ªcamada de interacção que vai usar objectos para ligar a descrição DRAW à dreqL oferecendo ao programador uma série de operações e interrogadores de alto nivel (próximo do modelo OO).
As entradas marcadas a vermelho correspondem a avaliações. As restantes correspondem a pontos de controlo, para que possam ter uma ideia do andamento dos vossos projectos.
Sugere-se a visita regular a esta página, já que poderão surgir actualizações/adições de sugestões de implementação.
27 de Outubro - Implementação de uma linguagem básica para a representação de grafos (por exemplo, inspirada na do graphviz), e uma ferramenta que gere um conjunto de CGI capazes de navegar sobre este grafo. A implementação desta etapa será iniciada nas aulas de 20 de Outubro.
3 de Novembro - Especificação de um conjunto base de tipos (STR, INT, TEXT, FLOAT, DATE, PASSWORD, EMAIL, URL). Adição sobre a linguagem da etapa anterior de parâmetros em cada aresta. Cada estado (CGI) deve mostrar um formulário por acção (aresta) existente. Por exemplo, se do vértice A partem duas arestas, uma com os campos Nome: STR, Morada: TEXT, e uma outra com os campos Nome: STR, Pass: PASSWORD, a CGI referente ao vértice A deverá apresentar dois formulários, um para cada uma das possíveis acções. Depois de escolhida uma acção, o estado de destino dessa aresta deverá imprimir os valores preenchidos no formulário anterior.
Sugestão 1: colocar em evidência os campos com nomes iguais, de forma a que sejam partilhados pelos dois formulários.
Sugestão 2: procurar módulos de validação/geração de formulários no CPAN como o HTML::FormFu ou o CGI::FormBuilder.
Sugestão 3: validar os valores submetidos de acordo com o seu tipo (ver sugestão 2, ou JavaScript).
10 de Novembro - Avaliação das etapas anteriores. Esta avaliação será feita das 11h00 em diante.
17 de Novembro - Adição de funções de processamento nas arestas do grafo. Estas funções estarão presentes num outro documento Perl (por exemplo num módulo Perl) e serão invocadas sempre que necessário. Assim, cada transição entre estados deixa de conter apenas os parâmetros, mas sim uma assinatura de uma função: nome da função, parâmetros necessários (que correspondem à etapa do dia 3 de Novembro), e o tipo de retorno da função. Quando um utilizador utilizar um formulário, os dados serão usados para invocar a função, e o resultado final será mostrado. Por exemplo: soma(a: INT, b:INT): INT
24 de Novembro - Não há garantias que uma função invocada durante a transição entre estados não dê erro. Ou seja, uma função de inserir que, teoricamente, não devolve nada (apenas altera o estado na base de dados) pode dar um erro. Como esta função, qualquer outra pode dar erro. Assim, implicitamente o DRAW deve considerar que todas as funções retornam um "maybe": o tipo especificado se não der erro, ou undef no caso de ter ocorrido um erro. Em caso de erro, a variável especial do Perl $@ será usada para guardar a mensagem de erro. O nodo de destino deverá verificar o retorno da função invocada. Se o valor for undef, a mensagem de erro é mostrada. Caso contrário, é mostrado o resultado de invocar a função.
1 de Dezembro - NOTA: Não há aula por ser feriado, mas há trabalho programado! Em caso de dúvidas procurem-nos durante o resto da semana, ou usem e-mail! Uma função não retorna necessariamente um tipo escalar. Por exemplo, uma pesquisa numa base de dados retorna uma lista de registos. Torna-se, pois, imprescindível adicionar tipos estruturados à linguagem DRAW:
Tuplo: uma sequência de tipos (básicos, para já!). Por exemplo: ProcuraRegisto(Nome: STR):(Nome: STR, Idade: INT, Morada: STR)
Lista: uma sequência homogénea de tipos (básicos ou tuplos). Por exemplo: Alunos():(Nome: STR, Idade: INT)*
Os exemplos usam uma sintaxe ilustrativa. Usem a vossa sintaxe!
8 de Dezembro - NOTA: Não há aula por ser feriado, mas há trabalho programado! Em caso de dúvidas procurem-nos durante o resto da semana, ou usem e-mail! A framework já deve ser capaz de suportar uma aplicação simples! Implementem uma aplicação simples usando a vossa própria framework. Isso permitirá encontrar erros ou limitações. Alguns exemplos de possíveis aplicações:
Lista telefónica: permitir adicionar nomes e números de telefone. Permitir apagar registos, e listar nomes de acordo com um padrão de pesquisa.
Dicionário Online: permitir consultar e adicionar palavras e respectivas definições. Permitir alterar a definição. Permitir listar palavras de acordo com um padrão de pesquisa.
Mais sugestões com o tempo...
15 de Dezembro - Avaliação das etapas anteriores.
Janeiro - Permitir que em cada transição, para além da invocação de uma função, seja possível propagar variáveis entre estados. Deste modo será possível, por exemplo, que o username de um utilizador introduzido na página de login possa ser propagado por todas as restantes páginas. Note-se que as variáveis propagadas só são mostradas se fizerem parte de um formulário. Os formulários deverão ser preenchidos caso existam definidas variáveis com os nomes dos campos respectivos.
Fevereiro - Permitir que as funções de transição retornem um tipo especial, chamado 'VARS' que corresponda a uma tabela associativa, que mapeie nomes de variáveis em valores. Isto permitirá, por exemplo, que depois de um formulário em que se peça a chave de uma tabela, seja possível mostrar o formulário para editar o registo da base de dados, preenchendo automaticamente o formulário com os respectivos valores.
Abril - Definição da linguagem DReqL? , e criação do Parser;
27 de Abril - Avaliação!
Propagação de variáveis, entre estados e a partir de funções
Gerador de código SQL para criação do modelo relacional a partir do DReqL? .
Exemplo 1:
Neste primeiro exemplo pretende-se analisar gramáticas,
escritas de acordo com a meta-gramática seguinte antlr3.g.
Para efeitos de análise pretende-se extrair, armazenar e visualizar a seguinte informação:
Tabela de identificadores
Grafo de dependências
Métricas de tamanho
Posteriormente pretende-se reescrever a gramática, eliminando produções inúteis e normalizando
a forma de recursividade removendo os operadores próprios do extended-BNF.
Questões colocadas nas aulas
Q1:
(2009.03.16) Diga qual a relação entre a Compreensão de Programas, usada a nível da Engenharia de Software (na manutenção, re-utilização e certificação de aplicações), e os sistema para Avaliação da Qualidade de Documentos Anotados eXVisXML ?
Q2:
(2009.03.16) Escolha um dialecto XML definido pelo grupo no módulo de PED do 1ºSemestre e escolha uma documento concreto escrito nesse dialecto XML e calcule manualmente as Métricas previstas no eXVisXML.
Fichas Práticas para resolver fora das aulas
Ficha I (Data de Entrega: 2009.XX.XX --- relatório em Literate Programming)
Exemplo 1:
Escreva, em notação AnTLR, uma Gramática para uma linguagem que:
aceite uma Lista de Números;
gere o respectivo Parser com o AnTLR;
teste o parser com o Debugger visual do AnTLRWorks;
Acrescente Acções Semânticas (e depois Atributos) para calcular o Comprimento da Lista.
Exemplo 2:
Escreva, em notação AnTLR, uma Gramática para a famosa linguagem funcional Lisp(1) que:
aceite uma Lista de Números;
gere o respectivo Parser com o AnTLR;
teste o parser com o Debugger visual do AnTLRWorks;
Acrescente Atributos para:
calcular a quantidade de números e palavras da lista;
construir uma lista plana (todos os elementos ao mesmo nível) com os elementos originais associados ao nível a que aparecem;
verificar que todos os elementos da lista sejam do mesmo tipo do 1ºelemento
gerar código post-fix(2) como se a SExp fosse calculada numa máquina de stack.
(1) Considere para este exemplo que a gramática de uma Symbolic Expression (na qual assenta a linguagem Lisp) escrita numa notação geral (livre) é:
T = { num, pal, "(", ")" }
N = { SExp, SExplist }
S = SExp
P = {
p1: SExp --> num
p2: SExp --> pal
p3: SExp --> "(" SExplist ")"
p4: SExplist --> SExp SExplist
p5: SExplist --> &
}
(2) Considere que o código-máquina a gerar (para traduzir as S-Expressions para uma máquina de stack) é uma Linguagem Assembly simples apenas com as 3 instruções seguintes:
LAB pal // LABel significa que o operando 'pal' é uma constante
// alfanumérica (identificador)
CONS num // CONS significa que o operando 'num' é uma constante
// numérica
OPER op // OPER significa que o operando 'op' é um operador
Para melhor compreender o que se pretende, mostra-se abaixo o resultado de processar duas frases válidas da Linguagem Lisp:
Exemplo 3:
Nos tempos que correm, a utilização da linguagem SQL (Structured Query Language) é comummente aceite na comunidade informática
para a interrogação de bases de dados. São várias as ferramentas que fazem
uso desta linguagem: SQL Server, MySQL, Apache Derby, etc.
A gramática da linguagem SQL não é mais do que uma lista de comandos.
Pretende-se neste exercício que implemente a gramática da linguagem SQL com pelo menos 4 comandos à sua escolha.
Em relação aos comandos escolhidos, pode simplificar a sua sintaxe real, incluindo apenas a parte obrigatória (p.ex., no SELECT pode
omitir a parte ORDER-BY ou GROUP-BY).
Depois de implementar a sua gramática, recorrendo ao AnTLR, pretende-se que:
Construa a Árvore de Sintaxe Abstracta (ASA, ou em inglês AST) utilizando o mecanismo próprio do ANTLR;
Depois de ter a AST, deverá:
construir a Tabela de Identificadores (TabId) constituída pelos nomes das Tabelas e pelos nomes dos Campos
gerar uma S-Expr (Lisp) a partir da árvore (uma espécie de pretty-print da AST).
Exemplo 4:
Análise da Qualidade da Gramática de uma Linguagem para Gestão Científica II (Projectos de Investigação): enunciado
Questões colocadas nas aulas
Q1:
(2008.09.29) "Explique porque se constata, ao fazer debug visual no AnTLRWorks, que o parser gerado pelo AnTLR é Top-Down?"
Q2:
(2008.09.29) "O que é preciso acrescentar à Gramática da Lista de Números, do Exemplo 1, para calcular o comprimento da lista (ou contar os seus elementos)?"
Q3:
(2008.10.06) "Porque é que, após analisar o código produzido pelo ANTLR, se pode afirmar que o Parser gerado é um recursivo-descendente (RD) e não um LL?"
Q4:
(2008.10.06) "Porque é que a declaração dos atributos numa gramática AnTLR devia ser introduzida pela palavra-reservada 'synthesizes' e não 'returns' ?"
Q5:
(2008.10.18) Considere a gramática da linguagem Lisp definida na última aula (download aqui) para responder à seguinte questão. Substituindo a produção p4: sExpr -> '(' sExpr* ')' por p4: sExpr -> '(' sExpr sExpr+ ')' como procederia ao cálculo do atributo soma?
Q6:
(2008.10.20) "Porque é que o termo PROPAGAR 'expressa correctamente' o conceito de herança em Gramáticas de Atributos (GAs)?"
Q7:
(2008.10.27) "Os atributos podem ou não ser calculados de uma forma concorrente?"
Q8:
(2008.10.27) "Qual o princípio das GAs que um neto não pode herdar directamente de um(a) avô(ó)?"
Q9:
(2008.10.27) "Qual o inconveniente de alterar código automaticamente gerado?"
Q10:
(2008.10.27) "Qual a diferença de atitude entre JavaDoc (princípio) e Literate Programming?"
Q11:
(2008.11.10) "Qual a diferença entre definir o ';' como Parte integrante dum Comando, ou como Terminador de Comando ? e se for como Separador de Comandos ?"
Q12:
(2008.11.17) "Porque os compiladores actuais e reais não fazem correcção de erros?"
Q13:
(2008.11.17) "Prove, com o autómato LR(0), a diferença entre as seguintes situações: ';' como terminador e ';' como parte integrante do comando."
Q14:
(2008.11.24) "Porque é que o compilador não é um processo interactivo?"
Q15:
(2008.11.24) "Qual o ganho extra que advém do uso de editores sensíveis ao contexto? Diga também qual a diferença entre Editor Sensível ao Contexto e Editor Guiado pela Sintaxe."
Q16:
(2008.11.24) "Qual a diferença entre um compilador à la Pascal e um compilador à la C no que diz respeito ao tratamento de erros em run-time?"
Q17:
(2008.12.15) "Porque é que os Editores Dirigidos pela Sintaxe quase não se utilizam actualmente?"
Q18:
(2008.12.15) "Proponha uma estrutura para construir a Tabela de Identificadores a usar no processamento das Linguagens Orientadas a Objectos."
Q19:
(2009.01.05) Constrúa o Aut-LR(0) para a gramática (GIC) do Exemplo 4.
Q20:
(2009.01.05) Aplique todas as Métricas de Tamanho e de Forma já estudadas à GIC da linguagem Lisp (ver Exemplo 2).
Q21:
(2009.01.26) Explique porque, na prática, se usam 2 gramáticas para a mesma linguagem.
Q22:
(2009.01.26) Calcule as Métricas Lexicográficas e de Forma para as linguagens C, Pascal e XML, usando as gramáticas disponíveis no UltraGram.
Fichas Práticas para resolver fora das aulas
Ficha I (Data de Entrega: 2008.11.10 --- relatório em Literate Programming)
Geração de um Processador para Gestão Científica (Teses e Orientadores): enunciado
Ficha II: Faça um relatório detalhado, recorrendo ao Literate Programming, sobre o Exercício 3 descrito acima.
Ficha III (Data de Entrega: 2009.02.05 --- relatório em Literate Programming):
Pesquise na Internet o que há sobre Métricas para Avaliação da Qualidade em Gramáticas e Linguagens; integre no seu relatório um capítulo específico (mas claro e bem estruturado) sobre o estudo feito.
Avaliação da Qualidade de Gramáticas; Métricas
Retome a Gramática da DSL GCI apresentada no enunciado da Ficha I e estude a sua qualidade avaliando as Métricas que foram ensinadas nas aulas.
Pretende-se repetir a avaliação da sua qualidade depois de efectuar cada uma das 3 transformações abaixo (as alterações são não-cumulativas, isto é, são independentes e realizadas sempre sobre a gramática original):
(T1)
Reduza a gramática G eliminando as produções inúteis.
(T2)
Altere a gramática G de modo a simplificar o lado direito da produção p3, permitindo escrevê-lo
na forma:
p3: Pg --> IdOrient DescOrientac Periodo
(T3)
Altere a gramática G para agrupar numa única descrição todas as orientações do mesmo Orientador.
Para quem usa Windows Vista (e talvez XP ? ) com o Strawberry Perl, e não conseguia por a funcionar o módulo GraphViz 2.03 do CPAN. Descobri que se trata de um pequeno bug, no ficheiro de configuração do módulo.
Portanto após instalar o GraphViz (www.graphviz.org) no Windows e o módulo GraphViz no CPAN (force install GraphViz):
A avaliação da UCE de Engenharia de Linguagens é calculada pela seguinte fórmula:
NF = 15% PED + 15% EG + 15% ATS + 15% PLN + 15% PI1S + 25% PI2SLegenda:
NF - Nota final
PED - Nota do módulo de PED
EG - Nota do módulo de EG
ATS - Nota do módulo de ATS
PLN - Nota do módulo de PLN
PI1S - Nota do primeiro semestre de Projecto Integrado
PI2S - Nota final de Projecto Integrado
Requisitos:
Nota mínima de 9 valores para cada um dos módulos (PED/EG/ATS/PLN)
Nota mínima de 8 valores na primeira avaliação do Projecto Integrado
Nota mínima de 10 valores na segunda avaliação do Projecto Integrado
Notas:
As avaliações de cada módulo poderão ser de cariz prático, teórico ou misto.
Os pesos e notas mínimas podem ser alterados ligeiramente durante o decorrer do semestre.
Paradigmas para visualização de dados e de conhecimento:
visualização de informação, de dados e de software.
modelos de visualização.
visualização/navegação em árvores, grafos, hiper-cubos, petri-nets.
visualização/navegação em ontologias.
animação de algoritmos.
Exploração de Ambientes de Trabalho usando os paradigmas explicitados nos items acima.
Resultados de Aprendizagem Específicos
Capacidade de construir front-ends poderosos para a análise de linguagens de programação (ambíguas ou não).
Capacidade de desenvolver software como uma tarefa de transformar programas e/ou especificações em implementações eficientes.
Capacidade de utilizar métricas e técnicas de transformação de programas para optimizar programas (e.g. cálculo parcial, detecção de código morto), efectuar debugging de programas (e.g. slicing), melhorar a estrutura dos programas (e.g. refactoring).
Capacidade de definir testes para software e testar automaticamente programas em diferentes linguagens de programação.
Capacidade para criar representações visuais adequadas à compreensão clara do conhecimento complexo detido.
O paradigma da Programação baseada em Gramáticas (PG).
Conceitos sobre Gramáticas de Atributos (GA); definição formal; desenvolvimento de GAs (aproximação monolítica versus modular, incremental).
Processamento de Linguagens baseado em GAs (tradução dirigida pela semântica).
Geração de Programas (processadores de Linguagens, protótipos rápidos) a partir de GAs; Notações gramaticais.
Qualidade de Linguagens; dimensões de avaliação e definição; critérios.
Qualidade de Gramáticas; dimensões de avaliação e definição; critérios.
Métricas para Avaliar a Qualidade das Gramáticas, quer enquanto formalismo de especificação e geração de linguagens, quer enquanto suporte à geração de programas.
Ambientes para Manipulação de Gramáticas.
Resultados de Aprendizagem Específicos
Capacidade para desenvolver especificações da sintaxe/semântica de linguagens e problemas em geral com gramáticas de atributos.
Capacidade para gerar programas usando ferramentas automáticas baseadas em gramáticas de atributos.
Capacidade para gerar ou utilizar ambientes de desenvolvimento estruturais e orientados à semântica.
Capacidade para discutir a qualidade de Linguagens e Gramáticas,
Capacidade para medir Gramáticas e avaliar a sua qualidade.
Capacidade para desenvolver ambientes para Manipulação de Gramáticas.
I.1 Introdução e Motivação para a área de Análise e Transformação de SW; sua inserção no contexto da Engenharia de Software:
noção de análise de código-fonte (outras hipóteses para análise de código intermédio ou máquina);
avaliação do software analisado -- métricas;
transformação como meio para melhorar o software avaliado.
I.2 As quatro grandes componentes envolvidas na disciplina:
extracção de informação do código (fase de análise);
armazenamento da informação extraída;
visualização (paradigmas/exemplos);
transformação.
P.1 Resolução do Exemplo 1:
análise do enunciado; estudo da meta-gramática do AnTLR proposta.
09 de Março de 2009
I.3 Recapitulação dos objectivos da disciplina:
Revisão dos principais conceitos ligados à Análise de Código, tomando como motivação a Comprensão de Programas (necessária à sua Manutenção, Re-utilização e Certificação):
Extracção nao-invasiva, estática vs Extracção invasiva, dinâmica.
Resultados da Extração e da Exploração do Conhecimento (Métricas).
P.1 Resolução do Exemplo 1 (cont.):
análise do enunciado; estudo da meta-gramática do AnTLR proposta; inicio da implementação de um Analisador muito básico.
TPC: terminar a escrita da 1ªfase do graAl, sistema para Análise de Gramáticas.
16 de Março de 2009
I.4 Recapitulação dos objectivos da disciplina:
Revisão dos principais conceitos ligados à Análise de Código e à Comprensão de Programas, extrapolando agora as ideias para a Compreensão e Avaliação de Documentos Anotados em XML:
Apresentação do Sistema para Análise de Documentos eXVisXML; os conceitos de extração de informação, Visualização, Slicing e Métricas subjacentes; as funcionalidades implementadas.
P.1 Resolução do Exemplo 1 (cont.) -- O Analisador de GramáticasgraAl:
estudo detalhado das duas abordagens mais avançadas, apresentadas:
pelo Hélder (para cálculo de várias Métricas, com base em atributos H/S, um para cada métrica);
pelo César (para desenho do Grafo de Dependências, com base na construção de uma Tabela de Identificadores que recolhe toda a informação extraída durante o parsing da gramática).
TPC1: terminar a escrita da fase de análise do graAl.
TPC2: responder às seguintes questões Q1 e Q2 sobre o eXVixXML (a apresentação está disponível aqui).
23 de Março de 2009
P.1 Resolução do Exemplo 1 (cont.) -- O Analisador de GramáticasgraAl:
estudo detalhado das abordagens seguidas por alguns dos grupos.
apresentação e discussão do sistema genérico para análise de gramáticas a partir de XAGra em desenvolvimento por Sérgio e Hugo Areias.
TPC1: terminar a escrita da fase de análise do graAl.
TPC2: responder à seguinte questão Q1 e Q2 sobre o eXVixXML.
30 de Março de 2009
P.1 Resolução do Exemplo 1 (cont.) -- O Analisador de GramáticasgraAl:
estudo detalhado das abordagens seguidas pelos vários grupos.
TPC1: terminar a escrita da fase de análise do graAl relativa às restantes métricas e pensar na transformação conducente à optimização da gramática
20 de Abril de 2009
A Aula desta semana foi totalmente dedicada a avançar com o Projecto Integrado (processamento da Linguagem dreqL com vista à geração de código SQL).
27 de Abril de 2009
P.1 Resolução do Exemplo 1 (cont.) -- O Analisador de GramáticasgraAl:
conclusão da 1ªetape (construção da Tabela de Identificadores, do Grafo de Dependências entre Símbolos e das Métricas de Tamanho e Forma): avaliação do trabalho desenvolvido pelos vários grupos.
Introdução ao Slicing (Backward vs Forward, Estático vs Dinâmico); critério de Slicing.
Slicing de Gramáticas.
04 de Maiode 2009
P.1-f2 Exemplo 1 - fase2 -- extensão do Analisador de GramáticasgraAl para suportar o slicing de Gramáticas a partir de um dado símbolo:
discussão dos resultados atingidos pelos grupos para o caso de BW slicing (visualização em formato texto corrido e por coloração de caminhos sobre o Grafo de Dependências).
Slicing de Gramáticas com Atributos e suas regras de cálculo.
11 de Maio de 2009
Não houve aula devido às festividades do Enterro da Gata.
18 de Maio de 2009
Aula dada por JJ.
25 de Maio de 2009
P.1-f2 Exemplo 1 - fase2 -- extensão do Analisador de GramáticasgraAl para suportar o slicing de Gramáticas a partir de um dado símbolo:
discussão dos resultados atingidos pelos grupos para o caso de BW slicing (visualização em formato texto corrido e por coloração de caminhos sobre o Grafo de Dependências), no caso do FW slicing e do slicing de Gramáticas com Atributos e suas regras de cálculo.
proposta de nova extensão do graAl com a capacidade para transformar uma dada gramática eliminando produções inuteis e normalizando a recursividade.
Extensão do graAl com a capacidade para transformar uma dada gramática eliminando produções inuteis e normalizando a recursividade; discussão dos resultados atingidos pelos grupos que já implementaram tal funcionalidade.
Discussão sobre a data e o formato da avaliação
Construção de uma artigo colectivo (para enviar à CoRTA'2009) sobre o graAl.
Apresentação da Equipe Docente, dos Objectivos e do modo de Funcionamento e Avaliação;
Introdução e Motivação para a área de Processamento de Linguagens e para o desenvolvimento baseado em Gramáticas e em Geradores de Compiladores.
Revisão do conceito de Gramática Indepedente de Contexto (GIC) e de Gramática Tradutora (GT); sua definição formal.
Apresentação da Ferramenta para geração de compiladores (que será usada ao longo de todo o ano) AnTLR e do ambiente de desenvolvimento associado AnTLRWorks usando o Exemplo 1.
06 de Outubro de 2008
Discussão das respostas enviadas pelos alunos às questões Q1 e Q2.
Continuação da exploração do Gerador AnTLR usando como base o Exemplo 1: análise do código Java gerado; o algoritmo de parsing com backtracking e sem backtracking mas com o valor de K (para o cálculo do comprimento do LookAhead) explicitado.
Conclusão da resolução em AnTLR do Exemplo 1, recorrendo agora a um atributo sintetizado para calcular o comprimento da Lista; teste da solução, quer com a forma recursiva não LL(1), em BNF-puro, da gramática, quer com a versão iterativa, em BNF-extendido; incremento da solução com um novo atributo para cálculo da soma dos valores da lista (os atributos intrínsecos dos Terminais "text", "line" e "column").
Gramática Recursiva não-LL(1) (BNF-puro)
Lista --> "[" Nums "]"
Nums --> int
| int',' Nums
Gramática Iterativa (BNF-extendido) --- com resolução em ANTLR
options { k=2; }
lista : '[' nums ']' {
System.out.println("Soma: " + $nums.soma);
System.out.println("Contador: " + $nums.conta);
}
;
nums returns [int soma, int conta=0]
: a = INT {
$soma = Integer.parseInt($a.text);
$conta++;
}
(',' b = INT { $soma += Integer.parseInt($b.text);
$conta++;
}
)*
;
INT : ('+' | '-')? ('0'..'9')+
;
WS : (' ' | '\t' | '\n' | '\r') { channel=HIDDEN; };
Inicio da resolução do Exemplo 2: construção de um parser para a gramática da linguagem Lisp (versão iterativa em BNF-extendido).
Gramática Recursiva LL(1) (BNF-puro)
Lisp --> SExp
SExp --> num
| pal
| "(" SExplist ")"
SExplist --> SExp SExplist
| &
Gramática Iterativa (BNF-extendido)
Lisp --> SExp;
SExp --> num
| pal
| "(" SExp* ")"
13 de Outubro de 2008
Análise das respostas dadas pelos alunos às questões Q3 e Q4; discussão detalhada sobre os conceitos básicos do parsing Top-Down: condição (de não-ambiguidade) LL(1); Algoritmo Recursivo-Descendente (RD) e Algorimto guiado-por-tabela (iterativo e genérico) LL(1).
Continuação da resolução do Exemplo 2:
definição dos atributos para resolver a primeira questão: calcular a quantidade de números e palavras da lista
definição dos atributos para resolver a segunda questão: construir uma lista plana (todos os elementos ao mesmo nível) com os elementos originais associados ao nível a que aparecem.
20 de Outubro de 2008
Análise das respostas dadas pelos alunos à questão Q5 e discussão muito detalhada da solução: sistematização do processo de definição de regras de cálculo em produções iterativas.
Continuação da resolução do Exemplo 2:
definição dos atributos e condições de contexto para validar a semântica estática da linguagem (neste exemplo, verificar que todos os elementos são do tipo do primeiro elemento da lista); discussão de alternativas para construir os atributos relevantes e para colocar as condições de contexto, mais acima ou mais abaixo na árvore), como se vê nos exemplos seguintes.
inicio da geração de código
Como funciona, mas não se deve fazer:
grammar LispCheckFirstBad;
/*
verificar que todos os elementos da lista sejam do mesmo tipo do 1.elemento
*/
@header {
import java.util.ArrayList;
}
lisp returns[ArrayList<String> array_out]
@init{ ArrayList<String> array_in = new ArrayList<String>(); }
: sExp[array_in] { String a = $sExp.array_out.get(0);
if (a.equals("int") && $sExp.array_out.contains("pal")) {
System.out.println("FALSE");
}
else if (a.equals("pal") &&
$sExp.array_out.contains("int")) {
System.out.println("FALSE");
}
else {
System.out.println("TRUE: " + a);
}
}
;
sExp[ArrayList<String> array_in] returns [ArrayList<String> array_out]
: INT { $array_in.add("int"); $array_out = $array_in;}
| PAL { $array_in.add("pal"); $array_out = $array_in; }
| '('
( vez_anterior = sExp[array_in] {
$array_in = $vez_anterior.array_out; } )*
')' { $array_out = $array_in; }
;
Como funciona e se deve fazer para ficar uma solução elegante e eficiente:
grammar LispCheckFirstGood;
/*
verificar que todos os elementos da lista sejam do mesmo tipo do
primeiro elemento
*/
lisp returns[String type_out]
@init{ String type_in = new String(""); }
: sExp[type_in] { System.out.println($sExp.type_out); }
;
sExp[String type_in] returns [String type_out]
: INT { if ($type_in.equals("pal") ||
$type_in.equals("FALSE: pal")) {
$type_in = "FALSE: pal";
}
else {
$type_in = "int";
}
$type_out = $type_in;
}
| PAL { if ($type_in.equals("int") ||
$type_in.equals("FALSE: int")) {
$type_in = "FALSE: int";
}
else {
$type_in = "pal";
}
$type_out = $type_in;
}
| '('
( vez_anterior = sExp[type_in] {
$type_in = $vez_anterior.type_out; } )*
')' { $type_out = $type_in; }
;
27 de Outubro de 2008
Análise das respostas dadas pelos alunos à questão Q6; discussão detalhada sobre os conceitos básicos da gramática de atributos, distinguindo a dispersão (propagação) de valores pela árvore abaixo (para transmissão de informação contextual de pai para filhos, ou entre irmãos) da síntese do significado da frase (inferindo informação semântica a partir dos valores extraídos da frase através das folhas da árvore de derivação); Reflexão alongada sobre todo o processo de cálculo de atributos, o que levou à formulação das questões Q7 a Q9.
Utilização de Literate Programming (LitPrg) na resolução das Fichas Práticas para produção do respectivo relatório (que constituirá o objecto de avaliação neste módulo de EG); apresentação do conceito e do princípio de desenvolvimento subjacente; referência a algumas ferramentas de LitPrg e introdução ao Nuweb; formulação da Q10.
Conclusão da resolução do Exemplo 2:
definição dos atributos para resolver a última questão, gerar código post-fix para representar um programa Lisp, discussão de alternativas e implementação do processo de tradução.
Introdução ao Exemplo 3: processamento de linguagens através da construção explícita e travessias da Árvore de Sintaxe Abstracta (AST)
apresentação das facilidades do AnTLR para construção de uma AST durante o parsing.
03 de Novembro de 2008
Análise das respostas dadas pelos alunos à questão Q7 a Q10: continuação da discussão sobre cálculo de atributos (inferência de uma ordem parcial, sua totalização para o cálculo sequencial e detecção da independência para o cálculo concorrente); questões práticas associadas à utilização de programas gerados automaticamente; distinção clara entre escrever um documento que expões um problema e discute a sua resolução através do desenvolvimento de um programa (Literate Programming) próprio do acto de escrever um programa e o comentar detalhadamente (incluindo alguma meta-informação nos comentários, como é o caso do JavaDoc).
Processamento de Linguagens através da construção explícita de uma Árvore de Sintaxe Abstracta (AST) e suas travessias
Continuação do estudo das facilidades do AnTLR para construção de uma AST durante o parsing -- ilustração através da aplicação de vários operadores ao Exemplo 2 (Linguagem Lisp).
Exploração da facilidade anterior para fazer o slicing sintático da Árvore de Derivação ('Parsing Tree') concreta e completa do texto-fonte.
Introdução às Tree-Grammars para definir Travessias à AST que a processam -- construção de Sistemas de Produção (sistena de regras Condição-Reacção, por pattern-matching nos nodos da árvore) para transformação do texto-fonte.
Continuação da resolução do Exemplo 3: elaboração da CFG (GIC) com os comandos SQL escolhidos por cada grupo.
Sistematização da utilização de Gramáticas Tradutoras (GT) vs Gramáticas de Atributos (GA); cálculo de atributos on-the-fly (durante o parsing) e cálculo a-posteriori através de travessias à árvore. Ainda na utilização de GAs, discussão da utilização da Tradução Dirigida pela Semântica conjugada com a construção da Árvore de sintaxe abstracta.
Discussão sobre a forma de construir um relatório. Cada relatório deverá ser composto por:
Introdução
Problema a resolver e Objectivos
Análise
Concepção da Solução
Implementação
Conclusão
Continuação da resolução do Exemplo 3: elaboração da CFG (GIC) com os comandos SQL escolhidos por cada grupo; construção da respectiva AST e início da definição de transformações.
17 de Novembro de 2008
Discussão breve (a propósito da Q11) do Tratamento de Erros num Compilador. Referência a cada uma das fases:
Detecção (implícita nos algorítmos de cada uma das 3 etapes de Análise;
Sinalização do erro: localização, diagnóstico e terapia;
Correcção (os modelos formais de correcção) e Recuperação (Ponto-de-Recomeço e Terminais-Fidedignos).
Continuação da resolução do Exemplo 3: elaboração da CFG (GIC) com os comandos SQL escolhidos por cada grupo; construção da respectiva AST e início da definição de transformações.
Linguagens Visuais, VisualLISA:
Exemplificação dos Editores/compiladores gerados automaticamente com o Devil: VisualTopicMaps e VisualDRAW;
Apresentação e Testes com a Linguagem Visual para especificação de Gramáticas de Atributos, VisualLISA;
Resposta a um inquérito sobre a "usabilidade" deste editor.
24 de Novembro de 2008
A propósito da Q12, continuação da discussão mais aprofundada sobre Tratamento de Erros no Processamento de Linguagens e mais específicamente num Compilador:
ainda, Correcção versus Recuperação.
referência a Editor Sensível ao Contexto e Editor Guiado pela Sintaxe.
Continuação da resolução do Exemplo 3: elaboração da CFG (GIC) com os comandos SQL escolhidos por cada grupo; construção da respectiva AST e início da definição de transformações.
Linguagens Visuais, VisualLISA:
Definição de Linguagem Visual e Gramática Visual; exemplo da gramática da VisualLISA? em notação PLG (Picture Layout Grammar).
Breve introdução ao sistema gerador de Editores/Reconhecedores de Linguagens Visuais, DEVIL (Development Environment for Visual Languages), baseado no Eli e no gerador de compiladores para gramática de atributos LIGA.
Apresentação da especificação completa da Linguagem VisualLIGA incluindo a sintaxe, semântica estática, geração de código e o editor.
15 de Dezembro de 2008
A propósito da Q14, Q15 e Q16 continuação da discussão aprofundada sobre Tratamento de Erros no Processamento de Linguagens (mais específicamente num Compilador), bem como sobre Edição Assistida:
erros de run-time (versus erros em compile-time).
discussão do binómio Editor Sensível ao Contexto e Editor Guiado pela Sintaxe.
Introdução à Qualidade de Linguagens (QL) e Qualidadade de Gramáticas (QG); Métricas:
Discussão sobre critérios para Avaliar a QG e a QL.
Critérios apresentados para avaliar a QG:
Legibilidade da gramática (identificadores, documentação, meta-linguagem),
como formalismo que descreve uma linguagem,
como especificação de um processador;
Características da linguagem gerada pela gramática
Portabilidade da gramática (nas 2 perspectivas acima);
Adaptabilidade (para Evolução da Linguagem);
Eficiência como suporte à Geração Automática dum Processador para a respectiva Linguagem (tempo+memória);
Eficiência do Reconhecedor (Processador) gerado com base nessa gramática(tempo+memória).
Critérios apresentados para avaliar a QL:
Legibilidade dos textos (programas) escritos nessa linguagem;
Expressividade;
Abstracção;
Consistência;
Unicidade;
Documentação;
Extensibilidade / Adaptabilidade;
Escalabilidade.
Métricas de Tamanho relativas à gramática:
Numero de Terminais (#T)
Numero de Não-Terminais (#NT)
Numero de Produções (#P)
Numero de Produções Inuteis (#PI)
Numero Médio de Alternativas para um NT ($Alt-med)
Comprimento Médio do RHS de cada Produção ($RHS-med)
05 de Janeiro de 2009
Dado faltar um grande número de alunos, não foram discutidas as últimas questões Q17 e Q18.
Para colmatar a discussão sobre o tratamento de erros (recuperação) e preparar as métricas relativas à qualidade das gramáticas, foi feita uma introdução muito sucinta ao conceito de Autómato Determinista de Parsing LR(0) e ao processo de construção:
exemplo apresentado: Aut-LR(0) da linguagem Lisp (Exemplo 2);
exemplo proposto para fazer para a próxima aula (ver Q19).
Introdução à Qualidade de Linguagens (QL) e Qualidadade de Gramáticas (QG); Métricas:
Métricas de Tamanho ao Parser:
Numero de Funções do Parser RD (#NT+#T)
Dimensão da Tabela de Parsing LL(1) (#NT*(#T+1))
Dimensão da Tabela de Parsing LR(0) (#Q*(#T+1) + #Q*#NT)
Métricas de Forma:
Forma de Recursividade (Directa, Indirecta, Mista)
Tipo de Recursividade (Esq, Dir, Dir-LL, Mista, Implicita)
Notação (BNF, exBNF, Mista)
Factor de Coesão -- Dependência entre Símbolos (FanOut? / FanIn? )
12 de Janeiro de 2009
Construção do Autómato Determinista de Parsing LR(0) para a gramática do Exercício 4.
Cálculo das métricas de tamanho para duas variantes da gramática Lisp (Lispv1.g e Lispv2.g) anteriomente apresentadas na aula (BNF/EBNF).
Estudo do impacto de cada uma das variantes quanto à legibilidade de G como geradora de L e quanto à legibilidade em termos de manutenção. Relativamente às duas versões da gramática do Lisp apresentadas, os alunos concordaram que a 2ª versão era mais legível e mais fácil de manter do que a 1ª.
TWiki's Education/EL0809 webThe Education/EL0809 web of TWiki. TWiki is a Web-Based Collaboration Platform for the Enterprise.http://wiki.di.uminho.pt/twiki/bin/view/Education/EL0809Copyright 2020 by contributing authors2010-11-07T08:01:18ZFichasEG08http://wiki.di.uminho.pt/twiki/bin/view/Education/EL0809/FichasEG082010-11-07T08:01:18ZEngenharia de Linguagens Engenharia Gramatical 2008/09 Exercícios e Exemplos para as aulas Exemplo 1: Escreva, em notação !AnTLR, uma Gramática para uma linguagem ... (last changed by PedroRangelHenriques)PedroRangelHenriquesProgramaATS08http://wiki.di.uminho.pt/twiki/bin/view/Education/EL0809/ProgramaATS082009-11-25T10:28:20ZEngenharia de Linguagens Análise e Transformação de Software Análise de programas: Extracção de dados Armazenamento da informação recolhida ... (last changed by PedroRangelHenriques)PedroRangelHenriquesProgramaEG08http://wiki.di.uminho.pt/twiki/bin/view/Education/EL0809/ProgramaEG082009-11-24T11:39:16ZEngenharia de Linguagens Engenharia Gramatical 2008/09 Programa Resumido O paradigma da Programação baseada em Gramáticas (PG). Conceitos sobre Gramáticas ... (last changed by PedroRangelHenriques)PedroRangelHenriquesSumariosEG08http://wiki.di.uminho.pt/twiki/bin/view/Education/EL0809/SumariosEG082009-10-12T15:49:28ZEngenharia de Linguagens Engenharia Gramatical 2008/09 Sumários 29 de Setembro de 2008 Apresentação da Disciplina de EG: Apresentação da Equipe Docente ... (last changed by DanielaCruz)DanielaCruz_WebHomehttp://wiki.di.uminho.pt/twiki/bin/view/Education/EL0809/_WebHome2009-09-23T10:52:56ZUnidade Curricular de Especialização Engenharia de Linguagens (2008/2009) Edições Anteriores: 2008/2009 Responsável pela UCE: Rangel Henriques ... (last changed by JoseFaria)JoseFariaResultadosAvaliacaohttp://wiki.di.uminho.pt/twiki/bin/view/Education/EL0809/ResultadosAvaliacao2009-08-31T15:31:09ZEngenharia de Linguagens Resultados de Avaliação G Nome PED EG ATS PLN PI NF 1 Miguel Esteves 19 15 17 ... (last changed by AlbertoSimoes)AlbertoSimoesSumariosATS08http://wiki.di.uminho.pt/twiki/bin/view/Education/EL0809/SumariosATS082009-06-27T06:21:33ZEngenharia de Linguagens Análise e Transformação de Software Sumários 02 de Março de 2009 I.1 Introdução e Motivação para a área de Análise e Transformação ... (last changed by PedroRangelHenriques)PedroRangelHenriquesA2s2p:sumarioshttp://wiki.di.uminho.pt/twiki/bin/view/Education/EL0809/A2s2p:sumarios2009-06-06T23:36:28ZEngenharia de Linguagens Projecto Integrado Aulas do 2ºSemestre, 2ªparte Sumários 02 de Março de 2009 Modo de funcionamento do Projecto Integrado no 2ºSemestre ... (last changed by PedroRangelHenriques)PedroRangelHenriquesWebHomehttp://wiki.di.uminho.pt/twiki/bin/view/Education/EL0809/WebHome2009-06-01T14:15:38ZUnidade Curricular de Especialização Engenharia de Linguagens (2008/2009) Edições Anteriores: 2007/2008 Responsável pela UCE: Rangel Henriques ... (last changed by DanielaCruz)DanielaCruzA2s1p:sumarioshttp://wiki.di.uminho.pt/twiki/bin/view/Education/EL0809/A2s1p:sumarios2009-04-20T19:00:12ZEngenharia de Linguagens Sumários Segundo Semestre, Aulas da Manhã 02 de Março de 2009 Modo de funcionamento do Projecto Integrado no 2ºSemestre. Discuss ... (last changed by AlbertoSimoes)AlbertoSimoesEtapasDoProjectohttp://wiki.di.uminho.pt/twiki/bin/view/Education/EL0809/EtapasDoProjecto2009-04-20T10:39:15ZEngenharia de Linguagens Etapas do Projecto As entradas marcadas a vermelho correspondem a avaliações. As restantes correspondem a pontos de controlo, para que possam ... (last changed by AlbertoSimoes)AlbertoSimoesAlunosGrupos08http://wiki.di.uminho.pt/twiki/bin/view/Education/EL0809/AlunosGrupos082009-03-23T12:05:42ZEngenharia de Linguagens Alunos/Grupos 2008/09 1 Miguel Esteves 1 Nuno Correia 1 Tiago Correia 2 Nuno Veloso 3 Susana Silva ... (last changed by AlbertoSimoes)AlbertoSimoesFichasATS08http://wiki.di.uminho.pt/twiki/bin/view/Education/EL0809/FichasATS082009-03-17T07:01:32ZEngenharia de Linguagens Análise e Transformação de Software 2008/09 Exercícios e Exemplos para as aulas Exemplo 1: Neste primeiro exemplo pretende se analisar ... (last changed by PedroRangelHenriques)PedroRangelHenriquesAG:sumarioshttp://wiki.di.uminho.pt/twiki/bin/view/Education/EL0809/AG:sumarios2009-03-08T22:24:17ZEngenharia de Linguagens Projecto Integrado Aulas de Gestão Sumários 6 Outubro 2008 Modo de funcionamento do Projecto Integrado; Apresentação do enunciado ... (last changed by PedroRangelHenriques)PedroRangelHenriquesAvaliaçõesPeriódicashttp://wiki.di.uminho.pt/twiki/bin/view/Education/EL0809/AvaliaçõesPeriódicas2009-03-02T18:56:37ZEngenharia de Linguagens PI: Avaliações Periódicas G Nome 10Nov 15Dez 1 Miguel Esteves Sat MBom 1 Nuno Correia Sat MBom ... (last changed by AlbertoSimoes)AlbertoSimoesAT:sumarioshttp://wiki.di.uminho.pt/twiki/bin/view/Education/EL0809/AT:sumarios2009-01-04T22:18:22ZEngenharia de Linguagens Projecto Integrado Aulas Tecnológicas Sumários 29 Setembro 2008 Necessidade de um ambiente de programação eficiente: Editor, linha ... (last changed by AlbertoSimoes)AlbertoSimoes
Engenharia de Linguagens Engenharia Gramatical 2008/09 Exercícios e Exemplos para as aulas Exemplo 1: Escreva, em notação !AnTLR, uma Gramática para uma linguagem ...
Engenharia de Linguagens Engenharia Gramatical 2008/09 Programa Resumido O paradigma da Programação baseada em Gramáticas (PG). Conceitos sobre Gramáticas ...
Engenharia de Linguagens Engenharia Gramatical 2008/09 Sumários 29 de Setembro de 2008 Apresentação da Disciplina de EG: Apresentação da Equipe Docente ...
Engenharia de Linguagens Análise e Transformação de Software Sumários 02 de Março de 2009 I.1 Introdução e Motivação para a área de Análise e Transformação ...
Engenharia de Linguagens Projecto Integrado Aulas do 2ºSemestre, 2ªparte Sumários 02 de Março de 2009 Modo de funcionamento do Projecto Integrado no 2ºSemestre ...
Engenharia de Linguagens Sumários Segundo Semestre, Aulas da Manhã 02 de Março de 2009 Modo de funcionamento do Projecto Integrado no 2ºSemestre. Discuss ...
Engenharia de Linguagens Etapas do Projecto As entradas marcadas a vermelho correspondem a avaliações. As restantes correspondem a pontos de controlo, para que possam ...
Engenharia de Linguagens Análise e Transformação de Software 2008/09 Exercícios e Exemplos para as aulas Exemplo 1: Neste primeiro exemplo pretende se analisar ...
Engenharia de Linguagens Projecto Integrado Aulas de Gestão Sumários 6 Outubro 2008 Modo de funcionamento do Projecto Integrado; Apresentação do enunciado ...
Engenharia de Linguagens Projecto Integrado Aulas Tecnológicas Sumários 29 Setembro 2008 Necessidade de um ambiente de programação eficiente: Editor, linha ...
Engenharia de Linguagens GraphViz no XP/Vista Para quem usa Windows Vista (e talvez XP ? ) com o Strawberry Perl, e não conseguia por a funcionar o módulo !GraphViz ...
Engenharia de Linguagens Bibliografia: Scripting Livros Randal L. Schwartz, Tom Phoenix, brian d foy, Learning Perl , O'Reilly Media Larry Wall, Tom Christiansen ...
Engenharia de Linguagens Método de Avaliação A avaliação da UCE de Engenharia de Linguagens é calculada pela seguinte fórmula: NF 15% PED 15% EG 15% ATS ...
Education/EL0809 Web Preferences The following settings are web preferences of the Education/EL0809 web. These preferences overwrite the site level preferences ...
2009-07-13 - Defesa oral e apresentação dos trabalhos de ATS e PI.
2009-07-08 - Entrega dos relatórios (em papel) referentes aos trabalhos de ATS e PI.
2009-03-23 - Aula de PLN de 4 de Maio será dada por três membros da Porto Editora, e será sobre criação de ferramentas e dicionários para análise morfológica.
Engenharia de Linguagens Sumários Segundo Semestre, Aulas da Manhã 02 de Março de 2009 Modo de funcionamento do Projecto Integrado no 2ºSemestre. Discuss ...
Engenharia de Linguagens Projecto Integrado Aulas do 2ºSemestre, 2ªparte Sumários 02 de Março de 2009 Modo de funcionamento do Projecto Integrado no 2ºSemestre ...
Engenharia de Linguagens Projecto Integrado Aulas de Gestão Sumários 6 Outubro 2008 Modo de funcionamento do Projecto Integrado; Apresentação do enunciado ...
Engenharia de Linguagens Projecto Integrado Aulas Tecnológicas Sumários 29 Setembro 2008 Necessidade de um ambiente de programação eficiente: Editor, linha ...
Engenharia de Linguagens Bibliografia: Scripting Livros Randal L. Schwartz, Tom Phoenix, brian d foy, Learning Perl , O'Reilly Media Larry Wall, Tom Christiansen ...
Engenharia de Linguagens Etapas do Projecto As entradas marcadas a vermelho correspondem a avaliações. As restantes correspondem a pontos de controlo, para que possam ...
Engenharia de Linguagens Análise e Transformação de Software 2008/09 Exercícios e Exemplos para as aulas Exemplo 1: Neste primeiro exemplo pretende se analisar ...
Engenharia de Linguagens Engenharia Gramatical 2008/09 Exercícios e Exemplos para as aulas Exemplo 1: Escreva, em notação !AnTLR, uma Gramática para uma linguagem ...
Engenharia de Linguagens GraphViz no XP/Vista Para quem usa Windows Vista (e talvez XP ? ) com o Strawberry Perl, e não conseguia por a funcionar o módulo !GraphViz ...
Engenharia de Linguagens Método de Avaliação A avaliação da UCE de Engenharia de Linguagens é calculada pela seguinte fórmula: NF 15% PED 15% EG 15% ATS ...
Engenharia de Linguagens Engenharia Gramatical 2008/09 Programa Resumido O paradigma da Programação baseada em Gramáticas (PG). Conceitos sobre Gramáticas ...
Engenharia de Linguagens Análise e Transformação de Software Sumários 02 de Março de 2009 I.1 Introdução e Motivação para a área de Análise e Transformação ...
Engenharia de Linguagens Engenharia Gramatical 2008/09 Sumários 29 de Setembro de 2008 Apresentação da Disciplina de EG: Apresentação da Equipe Docente ...
Education/EL0809 Web Preferences The following settings are web preferences of the Education/EL0809 web. These preferences overwrite the site level preferences ...
This is a subscription service to be automatically notified by e-mail when topics change in this Education/EL0809 web. This is a convenient service, so you do not have to come back and check all the time if something has changed. To subscribe, please add a bullet with your WikiName in alphabetical order to this list:
Each TWiki web has an automatic e-mail notification service that sends you an e-mail with links to all of the topics modified since the last alert.
Users subscribe to email notifications using their WikiName or an alternative email address, and can specify the webs/topics they wish to track using one of these bullet list formats:
three spaces * [ webname . ] wikiName - SMTP mail address three spaces * [ webName . ] wikiName three spaces * SMTP mail address three spaces * SMTP mail address : topics three spaces * [ webname . ] wikiName : topics
In the above examples, topics is a space-separated list of topic names. The user may further customize the specific content they will receive using the following formats:
Specify topics without a Web. prefix
Topics must exist in this web.
Topics may be specified using * wildcards
Each topic may optionally be preceded by a '+' or '-' sign. The '+' sign means "subscribe to this topic" (the same as not putting anything). The '-' sign means "unsubscribe" or "don't send notifications regarding this topic". This allows users to elect to filter out certain topics (and their children, to an arbitrary depth). Topic filters ('-') take precedence over topic includes ('+').
Each topic may optionally be followed by an integer in parentheses, indicating the depth of the tree of children below that topic. Changes in all these children will be detected and reported along with changes to the topic itself. Note This uses the TWiki "Topic parent" feature.
Each topic may optionally be immediately followed by an exclamation mark ! or a question mark ? with no intervening spaces, indicating that the topic (and children if there is a tree depth specifier as well) should be mailed out as complete topics instead of change summaries. ! causes the topic to be mailed every time even if there have been no changes, ? will mail the topic only if there have been changes to it. This only makes sense for subscriptions.
For example:
Subscribe Daisy to all changes to topics in this web.
* daisy.cutter@flowers.com
Subscribe Daisy to all changes in all webs that start with Web.
* daisy.cutter@flowers.com: Web*
Subscribe Daisy to changes to topics starting with Petal, and their immediate children, WeedKillers and children to a depth of 3, and all topics that match start with Pretty and end with Flowers e.g. PrettyPinkFlowers
Subscribe Daisy to the full content of NewsLetter whenever it has changed
* daisy@flowers.com: TWiki.NewsLetter?
Subscribe buttercup to NewsLetter and its immediate children, even if it hasn't changed.
* buttercup@flowers.com: TWiki.NewsLetter! (1)
Subscribe GardenGroup (which includes Petunia) to all changed topics under AllnewsLetters to a depth of 3. Then unsubscribe Petunia from the ManureNewsLetter, which she would normally get as a member of GardenGroup? :
A user may be listed many times in the WebNotify topic. Where a user has several lines in WebNotify that all match the same topic, they will only be notified about changes that topic once (though they will still receive individual mails for news topics).
If a TWiki group is listed for notification, the group will be recursively expanded to the e-mail addresses of all members.
Tip: List names in alphabetical order to make it easier to find the names.
Note for System Administrators: Notification is supported by an add-on to the TWiki kernel called the MailerContrib. See the MailerContrib topic for details of how to set up this service.
Note: If you prefer a news feed, point your reader to WebRss (for RSS 1.0 feeds) or WebAtom (for ATOM 1.0 feeds). Learn more at WebRssBase and WebAtomBase, respectively.
Related topics:WebChangesAlert, TWikiUsers, TWikiRegistration
These settings override the defaults for this web only. See full list of defaults with explanation. Many of the settings below are commented out. Remove the # sign to enable a local customisation.
Web-specific background color: (Pick a lighter one of the StandardColors).
Set WEBBGCOLOR = #D0D0D0
Note: This setting is automatically configured when you create a web
Image, URL and alternate tooltip text of web's logo. Note: Don't add your own local logos to the TWikiLogos topic; create your own logos topic instead.
List this web in the SiteMap. If you want the web listed, then set SITEMAPLIST to on, do not set NOSEARCHALL, and add the "what" and "use to..." description for the site map. Use links that include the name of the web, i.e. Education/EL0809.Topic links. Note: Unlike other variables, the setting of SITEMAPLIST is not inherited from parent webs. It has to be set in every web that is to be listed in the SiteMap
Set SITEMAPLIST = on
Set SITEMAPWHAT =
Set SITEMAPUSETO = Engenharia de Linguagens
Note: Above settings are automatically configured when you create a web
Exclude web from a web="all" search: (Set to on for hidden webs).
Set NOSEARCHALL =
Note: This setting is automatically configured when you create a web
Prevent automatic linking of WikiWords and acronyms (if set to on); link WikiWords (if empty); can be overwritten by web preferences:
#Set NOAUTOLINK =
Note: You can still use the [[...][...]] syntax to link topics if you disabled WikiWord linking. The <noautolink> ... </noautolink> syntax can be used to prevents links within a block of text.
Default template for new topics for this web:
WebTopicEditTemplate: Default template for new topics in this web. (Site-level is used if topic does not exist)
Comma separated list of forms that can be attached to topics in this web. See TWikiForms for more information.
Set WEBFORMS =
Users or groups who are not / are allowed to view / change / rename topics in the Education/EL0809 web: (See TWikiAccessControl). Remove the # to enable any of these settings. Remember that an empty setting is a valid setting; setting DENYWEBVIEW to nothing means that anyone can view the web.
Preferences are used as TWikiVariables by enclosing the name in percent signs. Example:
When you write variable %WEBBGCOLOR% , it gets expanded to #D0D0D0
The sequential order of the preference settings is significant. Define preferences that use other preferences first, i.e. set WEBCOPYRIGHT before WIKIWEBMASTER since %WEBCOPYRIGHT% uses the %WIKIWEBMASTER% variable.
You can introduce your own preferences variables and use them in your topics and templates.
TWiki search results for \.*
http://wiki.di.uminho.pt/twiki/bin/view/Education/EL0809
The Education/EL0809 web of TWiki. TWiki is a Web-Based Collaboration Platform for the Enterprise.en-usCopyright 2020 by contributing authorsTWiki Administrator [webmaster@di.uminho.pt]The contributing authors of TWikiTWikiDIUM.Education/EL0809
http://wiki.di.uminho.pt/twiki/bin/view/Education/EL0809
/twiki/pub/Main/LocalLogos/um_eengP.jpgFichasEG08
http://wiki.di.uminho.pt/twiki/bin/view/Education/EL0809/FichasEG08
Engenharia de Linguagens Engenharia Gramatical 2008/09 Exercícios e Exemplos para as aulas Exemplo 1: Escreva, em notação !AnTLR, uma Gramática para uma linguagem ... (last changed by PedroRangelHenriques)2010-11-07T08:01:18ZPedroRangelHenriquesProgramaATS08
http://wiki.di.uminho.pt/twiki/bin/view/Education/EL0809/ProgramaATS08
Engenharia de Linguagens Análise e Transformação de Software Análise de programas: Extracção de dados Armazenamento da informação recolhida ... (last changed by PedroRangelHenriques)2009-11-25T10:28:20ZPedroRangelHenriquesProgramaEG08
http://wiki.di.uminho.pt/twiki/bin/view/Education/EL0809/ProgramaEG08
Engenharia de Linguagens Engenharia Gramatical 2008/09 Programa Resumido O paradigma da Programação baseada em Gramáticas (PG). Conceitos sobre Gramáticas ... (last changed by PedroRangelHenriques)2009-11-24T11:39:16ZPedroRangelHenriquesSumariosEG08
http://wiki.di.uminho.pt/twiki/bin/view/Education/EL0809/SumariosEG08
Engenharia de Linguagens Engenharia Gramatical 2008/09 Sumários 29 de Setembro de 2008 Apresentação da Disciplina de EG: Apresentação da Equipe Docente ... (last changed by DanielaCruz)2009-10-12T15:49:28ZDanielaCruz_WebHome
http://wiki.di.uminho.pt/twiki/bin/view/Education/EL0809/_WebHome
Unidade Curricular de Especialização Engenharia de Linguagens (2008/2009) Edições Anteriores: 2008/2009 Responsável pela UCE: Rangel Henriques ... (last changed by JoseFaria)2009-09-23T10:52:56ZJoseFariaResultadosAvaliacao
http://wiki.di.uminho.pt/twiki/bin/view/Education/EL0809/ResultadosAvaliacao
Engenharia de Linguagens Resultados de Avaliação G Nome PED EG ATS PLN PI NF 1 Miguel Esteves 19 15 17 ... (last changed by AlbertoSimoes)2009-08-31T15:31:09ZAlbertoSimoesSumariosATS08
http://wiki.di.uminho.pt/twiki/bin/view/Education/EL0809/SumariosATS08
Engenharia de Linguagens Análise e Transformação de Software Sumários 02 de Março de 2009 I.1 Introdução e Motivação para a área de Análise e Transformação ... (last changed by PedroRangelHenriques)2009-06-27T06:21:33ZPedroRangelHenriquesA2s2p:sumarios
http://wiki.di.uminho.pt/twiki/bin/view/Education/EL0809/A2s2p:sumarios
Engenharia de Linguagens Projecto Integrado Aulas do 2ºSemestre, 2ªparte Sumários 02 de Março de 2009 Modo de funcionamento do Projecto Integrado no 2ºSemestre ... (last changed by PedroRangelHenriques)2009-06-06T23:36:28ZPedroRangelHenriquesWebHome
http://wiki.di.uminho.pt/twiki/bin/view/Education/EL0809/WebHome
Unidade Curricular de Especialização Engenharia de Linguagens (2008/2009) Edições Anteriores: 2007/2008 Responsável pela UCE: Rangel Henriques ... (last changed by DanielaCruz)2009-06-01T14:15:38ZDanielaCruzA2s1p:sumarios
http://wiki.di.uminho.pt/twiki/bin/view/Education/EL0809/A2s1p:sumarios
Engenharia de Linguagens Sumários Segundo Semestre, Aulas da Manhã 02 de Março de 2009 Modo de funcionamento do Projecto Integrado no 2ºSemestre. Discuss ... (last changed by AlbertoSimoes)2009-04-20T19:00:12ZAlbertoSimoesEtapasDoProjecto
http://wiki.di.uminho.pt/twiki/bin/view/Education/EL0809/EtapasDoProjecto
Engenharia de Linguagens Etapas do Projecto As entradas marcadas a vermelho correspondem a avaliações. As restantes correspondem a pontos de controlo, para que possam ... (last changed by AlbertoSimoes)2009-04-20T10:39:15ZAlbertoSimoesAlunosGrupos08
http://wiki.di.uminho.pt/twiki/bin/view/Education/EL0809/AlunosGrupos08
Engenharia de Linguagens Alunos/Grupos 2008/09 1 Miguel Esteves 1 Nuno Correia 1 Tiago Correia 2 Nuno Veloso 3 Susana Silva ... (last changed by AlbertoSimoes)2009-03-23T12:05:42ZAlbertoSimoesFichasATS08
http://wiki.di.uminho.pt/twiki/bin/view/Education/EL0809/FichasATS08
Engenharia de Linguagens Análise e Transformação de Software 2008/09 Exercícios e Exemplos para as aulas Exemplo 1: Neste primeiro exemplo pretende se analisar ... (last changed by PedroRangelHenriques)2009-03-17T07:01:32ZPedroRangelHenriquesAG:sumarios
http://wiki.di.uminho.pt/twiki/bin/view/Education/EL0809/AG:sumarios
Engenharia de Linguagens Projecto Integrado Aulas de Gestão Sumários 6 Outubro 2008 Modo de funcionamento do Projecto Integrado; Apresentação do enunciado ... (last changed by PedroRangelHenriques)2009-03-08T22:24:17ZPedroRangelHenriquesAvaliaçõesPeriódicas
http://wiki.di.uminho.pt/twiki/bin/view/Education/EL0809/AvaliaçõesPeriódicas
Engenharia de Linguagens PI: Avaliações Periódicas G Nome 10Nov 15Dez 1 Miguel Esteves Sat MBom 1 Nuno Correia Sat MBom ... (last changed by AlbertoSimoes)2009-03-02T18:56:37ZAlbertoSimoesAT:sumarios
http://wiki.di.uminho.pt/twiki/bin/view/Education/EL0809/AT:sumarios
Engenharia de Linguagens Projecto Integrado Aulas Tecnológicas Sumários 29 Setembro 2008 Necessidade de um ambiente de programação eficiente: Editor, linha ... (last changed by AlbertoSimoes)2009-01-04T22:18:22ZAlbertoSimoes
Modo de funcionamento do Projecto Integrado no 2ºSemestre, 2ªParte.
Apresentação dos 3 Casos de Estudo que servirão de suporte à disciplina:
CS1 (Gestão de Candidaturas de projectos de I&D a financiamento da FCT): neste caso a entidade principal é 'Candidatura' que tem uma 'Equipe' de investigadores que pertencem a 'Instituições Parceiras' e participam num projecto organizado em 'Tarefas' que tem 'Resultados' avaliados em 'Milestones' -- o sistema permite carregar candidaturas, lacrar, avaliar, aprovar, fazer os pagamentos e as medidas de execução, fechar.
CS2 (Gestão de Marcação de Consultas numa Clínica Médica): neste caso a entidade central é 'Consulta' que envolve 'Paciente', 'Médico' e 'Ficha Clínica' -- além de manter a informação sobre Médicos e Pacientes, é preciso Marcar Consultas e Registar Episódio Clínico na ficha.
CS3 (Sistema para estudo Prosopográfico do Clero Catedralício): aqui a entidade principal, não é uma, são duas. Na 1ªfase é a 'Ficha de Documento' à qual estão associadas as fichas com descrições individuais dos Clérigos; na 2ªfase é a 'Ficha Prosopográfica de cada Clérigo' com as sua referências para as fontes documentais -- neste caso o objectivo, além de carregar e mostrar a informação, é fazer a 'Normalização' das fichas e a 'Fusão' das várias fichas com descrições individuais dos Clérigos na respectiva Ficha Prosopográfica.
Apresentação do enunciado da componente do projecto integrado, Sistema DRAW, que será trabalhada nesta 2ªparte --- uma linguagem para especificação do Modelo de DadosdreqL:
Análise de Requisitos: a linguagem deve permitir definir os Tipos Atómicos (Primitivos, Renomeados, Enumerados), Tipos Estruturados (Set, Seq, Tree, Tuple e Map), Relações implícita ou explicitamente. Além disso, alguns atributos dos campos devem ser especificados (editável, nulo, visível, comprimento máximo, mascarado, chave, auto-increment).
TPC: a) Criar o Modelo de Dados (UML ou VDM) para os 3 Casos de Estudo; b) terminar a análise de requisitos para dreqL.
09 de Março de 2009
Recapitulação dos objectivos e modo de funcionamento do Projecto Integrado no 2ºSemestre, 2ªParte.
Revisão do enunciado da componente do projecto que vai ser trabalhada nesta parte: a linguagem dreqL para descrição da estrutura de dados de uma aplicação e sua integração com a linguagem DRAW.
Discussão muito detalhada do TPC realizado pelos alunos no sentido de criar um Modelo Lógico (DER ou Diagrama de Classes UML) para os 3 Casos de Estudo que servirão de suporte à disciplina:
CS1 (Gestão de Candidaturas de projectos de I&D a financiamento da FCT): apuramento do Modelo proposto por Miguel Esteves (em comparação com o do Sérgio e outros) -- ver Diagrama de Classes Final.
TPC: terminar os modelos para os 2 outros casos e entregar em papel o 1ºmodelo.
16 de Março de 2009
Discussão muito detalhada do TPC realizado pelos alunos no sentido de criar um Modelo Lógico (DER ou Diagrama de Classes UML) para os 3 Casos de Estudo que servirão de suporte à disciplina:
CS2 (Gestão de Candidaturas de projectos de I&D a financiamento da FCT): apuramento do Modelo final -- ver Diagrama de Classes Final.
CS3 (Sistema para estudo Prosopográfico do Clero Catedralício): discussão do modelo inicial e dos conceitos envolvidos.
Discussão muito calorosa sobre Modelação de Sistemas de Informação; o Modelo Relacional e o DER versus o Modelo Orientado a Objectos e o DClasses.
TPC: terminar o modelo para o último caso e entregar em papel e em formato electrónico o Diagrama dos 3 Modelos.
23 de Março de 2009
Discussão muito detalhada do TPC realizado pelos alunos no sentido de criar um Modelo Lógico (DER ou Diagrama de Classes UML) para os 3 Casos de Estudo, já propostos, que servirão de suporte à disciplina:
CS3 (Sistema para estudo Prosopográfico do Clero Catedralício): discussão do modelo final; comparação de interpretações e abordagens diversas.
Apresentação de mais 2 Casos de Estudo que servirão de suporte à disciplina:
CS4 (Gestão de Aquisições num Organismo Público): neste caso a entidade principal é 'Ficha de Aquisição', a qual se associa a unidades organicas e produtos, fornecedores e orçamento, de modo a poder-se fazer a sua cabimentação nas rubricas orçamentais e a respectiva autorização de compra.
CS5 (Gestão de Correspondência): neste caso a entidade principal é 'Correspondência' estando ligada a 'Funcionarios' de modo a permitir fazer o registo completa de cada correspondencia que chega à institução, identificando o destinatário interno e fazendo os eu tracking até ser arquivada.
Enquadramento desta componente de PI com o trabalho já feito, em realização e futuro:
para o efeito foi revista a Arquitectura geral de uma Aplicação Web do tipo Data-centric, formada por 3 camadas: a camada de interacção (dita o Front-Office do sistema); o repositório de dados (em torno do qual se centram as operações); e a camada intermédia (o Middleware) que estabelece a ligação entre as outras duas camadas.
a linguagem DRAW serve para especificar a camada de interacção;
para interligação das duas será definida uma outra linguagem, interL, que mapeia os dados da interface com os dados contidos no repositório;
a linguagem dreqL surge para especificar o repositório -- sua estrutura e manutenção (ou seja, o conjunto de operações que formam o Back-Office do sistema).
TPC1: fazer o modelo para os dois novos casos e entregar em papel e em formato electrónico o respectivo Diagrama.
TPC2: propor uma definição para a linguagem dreqL; apresentar a sua GIC.
30 de Março de 2009
Discussão muito detalhada do TPC realizado pelos alunos no sentido de criar um Modelo Lógico (DER ou Diagrama de Classes UML) para os 5 Casos de Estudo, já propostos, que servirão de suporte à disciplina:
CS4 (Sistema para estudo Gestão de Aquisições num Organismo do Estado): discussão do modelo final; comparação de interpretações e abordagens diversas.
CS5 (Sistema para estudo Gestão de Corresondência num Organismo do Estado): discussão do modelo final; comparação de interpretações e abordagens diversas.
Discussão muito detalhada das propostas para a linguagem dreqL apresentadas por cada grupo; análise da gramática e de frases concretas.
TPC1: apresentar a versão final da gramática para definição da linguagem dreqL e frases de sua instanciação aplicadas aos 5 Casos de Estudo.
20 de Abril de 2009
Discussão e avaliação, grupo a grupo, da linguagem dreqL proposta, da sua gramática e parser gerado pelo AnTLR e análise de frases concretas aplicadas a cada um dos 5 Casos de Estudo.
TPC1: gerar código SQL para Criar as Tabelas de uma Base de Dados que implemente o sistema de informação especificado em dreqL
27 de Abril de 2009
1ªetape de avaliação (do 2ºsemestre) do Projecto Integrado: estado de definição das linguagens DRAW e dreqL e de desenvolvimento dos respectivos processadores (geração do código SQL para criação das Tabelas correspondentes ao modelo descrito); aplicação aos Casos de Estudo.
04 de Maio de 2009
Conclusão da 1ªetape de avaliação (do 2ºsemestre) do Projecto Integrado.
Início do desenvolvimento do Gerador de Código associado à dreqL para realizar as funções de CRUD.
11 de Maio de 2009
Não houve aula devido às festividades do Enterro da Gata.
18 de Maio de 2009
Aula dada pelo JJ.
25 de Maio de 2009
Discussão e continuação do desenvolvimento do Gerador de Código associado à dreqL para geração das funções em Perl que invocam as instruções SQL para implementar as funções de CRUD (uma função por tabela).
02 de Junho de 2009
Discussão e continuação do desenvolvimento do Gerador de Código associado à dreqL para geração das funções em Perl que invocam as instruções SQL para implementar as funções de CRUD (uma função por tabela).
Preparação da 3ªcamada de interacção que vai usar objectos para ligar a descrição DRAW à dreqL oferecendo ao programador uma série de operações e interrogadores de alto nivel (próximo do modelo OO).
As entradas marcadas a vermelho correspondem a avaliações. As restantes correspondem a pontos de controlo, para que possam ter uma ideia do andamento dos vossos projectos.
Sugere-se a visita regular a esta página, já que poderão surgir actualizações/adições de sugestões de implementação.
27 de Outubro - Implementação de uma linguagem básica para a representação de grafos (por exemplo, inspirada na do graphviz), e uma ferramenta que gere um conjunto de CGI capazes de navegar sobre este grafo. A implementação desta etapa será iniciada nas aulas de 20 de Outubro.
3 de Novembro - Especificação de um conjunto base de tipos (STR, INT, TEXT, FLOAT, DATE, PASSWORD, EMAIL, URL). Adição sobre a linguagem da etapa anterior de parâmetros em cada aresta. Cada estado (CGI) deve mostrar um formulário por acção (aresta) existente. Por exemplo, se do vértice A partem duas arestas, uma com os campos Nome: STR, Morada: TEXT, e uma outra com os campos Nome: STR, Pass: PASSWORD, a CGI referente ao vértice A deverá apresentar dois formulários, um para cada uma das possíveis acções. Depois de escolhida uma acção, o estado de destino dessa aresta deverá imprimir os valores preenchidos no formulário anterior.
Sugestão 1: colocar em evidência os campos com nomes iguais, de forma a que sejam partilhados pelos dois formulários.
Sugestão 2: procurar módulos de validação/geração de formulários no CPAN como o HTML::FormFu ou o CGI::FormBuilder.
Sugestão 3: validar os valores submetidos de acordo com o seu tipo (ver sugestão 2, ou JavaScript).
10 de Novembro - Avaliação das etapas anteriores. Esta avaliação será feita das 11h00 em diante.
17 de Novembro - Adição de funções de processamento nas arestas do grafo. Estas funções estarão presentes num outro documento Perl (por exemplo num módulo Perl) e serão invocadas sempre que necessário. Assim, cada transição entre estados deixa de conter apenas os parâmetros, mas sim uma assinatura de uma função: nome da função, parâmetros necessários (que correspondem à etapa do dia 3 de Novembro), e o tipo de retorno da função. Quando um utilizador utilizar um formulário, os dados serão usados para invocar a função, e o resultado final será mostrado. Por exemplo: soma(a: INT, b:INT): INT
24 de Novembro - Não há garantias que uma função invocada durante a transição entre estados não dê erro. Ou seja, uma função de inserir que, teoricamente, não devolve nada (apenas altera o estado na base de dados) pode dar um erro. Como esta função, qualquer outra pode dar erro. Assim, implicitamente o DRAW deve considerar que todas as funções retornam um "maybe": o tipo especificado se não der erro, ou undef no caso de ter ocorrido um erro. Em caso de erro, a variável especial do Perl $@ será usada para guardar a mensagem de erro. O nodo de destino deverá verificar o retorno da função invocada. Se o valor for undef, a mensagem de erro é mostrada. Caso contrário, é mostrado o resultado de invocar a função.
1 de Dezembro - NOTA: Não há aula por ser feriado, mas há trabalho programado! Em caso de dúvidas procurem-nos durante o resto da semana, ou usem e-mail! Uma função não retorna necessariamente um tipo escalar. Por exemplo, uma pesquisa numa base de dados retorna uma lista de registos. Torna-se, pois, imprescindível adicionar tipos estruturados à linguagem DRAW:
Tuplo: uma sequência de tipos (básicos, para já!). Por exemplo: ProcuraRegisto(Nome: STR):(Nome: STR, Idade: INT, Morada: STR)
Lista: uma sequência homogénea de tipos (básicos ou tuplos). Por exemplo: Alunos():(Nome: STR, Idade: INT)*
Os exemplos usam uma sintaxe ilustrativa. Usem a vossa sintaxe!
8 de Dezembro - NOTA: Não há aula por ser feriado, mas há trabalho programado! Em caso de dúvidas procurem-nos durante o resto da semana, ou usem e-mail! A framework já deve ser capaz de suportar uma aplicação simples! Implementem uma aplicação simples usando a vossa própria framework. Isso permitirá encontrar erros ou limitações. Alguns exemplos de possíveis aplicações:
Lista telefónica: permitir adicionar nomes e números de telefone. Permitir apagar registos, e listar nomes de acordo com um padrão de pesquisa.
Dicionário Online: permitir consultar e adicionar palavras e respectivas definições. Permitir alterar a definição. Permitir listar palavras de acordo com um padrão de pesquisa.
Mais sugestões com o tempo...
15 de Dezembro - Avaliação das etapas anteriores.
Janeiro - Permitir que em cada transição, para além da invocação de uma função, seja possível propagar variáveis entre estados. Deste modo será possível, por exemplo, que o username de um utilizador introduzido na página de login possa ser propagado por todas as restantes páginas. Note-se que as variáveis propagadas só são mostradas se fizerem parte de um formulário. Os formulários deverão ser preenchidos caso existam definidas variáveis com os nomes dos campos respectivos.
Fevereiro - Permitir que as funções de transição retornem um tipo especial, chamado 'VARS' que corresponda a uma tabela associativa, que mapeie nomes de variáveis em valores. Isto permitirá, por exemplo, que depois de um formulário em que se peça a chave de uma tabela, seja possível mostrar o formulário para editar o registo da base de dados, preenchendo automaticamente o formulário com os respectivos valores.
Abril - Definição da linguagem DReqL? , e criação do Parser;
27 de Abril - Avaliação!
Propagação de variáveis, entre estados e a partir de funções
Gerador de código SQL para criação do modelo relacional a partir do DReqL? .
Exemplo 1:
Neste primeiro exemplo pretende-se analisar gramáticas,
escritas de acordo com a meta-gramática seguinte antlr3.g.
Para efeitos de análise pretende-se extrair, armazenar e visualizar a seguinte informação:
Tabela de identificadores
Grafo de dependências
Métricas de tamanho
Posteriormente pretende-se reescrever a gramática, eliminando produções inúteis e normalizando
a forma de recursividade removendo os operadores próprios do extended-BNF.
Questões colocadas nas aulas
Q1:
(2009.03.16) Diga qual a relação entre a Compreensão de Programas, usada a nível da Engenharia de Software (na manutenção, re-utilização e certificação de aplicações), e os sistema para Avaliação da Qualidade de Documentos Anotados eXVisXML ?
Q2:
(2009.03.16) Escolha um dialecto XML definido pelo grupo no módulo de PED do 1ºSemestre e escolha uma documento concreto escrito nesse dialecto XML e calcule manualmente as Métricas previstas no eXVisXML.
Fichas Práticas para resolver fora das aulas
Ficha I (Data de Entrega: 2009.XX.XX --- relatório em Literate Programming)
Exemplo 1:
Escreva, em notação AnTLR, uma Gramática para uma linguagem que:
aceite uma Lista de Números;
gere o respectivo Parser com o AnTLR;
teste o parser com o Debugger visual do AnTLRWorks;
Acrescente Acções Semânticas (e depois Atributos) para calcular o Comprimento da Lista.
Exemplo 2:
Escreva, em notação AnTLR, uma Gramática para a famosa linguagem funcional Lisp(1) que:
aceite uma Lista de Números;
gere o respectivo Parser com o AnTLR;
teste o parser com o Debugger visual do AnTLRWorks;
Acrescente Atributos para:
calcular a quantidade de números e palavras da lista;
construir uma lista plana (todos os elementos ao mesmo nível) com os elementos originais associados ao nível a que aparecem;
verificar que todos os elementos da lista sejam do mesmo tipo do 1ºelemento
gerar código post-fix(2) como se a SExp fosse calculada numa máquina de stack.
(1) Considere para este exemplo que a gramática de uma Symbolic Expression (na qual assenta a linguagem Lisp) escrita numa notação geral (livre) é:
T = { num, pal, "(", ")" }
N = { SExp, SExplist }
S = SExp
P = {
p1: SExp --> num
p2: SExp --> pal
p3: SExp --> "(" SExplist ")"
p4: SExplist --> SExp SExplist
p5: SExplist --> &
}
(2) Considere que o código-máquina a gerar (para traduzir as S-Expressions para uma máquina de stack) é uma Linguagem Assembly simples apenas com as 3 instruções seguintes:
LAB pal // LABel significa que o operando 'pal' é uma constante
// alfanumérica (identificador)
CONS num // CONS significa que o operando 'num' é uma constante
// numérica
OPER op // OPER significa que o operando 'op' é um operador
Para melhor compreender o que se pretende, mostra-se abaixo o resultado de processar duas frases válidas da Linguagem Lisp:
Exemplo 3:
Nos tempos que correm, a utilização da linguagem SQL (Structured Query Language) é comummente aceite na comunidade informática
para a interrogação de bases de dados. São várias as ferramentas que fazem
uso desta linguagem: SQL Server, MySQL, Apache Derby, etc.
A gramática da linguagem SQL não é mais do que uma lista de comandos.
Pretende-se neste exercício que implemente a gramática da linguagem SQL com pelo menos 4 comandos à sua escolha.
Em relação aos comandos escolhidos, pode simplificar a sua sintaxe real, incluindo apenas a parte obrigatória (p.ex., no SELECT pode
omitir a parte ORDER-BY ou GROUP-BY).
Depois de implementar a sua gramática, recorrendo ao AnTLR, pretende-se que:
Construa a Árvore de Sintaxe Abstracta (ASA, ou em inglês AST) utilizando o mecanismo próprio do ANTLR;
Depois de ter a AST, deverá:
construir a Tabela de Identificadores (TabId) constituída pelos nomes das Tabelas e pelos nomes dos Campos
gerar uma S-Expr (Lisp) a partir da árvore (uma espécie de pretty-print da AST).
Exemplo 4:
Análise da Qualidade da Gramática de uma Linguagem para Gestão Científica II (Projectos de Investigação): enunciado
Questões colocadas nas aulas
Q1:
(2008.09.29) "Explique porque se constata, ao fazer debug visual no AnTLRWorks, que o parser gerado pelo AnTLR é Top-Down?"
Q2:
(2008.09.29) "O que é preciso acrescentar à Gramática da Lista de Números, do Exemplo 1, para calcular o comprimento da lista (ou contar os seus elementos)?"
Q3:
(2008.10.06) "Porque é que, após analisar o código produzido pelo ANTLR, se pode afirmar que o Parser gerado é um recursivo-descendente (RD) e não um LL?"
Q4:
(2008.10.06) "Porque é que a declaração dos atributos numa gramática AnTLR devia ser introduzida pela palavra-reservada 'synthesizes' e não 'returns' ?"
Q5:
(2008.10.18) Considere a gramática da linguagem Lisp definida na última aula (download aqui) para responder à seguinte questão. Substituindo a produção p4: sExpr -> '(' sExpr* ')' por p4: sExpr -> '(' sExpr sExpr+ ')' como procederia ao cálculo do atributo soma?
Q6:
(2008.10.20) "Porque é que o termo PROPAGAR 'expressa correctamente' o conceito de herança em Gramáticas de Atributos (GAs)?"
Q7:
(2008.10.27) "Os atributos podem ou não ser calculados de uma forma concorrente?"
Q8:
(2008.10.27) "Qual o princípio das GAs que um neto não pode herdar directamente de um(a) avô(ó)?"
Q9:
(2008.10.27) "Qual o inconveniente de alterar código automaticamente gerado?"
Q10:
(2008.10.27) "Qual a diferença de atitude entre JavaDoc (princípio) e Literate Programming?"
Q11:
(2008.11.10) "Qual a diferença entre definir o ';' como Parte integrante dum Comando, ou como Terminador de Comando ? e se for como Separador de Comandos ?"
Q12:
(2008.11.17) "Porque os compiladores actuais e reais não fazem correcção de erros?"
Q13:
(2008.11.17) "Prove, com o autómato LR(0), a diferença entre as seguintes situações: ';' como terminador e ';' como parte integrante do comando."
Q14:
(2008.11.24) "Porque é que o compilador não é um processo interactivo?"
Q15:
(2008.11.24) "Qual o ganho extra que advém do uso de editores sensíveis ao contexto? Diga também qual a diferença entre Editor Sensível ao Contexto e Editor Guiado pela Sintaxe."
Q16:
(2008.11.24) "Qual a diferença entre um compilador à la Pascal e um compilador à la C no que diz respeito ao tratamento de erros em run-time?"
Q17:
(2008.12.15) "Porque é que os Editores Dirigidos pela Sintaxe quase não se utilizam actualmente?"
Q18:
(2008.12.15) "Proponha uma estrutura para construir a Tabela de Identificadores a usar no processamento das Linguagens Orientadas a Objectos."
Q19:
(2009.01.05) Constrúa o Aut-LR(0) para a gramática (GIC) do Exemplo 4.
Q20:
(2009.01.05) Aplique todas as Métricas de Tamanho e de Forma já estudadas à GIC da linguagem Lisp (ver Exemplo 2).
Q21:
(2009.01.26) Explique porque, na prática, se usam 2 gramáticas para a mesma linguagem.
Q22:
(2009.01.26) Calcule as Métricas Lexicográficas e de Forma para as linguagens C, Pascal e XML, usando as gramáticas disponíveis no UltraGram.
Fichas Práticas para resolver fora das aulas
Ficha I (Data de Entrega: 2008.11.10 --- relatório em Literate Programming)
Geração de um Processador para Gestão Científica (Teses e Orientadores): enunciado
Ficha II: Faça um relatório detalhado, recorrendo ao Literate Programming, sobre o Exercício 3 descrito acima.
Ficha III (Data de Entrega: 2009.02.05 --- relatório em Literate Programming):
Pesquise na Internet o que há sobre Métricas para Avaliação da Qualidade em Gramáticas e Linguagens; integre no seu relatório um capítulo específico (mas claro e bem estruturado) sobre o estudo feito.
Avaliação da Qualidade de Gramáticas; Métricas
Retome a Gramática da DSL GCI apresentada no enunciado da Ficha I e estude a sua qualidade avaliando as Métricas que foram ensinadas nas aulas.
Pretende-se repetir a avaliação da sua qualidade depois de efectuar cada uma das 3 transformações abaixo (as alterações são não-cumulativas, isto é, são independentes e realizadas sempre sobre a gramática original):
(T1)
Reduza a gramática G eliminando as produções inúteis.
(T2)
Altere a gramática G de modo a simplificar o lado direito da produção p3, permitindo escrevê-lo
na forma:
p3: Pg --> TWiki.IdOrient TWiki.DescOrientac Periodo
(T3)
Altere a gramática G para agrupar numa única descrição todas as orientações do mesmo Orientador.
Para quem usa Windows Vista (e talvez XP ? ) com o Strawberry Perl, e não conseguia por a funcionar o módulo GraphViz 2.03 do CPAN. Descobri que se trata de um pequeno bug, no ficheiro de configuração do módulo.
Portanto após instalar o GraphViz (www.graphviz.org) no Windows e o módulo GraphViz no CPAN (force install GraphViz):
A avaliação da UCE de Engenharia de Linguagens é calculada pela seguinte fórmula:
NF = 15% PED + 15% EG + 15% ATS + 15% PLN + 15% PI1S + 25% PI2SLegenda:
NF - Nota final
PED - Nota do módulo de PED
EG - Nota do módulo de EG
ATS - Nota do módulo de ATS
PLN - Nota do módulo de PLN
PI1S - Nota do primeiro semestre de Projecto Integrado
PI2S - Nota final de Projecto Integrado
Requisitos:
Nota mínima de 9 valores para cada um dos módulos (PED/EG/ATS/PLN)
Nota mínima de 8 valores na primeira avaliação do Projecto Integrado
Nota mínima de 10 valores na segunda avaliação do Projecto Integrado
Notas:
As avaliações de cada módulo poderão ser de cariz prático, teórico ou misto.
Os pesos e notas mínimas podem ser alterados ligeiramente durante o decorrer do semestre.
Paradigmas para visualização de dados e de conhecimento:
visualização de informação, de dados e de software.
modelos de visualização.
visualização/navegação em árvores, grafos, hiper-cubos, petri-nets.
visualização/navegação em ontologias.
animação de algoritmos.
Exploração de Ambientes de Trabalho usando os paradigmas explicitados nos items acima.
Resultados de Aprendizagem Específicos
Capacidade de construir front-ends poderosos para a análise de linguagens de programação (ambíguas ou não).
Capacidade de desenvolver software como uma tarefa de transformar programas e/ou especificações em implementações eficientes.
Capacidade de utilizar métricas e técnicas de transformação de programas para optimizar programas (e.g. cálculo parcial, detecção de código morto), efectuar debugging de programas (e.g. slicing), melhorar a estrutura dos programas (e.g. refactoring).
Capacidade de definir testes para software e testar automaticamente programas em diferentes linguagens de programação.
Capacidade para criar representações visuais adequadas à compreensão clara do conhecimento complexo detido.
O paradigma da Programação baseada em Gramáticas (PG).
Conceitos sobre Gramáticas de Atributos (GA); definição formal; desenvolvimento de GAs (aproximação monolítica versus modular, incremental).
Processamento de Linguagens baseado em GAs (tradução dirigida pela semântica).
Geração de Programas (processadores de Linguagens, protótipos rápidos) a partir de GAs; Notações gramaticais.
Qualidade de Linguagens; dimensões de avaliação e definição; critérios.
Qualidade de Gramáticas; dimensões de avaliação e definição; critérios.
Métricas para Avaliar a Qualidade das Gramáticas, quer enquanto formalismo de especificação e geração de linguagens, quer enquanto suporte à geração de programas.
Ambientes para Manipulação de Gramáticas.
Resultados de Aprendizagem Específicos
Capacidade para desenvolver especificações da sintaxe/semântica de linguagens e problemas em geral com gramáticas de atributos.
Capacidade para gerar programas usando ferramentas automáticas baseadas em gramáticas de atributos.
Capacidade para gerar ou utilizar ambientes de desenvolvimento estruturais e orientados à semântica.
Capacidade para discutir a qualidade de Linguagens e Gramáticas,
Capacidade para medir Gramáticas e avaliar a sua qualidade.
Capacidade para desenvolver ambientes para Manipulação de Gramáticas.
I.1 Introdução e Motivação para a área de Análise e Transformação de SW; sua inserção no contexto da Engenharia de Software:
noção de análise de código-fonte (outras hipóteses para análise de código intermédio ou máquina);
avaliação do software analisado -- métricas;
transformação como meio para melhorar o software avaliado.
I.2 As quatro grandes componentes envolvidas na disciplina:
extracção de informação do código (fase de análise);
armazenamento da informação extraída;
visualização (paradigmas/exemplos);
transformação.
P.1 Resolução do Exemplo 1:
análise do enunciado; estudo da meta-gramática do AnTLR proposta.
09 de Março de 2009
I.3 Recapitulação dos objectivos da disciplina:
Revisão dos principais conceitos ligados à Análise de Código, tomando como motivação a Comprensão de Programas (necessária à sua Manutenção, Re-utilização e Certificação):
Extracção nao-invasiva, estática vs Extracção invasiva, dinâmica.
Resultados da Extração e da Exploração do Conhecimento (Métricas).
P.1 Resolução do Exemplo 1 (cont.):
análise do enunciado; estudo da meta-gramática do AnTLR proposta; inicio da implementação de um Analisador muito básico.
TPC: terminar a escrita da 1ªfase do graAl, sistema para Análise de Gramáticas.
16 de Março de 2009
I.4 Recapitulação dos objectivos da disciplina:
Revisão dos principais conceitos ligados à Análise de Código e à Comprensão de Programas, extrapolando agora as ideias para a Compreensão e Avaliação de Documentos Anotados em XML:
Apresentação do Sistema para Análise de Documentos eXVisXML; os conceitos de extração de informação, Visualização, Slicing e Métricas subjacentes; as funcionalidades implementadas.
P.1 Resolução do Exemplo 1 (cont.) -- O Analisador de GramáticasgraAl:
estudo detalhado das duas abordagens mais avançadas, apresentadas:
pelo Hélder (para cálculo de várias Métricas, com base em atributos H/S, um para cada métrica);
pelo César (para desenho do Grafo de Dependências, com base na construção de uma Tabela de Identificadores que recolhe toda a informação extraída durante o parsing da gramática).
TPC1: terminar a escrita da fase de análise do graAl.
TPC2: responder às seguintes questões Q1 e Q2 sobre o eXVixXML (a apresentação está disponível aqui).
23 de Março de 2009
P.1 Resolução do Exemplo 1 (cont.) -- O Analisador de GramáticasgraAl:
estudo detalhado das abordagens seguidas por alguns dos grupos.
apresentação e discussão do sistema genérico para análise de gramáticas a partir de XAGra em desenvolvimento por Sérgio e Hugo Areias.
TPC1: terminar a escrita da fase de análise do graAl.
TPC2: responder à seguinte questão Q1 e Q2 sobre o eXVixXML.
30 de Março de 2009
P.1 Resolução do Exemplo 1 (cont.) -- O Analisador de GramáticasgraAl:
estudo detalhado das abordagens seguidas pelos vários grupos.
TPC1: terminar a escrita da fase de análise do graAl relativa às restantes métricas e pensar na transformação conducente à optimização da gramática
20 de Abril de 2009
A Aula desta semana foi totalmente dedicada a avançar com o Projecto Integrado (processamento da Linguagem dreqL com vista à geração de código SQL).
27 de Abril de 2009
P.1 Resolução do Exemplo 1 (cont.) -- O Analisador de GramáticasgraAl:
conclusão da 1ªetape (construção da Tabela de Identificadores, do Grafo de Dependências entre Símbolos e das Métricas de Tamanho e Forma): avaliação do trabalho desenvolvido pelos vários grupos.
Introdução ao Slicing (Backward vs Forward, Estático vs Dinâmico); critério de Slicing.
Slicing de Gramáticas.
04 de Maiode 2009
P.1-f2 Exemplo 1 - fase2 -- extensão do Analisador de GramáticasgraAl para suportar o slicing de Gramáticas a partir de um dado símbolo:
discussão dos resultados atingidos pelos grupos para o caso de BW slicing (visualização em formato texto corrido e por coloração de caminhos sobre o Grafo de Dependências).
Slicing de Gramáticas com Atributos e suas regras de cálculo.
11 de Maio de 2009
Não houve aula devido às festividades do Enterro da Gata.
18 de Maio de 2009
Aula dada por JJ.
25 de Maio de 2009
P.1-f2 Exemplo 1 - fase2 -- extensão do Analisador de GramáticasgraAl para suportar o slicing de Gramáticas a partir de um dado símbolo:
discussão dos resultados atingidos pelos grupos para o caso de BW slicing (visualização em formato texto corrido e por coloração de caminhos sobre o Grafo de Dependências), no caso do FW slicing e do slicing de Gramáticas com Atributos e suas regras de cálculo.
proposta de nova extensão do graAl com a capacidade para transformar uma dada gramática eliminando produções inuteis e normalizando a recursividade.
Extensão do graAl com a capacidade para transformar uma dada gramática eliminando produções inuteis e normalizando a recursividade; discussão dos resultados atingidos pelos grupos que já implementaram tal funcionalidade.
Discussão sobre a data e o formato da avaliação
Construção de uma artigo colectivo (para enviar à CoRTA'2009) sobre o graAl.
Apresentação da Equipe Docente, dos Objectivos e do modo de Funcionamento e Avaliação;
Introdução e Motivação para a área de Processamento de Linguagens e para o desenvolvimento baseado em Gramáticas e em Geradores de Compiladores.
Revisão do conceito de Gramática Indepedente de Contexto (GIC) e de Gramática Tradutora (GT); sua definição formal.
Apresentação da Ferramenta para geração de compiladores (que será usada ao longo de todo o ano) AnTLR e do ambiente de desenvolvimento associado AnTLRWorks usando o Exemplo 1.
06 de Outubro de 2008
Discussão das respostas enviadas pelos alunos às questões Q1 e Q2.
Continuação da exploração do Gerador AnTLR usando como base o Exemplo 1: análise do código Java gerado; o algoritmo de parsing com backtracking e sem backtracking mas com o valor de K (para o cálculo do comprimento do LookAhead) explicitado.
Conclusão da resolução em AnTLR do Exemplo 1, recorrendo agora a um atributo sintetizado para calcular o comprimento da Lista; teste da solução, quer com a forma recursiva não LL(1), em BNF-puro, da gramática, quer com a versão iterativa, em BNF-extendido; incremento da solução com um novo atributo para cálculo da soma dos valores da lista (os atributos intrínsecos dos Terminais "text", "line" e "column").
Gramática Recursiva não-LL(1) (BNF-puro)
Lista --> "[" Nums "]"
Nums --> int
| int',' Nums
Gramática Iterativa (BNF-extendido) --- com resolução em ANTLR
options { k=2; }
lista : '[' nums ']' {
System.out.println("Soma: " + $nums.soma);
System.out.println("Contador: " + $nums.conta);
}
;
nums returns [int soma, int conta=0]
: a = INT {
$soma = Integer.parseInt($a.text);
$conta++;
}
(',' b = INT { $soma += Integer.parseInt($b.text);
$conta++;
}
)*
;
INT : ('+' | '-')? ('0'..'9')+
;
WS : (' ' | '\t' | '\n' | '\r') { channel=HIDDEN; };
Inicio da resolução do Exemplo 2: construção de um parser para a gramática da linguagem Lisp (versão iterativa em BNF-extendido).
Gramática Recursiva LL(1) (BNF-puro)
Lisp --> SExp
SExp --> num
| pal
| "(" SExplist ")"
SExplist --> SExp SExplist
| &
Gramática Iterativa (BNF-extendido)
Lisp --> SExp;
SExp --> num
| pal
| "(" SExp* ")"
13 de Outubro de 2008
Análise das respostas dadas pelos alunos às questões Q3 e Q4; discussão detalhada sobre os conceitos básicos do parsing Top-Down: condição (de não-ambiguidade) LL(1); Algoritmo Recursivo-Descendente (RD) e Algorimto guiado-por-tabela (iterativo e genérico) LL(1).
Continuação da resolução do Exemplo 2:
definição dos atributos para resolver a primeira questão: calcular a quantidade de números e palavras da lista
definição dos atributos para resolver a segunda questão: construir uma lista plana (todos os elementos ao mesmo nível) com os elementos originais associados ao nível a que aparecem.
20 de Outubro de 2008
Análise das respostas dadas pelos alunos à questão Q5 e discussão muito detalhada da solução: sistematização do processo de definição de regras de cálculo em produções iterativas.
Continuação da resolução do Exemplo 2:
definição dos atributos e condições de contexto para validar a semântica estática da linguagem (neste exemplo, verificar que todos os elementos são do tipo do primeiro elemento da lista); discussão de alternativas para construir os atributos relevantes e para colocar as condições de contexto, mais acima ou mais abaixo na árvore), como se vê nos exemplos seguintes.
inicio da geração de código
Como funciona, mas não se deve fazer:
grammar TWiki.LispCheckFirstBad;
/*
verificar que todos os elementos da lista sejam do mesmo tipo do 1.elemento
*/
@header {
import java.util.ArrayList;
}
lisp returns[ArrayList<String> array_out]
@init{ TWiki.ArrayList<String> array_in = new TWiki.ArrayList<String>(); }
: sExp[array_in] { String a = $sExp.array_out.get(0);
if (a.equals("int") && $sExp.array_out.contains("pal")) {
System.out.println("FALSE");
}
else if (a.equals("pal") &&
$sExp.array_out.contains("int")) {
System.out.println("FALSE");
}
else {
System.out.println("TRUE: " + a);
}
}
;
sExp[ArrayList<String> array_in] returns [ArrayList<String> array_out]
: INT { $array_in.add("int"); $array_out = $array_in;}
| PAL { $array_in.add("pal"); $array_out = $array_in; }
| '('
( vez_anterior = sExp[array_in] {
$array_in = $vez_anterior.array_out; } )*
')' { $array_out = $array_in; }
;
Como funciona e se deve fazer para ficar uma solução elegante e eficiente:
grammar TWiki.LispCheckFirstGood;
/*
verificar que todos os elementos da lista sejam do mesmo tipo do
primeiro elemento
*/
lisp returns[String type_out]
@init{ String type_in = new String(""); }
: sExp[type_in] { System.out.println($sExp.type_out); }
;
sExp[String type_in] returns [String type_out]
: INT { if ($type_in.equals("pal") ||
$type_in.equals("FALSE: pal")) {
$type_in = "FALSE: pal";
}
else {
$type_in = "int";
}
$type_out = $type_in;
}
| PAL { if ($type_in.equals("int") ||
$type_in.equals("FALSE: int")) {
$type_in = "FALSE: int";
}
else {
$type_in = "pal";
}
$type_out = $type_in;
}
| '('
( vez_anterior = sExp[type_in] {
$type_in = $vez_anterior.type_out; } )*
')' { $type_out = $type_in; }
;
27 de Outubro de 2008
Análise das respostas dadas pelos alunos à questão Q6; discussão detalhada sobre os conceitos básicos da gramática de atributos, distinguindo a dispersão (propagação) de valores pela árvore abaixo (para transmissão de informação contextual de pai para filhos, ou entre irmãos) da síntese do significado da frase (inferindo informação semântica a partir dos valores extraídos da frase através das folhas da árvore de derivação); Reflexão alongada sobre todo o processo de cálculo de atributos, o que levou à formulação das questões Q7 a Q9.
Utilização de Literate Programming (LitPrg) na resolução das Fichas Práticas para produção do respectivo relatório (que constituirá o objecto de avaliação neste módulo de EG); apresentação do conceito e do princípio de desenvolvimento subjacente; referência a algumas ferramentas de LitPrg e introdução ao Nuweb; formulação da Q10.
Conclusão da resolução do Exemplo 2:
definição dos atributos para resolver a última questão, gerar código post-fix para representar um programa Lisp, discussão de alternativas e implementação do processo de tradução.
Introdução ao Exemplo 3: processamento de linguagens através da construção explícita e travessias da Árvore de Sintaxe Abstracta (AST)
apresentação das facilidades do AnTLR para construção de uma AST durante o parsing.
03 de Novembro de 2008
Análise das respostas dadas pelos alunos à questão Q7 a Q10: continuação da discussão sobre cálculo de atributos (inferência de uma ordem parcial, sua totalização para o cálculo sequencial e detecção da independência para o cálculo concorrente); questões práticas associadas à utilização de programas gerados automaticamente; distinção clara entre escrever um documento que expões um problema e discute a sua resolução através do desenvolvimento de um programa (Literate Programming) próprio do acto de escrever um programa e o comentar detalhadamente (incluindo alguma meta-informação nos comentários, como é o caso do JavaDoc).
Processamento de Linguagens através da construção explícita de uma Árvore de Sintaxe Abstracta (AST) e suas travessias
Continuação do estudo das facilidades do AnTLR para construção de uma AST durante o parsing -- ilustração através da aplicação de vários operadores ao Exemplo 2 (Linguagem Lisp).
Exploração da facilidade anterior para fazer o slicing sintático da Árvore de Derivação ('Parsing Tree') concreta e completa do texto-fonte.
Introdução às Tree-Grammars para definir Travessias à AST que a processam -- construção de Sistemas de Produção (sistena de regras Condição-Reacção, por pattern-matching nos nodos da árvore) para transformação do texto-fonte.
Continuação da resolução do Exemplo 3: elaboração da CFG (GIC) com os comandos SQL escolhidos por cada grupo.
Sistematização da utilização de Gramáticas Tradutoras (GT) vs Gramáticas de Atributos (GA); cálculo de atributos on-the-fly (durante o parsing) e cálculo a-posteriori através de travessias à árvore. Ainda na utilização de GAs, discussão da utilização da Tradução Dirigida pela Semântica conjugada com a construção da Árvore de sintaxe abstracta.
Discussão sobre a forma de construir um relatório. Cada relatório deverá ser composto por:
Introdução
Problema a resolver e Objectivos
Análise
Concepção da Solução
Implementação
Conclusão
Continuação da resolução do Exemplo 3: elaboração da CFG (GIC) com os comandos SQL escolhidos por cada grupo; construção da respectiva AST e início da definição de transformações.
17 de Novembro de 2008
Discussão breve (a propósito da Q11) do Tratamento de Erros num Compilador. Referência a cada uma das fases:
Detecção (implícita nos algorítmos de cada uma das 3 etapes de Análise;
Sinalização do erro: localização, diagnóstico e terapia;
Correcção (os modelos formais de correcção) e Recuperação (Ponto-de-Recomeço e Terminais-Fidedignos).
Continuação da resolução do Exemplo 3: elaboração da CFG (GIC) com os comandos SQL escolhidos por cada grupo; construção da respectiva AST e início da definição de transformações.
Linguagens Visuais, VisualLISA:
Exemplificação dos Editores/compiladores gerados automaticamente com o Devil: VisualTopicMaps e VisualDRAW;
Apresentação e Testes com a Linguagem Visual para especificação de Gramáticas de Atributos, VisualLISA;
Resposta a um inquérito sobre a "usabilidade" deste editor.
24 de Novembro de 2008
A propósito da Q12, continuação da discussão mais aprofundada sobre Tratamento de Erros no Processamento de Linguagens e mais específicamente num Compilador:
ainda, Correcção versus Recuperação.
referência a Editor Sensível ao Contexto e Editor Guiado pela Sintaxe.
Continuação da resolução do Exemplo 3: elaboração da CFG (GIC) com os comandos SQL escolhidos por cada grupo; construção da respectiva AST e início da definição de transformações.
Linguagens Visuais, VisualLISA:
Definição de Linguagem Visual e Gramática Visual; exemplo da gramática da VisualLISA? em notação PLG (Picture Layout Grammar).
Breve introdução ao sistema gerador de Editores/Reconhecedores de Linguagens Visuais, DEVIL (Development Environment for Visual Languages), baseado no Eli e no gerador de compiladores para gramática de atributos LIGA.
Apresentação da especificação completa da Linguagem VisualLIGA incluindo a sintaxe, semântica estática, geração de código e o editor.
15 de Dezembro de 2008
A propósito da Q14, Q15 e Q16 continuação da discussão aprofundada sobre Tratamento de Erros no Processamento de Linguagens (mais específicamente num Compilador), bem como sobre Edição Assistida:
erros de run-time (versus erros em compile-time).
discussão do binómio Editor Sensível ao Contexto e Editor Guiado pela Sintaxe.
Introdução à Qualidade de Linguagens (QL) e Qualidadade de Gramáticas (QG); Métricas:
Discussão sobre critérios para Avaliar a QG e a QL.
Critérios apresentados para avaliar a QG:
Legibilidade da gramática (identificadores, documentação, meta-linguagem),
como formalismo que descreve uma linguagem,
como especificação de um processador;
Características da linguagem gerada pela gramática
Portabilidade da gramática (nas 2 perspectivas acima);
Adaptabilidade (para Evolução da Linguagem);
Eficiência como suporte à Geração Automática dum Processador para a respectiva Linguagem (tempo+memória);
Eficiência do Reconhecedor (Processador) gerado com base nessa gramática(tempo+memória).
Critérios apresentados para avaliar a QL:
Legibilidade dos textos (programas) escritos nessa linguagem;
Expressividade;
Abstracção;
Consistência;
Unicidade;
Documentação;
Extensibilidade / Adaptabilidade;
Escalabilidade.
Métricas de Tamanho relativas à gramática:
Numero de Terminais (#T)
Numero de Não-Terminais (#NT)
Numero de Produções (#P)
Numero de Produções Inuteis (#PI)
Numero Médio de Alternativas para um NT ($Alt-med)
Comprimento Médio do RHS de cada Produção ($RHS-med)
05 de Janeiro de 2009
Dado faltar um grande número de alunos, não foram discutidas as últimas questões Q17 e Q18.
Para colmatar a discussão sobre o tratamento de erros (recuperação) e preparar as métricas relativas à qualidade das gramáticas, foi feita uma introdução muito sucinta ao conceito de Autómato Determinista de Parsing LR(0) e ao processo de construção:
exemplo apresentado: Aut-LR(0) da linguagem Lisp (Exemplo 2);
exemplo proposto para fazer para a próxima aula (ver Q19).
Introdução à Qualidade de Linguagens (QL) e Qualidadade de Gramáticas (QG); Métricas:
Métricas de Tamanho ao Parser:
Numero de Funções do Parser RD (#NT+#T)
Dimensão da Tabela de Parsing LL(1) (#NT*(#T+1))
Dimensão da Tabela de Parsing LR(0) (#Q*(#T+1) + #Q*#NT)
Métricas de Forma:
Forma de Recursividade (Directa, Indirecta, Mista)
Tipo de Recursividade (Esq, Dir, Dir-LL, Mista, Implicita)
Notação (BNF, exBNF, Mista)
Factor de Coesão -- Dependência entre Símbolos (FanOut? / FanIn? )
12 de Janeiro de 2009
Construção do Autómato Determinista de Parsing LR(0) para a gramática do Exercício 4.
Cálculo das métricas de tamanho para duas variantes da gramática Lisp (Lispv1.g e Lispv2.g) anteriomente apresentadas na aula (BNF/EBNF).
Estudo do impacto de cada uma das variantes quanto à legibilidade de G como geradora de L e quanto à legibilidade em termos de manutenção. Relativamente às duas versões da gramática do Lisp apresentadas, os alunos concordaram que a 2ª versão era mais legível e mais fácil de manter do que a 1ª.
TWiki's Education/EL0809 webThe Education/EL0809 web of TWiki. TWiki is a Web-Based Collaboration Platform for the Enterprise.http://wiki.di.uminho.pt/twiki/bin/view/Education/EL0809Copyright 2020 by contributing authors2010-11-07T08:01:18ZFichasEG08http://wiki.di.uminho.pt/twiki/bin/view/Education/EL0809/FichasEG082010-11-07T08:01:18ZEngenharia de Linguagens Engenharia Gramatical 2008/09 Exercícios e Exemplos para as aulas Exemplo 1: Escreva, em notação !AnTLR, uma Gramática para uma linguagem ... (last changed by PedroRangelHenriques)PedroRangelHenriquesProgramaATS08http://wiki.di.uminho.pt/twiki/bin/view/Education/EL0809/ProgramaATS082009-11-25T10:28:20ZEngenharia de Linguagens Análise e Transformação de Software Análise de programas: Extracção de dados Armazenamento da informação recolhida ... (last changed by PedroRangelHenriques)PedroRangelHenriquesProgramaEG08http://wiki.di.uminho.pt/twiki/bin/view/Education/EL0809/ProgramaEG082009-11-24T11:39:16ZEngenharia de Linguagens Engenharia Gramatical 2008/09 Programa Resumido O paradigma da Programação baseada em Gramáticas (PG). Conceitos sobre Gramáticas ... (last changed by PedroRangelHenriques)PedroRangelHenriquesSumariosEG08http://wiki.di.uminho.pt/twiki/bin/view/Education/EL0809/SumariosEG082009-10-12T15:49:28ZEngenharia de Linguagens Engenharia Gramatical 2008/09 Sumários 29 de Setembro de 2008 Apresentação da Disciplina de EG: Apresentação da Equipe Docente ... (last changed by DanielaCruz)DanielaCruz_WebHomehttp://wiki.di.uminho.pt/twiki/bin/view/Education/EL0809/_WebHome2009-09-23T10:52:56ZUnidade Curricular de Especialização Engenharia de Linguagens (2008/2009) Edições Anteriores: 2008/2009 Responsável pela UCE: Rangel Henriques ... (last changed by JoseFaria)JoseFariaResultadosAvaliacaohttp://wiki.di.uminho.pt/twiki/bin/view/Education/EL0809/ResultadosAvaliacao2009-08-31T15:31:09ZEngenharia de Linguagens Resultados de Avaliação G Nome PED EG ATS PLN PI NF 1 Miguel Esteves 19 15 17 ... (last changed by AlbertoSimoes)AlbertoSimoesSumariosATS08http://wiki.di.uminho.pt/twiki/bin/view/Education/EL0809/SumariosATS082009-06-27T06:21:33ZEngenharia de Linguagens Análise e Transformação de Software Sumários 02 de Março de 2009 I.1 Introdução e Motivação para a área de Análise e Transformação ... (last changed by PedroRangelHenriques)PedroRangelHenriquesA2s2p:sumarioshttp://wiki.di.uminho.pt/twiki/bin/view/Education/EL0809/A2s2p:sumarios2009-06-06T23:36:28ZEngenharia de Linguagens Projecto Integrado Aulas do 2ºSemestre, 2ªparte Sumários 02 de Março de 2009 Modo de funcionamento do Projecto Integrado no 2ºSemestre ... (last changed by PedroRangelHenriques)PedroRangelHenriquesWebHomehttp://wiki.di.uminho.pt/twiki/bin/view/Education/EL0809/WebHome2009-06-01T14:15:38ZUnidade Curricular de Especialização Engenharia de Linguagens (2008/2009) Edições Anteriores: 2007/2008 Responsável pela UCE: Rangel Henriques ... (last changed by DanielaCruz)DanielaCruzA2s1p:sumarioshttp://wiki.di.uminho.pt/twiki/bin/view/Education/EL0809/A2s1p:sumarios2009-04-20T19:00:12ZEngenharia de Linguagens Sumários Segundo Semestre, Aulas da Manhã 02 de Março de 2009 Modo de funcionamento do Projecto Integrado no 2ºSemestre. Discuss ... (last changed by AlbertoSimoes)AlbertoSimoesEtapasDoProjectohttp://wiki.di.uminho.pt/twiki/bin/view/Education/EL0809/EtapasDoProjecto2009-04-20T10:39:15ZEngenharia de Linguagens Etapas do Projecto As entradas marcadas a vermelho correspondem a avaliações. As restantes correspondem a pontos de controlo, para que possam ... (last changed by AlbertoSimoes)AlbertoSimoesAlunosGrupos08http://wiki.di.uminho.pt/twiki/bin/view/Education/EL0809/AlunosGrupos082009-03-23T12:05:42ZEngenharia de Linguagens Alunos/Grupos 2008/09 1 Miguel Esteves 1 Nuno Correia 1 Tiago Correia 2 Nuno Veloso 3 Susana Silva ... (last changed by AlbertoSimoes)AlbertoSimoesFichasATS08http://wiki.di.uminho.pt/twiki/bin/view/Education/EL0809/FichasATS082009-03-17T07:01:32ZEngenharia de Linguagens Análise e Transformação de Software 2008/09 Exercícios e Exemplos para as aulas Exemplo 1: Neste primeiro exemplo pretende se analisar ... (last changed by PedroRangelHenriques)PedroRangelHenriquesAG:sumarioshttp://wiki.di.uminho.pt/twiki/bin/view/Education/EL0809/AG:sumarios2009-03-08T22:24:17ZEngenharia de Linguagens Projecto Integrado Aulas de Gestão Sumários 6 Outubro 2008 Modo de funcionamento do Projecto Integrado; Apresentação do enunciado ... (last changed by PedroRangelHenriques)PedroRangelHenriquesAvaliaçõesPeriódicashttp://wiki.di.uminho.pt/twiki/bin/view/Education/EL0809/AvaliaçõesPeriódicas2009-03-02T18:56:37ZEngenharia de Linguagens PI: Avaliações Periódicas G Nome 10Nov 15Dez 1 Miguel Esteves Sat MBom 1 Nuno Correia Sat MBom ... (last changed by AlbertoSimoes)AlbertoSimoesAT:sumarioshttp://wiki.di.uminho.pt/twiki/bin/view/Education/EL0809/AT:sumarios2009-01-04T22:18:22ZEngenharia de Linguagens Projecto Integrado Aulas Tecnológicas Sumários 29 Setembro 2008 Necessidade de um ambiente de programação eficiente: Editor, linha ... (last changed by AlbertoSimoes)AlbertoSimoes
Engenharia de Linguagens Engenharia Gramatical 2008/09 Exercícios e Exemplos para as aulas Exemplo 1: Escreva, em notação !AnTLR, uma Gramática para uma linguagem ...
Engenharia de Linguagens Engenharia Gramatical 2008/09 Programa Resumido O paradigma da Programação baseada em Gramáticas (PG). Conceitos sobre Gramáticas ...
Engenharia de Linguagens Engenharia Gramatical 2008/09 Sumários 29 de Setembro de 2008 Apresentação da Disciplina de EG: Apresentação da Equipe Docente ...
Engenharia de Linguagens Análise e Transformação de Software Sumários 02 de Março de 2009 I.1 Introdução e Motivação para a área de Análise e Transformação ...
Engenharia de Linguagens Projecto Integrado Aulas do 2ºSemestre, 2ªparte Sumários 02 de Março de 2009 Modo de funcionamento do Projecto Integrado no 2ºSemestre ...
Engenharia de Linguagens Sumários Segundo Semestre, Aulas da Manhã 02 de Março de 2009 Modo de funcionamento do Projecto Integrado no 2ºSemestre. Discuss ...
Engenharia de Linguagens Etapas do Projecto As entradas marcadas a vermelho correspondem a avaliações. As restantes correspondem a pontos de controlo, para que possam ...
Engenharia de Linguagens Análise e Transformação de Software 2008/09 Exercícios e Exemplos para as aulas Exemplo 1: Neste primeiro exemplo pretende se analisar ...
Engenharia de Linguagens Projecto Integrado Aulas de Gestão Sumários 6 Outubro 2008 Modo de funcionamento do Projecto Integrado; Apresentação do enunciado ...
Engenharia de Linguagens Projecto Integrado Aulas Tecnológicas Sumários 29 Setembro 2008 Necessidade de um ambiente de programação eficiente: Editor, linha ...
Engenharia de Linguagens GraphViz no XP/Vista Para quem usa Windows Vista (e talvez XP ? ) com o Strawberry Perl, e não conseguia por a funcionar o módulo !GraphViz ...
Engenharia de Linguagens Bibliografia: Scripting Livros Randal L. Schwartz, Tom Phoenix, brian d foy, Learning Perl , O'Reilly Media Larry Wall, Tom Christiansen ...
Engenharia de Linguagens Método de Avaliação A avaliação da UCE de Engenharia de Linguagens é calculada pela seguinte fórmula: NF 15% PED 15% EG 15% ATS ...
Education/EL0809 Web Preferences The following settings are web preferences of the Education/EL0809 web. These preferences overwrite the site level preferences ...
2009-07-13 - Defesa oral e apresentação dos trabalhos de ATS e PI.
2009-07-08 - Entrega dos relatórios (em papel) referentes aos trabalhos de ATS e PI.
2009-03-23 - Aula de PLN de 4 de Maio será dada por três membros da Porto Editora, e será sobre criação de ferramentas e dicionários para análise morfológica.
Engenharia de Linguagens Sumários Segundo Semestre, Aulas da Manhã 02 de Março de 2009 Modo de funcionamento do Projecto Integrado no 2ºSemestre. Discuss ...
Engenharia de Linguagens Projecto Integrado Aulas do 2ºSemestre, 2ªparte Sumários 02 de Março de 2009 Modo de funcionamento do Projecto Integrado no 2ºSemestre ...
Engenharia de Linguagens Projecto Integrado Aulas de Gestão Sumários 6 Outubro 2008 Modo de funcionamento do Projecto Integrado; Apresentação do enunciado ...
Engenharia de Linguagens Projecto Integrado Aulas Tecnológicas Sumários 29 Setembro 2008 Necessidade de um ambiente de programação eficiente: Editor, linha ...
Engenharia de Linguagens Bibliografia: Scripting Livros Randal L. Schwartz, Tom Phoenix, brian d foy, Learning Perl , O'Reilly Media Larry Wall, Tom Christiansen ...
Engenharia de Linguagens Etapas do Projecto As entradas marcadas a vermelho correspondem a avaliações. As restantes correspondem a pontos de controlo, para que possam ...
Engenharia de Linguagens Análise e Transformação de Software 2008/09 Exercícios e Exemplos para as aulas Exemplo 1: Neste primeiro exemplo pretende se analisar ...
Engenharia de Linguagens Engenharia Gramatical 2008/09 Exercícios e Exemplos para as aulas Exemplo 1: Escreva, em notação !AnTLR, uma Gramática para uma linguagem ...
Engenharia de Linguagens GraphViz no XP/Vista Para quem usa Windows Vista (e talvez XP ? ) com o Strawberry Perl, e não conseguia por a funcionar o módulo !GraphViz ...
Engenharia de Linguagens Método de Avaliação A avaliação da UCE de Engenharia de Linguagens é calculada pela seguinte fórmula: NF 15% PED 15% EG 15% ATS ...
Engenharia de Linguagens Engenharia Gramatical 2008/09 Programa Resumido O paradigma da Programação baseada em Gramáticas (PG). Conceitos sobre Gramáticas ...
Engenharia de Linguagens Análise e Transformação de Software Sumários 02 de Março de 2009 I.1 Introdução e Motivação para a área de Análise e Transformação ...
Engenharia de Linguagens Engenharia Gramatical 2008/09 Sumários 29 de Setembro de 2008 Apresentação da Disciplina de EG: Apresentação da Equipe Docente ...
Education/EL0809 Web Preferences The following settings are web preferences of the Education/EL0809 web. These preferences overwrite the site level preferences ...
This is a subscription service to be automatically notified by e-mail when topics change in this Education/EL0809 web. This is a convenient service, so you do not have to come back and check all the time if something has changed. To subscribe, please add a bullet with your WikiName in alphabetical order to this list:
Each TWiki web has an automatic e-mail notification service that sends you an e-mail with links to all of the topics modified since the last alert.
Users subscribe to email notifications using their WikiName or an alternative email address, and can specify the webs/topics they wish to track using one of these bullet list formats:
three spaces * [ webname . ] wikiName - SMTP mail address three spaces * [ webName . ] wikiName three spaces * SMTP mail address three spaces * SMTP mail address : topics three spaces * [ webname . ] wikiName : topics
In the above examples, topics is a space-separated list of topic names. The user may further customize the specific content they will receive using the following formats:
Specify topics without a Web. prefix
Topics must exist in this web.
Topics may be specified using * wildcards
Each topic may optionally be preceded by a '+' or '-' sign. The '+' sign means "subscribe to this topic" (the same as not putting anything). The '-' sign means "unsubscribe" or "don't send notifications regarding this topic". This allows users to elect to filter out certain topics (and their children, to an arbitrary depth). Topic filters ('-') take precedence over topic includes ('+').
Each topic may optionally be followed by an integer in parentheses, indicating the depth of the tree of children below that topic. Changes in all these children will be detected and reported along with changes to the topic itself. Note This uses the TWiki "Topic parent" feature.
Each topic may optionally be immediately followed by an exclamation mark ! or a question mark ? with no intervening spaces, indicating that the topic (and children if there is a tree depth specifier as well) should be mailed out as complete topics instead of change summaries. ! causes the topic to be mailed every time even if there have been no changes, ? will mail the topic only if there have been changes to it. This only makes sense for subscriptions.
For example:
Subscribe Daisy to all changes to topics in this web.
* daisy.cutter@flowers.com
Subscribe Daisy to all changes in all webs that start with Web.
* daisy.cutter@flowers.com: Web*
Subscribe Daisy to changes to topics starting with Petal, and their immediate children, WeedKillers and children to a depth of 3, and all topics that match start with Pretty and end with Flowers e.g. PrettyPinkFlowers
Subscribe Daisy to the full content of NewsLetter whenever it has changed
* daisy@flowers.com: TWiki.NewsLetter?
Subscribe buttercup to NewsLetter and its immediate children, even if it hasn't changed.
* buttercup@flowers.com: TWiki.NewsLetter! (1)
Subscribe GardenGroup (which includes Petunia) to all changed topics under AllnewsLetters to a depth of 3. Then unsubscribe Petunia from the ManureNewsLetter, which she would normally get as a member of GardenGroup? :
A user may be listed many times in the WebNotify topic. Where a user has several lines in WebNotify that all match the same topic, they will only be notified about changes that topic once (though they will still receive individual mails for news topics).
If a TWiki group is listed for notification, the group will be recursively expanded to the e-mail addresses of all members.
Tip: List names in alphabetical order to make it easier to find the names.
Note for System Administrators: Notification is supported by an add-on to the TWiki kernel called the MailerContrib. See the MailerContrib topic for details of how to set up this service.
Note: If you prefer a news feed, point your reader to WebRss (for RSS 1.0 feeds) or WebAtom (for ATOM 1.0 feeds). Learn more at WebRssBase and WebAtomBase, respectively.
Related topics:WebChangesAlert, TWikiUsers, TWikiRegistration
These settings override the defaults for this web only. See full list of defaults with explanation. Many of the settings below are commented out. Remove the # sign to enable a local customisation.
Web-specific background color: (Pick a lighter one of the StandardColors).
Set WEBBGCOLOR = #D0D0D0
Note: This setting is automatically configured when you create a web
Image, URL and alternate tooltip text of web's logo. Note: Don't add your own local logos to the TWikiLogos topic; create your own logos topic instead.
List this web in the SiteMap. If you want the web listed, then set SITEMAPLIST to on, do not set NOSEARCHALL, and add the "what" and "use to..." description for the site map. Use links that include the name of the web, i.e. Education/EL0809.Topic links. Note: Unlike other variables, the setting of SITEMAPLIST is not inherited from parent webs. It has to be set in every web that is to be listed in the SiteMap
Set SITEMAPLIST = on
Set SITEMAPWHAT =
Set SITEMAPUSETO = Engenharia de Linguagens
Note: Above settings are automatically configured when you create a web
Exclude web from a web="all" search: (Set to on for hidden webs).
Set NOSEARCHALL =
Note: This setting is automatically configured when you create a web
Prevent automatic linking of WikiWords and acronyms (if set to on); link WikiWords (if empty); can be overwritten by web preferences:
#Set NOAUTOLINK =
Note: You can still use the [[...][...]] syntax to link topics if you disabled WikiWord linking. The <noautolink> ... </noautolink> syntax can be used to prevents links within a block of text.
Default template for new topics for this web:
WebTopicEditTemplate: Default template for new topics in this web. (Site-level is used if topic does not exist)
Comma separated list of forms that can be attached to topics in this web. See TWikiForms for more information.
Set WEBFORMS =
Users or groups who are not / are allowed to view / change / rename topics in the Education/EL0809 web: (See TWikiAccessControl). Remove the # to enable any of these settings. Remember that an empty setting is a valid setting; setting DENYWEBVIEW to nothing means that anyone can view the web.
Preferences are used as TWikiVariables by enclosing the name in percent signs. Example:
When you write variable %WEBBGCOLOR% , it gets expanded to #D0D0D0
The sequential order of the preference settings is significant. Define preferences that use other preferences first, i.e. set WEBCOPYRIGHT before WIKIWEBMASTER since %WEBCOPYRIGHT% uses the %WIKIWEBMASTER% variable.
You can introduce your own preferences variables and use them in your topics and templates.
TWiki search results for \.*
http://wiki.di.uminho.pt/twiki/bin/view/Education/EL0809
The Education/EL0809 web of TWiki. TWiki is a Web-Based Collaboration Platform for the Enterprise.en-usCopyright 2020 by contributing authorsTWiki Administrator [webmaster@di.uminho.pt]The contributing authors of TWikiTWikiDIUM.Education/EL0809
http://wiki.di.uminho.pt/twiki/bin/view/Education/EL0809
/twiki/pub/Main/LocalLogos/um_eengP.jpgFichasEG08
http://wiki.di.uminho.pt/twiki/bin/view/Education/EL0809/FichasEG08
Engenharia de Linguagens Engenharia Gramatical 2008/09 Exercícios e Exemplos para as aulas Exemplo 1: Escreva, em notação !AnTLR, uma Gramática para uma linguagem ... (last changed by PedroRangelHenriques)2010-11-07T08:01:18ZPedroRangelHenriquesProgramaATS08
http://wiki.di.uminho.pt/twiki/bin/view/Education/EL0809/ProgramaATS08
Engenharia de Linguagens Análise e Transformação de Software Análise de programas: Extracção de dados Armazenamento da informação recolhida ... (last changed by PedroRangelHenriques)2009-11-25T10:28:20ZPedroRangelHenriquesProgramaEG08
http://wiki.di.uminho.pt/twiki/bin/view/Education/EL0809/ProgramaEG08
Engenharia de Linguagens Engenharia Gramatical 2008/09 Programa Resumido O paradigma da Programação baseada em Gramáticas (PG). Conceitos sobre Gramáticas ... (last changed by PedroRangelHenriques)2009-11-24T11:39:16ZPedroRangelHenriquesSumariosEG08
http://wiki.di.uminho.pt/twiki/bin/view/Education/EL0809/SumariosEG08
Engenharia de Linguagens Engenharia Gramatical 2008/09 Sumários 29 de Setembro de 2008 Apresentação da Disciplina de EG: Apresentação da Equipe Docente ... (last changed by DanielaCruz)2009-10-12T15:49:28ZDanielaCruz_WebHome
http://wiki.di.uminho.pt/twiki/bin/view/Education/EL0809/_WebHome
Unidade Curricular de Especialização Engenharia de Linguagens (2008/2009) Edições Anteriores: 2008/2009 Responsável pela UCE: Rangel Henriques ... (last changed by JoseFaria)2009-09-23T10:52:56ZJoseFariaResultadosAvaliacao
http://wiki.di.uminho.pt/twiki/bin/view/Education/EL0809/ResultadosAvaliacao
Engenharia de Linguagens Resultados de Avaliação G Nome PED EG ATS PLN PI NF 1 Miguel Esteves 19 15 17 ... (last changed by AlbertoSimoes)2009-08-31T15:31:09ZAlbertoSimoesSumariosATS08
http://wiki.di.uminho.pt/twiki/bin/view/Education/EL0809/SumariosATS08
Engenharia de Linguagens Análise e Transformação de Software Sumários 02 de Março de 2009 I.1 Introdução e Motivação para a área de Análise e Transformação ... (last changed by PedroRangelHenriques)2009-06-27T06:21:33ZPedroRangelHenriquesA2s2p:sumarios
http://wiki.di.uminho.pt/twiki/bin/view/Education/EL0809/A2s2p:sumarios
Engenharia de Linguagens Projecto Integrado Aulas do 2ºSemestre, 2ªparte Sumários 02 de Março de 2009 Modo de funcionamento do Projecto Integrado no 2ºSemestre ... (last changed by PedroRangelHenriques)2009-06-06T23:36:28ZPedroRangelHenriquesWebHome
http://wiki.di.uminho.pt/twiki/bin/view/Education/EL0809/WebHome
Unidade Curricular de Especialização Engenharia de Linguagens (2008/2009) Edições Anteriores: 2007/2008 Responsável pela UCE: Rangel Henriques ... (last changed by DanielaCruz)2009-06-01T14:15:38ZDanielaCruzA2s1p:sumarios
http://wiki.di.uminho.pt/twiki/bin/view/Education/EL0809/A2s1p:sumarios
Engenharia de Linguagens Sumários Segundo Semestre, Aulas da Manhã 02 de Março de 2009 Modo de funcionamento do Projecto Integrado no 2ºSemestre. Discuss ... (last changed by AlbertoSimoes)2009-04-20T19:00:12ZAlbertoSimoesEtapasDoProjecto
http://wiki.di.uminho.pt/twiki/bin/view/Education/EL0809/EtapasDoProjecto
Engenharia de Linguagens Etapas do Projecto As entradas marcadas a vermelho correspondem a avaliações. As restantes correspondem a pontos de controlo, para que possam ... (last changed by AlbertoSimoes)2009-04-20T10:39:15ZAlbertoSimoesAlunosGrupos08
http://wiki.di.uminho.pt/twiki/bin/view/Education/EL0809/AlunosGrupos08
Engenharia de Linguagens Alunos/Grupos 2008/09 1 Miguel Esteves 1 Nuno Correia 1 Tiago Correia 2 Nuno Veloso 3 Susana Silva ... (last changed by AlbertoSimoes)2009-03-23T12:05:42ZAlbertoSimoesFichasATS08
http://wiki.di.uminho.pt/twiki/bin/view/Education/EL0809/FichasATS08
Engenharia de Linguagens Análise e Transformação de Software 2008/09 Exercícios e Exemplos para as aulas Exemplo 1: Neste primeiro exemplo pretende se analisar ... (last changed by PedroRangelHenriques)2009-03-17T07:01:32ZPedroRangelHenriquesAG:sumarios
http://wiki.di.uminho.pt/twiki/bin/view/Education/EL0809/AG:sumarios
Engenharia de Linguagens Projecto Integrado Aulas de Gestão Sumários 6 Outubro 2008 Modo de funcionamento do Projecto Integrado; Apresentação do enunciado ... (last changed by PedroRangelHenriques)2009-03-08T22:24:17ZPedroRangelHenriquesAvaliaçõesPeriódicas
http://wiki.di.uminho.pt/twiki/bin/view/Education/EL0809/AvaliaçõesPeriódicas
Engenharia de Linguagens PI: Avaliações Periódicas G Nome 10Nov 15Dez 1 Miguel Esteves Sat MBom 1 Nuno Correia Sat MBom ... (last changed by AlbertoSimoes)2009-03-02T18:56:37ZAlbertoSimoesAT:sumarios
http://wiki.di.uminho.pt/twiki/bin/view/Education/EL0809/AT:sumarios
Engenharia de Linguagens Projecto Integrado Aulas Tecnológicas Sumários 29 Setembro 2008 Necessidade de um ambiente de programação eficiente: Editor, linha ... (last changed by AlbertoSimoes)2009-01-04T22:18:22ZAlbertoSimoes
2009-07-13 - Defesa oral e apresentação dos trabalhos de ATS e PI.
2009-07-08 - Entrega dos relatórios (em papel) referentes aos trabalhos de ATS e PI.
2009-03-23 - Aula de PLN de 4 de Maio será dada por três membros da Porto Editora, e será sobre criação de ferramentas e dicionários para análise morfológica.
2009-07-13 - Defesa oral e apresentação dos trabalhos de ATS e PI.
2009-07-08 - Entrega dos relatórios (em papel) referentes aos trabalhos de ATS e PI.
2009-03-23 - Aula de PLN de 4 de Maio será dada por três membros da Porto Editora, e será sobre criação de ferramentas e dicionários para análise morfológica.