Engenharia de Linguagens

Search: \.*

Education/EL0809 Web Changed Changed by
A2s1p:sumarios 20 Apr 2009 - 19:00 - NEW AlbertoSimoes

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ão sobre os objectivos pressupostos para o 1ºSemestre.

09 de Março de 2009

  • Não houve aula

16 de Março de 2009

  • Integração da linguagem DRAW com a linguagem DReqL? .
  • Breve discussão sobre CRUD.

23 de Março de 2009

  • Colocação dos projectos integrados em SVN.

30 de Março de 2009

  • Análise do conceito de sistema de templating.
  • Estudo do Template::Toolkit, sistema de templating por excelência do Perl

20 de Abril de 2009

  • Discussão sobre a linguagem DReqL - visão da engenharia (UML) e da matemática (modelo formal);
  • Discussão sobre complexidade de linguagens. Linguagens geradas ou linguagens para escrita manual;
  • Apresentação dos objectivos para a avaliação de 27 de Abril.


A2s2p:sumarios 06 Jun 2009 - 23:36 - r14 PedroRangelHenriques

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, 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 Dados dreqL:
    • 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).


AG:sumarios 08 Mar 2009 - 22:24 - r7 PedroRangelHenriques

Engenharia de Linguagens

Projecto Integrado - Aulas de Gestão

Sumários

6 Outubro 2008

  • Modo de funcionamento do Projecto Integrado;
  • Apresentação do enunciado da framework DRAW:
    • Análise de uma aplicação web básica
    • Distinção dos 3 níveis de abstracção: Modelo, Controlo e Vista

20 Outubro 2008

  • Discussão das primeiras etapas do Projecto Integrado:
    • especificação de um grafo de estados;
    • especificação de tipos de dados sobre arestas no grafo;
  • Implementação rápida de navegação sobre um grafo de estados.

27 Outubro 2008

  • Apresentação do modelo de compilação das Gnu Compiler Collection;
  • Transposição do modelo GCC para o enunciado do Projecto Integrado;

3 Novembro 2008

  • Aula de dúvidas

10 Novembro 2008

  • Discussão dos objectivos da segunda etapa do Projecto Integrado:
    • Especificação de funções nos arcos do grafo;
    • Especificação de tipos de dados de retorno estruturados;

17 Novembro 2008

  • Aula de Dúvidas

5 Dezembro 2009

  • Projecto Integrado: estado e provisões


AT:sumarios 04 Jan 2009 - 22:18 - r11 AlbertoSimoes

Engenharia de Linguagens

Projecto Integrado - Aulas Tecnológicas

Sumários

29 Setembro 2008

  • Necessidade de um ambiente de programação eficiente: Editor, linha de comando, linguagem de programação.
  • Subversion como sistema de controlo de versões.
    • linha de comando
    • Tortoise SVN
  • Linguagens de programação: Interpretadas vs Compiladas.
  • Perl:
    • pequeno exercício de análise de HTML com base em expressões regulares.
    • variáveis escalares.
    • estruturas de controlo: aproximação linguística do Perl
    • uso da variável por omissão: o coiso.
  • TPC:
    • Alterar a script ex.pl no SVN para ordenar os nomes dos docentes por Apelido. (aprender a usar hashes)
    • Criar um ficheiro por cada docente (aprender a usar ficheiros)

6 Outubro 2008

  • Perl by example:
    • parsing de um documento HTML. Problemas de HTML mal formado.
    • armazenamento dos registos extraídos do HTML num array associativo.
    • detalhes de sintaxe relativos ao uso de arrays e arrays associativos: declaração e atribuição.
    • uso de Data::Dumper para análise da estrutura em memória.
    • uso de ficheiros para armazenamento do Data::Dumper.
    • uso do @ARGV para aceder aos argumentos de uma script.
    • uso do comando do para importação de estruturas de dados armazenadas com Data::Dumper;

13 Outubro 2008

  • Configuração de uma CGI-BIN no servidor apache;
  • Explicação básica de headers HTTP
  • Implementação de CGI em Perl:
    • Envio do cabeçalho;
    • Módulo CGI (header, start_html, end_html, start_form, end_form, textfield, textarea, submit)
    • CGI com vários formulários

20 Outubro 2008

  • Continuação da implementação da CGI das aulas anteriores;
  • Uso de Hashes aninhadas --- discussão sobre referências em Perl;

27 Outubro 2008

  • Configuração do cliente CPAN
  • Parsing de XML -- XML::DT

3 Novembro 2008

  • Parsing de XML com XML::DT -- Herança de atributos
  • Geração de Grafos com módulo GraphViz? .

10 Novembro 2008

  • Avaliação da Primeira Etapa do Projecto Integrado

17 Novembro 2008

  • Criação de Módulos em Perl;
  • Uso de Module::Starter;
  • Introdução superficial à escrita de testes;

24 Novembro 2008

  • Escrita de Parsers em Perl;
  • Uso do Text::RewriteRules para escrita de um analisador léxico;
  • Uso do Parse::Yapp para escrita de um analisado sintáctico;

15 Dezembro 2008

  • Avaliação da Segunda Etapa do Projecto Integrado

5 Janeiro 2009

  • Uso de "tie" em Perl (Tie::TextDir)
  • Princípios básicos de escrita de um módulo "tie"


AlunosGrupos08 23 Mar 2009 - 12:05 - r5 AlbertoSimoes

Engenharia de Linguagens

Alunos/Grupos 2008/09

1 Miguel Esteves
1 Nuno Correia
1 Tiago Correia
2 Nuno Veloso
3 Susana Silva
3 Hélder Pereira
4 André Gomes
4 João Machado
5 César Gomes
5 Fernando Ruas
6 João Ribeiro
6 Tiago Quintela
7 Sérgio Areias
7 Hugo Areias
8 Miguel Regedor


AvaliaçõesPeriódicas 02 Mar 2009 - 18:56 - r5 AlbertoSimoes

Engenharia de Linguagens

PI: Avaliações Periódicas

G Nome 10Nov 15Dez
1 Miguel Esteves Sat+ MBom-
1 Nuno Correia Sat+ MBom-
1 Tiago Correia Sat+ MBom-
2 Nuno Veloso BOM+ bom
3 Susana Silva BOM+ BOM+
3 Hélder Pereira BOM BOM+
4 André Gomes BOM BOM-
4 João Machado BOM BOM-
5 César Gomes bom BOM
5 Fernando Ruas bom BOM
6 João Ribeiro BOM BOM
6 Tiago Quintela BOM BOM
7 Sérgio Areias MBom- MBom-
7 Hugo Areias MBom- MBom-
8 Miguel Regedor ----- -----


BibliografiaSobreScripting 29 Sep 2008 - 15:14 - r5 AlbertoSimoes

Engenharia de Linguagens

Bibliografia: Scripting

Livros

  • Randal L. Schwartz, Tom Phoenix, brian d foy, Learning Perl, O'Reilly Media
  • Larry Wall, Tom Christiansen, Jon Orwant, Programming Perl, O'Reilly Media
  • Jeffrey E. F. Friedl, Mastering Regular Expressions, O'Reilly Media
  • Randal L. Schwartz, brian d foy, Tom Phoenix, Intermediate Perl, O'Reilly Media
  • Mark Jason Dominus, Higher-Order Perl, Elsevier Science & Technology Books
  • Tom Christiansen, Nathan Torkington, Perl Cookbook, O'Reilly Media
  • Simon Cozens, Beginning Perl, http://www.perl.org/books/beginning-perl/
  • Perl and Perl Modules man pages (ver http://perldoc.perl.org/)


EtapasDoProjecto 20 Apr 2009 - 10:39 - r6 AlbertoSimoes

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 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? .


FichasATS08 17 Mar 2009 - 07:01 - r5 PedroRangelHenriques

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 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)

  • ...

FichasEG08 07 Nov 2010 - 08:01 - r26 PedroRangelHenriques

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 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:

    (defun quad x (mul x x))           
              ==> LAB quad, LAB x, LAB x, LAB x, OPER mul, OPER defun
    (let res (add (mul 1 2)(div 8 4))) 
              ==> LAB res, CONS 1, CONS 2, OPER mul, CONS 8, CONS 4, 
                           OPER div, OPER add, OPER let

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.

Notas e Links úteis


GraphVizEmXP 12 Nov 2008 - 11:17 - NEW AlbertoSimoes

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 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):

   C:\strawberry\perl\site\lib\GraphViz.pm
   
   linhas 360-364:
   
   if (exists $config->{layout}) {
         $self->{LAYOUT} = $config->{layout};
     } else {
         $self->{LAYOUT} = "dot"; # default layout
     }

Alterar o "dot" para "dot.exe" e ele já corre. (pode ser necessário desmarcar o "só de leitura" do ficheiro )


MetodoAvaliacao 05 Sep 2008 - 16:08 - r2 AlbertoSimoes

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 + 15% PLN + 15% PI1S + 25% PI2S

Legenda:

  • 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.


PrimeiroSemestre 28 Sep 2008 - 20:32 - r2 AlbertoSimoes

Engenharia de Linguagens

Horário Primeiro Semestre

8h00 - 11h00 Módulo I Engenharia Gramatical
11h00 - 13h00 Projecto Integrado Aula Tecnológica
14h00 - 15h00 Projecto Integrado Aula de Gestão / Seminários
15h00 - 18h00 Módulo II Processamento Estruturado de Documentos


ProgramaATS08 25 Nov 2009 - 10:28 - r2 PedroRangelHenriques

Engenharia de Linguagens

Análise e Transformação de Software

  • Análise de programas:
    • Extracção de dados
    • Armazenamento da informação recolhida
    • Exploração do conhecimento.
  • Transformação de programas:
    • Programação estratégica.
    • Técnicas de Slicing.
    • Especialização de programas e cálculo parcial.
  • 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.


ProgramaEG08 24 Nov 2009 - 11:39 - r2 PedroRangelHenriques

Engenharia de Linguagens

Engenharia Gramatical 2008/09

Programa Resumido

  • 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.


ResultadosAvaliacao 31 Aug 2009 - 15:31 - r7 AlbertoSimoes

Engenharia de Linguagens

Resultados de Avaliação

G Nome PED EG ATS PLN PI NF
1 Miguel Esteves 19 15 17 16 19 18
1 Nuno Correia 19 15 17 13 19 17
1 Tiago Correia 19 15 17 12 19 17
2 Nuno Veloso 17 17 ---- 16 ---- ----
3 Susana Silva 18 18 18 12 19 18
3 Hélder Pereira 18 18 18 ---- 19 ----
4 André Gomes 17 15 17 10 16 15
4 João Machado 17 15 17 15 16 16
5 César Gomes 16 17 18 15 16 16
5 Fernando Ruas 14 16 18 10 16 15
6 João Ribeiro 16 16 18 10 16 15
6 Tiago Quintela 16 15 ---- ---- ---- ----
7 Sérgio Areias 19 18 20 15 19 19
7 Hugo Areias 19 17 20 17 19 19
8 Miguel Regedor ---- ---- ---- ---- ---- ----


SegundoSemestre 29 Aug 2008 - 10:56 - NEW AlbertoSimoes

Engenharia de Linguagens

Horário Segundo Semestre


SumariosATS08 27 Jun 2009 - 06:21 - r12 PedroRangelHenriques

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 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áticas graAl:
    • 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áticas graAl:
    • 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áticas graAl:
    • 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áticas graAl:
    • 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áticas graAl 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áticas graAl 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.

02 de Junho de 2009

  • P.1-f2 Exemplo 1 - fase2 -- "grammar refactoring":
    • 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.

SumariosEG08 12 Oct 2009 - 15:49 - r29 DanielaCruz

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, 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.

Ficheiros utilizados na aula:

10 de Novembro de 2008

  • 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).
    Métrica Lisp (v1) Lisp (v2)
    #NT 3 2
    #T 4 4
    #P 6 4
    #PI 0 0
    $Alt-med 2 2
    $RHS-med 1.3(3) 1.5

  • 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ª.

Métrica Lisp (v1) Lisp (v2)
Forma de Rec. Mista Directa
Tipo de Rec. Direita Implicita
Notação BNF eBNF
Fan-int 8/3 (1+5)/2 = 3
Fan-out 4/3 (0+2)/2 = 1
Fan-out/Fan-in 1/2 1/3

19 de Janeiro de 2009

  • Introdução das métricas lexicográficas:
    • ML1 --- identificadores dos símbolos N U T, podendo tomar um dos seguintes valores: abreviado/extenso e esclarecedor/não esclarecedor.
    • ML2 --- ortografia das palavras reservadas e sinais, podendo tomar um dos seguintes valores: abreviado/extenso e esclarecedor/não esclarecedor.
    • ML3 --- ortografia dos terminais-variáveis, podendo tomar um dos seguintes valores: flexivel, rígido.
    • ML4 --- comentários, podendo tomar um dos seguintes valores: inline, bloco, misto, meta-informação.

  • Cálculo das métricas de forma e lexicográficas para as duas variantes da gramática Lisp anteriomente apresentadas na aula (BNF/EBNF).

Métrica Lexicográfica Lisp (v1) Lisp (v2)
ML1 Abreviado/Esclarecedor Abreviado/Esclarecedor
ML2 NA NA
ML3 Rigidos Rigidos
ML4 NA NA

26 de Janeiro de 2009

  • Cálculo das métricas do Exercício 4.

Métrica PIs PIs(v2) PIs(v3)
ML1 Abreviado/Não Esclarecedor Abreviado/Não Esclarecedor Abreviado/Não Esclarecedor
ML2 Não Abreviado/Não Esclarecedor Não Abreviado/Não Esclarecedor Não Abreviado/Não Esclarecedor
ML3 Rigidos Rigidos Rigidos
ML4 Linha Linha Linha
       
Forma Directa Directa Directa
Tipo Mista Mista Mista
Notação BNF BNF BNF
FanIn 36/12    
FanOut 3/2    
FanIn/FanOut 0,5    
       
#T 14 14 14
#NT 12 14 14
#P 17 20 19
#PI 5 6 5
$Alt-Med 17/12 20/14 = 1.43 19/14=1.36
$RHS-Med 37/17 43/20 = 2.15 39/19=2.11
       
#Tam-RD 26 28 28
#Tam-LL 180 210 210
#Tam-LR 918 1160 1044


WebAtom 24 Jan 2006 - 06:07 - r2 TWikiContributor
TWiki's Education/EL0809 web The Education/EL0809 web of TWiki. TWiki is a Web-Based Collaboration Platform for the Enterprise. http://wiki.di.uminho.pt/twiki/bin/view/Education/EL0809 Copyright 2020 by contributing authors 2010-11-07T08:01:18Z FichasEG08 http://wiki.di.uminho.pt/twiki/bin/view/Education/EL0809/FichasEG08 2010-11-07T08:01:18Z 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) PedroRangelHenriques ProgramaATS08 http://wiki.di.uminho.pt/twiki/bin/view/Education/EL0809/ProgramaATS08 2009-11-25T10:28:20Z 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) PedroRangelHenriques ProgramaEG08 http://wiki.di.uminho.pt/twiki/bin/view/Education/EL0809/ProgramaEG08 2009-11-24T11:39:16Z 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) PedroRangelHenriques SumariosEG08 http://wiki.di.uminho.pt/twiki/bin/view/Education/EL0809/SumariosEG08 2009-10-12T15:49:28Z 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) DanielaCruz _WebHome http://wiki.di.uminho.pt/twiki/bin/view/Education/EL0809/_WebHome 2009-09-23T10:52:56Z 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) JoseFaria ResultadosAvaliacao http://wiki.di.uminho.pt/twiki/bin/view/Education/EL0809/ResultadosAvaliacao 2009-08-31T15:31:09Z 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) AlbertoSimoes SumariosATS08 http://wiki.di.uminho.pt/twiki/bin/view/Education/EL0809/SumariosATS08 2009-06-27T06:21:33Z 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) PedroRangelHenriques A2s2p:sumarios http://wiki.di.uminho.pt/twiki/bin/view/Education/EL0809/A2s2p:sumarios 2009-06-06T23:36:28Z 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) PedroRangelHenriques WebHome http://wiki.di.uminho.pt/twiki/bin/view/Education/EL0809/WebHome 2009-06-01T14:15:38Z 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) DanielaCruz A2s1p:sumarios http://wiki.di.uminho.pt/twiki/bin/view/Education/EL0809/A2s1p:sumarios 2009-04-20T19:00:12Z 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) AlbertoSimoes EtapasDoProjecto http://wiki.di.uminho.pt/twiki/bin/view/Education/EL0809/EtapasDoProjecto 2009-04-20T10:39:15Z 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) AlbertoSimoes AlunosGrupos08 http://wiki.di.uminho.pt/twiki/bin/view/Education/EL0809/AlunosGrupos08 2009-03-23T12:05:42Z 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) AlbertoSimoes FichasATS08 http://wiki.di.uminho.pt/twiki/bin/view/Education/EL0809/FichasATS08 2009-03-17T07:01:32Z 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) PedroRangelHenriques AG:sumarios http://wiki.di.uminho.pt/twiki/bin/view/Education/EL0809/AG:sumarios 2009-03-08T22:24:17Z 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) PedroRangelHenriques AvaliaçõesPeriódicas http://wiki.di.uminho.pt/twiki/bin/view/Education/EL0809/AvaliaçõesPeriódicas 2009-03-02T18:56:37Z 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) AlbertoSimoes AT:sumarios http://wiki.di.uminho.pt/twiki/bin/view/Education/EL0809/AT:sumarios 2009-01-04T22:18:22Z 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) AlbertoSimoes
WebChanges 15 Nov 2006 - 19:43 - r3 TWikiContributor

50 Recent Changes in TWiki Web retrieved at 15:00 (GMT)

FichasEG08 07 Nov 2010 - 08:01 - r26 PedroRangelHenriques
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 ...
ProgramaATS08 25 Nov 2009 - 10:28 - r2 PedroRangelHenriques
Engenharia de Linguagens Análise e Transformação de Software Análise de programas: Extracção de dados Armazenamento da informação recolhida ...
ProgramaEG08 24 Nov 2009 - 11:39 - r2 PedroRangelHenriques
Engenharia de Linguagens Engenharia Gramatical 2008/09 Programa Resumido O paradigma da Programação baseada em Gramáticas (PG). Conceitos sobre Gramáticas ...
SumariosEG08 12 Oct 2009 - 15:49 - r29 DanielaCruz
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 ...
_WebHome 23 Sep 2009 - 10:52 - r30 JoseFaria
Unidade Curricular de Especialização Engenharia de Linguagens (2008/2009) Edições Anteriores: 2008/2009 Responsável pela UCE: Rangel Henriques ...
ResultadosAvaliacao 31 Aug 2009 - 15:31 - r7 AlbertoSimoes
Engenharia de Linguagens Resultados de Avaliação G Nome PED EG ATS PLN PI NF 1 Miguel Esteves 19 15 17 ...
SumariosATS08 27 Jun 2009 - 06:21 - r12 PedroRangelHenriques
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 ...
A2s2p:sumarios 06 Jun 2009 - 23:36 - r14 PedroRangelHenriques
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 ...
WebHome 01 Jun 2009 - 14:15 - r28 DanielaCruz
Unidade Curricular de Especialização Engenharia de Linguagens (2008/2009) Edições Anteriores: 2007/2008 Responsável pela UCE: Rangel Henriques ...
A2s1p:sumarios 20 Apr 2009 - 19:00 - NEW AlbertoSimoes
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 ...
EtapasDoProjecto 20 Apr 2009 - 10:39 - r6 AlbertoSimoes
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 ...
AlunosGrupos08 23 Mar 2009 - 12:05 - r5 AlbertoSimoes
Engenharia de Linguagens Alunos/Grupos 2008/09 1 Miguel Esteves 1 Nuno Correia 1 Tiago Correia 2 Nuno Veloso 3 Susana Silva ...
FichasATS08 17 Mar 2009 - 07:01 - r5 PedroRangelHenriques
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 ...
AG:sumarios 08 Mar 2009 - 22:24 - r7 PedroRangelHenriques
Engenharia de Linguagens Projecto Integrado Aulas de Gestão Sumários 6 Outubro 2008 Modo de funcionamento do Projecto Integrado; Apresentação do enunciado ...
AvaliaçõesPeriódicas 02 Mar 2009 - 18:56 - r5 AlbertoSimoes
Engenharia de Linguagens PI: Avaliações Periódicas G Nome 10Nov 15Dez 1 Miguel Esteves Sat MBom 1 Nuno Correia Sat MBom ...
AT:sumarios 04 Jan 2009 - 22:18 - r11 AlbertoSimoes
Engenharia de Linguagens Projecto Integrado Aulas Tecnológicas Sumários 29 Setembro 2008 Necessidade de um ambiente de programação eficiente: Editor, linha ...
GraphVizEmXP 12 Nov 2008 - 11:17 - NEW AlbertoSimoes
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 ...
BibliografiaSobreScripting 29 Sep 2008 - 15:14 - r5 AlbertoSimoes
Engenharia de Linguagens Bibliografia: Scripting Livros Randal L. Schwartz, Tom Phoenix, brian d foy, Learning Perl , O'Reilly Media Larry Wall, Tom Christiansen ...
PrimeiroSemestre 28 Sep 2008 - 20:32 - r2 AlbertoSimoes
Engenharia de Linguagens Horário Primeiro Semestre 8h00 11h00 Módulo I Engenharia Gramatical 11h00 13h00 Projecto ...
MetodoAvaliacao 05 Sep 2008 - 16:08 - r2 AlbertoSimoes
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 ...
SegundoSemestre 29 Aug 2008 - 10:56 - NEW AlbertoSimoes
Engenharia de Linguagens Horário Segundo Semestre
WebTopicEditTemplate 09 Jul 2008 - 19:59 - NEW AlbertoSimoes
Engenharia de Linguagens TITLE
WebPreferences 09 Jul 2008 - 16:14 - r15 AlbertoSimoes
Education/EL0809 Web Preferences The following settings are web preferences of the Education/EL0809 web. These preferences overwrite the site level preferences ...
WebLeftBar 09 Jul 2008 - 16:12 - r5 AlbertoSimoes
TESTE " warn "off"}%
WebStatistics 30 Jun 2008 - 05:28 - r62 TWikiGuest
Statistics for Education/EL0809 Web Month: Topic views: Topic saves: File uploads: Most popular topic views: Top contributors for topic ...
WebTopicList 15 Nov 2006 - 19:43 - r3 TWikiContributor
WebIndex 15 Nov 2006 - 19:43 - r4 TWikiContributor
WebSearch 15 Nov 2006 - 19:43 - r3 TWikiContributor
WebSearchAdvanced 15 Nov 2006 - 19:43 - r3 TWikiContributor
WebTopicCreator 15 Nov 2006 - 19:43 - r2 TWikiContributor
WebChanges 15 Nov 2006 - 19:43 - r3 TWikiContributor
WebAtom 24 Jan 2006 - 06:07 - r2 TWikiContributor
TWiki's Education/EL0809 web
WebNotify 28 Mar 2005 - 09:40 - r5 TWikiContributor
TWikiGuest example #64;your.company .WebChangesAlert, ., .TWikiRegistration
WebRss 28 Mar 2005 - 09:40 - r4 TWikiContributor
" else "TWiki's Education/EL0809 web"}% /Education/EL0809
Found 34 topics.

See also: rss-small RSS feed, recent changes with 50, 100, 200, 500, 1000 topics, all changes

WebHome 01 Jun 2009 - 14:15 - r28 DanielaCruz

Unidade Curricular de Especialização

Engenharia de Linguagens (2008/2009)

Novidades

  • 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.
  • 2008-10-20 - Primeiras Etapas do Projecto
  • 2008-09-29 - Primeira semana de aulas;
  • 2008-08-29 - Adicionado programa básico para aulas tecnológicas de PI e alguma bibliografia;
  • 2008-07-09 - Criada a Web para a edição de 2008/2009;

Módulos

Material Didáctico


Education/EL0809 Web Utilities


WebIndex 15 Nov 2006 - 19:43 - r4 TWikiContributor
Education/EL0809 Web Changed Changed by
A2s1p:sumarios 20 Apr 2009 - 19:00 - NEW AlbertoSimoes
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 ...
A2s2p:sumarios 06 Jun 2009 - 23:36 - r14 PedroRangelHenriques
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 ...
AG:sumarios 08 Mar 2009 - 22:24 - r7 PedroRangelHenriques
Engenharia de Linguagens Projecto Integrado Aulas de Gestão Sumários 6 Outubro 2008 Modo de funcionamento do Projecto Integrado; Apresentação do enunciado ...
AT:sumarios 04 Jan 2009 - 22:18 - r11 AlbertoSimoes
Engenharia de Linguagens Projecto Integrado Aulas Tecnológicas Sumários 29 Setembro 2008 Necessidade de um ambiente de programação eficiente: Editor, linha ...
AlunosGrupos08 23 Mar 2009 - 12:05 - r5 AlbertoSimoes
Engenharia de Linguagens Alunos/Grupos 2008/09 1 Miguel Esteves 1 Nuno Correia 1 Tiago Correia 2 Nuno Veloso 3 Susana Silva ...
AvaliaçõesPeriódicas 02 Mar 2009 - 18:56 - r5 AlbertoSimoes
Engenharia de Linguagens PI: Avaliações Periódicas G Nome 10Nov 15Dez 1 Miguel Esteves Sat MBom 1 Nuno Correia Sat MBom ...
BibliografiaSobreScripting 29 Sep 2008 - 15:14 - r5 AlbertoSimoes
Engenharia de Linguagens Bibliografia: Scripting Livros Randal L. Schwartz, Tom Phoenix, brian d foy, Learning Perl , O'Reilly Media Larry Wall, Tom Christiansen ...
EtapasDoProjecto 20 Apr 2009 - 10:39 - r6 AlbertoSimoes
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 ...
FichasATS08 17 Mar 2009 - 07:01 - r5 PedroRangelHenriques
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 ...
FichasEG08 07 Nov 2010 - 08:01 - r26 PedroRangelHenriques
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 ...
GraphVizEmXP 12 Nov 2008 - 11:17 - NEW AlbertoSimoes
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 ...
MetodoAvaliacao 05 Sep 2008 - 16:08 - r2 AlbertoSimoes
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 ...
PrimeiroSemestre 28 Sep 2008 - 20:32 - r2 AlbertoSimoes
Engenharia de Linguagens Horário Primeiro Semestre 8h00 11h00 Módulo I Engenharia Gramatical 11h00 13h00 Projecto ...
ProgramaATS08 25 Nov 2009 - 10:28 - r2 PedroRangelHenriques
Engenharia de Linguagens Análise e Transformação de Software Análise de programas: Extracção de dados Armazenamento da informação recolhida ...
ProgramaEG08 24 Nov 2009 - 11:39 - r2 PedroRangelHenriques
Engenharia de Linguagens Engenharia Gramatical 2008/09 Programa Resumido O paradigma da Programação baseada em Gramáticas (PG). Conceitos sobre Gramáticas ...
ResultadosAvaliacao 31 Aug 2009 - 15:31 - r7 AlbertoSimoes
Engenharia de Linguagens Resultados de Avaliação G Nome PED EG ATS PLN PI NF 1 Miguel Esteves 19 15 17 ...
SegundoSemestre 29 Aug 2008 - 10:56 - NEW AlbertoSimoes
Engenharia de Linguagens Horário Segundo Semestre
SumariosATS08 27 Jun 2009 - 06:21 - r12 PedroRangelHenriques
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 ...
SumariosEG08 12 Oct 2009 - 15:49 - r29 DanielaCruz
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 ...
WebAtom 24 Jan 2006 - 06:07 - r2 TWikiContributor
TWiki's Education/EL0809 web
WebChanges 15 Nov 2006 - 19:43 - r3 TWikiContributor
WebHome 01 Jun 2009 - 14:15 - r28 DanielaCruz
Unidade Curricular de Especialização Engenharia de Linguagens (2008/2009) Edições Anteriores: 2007/2008 Responsável pela UCE: Rangel Henriques ...
WebIndex 15 Nov 2006 - 19:43 - r4 TWikiContributor
WebLeftBar 09 Jul 2008 - 16:12 - r5 AlbertoSimoes
TESTE " warn "off"}%
WebNotify 28 Mar 2005 - 09:40 - r5 TWikiContributor
TWikiGuest example #64;your.company .WebChangesAlert, ., .TWikiRegistration
WebPreferences 09 Jul 2008 - 16:14 - r15 AlbertoSimoes
Education/EL0809 Web Preferences The following settings are web preferences of the Education/EL0809 web. These preferences overwrite the site level preferences ...
WebRss 28 Mar 2005 - 09:40 - r4 TWikiContributor
" else "TWiki's Education/EL0809 web"}% /Education/EL0809
WebSearch 15 Nov 2006 - 19:43 - r3 TWikiContributor
WebSearchAdvanced 15 Nov 2006 - 19:43 - r3 TWikiContributor
WebStatistics 30 Jun 2008 - 05:28 - r62 TWikiGuest
Statistics for Education/EL0809 Web Month: Topic views: Topic saves: File uploads: Most popular topic views: Top contributors for topic ...
WebTopicCreator 15 Nov 2006 - 19:43 - r2 TWikiContributor
WebTopicEditTemplate 09 Jul 2008 - 19:59 - NEW AlbertoSimoes
Engenharia de Linguagens TITLE
WebTopicList 15 Nov 2006 - 19:43 - r3 TWikiContributor
_WebHome 23 Sep 2009 - 10:52 - r30 JoseFaria
Unidade Curricular de Especialização Engenharia de Linguagens (2008/2009) Edições Anteriores: 2008/2009 Responsável pela UCE: Rangel Henriques ...
Found 34 topics.

See also the faster WebTopicList

WebLeftBar 09 Jul 2008 - 16:12 - r5 AlbertoSimoes
TESTE


  • Main Webs

WebNotify 28 Mar 2005 - 09:40 - r5 TWikiContributor
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:

Web Changes Notification Service

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
   * TWiki.DaisyCutter: Petal* (1) TWiki.WeedKillers (3) Pretty*Flowers
Subscribe StarTrekFan to changes to all topics that start with Star except those that end in Wars, sInTheirEyes or shipTroopers.
   * TWiki.StarTrekFan: Star* - *Wars - *sInTheirEyes - *shipTroopers
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? :
   * TWiki.GardenGroup: TWiki.AllNewsLetters? (3)
   * petunia@flowers.com: - TWiki.ManureNewsLetter
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 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

WebPreferences 09 Jul 2008 - 16:14 - r15 AlbertoSimoes

Education/EL0809 Web Preferences

The following settings are web preferences of the Education.EL0809 web. These preferences overwrite the site-level preferences in TWiki.TWikiPreferences and Main.TWikiPreferences, and can be overwritten by user preferences (your personal topic, eg: TWikiGuest in the Main web).

Web Preferences Settings

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.

  • List of topics of the Education/EL0809 web:

 #D0D0D0 
  • 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.
    • #Set WEBLOGOIMG = /twiki/pub/Main/LocalLogos/um_eengP.jpg
    • Set WEBLOGOURL = http://www.di.uminho.pt/
    • #Set WEBLOGOALT = DIUM

  • 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.

  • 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.
    • #Set DENYWEBVIEW =
    • #Set ALLOWWEBVIEW =
    • #Set DENYWEBCHANGE =
    • #Set ALLOWWEBCHANGE = TWikiAdminGroup
    • Set ALLOWWEBCHANGE = JoseCarlosRamalho,Main.AlbertoSimoes,Main.PedroRangelHenriques,Main.DanielaCruz
    • #Set DENYWEBRENAME =
    • #Set ALLOWWEBRENAME = TWikiAdminGroup

  • Web preferences that are not allowed to be overridden by user or topic preferences:
    • Set FINALPREFERENCES = NOSEARCHALL, ATTACHFILESIZELIMIT, WIKIWEBMASTER, WEBCOPYRIGHT, WEBTOPICLIST, DENYWEBVIEW, ALLOWWEBVIEW, DENYWEBCHANGE, ALLOWWEBCHANGE, DENYWEBRENAME, ALLOWWEBRENAME

Help on Preferences

  • A preference setting is defined by:
    3 or 6 spaces * Set NAME = value
    Example:
    • Set WEBBGCOLOR = #FFFFC0
  • A preferences setting can be disabled with a # sign. Remove the # sign to enable a local customisation. Example:
  • 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.

Related Topics

Tools

WebRss 28 Mar 2005 - 09:40 - r4 TWikiContributor
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-us Copyright 2020 by contributing authors TWiki Administrator [webmaster@di.uminho.pt] The contributing authors of TWiki TWiki DIUM.Education/EL0809 http://wiki.di.uminho.pt/twiki/bin/view/Education/EL0809 /twiki/pub/Main/LocalLogos/um_eengP.jpg FichasEG08 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:18Z PedroRangelHenriques ProgramaATS08 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:20Z PedroRangelHenriques ProgramaEG08 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:16Z PedroRangelHenriques SumariosEG08 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:28Z DanielaCruz _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:56Z JoseFaria ResultadosAvaliacao 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:09Z AlbertoSimoes SumariosATS08 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:33Z PedroRangelHenriques A2s2p: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:28Z PedroRangelHenriques 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: 2007/2008 Responsável pela UCE: Rangel Henriques ... (last changed by DanielaCruz) 2009-06-01T14:15:38Z DanielaCruz A2s1p: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:12Z AlbertoSimoes EtapasDoProjecto 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:15Z AlbertoSimoes AlunosGrupos08 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:42Z AlbertoSimoes FichasATS08 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:32Z PedroRangelHenriques AG: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:17Z PedroRangelHenriques Avaliaçõ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:37Z AlbertoSimoes AT: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:22Z AlbertoSimoes
WebSearch 15 Nov 2006 - 19:43 - r3 TWikiContributor

Web Search

Search: \.*

Found 0 topics.

  Advanced search | Help
TIP: to search for all topics that contain "SOAP", "WSDL", a literal "web service", but not "shampoo", write: soap wsdl "web service" -shampoo
Search where:       
(otherwise search Education/EL0809 Web only)

Other search options:
WebSearchAdvanced 15 Nov 2006 - 19:43 - r3 TWikiContributor

Advanced Search

Search: \.*

Education/EL0809 Web Changed Changed by
A2s1p:sumarios 20 Apr 2009 - 19:00 - NEW AlbertoSimoes

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ão sobre os objectivos pressupostos para o 1ºSemestre.

09 de Março de 2009

  • Não houve aula

16 de Março de 2009

  • Integração da linguagem DRAW com a linguagem DReqL? .
  • Breve discussão sobre CRUD.

23 de Março de 2009

  • Colocação dos projectos integrados em SVN.

30 de Março de 2009

  • Análise do conceito de sistema de templating.
  • Estudo do Template::Toolkit, sistema de templating por excelência do Perl

20 de Abril de 2009

  • Discussão sobre a linguagem DReqL - visão da engenharia (UML) e da matemática (modelo formal);
  • Discussão sobre complexidade de linguagens. Linguagens geradas ou linguagens para escrita manual;
  • Apresentação dos objectivos para a avaliação de 27 de Abril.


A2s2p:sumarios 06 Jun 2009 - 23:36 - r14 PedroRangelHenriques

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, 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 Dados dreqL:
    • 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).


AG:sumarios 08 Mar 2009 - 22:24 - r7 PedroRangelHenriques

Engenharia de Linguagens

Projecto Integrado - Aulas de Gestão

Sumários

6 Outubro 2008

  • Modo de funcionamento do Projecto Integrado;
  • Apresentação do enunciado da framework DRAW:
    • Análise de uma aplicação web básica
    • Distinção dos 3 níveis de abstracção: Modelo, Controlo e Vista

20 Outubro 2008

  • Discussão das primeiras etapas do Projecto Integrado:
    • especificação de um grafo de estados;
    • especificação de tipos de dados sobre arestas no grafo;
  • Implementação rápida de navegação sobre um grafo de estados.

27 Outubro 2008

  • Apresentação do modelo de compilação das Gnu Compiler Collection;
  • Transposição do modelo GCC para o enunciado do Projecto Integrado;

3 Novembro 2008

  • Aula de dúvidas

10 Novembro 2008

  • Discussão dos objectivos da segunda etapa do Projecto Integrado:
    • Especificação de funções nos arcos do grafo;
    • Especificação de tipos de dados de retorno estruturados;

17 Novembro 2008

  • Aula de Dúvidas

5 Dezembro 2009

  • Projecto Integrado: estado e provisões


AT:sumarios 04 Jan 2009 - 22:18 - r11 AlbertoSimoes

Engenharia de Linguagens

Projecto Integrado - Aulas Tecnológicas

Sumários

29 Setembro 2008

  • Necessidade de um ambiente de programação eficiente: Editor, linha de comando, linguagem de programação.
  • Subversion como sistema de controlo de versões.
    • linha de comando
    • Tortoise SVN
  • Linguagens de programação: Interpretadas vs Compiladas.
  • Perl:
    • pequeno exercício de análise de HTML com base em expressões regulares.
    • variáveis escalares.
    • estruturas de controlo: aproximação linguística do Perl
    • uso da variável por omissão: o coiso.
  • TPC:
    • Alterar a script ex.pl no SVN para ordenar os nomes dos docentes por Apelido. (aprender a usar hashes)
    • Criar um ficheiro por cada docente (aprender a usar ficheiros)

6 Outubro 2008

  • Perl by example:
    • parsing de um documento HTML. Problemas de HTML mal formado.
    • armazenamento dos registos extraídos do HTML num array associativo.
    • detalhes de sintaxe relativos ao uso de arrays e arrays associativos: declaração e atribuição.
    • uso de Data::Dumper para análise da estrutura em memória.
    • uso de ficheiros para armazenamento do Data::Dumper.
    • uso do @ARGV para aceder aos argumentos de uma script.
    • uso do comando do para importação de estruturas de dados armazenadas com Data::Dumper;

13 Outubro 2008

  • Configuração de uma CGI-BIN no servidor apache;
  • Explicação básica de headers HTTP
  • Implementação de CGI em Perl:
    • Envio do cabeçalho;
    • Módulo CGI (header, start_html, end_html, start_form, end_form, textfield, textarea, submit)
    • CGI com vários formulários

20 Outubro 2008

  • Continuação da implementação da CGI das aulas anteriores;
  • Uso de Hashes aninhadas --- discussão sobre referências em Perl;

27 Outubro 2008

  • Configuração do cliente CPAN
  • Parsing de XML -- XML::DT

3 Novembro 2008

  • Parsing de XML com XML::DT -- Herança de atributos
  • Geração de Grafos com módulo GraphViz? .

10 Novembro 2008

  • Avaliação da Primeira Etapa do Projecto Integrado

17 Novembro 2008

  • Criação de Módulos em Perl;
  • Uso de Module::Starter;
  • Introdução superficial à escrita de testes;

24 Novembro 2008

  • Escrita de Parsers em Perl;
  • Uso do Text::RewriteRules para escrita de um analisador léxico;
  • Uso do Parse::Yapp para escrita de um analisado sintáctico;

15 Dezembro 2008

  • Avaliação da Segunda Etapa do Projecto Integrado

5 Janeiro 2009

  • Uso de "tie" em Perl (Tie::TextDir)
  • Princípios básicos de escrita de um módulo "tie"


AlunosGrupos08 23 Mar 2009 - 12:05 - r5 AlbertoSimoes

Engenharia de Linguagens

Alunos/Grupos 2008/09

1 Miguel Esteves
1 Nuno Correia
1 Tiago Correia
2 Nuno Veloso
3 Susana Silva
3 Hélder Pereira
4 André Gomes
4 João Machado
5 César Gomes
5 Fernando Ruas
6 João Ribeiro
6 Tiago Quintela
7 Sérgio Areias
7 Hugo Areias
8 Miguel Regedor


AvaliaçõesPeriódicas 02 Mar 2009 - 18:56 - r5 AlbertoSimoes

Engenharia de Linguagens

PI: Avaliações Periódicas

G Nome 10Nov 15Dez
1 Miguel Esteves Sat+ MBom-
1 Nuno Correia Sat+ MBom-
1 Tiago Correia Sat+ MBom-
2 Nuno Veloso BOM+ bom
3 Susana Silva BOM+ BOM+
3 Hélder Pereira BOM BOM+
4 André Gomes BOM BOM-
4 João Machado BOM BOM-
5 César Gomes bom BOM
5 Fernando Ruas bom BOM
6 João Ribeiro BOM BOM
6 Tiago Quintela BOM BOM
7 Sérgio Areias MBom- MBom-
7 Hugo Areias MBom- MBom-
8 Miguel Regedor ----- -----


BibliografiaSobreScripting 29 Sep 2008 - 15:14 - r5 AlbertoSimoes

Engenharia de Linguagens

Bibliografia: Scripting

Livros

  • Randal L. Schwartz, Tom Phoenix, brian d foy, Learning Perl, O'Reilly Media
  • Larry Wall, Tom Christiansen, Jon Orwant, Programming Perl, O'Reilly Media
  • Jeffrey E. F. Friedl, Mastering Regular Expressions, O'Reilly Media
  • Randal L. Schwartz, brian d foy, Tom Phoenix, Intermediate Perl, O'Reilly Media
  • Mark Jason Dominus, Higher-Order Perl, Elsevier Science & Technology Books
  • Tom Christiansen, Nathan Torkington, Perl Cookbook, O'Reilly Media
  • Simon Cozens, Beginning Perl, http://www.perl.org/books/beginning-perl/
  • Perl and Perl Modules man pages (ver http://perldoc.perl.org/)


EtapasDoProjecto 20 Apr 2009 - 10:39 - r6 AlbertoSimoes

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 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? .


FichasATS08 17 Mar 2009 - 07:01 - r5 PedroRangelHenriques

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 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)

  • ...

FichasEG08 07 Nov 2010 - 08:01 - r26 PedroRangelHenriques

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 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:

    (defun quad x (mul x x))           
              ==> LAB quad, LAB x, LAB x, LAB x, OPER mul, OPER defun
    (let res (add (mul 1 2)(div 8 4))) 
              ==> LAB res, CONS 1, CONS 2, OPER mul, CONS 8, CONS 4, 
                           OPER div, OPER add, OPER let

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.

Notas e Links úteis


GraphVizEmXP 12 Nov 2008 - 11:17 - NEW AlbertoSimoes

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 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):

   C:\strawberry\perl\site\lib\GraphViz.pm
   
   linhas 360-364:
   
   if (exists $config->{layout}) {
         $self->{LAYOUT} = $config->{layout};
     } else {
         $self->{LAYOUT} = "dot"; # default layout
     }

Alterar o "dot" para "dot.exe" e ele já corre. (pode ser necessário desmarcar o "só de leitura" do ficheiro )


MetodoAvaliacao 05 Sep 2008 - 16:08 - r2 AlbertoSimoes

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 + 15% PLN + 15% PI1S + 25% PI2S

Legenda:

  • 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.


PrimeiroSemestre 28 Sep 2008 - 20:32 - r2 AlbertoSimoes

Engenharia de Linguagens

Horário Primeiro Semestre

8h00 - 11h00 Módulo I Engenharia Gramatical
11h00 - 13h00 Projecto Integrado Aula Tecnológica
14h00 - 15h00 Projecto Integrado Aula de Gestão / Seminários
15h00 - 18h00 Módulo II Processamento Estruturado de Documentos


ProgramaATS08 25 Nov 2009 - 10:28 - r2 PedroRangelHenriques

Engenharia de Linguagens

Análise e Transformação de Software

  • Análise de programas:
    • Extracção de dados
    • Armazenamento da informação recolhida
    • Exploração do conhecimento.
  • Transformação de programas:
    • Programação estratégica.
    • Técnicas de Slicing.
    • Especialização de programas e cálculo parcial.
  • 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.


ProgramaEG08 24 Nov 2009 - 11:39 - r2 PedroRangelHenriques

Engenharia de Linguagens

Engenharia Gramatical 2008/09

Programa Resumido

  • 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.


ResultadosAvaliacao 31 Aug 2009 - 15:31 - r7 AlbertoSimoes

Engenharia de Linguagens

Resultados de Avaliação

G Nome PED EG ATS PLN PI NF
1 Miguel Esteves 19 15 17 16 19 18
1 Nuno Correia 19 15 17 13 19 17
1 Tiago Correia 19 15 17 12 19 17
2 Nuno Veloso 17 17 ---- 16 ---- ----
3 Susana Silva 18 18 18 12 19 18
3 Hélder Pereira 18 18 18 ---- 19 ----
4 André Gomes 17 15 17 10 16 15
4 João Machado 17 15 17 15 16 16
5 César Gomes 16 17 18 15 16 16
5 Fernando Ruas 14 16 18 10 16 15
6 João Ribeiro 16 16 18 10 16 15
6 Tiago Quintela 16 15 ---- ---- ---- ----
7 Sérgio Areias 19 18 20 15 19 19
7 Hugo Areias 19 17 20 17 19 19
8 Miguel Regedor ---- ---- ---- ---- ---- ----


SegundoSemestre 29 Aug 2008 - 10:56 - NEW AlbertoSimoes

Engenharia de Linguagens

Horário Segundo Semestre


SumariosATS08 27 Jun 2009 - 06:21 - r12 PedroRangelHenriques

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 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áticas graAl:
    • 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áticas graAl:
    • 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áticas graAl:
    • 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áticas graAl:
    • 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áticas graAl 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áticas graAl 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.

02 de Junho de 2009

  • P.1-f2 Exemplo 1 - fase2 -- "grammar refactoring":
    • 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.

SumariosEG08 12 Oct 2009 - 15:49 - r29 DanielaCruz

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, 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.

Ficheiros utilizados na aula:

10 de Novembro de 2008

  • 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).
    Métrica Lisp (v1) Lisp (v2)
    #NT 3 2
    #T 4 4
    #P 6 4
    #PI 0 0
    $Alt-med 2 2
    $RHS-med 1.3(3) 1.5

  • 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ª.

Métrica Lisp (v1) Lisp (v2)
Forma de Rec. Mista Directa
Tipo de Rec. Direita Implicita
Notação BNF eBNF
Fan-int 8/3 (1+5)/2 = 3
Fan-out 4/3 (0+2)/2 = 1
Fan-out/Fan-in 1/2 1/3

19 de Janeiro de 2009

  • Introdução das métricas lexicográficas:
    • ML1 --- identificadores dos símbolos N U T, podendo tomar um dos seguintes valores: abreviado/extenso e esclarecedor/não esclarecedor.
    • ML2 --- ortografia das palavras reservadas e sinais, podendo tomar um dos seguintes valores: abreviado/extenso e esclarecedor/não esclarecedor.
    • ML3 --- ortografia dos terminais-variáveis, podendo tomar um dos seguintes valores: flexivel, rígido.
    • ML4 --- comentários, podendo tomar um dos seguintes valores: inline, bloco, misto, meta-informação.

  • Cálculo das métricas de forma e lexicográficas para as duas variantes da gramática Lisp anteriomente apresentadas na aula (BNF/EBNF).

Métrica Lexicográfica Lisp (v1) Lisp (v2)
ML1 Abreviado/Esclarecedor Abreviado/Esclarecedor
ML2 NA NA
ML3 Rigidos Rigidos
ML4 NA NA

26 de Janeiro de 2009

  • Cálculo das métricas do Exercício 4.

Métrica PIs PIs(v2) PIs(v3)
ML1 Abreviado/Não Esclarecedor Abreviado/Não Esclarecedor Abreviado/Não Esclarecedor
ML2 Não Abreviado/Não Esclarecedor Não Abreviado/Não Esclarecedor Não Abreviado/Não Esclarecedor
ML3 Rigidos Rigidos Rigidos
ML4 Linha Linha Linha
       
Forma Directa Directa Directa
Tipo Mista Mista Mista
Notação BNF BNF BNF
FanIn 36/12    
FanOut 3/2    
FanIn/FanOut 0,5    
       
#T 14 14 14
#NT 12 14 14
#P 17 20 19
#PI 5 6 5
$Alt-Med 17/12 20/14 = 1.43 19/14=1.36
$RHS-Med 37/17 43/20 = 2.15 39/19=2.11
       
#Tam-RD 26 28 28
#Tam-LL 180 210 210
#Tam-LR 918 1160 1044


WebAtom 24 Jan 2006 - 06:07 - r2 TWikiContributor
TWiki's Education/EL0809 web The Education/EL0809 web of TWiki. TWiki is a Web-Based Collaboration Platform for the Enterprise. http://wiki.di.uminho.pt/twiki/bin/view/Education/EL0809 Copyright 2020 by contributing authors 2010-11-07T08:01:18Z FichasEG08 http://wiki.di.uminho.pt/twiki/bin/view/Education/EL0809/FichasEG08 2010-11-07T08:01:18Z 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) PedroRangelHenriques ProgramaATS08 http://wiki.di.uminho.pt/twiki/bin/view/Education/EL0809/ProgramaATS08 2009-11-25T10:28:20Z 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) PedroRangelHenriques ProgramaEG08 http://wiki.di.uminho.pt/twiki/bin/view/Education/EL0809/ProgramaEG08 2009-11-24T11:39:16Z 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) PedroRangelHenriques SumariosEG08 http://wiki.di.uminho.pt/twiki/bin/view/Education/EL0809/SumariosEG08 2009-10-12T15:49:28Z 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) DanielaCruz _WebHome http://wiki.di.uminho.pt/twiki/bin/view/Education/EL0809/_WebHome 2009-09-23T10:52:56Z 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) JoseFaria ResultadosAvaliacao http://wiki.di.uminho.pt/twiki/bin/view/Education/EL0809/ResultadosAvaliacao 2009-08-31T15:31:09Z 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) AlbertoSimoes SumariosATS08 http://wiki.di.uminho.pt/twiki/bin/view/Education/EL0809/SumariosATS08 2009-06-27T06:21:33Z 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) PedroRangelHenriques A2s2p:sumarios http://wiki.di.uminho.pt/twiki/bin/view/Education/EL0809/A2s2p:sumarios 2009-06-06T23:36:28Z 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) PedroRangelHenriques WebHome http://wiki.di.uminho.pt/twiki/bin/view/Education/EL0809/WebHome 2009-06-01T14:15:38Z 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) DanielaCruz A2s1p:sumarios http://wiki.di.uminho.pt/twiki/bin/view/Education/EL0809/A2s1p:sumarios 2009-04-20T19:00:12Z 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) AlbertoSimoes EtapasDoProjecto http://wiki.di.uminho.pt/twiki/bin/view/Education/EL0809/EtapasDoProjecto 2009-04-20T10:39:15Z 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) AlbertoSimoes AlunosGrupos08 http://wiki.di.uminho.pt/twiki/bin/view/Education/EL0809/AlunosGrupos08 2009-03-23T12:05:42Z 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) AlbertoSimoes FichasATS08 http://wiki.di.uminho.pt/twiki/bin/view/Education/EL0809/FichasATS08 2009-03-17T07:01:32Z 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) PedroRangelHenriques AG:sumarios http://wiki.di.uminho.pt/twiki/bin/view/Education/EL0809/AG:sumarios 2009-03-08T22:24:17Z 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) PedroRangelHenriques AvaliaçõesPeriódicas http://wiki.di.uminho.pt/twiki/bin/view/Education/EL0809/AvaliaçõesPeriódicas 2009-03-02T18:56:37Z 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) AlbertoSimoes AT:sumarios http://wiki.di.uminho.pt/twiki/bin/view/Education/EL0809/AT:sumarios 2009-01-04T22:18:22Z 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) AlbertoSimoes
WebChanges 15 Nov 2006 - 19:43 - r3 TWikiContributor

50 Recent Changes in TWiki Web retrieved at 15:00 (GMT)

FichasEG08 07 Nov 2010 - 08:01 - r26 PedroRangelHenriques
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 ...
ProgramaATS08 25 Nov 2009 - 10:28 - r2 PedroRangelHenriques
Engenharia de Linguagens Análise e Transformação de Software Análise de programas: Extracção de dados Armazenamento da informação recolhida ...
ProgramaEG08 24 Nov 2009 - 11:39 - r2 PedroRangelHenriques
Engenharia de Linguagens Engenharia Gramatical 2008/09 Programa Resumido O paradigma da Programação baseada em Gramáticas (PG). Conceitos sobre Gramáticas ...
SumariosEG08 12 Oct 2009 - 15:49 - r29 DanielaCruz
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 ...
_WebHome 23 Sep 2009 - 10:52 - r30 JoseFaria
Unidade Curricular de Especialização Engenharia de Linguagens (2008/2009) Edições Anteriores: 2008/2009 Responsável pela UCE: Rangel Henriques ...
ResultadosAvaliacao 31 Aug 2009 - 15:31 - r7 AlbertoSimoes
Engenharia de Linguagens Resultados de Avaliação G Nome PED EG ATS PLN PI NF 1 Miguel Esteves 19 15 17 ...
SumariosATS08 27 Jun 2009 - 06:21 - r12 PedroRangelHenriques
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 ...
A2s2p:sumarios 06 Jun 2009 - 23:36 - r14 PedroRangelHenriques
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 ...
WebHome 01 Jun 2009 - 14:15 - r28 DanielaCruz
Unidade Curricular de Especialização Engenharia de Linguagens (2008/2009) Edições Anteriores: 2007/2008 Responsável pela UCE: Rangel Henriques ...
A2s1p:sumarios 20 Apr 2009 - 19:00 - NEW AlbertoSimoes
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 ...
EtapasDoProjecto 20 Apr 2009 - 10:39 - r6 AlbertoSimoes
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 ...
AlunosGrupos08 23 Mar 2009 - 12:05 - r5 AlbertoSimoes
Engenharia de Linguagens Alunos/Grupos 2008/09 1 Miguel Esteves 1 Nuno Correia 1 Tiago Correia 2 Nuno Veloso 3 Susana Silva ...
FichasATS08 17 Mar 2009 - 07:01 - r5 PedroRangelHenriques
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 ...
AG:sumarios 08 Mar 2009 - 22:24 - r7 PedroRangelHenriques
Engenharia de Linguagens Projecto Integrado Aulas de Gestão Sumários 6 Outubro 2008 Modo de funcionamento do Projecto Integrado; Apresentação do enunciado ...
AvaliaçõesPeriódicas 02 Mar 2009 - 18:56 - r5 AlbertoSimoes
Engenharia de Linguagens PI: Avaliações Periódicas G Nome 10Nov 15Dez 1 Miguel Esteves Sat MBom 1 Nuno Correia Sat MBom ...
AT:sumarios 04 Jan 2009 - 22:18 - r11 AlbertoSimoes
Engenharia de Linguagens Projecto Integrado Aulas Tecnológicas Sumários 29 Setembro 2008 Necessidade de um ambiente de programação eficiente: Editor, linha ...
GraphVizEmXP 12 Nov 2008 - 11:17 - NEW AlbertoSimoes
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 ...
BibliografiaSobreScripting 29 Sep 2008 - 15:14 - r5 AlbertoSimoes
Engenharia de Linguagens Bibliografia: Scripting Livros Randal L. Schwartz, Tom Phoenix, brian d foy, Learning Perl , O'Reilly Media Larry Wall, Tom Christiansen ...
PrimeiroSemestre 28 Sep 2008 - 20:32 - r2 AlbertoSimoes
Engenharia de Linguagens Horário Primeiro Semestre 8h00 11h00 Módulo I Engenharia Gramatical 11h00 13h00 Projecto ...
MetodoAvaliacao 05 Sep 2008 - 16:08 - r2 AlbertoSimoes
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 ...
SegundoSemestre 29 Aug 2008 - 10:56 - NEW AlbertoSimoes
Engenharia de Linguagens Horário Segundo Semestre
WebTopicEditTemplate 09 Jul 2008 - 19:59 - NEW AlbertoSimoes
Engenharia de Linguagens TITLE
WebPreferences 09 Jul 2008 - 16:14 - r15 AlbertoSimoes
Education/EL0809 Web Preferences The following settings are web preferences of the Education/EL0809 web. These preferences overwrite the site level preferences ...
WebLeftBar 09 Jul 2008 - 16:12 - r5 AlbertoSimoes
TESTE " warn "off"}%
WebStatistics 30 Jun 2008 - 05:28 - r62 TWikiGuest
Statistics for Education/EL0809 Web Month: Topic views: Topic saves: File uploads: Most popular topic views: Top contributors for topic ...
WebTopicList 15 Nov 2006 - 19:43 - r3 TWikiContributor
WebIndex 15 Nov 2006 - 19:43 - r4 TWikiContributor
WebSearch 15 Nov 2006 - 19:43 - r3 TWikiContributor
WebSearchAdvanced 15 Nov 2006 - 19:43 - r3 TWikiContributor
WebTopicCreator 15 Nov 2006 - 19:43 - r2 TWikiContributor
WebChanges 15 Nov 2006 - 19:43 - r3 TWikiContributor
WebAtom 24 Jan 2006 - 06:07 - r2 TWikiContributor
TWiki's Education/EL0809 web
WebNotify 28 Mar 2005 - 09:40 - r5 TWikiContributor
TWikiGuest example #64;your.company .WebChangesAlert, ., .TWikiRegistration
WebRss 28 Mar 2005 - 09:40 - r4 TWikiContributor
" else "TWiki's Education/EL0809 web"}% /Education/EL0809
Found 34 topics.

See also: rss-small RSS feed, recent changes with 50, 100, 200, 500, 1000 topics, all changes

WebHome 01 Jun 2009 - 14:15 - r28 DanielaCruz

Unidade Curricular de Especialização

Engenharia de Linguagens (2008/2009)

Novidades

  • 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.
  • 2008-10-20 - Primeiras Etapas do Projecto
  • 2008-09-29 - Primeira semana de aulas;
  • 2008-08-29 - Adicionado programa básico para aulas tecnológicas de PI e alguma bibliografia;
  • 2008-07-09 - Criada a Web para a edição de 2008/2009;

Módulos

Material Didáctico


Education/EL0809 Web Utilities


WebIndex 15 Nov 2006 - 19:43 - r4 TWikiContributor
Education/EL0809 Web Changed Changed by
A2s1p:sumarios 20 Apr 2009 - 19:00 - NEW AlbertoSimoes
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 ...
A2s2p:sumarios 06 Jun 2009 - 23:36 - r14 PedroRangelHenriques
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 ...
AG:sumarios 08 Mar 2009 - 22:24 - r7 PedroRangelHenriques
Engenharia de Linguagens Projecto Integrado Aulas de Gestão Sumários 6 Outubro 2008 Modo de funcionamento do Projecto Integrado; Apresentação do enunciado ...
AT:sumarios 04 Jan 2009 - 22:18 - r11 AlbertoSimoes
Engenharia de Linguagens Projecto Integrado Aulas Tecnológicas Sumários 29 Setembro 2008 Necessidade de um ambiente de programação eficiente: Editor, linha ...
AlunosGrupos08 23 Mar 2009 - 12:05 - r5 AlbertoSimoes
Engenharia de Linguagens Alunos/Grupos 2008/09 1 Miguel Esteves 1 Nuno Correia 1 Tiago Correia 2 Nuno Veloso 3 Susana Silva ...
AvaliaçõesPeriódicas 02 Mar 2009 - 18:56 - r5 AlbertoSimoes
Engenharia de Linguagens PI: Avaliações Periódicas G Nome 10Nov 15Dez 1 Miguel Esteves Sat MBom 1 Nuno Correia Sat MBom ...
BibliografiaSobreScripting 29 Sep 2008 - 15:14 - r5 AlbertoSimoes
Engenharia de Linguagens Bibliografia: Scripting Livros Randal L. Schwartz, Tom Phoenix, brian d foy, Learning Perl , O'Reilly Media Larry Wall, Tom Christiansen ...
EtapasDoProjecto 20 Apr 2009 - 10:39 - r6 AlbertoSimoes
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 ...
FichasATS08 17 Mar 2009 - 07:01 - r5 PedroRangelHenriques
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 ...
FichasEG08 07 Nov 2010 - 08:01 - r26 PedroRangelHenriques
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 ...
GraphVizEmXP 12 Nov 2008 - 11:17 - NEW AlbertoSimoes
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 ...
MetodoAvaliacao 05 Sep 2008 - 16:08 - r2 AlbertoSimoes
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 ...
PrimeiroSemestre 28 Sep 2008 - 20:32 - r2 AlbertoSimoes
Engenharia de Linguagens Horário Primeiro Semestre 8h00 11h00 Módulo I Engenharia Gramatical 11h00 13h00 Projecto ...
ProgramaATS08 25 Nov 2009 - 10:28 - r2 PedroRangelHenriques
Engenharia de Linguagens Análise e Transformação de Software Análise de programas: Extracção de dados Armazenamento da informação recolhida ...
ProgramaEG08 24 Nov 2009 - 11:39 - r2 PedroRangelHenriques
Engenharia de Linguagens Engenharia Gramatical 2008/09 Programa Resumido O paradigma da Programação baseada em Gramáticas (PG). Conceitos sobre Gramáticas ...
ResultadosAvaliacao 31 Aug 2009 - 15:31 - r7 AlbertoSimoes
Engenharia de Linguagens Resultados de Avaliação G Nome PED EG ATS PLN PI NF 1 Miguel Esteves 19 15 17 ...
SegundoSemestre 29 Aug 2008 - 10:56 - NEW AlbertoSimoes
Engenharia de Linguagens Horário Segundo Semestre
SumariosATS08 27 Jun 2009 - 06:21 - r12 PedroRangelHenriques
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 ...
SumariosEG08 12 Oct 2009 - 15:49 - r29 DanielaCruz
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 ...
WebAtom 24 Jan 2006 - 06:07 - r2 TWikiContributor
TWiki's Education/EL0809 web
WebChanges 15 Nov 2006 - 19:43 - r3 TWikiContributor
WebHome 01 Jun 2009 - 14:15 - r28 DanielaCruz
Unidade Curricular de Especialização Engenharia de Linguagens (2008/2009) Edições Anteriores: 2007/2008 Responsável pela UCE: Rangel Henriques ...
WebIndex 15 Nov 2006 - 19:43 - r4 TWikiContributor
WebLeftBar 09 Jul 2008 - 16:12 - r5 AlbertoSimoes
TESTE " warn "off"}%
WebNotify 28 Mar 2005 - 09:40 - r5 TWikiContributor
TWikiGuest example #64;your.company .WebChangesAlert, ., .TWikiRegistration
WebPreferences 09 Jul 2008 - 16:14 - r15 AlbertoSimoes
Education/EL0809 Web Preferences The following settings are web preferences of the Education/EL0809 web. These preferences overwrite the site level preferences ...
WebRss 28 Mar 2005 - 09:40 - r4 TWikiContributor
" else "TWiki's Education/EL0809 web"}% /Education/EL0809
WebSearch 15 Nov 2006 - 19:43 - r3 TWikiContributor
WebSearchAdvanced 15 Nov 2006 - 19:43 - r3 TWikiContributor
WebStatistics 30 Jun 2008 - 05:28 - r62 TWikiGuest
Statistics for Education/EL0809 Web Month: Topic views: Topic saves: File uploads: Most popular topic views: Top contributors for topic ...
WebTopicCreator 15 Nov 2006 - 19:43 - r2 TWikiContributor
WebTopicEditTemplate 09 Jul 2008 - 19:59 - NEW AlbertoSimoes
Engenharia de Linguagens TITLE
WebTopicList 15 Nov 2006 - 19:43 - r3 TWikiContributor
_WebHome 23 Sep 2009 - 10:52 - r30 JoseFaria
Unidade Curricular de Especialização Engenharia de Linguagens (2008/2009) Edições Anteriores: 2008/2009 Responsável pela UCE: Rangel Henriques ...
Found 34 topics.

See also the faster WebTopicList

WebLeftBar 09 Jul 2008 - 16:12 - r5 AlbertoSimoes
TESTE


  • Main Webs

WebNotify 28 Mar 2005 - 09:40 - r5 TWikiContributor
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:

Web Changes Notification Service

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
   * TWiki.DaisyCutter: Petal* (1) TWiki.WeedKillers (3) Pretty*Flowers
Subscribe StarTrekFan to changes to all topics that start with Star except those that end in Wars, sInTheirEyes or shipTroopers.
   * TWiki.StarTrekFan: Star* - *Wars - *sInTheirEyes - *shipTroopers
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? :
   * TWiki.GardenGroup: TWiki.AllNewsLetters? (3)
   * petunia@flowers.com: - TWiki.ManureNewsLetter
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 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

WebPreferences 09 Jul 2008 - 16:14 - r15 AlbertoSimoes

Education/EL0809 Web Preferences

The following settings are web preferences of the Education.EL0809 web. These preferences overwrite the site-level preferences in TWiki.TWikiPreferences and Main.TWikiPreferences, and can be overwritten by user preferences (your personal topic, eg: TWikiGuest in the Main web).

Web Preferences Settings

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.

  • List of topics of the Education/EL0809 web:

 #D0D0D0 
  • 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.
    • #Set WEBLOGOIMG = /twiki/pub/Main/LocalLogos/um_eengP.jpg
    • Set WEBLOGOURL = http://www.di.uminho.pt/
    • #Set WEBLOGOALT = DIUM

  • 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.

  • 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.
    • #Set DENYWEBVIEW =
    • #Set ALLOWWEBVIEW =
    • #Set DENYWEBCHANGE =
    • #Set ALLOWWEBCHANGE = TWikiAdminGroup
    • Set ALLOWWEBCHANGE = JoseCarlosRamalho,Main.AlbertoSimoes,Main.PedroRangelHenriques,Main.DanielaCruz
    • #Set DENYWEBRENAME =
    • #Set ALLOWWEBRENAME = TWikiAdminGroup

  • Web preferences that are not allowed to be overridden by user or topic preferences:
    • Set FINALPREFERENCES = NOSEARCHALL, ATTACHFILESIZELIMIT, WIKIWEBMASTER, WEBCOPYRIGHT, WEBTOPICLIST, DENYWEBVIEW, ALLOWWEBVIEW, DENYWEBCHANGE, ALLOWWEBCHANGE, DENYWEBRENAME, ALLOWWEBRENAME

Help on Preferences

  • A preference setting is defined by:
    3 or 6 spaces * Set NAME = value
    Example:
    • Set WEBBGCOLOR = #FFFFC0
  • A preferences setting can be disabled with a # sign. Remove the # sign to enable a local customisation. Example:
  • 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.

Related Topics

Tools

WebRss 28 Mar 2005 - 09:40 - r4 TWikiContributor
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-us Copyright 2020 by contributing authors TWiki Administrator [webmaster@di.uminho.pt] The contributing authors of TWiki TWiki DIUM.Education/EL0809 http://wiki.di.uminho.pt/twiki/bin/view/Education/EL0809 /twiki/pub/Main/LocalLogos/um_eengP.jpg FichasEG08 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:18Z PedroRangelHenriques ProgramaATS08 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:20Z PedroRangelHenriques ProgramaEG08 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:16Z PedroRangelHenriques SumariosEG08 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:28Z DanielaCruz _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:56Z JoseFaria ResultadosAvaliacao 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:09Z AlbertoSimoes SumariosATS08 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:33Z PedroRangelHenriques A2s2p: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:28Z PedroRangelHenriques 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: 2007/2008 Responsável pela UCE: Rangel Henriques ... (last changed by DanielaCruz) 2009-06-01T14:15:38Z DanielaCruz A2s1p: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:12Z AlbertoSimoes EtapasDoProjecto 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:15Z AlbertoSimoes AlunosGrupos08 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:42Z AlbertoSimoes FichasATS08 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:32Z PedroRangelHenriques AG: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:17Z PedroRangelHenriques Avaliaçõ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:37Z AlbertoSimoes AT: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:22Z AlbertoSimoes
WebSearch 15 Nov 2006 - 19:43 - r3 TWikiContributor

Web Search

Search: \.*

Found 0 topics.

  Advanced search | Help
TIP: to search for all topics that contain "SOAP", "WSDL", a literal "web service", but not "shampoo", write: soap wsdl "web service" -shampoo
Search where:       
(otherwise search Education/EL0809 Web only)

Other search options:
WebSearchAdvanced 15 Nov 2006 - 19:43 - r3 TWikiContributor

Warning
Can't INCLUDE TWiki.WebSearchAdvanced repeatedly, topic is already included.
WebStatistics 30 Jun 2008 - 05:28 - r62 TWikiGuest

Statistics for Education/EL0809 Web

Month: Topic
views:
Topic
saves:
File
uploads:
Most popular
topic views:
Top contributors for
topic save and uploads:
Jun 2008 0 0 0    
May 2008 0 0 0    
Mar 2008 0 0 0    
Feb 2008 0 0 0    
Jan 2008 0 0 0    
Dec 2007 0 0 0    
Nov 2007 0 0 0    
Oct 2007 0 0 0    
Sep 2007 0 0 0    
Aug 2007 0 0 0    
Jul 2007 0 0 0    
Jun 2007 0 0 0    
May 2007 0 0 0    
Apr 2007 0 0 0    
Mar 2007 0 0 0    
Feb 2007 0 0 0    

Notes:

  • Do not edit this topic, it is updated automatically. (You can also force an update)
  • TWikiDocumentation tells you how to enable the automatic updates of the statistics.
  • Suggestion: You could archive this topic once a year and delete the previous year's statistics from the table.
WebTopicCreator 15 Nov 2006 - 19:43 - r2 TWikiContributor

Create New Topic in Education/EL0809 Web

Topic name:


It's usually best to choose a WikiWord for the new topic name, otherwise automatic linking may not work. Characters not allowed in topic names, such as spaces will automatically be removed.

Topic parent:

Use template:

View templates


info Once you have created the topic, consider adding links in related topics to the new topic so that there are more ways people can discover it.
WebTopicEditTemplate 09 Jul 2008 - 19:59 - NEW AlbertoSimoes

Engenharia de Linguagens

TITLE


WebTopicList 15 Nov 2006 - 19:43 - r3 TWikiContributor

See also the verbose WebIndex.

_WebHome 23 Sep 2009 - 10:52 - r30 JoseFaria

Unidade Curricular de Especialização

Engenharia de Linguagens (2008/2009)

Novidades

  • 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.
  • 2008-10-20 - Primeiras Etapas do Projecto
  • 2008-09-29 - Primeira semana de aulas;
  • 2008-08-29 - Adicionado programa básico para aulas tecnológicas de PI e alguma bibliografia;
  • 2008-07-09 - Criada a Web para a edição de 2008/2009;

Módulos

Material Didáctico


Education/EL0809 Web Utilities


Found 34 topics.

  Simple search | Help
TIP: to search for all topics that contain "SOAP", "WSDL", a literal "web service", but not "shampoo", write: soap wsdl "web service" -shampoo
Search where:


(otherwise search Education/EL0809 Web only)
Sort results by:


Make search:
(semicolon ; for and) about regular expression search
Don't show:

Do show: about BookView
Limit results to: (all to show all topics)

Other search options:
WebStatistics 30 Jun 2008 - 05:28 - r62 TWikiGuest

Statistics for Education/EL0809 Web

Month: Topic
views:
Topic
saves:
File
uploads:
Most popular
topic views:
Top contributors for
topic save and uploads:
Jun 2008 0 0 0    
May 2008 0 0 0    
Mar 2008 0 0 0    
Feb 2008 0 0 0    
Jan 2008 0 0 0    
Dec 2007 0 0 0    
Nov 2007 0 0 0    
Oct 2007 0 0 0    
Sep 2007 0 0 0    
Aug 2007 0 0 0    
Jul 2007 0 0 0    
Jun 2007 0 0 0    
May 2007 0 0 0    
Apr 2007 0 0 0    
Mar 2007 0 0 0    
Feb 2007 0 0 0    

Notes:

  • Do not edit this topic, it is updated automatically. (You can also force an update)
  • TWikiDocumentation tells you how to enable the automatic updates of the statistics.
  • Suggestion: You could archive this topic once a year and delete the previous year's statistics from the table.
WebTopicCreator 15 Nov 2006 - 19:43 - r2 TWikiContributor

Create New Topic in Education/EL0809 Web

Topic name:


It's usually best to choose a WikiWord for the new topic name, otherwise automatic linking may not work. Characters not allowed in topic names, such as spaces will automatically be removed.

Topic parent:

Use template:

View templates


info Once you have created the topic, consider adding links in related topics to the new topic so that there are more ways people can discover it.
WebTopicEditTemplate 09 Jul 2008 - 19:59 - NEW AlbertoSimoes

Engenharia de Linguagens

TITLE


WebTopicList 15 Nov 2006 - 19:43 - r3 TWikiContributor

See also the verbose WebIndex.

_WebHome 23 Sep 2009 - 10:52 - r30 JoseFaria

Unidade Curricular de Especialização

Engenharia de Linguagens (2008/2009)

Novidades

  • 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.
  • 2008-10-20 - Primeiras Etapas do Projecto
  • 2008-09-29 - Primeira semana de aulas;
  • 2008-08-29 - Adicionado programa básico para aulas tecnológicas de PI e alguma bibliografia;
  • 2008-07-09 - Criada a Web para a edição de 2008/2009;

Módulos

Material Didáctico


Education/EL0809 Web Utilities


Found 34 topics.
This site is powered by the TWiki collaboration platformCopyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback
Syndicate this site RSSATOM