Engenharia de Linguagens

Search: \.*

Education/EL1011 Web Changed Changed by
A2s1p:sumarios 23 Sep 2009 - 10:52 - r3 JoseFaria

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 23 Sep 2009 - 10:52 - r16 JoseFaria

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 23 Sep 2009 - 10:52 - r9 JoseFaria

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 23 Sep 2009 - 10:52 - r13 JoseFaria

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"


Agenda2html 23 Nov 2009 - 08:50 - NEW JorgeGustavo

Engenharia de Linguagens

TITLE

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
   <xsl:output method="xhtml" doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
      doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN" encoding="UTF-8" indent="yes" version="1.0"
      omit-xml-declaration="yes"/>
   <xsl:template match="/">
      <html>
         <head>
            <style type="text/css">
               #left {
                  float:left;
                  width:30%;
               }
               #right {
                  float:left;
                  width:70%;
               }
               .entrada {
                  border: 1px solid black;
                  width: 378px;
                  margin:10px;
               }
               .entrada_grupo {
                  border: 1px solid black;
                  width: 370px;
                  padding: 0px;
                  margin: 10px 0px 10px 0px;
                  background-color: #ffffff;
               }
               .grupo {
                  background-color: #ccccaa;
                  border: 1px solid black;
                  width: 378px;
                  margin:10px;
               }
               td h2 {
                  color:#123456;
                  font-style:italic;
               }</style>
            <title>Agenda de contactos</title>
         </head>
         <body>
            <div id="left">
               <h2>Lista de contactos</h2>
               <xsl:apply-templates mode="indice"/>
               <h2>Lista de contactos ordenada</h2>
               <xsl:apply-templates mode="indiceord"/>
            </div>
            <div id="right">
               <xsl:apply-templates/>
            </div>
         </body>
      </html>
   </xsl:template>
   <xsl:template match="entrada" mode="indice">
      <ul>
            <li>
               <a href="#{@id}">
                  <xsl:value-of select="nome"/>
               </a>
            </li>
      </ul>
   </xsl:template>
   
   <xsl:template match="*" mode="indiceord">
      <ul>
         <xsl:for-each select="entrada|grupo/entrada">
            <xsl:sort order="ascending" select="nome"/>
            <li>
               <a href="#{@id}">
                  <xsl:value-of select="nome"/>
               </a>
            </li>
         </xsl:for-each>
      </ul>
   </xsl:template>
   
   <xsl:template match="grupo">
      <table class="grupo">
         <th>
            <h1>
               <xsl:text>Grupo:</xsl:text>
               <xsl:value-of select="@gid"/>
            </h1>
         </th>
         <xsl:apply-templates/>
      </table>
   </xsl:template>
   <xsl:template match="entrada">
      <a name="{@id}"/>
      <table class="entrada">
         <th/>
         <tr>
            <td>
               <xsl:choose>
                  <xsl:when test="@tipo='pessoa'">
                     <h2>
                        <xsl:text>Pessoa</xsl:text>
                     </h2>
                  </xsl:when>
                  <xsl:when test="@tipo='empresa'">
                     <h2>
                        <xsl:text>Empresa</xsl:text>
                     </h2>
                  </xsl:when>
                  <xsl:when test="not(@tipo)">
                     <h2>
                        <xsl:text>Sem tipo</xsl:text>
                     </h2>
                  </xsl:when>
               </xsl:choose>
            </td>
         </tr>
         <xsl:apply-templates/>
      </table>
   </xsl:template>
   <xsl:template match="grupo/entrada">
      <a name="{@id}"/>
      <tr>
         <td>
            <table class="entrada_grupo">
               <tr>
                  <td>
                     <xsl:choose>
                        <xsl:when test="@tipo='pessoa'">
                           <h2>
                              <xsl:text>Pessoa</xsl:text>
                           </h2>
                        </xsl:when>
                        <xsl:when test="@tipo='empresa'">
                           <h2>
                              <xsl:text>Empresa</xsl:text>
                           </h2>
                        </xsl:when>
                        <xsl:when test="not(@tipo)">
                           <h2>
                              <xsl:text>Sem tipo</xsl:text>
                           </h2>
                        </xsl:when>
                     </xsl:choose>
                     <xsl:apply-templates/>
                  </td>
               </tr>
            </table>
         </td>
      </tr>
   </xsl:template>
   <xsl:template match="ref">
      <xsl:variable name="ENTREF" select="@entref"/>
      <tr>
         <td>
            <xsl:text>Ver também:</xsl:text>
            <a href="#{@entref}">
               <xsl:value-of select="/agenda/entrada[@id = $ENTREF]/nome"/>
            </a>
         </td>
      </tr>
   </xsl:template>
   <xsl:template match="nome">
      <tr>
         <td>
            <xsl:apply-templates/>
         </td>
      </tr>
   </xsl:template>
   <xsl:template match="email">
      <tr>
         <td>
            <a href="mailto:{.}">
               <xsl:apply-templates/>
            </a>
         </td>
      </tr>
   </xsl:template>
   <xsl:template match="telefone">
      <tr>
         <td>
            <xsl:apply-templates/>
         </td>
      </tr>
   </xsl:template>
</xsl:stylesheet>


AlunosGrupos08 23 Sep 2009 - 10:52 - r7 JoseFaria

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


AlunosGrupos09 23 Oct 2010 - 08:15 - r7 PedroRangelHenriques

Engenharia de Linguagens (2009/10)

Alunos/Grupos

4 Andre da Silva Rocha
2 André Fernandes dos Santos
1 Daniel Carvalho da Rocha
3 Hélder de Jesus Almeida da Silva
1 Jorge Cunha Mendes
3 José Luis Freitas
4 Márcio João Carvalho Coelho
D Paulo Alexandre Marques de Oliveira Serafim
D Paulo Alexandre Ricardo Monsanto
D Pedro Simão Pregueiro Jerónimo
2 Carlos Miguel Janeiro Regedor Dias da Torre
D José Pedro Gonçalves


AlunosGrupos10 02 Oct 2011 - 22:36 - r8 PedroRangelHenriques

Engenharia de Linguagens (2010/11)

Alunos/Grupos

Gr Nome Email
4 André Manuel Pereira Pedra da Cruz Lopes andre.pclopes at gmail dot com
4 Bruno Gustavo Rego Amaral Costa bgustavocosta at gmail dot com
3 Daniela Filipa Mota Morais da Fonte danielamoraisfonte at gmail dot com
1 José João Peixoto Pereira jj.peixotopereira at gmail dot com
1 José Azevedo jazevedo at gmail dot com
2 José Pedro Vieira Costa zepedro.cs at gmail dot com
2 Mario Ulisses Pires Araújo Costa ulissesmonhecosta at gmail dot com
4 Nuno Miguel Carvalho Oliveira nmco51845 at gmail dot com
2 Pedro Vasconcelos Castro Lopes Faria pedro.faria.80 at gmail dot com
3 Ricardo Ismael Oliveira Vilas Boas ismael.vb at gmail dot com
1 Tiago Sá tiago at esterisco dot com


AvaliaçõesPeriódicas 23 Sep 2009 - 10:52 - r7 JoseFaria

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 23 Sep 2009 - 10:52 - r7 JoseFaria

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 23 Sep 2009 - 10:52 - r8 JoseFaria

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 23 Sep 2009 - 10:52 - r7 JoseFaria

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)

  • ...

FichasATS09 18 Oct 2010 - 05:58 - r11 PedroRangelHenriques

Engenharia de Linguagens (2009/10)

Análise e Transformação de Software

Exemplos para as aulas

  • Para o seguinte programa:
    • Calcule o backward slicing relativamente à instrução
      printf("Maximo: %d\nMinimo: %d\n", max, min);
      
      com respeito à variável max.
    • Calcule o forward slicing relativamente à instrução
      int i, max, min;
      com respeito à variável min.

int main()
{
     int array[MAX];
     int i, max, min;
     for (i = 0; i < MAX; i++)
    {
         printf("Introduza numero:\n");
         scanf("%d", &i);
    }

    max = array[0];
    min = array[0];
    for (i = 1; i < MAX; i++)
   {
        if (array[i] < min)   { min = array[i]; }
        if (array[i] > max)  { max = array[i]; }
   }

  printf("Maximo: %d\nMinimo: %d\n", max, min);
  return 0;
}

  • Calcule o System Dependency Graph para o seguinte programa:


     void Add(int* a, int b)
     {
          *a = *a + b;
     }

     void Increment(int* z)
     {
          Add(z,1);
     }

     int main()
     {
         int sum = 0;
         int i = 1;
         while(i < 11)
         {
             Add(&sum,i);
             Increment(&i);
         }
         printf("Sum: %d\n", sum);
      }

  • Calcule o Program Dependency Graph para o seguinte programa:

  • Calcule o Control Flow Graph para o seguinte programa:
     int main()
     {
         int n, i, sum, product;
         scanf("%d",&n);
         i=1;
         sum=0
         product=1;
         while(i <= n)
         {
            sum += i;
            product *= i;
            i++;
         }
         printf("Sum: %d\n", sum);
         printf("Product: %d\n", product);
     }

Notas sobre AnTLR

  • Configurar CLASSPATH para permitir a invocação via linha de comandos (Windows): set CLASSPATH = %CLASSPATH%;pathANTLR; onde a pathANTLR é a respectiva path para o ANTLR (.jar).

  • Fazer download dos seguintes ficheiros Test.java e input.txt para a pasta "output" para onde foram gerados os ficheiros na alínea anterior.

  • Executar "javac *.java" e finalmente "java Test".

Fichas de Avaliaçao

Ficha IV

Após a pesquisa genérica sobre o tema "Transformação de Programas" estude em concreto uma das ferramentas enocntradas e prepare uma pequena apresntação à turna sobre ela: filosofia, campos de aplicação, funcionalidades e utilização. Mostre, a título de exemplo, como implementaria o problema de transformação de um programa em C-- proposto na Ficha II.

Ficha III

Faça uma pesquisa sobre o tema "Transformação de Programas" e procure em concreto abordagens, ferramentas e aplicações. Depois identifique lacunas de modo a defnir o projecto que vai levar a cabo para colmatar essas fraquezas. Por fim implemente o sistema de transformação idealizado.

Ficha II

Partindo de uma versão "light" da gramática do C (C--) disponível no site do AnTLR, pretende-se que os alunos manipulem um dado programa de entrada, cumprindo os seguintes requisitos:

  • Construir a Tabela de identificadores;
  • Adicionar a respectiva declaração de tipo (infira o tipo se necessário), por cada variável usada não declarada.
  • Construir o Data Dependence Graph (DDG), usando a técnica de Single Static Assignment (SSA)
  • Construir o Control Flow Graph (CFG)

Ficha I

Com a intenção de levar os alunos a fazer um exercício de transformação de SW que os obrigue a pensar no problema, nas fases, nas estratégias e nas ferramentas -- percebendo a necessidade de fazer a análise sintatica e semantica, de construir uma representação intermédia (RI), tipo ASD+TabDefs, e de criar uma Base de Regras de Transformação e um Sistema de Reescrita de ASDs para facilitar a especificação e sistematizar a implementação -- pretende-se que crie uma ferramenta para fazer o upgrade de programas escritos em SQL1 para SQL2.

A questão está que em SQL1 não existe a instrução UPDATE TABLE para alterar um ou mais campos não-chave de um registo. Isso leva a que a actualização é sempre feita à custa de uma remoção (REMOVE FROM T WHERE chv="X") seguida de uma inserção (INSERT INTO T (chv="X", a1=...) ).

O upgrader a implementar deve detectar os pares (REMOVE,INSERT) na mesma chaves e substituir por um UPDATE nessa mesma chaves.


FichasATS10 18 Oct 2010 - 05:58 - NEW PedroRangelHenriques

Engenharia de Linguagens (2010/11)

Análise e Transformação de Software

Exemplos para as aulas

Notas sobre AnTLR

  • Configurar CLASSPATH para permitir a invocação via linha de comandos (Windows): set CLASSPATH = %CLASSPATH%;pathANTLR; onde a pathANTLR é a respectiva path para o ANTLR (.jar).

  • Fazer download dos seguintes ficheiros Test.java e input.txt para a pasta "output" para onde foram gerados os ficheiros na alínea anterior.

  • Executar "javac *.java" e finalmente "java Test".

Fichas de Avaliaçao

Ficha I


FichasEG08 23 Sep 2009 - 10:52 - r27 JoseFaria

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


FichasEG09 18 Oct 2010 - 05:43 - r23 PedroRangelHenriques

Engenharia de Linguagens (2009/10)

Engenharia Gramatical

Exercícios e Exemplos para as aulas

Exemplo 5:

A gramática independente de contexto GIC5, abaixo apresentada, define uma linguagem específica (DSL) para apoio à contabilização de todos os PIs de um dado grupo de investigação, permitindo descrever cada projecto concluído ou em andamento dentro do grupo, financiado pela FCT, pelo GRICES ou pela ADI. O Símbolo Inicial é PIs, os Símbolos Terminais são escritos em minúsculas (pseudo-terminais), ou em maiúscula (palavras-reservadas), ou entre apóstrofes (sinais de pontuaçãao) e a string nula é denotada por &; os restantes serão os Símbolos Não-Terminais.

         p1: PIs --> RESUMO Lst DETALHE Projs '.'
         p2: Lst --> InvPs
         p3:      | Lst ';' InvPs
         p4: InvPs --> SglInv LstIds
         p5: SglInv --> id
         p6: LstIds --> SglProj
         p7:         | SglProj ',' LstIds
         p8: Projs --> Proj '.'
         p9:        | Projs Proj '.'
         p10: Proj --> SglProj Desc FINANC Entidad Valor INIC Ano FIM Ano
         p11: SglProj --> id
         p12: Desc --> str
         p13: Entidad --> FCT
         p14:          | GRICES
         p15:          | ADI
         p16: Ano --> num
         p17: Valor --> num
sabendo-se ainda que os símbolos terminais variáveis e os comentários válidos são definidos pelas seguintes expressões regulares:
         num : [0-9]+
         id : [a-zA-Z]+
         str : \"[^"]*\"
         comentario1 : "%".*
Afira a qualidade de GIC5 calculando todas as métricas estudadas (tamanho, forma, lexicográficas).

Pretende-se repetir a avaliação da 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):

  • (GIC5T1) reescreva a gramática eliminando todas as produções unitárias e a recursividade (à custa de usar notação ex-BNF);
  • (GIC5T2) por questões de legibilidade e outras razões, não é desejável ter produções tão longas (com tantos símbolos do lado direito), como a p10 acima. Modifique a gramática G de modo a permitir reescrever p10 da seguinte forma:
         p10: Proj --> SglProj Desc Financiament Period
  • (GIC5T3) complete a gramática G para permitir incluir na descrição detalhada de cada projecto (símbolo Proj) a lista de todos os seus membros (sigla dos investigadores que nele colaboram);

Exemplo 4:

Repita o mesmo exercício do Exemplo 3 para medição e aferição de qualidade aplicado à sua gramática do Exemplo 1.

Exemplo 3:

Considere a gramática independente de contexto abaixo apresentada no Exemplo 2, designada por GIC2, e calcule as métricas dos 3 tipos de modo a poder pronunciar-se sobre a qualidade da GIC em causa.

Repita o mesmo exercício de medição e aferição de qualidade para as gramáticas GIC2T1, GIC2T2, GIC2T3, GIC2T4 e GIC2T5 obtidas da original (GIC2) por aplicação das sequintes transformações:

  • (T1) remova todas as produções unitárias;
  • (T2) transforme a gramática em LL(1);
  • (T3) reescreva a gramática usando ex-BNF, de modo a eliminar toda a recursividade directa ou indirecta;
  • (T4) reescreva a gramática de modo a permitir que a derivação do símbolo Descrição na produção p4 seja assim:
     
               p4:  Descricao    -->  IdentObra '(' Autor ')' IdentEdicao
     
  • (T5) altere a gramática de modo a permitir que cada livro tenha mais de um Autor.

-- -- PedroRangelHenriques - 23 Jan 2010 - 23 Jan 2010

Exemplo 2:

A gramática independente de contexto, GIC, abaixo apresentada, define uma linguagem específica para descrever os livros e CDs disponíveis numa biblioteca e os estados que lhe são associados (livres ou emprestados), à semelhança do que acontece nas bibliotecas da UM.

O Símbolo Inicial é Biblioteca, os Símbolos Terminais são escritos em maiúsculas (pseudo-terminais) ou em maiúscula entre apostrofes (palavras-reservadas e sinais de pontuação), e a string nula é denotada por &; os restantes (sempre em minúsculas) serão os Símbolos Não-Terminais.

        p0:  Biblioteca   -->  Registos
        p1:  Registos     -->  Registo
        p2:                 |  Registos ',' Registo
        p3:  Registo      -->  '[' REGISTO Descricao  EXISTENCIAS 
                                                    Existencias ']'
        p4:  Descricao    -->  Referencia Tipo Titulo '(' Autor ')' 
                               Editora Ano Catalogo
        P5:  Referencia   -->  id
        p6:  Tipo         -->  LIVRO
        p7:                 |  CDROM
        p8:                 |  OUTRO
        p9:  Titulo       -->  string
        p10: Autor        -->  string
        p11: Editora      -->  string
        p12: Ano          -->  num
        p13: Catalogo     -->  BGUM
        p14:                |  ALFA
        p15:                |  OUTRO
        p16: Existencias  -->  LOCAL Local '(' Estados ')'
        p18: Local        --> string 
        p19: Estados      --> Estado
        p20:                | Estados ',' Estado
        p21: Estado       --> CodigoBarras Disponib
        p22: CodigoBarras --> id
        p23: Disponib     --> ESTANTE
        p24:                | PERMANENTE
        p25:                | EMPRESTADO DataDev
        p26: DataDev      --> Ano '-' Mes '-' Dia
        p27: Mes          --> num
        p28: Dia          --> num

Neste contexto e após analisar a GIC dada, responda às alíneas seguintes.

  • a) Escreva uma Frase válida da linguagem gerada pela GIC dada, mostrando a respectiva Árvore de Derivação.

  • b) Altere a gramática de modo a permitir que cada livro tenha mais de um Autor.

  • c) O par de produções p1/p2 define uma lista com recursividade à esquerda. Altere esse par para usar recursividade à direita e mostre, através das árvores de derivação, a diferença entre ambos os esquemas iterativos.

  • d) (TPC)Escreva as funções de um parser RD-puro (recursivo-descendente) para reconhecer o Símbolo Estado e seus derivados.

  • e) (TPC)Construa o estado inicial do autómato LR(0) pra gramática dada e os estados que dele saiem.

  • f) Transforme a GIC dada numa gramática tradutora, GT, reconhecível pelo AnTLR, para:
    • calcular e imprimir: o número de registos; e o número de livros existentes para cada registo.
    • o número total de livros com estado RESERVADO/PERMNENTE/ESTANTE.
    • identificar e listar por ordem alfabética os títulos dos livros.
    • verificar se não existem registos com a mesma referência.

  • g) repita a alinea anterior usando agora uma gramática de atributos, GA, recorrendo também ao AnTLR, para gerar o processador, criando primeiro uma árvore de sintaxe abstracta (ASA).

Exemplo 1:

Black é uma jovem empresa portuguesa que desenha, produz e comercializa tudo para Góticos, desde vestimentas, meias e sapatos até adereços e tatuagens.

A Black quer ter um sitio WWW, como agora é moda, mas que seja alimentado facilmente por eles (cada época que a colecção é alterada) sem contudo saberem nada de HTML, nem terem eles de montar o site. Para isso pretende-se definir uma nova Linguagem que permita à Black descrever a sua colecção. Além da data da última actualização, a linguagem deverá permitir descrever acessórios e vestimentas.

No caso de se tratar de um acessório, além da referência e descrição, deverá ser possível incluir o url para uma ou mais imagens (opcional), o tipo do acessório (bracelete, colar, bolsa, anel, piercing); o seu preço e o material de que é feito (pele, cabedal, tecido, metal).

No caso de se tratar de vestimenta, deverá ser possível diferenciar entre Para Ele e Para Ela. Além da referência e descrição da vestimenta, deverá ser incluído o url para uma ou mais imagens, o tipo da vestimenta (vestido, calça, t-shirt), o preço e os tamanhos disponíveis (XS, S, M, L, XL).

Após ler o enunciado acima, pede-se que:

  • a) Escreva então uma Gramática Independente de Contexto, GIC, que especifique a Linguagem pretendida (note que o estilo da linguagem (mais ou menos verbosa) e o seu desenho são da sua responsabilidade).

  • b) Transforme a GIC acima em notação do AnTLR e gere um parser para reconhecer frases válidas da linguagem que criou e para detectar os erros em frases inválidas.

Questões colocadas nas aulas

Q1:

  • (2009-10-19) Investigue o que existe sobre métricas para avaliar a qualidade de gramáticas (apresente na próxima aula uma síntese das referências que encontrou).

Fichas Práticas para Avaliação (a resolver fora das aulas)

F4:

  • Escreva uma pequena monografia em formato de artigo, e entregue para efeitos de avaliação, sobre Editores Estruturais (structure-editors) e Editores Orientados pela Sintaxe (syntax-directed editors): resumo do conceito, abordagens e estado actual (nível académico e comercial).

F3:

  • Desenvolva um sistema (GraAlEditor) para edição, visualização e medição de gramáticas. Nesse sistema deve implementar os várioa parametros de aferição e as várias métricas estudadas.

F2:

  • Escreva uma pequena monografia em formato de artigo, e entregue para efeitos de avaliação, sobre Parsing: resumo do conceito, abordagens e algoritmos.

F1:

  • O resultado da investigação solicitada na Q1 acima, deve ser escrito em formato de artigo e entregue (após apresentação oral na aula) para efeitos de avaliação --- Classe Latex para formatar o documento a apresentar: llncs2e.zip

Notas e Links úteis


FichasEG10 04 Apr 2011 - 22:44 - r13 PedroRangelHenriques

Engenharia de Linguagens (2010/11)

Engenharia Gramatical

Exercícios e Exemplos para as aulas

Exemplo 1:

Para apoio a um projecto de Genealogia pretende-se que crie uma linguagem simples que permita descrever Famílias. Cada Família será formada pela identificação dos Progenitores (nome próprio e apelido, separados) e pela lista dos filhos (apenas nome próprio).

Em fases posteriores pretende-se que a sua linguagem permita distinguir entre os Progenitores, a Mãe e o Pai, e depois a Data do casamento (para que o registo genealógico possa também suportar um projecto de investigação em Demografia Histórica).

Após ler o enunciado acima, pede-se que:

  • a) Escreva então uma Gramática Independente de Contexto, GIC, que especifique a Linguagem pretendida (note que o estilo da linguagem (mais ou menos verbosa) e o seu desenho são da sua responsabilidade). Essa GIC deve ir sendo sucessivamente transformada para mostrar diferentes formas de definir a mesma linguagem e ainda para fazer a evolução da linguagem inicial, conforme acima pedido.

  • b) Transforme a GIC numa Gramática Tradutora (GT) para calcular o número de filhos por casal, apresentando esse valor emparelhado com a data do casamento.

  • c) Transforme a GIC numa Gramática Tradutora (GT) para gerar instruções SQL que carreguem para a Tabela "Pessoas" de uma base de dados a informação de cada membro do agregado familiar: Chave, NomeProprio, Apelido, Género (se conhecido); Note que a Chave deve ser gerada pelo seu Processador e que o Apelido dos Filhos deve ser inferido também por esse Processador a partir dos Apelidos dos Progenitores.

  • d) Reescreva as GTs anteriores mas agora usando Gramáticas de Atributos (GA).

Exemplo 2:

Considere a linguagem de programação Lisp na qual um programa é uma Symbolic-Expression (SExp). Sabe-se que uma SExp é um valor atómico (palavra ou numero) ou é uma lista e que cada elemento da lista é uma SExp.

A GIC abaixo define formalmente a linguagem Lisp, de acordo com a descrição acima:

      T = { num, pal, "(", ")" }
      N = { Lisp, SExp, SExplist }
      S = Lisp
      P = {
            p1: Lisp     --> SExp     
            p2: SExp     --> num
            p3: SExp     --> pal
            p4: SExp     --> "(" SExplist ")"
            p5: SExplist --> SExp SExplist
            p6: SExplist --> &
          }

Pede-se então que escreva uma Gramática de Atributos, GA, para

  • a) calcular o nível de aninhamento de cada lista (comece em 1 para a lista principal).

  • b) construir uma lista com todos os "operadores" presentes (considera-se "operador" o 1ºelemento de cada lista).

  • c) verificar se todos os "operadores" usados pertencem ao conjunto de operadores válidos de acordo com uma "biblioteca" fornecida no inicio.

  • d) verificar se o numero de argumentos ("operandos") com que cada operador é invocado condiz com a cardinalidade associada aos operadores válidos na referida "biblioteca".

  • e) substituir todos os "identificadores" usados como operandos pelo valor que lhes é associado nas operações "let".

  • f) gerar código post-fix para o programa ser executado por uma máquina-de-stack (que primeiro carrega os "operandos" e depois os transforma pelos "operadores", substituindo-os pelo resultado).

Exemplo 3:

Considere a linguagem para descrever uma Factura. Sabe-se que uma Factura é composta por um cabeçalho e um corpo, e este é composto por um ou mais movimentos.

A GIC abaixo define formalmente uma primeira versão da linguagem Factura, de acordo com a descrição acima:

      T = { id, str, num}
      N = { Factura, Cabec, Corpo, IdFact, IdE, IdR, ...... }
      S = Factura  
      P = {
            p1:  Factura  --> Cabec Corpo
            p2:  Cabec    --> IdFact IdE IdR
            p3:  IdFact   --> NumFact
            p4:  NumFact  --> id
            p5:  IdE      --> Nome NIF Morada NIB
            p6:  IdR      --> Nome NIF Morada
            p7:  Nome     --> str
            p8:  NIF      --> str
            p9:  Morada   --> str
            p10: NIB      --> str
            p11: Corpo    --> ...
          }

Pede-se então que escreva uma Gramática de Atributos, GA, para

  • a) calcular o total por linha e total geral.

  • b) estender a linguagem original para permitir mais do que uma factura (calculando os mesmos totais).

  • c) modificar a linguagem de modo a suportar inicialmente a descrição do stock (referência, descrição, preço unitário e quantidade em stock); neste caso, cada linha só terá a referência e a quantidade vendida.

  • d) estender a semântica da nova linguagem de modo a também actualizar o stock.

Questões colocadas nas aulas

Q1:

  • (2010-10-18) ...

Fichas Práticas para Avaliação (a resolver fora das aulas)

F1 (2010-11-08): Concluir as alíneas a) b) c) d) do Exercico 2 e entregar devidamente documentado.

F2 (2010-12-06): Resolva o Exemplo 3 devidamente documentado para efeitos de avaliação.

F3 (2011-02-21): Resolva o Exemplo da Calculadora com declarações devidamente documentado para efeitos de avaliação.

F4 (2011-03-01): Resolva o Exercício do LogoLISS devidamente documentado para efeitos de avaliação

F5 (2011-03-21): Faça um estudo sobre métricas e avaliação de qualidade em linguagens de Modelação / Especificação.

Notas e Links úteis

(2011-04-04) Monografias feitas pelos grupos de trabalho sobre Qualidade e Métricas:

(2010-11-08) Novas Scripts (funcionam em sistemas Unix) para agilizar a compilação em Silver:

  • O primeiro script, parse, deve ser colocado na directoria da gramática e permite testar o compilador correspondente a essa gramática com um ou vários ficheiros de input; para executar usar o seguinte comando:
    parse input1 [input2 ...]
  • O segundo, cpgr, deve ser colocado na pasta grammars e duplica uma gramática para outra pasta garantindo a compilação; para executar usar o seguinte comando:
    cpgr pastaOrigem pastaDestino


FichasPED09 17 May 2010 - 07:50 - r15 JorgeGustavo

Engenharia de Linguagens (2009/2010)

Processamento Estruturado de Documentos

Alfresco

Descarregar a versão Community Edition

Requisitos:

  • Java
  • MySQL
  • ImageMagick

chmod +x Alfresco-Community-3.3-Linux-x86-Install
sudo ./Alfresco-Community-3.3-Linux-x86-Install

Executar o Alfresco

sudo /opt/Alfresco/alfresco.sh start

http://localhost:8080/alfresco

http://localhost:8080/share

Tutoriais do Alfresco

Getting Started with Alfresco Explorer Document Management for Community Edition 3.3

Mais tutoriais em:

Nepomuk

0. Activar o Nepomuk

Alt+F2, procurar por strigi ou nepomuk

0.1. Correr 'Configuração do Servidor Nepomuk/Strigi'

Configuração básica:

  • Activar o Ambiente de Trabalho Semântico do Nepomuk
  • Activar a Indexação de Ficheiros no Ambiente do Strigi

No meu caso, não arrancava a indexação do Strigi, porque não tinha o JAVA instalado.

sudo apt-get install sun-java6-jre
sudo ln -s /usr/lib/jvm/java-6-sun/jre/lib/i386/server/libjvm.so /usr/lib/libjvm.so

1. Alterar o ficheiro de configuração ~/.kde/share/config/nepomukserverrc

Trocar:

Used Soprano Backend=redland
por:
Used Soprano Backend=sesame2

2. Restart the Nepomuk server:

killall nepomukserver
nohup /usr/bin/nepomukserver

3. Monitorizar o repositório:

sopranocmd --dbus org.kde.NepomukStorage --model main monitor

4. Inserir tags, comentários, ratings

No Dolphin (explorador de ficheiros)

5. Pesquisas (Alt+F2, no KRunner):

nepomuksearch:/ tag:"bison" and tag="changelog"
nepomuksearch:/ tag:"XATA"
XATA

6. Pesquisas na linha de comando:

sopranocmd --dbus org.kde.NepomukStorage --model main list "" "" "<nepomuk:/XATA>"

6.9 Eventualmente é preciso instalar:

sudo apt-get install strigi-daemon strigi-utils strigi-client deskbar-plugins-strigi

7. Utilizar o strigi isoladamente:

xmlindexer semanticdesktop.pdf
deepfind ...
deepgrep ...

10.

sudo apt-get install filelight filelight-l10n

Exercícios 2010 03 01

Estrutura do paper (cf http://etherpad.com/KrS97SVLHr)

Interface para a ferramenta com ExtJS?

"Hello world" do ExtJS?

1) descarregar ExtJS
2) unzip -x ...
3) ln -s ext-3.1.1 ext
4) *layout.js*:
Ext.onReady(function(){
    new Ext.Viewport({
        layout: "border",
        items: [{
            region: "center",
            title: "Semantic Desktop",
         contentEl: 'bem-vindo'
        }, {
            region: "north",
            title: "Header",
            height: 120,
            collapsible: true
        }, {
            region: "south",
            title: "Footer",
            height: 120,
            collapsible: true
        }, {
            region: "west",
            title: "Tree browser"
        }]
    });
});
5) *interface.html*:
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Semantic Desktop Web Interface</title>

    <!-- base library -->
    <link rel="stylesheet" type="text/css" href="ext/resources/css/ext-all.css" />

    <!-- ExtJS library: base/adapter -->
    <script type="text/javascript" src="ext/adapter/ext/ext-base.js"></script>

    <!-- ExtJS library: all widgets -->
    <script type="text/javascript" src="ext/ext-all.js"></script>

    <script type="text/javascript" src="layout.js"></script>

</head>
<body>
    <div id="bem-vindo">Olá! Aqui vai poder, no futuro, navegar sobre o file system, sem saber que existe file system</div>
</body>
</html>

Exercícios 2010 02 22

Introdução às ontologias e sparql: http://pvanhoof.be/blog/index.php/2009/07/14/introduction-to-rdf-and-sparql

Para ter o tracker-sparql:

1) Descarregar o tracker
wget http://ftp.gnome.org/pub/GNOME/sources/tracker/0.7/tracker-0.7.21.tar.gz
2) Instalar um monte de dependências, entre as quais, o sqlite3
2.x) sudo apt-get install libsqlite3-dev
3) ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var
4) make
5) [sudo make install]
6) ./src/tracker-utils/tracker-sparql

Exercícios 2010 01 18

http://etherpad.com/Bb4DSKte8x

Paper para o XATA (nova deadline: 14 DE MARÇO)

"faziam uma pequena script que recursivamente extrair informação dos ficheiros que vai encontrando e guarda a parte relevante num documento XML. Depois, todos esses documentos XML são submetidos ao Solr para indexação. Por fim, usando o Solr, procuram-se os documentos."

Exercícios 2010 01 04

Instalação Apache Tika

Exercícios 2009 11 30

Processamento dos ficheiros XML

Gerar lista de exposições disponíveis:

<?php
   $xmlDocExpos = new DOMDocument();
   $file = "museuvirtual2008.xml";
   $xmlDocExpos->load($file, LIBXML_NOBLANKS);    
   $k=1;
   $_expos=$xmlDocExpos->getElementsByTagName('exposicao');
   foreach($_expos as $_expo) {
      if($_expo->hasAttribute('titulo')){
         echo '<a href="salas.php?expo=' . $k . '">' . $_expo->getAttribute('titulo') . "</a><br/>\n";
      }
      $k++;
   }
?>

Gerar lista de salas para uma exposição:

<?php
   if (isset($_GET['expo']) && strlen(trim($_GET['expo'])) > 0) {
      $aExposicao= $_GET['expo'];
   } else {
      die("Preciso de saber a exposição, né?");
   }   
   $xmlDocExpos = new DOMDocument();
   $file = "museuvirtual2008.xml";
   $xmlDocExpos->load($file, LIBXML_NOBLANKS); 
   /*
    * Sacar apenas o nome do documento XML com os conteúdos da sala
    */
      $xslSalaXML = new DOMDocument();
      $xslSalaXML->loadXML ('
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
   <xsl:output method="html" indent="yes" omit-xml-declaration="yes"/>
   <xsl:template match="/">
      <xsl:apply-templates select="//exposicao['.$aExposicao.']/sala"/>
   </xsl:template>
   <xsl:template match="//sala">
      <xsl:element name="a">
         <xsl:attribute name="href">
            <xsl:text>topico.php?sala=</xsl:text>
            <xsl:value-of select="."/>
         </xsl:attribute>
         <xsl:value-of select="@titulo"/>
      </xsl:element>
      <xsl:element name="br"/>
   </xsl:template>
</xsl:stylesheet>
' );
   $procSalaXML = new XSLTProcessor();
   $procSalaXML->importStylesheet($xslSalaXML);
   $docxml = $procSalaXML->transformToXML($xmlDocExpos);   
   print_r($docxml);      
?>

Gerar uma página com todos os tópicos de uma exposição:

<?php
   if (isset($_GET['sala']) && strlen(trim($_GET['sala'])) > 0) {
      $aSala= $_GET['sala'];
   } else {
      die("Preciso de saber a sala, né?");
   }   
   $xmlDocExpos = new DOMDocument();
   $file = $aSala;
   $xmlDocExpos->load($file, LIBXML_NOBLANKS); 
   /*
    * Sacar apenas o nome do documento XML com os conteúdos da sala
    */
      $xslSalaXML = new DOMDocument();
      $xslSalaXML->loadXML ('
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
   <xsl:output method="html" indent="yes" omit-xml-declaration="yes"/>
   <xsl:template match="/">
      <ul>
         <xsl:apply-templates mode="indice"/>
      </ul>
      <xsl:apply-templates/>
   </xsl:template>
   <xsl:template match="topico">
      <p>
         <div id="topico">
            <xsl:apply-templates/>
         </div>
      </p>
   </xsl:template>
   <xsl:template match="topico" mode="indice">
      <li>
         <xsl:value-of select="@titulo"/>
      </li>
   </xsl:template>
   <xsl:template match="tema">
      <i>
         <div id="tema">
            <xsl:apply-templates/>
         </div>
      </i>
   </xsl:template>
</xsl:stylesheet>
' );
   $procSalaXML = new XSLTProcessor();
   $procSalaXML->importStylesheet($xslSalaXML);
   $docxml = $procSalaXML->transformToXML($xmlDocExpos);   
   print_r($docxml);      
?>

Interface de pesquisa, que invoca o Solr/lucene:

<?php
   if (isset($_POST['submit'])   && ((isset($_POST['pesquisa']) && strlen(trim($_POST['pesquisa'])) > 0))) {
      $termo = trim($_POST['pesquisa']);
      $resultado = "<p>Obrigado por usar a pesquisa por <b>" . $termo . "</b></p>";            
      $curlPost = 'q=' . urlencode($termo) . '&rows=20';
      $ch = curl_init();
      curl_setopt($ch, CURLOPT_URL, 'http://localhost:8983/solr/select');
      curl_setopt($ch, CURLOPT_HEADER, FALSE);
      curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
      curl_setopt($ch, CURLOPT_POST, TRUE);
      curl_setopt($ch, CURLOPT_POSTFIELDS, $curlPost); 
      $data = curl_exec($ch);
      curl_close($ch); 
         $resultadoXML = new DOMDocument();
         $resultadoXML->loadXML($data);
      /* Falta tratar o resultado do Solr */
         $xmlString = $resultadoXML->saveXML();
         $resultado .= "<h3>Resposta do Solr</h3>";
         $resultado .= '<xmp>' . $xmlString . '</xmp>';         
   } else {
      $resultado = "<p>Pode pesquisar à vontade</p>";
   }   
?>
<form name="pesquisar" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
<input type="text" size="16" maxlength="64" name="pesquisa"/>
<input type="submit" value="submit" name="submit"/>
</form>
<?php 
echo $resultado;
?>

Solr/lucene:

  1. Baixar o Apache Solr
  2. Descompactar SOlr
  3. cd apache-solr-1.4.0/example
  4. java -jar start.jar
  5. nmap -p 8983 localhost
PORT     STATE SERVICE
8983/tcp open  unknown

Exercícios 2009 11 23

agenda2html

Exercícios 2009 11 16

Ficha 4

<!-- exercício incompleto; para completar: subs tables por div; tratar refs a entradas; afinar links entre índice e corpo -->
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
   <xsl:output method="xml" doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
      doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN" indent="yes"/>
   <xsl:template match="/">
      <html>
         <head>
            <title>Anúncio de emprego</title>
            <style type="text/css">
               #esq {
                  width: 240px;
                  float: left;
               }
               #dir {
                  float: left;
               }</style>
         </head>
         <body>
            <div id="esq">
               <ul>
                  <xsl:apply-templates mode="indice"/>
               </ul>
            </div>
            <div id="dir">
               <xsl:apply-templates/>
            </div>
         </body>
      </html>
   </xsl:template>
   <xsl:template match="entrada">
      <a name="{@id}"/>
      <table bgcolor="#cccccc">
         <xsl:apply-templates/>
      </table>
   </xsl:template>
   <xsl:template match="entrada" mode="indice">
      <li>
         <a href="{@id}">
            <xsl:value-of select="nome"/>
         </a>
      </li>
   </xsl:template>
   <xsl:template match="grupo">
      <table border="1">
         <xsl:apply-templates/>
      </table>
   </xsl:template>
   <xsl:template match="nome">
      <tr>
         <td>
            <xsl:apply-templates/>
         </td>
      </tr>
   </xsl:template>
   <xsl:template match="telefone">
      <tr>
         <td>
            <xsl:apply-templates/>
         </td>
      </tr>
   </xsl:template>
   <xsl:template match="email">
      <tr>
         <td>
            <a href="mailto:{.}">
               <xsl:apply-templates/>
            </a>
         </td>
      </tr>
   </xsl:template>
</xsl:stylesheet>

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
   <xsl:output method="xml" doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
      doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN" indent="yes"/>
   <xsl:template match="/">
      <html>
         <head>
            <title>Anúncio de emprego</title>
         </head>
         <body>
            <xsl:apply-templates/>
         </body>
      </html>
   </xsl:template>
   <xsl:template match="telefone"> </xsl:template>
   <xsl:template match="profissão">
      <h1>
         <xsl:apply-templates/>
      </h1>
   </xsl:template>
</xsl:stylesheet>

Exercícios 2009 11 09

(a)Seleccione o título das músicas que contêm a palavra "Jesus".

//tit[contains( text() , 'Jesus')]

(b)Seleccione a província das músicas que contêm a palavra "Jesus" no título.

//prov[contains( ../tit/text() , 'Jesus')] //prov[../tit[contains( text() , 'Jesus')]]

(c)Seleccione o título de todas as músicas de Castelo Branco.

//tit[ contains( ../local/text() , 'Castelo Branco')]

(d)Seleccione todos os instrumentos referenciados no arquivo.

//intxt|//inst

(e)Seleccione o nome de todos os músicos referidos.

//musico

(f)Seleccione todos os instrumentos das músicas do Minho.

//inst[../prov/text() = 'Minho'] | //intxt[../prov/text() = 'Minho']

Exercícios e Exemplos para as aulas

Exemplo 1:

Considere o seguinte texto histórico (retirado de "Concelho Medieval de Monte Longo e o seu Foral", de José Carlos P. Gonçalves, ed. CMF, 2002, pg 223):

" Contratos de Emprazamento
Eis alguns rendimentos do Mosteiro de S. Gens de Monte Longo, provenientes dos contratos de emprazamento dos bens imóveis: casais, herdades e vinhas, que o mosteiro e os seus prelados possuíam e eram evidentemente uma fonte de proventos e de sustentação destes clérigos:
- Novembro de 1240,Contrato de emprazamento em três vidas de uma vinha sita em Lordelo, feito pelo prelado Gonçalo Gonçalves. Paga de foro anual uma libra de cera, no dia de S. Bartolomeu de S. Gens e a quarta parte do vinho.
- Setembro de 1247, emprazamento em uma vida da herdade sita no lugar de Infesta, Vale do Bouro, para edificar casas ou plantar vinha. Paga de foro anual uma libra de cera, no dia de S. Bartolomeu.
- Janeiro de 1249, emprazamento em três vidas de uma herdade sita em Villa Ouresi, termo de Celorico de Basto. Paga de foro anual um maravidi e para seus filhos dois aureos, no mesmo dia de S. Bartolomeu.
- Abril de 1250, emprazamento em uma vida do casal denominado: casal do meio casal de Trás-do-Rio, sito na Villa Bruela. Não refere o foro. "

Exemplo 2:

Considere o seguinte texto histórico (retirado de "Concelho Medieval de Monte Longo e o seu Foral", de José Carlos P. Gonçalves, ed. CMF, 2002, pg 224-225):

" Sentenças
Sentenças proferidas directamente relacionadas com o Mosteiro de S. Gens de Monte Longo e seus prelados.
- A 9 de Maio de 1238 temos uma sentença proferida pelo Arcebispo de Braga, D. Silvestre, decidindo a questão de padroado e hospitalidade entre D. Rodrigo Gomes de Briteiros e Gonçalo Gonçalves reitor da igreja de S. Gens de Monte Longo. Em resultado da inquirição que mandou fazer por D. Pedro Fernades de Villa Cova e D.Fernando Raimundo de Sousa, Cónegos de Braga, e por Pedro Ervilhom e Rodrigo Vides, Cavaleiros. O Arcebispo julgou e sentenciou que D. Rodrigo Gomes de Briteiros não possuia o direito de padroado que pretendia ter. Foi proferida a sentença na Igreja de S. Clemente.
- Sentença proferida em 26 de Agosto de 1335 por Lourenço Martins, dito calado, vedor dos Coutos e Honras de Entre-Douro e Minho, cargo para que foi nomeado por carta régia datada de Lisboa a 6 de Abril da era de 1335, mandando conservar à igreja de S. Gens do Monte Longo as honras que até então esta possuía nas freguesias de Armil, Estorãos, Ribeiros, Quinchães e S.Gens. A sentença foi precedida de inquirição testemunhal em que foram ouvidos: Pedro Lopes, juiz de Monte Longo, Acenço Esteves, tabelião de Monte Longo, e outros Bons-Homens.
- Em 26 de Maio de 1350 foi proferida uma sentença por João Peres, juiz de Monte Longo, acerca das águas do casal de Pardelhas. A sentença foi lavrada em Ruivães por Vasco Esteves, tabelião de Monte Longo, sendo testemunhas entre outros Martim Affonso, tabelião do mesmo julgado. "

Questões colocadas nas aulas

Q1:

  • (2009-11-02) Após ler os textos dos dois exemplos acima, escolha um dos deles e:
    • a) Defina um contexto específico de trabalho, isto é um enquadramento e finalidade para o tratamento que quer dar aos documentos da família do exemplo escolhido;
    • b) Escreva então um DTD para definir um dialecto XML que lhe permita anotar documentos dessa família;
    • c) Anote o exemplo escolhido com o dialecto XML defindo na alínea anterior.

Fichas Práticas para Avaliação (a resolver fora das aulas)

F1:

  • ....

Notas e Links úteis


  • museu.tgz: Ficheiros XML para a construção de um Museu
GraphVizEmXP 23 Sep 2009 - 10:52 - r3 JoseFaria

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 )


Horario10 02 Oct 2011 - 22:33 - r3 PedroRangelHenriques

Engenharia de Linguagens (2010/2011)

Horário Anual (1º + 2º Semestres)

08h00 - 10h00 Módulo I Engenharia Gramatical
10h00 - 12h00 Módulo II Análise e Transformação de Software
12h00 - 13h00 Projecto Integrado Aula Tecnológica / Gestão / Seminários
14h00 - 16h00 Módulo III Processamento de Linguagem Natural
16h00 - 18h00 Módulo IV Processamento Estruturado de Documentos


MetodoAvaliacao 23 Oct 2010 - 08:13 - r8 PedroRangelHenriques

Engenharia de Linguagens (2010/2011)

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 + 40% PIfinal

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
  • PIfinal - 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 são de cariz misto = avaliação-continua (ensaios & implementações) + testes.
  • Os pesos e notas mínimas podem ser alterados ligeiramente durante o decorrer do semestre.


ObjectivosProjecto 18 Oct 2010 - 09:09 - r5 PedroRangelHenriques

Engenharia de Linguagens (2009/2010)

Projecto Integrado

Objectivos Gerais para a 1ª Fase:

  • Sistema:
    • Criar a base do sistema FOSSAT para receber e analisar pacotes de software.

  • Documentação
    • Relatório de Desenvolvimento detalhado, escrito em NoWed, de forma modular.

  • Apresentção
    • Acompanhada de um conjunto de slides em PPT ou PDF

Objectivos Específicos para a 1ª Fase:

  • PLN:
    • Criação de uma script para expandir os pacotes comprimidos cujas localizações serão passadas numa lista de parâmetros, colocando os ficheiros componentes em pastas diferenntes conforme seu tipo;
    • Criação de um Repositório de ficheiros ReadMe (ou de ChangeLog);

  • EG/ATS:
    • Desenvolvimento de um Processador de MakeFiles, com base na Gramática de Atributos da Linguagem Make e no Gerador AnTLR, que construa o Grafo de Dependências dos ficheiros e o represente graficamente usando Dot/Graphviz.

  • PED:
    • Defina um família de documentos anotados XML para armazenar o manifesto de cada pacote recebido e expandido.
    • Constrúa um sistme de pesquisa sofisticado, usando o SolR? ,para indexar uma colecção de manifestos (documentos XML)

Objectivos Específicos para a 2ª Fase:

  • PLN:
    • Construir um processador para páginas man do Unix/Linux. Considerar estes documentos definidos na própria notação do man, nmor formato pod (do perl) e em nrof. O processador deve extrair informação sobre o nome e pequen o resumo da ferramenta, noção de auotr, url e ainda sobre ferramentas relacionadas (secção "see also").
    • Para testar o processador desenvolvido os alunos devem usar todos os man do sistema operativo Linux. Como resultado devem produzir uma representação "pretty printed" da informação extraída de um ficheiro man.

  • EG/ATS:
    • Definir uma DSL (escrever a respectiva GIC) que permita:
      • descrever 1 ou mais pacotes de SW de acordo com os critérios definidos para o manifesto;
      • definir operações de Intersecção, União e Diferença entre manifestos de pacotes, dando um manifesto-resultado;
    • Usando uma GA, tomando por base a GIC anterior, e recorrendo ao AnTLR, implemente um procesador que leia um texto com descrições de pacotes e realize as operações indicadas. No fim deve gerar em XML o pacote-resultado por cada operação pedida.

  • PED:
    • Preparação conjunta de um artigo a submeter à XATA 2010.

Conjunto de Pacotes para a fase final do projecto:


ObjectivosProjecto10 18 Oct 2010 - 08:52 - NEW PedroRangelHenriques

Engenharia de Linguagens (2010/2011)

Projecto Integrado

Objectivos Gerais:

  • Sistema:
    • Criar .....

  • Documentação
    • Relatório de Desenvolvimento detalhado, escrito em NoWed, de forma modular.

  • Apresentção
    • Acompanhada de um conjunto de slides em PPT ou PDF

Objectivos por Fases

Objectivos para a 1ª Fase:

  • Documentação
    • Relatório de Desenvolvimento detalhado, escrito em NoWed, de forma modular.

  • Apresentção
    • Acompanhada de um conjunto de slides em PPT ou PDF

Objectivos Específicos para a 1ª Fase:

  • PLN:
    • Criação de .

  • EG/ATS:
    • Desenvolvimento de um Processador .

  • PED:
    • Constrúa um sistema .


PrimeiroSemestre 18 Oct 2010 - 04:38 - r7 PedroRangelHenriques

Engenharia de Linguagens (2009/2010)

Horário Primeiro Semestre

08h00 - 10h00 Módulo I Processamento Estruturado de Documentos
10h00 - 12h00 Módulo II Engenharia Gramatical
12h00 - 13h00 Projecto Integrado Aula Tecnológica / Gestão / Seminários
14h00 - 16h00 Módulo III Processamento de Libguagem Natural
16h00 - 18h00 Módulo IV Análise e Transformação de Software


ProgramaATS08 23 Sep 2009 - 10:52 - r3 JoseFaria

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.


ProgramaATS09 18 Oct 2010 - 05:51 - r6 PedroRangelHenriques

Engenharia de Linguagens (2009/2010)

Análise e Transformação de Software

Programa Resumido

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

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.

Metodologia de Ensino e Avaliação

  • As aulas de 2h tem sempre um cariz teórico-prático. Em cada aula:
    • no início é sempre feito um balanço da aula anterior e discutidos os trabalhos ou questões propostos;
    • depois algum tempo é dedicado a levantar questões teóricas e a apresentar as diferentes aproximações e metodologias que suportam a sua resolução; esta parte, embora de carácter teórico, desenvolve-se sempre em forma de diálogo com os alunos.
    • continua-se a aula numa parte mais prática em que os alunos são convidados a pesquisar e fazer uma sintese do que há já escrito sobre o assunto; ou então a desenvolver experimentação de ferramentas ou implementação de algorimtos.

  • A avaliação é feita com base em trabalhos entregues pelos alunos, resolvidos foras das aulas mas defendidos perante a turma. Os trabalhos para avaliação são de dois tipos:
    • monografias, com sinteses dos temas pesquisados;
    • trabalhos de implementação.

Bibliografia recomendada

  • Flemming Nielson, Hanne Riis Nielson, Chris Hankin, "Principles of Program Analysis. Springer, 452 pages, ISBN 3-540-65410-0, 2005.

  • Aho & Sethi & Ullman, "Compiler Principles, Techniques and Tools", Addison-Wesley, 1986.

  • Pittman & Peters, "The Art of Compiler Design: theory and pratice", Prentice-Hall, 1992.

  • Waite & Carter, "An Introduction to Compiler Construction", HarperCollin? College Publishers, 1993

  • Terrence Par, The Definitive Antlr Reference: Building Domain-Specific Languages, The Pragmatic Bookshelf, 2007


ProgramaATS10 03 Sep 2011 - 15:29 - r3 PedroRangelHenriques

Engenharia de Linguagens (2010/2011)

Análise e Transformação de Software

Programa Resumido

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

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.

Metodologia de Ensino e Avaliação

  • As aulas de 2h tem sempre um cariz teórico-prático. Em cada aula:
    • no início é sempre feito um balanço da aula anterior e discutidos os trabalhos ou questões propostos;
    • depois algum tempo é dedicado a levantar questões teóricas e a apresentar as diferentes aproximações e metodologias que suportam a sua resolução; esta parte, embora de carácter teórico, desenvolve-se sempre em forma de diálogo com os alunos.
    • continua-se a aula numa parte mais prática em que os alunos são convidados a pesquisar e fazer uma sintese do que há já escrito sobre o assunto; ou então a desenvolver experimentação de ferramentas ou implementação de algorimtos.

  • A avaliação é feita com base em trabalhos entregues pelos alunos, resolvidos foras das aulas mas defendidos perante a turma. Os trabalhos para avaliação são de dois tipos:
    • monografias, com sinteses dos temas pesquisados;
    • trabalhos de implementação.

Bibliografia recomendada

  • Flemming Nielson, Hanne Riis Nielson, Chris Hankin, "Principles of Program Analysis. Springer, 452 pages, ISBN 3-540-65410-0, 2005.

  • Aho & Sethi & Ullman, "Compiler Principles, Techniques and Tools", Addison-Wesley, 1986.

  • Pittman & Peters, "The Art of Compiler Design: theory and pratice", Prentice-Hall, 1992.

  • Waite & Carter, "An Introduction to Compiler Construction", HarperCollin? College Publishers, 1993

  • Terrence Par, The Definitive Antlr Reference: Building Domain-Specific Languages, The Pragmatic Bookshelf, 2007


ProgramaEG08 23 Sep 2009 - 10:52 - r3 JoseFaria

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 modular/incremental de GAs (aproximação OO e AO).
  • 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.
  • 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.

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 (protótipos) 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 representar, armazenar e manipular eficientemente o Conhecimento com base em árvores de sintaxe ou grafos.
  • Capacidade para medir gramáticas e avaliar a sua qualidade.


ProgramaEG09 18 Oct 2010 - 05:45 - r7 PedroRangelHenriques

Engenharia de Linguagens (2009/2010)

Engenharia Gramatical

Programa Resumido

  • 1.Linguagens e Gramáticas; Caracterização destes conceitos e domínios do saber.
  • 2. Conceitos sobre Gramáticas de Atributos (GA); definição formal; desenvolvimento de GAs (aproximação monolítica versus modular, incremental).
  • 3. Processamento de Linguagens baseado em GAs (tradução dirigida pela semântica).
    • 3.1 Notações gramaticais;
    • 3.2 Geração de Programas (processadores de Linguagens, protótipos rápidos) a partir de GAs.
  • 4. O paradigma da Programação baseada em Gramáticas (PG).
  • 5. Qualidade de Linguagens; dimensões de avaliação e definição; critérios.
  • 6. Qualidade de Gramáticas; dimensões de avaliação e definição; critérios.
    • 6.1 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.
  • 7. 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 (protótipos) 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.

Metodologia de Ensino e Avaliação

  • As aulas de 2h tem sempre um cariz teórico-prático. Em cada aula:
    • no início é sempre feito um balanço da aula anterior e discutidos os trabalhos ou questões propostos;
    • depois algum tempo é dedicado a levantar questões teóricas e a apresentar as diferentes aproximações e metodologias que suportam a sua resolução; esta parte, embora de carácter teórico, desenvolve-se sempre em forma de diálogo com os alunos.
    • continua-se a aula numa parte mais prática em que os alunos são convidados a pesquisar e fazer uma sintese do que há já escrito sobre o assunto; ou então a desenvolver experimentação de ferramentas ou implementação de algorimtos.

  • A avaliação é feita com base em trabalhos entregues pelos alunos, resolvidos foras das aulas mas defendidos perante a turma. Os trabalhos para avaliação são de dois tipos:
    • monografias, com sinteses dos temas pesquisados;
    • trabalhos de implementação.

Bibliografia recomendada

  • Aho & Sethi & Ullman, "Compiler Principles, Techniques and Tools", Addison-Wesley, 1986.

  • Pittman & Peters, "The Art of Compiler Design: theory and pratice", Prentice-Hall, 1992.

  • Waite & Carter, "An Introduction to Compiler Construction", HarperCollin? College Publishers, 1993.

  • James F. Power and Brian A. Malloy, "A metrics suite for grammar-based software". Journal of Software Maintenance and Evolution: Research and Practice, Vol 16, Nº 6, pp 405-426, 2004.

  • Julien Cervelley, Matej Crepin¨ek, Rémi Foraxy, Toma¸ Kosar, Marjan Mernik and Gilles Roussel, "On Defining Quality Based Grammar Metrics". Proceedings of the International Multiconference on Computer Science and Information Technology, pp. 651–658, 2009.

  • Tiago Alves and Joost Visser, "A Case Study in Grammar Engineering". Lecture Notes in Computer Science, Volume 5452/2009, pp 285-304, 2009.

  • John M. Roche, "Software metrics and measurement principles", SIGSOFT Softw. Eng. Notes, ACM, volume 19, number 1, 1994.

  • Tom Mens, Serge Demeyer, "Future trends in software evolution metrics", Proceedings of the 4th International Workshop on Principles of Software Evolution, ACM, 2001.

  • Norman Fenton, Martin Nail, "Software metrics: roadmap", Proceedings of the Conference on The Future of Software Engineering, ACM 2000.


ProgramaEG10 03 Sep 2011 - 14:49 - r3 PedroRangelHenriques

Engenharia de Linguagens (2010/2011)

Engenharia Gramatical

Programa Resumido

  • 1.Linguagens e Gramáticas; Caracterização destes conceitos e domínios do saber.
  • 2. Conceitos sobre Gramáticas de Atributos (GA); definição formal; desenvolvimento de GAs (aproximação monolítica versus modular, incremental).
  • 3. Processamento de Linguagens baseado em GAs (tradução dirigida pela semântica).
    • 3.1 Notações gramaticais;
    • 3.2 Geração de Programas (processadores de Linguagens, protótipos rápidos) a partir de GAs.
  • 4. O paradigma da Programação baseada em Gramáticas (PG).
  • 5. Qualidade de Linguagens; dimensões de avaliação e definição; critérios.
  • 6. Qualidade de Gramáticas; dimensões de avaliação e definição; critérios.
    • 6.1 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.
  • 7. 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 (protótipos) 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.

Metodologia de Ensino e Avaliação

  • As aulas de 2h tem sempre um cariz teórico-prático. Em cada aula:
    • no início é sempre feito um balanço da aula anterior e discutidos os trabalhos ou questões propostos;
    • depois algum tempo é dedicado a levantar questões teóricas e a apresentar as diferentes aproximações e metodologias que suportam a sua resolução; esta parte, embora de carácter teórico, desenvolve-se sempre em forma de diálogo com os alunos.
    • continua-se a aula numa parte mais prática em que os alunos são convidados a pesquisar e fazer uma sintese do que há já escrito sobre o assunto; ou então a desenvolver experimentação de ferramentas ou implementação de algorimtos.

  • A avaliação é feita com base em trabalhos entregues pelos alunos, resolvidos foras das aulas mas defendidos perante a turma. Os trabalhos para avaliação são de dois tipos:
    • monografias, com sinteses dos temas pesquisados;
    • trabalhos de implementação.

Bibliografia recomendada

  • Aho & Sethi & Ullman, "Compiler Principles, Techniques and Tools", Addison-Wesley, 1986.

  • Pittman & Peters, "The Art of Compiler Design: theory and pratice", Prentice-Hall, 1992.

  • Waite & Carter, "An Introduction to Compiler Construction", HarperCollin? College Publishers, 1993.

  • James F. Power and Brian A. Malloy, "A metrics suite for grammar-based software". Journal of Software Maintenance and Evolution: Research and Practice, Vol 16, Nº 6, pp 405-426, 2004.

  • Julien Cervelley, Matej Crepin¨ek, Rémi Foraxy, Toma¸ Kosar, Marjan Mernik and Gilles Roussel, "On Defining Quality Based Grammar Metrics". Proceedings of the International Multiconference on Computer Science and Information Technology, pp. 651–658, 2009.

  • Tiago Alves and Joost Visser, "A Case Study in Grammar Engineering". Lecture Notes in Computer Science, Volume 5452/2009, pp 285-304, 2009.

  • John M. Roche, "Software metrics and measurement principles", SIGSOFT Softw. Eng. Notes, ACM, volume 19, number 1, 1994.

  • Tom Mens, Serge Demeyer, "Future trends in software evolution metrics", Proceedings of the 4th International Workshop on Principles of Software Evolution, ACM, 2001.

  • Norman Fenton, Martin Nail, "Software metrics: roadmap", Proceedings of the Conference on The Future of Software Engineering, ACM 2000.


ProgramaPLN09 19 Oct 2009 - 10:41 - NEW JoseJoao

Engenharia de Linguagens

Scripting no Processamento de Linguagem Natural

Programa Resumido

  • Linguagens de scripting:
    • características, objectivos e conceitos.
    • introdução a uma linguagem de Scripting (e.g. Perl).
  • Processadores de linguagens regulares e programação orientada à expressão regular.
  • Design Patterns no processamento de linguagens.
  • Linguagens baseadas em regras:
    • reescrita textual e DSLs baseadas em regras de reescrita.
    • sistemas de produção.
  • Processamento estrutural de árvores e DSLs baseadas nestes processadores.
  • Processamento de Linguagem Natural: Análise Morfo-sintáctica de textos em língua natural:
    • Modelos morfológicos.
    • Gramáticas lógicas e DCGs.
    • Parsing robusto.
  • Processamento de Linguagem Natural: semântica e pragmática.
  • Dicionários (multi-fonte) e Thesaurus.
  • Extracção de Conhecimento a partir de Textos.
  • Sumarização e Classificação.
  • Tradução automática.

Resultados de Aprendizagem Específicos

  • Ser capaz de escrever scripts para automatização de uma variedade de tarefas e transformações.
  • Ser capaz de resolver problemas usando transformações via Expressões Regulares.
  • Ser capaz de compreender as vantagens e o funcionamento de sistemas guiados por regras de produção
  • (condição-reacção).
  • Ser capaz de construir Linguagens de Domínio Específico (DSLs) concretas.
  • Ser capaz de construir e usar corpora.
  • Ser capaz de extrair informação diversa a partir de corpora.
  • Ser capaz de construir dicionários electrónicos.
  • Ser capaz de construir pequenos protótipos para modelar linguagem natural.


ResultadosAvaliacao 23 Sep 2009 - 10:52 - r9 JoseFaria

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


ResultadosAvaliacao09 29 Jul 2010 - 07:25 - r8 PedroRangelHenriques

Engenharia de Linguagens (2009/2010)

Resultados de Avaliação

G Nome EL ATS PLN PI PI FINAL
          1ª Fase Final  
1 José Freitas 19 19 17 18 19 19
1 Hélder Silva 18 18 16 18 19 18
2 André Rocha 15 15 15 12 16 15
2 Márcio Coelho 16 17 15 12 16 16
3 Daniel Rocha 17 16 17 17 18 17
3 Jorge Mendes 17 16 18 17 18 17
4 André Santos 15 17 16 12 16 16
4 Carlos Miguel Regedor 15 17 16 12 16 16

SegundoSemestre 23 Sep 2009 - 10:52 - r3 JoseFaria

Engenharia de Linguagens

Horário Segundo Semestre


SumariosATS08 23 Sep 2009 - 10:52 - r14 JoseFaria

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.

SumariosATS09 27 May 2011 - 21:52 - r36 PedroRangelHenriques

Engenharia de Linguagens (2009/10)

Análise e Transformação de Software

Sumários

31 Maio de 2010

  • Apresentação do Laboratório online GamaSlicer para verificação de componentes Java anotados em JML e realização de Slicing Semântico (specification-based, assertion-based e contract-based): arquitectura, discussão da abordagem e exemplificação.
  • Apresentação do sistema integrado para edição, análise, transformação e slicing de programas em C-- desenvolvido pelo aluno José Luis Freitas, usando a representação intermédia como uma hierarquia de classes discutida na aula anterior.

24 Maio de 2010

  • Apresentação do sistema genérico para análise, visualização e exploração de documentos anotados em XML, eXVisXML: arquitectura, discussão da abordagem e exemplificação.
  • Discussão da resolução do exercício prático da última aula backward slice de um programa em C--: representação intermédia como uma hierarquia de classes.

17 Maio de 2010

  • Apresentação do sistema genérico para visualização e animação de programas, Alma: arquitectura, discussão da abordagem e demonstração.
  • Proposta de exercício prático: backward slice de um programa em C--
    • Formulação de um exemplo:
      Em relação ao programa C-- abaixo
          0 void fun() {
          1   int a, b, flag;
          2   float res;
          3   scanf("%d",&flag);
          4   scanf("%d %d",&a,&b);
          5   if (flag)
          6     { res = a/2; }
          7   else
          8     { res = b/2; }
          9  printf("%f",res);
         10  printf("%f",res++)
         }
      Faço o slice em relação aos critérios:
      SC1: ( i8, {b} )
      SC2: ( i8, {res} )
      SC3: ( i9, {res} )
      SC4: ( i10,{res} ) 
      

03 Maio de 2010

  • Aula ocupada com a apresentação, discussão e avaliação do Projecto Integrado (PI) -- 3ªfase.

26 de Abril de 2010

  • Introdução formal ao Slicing:
    • o conceito de Slicing Estático clássico, Backward e Forward.

  • Apresentação e Definição formal de algumas estruturas clássicas para Análise de Programas:
    • System Dependence Graph (SDG) --- construção de exemplos

19 de Abril de 2010

  • Introdução informal ao Slicing:
    • o papel do Slicing na Análise de Programas -- como instrumento de debug; como instrumento de cálculo incremental.

  • Apresentação e Definição formal de algumas estruturas clássicas para Análise de Programas:
    • Control Flow Graph (CFG); construção de um exemplo.
    • Program Dependence Graph (PDG); construção de um exemplo.
    • System Dependence Graph (SDG).

12 de Abril de 2010

  • Apresentação e discussão sobre ferramentas de transformação e análise de programas. Ferramentas apresentadas:
    • FermaT: pelos alunos André Santos e Miguel Regedor --- PDF.

  • Discussão (à laia de balanço dos trabalhos práticos e estudos anteriores) em torno dos requisitos desejáveis para uma Ferramentas de Transformação de Programas (FTP, ou PTT) tendo sido identificados os seguintes:
    • Existem duas abordagens possíveis que podem ser integradas no mesmo ambiente de transformação:
      • 1 - Filtro de texto para pequenas transformações dirigidas ao padrão. Neste caso era importante poder integrar a definição de gramaticas incompletas (fuzzy?) no filtro, tipo:
         X  ->   ...  (Decls) ...  
      • 2 - Processador de linguagens com a definição da gramática da linguagem do programa que se tenciona transformar. Neste caso, a transformação poderá ocorrer caso a regra seja verificada sintacticamente e também semanticamente (a pensar) e deve ser especificada na forma:
         Padrão(regra) -> Acção 
    • Deve haver a possibilidade de integrar transformações pre-definidas (standard?); por exemplo:
      • substituição sistemática de palavras-chave;
      • troca de ordem de sub-árvores.

15 de Março de 2010

  • Distribuição de novas tarefas pelos 4 grupos, na sequência das apresentações feitas; desenvolvimento de uma solução para a transformação de C-- nas 3 primeiras ferramentas e procura de uma alternativa para o último caso.

  • Resolução de exercícios:
    • Ficha II -- o 2ª requisito (cont.): detecção de usos de identificadores não-declarados em programas escritos na linguagem C-- e geração de declarações; análise e discussão das propostas apresentadas pelos alunos José Luis Freitas (inserção na escrita) e Daniel Rocha (inserção na árvore).

08 de Março de 2010

  • Apresentação e discussão sobre ferramentas de transformação e análise de programas. Ferramentas apresentadas:

01 de Março de 2010

  • Resolução de exercícios:
    • Ficha II -- o 2ª requisito (cont.): detecção de usos de identificadores não-declarados em programas escritos na linguagem C-- e geração de declarações; análise e discussão das propostas apresentadas pelos vários grupos.

  • Distribuição de 4 ferramentas de análise e transformação de código pelos 4 grupos: definição clara dos objectivos a atingir com este estudo (comparação de "filosofias" de trabalho e de capacidades oferecidas); discussão da possibilidade de esrita de um artigo conjunto sobre esta temática, para submissão ao CoRTA2010.

22 de Fevereiro de 2010

  • Resolução de exercícios:
    • Ficha II -- o 2ª requisito: detecção de usos de identificadores não-declarados em programas escritos na linguagem C-- e geração de declarações; análise e discussão das propostas apresentadas pelos vários grupos.

  • Distribuição de 4 ferramentas de análise e transformação de código pelos 4 grupos:
    • Jorge + Daniel: Stratego
    • José Luís + Hélder: TXL
    • André + Miguel: DMS
    • André + Márcio: Meta-Environment/Rascal

25 de Janeiro de 2010

  • Cont. da Discussão com os alunos sobre os trabalhos realizados com o tema "Transformação de Programas": discussão de tipos de transformação; ferramentas.

  • Introdução à novidade do AnTLR para transformação de programas por Tree Pattern Matching: conceito básico e exemplo.

18 de Janeiro de 2010

  • Discussão com os alunos sobre os trabalhos realizados com o tema "Transformação de Programas".
    • Discussão de tipos de transformação:
      • Translation: nesta categoria incluem-se os seguintes processos - program synthesis, program migration, reverse engineering e program analysis.
      • Rephrasing: nesta categoria incluem-se os seguintes processos - Program Normalization, Program Optimization, Program Refactoring, Program Reflection e Software Renovation.
    • Discussão dos paradigmas introduzidos pelos alunos Márcio Coelho e André Rocha:
      • Mesmo input, diferentes outputs;
      • Diferentes inputs, mesmo outputs;
      • Mesmo input, mesmo outputs;
      • Diferentes inputs, diferentes outputs.

11 de Janeiro de 2010

  • Continuação da Resolução da Ficha da aula anterior.

04 de Janeiro de 2010

  • Resolução de exercícios:
    • Ficha II -- continuação da discussão sobre o 1ª requisito: implementação em AnTLR da construção de uma Tabela de Identificadores para a linguagem C--; análise e discussão das propostas apresentadas por todos os grupos que, de uma forma geral:
      • implementaram a TabId como uma HashMap em Java indexado por uma chave dupla formada pelo Id e pelo seu Scope, recorrendo a um VectorArray para guardar os respectivos atributos;
      • usaram uma Tree-Grammar (GA Abstracta);
      • recorreram a atributos herdados para fazer descer na árvore a TabId actual e o Scope;
      • recorreram a atributos sintetizados para trazer para a raiz da árvore a nova TabId e as características de cada identificador (de variável, de parâmetro, ou de função) encontrado.

  • Para continuar a resolver a Ficha II (transformação do código fonte, para reorganizar declarações de variáveis face ao seu uso), foi apreentada a nova, muito recente, funcionalidade do AntLR (3ª estratégia disponível) que permite implementar a transformação usando Tree-Patterns.

14 de Dezembro de 2009

  • Resolução de exercícios:
    • Ficha II -- continuação da discussão sobre o 1ª requisito: construção de uma Tabela de Identificadores em C--, possíveis implementações deste mapping em Java; implementação em AnTLR, possíveis estratégias clássicas (usando apenas 1 GA concreta, ou usando uma Tree-Grammar abstracta com atributos).

07 de Dezembro de 2009

  • Transformação e manipulação de Programas usando gramáticas de atributos; sistematização das diferentes abordagens possíveis (cálculo durante o parsing e cálculo em fase posterior, sobre a AST).

  • Resolução de exercícios:
    • Ficha II -- discussão muito profunda e detalhada sobre o 1ª requisito: construção de uma Tabela de Identificadores em C--, conceito, atributos a armazenar e estrutura; aproximação conceptual/abstracta e estratégia de implementação em AnTLR.

30 de Novembro de 2009

  • Transformação e manipulação de Programas usando gramáticas de atributos; implementação em AnTLR com LAGs, ou com construção e travessia de Árvores (TreeGrammars em AnTLR).
  • GAs de ordem superior em AnTLR: uso de um atributo do tipo Tree.

  • Resolução de exercícios:
    • Ficha I -- Discussão/comparação das soluções já desenvolvidas por alguns dos alunos e continuação do trabalho nesse problema.
    • Ficha II -- apresentação do enunciado.

23 de Novembro de 2009

  • Transformação e manipulação de Programas usando gramáticas de atributos; implentação em AnTLR com LAGs, ou com construção e travessia de Árvores (TreeGrammars em AnTLR).
  • GAs de ordem superior em AnTLR: uso de um atributo do tipo Tree.

  • Resolução de exercícios:
    • Ficha I: Conversão de um programa de SQL1 (sem UPDATES) para SQL2 (substituindo sequências de REMOVE/INSERT na mesma chaves por UPDATE).

16 de Novembro de 2009

  • Classificação das Gramáticas de Atributos e sua relação com o cálculo---*PureS, LAG, OAG*; o impacto das classes no Grafo de Dependências Global e o problema da determinação de uma ordem topológica (e total); as classes e os Geradores de Compiladores (Calculadores de Atributos); manuseamento de gramáticas OAG em AntLR -- as TreeGrammars.

  • Resolução de exercícios sobre gramáticas de atributos em AnTLR:
    • Processar uma lista de nomes próprios (correspondentes a Filhos de uma família), seguida do nome e apelido da mãe, bem como do nome e apelido do pai (conclusão deste exerc+icio da aula anterior).
    • Processar uma Declaração de Variáveis em Pascal (lista de identificadores seguidos do seu tipo) inserindo na Tabela de Identificadores os pares (IdVar? ,IdTipo).

9 de Novembro de 2009

  • Resolução de exercícios sobre gramáticas de atributos em AnTLR:
    • Processar uma lista de items (números inteiros ou palavras) e calcular a soma dos números encontrados na respectiva lista. Porém o somatório só deve iniciar-se após surgir a 1ª ocorrência da palavra "agora"; a resolução em AnTLR deste exercício pode ser encontrada aqui: (listaAgora.g). No fim da aula foi proposta, como trabalho para casa, uma alteração a este exercício em que a palavra "agora" actuasse como "toggle", i. é, começa a adicionar quando aparece a palavra "agora" e deixa de adicionar quando chega ao fim ou aparece de novo a palavra "agora" e assim sucessivamente para as próximas corrências dessa palavra.
    • Processar uma lista de nomes próprios (correspondentes a Filhos de uma família), seguida do nome e apelido da mãe, bem como do nome e apelido do pai. Para cada um dos filhos na lista, gerar uma instrução SQL para adionar a uma base de dados um registo para o filho compondo o seu nome próprio com o apelido do pai seguido do apelido da mãe (à espanhola).

2 de Novembro de 2009

  • Introdução à construção de Árvores de Sintaxe Abstractas (AST, Abstract Syntax Tree) em ANTLR. Construção da gramática em AnTLR com ouput AST para o exemplo da aula anterior: (declarations.g)
  • Introdução à utilização de Tree Grammars em AnTLR. Introdução dos operadores ->, ^ e !
  • Construção da respectiva Tree Grammar para o exemplo anterior: (declarationsAST.g)
  • Introdução de atributos, na Tree Grammar, para cálculo da Tabela de Identificadores.

26 de Outubro de 2009

  • Resolução das alínea f1-4) do Exercício 2 com recurso às Gramáticas de Atributos.
  • Discussão com os alunos das diferenças em relação às Gramáticas Tradutoras.

19 de Outubro de 2009

  • Resolução da alínea f1,2) do Exercício 2 ( a alínea f3) ficou como trabalho de casa e f4) será desenvolvida na próxima aula):
    • criação de uma Gramática Tradutora, juntando Acções Semânticas (com um ou mais atributos sintetisados associados ao LHS) à GIC optimizada escrita pelo Daniel (ver aqui GICexe2) para calcular e imprimir diversos resultados que se podem extrair de frases concretas da linguagem-fonte;
    • exploração de todas as facetas do ambiente AnTLR-Works.

12 de Outubro de 2009

  • Resolução do Exercício 1 (enunciado descrito nas Fichas Práticas de Engenharia Gramatical).
    • Ficheiro com resolução em AnTLR: black.g
  • Resolução das alíneas a), b) e c) do Exercício 2.

28 de Setembro de 2009

  • A. Apresentação da disciplina
    • 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.
  • B. Apresentação dos Temas de Tese paa os alunos do 2ºano do MI/MEI (edic. 2008/09)


SumariosATS10 19 Jun 2011 - 05:38 - r26 PedroRangelHenriques

Engenharia de Linguagens (2010/11)

Análise e Transformação de Software

Sumários

27 de Setembro de 2010

  • A. Apresentação da disciplina
    • I.1 Introdução e Motivação para a área de Análise e Transformação de SW.

11 de Outubro de 2010

  • Resolução do Exercício 1 sobre Gramáticas, GIC e GT (enunciado descrito nas Fichas Práticas de Engenharia Gramatical).

18 de Outubro de 2010

  • Continução da Resolução do Exercício 1 sobre Gramáticas, GIC e GT (enunciado descrito nas Fichas Práticas de Engenharia Gramatical).

25 de Outubro de 2010

  • Continução da Resolução do Exercício 1 sobre Gramáticas, agora para introdução às GA e à ferramenta Silver (enunciado descrito nas Fichas Práticas de Engenharia Gramatical; e conteúdo da aula descrito no Módulo de EG (sumários)).

08 de Novembro de 2010

  • Resolução do Exercício 2 sobre Gramáticas, para introdução às GA e à ferramenta Silver (enunciado descrito nas Fichas Práticas de Engenharia Gramatical; e conteúdo da aula descrito no Módulo de EG (sumários)).

15 de Outubro de 2010

  • Continuação da introdução às GA, às árvores de sintaxe abstrata (AST) e à ferramenta Silver, agora com um novo exemplo da calculadora de expressões "dc -- desktop calculator languag" (conteúdo da aula descrito no Módulo de EG (sumários)).

22 de Novembro de 2010

  • Não dei aula por estar na Universidade Nacional de SanLuis? , Argentina, no contexto da visita anual do projecto de cooperação bilateral Quixote (aula dada por JGR, a compensar ainda em dezembro).

29 de Novembro de 2010

  • Não dei aula por estar na Universidade Nacional de SanLuis? , Argentina, no contexto da visita anual do projecto de cooperação bilateral Quixote (aula dada por JGR, a compensar ainda em dezembro).

06 de Dezembro de 2010

  • Resolução do Exercício 3 sobre Linguagens e Gramáticas, para sedimentar os conhecimentos já introduzidos sobre GAs. Análise da estrutura fisica de uma factura para escolha dos simbolos não-terminais e terminais e dos atributos que permitam descrever o processamento que traduza a semântica desejada; construção das variantes linguisticas pedidas por extensão ou adaptação da gramática; definição das regras para cálculo dos atributos sintetizados.

  • Continuação da discussão sobre ferramentas para geração de processadores de linguaguens como o sistema Silver, o LISA ou o AnTLR --- a linguagem de programação para escrita das regras de cálculo dos atributos: escolha entre uma linguagem própria e específica ou uma GPL (General Purpose Language), vantagens e inconvenientes.

13 de Dezembro de 2010

  • Introdução à ferramenta para geração de processadores de linguaguens AnTLR --- filosofia geral, alguma regras básicas e as funcionalidades do ambiente de desenvolvimento AnTLRWorks. Utilização do Exercício 2 sobre Linguagens e Gramáticas (a linguagem Lisp e as SExpressions), para sedimentar os conhecimentos já introduzidos sobre GAs e para explicar o uso do AnTLR.

03 de Janeiro de 2011

  • Introdução à ferramenta para geração de processadores de linguaguens AnTLR (cont.) --- alguma regras básicas e as funcionalidades do ambiente de desenvolvimento AnTLRWorks. Utilização do Exercício 3 sobre Facturas para sedimentar os conhecimentos já introduzidos sobre GAs e para explicar o uso do AnTLR.

10 de Janeiro de 2011

  • Introdução à ferramenta para geração de processadores de linguaguens AnTLR (cont.) --- alguma regras básicas e as funcionalidades do ambiente de desenvolvimento AnTLRWorks. Desenvolvimento de um compilador para uma linguagem de cálculo de expressões, para sedimentar os conhecimentos já introduzidos sobre GAs e para explicar o uso do AnTLR.

17 de Janeiro de 2011

  • Introdução à ferramenta para geração de processadores de linguaguens AnTLR (cont.) e ao ambiente de desenvolvimento AnTLRWorks; sedimentação dos conhecimentos já introduzidos sobre GAs.

  • Cont. do Desenvolvimento de um compilador para uma linguagem de cálculo de expressões: escolha dos atributos herdados e sintetizados para análise semântica estática---construção da TabId por recolha dos pares <identificador,tipo>; verificação de re-declarações; type-checking .

** 2º SEMESTRE ***

21 de Fevereiro de 2011

  • A ferramenta para geração de processadores de linguaguens AnTLR e o ambiente de desenvolvimento AnTLRWorks.

  • Sedimentação dos conhecimentos já introduzidos sobre GAs e introdução aos exercícios sobre Análise de Programas---enunciado do problema para as próximas aulas: análise de programas em LogoLISS; escrita de um programa para transporte da gramática Yacc para AnTLR.

  • Cont. do Desenvolvimento de um compilador para uma linguagem de cálculo de expressões: escolha dos atributos herdados e sintetizados para análise semântica estática---construção da TabId por recolha dos pares <identificador,tipo>; verificação de re-declarações; type-checking .

28 de Fevereiro de 2011

  • Apresentação teórico-prática do trabalho de mestrado do Hugo Areias: retargetting da ferramenta AnTLR de modo a gerar Processadores de Linguagens em Perl --- o problema, a estratégia (ou o caminho) seguido, os resultados atingidos.

  • Discussão da forma como usar Perl para se comportar como o Java (a run-time Library).

07 de Março de 2011

  • Não houve aula --- 2ªf de Entrudo.

14 de Março de 2011

  • A ferramenta para geração de processadores de linguaguens AnTLR e o ambiente de desenvolvimento AnTLRWorks.

  • Sedimentação dos conhecimentos já introduzidos sobre GAs e exercícios sobre Análise de Programas: análise de programas em LogoLISS; escrita de um programa para transporte da gramática Yacc para AnTLR.

21 de Março de 2011

  • Sedimentação dos conhecimentos já introduzidos sobre GAs e exercícios sobre Análise de Programas: análise de programas em LogoLISS; escrita de um programa para transporte da gramática Yacc para AnTLR (cont. do projeto).

28 de Março de 2011

  • Sedimentação dos conhecimentos já introduzidos sobre GAs e exercícios sobre Análise de Programas: análise de programas em LogoLISS; escrita da gramática AnTLR e eliminação de conflitos (cont. do projeto).

04 de Abril de 2011

  • A ferramenta para geração de processadores de linguaguens AnTLR e o ambiente de desenvolvimento AnTLRWorks: introdução aos construtores para criar árvores de sintaxe abstrata com atributos (AST) e para sua manipulação; filosofia de trabalho usando o par "grammar / tree-grammar".

  • Cont. do projeto para Sedimentação dos conhecimentos já introduzidos sobre GAs e exercícios sobre Análise de Programas: análise de programas em LogoLISS; escrita da gramática AnTLR e eliminação de conflitos (cont. do projeto).

11 de Abril de 2011

  • Cont. do projeto para Sedimentação dos conhecimentos já introduzidos sobre GAs e exercícios sobre Análise de Programas: análise de programas em LogoLISS; escrita da gramática AnTLR e eliminação de conflitos (cont. do projeto); definição de atributos para construção da Tabela de Identificadores (definição da sua estrutura em termos genéricos).

  • a noção de Bloco e do Nível de aninhamento; o âmbito de validade das declarações (scope) e as regras de visibilidade.

18 de Abril de 2011

  • Não houve aula --- férias de Páscoa.

25 de Abril de 2011

  • Não houve aula --- feriado nacional comemorativo da Revolução dos Cravos.

02 de Maio de 2011

  • Aula usada para apresentação e avaliação parcial do Projeto Integrado (PI) -- 3ª fase (apresentação teórica).

09 de Maio de 2011

  • Cont. do projeto para Sedimentação dos conhecimentos já introduzidos sobre GAs e exercícios sobre Análise de Programas: análise de programas em LogoLISS; escrita da gramática AnTLR e eliminação de conflitos (cont. do projeto); definição de atributos para construção da Tabela de Identificadores (definição da sua estrutura em termos genéricos) --- exploração das facilidades do AnTLR para construir e manipular AST; discussão da solução seguida por alguns dos grupos.

16 de Maio de 2011

  • Cont. do projeto para Sedimentação dos conhecimentos já introduzidos sobre GAs e exercícios sobre Análise de Programas: análise de programas em LogoLISS; escrita da gramática AnTLR e eliminação de conflitos (cont. do projeto); definição de atributos para construção da Tabela de Identificadores (definição da sua estrutura em termos genéricos) --- exploração das facilidades do AnTLR para construir e manipular AST; discussão da solução seguida por alguns dos grupos.

23 de Maio de 2011

  • Cont. do projeto para Sedimentação dos conhecimentos já introduzidos sobre GAs e exercícios sobre Análise de Programas: análise de programas em LogoLISS; exploração das facilidades do AnTLR para construir e manipular AST; discussão da solução seguida por cada grupo.
Exemplo de manipulação de Árvores em AnTLR

30 de Maio de 2011

  • Manhã totalmente dedicada ao projeto integrado (PI).

06 de Junho de 2011

  • Manhã parcialmente dedicada ao fecho de EG e ao projeto integrado (PI).

13 de Junho de 2011

Fecho da Disciplina, Balanço final:

  • Análise, Representação Intermédia (tabela de identificadores, árvore de sintaxe (decorada com atributos), grafos de fluxo e de dependências), Estratégias de Travessia e Transformações.

  • Análise Estática versus Análise Dinâmica; Instrumentação de Código e Inspétores.

  • Slicing: conceito e definição; estático versus dinâmico; sintático versus semântico; aplicações tradicionais e novas aplicações (verificação de programas anotados com contratos); Slicing de código fonte e de código intermédio e slicing de outras linguagens; slicing de documentos XML.


SumariosEG08 23 Sep 2009 - 10:52 - r30 JoseFaria

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


SumariosEG09 18 Oct 2010 - 05:20 - r40 PedroRangelHenriques

Engenharia de Linguagens (2010/2011)

Engenharia Gramatical

Sumários

31 Maio de 2010

  • GraAlEditor, um editor-analisador de Gramáticas:
    • Preparação de um artigo a submeter ao CoRTA2010: discussão dos contributos dos 4 grupos em termos de funcionalidades (visualização incluida, ou não) e da arquitectura;
    • Próxima tarefa: desenvolver a secção especific distribuida a cada grupo.

24 Maio de 2010

  • GraAlEditor, um editor-analisador de Gramáticas:
    • Preparação de um artigo a submeter ao CoRTA2010: discussão dos contributos dos 4 grupos, definição dos objectivos do artigo e da sua estrutura (secções e seu conteúdo) e escrita do Abstract;
    • Próxima tarefa: definir e enviar proposta de arquitectura.

17 Maio de 2010

  • GraAlEditor, um editor-analisador de Gramáticas:
    • Preparação de um artigo a submeter ao CoRTA2010: foi decidido que cada grupo enviaria por email um Abstract completo em inglês até 5ªf à noite para ser depois feita a fusão (PRH+DCC).

  • Introdução às Métricas para Gramáticas de Atributos
    • Métricas de Tamanho:
      • (MTA1) #A = #AS + #AH
      • (MTA2) #RC (regras de cálculo)
      • (MTA3) #CC (condições de contexto)
      • (MTA4) #RT (regras de tradução)
      • (MCA1) FanIN (valor médio considerando os GDLocais a todos as p em P)
      • (MCA2) FanOUT (valor médio considerando os GDLocais a todos as p em P)
    • Métricas de Forma:
      • (MFA1) Complexidade dos Atributos: (#ACompl / #A)
        • #Atributos Atómicos
        • #Atributos Complexos
      • (MFA2) Complexidade das Operações: (#OCompl / (#RT + #CC + #RT))
        • #OSimples
        • #OComplex
      • (MFA3) Esquema de Cálculo I
        • RCpureS (puramente Sintetizado)
        • RCpureI (puramente Herdado)
        • RCmixSI
      • (MFA4) Esquema de Cálculo II
        • RCAgregadas
        • RCNãoAgregadas
      • (MFA5) Esquema das Restrições Contextuais
        • CCTop
        • CCBottom
        • CCCentered
      • (MFA6) Esquema das Regras de Traduçao
        • RTTop
        • RTBottom
        • RTCentered

03 Maio de 2010

  • Revisão dos elementos já disponíveis para avaliação dos alunos a este módulo.

  • Revisão dos Critérios para avaliar a qualidade das gramáticas, GIC e GA: usabilidade (em termos de leitura, derivação de frases e manutenção); e eficiência (em termos reconhecedor/processor gerado, e geração) e métricas; Discussão da relação das métricas obtidas com a qualidade da linguagem.

  • GraAlEditor, um editor-analisador de Gramáticas:
    • Preparação de um artigo a submeter ao CoRTA2010: definição do título, abstratct e estrutura (LaTeX distribuido por email para todos os alunos).

26 Abril de 2010

  • GraAlEditor, um editor-analisador de Gramáticas (ficha 3):
    • Discussão dos Trabalhos realizados pelos grupos:
      • André Rocha e Márcio Gomes

19 Abril de 2010

  • GraAlEditor, um editor-analisador de Gramáticas (ficha 3):
    • Discussão dos Trabalhos realizados pelos grupos:
      • Daniel Rocha e Jorge Mendes

12 Abril de 2010

  • GraAlEditor, um editor-analisador de Gramáticas (ficha 3):
    • Discussão dos Trabalhos realizados pelos grupos:
      • André Santos e Miguel Regedor
      • José Luis Freitas e Helder Silva

15 Março de 2010

  • Cálculo das métricas para a gramática do Exemplo 5 :

  Original GIC5T1 GIC5T2
#T 14 14 14
#NT 12 7 14
#P 17 9 19
#PU 5 0 5
#R 3 0 3
$RHS 38/17=2.24 27/9=3 40/19=2.11
$ALT 17/12=1.42 9/7= 1.29 19/14=1.36
#Modulos 1 1 1
Fan-in      
Fan-out      
#RD 12+1=13 7 +1 = 8 14+1=15
#TabLL1 12*14=168 7*14= 98 14*14= 196
F1 3+0 0+0 3+0
F2 2+1+0 0+0+0 2+1+0
F3 3+0 0+3 3+0
L1 8E + 4NE em NT, 3E + 0 NE em Tv 5E + 2NE em NT, 3E + 0 NE em Tv 10E + 4NE em NT, 3E + 0 NE em Tv
L2 11E+0NE em PR+Sinais ... ...
L3 0F + 2I ... ...
L4 1 +0+0 ... ...

GIC5T1   (GIC5 sem produções unitárias e usando exBNF)

         p1: PIs --> RESUMO Lst DETALHE Projs '.'
         p2: Lst --> InvPs (';' InvPs)* 
         p3: InvPs --> id LstIds
         p4: LstIds --> id (',' id)*
         p5: Projs --> (Proj '.')+
         p6: Proj --> id str FINANC Entidad num INIC num FIM num
         p7: Entidad --> FCT
         p8:          | GRICES
         p9:          | ADI

GIC5T2   (GIC com a produção p10 modificada para ficra mais curta)
 
         p1: PIs --> RESUMO Lst DETALHE Projs '.'
         p2: Lst --> InvPs
         p3:      | Lst ';' InvPs
         p4: InvPs --> SglInv LstIds
         p5: SglInv --> id
         p6: LstIds --> SglProj
         p7:         | SglProj ',' LstIds
         p8: Projs --> Proj '.'
         p9:        | Projs Proj '.'
         p10: Proj --> SglProj Desc Financiament Period
         p11: Financiament --> FINANC Entidad Valor
         p12: Period --> INIC Ano FIM Ano
         p13: SglProj --> id
         p14: Desc --> str
         p15: Entidad --> FCT
         p16:          | GRICES
         p17:          | ADI
         p18: Ano --> num
         p19: Valor --> num

GIC5T3   (GIC5 permitindo incluir a lista de todos os Membros do projecto)

         p1: PIs --> RESUMO Lst DETALHE Projs '.'
         p2: Lst --> InvPs
         p3:      | Lst ';' InvPs
         p4: InvPs --> SglInv LstIds
         p5: SglInv --> id
         p6: LstIds --> SglProj
         p7:         | SglProj ',' LstIds
         p8: Projs --> Proj '.'
         p9:        | Projs Proj '.'
         p10: Proj --> SglProj Desc FINANC Entidad Valor INIC Ano FIM Ano MEMBROS Membros
         p11: Membros --> SglInv
         p12:          |  SglInv ',' Membros
         p13: SglProj --> id
         p14: Desc --> str
         p15: Entidad --> FCT
         p16:          | GRICES
         p17:          | ADI
         p18: Ano --> num
         p19: Valor --> num

8 Março de 2010

  • Cálculo das métricas para a gramática do Exemplo 5:

  Projectos
#T 14
#NT 12
#P 17
#PU 5
#R 3
$RHS 38/17=2.24
$ALT 17/12=1.42
#Modulos 1
Fan-in  
Fan-out  
#RD 12+1=13
#TabLL1 12*14=168
F1 3+0
F2 2+1+0
F3 3+0
L1 8E + 4NE em NT, 3E + 0 NE em Tv
L2 11E+0NE em PR+Sinais
L3 0F + 2I
L4 1 +0+0

1 Março de 2010

  • Introdução às métricas de forma:
    • Forma da recursividade (F1):
      • Recursividade Directa: X -> α X ou X -> X α
      • Recursividade Indirecta: X -> α Y β e Y -> γ X
      • Recursividade Mista
    • Tipo de recursividade (F2):
      • Recursividade Esquerda: X -> X α
      • Recursividade Direita: X -> α X
      • Recursividade Direita-LL: X -> α Y e Y -> ε | α Y
      • Recursividade Mista
    • Notação (F3):
      • BNF
      • EBNF
      • Misto
  • Introdução às métricas lexicográficas
    • Identificadores dos Terminais (T) e Não-Terminais (NT) esclarecedores (L1)
    • Palavras-Peservadas (PR) e Sinais esclarecedores (L2)
    • Identificadores + Literais da Linguagem Flexíveis (L3)
    • Possibilidade de inserir comentários (L4)
      • Comentários inline
      • Comentários blocos
      • Comentários mistos

  • Cálculo de Métricas de Forma e Lexicográficas para estudo comparativo de gramáticas:
    • métricas para a Gramática Black, GBla (EG -- Exemplo 1);
    • métricas para a versão original (v0) da Gramática Biblioteca, GBib (EG -- Exemplo 2).

  Black Biblioteca (v0)
F1 0+0 2+0+0
F2 0+0+0 2+0+0
F3 0+3 2+0
L1 NT: 8E(1) + 2NE(2), T: 2E + 0NE NT: 19E + 1NE (DataDev), T: 3E + 0NE
L2 PR(3): 25E + 0NE, Sinais: 5E + 0NE 12E + 0NE, Sinais: 6E + 0NE
L3 2 NA
L4 NA(4) NA

(1) Esclarecedores

(2) Não Esclarecedores

(3) Palavras-Reservadas

(4) Não aplicável

22 Fevereiro de 2010

  • Cálculo de métricas para estudo comparativo de gramáticas:
    • métricas para a versão original (v0) da Gramática Biblioteca (2ª coluna da Tabela da aula anterior).
    • métricas para a versão v1 da Gramática Biblioteca, após remoção das produções unitárias.
    • métricas para a versão v2 da Gramática Biblioteca, após alteração para gramática LL(1).
    • métricas para a versão v3 da Gramática Biblioteca, após alteração para uso de notação ex-BNF.
    • métricas para a versão v4 da Gramática Biblioteca, alterada de modo a permitir que cada livro tenha mais de um Autor.
  • Conclusão: deixando de lado v4 que altera a Linguagem original, é interessante notar que a gramática menos clara (mais dificl de aprender e manter) é a v1, a qual conduz ao Reconhecedor menor e pt mais eficiente; quanto às outras três (v0, v2 e v3) são muito semelhantes, sendo a versão LL(1) a maior e tv por isso menos "ágil" e a versão ex-BNF um pouco menor e consequentemente mais fácil de usar. Curiosamente, a versão v4 estende a Linguagem original, mantendo uns indicadores de qualidade muito semelhantes aos das suas antecessoras (v0, v2 e v3).

  (v0) (v1) (v2) (v3) (v4)
#T 18+3=21 21 21 21 21
#NT 20 11 22 20 21
#P 28 19 30 26 30
#PU 9 0 9 9 9
#R 2 2 2 0 3
$RHS 55/28=1.96 46/19 = 2.42 58/30 = 1.93 56/26=2.15 57/30=1,9
$ALT 28/20=1.4 19/11 = 1.73 30/22 = 1.36 26/20=1.3 30/21=1.43
#Modulos 1 1 1 1 1
#RD 20+21=41 ou 20+1=21 11+1=12 22+1 20+1 21+1
#TabLL1 (20+21)*21 ou 20*21=420 11*21 = 231 22*21=462 20*21=420 21*21=441

  • Gramática da v4

        p0:  Biblioteca   -->  Registos
        p1:  Registos     -->  Registo 
        p2:                |   Registos ',' Registo
        p3:  Registo      -->  '[' REGISTO Descricao  EXISTENCIAS 
                                                    Existencias ']'
        p4:  Descricao    -->  Referencia Tipo Titulo '(' Autores ')' 
                               Editora Ano Catalogo
        ...........
        p28: Autores      -->  Autor
        p29:               |   Autores ','  Autor

  • Gramática da v3

        p0:  Biblioteca   -->  Registos
        p1:  Registos     -->  Registo (',' Registo)*
        p2:  Registo      -->  '[' REGISTO Descricao  EXISTENCIAS 
                                                    Existencias ']'
        p3:  Descricao    -->  Referencia Tipo Titulo '(' Autor ')' 
                               Editora Ano Catalogo
        p4:  Referencia   -->  id
        p5:  Tipo         -->  LIVRO
        p6:                 |  CDROM
        p7:                 |  OUTRO
        p8:  Titulo       -->  string
        p9:  Autor        -->  string
        p10: Editora      -->  string
        p11: Ano          -->  num
        p12: Catalogo     -->  BGUM
        p13:                |  ALFA
        p14:                |  OUTRO
        p15: Existencias  -->  LOCAL Local '(' Estados ')'
        p16: Local        --> string 
        p17: Estados      --> Estado (',' Estado)*
        p18: Estado       --> CodigoBarras Disponib
        p19: CodigoBarras --> id
        p20: Disponib     --> ESTANTE
        p21:                | PERMANENTE
        p22:                | EMPRESTADO DataDev
        p23: DataDev      --> Ano '-' Mes '-' Dia
        p24: Mes          --> num
        p25: Dia          --> num

  • Gramática da v2

        p0:  Biblioteca   -->  Registos
        p1:  Registos     -->  Registo RegistosAux
        p2:  RegistosAux  --> ',' Registo
        p3:                 |  
        p4:  Registo      -->  '[' REGISTO Descricao  EXISTENCIAS 
                                                    Existencias ']'
        p5:  Descricao    -->  Referencia Tipo Titulo '(' Autor ')' 
                               Editora Ano Catalogo
        p6:  Referencia   -->  id
        p7:  Tipo         -->  LIVRO
        p8:                 |  CDROM
        p9:                 |  OUTRO
        p10: Titulo       -->  string
        p11: Autor        -->  string
        p12: Editora      -->  string
        p13: Ano          -->  num
        p14: Catalogo     -->  BGUM
        p15:                |  ALFA
        p16:                |  OUTRO
        p17: Existencias  -->  LOCAL Local '(' Estados ')'
        p18: Local        --> string 
        p19: Estados      --> Estado EstadosAux
        p20: EstadosAux   --> ',' EstadosAux
        p21:                | 
        p22: Estado       --> CodigoBarras Disponib
        p23: CodigoBarras --> id
        p24: Disponib     --> ESTANTE
        p25:                | PERMANENTE
        p26:                | EMPRESTADO DataDev
        p27: DataDev      --> Ano '-' Mes '-' Dia
        p28: Mes          --> num
        p29: Dia          --> num

  • Gramática da v1

        p0:  Biblioteca   -->  Registos
        p1:  Registos     -->  Registo
        p2:                 |  Registos ',' Registo
        p3:  Registo      -->  '[' REGISTO Descricao  EXISTENCIAS  
                                                      Existencias ']'
        p4:  Descricao    -->  id Tipo string '(' string ')' 
                               string num Catalogo
        p5:  Tipo         -->  LIVRO
        p6:                 |  CDROM
        p7:                 |  OUTRO
        p8:  Catalogo     -->  BGUM
        p9:                 |  ALFA
        p10:                |  OUTRO
        p11: Existencias  -->  LOCAL string '(' Estados ')'
        p12: Estados      --> Estado
        p13:                | Estados ',' Estado
        p14: Estado       --> id Disponib
        p15: Disponib     --> ESTANTE
        p16:                | PERMANENTE
        p17:                | EMPRESTADO DataDev
        p18: DataDev      --> num '-' num '-' num

25 Janeiro de 2010

  • Discussão da relação das métricas obtidas com a qualidade da linguagem.

  • Cálculo de métricas para estudo comparativo de gramáticas:
    • métricas para a Gramática Black, GBla (EG -- Exemplo 1);
    • métricas para a versão original (v0) da Gramática Biblioteca, GBib (EG -- Exemplo 2).

  Black Biblioteca (v0)
#T 30+2=32 18+3=21
#NT 10 20
#P 25 28
#PU 0 9
#R 0 2
$RHS 60/25=2.4 55/28=1.96
$ALT 2.5 28/20=1.4
#Modulos 1 1
#RD 10+32=42 ou 10+1=11 20+21=41 ou 20+1=21
#TabLL1 (10+32)*32=1344 ou 10*32=320 (20+21)*21 ou 20*21=420

  • Conclusão: verificou-se que as gramáticas são sensivelmente do mesmo tamanho (GBla com mais terminais, mas Gbib com mais não-terminais e produções), mas que GBla (com lados direitos mais longos, mais alternativas e com um grafo de dependências mais fechado) é mais complexa que a GBib, sendo esta ultima é mais clara/mais fácil de ler/manter (mais produções unitárias e GD mais simples). Em termos do Reconhecedor, o da segunda (GBib) é um pouco maior (devido a mais NTs e Prods).

18 Janeiro de 2010

  • Continuação da definição de critérios para avaliar a qualidade das gramáticas: usabilidade (em termos de leitura, derivação de frases e manutenção); e eficiência (em termos reconhecedor/processor gerado, e geração).
  • Critérios definidos em relação a uma Gramática Independente do Contexto (GIC):
    • identificadores dos símbolos
    • nº de símbolos (terminais #T + não terminais #NT)
    • nº de produções (#P)
    • notação (BNF/eBNF)
    • recursividade (Esquerda/Direita, Directa/Indirecta)
    • complexidade em termos de dependências entre símbolos
    • modularidade
  • Critérios definidos em relação a uma Gramática de Atributos (GA):
    • identificadores dos símbolos
    • nº de atributos (nº de regras de cálculo)
    • complexidade dos atributos
    • complexidade das acções semânticas
    • nº, complexidade e localização das condições de contexto
    • notação
    • recursividade
    • suporte em gramática concreta/gramática abstracta
    • complexidade em termos de dependências entre símbolos
  • Métricas para GIC:
    • Tamanho: #T, #NT, #P, #PU, média do nº de símbolos no lado direito das produções ($RHSmed), nº médio de alternativas para cada símbolo ($Altmed), número de módulos (#mod), nº dependências entre símbolos usando o grafo de dependências (fan-in, fan-out), tamanho das tabelas de parsing LL(1) = ((N+T)*T), tamanhos das tabelas de parsing LR = (Q*T)+(Q*N), tamanho do recursivo descendente = (#N+#T)
    • Forma:
    • Lexicográficas:

11 Janeiro de 2010

  • Discussão sobre técnicas de parsing com base nos relatórios apresentados pelos alunos. Revisão dos conceitos de First, Follow, Lookahead, Parsers Top-Down e Bottom-Up.
  • Revisão dos critérios para aferir a Qualidade de Linguagens.
  • Introdução aos critérios para aferir a Qualidade das Gramáticas.
  • Uma gramática G tem 2 fins: Geradora de Linguagem; e Geradora de um Processador de Linguagem. Enquanto Geradora de Linguagem pretende-se que seja fácil de compreender, derivar e manter. Enquanto Geradora de um Processador pretende-se obter: eficiência do processador gerado; e eficiência do processo de geração.

4 Janeiro de 2010

  • Discussão da relevância do ambiente de desenvolvimento (IDE) para a avaliação de uma Linguagem: embora não sendo considerado um critério de aferição de linguagens por não ser uma característica intrínseca e sim um factor externo complementar, reconheceu-se a sua importância neste estudo visto que influencia directamente a utilização da linguagem (um mau IDE não promove a utilização da linguagem e vice-versa). Foram, entretanto, identificadas as seguintes facetas que caracterizam a qualidade de um IDE:
    • editor assistido (orientado pela sintaxe, ou com auto-complete, syntax highlight);
    • editor assistido pela semântica (inteli-sense, snippets);
    • code folding (Definição de Code Folding);
    • compilador/interpretador (rapidez, nível de optimização, tratamento de erros);
    • verificador sintáctico e semântico;
    • debugger;
    • gestor de projectos;
    • controlador de versões;
    • importador/integrador de bibliotecas (se possível, referenciador para bibliotecas);
    • apresentador de dicas e sinópsis e leitor de documentação;
    • possibilidade de configuração e extensibilidade das funcionalidades.

  • Continuação da definição de critérios para aferir a Qualidade de Linguagens:
    • CL8 --- Credibilidade/ Fiabilidade (Reliability): type checking, exception handling

  Aprendizagem Escrita Compreensão Reconhecimento
CL1 - Expressividade + + + x
CL2 - Documentação x - + x/-
CL3 - Unicidade + - + +
CL4 - Consistência + + + x
CL5 - Extensibilidade - + - -
CL6 - Escalabilidade x = = =
CL7 - Paradigma/Filosofia impl impl impl impl
CL8 - Credibilidade/ Fiabilidade - + + -

  Pascal Basic C Perl XML Latex Prolog C++ C# Java Haskell
CL1-Expressividade mB S mB MB MB MB S S MB MB MB
CL2-Documentação bás bás- evol evol- evol- bás- bás- evol- evol evol bás
CL3-Unicidade x x x x +/- +/- x x x x x
CL4-Consistência + +/- +/- - + - + +/- + + +
CL5 - Extensibilidade bás bás- bás+ evol NA bás evol evol evol evol evol
CL6 - Escalabilidade B +/- B B? NA N N B B N N
CL7 - Paradigma/Filosofia I I I S D D D/L OO/I OO/I OO/I D/F
CL8 - Credibilidade/ Fiabilidade B R S S NA NA R B MB MB B

MB - Muito Bom, B - Bom, S - Satisfaz, NA - Não Aplicável, N - Não, R - Reduzido

bás - básico, evol - evoluído, impl - implica

I - Imperativo, D - Declarativo, L - Lógico, F - Funcional, S - Scripting, OO - Orientado a Objectos


Extensbilidade:

1. Léxico: aliasing (associar um termo/palavra a outra palavra) --- Extensão ao nível do vocabulário

2. Sintáctico

3. Semântica: linguagem de objectos permite estender a semântica (o uso de bibliotecas contribui para a extensibilidade da linguagem).

14 Dezembro de 2009

  • Continuação da definição de critérios para aferir a Qualidade de Linguagens:
    • CL5 --- Extensibilidade
    • CL7 --- Paradigma/Filosofia

  Aprendizagem Escrita Compreensão Reconhecimento
CL1 - Expressividade + + + x
CL2 - Documentação x - + x/-
CL3 - Unicidade + - + +
CL4 - Consistência + + + x
CL5 - Extensibilidade - + - -
CL6 - Escalabilidade x = = =
CL7 - Paradigma/Filosofia impl impl impl impl

  Pascal Basic C Perl XML Latex Prolog C++ C# Java Haskell
CL1-Expressividade mB S mB MB MB MB S S MB MB MB
CL2-Documentação bás bás- evol evol- evol- bás- bás- evol- evol evol bás
CL3-Unicidade x x x x +/- +/- x x x x x
CL4-Consistência + +/- +/- - + - + +/- + + +
CL5 - Extensibilidade bás bás- bás+ evol NA bás evol evol evol evol evol
CL6 - Escalabilidade B +/- B B? NA N N B B N N
CL7 - Paradigma/Filosofia I I I S D D D/L OO/I OO/I OO/I D/F

MB - Muito Bom, B - Bom, S - Satisfaz, NA - Não Aplicável, N - Não

bás - básico, evol - evoluído, impl - implica

I - Imperativo, D - Declarativo, L - Lógico, F - Funcional, S - Scripting, OO - Orientado a Objectos


Extensbilidade:

1. Léxico: aliasing (associar um termo/palavra a outra palavra) --- Extensão ao nível do vocabulário

2. Sintáctico

3. Semântica: linguagem de objectos permite estender a semântica (o uso de bibliotecas contribui para a extensibilidade da linguagem).

07 Dezembro de 2009

  • Aula ocupada com a apresentação, discussão e avaliação do Projecto Integrado (PI) -- 1ªfase.

30 Novembro de 2009

  • Continuação da definição de critérios para aferir a Qualidade de Linguagens:
    • CL6 --- Escalabilidade

  Aprendizagem Escrita Compreensão Reconhecimento
CL1 - Expressividade + + + x
CL2 - Documentação x - + x/-
CL3 - Unicidade + - + +
CL4 - Consistência + + + x
         
CL6 - Escalabilidade x = = =

  Pascal Basic C Perl XML Latex Prolog C++ C# Java Haskell
CL1-Expressividade mB S mB MB MB MB S S MB MB MB
CL2-Documentação bás bás- evol evol- evol- bás- bás- evol- evol evol bás
CL3-Unicidade x x x x +/- +/- x x x x x
CL4-Consistência + +/- +/- - + - + +/- + + +
                       
CL6 - Escalabilidade B +/- B B? NA N N B B N N

MB - Muito Bom, B - Bom, S - Satisfaz, NA - Não Aplicável, N - Não

bás - básico, evol - evoluído

23 Novembro de 2009

  • Continuação da definição de critérios para aferir a Qualidade de Linguagens:
    • CL2 --- Documentação:
      • definição deste critério: comentários --- in-line, multi-line, DSL em comentário (Aumenta doc e produz manuais --- JavaDoc, MSDN, etc; aumenta robustez e produz provas --- VCGen); meta-informação obrigatória.
    • CL3 --- Unicidade: forma única de escrita.
    • CL4 --- Consistência

  Aprendizagem Escrita Compreensão Reconhecimento
CL1 - Expressividade + + + x
CL2 - Documentação x - + x/-
CL3 - Unicidade + - + +
CL4 - Consistência + + + x

  Pascal Basic C Perl XML Latex Prolog C++ C#/Java Haskell
CL1-Expressividade mB S mB MB MB MB S S MB MB
CL2-Documentação bás bás- evol evol- evol- bás- bás- evol- evol bás
CL3-Unicidade x x x x +/- +/- x x x x
CL4-Consistência + +/- +/- - + - + +/- + +

MB - Muito Bom, B - Bom, S - Satisfaz

bás - básico, evol - evoluído

16 Novembro de 2009

  • Qualidade de gramáticas vs Qualidade de linguagens.
  • Critérios para aferir a Qualidade das Linguagens:
    • CL1 -- Expressividade:
      • definição deste critério: facilidade (naturalidade, clareza) com que se exprime uma ideia usando os construtores da linguagem.
      • impacto de CL1 nos quatro dimensões de avaliação: influencia positivamente a aprendizagem, escrita e compreensão sem ter grande impacto no processamento.
  Aprendizagem Escrita Compreensão Reconhecimento
CL1- Expressividade + + + x
      • Avaliação (comparativa) da expressividade das seguintes linguagens: Basic, Pascal, C, C#, Perl, Prolog, Haskell, XML, LaTeX; discussão da avaliação histórica e dos paradigmas subjacentes.
  Pascal Basic C Perl XML Latex Prolog C++ C# Haskell
CL1-Expressividade mB S mB MB MB MB S S MB MB

MB - Muito Bom, B - Bom, S - Satisfaz

9 Novembro de 2009

  • Continuação da discussão com os alunos sobre as pesquisas feitas relativas a métricas de gramáticas. Alunos de que apresentaram: Jorge Mendes, André Santos & Miguel Regedor, Márcio Coelho, Paulo Alexandre & Paulo Alexandr e André Rocha.
  • Introdução ao conceito de qualidade de gramáticas vs qualidade de linguagens (critérios de avaliação e métricas).
  • Definição de Qualidade de uma Linguagem: uma linguagem diz-se com qualidade se a sua legibilidade (em termos de facilidade na aprendizagem, escrita e compreensão) for grande sem degradar a eficiência do processamento.
  • Critérios para as Linguagens -- Introdução: CL1 a CL6.

2 Novembro de 2009

  • Discussão com os alunos sobre as pesquisas feitas sobre métricas de gramáticas. Alunos de que apresentaram: Jose Luis, Helder Silva, e Daniel Rocha.

26 Outubro de 2009

  • Apresentação dos resultados encontrados na pesquisa sobre métricas de gramáticas.
  • Revisão da utilização de entradas bibtex num ficheiro latex.
  • Resolução do exercício 2, alínea f4.
  • Introdução do princípio da Tradução Dirigida pela Semântica e diferenças em relação à Tradução Dirigida pela Sintaxe.
  • Introdução ao conceito de Gramáticas de Atributos como tuplo (GIC, A, RC, CC, RT), onde A=Atributos, RC=Regras de Contexto, CC=Condições de Contexto, RT=Regras de Tradução.
  • Exemplificação do uso de Gramáticas de Atributos (GA) com a gramática declarations.g

19 Outubro de 2009

  • Discussão do duplo papel de uma Gramática, a propósito do Exercício 2 da aula anterior e das suas alíneas a) a c) (comparação com o Exercício 1):
    • a gramática como especificação formal de uma linguagem (papel do utilizador final da linguagem e do engenheiro gramatical);
    • a gramática como especificação formal de um programa, o processador/compilador da linguagem e o recurso a Geradores automáticos de Compiladores (papel do engenheiro gramatical).

  • Introdução à noção e relevância do tema Qualidade de Gramáticas (em ambas as vertentes acima identificadas) e da necessidade imperiosa de se definirem Métricas Gramaticais para se poder discutir a qualidade com objectividade.

  • Revisão dos conceitos de Parsing Top-Down (Recursivo-Descendente, RD, e LL(1)) e de Parsing Bottom-Up (LR); funções e tabelas de parsing e autómato LR(0) -- resolução das alíneas d) e e) do Exercício 2.

12 Outubro de 2009

  • Introdução da notação AnTLR e comparação com a escrita de gramáticas em Lex/Yacc.
  • Escrita em notação AnTLR de 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;
    • inclua Acções Semânticas e Atributos para calcular a Soma dos números na lista e Comprimento da Lista.
  • Discussão das diferenças entre o formato BNF e EBNF e comparação das respectivas árvores de derivação.
  • Discussão das diferenças entre Recursividade à Esquerda e Recursividade à Direita.

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

          
lista   :   '[' nums ']' { 
                       System.out.println("Soma: " + $nums.soma +
                                        "\nContador: " + $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; };      

28 de Setembro de 2009

  • 1. Apresentação da UCE30-EL e em particular do Módulo 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.

  • 2. Revisão do conceito de Linguagem e sua relação com Gramática:
    • Apresentação dos critérios a observar quando se faz o design de uma Linguagem:
      • Satisfação dos Requisitos pedidos no enunciado
      • Satisfação das Restrições explicitadas no enunciado
      • Procura de Legibilidade
      • Procura de Simplicidade na utilização para escrever frases.
    • Resolução do Exemplo1: desenho de uma Linguagem

  • 3. Revisão do conceito de Gramática Indepedente de Contexto (GIC) e de Gramática Tradutora (GT); sua definição formal.
    • Resolução do Exemplo2 (inicio, discussão do enunciado): leitura e análise de uma Gramática


SumariosEG10 17 Sep 2011 - 23:42 - r37 PedroRangelHenriques

Engenharia de Linguagens (2010/2011)

Engenharia Gramatical

Sumários

27 de Setembro de 2010

  • 1. Apresentação da UCE30-EL e em particular do Módulo de EG e ATS:
    • 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.

11 de Outubro de 2010

  • 2. Revisão do conceito de Linguagem e sua relação com Gramática:
    • Apresentação sumária dos critérios a observar quando se faz o design de uma Linguagem:
      • Satisfação dos Requisitos pedidos no enunciado
      • Satisfação das Restrições explicitadas no enunciado
      • Procura de Legibilidade
      • Procura de Simplicidade na utilização para escrever frases.

  • 3. Revisão do conceito de Gramática Indepedente de Contexto (GIC) e de Gramática Tradutora (GT); sua definição formal.
    • Resolução do Exemplo1: desenho de uma Linguagem e escrita da respectiva Gramática com variantes (ver aqui GIC e GT).

18 de Outubro de 2010

  • 3. Revisão do conceito de Gramática Indepedente de Contexto (GIC) e de Gramática Tradutora (GT); sua definição formal.
    • Resolução do Exemplo1: desenho de uma Linguagem e escrita da respectiva Gramática com variantes (ver aqui Exemplos-de-Frases e GT).

25 de Outubro de 2010 (aula dada pelo prof. Eric Van Wyk)

  • 3. Introdução (prática/pragmática) o conceito de Gramática de Atributos (GA)para especificar a semântica estática e dinâmica de uma linguagem.
    • Introdução ao Gerador de Processadores de Linguagens baseado em GAs Silver.
    • Exemplo1 (Gramática Genea para definir uma Linguagem para Genealogia e Demografia): desenho de uma Linguagem e escrita da respectiva Gramática com variantes.


GUIÃO DA AULA:

Attribute Grammars (AGs):

- support Semantic Analysis specifications;

- as opposed to Translation Grammars, TG (as those supported by Yacc and other parser generators) that are primarily used for syntactic analysis, although can describe some limited semantic work, AGs are more general and more powerful.


Main phases of a Compiler or Translator:

Syntactic Analysis

- scanning and parsing

- verify or determine the syntactic structure of the program/expression

- generate a tree representing this structure

Semantic Analysis

- compute concrete values and types for variables and expressions

- non-syntactic checks - semantic constraints:

* are all variables in a program declared ?

* are all expressions type correct ?

- report the errors

- report on some characteristics of the program

Optimization

- rewrite the program into a more efficient form

Code Generation

- generate a translation to another language


AGs

- are really for semantic analysis, but can be useful for other tasks as well.

- aim is to decorate the syntax tree with attributes describing the semantics

- think of each node in a syntax tree as an object; we want to compute values for fields (attributes) on these objects such as "type", "isCorrect", "errors", etc.

Yacc semantic actions give us a single unnamed, untyped attribute

Silver is a research prototype AG system developed by my group at Minnesota.

An AG is a CFG with

- set of attributes; attributes have a name and a type

- occurrence relation - what attributes appear on what nonterminals

- defining equations - for computing the value of those attributes


Example 1


Consider a familiar example, the Genealogia language introduced in the previous lessons.

- show Silver code for Genealogia (no attributes, only parsing)

- show what errors look like in Silver specs - parse errors, binding errors, type errors ...

Consider also the following valid sentence of Genealogia language:

      ( "Joe" "Smith" M 1955, "Beth" "Johnson" F 1957 )

      ( "Jane" "Martin" F 1940, "Sam" "Smith" M 1935 )
         {
            "Mike" M 1965,  "Betty" F 1967
         }

      ( "Marvin" "Van Wyk" M 1945, "Lois" "Ter Louw" F 1945 )
         {
            "Eric" M 1967, 
            "Kevin" M 1970,
            "Stacie" F 1971
          }
Next, add report attribute

- only one synthesized attribute:

synthesized attribute report :: String occurs on Geneology, Families, Family,....

- print simple report

- the solution (more verbose than the Yacc solution, but much more fomal and clear) is split into the following files: Geneology.sv + Person.sv + Children.sv + Terminals.sv and Main.sv plus silver-compile .


Example 2


Count the number of children and add it the part of the report generated on the parents

- add one more synthesized attribute:

synthesized attribute numChildren :: Integer occurs on ChildList;

- then the solution is obtained just changing the following file: Children.sv

Exercise (Example 3)

- use the birth data associated with each child, and compute the year of oldest child's birth "First child born in ..." - if any children.

- the solution developed by one student, composed by the following files: Geneology.sv + Person.sv + Children.sv .


Example 4


Semantic constraints can be specified as Boolean attributes, or a "list of errors" attribute

Compute "isCorrect :: Boolean" to check that oldest child born at least 15years before the youngest parent.

- now some more synthesized attributes must be added:

synthesized attribute isCorrect::Boolean occurs on Geneology, Families, Family ;

synthesized attribute youngestBirthYear:: Integer occurs on Parent, Parents ;

synthesized attribute year::Integer occurs on Year ;

synthesized attribute oldestBirthYear :: Integer occurs on ChildList, Children ;

synthesized attribute birthYear :: Integer occurs on Child ;

- then the solution is obtained changing the following file: Geneology.sv + Person.sv + Children.sv

Exercise (Example 5)

- resulting error message is not so good. Instead replace isCorrect with errors :: String


Example 6


Inherited attributes, the way to make contextual information accessible after or before the substring where it appears avoiding any global variable.

- Evolve the previous grammar because the resulting error message is still not as good as it could be. Maybe we'd like a message of the form "Child X born in Y after parents born in Z"

- pass down age of youngest parent (plus 15years) as an inherited attribute

- generate the error message, arguably, at the point in which the error occurs.

- now an inherited attribute must be defined and some additional synthesized attributes must be added:

inherited attribute earliestPossibleBirthYear::Integer occurs on Children, ChildList, Child ;

synthesized attribute errors::String occurs on Geneology, Families, Family, Children, ChildList, Child ;

synthesized attribute youngestBirthYear::Integer occurs on Parent, Parents ;

attribute birthYear::Integer occurs on Child ;

- then the solution is obtained changing the following file: Geneology.sv + Children.sv and Main.sv

Exercise (Example 7)

- add an inherited attribute "currentYear" - set it at the root and pass it down to all children so that we can compute the child ages and put them into the report.

- the solution developed by one student, composed by the following files: Geneology.sv + Person.sv + Children.sv + Terminals.sv and Main.sv plus Sample source-text


08 de Novembro de 2010

  • 3. Definição formal de Gramática de Atributos (GA) para especificar a semântica estática e dinâmica de uma linguagem (consolidação teórica da introdução prática da última aula).

15 de Novembro de 2010

  • Continuação da introdução às GA, às árvores de sintaxe abstrata (AST) e à ferramenta Silver (fazer aqui o download da versão mais recente: SilverNov2010), agora com um novo exemplo para criar uma calculadora de expressões "dc -- desktop calculator language".


GUIÃO DA AULA:

A simple arithmetic expression language.


Consider the Silver specification for "dc" (directory grammars/tutorials/dc ans subdirectory bin).

1. The concrete syntax in Expr.sv (respective terminal symbols in TerminalsDC.sv) ensures that operator precedence and associativity is preserved. Notice that this Expr.sv version already includes the extension proposed to the students as an working example during the class -- DC Expr now support Logical (and, or, not) and Relational Operators (at moment, jut Equal)

2. A higher order attribute, ast_Expr, is used to compute a tree using the abstract productions. On this, we compute the value of the expression since the grammar is simpler. See again Expr.sv and also the functions defined in DC.sv

3. In BetterPP.sv we see the use of inherited attributes. These are passed down the tree and used to determine when parenthesis need to be used.

To obtain a Compiler and use it, the common files Main.sv and silver-compile are also developed and included in the directory.


22 de Novembro de 2010

  • Não dei aula por estar na Universidade Nacional de SanLuis, Argentina, no contexto da visita anual do projecto de cooperação bilateral Quixote (aula dada por JJ, a compensar ainda em dezembro).

29 de Novembro de 2010

  • Não dei aula por estar na Universidade Nacional de SanLuis, Argentina, no contexto da visita anual do projecto de cooperação bilateral Quixote (aula dada por JJ, a compensar ainda em dezembro).

06 de Dezembro de 2010

  • Introdução ao tópico Qualidade de Linguagens
    • Enquadramento do tema e justificação da sua necessidade enquanto propósito geral da engenharia aquando do desenvolvimento de um novo produto;
    • Caracterização do produto em causa: protocolo de comunicação para um Emissor transmitir a um Recetor determinada informação no sentido de obter uma resposta/reação do Receptor após processar a mensagem (frase da linguagem);
    • Identificação dos Critérios que permitem definir qualidade de uma linguagem: Legibilidade (aprendizagem, escrita e compreensão) e Eficácia;
    • Factores que tem impacto nos critérios de qualidade -- a identificar e caracterizar na proxima aula;
    • Identificação dos factores que determinam a aceitação de uma linguagem: cultura/experiência anterior; disponibilidade do processador e da documentação; dimensão e envergadura do ambiente de desenvolvimento.

13 de Dezembro de 2010

  • Esta aula foi totalmente aproveitada para os Grupos fazerem a apresentação (1ªfase) do Projecto Integrado.

03 de Janeiro de 2011

  • Continuação da introdução às GA, às árvores de sintaxe abstrata (AST) e à ferramenta Silver (fazer aqui o download da versão mais recente Silver-0.3.1: http://melt.cs.umn.edu/silver/downloads.html), agora com um novo exemplo para desenvolver um compilador para a linguagem de programação "simple".

10 de Janeiro de 2011

  • Esta aula foi aproveitada para os Grupos fazerem a apresentação (1ªfase/2ªetape - demo) do Projecto Integrado.

17 de Janeiro de 2011

Continuação do estudo do tópico Qualidade de Linguagens

  • Revisão dos Critérios que permitem definir qualidade de uma linguagem: Legibilidade (aprendizagem, escrita e compreensão) e Eficácia;

  • Razões para se estudar uma Linguagem de Programação de segundo Sebesta:
    • Aumentar a capacidade de exprimir ideias por escrito;
    • Aumentar a sabedoria para fazer uma boa escolha da LP a usar num caso concreto;
    • Aumentar a capacidade de aprender novas linguagens;
    • Aumentar a percepção sobre a importância da implementação;
    • Melhorar a compreensão sobre todo o domínio da programação;

  • Classificação das Linguagens de Programação:
    • Quanto à cronologia e grau de abstracção (1ª, 2ª, 3ª e 4ª gerações)
    • Quanto ao estilo do processamento (compilada/interpretada)
    • Quanto ao estilo de programação (imperativa/declarativa)
    • Quanto à forma de organizar código (monolítica/modular)
    • Quanto à forma de execução (sequencial/concorrente)
    • Quanto ao sistema de tipos (fracamente/fortemente tipadas)
    • Quanto à forma de expressão (textuais/visuais)
    • Quanto à abrangência (domínio geral, GPL/específico, DSL)


* 2º SEMESTRE ***

21 de Fevereiro de 2011

Continuação do estudo do tópico Qualidade de Linguagens

  • Etudo das Características que influenciam os Critérios que permitem definir qualidade de uma linguagem:
    • Expressividade; Clareza e Abstração

28 Fevereiro 2011

Continuação do estudo do tópico Qualidade de Linguagens

  • Estudo das Características que influenciam os Critérios que permitem definir qualidade de uma linguagem:
    • Expressividade; Clareza e Abstração

Tabela que relaciona as Carateristicas da Linguagem com os Critérios de Qualidade:

Característica Aprendizagem Escrita Compreensao Reconhecimento
Expressividade + + + -

Tabela que compara várias Linguagens de Programação, segundo as Caraterísticas Identificadas

Característica Assembly Fortran Basic Pascal C Prolog ML C# Perl Ruby PHP SQL
CL1-Expressividade nS s nS B B- s B MB B- B- B MB
CL2-Documentação
CL3-Unicidade
CL4-Consistência
CL5-Extensibilidade
CL6-Escalabilidade
CL7-Paradigma
CL8-Fiabilidade

nS - não Satisfaz, B - Bom, S - Satisfaz

07 de Março de 2011

  • Não houve aula --- 2ªf de Entrudo.

14 de Março de 2011

  • Esta aula foi aproveitada para os Grupos fazerem a apresentação (2ªfase/1ªetape) do Projecto Integrado.

21 Março 2011

Continuação do estudo do tópico Qualidade de Linguagens

  • Estudo das Características que influenciam os Critérios que permitem definir qualidade de uma linguagem:
    • Expressividade; Clareza e Abstração
    • Documentação (comentários de linha e bloco, anotações para manuais e meta-informação);
    • Unicidade (singularidade de formas para expressar a mesma coisa).

Tabela que relaciona as Carateristicas da Linguagem com os Critérios de Qualidade:

Característica Aprendizagem Escrita Compreensão Reconhecimento
Expressividade ++ ++ + -
Documentação - - ++ X
Unicidade + - + +

Tabela que compara várias Linguagens de Programação, segundo as Caraterísticas Identificadas

Característica Assembly Fortran Basic Pascal C Prolog ML C# Perl Ruby PHP SQL
CL1-Expressividade nS s nS B B- s B MB B- B- B MB
CL2-Documentação s s s s S s s MB B S S S
CL3-Unicidade nS S S nS NS S S nS NS NS NS B
CL4-Consistência
CL5-Extensibilidade
CL6-Escalabilidade
CL7-Paradigma
CL8-Fiabilidade

nS - não Satisfaz, B - Bom, S - Satisfaz

28 Março 2011

Continuação do estudo do tópico Qualidade de Linguagens

  • Estudo das Características que influenciam os Critérios que permitem definir qualidade de uma linguagem:
    • Consistência
    • Escalabilidade

Tabela que relaciona as Carateristicas da Linguagem com os Critérios de Qualidade:

Característica Aprendizagem Escrita Compreensão Reconhecimento
Expressividade ++ ++ + -
Documentação - - ++ X
Unicidade + - + +
Consistência ++ + + X
Extensibilidade        
Escalabilidade X X X X

Tabela que compara várias Linguagens de Programação, segundo as Caraterísticas Identificadas

Característica Assembly Fortran Basic Pascal C Prolog ML C# Perl Ruby PHP SQL
CL1-Expressividade nS s nS B B- s B MB B- B- B MB
CL2-Documentação s s s s S s s MB B S S S
CL3-Unicidade nS S S nS NS S S nS NS NS NS B
CL4-Consistência S S s B s B B B NS NS NS B
CL5-Extensibilidade
CL6-Escalabilidade nS S nS S B S S B B S B B
CL7-Paradigma
CL8-Fiabilidade

nS - não Satisfaz, B - Bom, S - Satisfaz

4 Abril 2011

Discussão do processo de avaliação; ponto de situação.

Abertura de uma discussão/investigação alargada sobre o processo de Avaliação de Qualidade e Métricas em Engenharia:

  • Receção das monografias escritas pelos alunos sobre métricas em geral, métricas em linguagens de modelação (UML) e gramáticas; apreciação geral e definição dos desenvolvimentos futuros --- ver relatórios escritos inseridos na parte final do item "Questões, Fichas Práticas e Notas" da página deste módulo.

Continuação do estudo do tópico Qualidade de Linguagens

  • Estudo das Características que influenciam os Critérios que permitem definir qualidade de uma linguagem:
    • Extensibilidade léxica, sintática e semântica.
    • Modularidade

Tabela que relaciona as Carateristicas da Linguagem com os Critérios de Qualidade:

Característica Aprendizagem Escrita Compreensão Reconhecimento
Expressividade ++ ++ + -
Documentação - - ++ X
Unicidade + - + +
Consistência ++ + + X
Extensibilidade - ++ ? -
Escalabilidade X X X X
Modularidade x ++ + X
Fiabilidade        

Tabela que compara várias Linguagens de Programação, segundo as Caraterísticas Identificadas

Característica Assembly Fortran Basic Pascal C Prolog ML C# Perl Ruby PHP SQL
CL1-Expressividade nS s nS B B- s B MB B- B- B MB
CL2-Documentação s s s s S s s MB B S S S
CL3-Unicidade nS S S nS NS S S nS NS NS NS B
CL4-Consistência S S s B s B B B NS NS NS B
CL5-Extensibilidade s s s S B S S B B B S s
CL6-Escalabilidade nS S nS S B S S B B S B B
CL7-Modularidade nS nS nS S s nS S B B B S nS
CL8-Fiabilidade

nS - não Satisfaz, B - Bom, S - Satisfaz

11 Abril 2011

Continuação do estudo do tópico Qualidade de Linguagens

  • Estudo das Características que influenciam os Critérios que permitem definir qualidade de uma linguagem:
    • Fiabilidade: type-checking; verificação dinâmica de limites; error-handling

Tabela que relaciona as Carateristicas da Linguagem com os Critérios de Qualidade:

Característica Aprendizagem Escrita Compreensão Reconhecimento
Expressividade ++ ++ + -
Documentação - - ++ X
Unicidade + - + +
Consistência ++ + + X
Extensibilidade - ++ ? -
Escalabilidade X X X X
Modularidade X ++ + X
Fiabilidade x + X -

Tabela que compara várias Linguagens de Programação, segundo as Caraterísticas Identificadas

Característica Assembly Fortran Basic Pascal C Prolog ML C# Perl Ruby PHP SQL
CL1-Expressividade nS s nS B B- s B MB B- B- B MB
CL2-Documentação s s s s S s s MB B S S S
CL3-Unicidade nS S S nS NS S S nS NS NS NS B
CL4-Consistência S S s B s B B B NS NS NS B
CL5-Extensibilidade s s s S B S S B B B S s
CL6-Escalabilidade nS S nS S B S S B B S B B
CL7-Modularidade nS nS nS S s nS S B B B S nS
CL8-Fiabilidade S B S B nS nS B B nS nS nS B

nS - não Satisfaz, B - Bom, S - Satisfaz

18 Abril 2011

Não houve aula: férias de Páscoa.

25 Abril 2011

Não houve aula: feriado nacional para comemorar a Revolução dos Cravos.

02 Maio 2011

Introdução do estudo do tópico Qualidade de Gramáticas

  • Apresentação dos Critérios que permitem definir qualidade de uma linguagem -- Compreensão, Derivação e Manutenção; Eficiência no Processamento e na Geração -- tendo em consideração o duplo papel de uma Gramática (GIC e GA): especificação formal de uma linguagem (para ser consumida por um Ser Humano que vai escrever frases nessa linguagem); e especificação formal de um programa/processador (para ser consumida por um Gerador).

Discussão do estado do artigo coletivo sobre Métricas para Avaliação de Qualidade de Especificações / Modelos.

09 Maio 2011

Introdução do estudo do tópico Qualidade de Gramáticas

  • Apresentaçãoos Critérios que permitem definir a qualidade de uma linguagem -- Compreensão, Derivação e Manutenção; Eficiência no Processamento e na Geração -- tendo em consideração o duplo papel de uma Gramática (GIC e GA): especificação formal de uma linguagem (para ser consumida por um Ser Humano que vai escrever frases nessa linguagem); e especificação formal de um programa/processador (para ser consumida por um Gerador).

  • Apresentação dos Factores que mais influenciam Critérios introduzidos na última aula para definir a qualidade de uma linguagem: número de símbolos e de produções; clareza dos identificadores dos símbolos; número de produções unitárias; comprimentos dos lados esquerdos das produções; notação usada (pure/extended BNF); esquema de recursividade; modularidade; e complexidade sintática.

16 Maio 2011

Palestra sobre Gramáticas de Atributos e Geradores de Compiladores dada pelo Prof. Eric van Wik:

  • Extensão de GA com novo símbolos e produções; forma de lida com a extensão durante a geração.

Estudo do tópico Qualidade de Gramáticas e Métricas

  • Apresentação das Métricas de Tamanho, de Forma e Lexicográficas relacionadas com os Factores que mais influenciam os Critérios de Qualidade de uma Gramática.

Discussão do estado do artigo coletivo sobre Métricas para Avaliação de Qualidade de Especificações / Modelos.

23 Maio 2011

Estudo do tópico Qualidade de Gramáticas e Métricas

  • Revisão das Métricas de Tamanho, de Forma e Lexicográficas relacionadas com os Factores que mais influenciam os Critérios de Qualidade de uma Gramática.
  • Resolução de vários exercícios sobre calculo de Métricas aplicadas a diferentes GIC (com base nos exercícios da edição 2009/2010).

Discussão do estado do artigo coletivo sobre Métricas para Avaliação de Qualidade de Especificações / Modelos.

30 Maio 2011

Manhã totalmente dedicada ao projeto integrado (PI).

06 de Junho 2011

Conclusão do Ano Letivo relativo ao Módulo de EG.

Fecho do tópico Qualidade de Gramáticas e Métricas

  • Balanço sobre as Métricas de Tamanho, de Forma e Lexicográficas relacionadas com os Factores que mais influenciam os Critérios de Qualidade de uma Gramática através da resolução e discussão do exercício 5 de transformação e cálculo de métricas de uma dada GIC (da edição 2009/2010).

Discussão do estado do artigo coletivo sobre Métricas para Avaliação de Qualidade de Especificações / Modelos.

13 de Junho 2011

  • Manhã parcialmente dedicada ao fecho de ATS e ao projeto integrado (PI).

Submissão do artigo coletivo sobre Métricas para Avaliação de Qualidade de Especificações / Modelos UML (paper CoRTA2011)

SumariosPED09 04 Nov 2009 - 07:37 - r3 PedroRangelHenriques

Engenharia de Linguagens (2009/2010)

Processamento Estruturado de Documentos

Sumários

28 de Setembro de 2009

  • Apresentação do Módulo de PED:
    • 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 Estruturado de Documentos.

12 Outubro de 2009

  • I - Introdução ao XML
    • Representação de informação (muito ou pouco estruturada)
    • Noção de documento bem-formado
    • Noção de documento válido
    • Instalação de um editor grátis de XML "http://sourceforge.net/projects/xml-copy-editor"
    • Instalação de um editor não grátis de XML Oxygen

    • Exercício anárquico para chegar à necessidade de um DTD ou Schema *1) Escrever um livro de receitas *2) Criar um DTD para o livro de receitas

  • II - XPath
    • Extrair informação dos documentos
    • Exercício com o Arquivo Sonoro de Ernesto Veiga de Oliveira
    • Utilização dos editores
      • Utilização do Saxon na linha de comandos
         $ java -cp /usr/share/java/saxonb.jar net.sf.saxon.Query -s arq-son-EVO.xml jesus.xq
         ou
         $ saxonb-xquery -s arq-son-EVO.xml jesus.xq

  • III - Incluir XML no LaTeX
    • Escrita do sumário da aula, incluindo o XML dos dois exercícios realizados.
    • Utilização dos módulos: url; listings; graphicx; hyperref

19 de Outubro de 2009

  • A aula foi usada para avançar com o Projecto integrado.

26 de Outubro de 2009

  • A aula foi usada para avançar com o Projecto integrado.

02 de Novembro de 2009 (aula dada por PRH)

  • Linguagens de Anotação de Documentos:
    • a noção de texto semi-estruturado por contra-ponto com texto completamente estruturado (frases de uma linguagem formal) e texto não-estruturado (frases de uma linguagem natural);
    • os princípos por trás da anotação de documentos; um pouco de histórica -- as linguagens de anotação LaTeX, SGML, HTML e XML;
    • análise de exemplos concretos de documentos históricos e sua interpretação -- a definição de marcas que explicitem a forma de interpretar diversos termos (simples e compostos);
    • o princípio básico de separar a anotação do seu processamento.

  • A Linguagem de Anotação XML:
    • XML como uma meta-linguagem para definir linguagens de anotação -- os dialectos XML e dos DTDs;
    • XML como a linguagem franca ou o esperanto dos Sistemas de Informação -- interoperabilidade entre bases de dados e outras aplicações.

  • Sistemas de Produção:
    • as 3 componentes básicas: base de regras de reacção "condição/acção" + base de factos + motor de produção;
    • conceitos e exemplos (Prolog, Lex/Flex, Awk, Perl, XSL).

  • Enunciado de um Trabalho Prático para a próxima aula -- verna rúbrica "Questões, Fichas Práticas e Notas"


SumariosPED10 29 Nov 2010 - 09:22 - NEW JorgeGustavo

Engenharia de Linguagens

TITLE


SumariosPLN09 02 Nov 2009 - 13:58 - r3 JoseJoao

Engenharia de Linguagens

Sumários

28 de Setembro de 2009

  • Apresentação geral do módulo

12 Outubro de 2009

  • Alguns conceitos gerais acerca de linguagem natural
    • níveis fonéticos, léxicos, morfológicos, sintáctico, semântico e pragmático
    • semântica forte vs semântica fraca
    • eficiência comunicativa e estruturas escondidas (iceberg semântico)

  • Introdução as Perl
    • introdução filosófica, base linguística do Perl
    • variáveis atómicas, listas, mappings e algumas funções associadas
    • funções de coerção e sua relação com linguagem natural

19 Outubro de 2009

  • Exercícios de Perl -- ajuda à construção dum ambiente
    • dicionário de design-patterns
  • Introdução às expressões-regulares

26 Outubro de 2009

  • Expressões regulares (continuação)
    • Procura de Nomes Próprios em textos

  • Noção de precision recall

2 Novembro de 2009

  • Procura de Entidades mensionadas
  • Algebra de multi-sets

9 Novembro de 2009


SumariosProjecto 18 Oct 2010 - 09:11 - r9 PedroRangelHenriques

Engenharia de Linguagens (2009/2010)

Projecto Integrado

Sumários

28 de Setembro de 2009

  • Apresentação geral do projecto

12 de Outubro de 2009

  • Apresentação detalhada do projecto
  • Discussão de estratégias para iniciar o seu desenvolvimento
  • Exercício: documentar e desenvover em literate programming uma script para a extrair o conteúdo de um qualquer pacote de software

19 de Outubro de 2009 (a aula realizou-se das 16:00 às 18:30)

  • Continuação da realização individual do exercício proposto na aula anterior.
  • Entrega do exercício através da submissão do ficheiro literate programming.

26 de Outubro de 2009 (a aula realizou-se das 8:00 às 10:30)

  • Aula de acompanhamento do projecto: análise da estrutura de ficheiros e directorias de um pacote de software.
  • Alunos presentes: 49319, pg15127, pg15545, pg? (josé) , pg15973, pg12004, 47085, pg16046, pg15954, pg13368

2 de Novembro de 2009

  • Breve apresentação da linguagem de domínio específico (DSL) BibTeX: uma linguagem para bases de dados bibliográgficas. A sua relação com o sistema LaTeX.

9 de Novembro de 2009

  • Acompanhamento do desenvolvimento do projecto.
  • Objectivos da apresentação que os grupos de trabalho farão a 7 de Dezembro.

16 de Novembro de 2009

  • Acompanhamento do desenvolvimento do projecto.

23 de Novembro de 2009

  • Acompanhamento do desenvolvimento do projecto.

30 de Novembro de 2009

  • Acompanhamento do desenvolvimento do projecto.
  • Apresentação de uma lista de aspectos do projecto que serão analisados na apresentação da semana seguinte

7 de Dezembro de 2009 ( as apresentações realizamram-se das 9:30 às 12:00)

  • Apresentação pelos 4 grupos da 1ª fase do projecto integrado.

14 de Dezembro de 2009

  • Breve comentário sobre a apresentação e relatório de cada grupo
  • Sugestão de uma nota a cada grupo sobre o estado do projecto nesta altura.

4 de Janeiro de 2009

  • Acompanhamento do desenvolvimento do projecto.

11 de Janeiro de 2009

  • Acompanhamento do desenvolvimento do projecto.
  • Breve discussão sobre técnicas genéricas de parsing.

18 de Janeiro de 2010

  • Acompanhamento do desenvolvimento do projecto.

25 de Janeiro de 2010

  • Apresentação dos objectivos a atingir na 2a fase do projecto integrado para cada um dos módulos da UCE.


SumariosProjecto10 11 Nov 2010 - 10:29 - r2 JoaoSaraiva

Engenharia de Linguagens (2010/2011)

Projecto Integrado

Sumários

27 de Setembro de 2010

  • Apresentação geral do projecto

4 de Outubro

  • Continuação da apresentação do projecto e suas etapas.
  • Definição de datas de aprentação e avaliação intercalares.

11 de Outubro

  • Não houve aula (participação na conf. em Eindhoven)

18 de Outubro

  • Palestras do Prof. Dr. Janis Voigtlaender sobre "Semantic Bidirectionalization" e "Type-based Program Reasoning", no contexto do programa doutoral MAP-i.
  • Estas palestras tiveram a duração de 3 horas, compensando assim a aula não leccionada na semana anterior.

25 de Outubro

  • Discussão com os alunos do projecto e possíveis abordagens a seguir e sistemas de software a utilizar.

1 de Novembro

  • Não houve aula: feriado

8 de Novembro

  • Continuação da análise das sub-tarefas envolvidas no projecto integrado.
  • Um sistema para definição e travessia de ASTs na linguagem C


WebAtom 24 Jan 2006 - 06:07 - r2 TWikiContributor
TWiki's Education/EL1011 web The Education/EL1011 web of TWiki. TWiki is a Web-Based Collaboration Platform for the Enterprise. http://wiki.di.uminho.pt/twiki/bin/view/Education/EL1011 Copyright 2020 by contributing authors 2011-10-02T22:36:16Z AlunosGrupos10 http://wiki.di.uminho.pt/twiki/bin/view/Education/EL1011/AlunosGrupos10 2011-10-02T22:36:16Z Engenharia de Linguagens (2010/11) Alunos/Grupos Gr Nome Email 4 André Manuel Pereira Pedra da Cruz Lopes andre.pclopes at gmail dot com 4 Bruno ... (last changed by PedroRangelHenriques) PedroRangelHenriques Horario10 http://wiki.di.uminho.pt/twiki/bin/view/Education/EL1011/Horario10 2011-10-02T22:33:29Z Engenharia de Linguagens (2010/2011) Horário Anual (1º 2º Semestres) 08h00 10h00 Módulo I Engenharia Gramatical 10h00 ... (last changed by PedroRangelHenriques) PedroRangelHenriques SumariosEG10 http://wiki.di.uminho.pt/twiki/bin/view/Education/EL1011/SumariosEG10 2011-09-17T23:42:05Z Engenharia de Linguagens (2010/2011) Engenharia Gramatical Sumários 27 de Setembro de 2010 1. Apresentação da UCE30 EL e em particular do Módulo de EG e ATS ... (last changed by PedroRangelHenriques) PedroRangelHenriques WebHome http://wiki.di.uminho.pt/twiki/bin/view/Education/EL1011/WebHome 2011-09-05T14:31:00Z Unidade Curricular de Especialização Engenharia de Linguagens (2010/2011) Responsável pela UCE: Rangel Henriques Propostas de Dissertação para 2011 ... (last changed by PedroRangelHenriques) PedroRangelHenriques ProgramaATS10 http://wiki.di.uminho.pt/twiki/bin/view/Education/EL1011/ProgramaATS10 2011-09-03T15:29:44Z Engenharia de Linguagens (2010/2011) Análise e Transformação de Software Programa Resumido Análise de programas: Extracção de dados Armazenamento ... (last changed by PedroRangelHenriques) PedroRangelHenriques ProgramaEG10 http://wiki.di.uminho.pt/twiki/bin/view/Education/EL1011/ProgramaEG10 2011-09-03T14:49:02Z Engenharia de Linguagens (2010/2011) Engenharia Gramatical Programa Resumido 1.Linguagens e Gramáticas; Caracterização destes conceitos e domínios do saber ... (last changed by PedroRangelHenriques) PedroRangelHenriques SumariosATS10 http://wiki.di.uminho.pt/twiki/bin/view/Education/EL1011/SumariosATS10 2011-06-19T05:38:30Z Engenharia de Linguagens (2010/11) Análise e Transformação de Software Sumários 27 de Setembro de 2010 A. Apresentação da disciplina I.1 Introdução ... (last changed by PedroRangelHenriques) PedroRangelHenriques SumariosATS09 http://wiki.di.uminho.pt/twiki/bin/view/Education/EL1011/SumariosATS09 2011-05-27T21:52:54Z Engenharia de Linguagens (2009/10) Análise e Transformação de Software Sumários 31 Maio de 2010 Apresentação do Laboratório online !GamaSlicer para verifica ... (last changed by PedroRangelHenriques) PedroRangelHenriques FichasEG10 http://wiki.di.uminho.pt/twiki/bin/view/Education/EL1011/FichasEG10 2011-04-04T22:44:05Z Engenharia de Linguagens (2010/11) Engenharia Gramatical Exercícios e Exemplos para as aulas Exemplo 1: Para apoio a um projecto de Genealogia pretende se que ... (last changed by PedroRangelHenriques) PedroRangelHenriques SumariosPED10 http://wiki.di.uminho.pt/twiki/bin/view/Education/EL1011/SumariosPED10 2010-11-29T09:22:20Z Engenharia de Linguagens TITLE (last changed by JorgeGustavo) JorgeGustavo SumariosProjecto10 http://wiki.di.uminho.pt/twiki/bin/view/Education/EL1011/SumariosProjecto10 2010-11-11T10:29:14Z Engenharia de Linguagens (2010/2011) Projecto Integrado Sumários 27 de Setembro de 2010 Apresentação geral do projecto 4 de Outubro Continuação da ... (last changed by JoaoSaraiva) JoaoSaraiva AlunosGrupos09 http://wiki.di.uminho.pt/twiki/bin/view/Education/EL1011/AlunosGrupos09 2010-10-23T08:15:32Z Engenharia de Linguagens (2009/10) Alunos/Grupos 4 Andre da Silva Rocha 2 André Fernandes dos Santos 1 Daniel Carvalho da Rocha 3 Hélder de ... (last changed by PedroRangelHenriques) PedroRangelHenriques MetodoAvaliacao http://wiki.di.uminho.pt/twiki/bin/view/Education/EL1011/MetodoAvaliacao 2010-10-23T08:13:59Z Engenharia de Linguagens (2010/2011) Método de Avaliação A avaliação da UCE de Engenharia de Linguagens é calculada pela seguinte fórmula: NF 15% PED 15% EG ... (last changed by PedroRangelHenriques) PedroRangelHenriques SumariosProjecto http://wiki.di.uminho.pt/twiki/bin/view/Education/EL1011/SumariosProjecto 2010-10-18T09:11:25Z Engenharia de Linguagens (2009/2010) Projecto Integrado Sumários 28 de Setembro de 2009 Apresentação geral do projecto 12 de Outubro de 2009 Apresenta ... (last changed by PedroRangelHenriques) PedroRangelHenriques ObjectivosProjecto http://wiki.di.uminho.pt/twiki/bin/view/Education/EL1011/ObjectivosProjecto 2010-10-18T09:09:57Z Engenharia de Linguagens (2009/2010) Projecto Integrado Objectivos Gerais para a 1ª Fase: Sistema: Criar a base do sistema FOSSAT para receber e analisar ... (last changed by PedroRangelHenriques) PedroRangelHenriques ObjectivosProjecto10 http://wiki.di.uminho.pt/twiki/bin/view/Education/EL1011/ObjectivosProjecto10 2010-10-18T08:52:41Z Engenharia de Linguagens (2010/2011) Projecto Integrado Objectivos Gerais: Sistema: Criar ..... Documentação Relatório de Desenvolvimento ... (last changed by PedroRangelHenriques) PedroRangelHenriques
WebChanges 15 Nov 2006 - 19:43 - r3 TWikiContributor

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

AlunosGrupos10 02 Oct 2011 - 22:36 - r8 PedroRangelHenriques
Engenharia de Linguagens (2010/11) Alunos/Grupos Gr Nome Email 4 André Manuel Pereira Pedra da Cruz Lopes andre.pclopes at gmail dot com 4 Bruno ...
Horario10 02 Oct 2011 - 22:33 - r3 PedroRangelHenriques
Engenharia de Linguagens (2010/2011) Horário Anual (1º 2º Semestres) 08h00 10h00 Módulo I Engenharia Gramatical 10h00 ...
SumariosEG10 17 Sep 2011 - 23:42 - r37 PedroRangelHenriques
Engenharia de Linguagens (2010/2011) Engenharia Gramatical Sumários 27 de Setembro de 2010 1. Apresentação da UCE30 EL e em particular do Módulo de EG e ATS ...
WebHome 05 Sep 2011 - 14:31 - r44 PedroRangelHenriques
Unidade Curricular de Especialização Engenharia de Linguagens (2010/2011) Responsável pela UCE: Rangel Henriques Propostas de Dissertação para 2011 ...
ProgramaATS10 03 Sep 2011 - 15:29 - r3 PedroRangelHenriques
Engenharia de Linguagens (2010/2011) Análise e Transformação de Software Programa Resumido Análise de programas: Extracção de dados Armazenamento ...
ProgramaEG10 03 Sep 2011 - 14:49 - r3 PedroRangelHenriques
Engenharia de Linguagens (2010/2011) Engenharia Gramatical Programa Resumido 1.Linguagens e Gramáticas; Caracterização destes conceitos e domínios do saber ...
SumariosATS10 19 Jun 2011 - 05:38 - r26 PedroRangelHenriques
Engenharia de Linguagens (2010/11) Análise e Transformação de Software Sumários 27 de Setembro de 2010 A. Apresentação da disciplina I.1 Introdução ...
SumariosATS09 27 May 2011 - 21:52 - r36 PedroRangelHenriques
Engenharia de Linguagens (2009/10) Análise e Transformação de Software Sumários 31 Maio de 2010 Apresentação do Laboratório online !GamaSlicer para verifica ...
FichasEG10 04 Apr 2011 - 22:44 - r13 PedroRangelHenriques
Engenharia de Linguagens (2010/11) Engenharia Gramatical Exercícios e Exemplos para as aulas Exemplo 1: Para apoio a um projecto de Genealogia pretende se que ...
SumariosPED10 29 Nov 2010 - 09:22 - NEW JorgeGustavo
Engenharia de Linguagens TITLE
SumariosProjecto10 11 Nov 2010 - 10:29 - r2 JoaoSaraiva
Engenharia de Linguagens (2010/2011) Projecto Integrado Sumários 27 de Setembro de 2010 Apresentação geral do projecto 4 de Outubro Continuação da ...
AlunosGrupos09 23 Oct 2010 - 08:15 - r7 PedroRangelHenriques
Engenharia de Linguagens (2009/10) Alunos/Grupos 4 Andre da Silva Rocha 2 André Fernandes dos Santos 1 Daniel Carvalho da Rocha 3 Hélder de ...
MetodoAvaliacao 23 Oct 2010 - 08:13 - r8 PedroRangelHenriques
Engenharia de Linguagens (2010/2011) Método de Avaliação A avaliação da UCE de Engenharia de Linguagens é calculada pela seguinte fórmula: NF 15% PED 15% EG ...
SumariosProjecto 18 Oct 2010 - 09:11 - r9 PedroRangelHenriques
Engenharia de Linguagens (2009/2010) Projecto Integrado Sumários 28 de Setembro de 2009 Apresentação geral do projecto 12 de Outubro de 2009 Apresenta ...
ObjectivosProjecto 18 Oct 2010 - 09:09 - r5 PedroRangelHenriques
Engenharia de Linguagens (2009/2010) Projecto Integrado Objectivos Gerais para a 1ª Fase: Sistema: Criar a base do sistema FOSSAT para receber e analisar ...
ObjectivosProjecto10 18 Oct 2010 - 08:52 - NEW PedroRangelHenriques
Engenharia de Linguagens (2010/2011) Projecto Integrado Objectivos Gerais: Sistema: Criar ..... Documentação Relatório de Desenvolvimento ...
FichasATS10 18 Oct 2010 - 05:58 - NEW PedroRangelHenriques
Engenharia de Linguagens (2010/11) Análise e Transformação de Software Exemplos para as aulas Notas sobre !AnTLR Configurar CLASSPATH para permitir a invoca ...
FichasATS09 18 Oct 2010 - 05:58 - r11 PedroRangelHenriques
Engenharia de Linguagens (2009/10) Análise e Transformação de Software Exemplos para as aulas Para o seguinte programa: Calcule o backward slicing ...
ProgramaATS09 18 Oct 2010 - 05:51 - r6 PedroRangelHenriques
Engenharia de Linguagens (2009/2010) Análise e Transformação de Software Programa Resumido Análise de programas: Extracção de dados Armazenamento ...
ProgramaEG09 18 Oct 2010 - 05:45 - r7 PedroRangelHenriques
Engenharia de Linguagens (2009/2010) Engenharia Gramatical Programa Resumido 1.Linguagens e Gramáticas; Caracterização destes conceitos e domínios do saber ...
FichasEG09 18 Oct 2010 - 05:43 - r23 PedroRangelHenriques
Engenharia de Linguagens (2009/10) Engenharia Gramatical Exercícios e Exemplos para as aulas Exemplo 5: A gramática independente de contexto GIC5, abaixo apresentada ...
SumariosEG09 18 Oct 2010 - 05:20 - r40 PedroRangelHenriques
Engenharia de Linguagens (2010/2011) Engenharia Gramatical Sumários 31 Maio de 2010 !GraAlEditor, um editor analisador de Gramáticas: Preparação de ...
PrimeiroSemestre 18 Oct 2010 - 04:38 - r7 PedroRangelHenriques
Engenharia de Linguagens (2009/2010) Horário Primeiro Semestre 08h00 10h00 Módulo I Processamento Estruturado de Documentos 10h00 12h00 ...
ResultadosAvaliacao09 29 Jul 2010 - 07:25 - r8 PedroRangelHenriques
Engenharia de Linguagens (2009/2010) Resultados de Avaliação G Nome EL ATS PLN PI PI FINAL ...
FichasPED09 17 May 2010 - 07:50 - r15 JorgeGustavo
Engenharia de Linguagens (2009/2010) Processamento Estruturado de Documentos Alfresco Descarregar a versão Edition Requisitos: Java !MySQL !ImageMagick ...
Agenda2html 23 Nov 2009 - 08:50 - NEW JorgeGustavo
Engenharia de Linguagens TITLE #left { float:left; width:30%; } #right { float:left; width:70%; } ...
SumariosPED09 04 Nov 2009 - 07:37 - r3 PedroRangelHenriques
Engenharia de Linguagens (2009/2010) Processamento Estruturado de Documentos Sumários 28 de Setembro de 2009 Apresentação do Módulo de PED: Apresenta ...
SumariosPLN09 02 Nov 2009 - 13:58 - r3 JoseJoao
Engenharia de Linguagens Sumários 28 de Setembro de 2009 Apresentação geral do módulo 12 Outubro de 2009 Alguns conceitos gerais acerca de linguagem natural ...
ProgramaPLN09 19 Oct 2009 - 10:41 - NEW JoseJoao
Engenharia de Linguagens Scripting no Processamento de Linguagem Natural Programa Resumido Linguagens de scripting: características, objectivos e conceitos ...
WebPreferences 01 Oct 2009 - 08:45 - r19 JoseFaria
Education/EL1011 Web Preferences The following settings are web preferences of the Education/EL1011 web. These preferences overwrite the site level preferences ...
AvaliaçõesPeriódicas 23 Sep 2009 - 10:52 - r7 JoseFaria
Engenharia de Linguagens PI: Avaliações Periódicas G Nome 10Nov 15Dez 1 Miguel Esteves Sat MBom 1 Nuno Correia Sat MBom ...
AG:sumarios 23 Sep 2009 - 10:52 - r9 JoseFaria
Engenharia de Linguagens Projecto Integrado Aulas de Gestão Sumários 6 Outubro 2008 Modo de funcionamento do Projecto Integrado; Apresentação do enunciado ...
FichasEG08 23 Sep 2009 - 10:52 - r27 JoseFaria
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 ...
AlunosGrupos08 23 Sep 2009 - 10:52 - r7 JoseFaria
Engenharia de Linguagens Alunos/Grupos 2008/09 1 Miguel Esteves 1 Nuno Correia 1 Tiago Correia 2 Nuno Veloso 3 Susana Silva ...
ProgramaEG08 23 Sep 2009 - 10:52 - r3 JoseFaria
Engenharia de Linguagens Engenharia Gramatical 2008/09 Programa Resumido O paradigma da Programação baseada em Gramáticas (PG). Conceitos sobre Gramáticas ...
ResultadosAvaliacao 23 Sep 2009 - 10:52 - r9 JoseFaria
Engenharia de Linguagens Resultados de Avaliação G Nome PED EG ATS PLN PI NF 1 Miguel Esteves 19 15 17 ...
BibliografiaSobreScripting 23 Sep 2009 - 10:52 - r7 JoseFaria
Engenharia de Linguagens Bibliografia: Scripting Livros Randal L. Schwartz, Tom Phoenix, brian d foy, Learning Perl , O'Reilly Media Larry Wall, Tom Christiansen ...
AT:sumarios 23 Sep 2009 - 10:52 - r13 JoseFaria
Engenharia de Linguagens Projecto Integrado Aulas Tecnológicas Sumários 29 Setembro 2008 Necessidade de um ambiente de programação eficiente: Editor, linha ...
WebTopicEditTemplate 23 Sep 2009 - 10:52 - r3 JoseFaria
Engenharia de Linguagens TITLE
SegundoSemestre 23 Sep 2009 - 10:52 - r3 JoseFaria
Engenharia de Linguagens Horário Segundo Semestre
SumariosEG08 23 Sep 2009 - 10:52 - r30 JoseFaria
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 ...
WebStatistics 23 Sep 2009 - 10:52 - r64 JoseFaria
Statistics for Education/EL1011 Web Month: Topic views: Topic saves: File uploads: Most popular topic views: Top contributors for topic ...
SumariosATS08 23 Sep 2009 - 10:52 - r14 JoseFaria
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 ...
FichasATS08 23 Sep 2009 - 10:52 - r7 JoseFaria
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 ...
EtapasDoProjecto 23 Sep 2009 - 10:52 - r8 JoseFaria
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 ...
GraphVizEmXP 23 Sep 2009 - 10:52 - r3 JoseFaria
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 ...
ProgramaATS08 23 Sep 2009 - 10:52 - r3 JoseFaria
Engenharia de Linguagens Análise e Transformação de Software Análise de programas: Extracção de dados Armazenamento da informação recolhida ...
A2s2p:sumarios 23 Sep 2009 - 10:52 - r16 JoseFaria
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 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 ...
A2s1p:sumarios 23 Sep 2009 - 10:52 - r3 JoseFaria
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 ...
Found 50 topics.

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

WebHome 05 Sep 2011 - 14:31 - r44 PedroRangelHenriques

Unidade Curricular de Especialização

Engenharia de Linguagens (2010/2011)

  • Propostas de Dissertação para 2011/12
    • Procurar nas Homepages dos Docentes ou Contactar directamente os Docentes (JUL/SET)
    • Ver propostas na lista a publicar pela CDMI em Setembro de 2011

  • Propostas de Dissertação para 2010/11
    • Ver propostas na lista publicada pela CDMI em 2010.set.29 ou
    • Contactar directamente os Docentes

Novidades

  • 2011-06-18 - Ver no último sumário de EG o paper submetido pela Turma ao CoRTA2011 sobre métricas em linguagens de modelação (UML).

  • 2011-07-15 - Avaliação Final (2ºTeste) de EG+ATS (9h), PLN (10h), PED (11h)
  • 2011-06-27 - Avaliação Final do PI

  • 2011-06-20 - Fim da parte lectiva (aulas)
  • 2011-02-21 - COMEÇO 2ºSEMESTRE

  • 2011-01-31 - Avaliação Intermédia (1ºTeste) a: EG+ATS (9h), PLN (10h), PED (11h)

  • 2011-01-28 - FIM 1ºSEMESTRE

  • 2011-01-24 - NÃO HAVERÁ AULAS para reflexão/preparação para os testes

  • 2011-01-10 - 1ª Etape de Avaliação /2ªParte -- DEMO.

  • 2010-12-13 - 1ª Etape de Avaliação do PI.
  • 2010-10-18 - Actualizada a informação base (comum) sobre a UCE
  • 2010-10-15 - Criada a Web para a edição de 2010/2011

Módulos

  • Scripting no Processamento de Linguagem Natural
    • Responsável: José João Almeida
    • Programa, Avaliação e Bibliografia?
    • Sumários?
    • Questões, Fichas Práticas e Notas?

  • Processamento Estruturado de Documentos

Material Didáctico Comum


Education/EL1011 Web Utilities


WebIndex 15 Nov 2006 - 19:43 - r4 TWikiContributor
Education/EL1011 Web Changed Changed by
A2s1p:sumarios 23 Sep 2009 - 10:52 - r3 JoseFaria
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 23 Sep 2009 - 10:52 - r16 JoseFaria
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 23 Sep 2009 - 10:52 - r9 JoseFaria
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 23 Sep 2009 - 10:52 - r13 JoseFaria
Engenharia de Linguagens Projecto Integrado Aulas Tecnológicas Sumários 29 Setembro 2008 Necessidade de um ambiente de programação eficiente: Editor, linha ...
Agenda2html 23 Nov 2009 - 08:50 - NEW JorgeGustavo
Engenharia de Linguagens TITLE #left { float:left; width:30%; } #right { float:left; width:70%; } ...
AlunosGrupos08 23 Sep 2009 - 10:52 - r7 JoseFaria
Engenharia de Linguagens Alunos/Grupos 2008/09 1 Miguel Esteves 1 Nuno Correia 1 Tiago Correia 2 Nuno Veloso 3 Susana Silva ...
AlunosGrupos09 23 Oct 2010 - 08:15 - r7 PedroRangelHenriques
Engenharia de Linguagens (2009/10) Alunos/Grupos 4 Andre da Silva Rocha 2 André Fernandes dos Santos 1 Daniel Carvalho da Rocha 3 Hélder de ...
AlunosGrupos10 02 Oct 2011 - 22:36 - r8 PedroRangelHenriques
Engenharia de Linguagens (2010/11) Alunos/Grupos Gr Nome Email 4 André Manuel Pereira Pedra da Cruz Lopes andre.pclopes at gmail dot com 4 Bruno ...
AvaliaçõesPeriódicas 23 Sep 2009 - 10:52 - r7 JoseFaria
Engenharia de Linguagens PI: Avaliações Periódicas G Nome 10Nov 15Dez 1 Miguel Esteves Sat MBom 1 Nuno Correia Sat MBom ...
BibliografiaSobreScripting 23 Sep 2009 - 10:52 - r7 JoseFaria
Engenharia de Linguagens Bibliografia: Scripting Livros Randal L. Schwartz, Tom Phoenix, brian d foy, Learning Perl , O'Reilly Media Larry Wall, Tom Christiansen ...
EtapasDoProjecto 23 Sep 2009 - 10:52 - r8 JoseFaria
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 23 Sep 2009 - 10:52 - r7 JoseFaria
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 ...
FichasATS09 18 Oct 2010 - 05:58 - r11 PedroRangelHenriques
Engenharia de Linguagens (2009/10) Análise e Transformação de Software Exemplos para as aulas Para o seguinte programa: Calcule o backward slicing ...
FichasATS10 18 Oct 2010 - 05:58 - NEW PedroRangelHenriques
Engenharia de Linguagens (2010/11) Análise e Transformação de Software Exemplos para as aulas Notas sobre !AnTLR Configurar CLASSPATH para permitir a invoca ...
FichasEG08 23 Sep 2009 - 10:52 - r27 JoseFaria
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 ...
FichasEG09 18 Oct 2010 - 05:43 - r23 PedroRangelHenriques
Engenharia de Linguagens (2009/10) Engenharia Gramatical Exercícios e Exemplos para as aulas Exemplo 5: A gramática independente de contexto GIC5, abaixo apresentada ...
FichasEG10 04 Apr 2011 - 22:44 - r13 PedroRangelHenriques
Engenharia de Linguagens (2010/11) Engenharia Gramatical Exercícios e Exemplos para as aulas Exemplo 1: Para apoio a um projecto de Genealogia pretende se que ...
FichasPED09 17 May 2010 - 07:50 - r15 JorgeGustavo
Engenharia de Linguagens (2009/2010) Processamento Estruturado de Documentos Alfresco Descarregar a versão Edition Requisitos: Java !MySQL !ImageMagick ...
GraphVizEmXP 23 Sep 2009 - 10:52 - r3 JoseFaria
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 ...
Horario10 02 Oct 2011 - 22:33 - r3 PedroRangelHenriques
Engenharia de Linguagens (2010/2011) Horário Anual (1º 2º Semestres) 08h00 10h00 Módulo I Engenharia Gramatical 10h00 ...
MetodoAvaliacao 23 Oct 2010 - 08:13 - r8 PedroRangelHenriques
Engenharia de Linguagens (2010/2011) Método de Avaliação A avaliação da UCE de Engenharia de Linguagens é calculada pela seguinte fórmula: NF 15% PED 15% EG ...
ObjectivosProjecto 18 Oct 2010 - 09:09 - r5 PedroRangelHenriques
Engenharia de Linguagens (2009/2010) Projecto Integrado Objectivos Gerais para a 1ª Fase: Sistema: Criar a base do sistema FOSSAT para receber e analisar ...
ObjectivosProjecto10 18 Oct 2010 - 08:52 - NEW PedroRangelHenriques
Engenharia de Linguagens (2010/2011) Projecto Integrado Objectivos Gerais: Sistema: Criar ..... Documentação Relatório de Desenvolvimento ...
PrimeiroSemestre 18 Oct 2010 - 04:38 - r7 PedroRangelHenriques
Engenharia de Linguagens (2009/2010) Horário Primeiro Semestre 08h00 10h00 Módulo I Processamento Estruturado de Documentos 10h00 12h00 ...
ProgramaATS08 23 Sep 2009 - 10:52 - r3 JoseFaria
Engenharia de Linguagens Análise e Transformação de Software Análise de programas: Extracção de dados Armazenamento da informação recolhida ...
ProgramaATS09 18 Oct 2010 - 05:51 - r6 PedroRangelHenriques
Engenharia de Linguagens (2009/2010) Análise e Transformação de Software Programa Resumido Análise de programas: Extracção de dados Armazenamento ...
ProgramaATS10 03 Sep 2011 - 15:29 - r3 PedroRangelHenriques
Engenharia de Linguagens (2010/2011) Análise e Transformação de Software Programa Resumido Análise de programas: Extracção de dados Armazenamento ...
ProgramaEG08 23 Sep 2009 - 10:52 - r3 JoseFaria
Engenharia de Linguagens Engenharia Gramatical 2008/09 Programa Resumido O paradigma da Programação baseada em Gramáticas (PG). Conceitos sobre Gramáticas ...
ProgramaEG09 18 Oct 2010 - 05:45 - r7 PedroRangelHenriques
Engenharia de Linguagens (2009/2010) Engenharia Gramatical Programa Resumido 1.Linguagens e Gramáticas; Caracterização destes conceitos e domínios do saber ...
ProgramaEG10 03 Sep 2011 - 14:49 - r3 PedroRangelHenriques
Engenharia de Linguagens (2010/2011) Engenharia Gramatical Programa Resumido 1.Linguagens e Gramáticas; Caracterização destes conceitos e domínios do saber ...
ProgramaPLN09 19 Oct 2009 - 10:41 - NEW JoseJoao
Engenharia de Linguagens Scripting no Processamento de Linguagem Natural Programa Resumido Linguagens de scripting: características, objectivos e conceitos ...
ResultadosAvaliacao 23 Sep 2009 - 10:52 - r9 JoseFaria
Engenharia de Linguagens Resultados de Avaliação G Nome PED EG ATS PLN PI NF 1 Miguel Esteves 19 15 17 ...
ResultadosAvaliacao09 29 Jul 2010 - 07:25 - r8 PedroRangelHenriques
Engenharia de Linguagens (2009/2010) Resultados de Avaliação G Nome EL ATS PLN PI PI FINAL ...
SegundoSemestre 23 Sep 2009 - 10:52 - r3 JoseFaria
Engenharia de Linguagens Horário Segundo Semestre
SumariosATS08 23 Sep 2009 - 10:52 - r14 JoseFaria
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 ...
SumariosATS09 27 May 2011 - 21:52 - r36 PedroRangelHenriques
Engenharia de Linguagens (2009/10) Análise e Transformação de Software Sumários 31 Maio de 2010 Apresentação do Laboratório online !GamaSlicer para verifica ...
SumariosATS10 19 Jun 2011 - 05:38 - r26 PedroRangelHenriques
Engenharia de Linguagens (2010/11) Análise e Transformação de Software Sumários 27 de Setembro de 2010 A. Apresentação da disciplina I.1 Introdução ...
SumariosEG08 23 Sep 2009 - 10:52 - r30 JoseFaria
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 ...
SumariosEG09 18 Oct 2010 - 05:20 - r40 PedroRangelHenriques
Engenharia de Linguagens (2010/2011) Engenharia Gramatical Sumários 31 Maio de 2010 !GraAlEditor, um editor analisador de Gramáticas: Preparação de ...
SumariosEG10 17 Sep 2011 - 23:42 - r37 PedroRangelHenriques
Engenharia de Linguagens (2010/2011) Engenharia Gramatical Sumários 27 de Setembro de 2010 1. Apresentação da UCE30 EL e em particular do Módulo de EG e ATS ...
SumariosPED09 04 Nov 2009 - 07:37 - r3 PedroRangelHenriques
Engenharia de Linguagens (2009/2010) Processamento Estruturado de Documentos Sumários 28 de Setembro de 2009 Apresentação do Módulo de PED: Apresenta ...
SumariosPED10 29 Nov 2010 - 09:22 - NEW JorgeGustavo
Engenharia de Linguagens TITLE
SumariosPLN09 02 Nov 2009 - 13:58 - r3 JoseJoao
Engenharia de Linguagens Sumários 28 de Setembro de 2009 Apresentação geral do módulo 12 Outubro de 2009 Alguns conceitos gerais acerca de linguagem natural ...
SumariosProjecto 18 Oct 2010 - 09:11 - r9 PedroRangelHenriques
Engenharia de Linguagens (2009/2010) Projecto Integrado Sumários 28 de Setembro de 2009 Apresentação geral do projecto 12 de Outubro de 2009 Apresenta ...
SumariosProjecto10 11 Nov 2010 - 10:29 - r2 JoaoSaraiva
Engenharia de Linguagens (2010/2011) Projecto Integrado Sumários 27 de Setembro de 2010 Apresentação geral do projecto 4 de Outubro Continuação da ...
WebAtom 24 Jan 2006 - 06:07 - r2 TWikiContributor
TWiki's Education/EL1011 web
WebChanges 15 Nov 2006 - 19:43 - r3 TWikiContributor
WebHome 05 Sep 2011 - 14:31 - r44 PedroRangelHenriques
Unidade Curricular de Especialização Engenharia de Linguagens (2010/2011) Responsável pela UCE: Rangel Henriques Propostas de Dissertação para 2011 ...
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 01 Oct 2009 - 08:45 - r19 JoseFaria
Education/EL1011 Web Preferences The following settings are web preferences of the Education/EL1011 web. These preferences overwrite the site level preferences ...
WebRss 28 Mar 2005 - 09:40 - r4 TWikiContributor
" else "TWiki's Education/EL1011 web"}% /Education/EL1011
WebSearch 15 Nov 2006 - 19:43 - r3 TWikiContributor
WebSearchAdvanced 15 Nov 2006 - 19:43 - r3 TWikiContributor
WebStatistics 23 Sep 2009 - 10:52 - r64 JoseFaria
Statistics for Education/EL1011 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 23 Sep 2009 - 10:52 - r3 JoseFaria
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 60 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/EL1011 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 01 Oct 2009 - 08:45 - r19 JoseFaria

Education/EL1011 Web Preferences

The following settings are web preferences of the Education.EL1011 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/EL1011 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/EL1011.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/EL1011 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.JorgeGustavo,Main.JoseJoao,Main.JoaoSaraiva,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/EL1011 The Education/EL1011 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/EL1011 http://wiki.di.uminho.pt/twiki/bin/view/Education/EL1011 /twiki/pub/Main/LocalLogos/um_eengP.jpg AlunosGrupos10 http://wiki.di.uminho.pt/twiki/bin/view/Education/EL1011/AlunosGrupos10 Engenharia de Linguagens (2010/11) Alunos/Grupos Gr Nome Email 4 André Manuel Pereira Pedra da Cruz Lopes andre.pclopes at gmail dot com 4 Bruno ... (last changed by PedroRangelHenriques) 2011-10-02T22:36:16Z PedroRangelHenriques Horario10 http://wiki.di.uminho.pt/twiki/bin/view/Education/EL1011/Horario10 Engenharia de Linguagens (2010/2011) Horário Anual (1º 2º Semestres) 08h00 10h00 Módulo I Engenharia Gramatical 10h00 ... (last changed by PedroRangelHenriques) 2011-10-02T22:33:29Z PedroRangelHenriques SumariosEG10 http://wiki.di.uminho.pt/twiki/bin/view/Education/EL1011/SumariosEG10 Engenharia de Linguagens (2010/2011) Engenharia Gramatical Sumários 27 de Setembro de 2010 1. Apresentação da UCE30 EL e em particular do Módulo de EG e ATS ... (last changed by PedroRangelHenriques) 2011-09-17T23:42:05Z PedroRangelHenriques WebHome http://wiki.di.uminho.pt/twiki/bin/view/Education/EL1011/WebHome Unidade Curricular de Especialização Engenharia de Linguagens (2010/2011) Responsável pela UCE: Rangel Henriques Propostas de Dissertação para 2011 ... (last changed by PedroRangelHenriques) 2011-09-05T14:31:00Z PedroRangelHenriques ProgramaATS10 http://wiki.di.uminho.pt/twiki/bin/view/Education/EL1011/ProgramaATS10 Engenharia de Linguagens (2010/2011) Análise e Transformação de Software Programa Resumido Análise de programas: Extracção de dados Armazenamento ... (last changed by PedroRangelHenriques) 2011-09-03T15:29:44Z PedroRangelHenriques ProgramaEG10 http://wiki.di.uminho.pt/twiki/bin/view/Education/EL1011/ProgramaEG10 Engenharia de Linguagens (2010/2011) Engenharia Gramatical Programa Resumido 1.Linguagens e Gramáticas; Caracterização destes conceitos e domínios do saber ... (last changed by PedroRangelHenriques) 2011-09-03T14:49:02Z PedroRangelHenriques SumariosATS10 http://wiki.di.uminho.pt/twiki/bin/view/Education/EL1011/SumariosATS10 Engenharia de Linguagens (2010/11) Análise e Transformação de Software Sumários 27 de Setembro de 2010 A. Apresentação da disciplina I.1 Introdução ... (last changed by PedroRangelHenriques) 2011-06-19T05:38:30Z PedroRangelHenriques SumariosATS09 http://wiki.di.uminho.pt/twiki/bin/view/Education/EL1011/SumariosATS09 Engenharia de Linguagens (2009/10) Análise e Transformação de Software Sumários 31 Maio de 2010 Apresentação do Laboratório online !GamaSlicer para verifica ... (last changed by PedroRangelHenriques) 2011-05-27T21:52:54Z PedroRangelHenriques FichasEG10 http://wiki.di.uminho.pt/twiki/bin/view/Education/EL1011/FichasEG10 Engenharia de Linguagens (2010/11) Engenharia Gramatical Exercícios e Exemplos para as aulas Exemplo 1: Para apoio a um projecto de Genealogia pretende se que ... (last changed by PedroRangelHenriques) 2011-04-04T22:44:05Z PedroRangelHenriques SumariosPED10 http://wiki.di.uminho.pt/twiki/bin/view/Education/EL1011/SumariosPED10 Engenharia de Linguagens TITLE (last changed by JorgeGustavo) 2010-11-29T09:22:20Z JorgeGustavo SumariosProjecto10 http://wiki.di.uminho.pt/twiki/bin/view/Education/EL1011/SumariosProjecto10 Engenharia de Linguagens (2010/2011) Projecto Integrado Sumários 27 de Setembro de 2010 Apresentação geral do projecto 4 de Outubro Continuação da ... (last changed by JoaoSaraiva) 2010-11-11T10:29:14Z JoaoSaraiva AlunosGrupos09 http://wiki.di.uminho.pt/twiki/bin/view/Education/EL1011/AlunosGrupos09 Engenharia de Linguagens (2009/10) Alunos/Grupos 4 Andre da Silva Rocha 2 André Fernandes dos Santos 1 Daniel Carvalho da Rocha 3 Hélder de ... (last changed by PedroRangelHenriques) 2010-10-23T08:15:32Z PedroRangelHenriques MetodoAvaliacao http://wiki.di.uminho.pt/twiki/bin/view/Education/EL1011/MetodoAvaliacao Engenharia de Linguagens (2010/2011) Método de Avaliação A avaliação da UCE de Engenharia de Linguagens é calculada pela seguinte fórmula: NF 15% PED 15% EG ... (last changed by PedroRangelHenriques) 2010-10-23T08:13:59Z PedroRangelHenriques SumariosProjecto http://wiki.di.uminho.pt/twiki/bin/view/Education/EL1011/SumariosProjecto Engenharia de Linguagens (2009/2010) Projecto Integrado Sumários 28 de Setembro de 2009 Apresentação geral do projecto 12 de Outubro de 2009 Apresenta ... (last changed by PedroRangelHenriques) 2010-10-18T09:11:25Z PedroRangelHenriques ObjectivosProjecto http://wiki.di.uminho.pt/twiki/bin/view/Education/EL1011/ObjectivosProjecto Engenharia de Linguagens (2009/2010) Projecto Integrado Objectivos Gerais para a 1ª Fase: Sistema: Criar a base do sistema FOSSAT para receber e analisar ... (last changed by PedroRangelHenriques) 2010-10-18T09:09:57Z PedroRangelHenriques ObjectivosProjecto10 http://wiki.di.uminho.pt/twiki/bin/view/Education/EL1011/ObjectivosProjecto10 Engenharia de Linguagens (2010/2011) Projecto Integrado Objectivos Gerais: Sistema: Criar ..... Documentação Relatório de Desenvolvimento ... (last changed by PedroRangelHenriques) 2010-10-18T08:52:41Z PedroRangelHenriques
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/EL1011 Web only)

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

Advanced Search

Search: \.*

Education/EL1011 Web Changed Changed by
A2s1p:sumarios 23 Sep 2009 - 10:52 - r3 JoseFaria

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 23 Sep 2009 - 10:52 - r16 JoseFaria

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 23 Sep 2009 - 10:52 - r9 JoseFaria

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 23 Sep 2009 - 10:52 - r13 JoseFaria

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"


Agenda2html 23 Nov 2009 - 08:50 - NEW JorgeGustavo

Engenharia de Linguagens

TITLE

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
   <xsl:output method="xhtml" doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
      doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN" encoding="UTF-8" indent="yes" version="1.0"
      omit-xml-declaration="yes"/>
   <xsl:template match="/">
      <html>
         <head>
            <style type="text/css">
               #left {
                  float:left;
                  width:30%;
               }
               #right {
                  float:left;
                  width:70%;
               }
               .entrada {
                  border: 1px solid black;
                  width: 378px;
                  margin:10px;
               }
               .entrada_grupo {
                  border: 1px solid black;
                  width: 370px;
                  padding: 0px;
                  margin: 10px 0px 10px 0px;
                  background-color: #ffffff;
               }
               .grupo {
                  background-color: #ccccaa;
                  border: 1px solid black;
                  width: 378px;
                  margin:10px;
               }
               td h2 {
                  color:#123456;
                  font-style:italic;
               }</style>
            <title>Agenda de contactos</title>
         </head>
         <body>
            <div id="left">
               <h2>Lista de contactos</h2>
               <xsl:apply-templates mode="indice"/>
               <h2>Lista de contactos ordenada</h2>
               <xsl:apply-templates mode="indiceord"/>
            </div>
            <div id="right">
               <xsl:apply-templates/>
            </div>
         </body>
      </html>
   </xsl:template>
   <xsl:template match="entrada" mode="indice">
      <ul>
            <li>
               <a href="#{@id}">
                  <xsl:value-of select="nome"/>
               </a>
            </li>
      </ul>
   </xsl:template>
   
   <xsl:template match="*" mode="indiceord">
      <ul>
         <xsl:for-each select="entrada|grupo/entrada">
            <xsl:sort order="ascending" select="nome"/>
            <li>
               <a href="#{@id}">
                  <xsl:value-of select="nome"/>
               </a>
            </li>
         </xsl:for-each>
      </ul>
   </xsl:template>
   
   <xsl:template match="grupo">
      <table class="grupo">
         <th>
            <h1>
               <xsl:text>Grupo:</xsl:text>
               <xsl:value-of select="@gid"/>
            </h1>
         </th>
         <xsl:apply-templates/>
      </table>
   </xsl:template>
   <xsl:template match="entrada">
      <a name="{@id}"/>
      <table class="entrada">
         <th/>
         <tr>
            <td>
               <xsl:choose>
                  <xsl:when test="@tipo='pessoa'">
                     <h2>
                        <xsl:text>Pessoa</xsl:text>
                     </h2>
                  </xsl:when>
                  <xsl:when test="@tipo='empresa'">
                     <h2>
                        <xsl:text>Empresa</xsl:text>
                     </h2>
                  </xsl:when>
                  <xsl:when test="not(@tipo)">
                     <h2>
                        <xsl:text>Sem tipo</xsl:text>
                     </h2>
                  </xsl:when>
               </xsl:choose>
            </td>
         </tr>
         <xsl:apply-templates/>
      </table>
   </xsl:template>
   <xsl:template match="grupo/entrada">
      <a name="{@id}"/>
      <tr>
         <td>
            <table class="entrada_grupo">
               <tr>
                  <td>
                     <xsl:choose>
                        <xsl:when test="@tipo='pessoa'">
                           <h2>
                              <xsl:text>Pessoa</xsl:text>
                           </h2>
                        </xsl:when>
                        <xsl:when test="@tipo='empresa'">
                           <h2>
                              <xsl:text>Empresa</xsl:text>
                           </h2>
                        </xsl:when>
                        <xsl:when test="not(@tipo)">
                           <h2>
                              <xsl:text>Sem tipo</xsl:text>
                           </h2>
                        </xsl:when>
                     </xsl:choose>
                     <xsl:apply-templates/>
                  </td>
               </tr>
            </table>
         </td>
      </tr>
   </xsl:template>
   <xsl:template match="ref">
      <xsl:variable name="ENTREF" select="@entref"/>
      <tr>
         <td>
            <xsl:text>Ver também:</xsl:text>
            <a href="#{@entref}">
               <xsl:value-of select="/agenda/entrada[@id = $ENTREF]/nome"/>
            </a>
         </td>
      </tr>
   </xsl:template>
   <xsl:template match="nome">
      <tr>
         <td>
            <xsl:apply-templates/>
         </td>
      </tr>
   </xsl:template>
   <xsl:template match="email">
      <tr>
         <td>
            <a href="mailto:{.}">
               <xsl:apply-templates/>
            </a>
         </td>
      </tr>
   </xsl:template>
   <xsl:template match="telefone">
      <tr>
         <td>
            <xsl:apply-templates/>
         </td>
      </tr>
   </xsl:template>
</xsl:stylesheet>


AlunosGrupos08 23 Sep 2009 - 10:52 - r7 JoseFaria

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


AlunosGrupos09 23 Oct 2010 - 08:15 - r7 PedroRangelHenriques

Engenharia de Linguagens (2009/10)

Alunos/Grupos

4 Andre da Silva Rocha
2 André Fernandes dos Santos
1 Daniel Carvalho da Rocha
3 Hélder de Jesus Almeida da Silva
1 Jorge Cunha Mendes
3 José Luis Freitas
4 Márcio João Carvalho Coelho
D Paulo Alexandre Marques de Oliveira Serafim
D Paulo Alexandre Ricardo Monsanto
D Pedro Simão Pregueiro Jerónimo
2 Carlos Miguel Janeiro Regedor Dias da Torre
D José Pedro Gonçalves


AlunosGrupos10 02 Oct 2011 - 22:36 - r8 PedroRangelHenriques

Engenharia de Linguagens (2010/11)

Alunos/Grupos

Gr Nome Email
4 André Manuel Pereira Pedra da Cruz Lopes andre.pclopes at gmail dot com
4 Bruno Gustavo Rego Amaral Costa bgustavocosta at gmail dot com
3 Daniela Filipa Mota Morais da Fonte danielamoraisfonte at gmail dot com
1 José João Peixoto Pereira jj.peixotopereira at gmail dot com
1 José Azevedo jazevedo at gmail dot com
2 José Pedro Vieira Costa zepedro.cs at gmail dot com
2 Mario Ulisses Pires Araújo Costa ulissesmonhecosta at gmail dot com
4 Nuno Miguel Carvalho Oliveira nmco51845 at gmail dot com
2 Pedro Vasconcelos Castro Lopes Faria pedro.faria.80 at gmail dot com
3 Ricardo Ismael Oliveira Vilas Boas ismael.vb at gmail dot com
1 Tiago Sá tiago at esterisco dot com


AvaliaçõesPeriódicas 23 Sep 2009 - 10:52 - r7 JoseFaria

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 23 Sep 2009 - 10:52 - r7 JoseFaria

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 23 Sep 2009 - 10:52 - r8 JoseFaria

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 23 Sep 2009 - 10:52 - r7 JoseFaria

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)

  • ...

FichasATS09 18 Oct 2010 - 05:58 - r11 PedroRangelHenriques

Engenharia de Linguagens (2009/10)

Análise e Transformação de Software

Exemplos para as aulas

  • Para o seguinte programa:
    • Calcule o backward slicing relativamente à instrução
      printf("Maximo: %d\nMinimo: %d\n", max, min);
      
      com respeito à variável max.
    • Calcule o forward slicing relativamente à instrução
      int i, max, min;
      com respeito à variável min.

int main()
{
     int array[MAX];
     int i, max, min;
     for (i = 0; i < MAX; i++)
    {
         printf("Introduza numero:\n");
         scanf("%d", &i);
    }

    max = array[0];
    min = array[0];
    for (i = 1; i < MAX; i++)
   {
        if (array[i] < min)   { min = array[i]; }
        if (array[i] > max)  { max = array[i]; }
   }

  printf("Maximo: %d\nMinimo: %d\n", max, min);
  return 0;
}

  • Calcule o System Dependency Graph para o seguinte programa:


     void Add(int* a, int b)
     {
          *a = *a + b;
     }

     void Increment(int* z)
     {
          Add(z,1);
     }

     int main()
     {
         int sum = 0;
         int i = 1;
         while(i < 11)
         {
             Add(&sum,i);
             Increment(&i);
         }
         printf("Sum: %d\n", sum);
      }

  • Calcule o Program Dependency Graph para o seguinte programa:

  • Calcule o Control Flow Graph para o seguinte programa:
     int main()
     {
         int n, i, sum, product;
         scanf("%d",&n);
         i=1;
         sum=0
         product=1;
         while(i <= n)
         {
            sum += i;
            product *= i;
            i++;
         }
         printf("Sum: %d\n", sum);
         printf("Product: %d\n", product);
     }

Notas sobre AnTLR

  • Configurar CLASSPATH para permitir a invocação via linha de comandos (Windows): set CLASSPATH = %CLASSPATH%;pathANTLR; onde a pathANTLR é a respectiva path para o ANTLR (.jar).

  • Fazer download dos seguintes ficheiros Test.java e input.txt para a pasta "output" para onde foram gerados os ficheiros na alínea anterior.

  • Executar "javac *.java" e finalmente "java Test".

Fichas de Avaliaçao

Ficha IV

Após a pesquisa genérica sobre o tema "Transformação de Programas" estude em concreto uma das ferramentas enocntradas e prepare uma pequena apresntação à turna sobre ela: filosofia, campos de aplicação, funcionalidades e utilização. Mostre, a título de exemplo, como implementaria o problema de transformação de um programa em C-- proposto na Ficha II.

Ficha III

Faça uma pesquisa sobre o tema "Transformação de Programas" e procure em concreto abordagens, ferramentas e aplicações. Depois identifique lacunas de modo a defnir o projecto que vai levar a cabo para colmatar essas fraquezas. Por fim implemente o sistema de transformação idealizado.

Ficha II

Partindo de uma versão "light" da gramática do C (C--) disponível no site do AnTLR, pretende-se que os alunos manipulem um dado programa de entrada, cumprindo os seguintes requisitos:

  • Construir a Tabela de identificadores;
  • Adicionar a respectiva declaração de tipo (infira o tipo se necessário), por cada variável usada não declarada.
  • Construir o Data Dependence Graph (DDG), usando a técnica de Single Static Assignment (SSA)
  • Construir o Control Flow Graph (CFG)

Ficha I

Com a intenção de levar os alunos a fazer um exercício de transformação de SW que os obrigue a pensar no problema, nas fases, nas estratégias e nas ferramentas -- percebendo a necessidade de fazer a análise sintatica e semantica, de construir uma representação intermédia (RI), tipo ASD+TabDefs, e de criar uma Base de Regras de Transformação e um Sistema de Reescrita de ASDs para facilitar a especificação e sistematizar a implementação -- pretende-se que crie uma ferramenta para fazer o upgrade de programas escritos em SQL1 para SQL2.

A questão está que em SQL1 não existe a instrução UPDATE TABLE para alterar um ou mais campos não-chave de um registo. Isso leva a que a actualização é sempre feita à custa de uma remoção (REMOVE FROM T WHERE chv="X") seguida de uma inserção (INSERT INTO T (chv="X", a1=...) ).

O upgrader a implementar deve detectar os pares (REMOVE,INSERT) na mesma chaves e substituir por um UPDATE nessa mesma chaves.


FichasATS10 18 Oct 2010 - 05:58 - NEW PedroRangelHenriques

Engenharia de Linguagens (2010/11)

Análise e Transformação de Software

Exemplos para as aulas

Notas sobre AnTLR

  • Configurar CLASSPATH para permitir a invocação via linha de comandos (Windows): set CLASSPATH = %CLASSPATH%;pathANTLR; onde a pathANTLR é a respectiva path para o ANTLR (.jar).

  • Fazer download dos seguintes ficheiros Test.java e input.txt para a pasta "output" para onde foram gerados os ficheiros na alínea anterior.

  • Executar "javac *.java" e finalmente "java Test".

Fichas de Avaliaçao

Ficha I


FichasEG08 23 Sep 2009 - 10:52 - r27 JoseFaria

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


FichasEG09 18 Oct 2010 - 05:43 - r23 PedroRangelHenriques

Engenharia de Linguagens (2009/10)

Engenharia Gramatical

Exercícios e Exemplos para as aulas

Exemplo 5:

A gramática independente de contexto GIC5, abaixo apresentada, define uma linguagem específica (DSL) para apoio à contabilização de todos os PIs de um dado grupo de investigação, permitindo descrever cada projecto concluído ou em andamento dentro do grupo, financiado pela FCT, pelo GRICES ou pela ADI. O Símbolo Inicial é PIs, os Símbolos Terminais são escritos em minúsculas (pseudo-terminais), ou em maiúscula (palavras-reservadas), ou entre apóstrofes (sinais de pontuaçãao) e a string nula é denotada por &; os restantes serão os Símbolos Não-Terminais.

         p1: PIs --> RESUMO Lst DETALHE Projs '.'
         p2: Lst --> TWiki.InvPs
         p3:      | Lst ';' TWiki.InvPs
         p4: TWiki.InvPs --> TWiki.SglInv TWiki.LstIds
         p5: TWiki.SglInv --> id
         p6: TWiki.LstIds --> TWiki.SglProj
         p7:         | TWiki.SglProj ',' TWiki.LstIds
         p8: Projs --> Proj '.'
         p9:        | Projs Proj '.'
         p10: Proj --> TWiki.SglProj Desc FINANC Entidad Valor INIC Ano FIM Ano
         p11: TWiki.SglProj --> id
         p12: Desc --> str
         p13: Entidad --> FCT
         p14:          | GRICES
         p15:          | ADI
         p16: Ano --> num
         p17: Valor --> num
sabendo-se ainda que os símbolos terminais variáveis e os comentários válidos são definidos pelas seguintes expressões regulares:
         num : [0-9]+
         id : [a-zA-Z]+
         str : \"[^"]*\"
         comentario1 : "%".*
Afira a qualidade de GIC5 calculando todas as métricas estudadas (tamanho, forma, lexicográficas).

Pretende-se repetir a avaliação da 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):

  • (GIC5T1) reescreva a gramática eliminando todas as produções unitárias e a recursividade (à custa de usar notação ex-BNF);
  • (GIC5T2) por questões de legibilidade e outras razões, não é desejável ter produções tão longas (com tantos símbolos do lado direito), como a p10 acima. Modifique a gramática G de modo a permitir reescrever p10 da seguinte forma:
         p10: Proj --> TWiki.SglProj Desc Financiament Period
  • (GIC5T3) complete a gramática G para permitir incluir na descrição detalhada de cada projecto (símbolo Proj) a lista de todos os seus membros (sigla dos investigadores que nele colaboram);

Exemplo 4:

Repita o mesmo exercício do Exemplo 3 para medição e aferição de qualidade aplicado à sua gramática do Exemplo 1.

Exemplo 3:

Considere a gramática independente de contexto abaixo apresentada no Exemplo 2, designada por GIC2, e calcule as métricas dos 3 tipos de modo a poder pronunciar-se sobre a qualidade da GIC em causa.

Repita o mesmo exercício de medição e aferição de qualidade para as gramáticas GIC2T1, GIC2T2, GIC2T3, GIC2T4 e GIC2T5 obtidas da original (GIC2) por aplicação das sequintes transformações:

  • (T1) remova todas as produções unitárias;
  • (T2) transforme a gramática em LL(1);
  • (T3) reescreva a gramática usando ex-BNF, de modo a eliminar toda a recursividade directa ou indirecta;
  • (T4) reescreva a gramática de modo a permitir que a derivação do símbolo Descrição na produção p4 seja assim:
     
               p4:  Descricao    -->  TWiki.IdentObra '(' Autor ')' TWiki.IdentEdicao
     
  • (T5) altere a gramática de modo a permitir que cada livro tenha mais de um Autor.

-- -- PedroRangelHenriques - 23 Jan 2010 - 23 Jan 2010

Exemplo 2:

A gramática independente de contexto, GIC, abaixo apresentada, define uma linguagem específica para descrever os livros e CDs disponíveis numa biblioteca e os estados que lhe são associados (livres ou emprestados), à semelhança do que acontece nas bibliotecas da UM.

O Símbolo Inicial é Biblioteca, os Símbolos Terminais são escritos em maiúsculas (pseudo-terminais) ou em maiúscula entre apostrofes (palavras-reservadas e sinais de pontuação), e a string nula é denotada por &; os restantes (sempre em minúsculas) serão os Símbolos Não-Terminais.

        p0:  Biblioteca   -->  Registos
        p1:  Registos     -->  Registo
        p2:                 |  Registos ',' Registo
        p3:  Registo      -->  '[' REGISTO Descricao  EXISTENCIAS 
                                                    Existencias ']'
        p4:  Descricao    -->  Referencia Tipo Titulo '(' Autor ')' 
                               Editora Ano Catalogo
        P5:  Referencia   -->  id
        p6:  Tipo         -->  LIVRO
        p7:                 |  CDROM
        p8:                 |  OUTRO
        p9:  Titulo       -->  string
        p10: Autor        -->  string
        p11: Editora      -->  string
        p12: Ano          -->  num
        p13: Catalogo     -->  BGUM
        p14:                |  ALFA
        p15:                |  OUTRO
        p16: Existencias  -->  LOCAL Local '(' Estados ')'
        p18: Local        --> string 
        p19: Estados      --> Estado
        p20:                | Estados ',' Estado
        p21: Estado       --> TWiki.CodigoBarras Disponib
        p22: TWiki.CodigoBarras --> id
        p23: Disponib     --> ESTANTE
        p24:                | PERMANENTE
        p25:                | EMPRESTADO TWiki.DataDev
        p26: TWiki.DataDev      --> Ano '-' Mes '-' Dia
        p27: Mes          --> num
        p28: Dia          --> num

Neste contexto e após analisar a GIC dada, responda às alíneas seguintes.

  • a) Escreva uma Frase válida da linguagem gerada pela GIC dada, mostrando a respectiva Árvore de Derivação.

  • b) Altere a gramática de modo a permitir que cada livro tenha mais de um Autor.

  • c) O par de produções p1/p2 define uma lista com recursividade à esquerda. Altere esse par para usar recursividade à direita e mostre, através das árvores de derivação, a diferença entre ambos os esquemas iterativos.

  • d) (TPC)Escreva as funções de um parser RD-puro (recursivo-descendente) para reconhecer o Símbolo Estado e seus derivados.

  • e) (TPC)Construa o estado inicial do autómato LR(0) pra gramática dada e os estados que dele saiem.

  • f) Transforme a GIC dada numa gramática tradutora, GT, reconhecível pelo AnTLR, para:
    • calcular e imprimir: o número de registos; e o número de livros existentes para cada registo.
    • o número total de livros com estado RESERVADO/PERMNENTE/ESTANTE.
    • identificar e listar por ordem alfabética os títulos dos livros.
    • verificar se não existem registos com a mesma referência.

  • g) repita a alinea anterior usando agora uma gramática de atributos, GA, recorrendo também ao AnTLR, para gerar o processador, criando primeiro uma árvore de sintaxe abstracta (ASA).

Exemplo 1:

Black é uma jovem empresa portuguesa que desenha, produz e comercializa tudo para Góticos, desde vestimentas, meias e sapatos até adereços e tatuagens.

A Black quer ter um sitio WWW, como agora é moda, mas que seja alimentado facilmente por eles (cada época que a colecção é alterada) sem contudo saberem nada de HTML, nem terem eles de montar o site. Para isso pretende-se definir uma nova Linguagem que permita à Black descrever a sua colecção. Além da data da última actualização, a linguagem deverá permitir descrever acessórios e vestimentas.

No caso de se tratar de um acessório, além da referência e descrição, deverá ser possível incluir o url para uma ou mais imagens (opcional), o tipo do acessório (bracelete, colar, bolsa, anel, piercing); o seu preço e o material de que é feito (pele, cabedal, tecido, metal).

No caso de se tratar de vestimenta, deverá ser possível diferenciar entre Para Ele e Para Ela. Além da referência e descrição da vestimenta, deverá ser incluído o url para uma ou mais imagens, o tipo da vestimenta (vestido, calça, t-shirt), o preço e os tamanhos disponíveis (XS, S, M, L, XL).

Após ler o enunciado acima, pede-se que:

  • a) Escreva então uma Gramática Independente de Contexto, GIC, que especifique a Linguagem pretendida (note que o estilo da linguagem (mais ou menos verbosa) e o seu desenho são da sua responsabilidade).

  • b) Transforme a GIC acima em notação do AnTLR e gere um parser para reconhecer frases válidas da linguagem que criou e para detectar os erros em frases inválidas.

Questões colocadas nas aulas

Q1:

  • (2009-10-19) Investigue o que existe sobre métricas para avaliar a qualidade de gramáticas (apresente na próxima aula uma síntese das referências que encontrou).

Fichas Práticas para Avaliação (a resolver fora das aulas)

F4:

  • Escreva uma pequena monografia em formato de artigo, e entregue para efeitos de avaliação, sobre Editores Estruturais (structure-editors) e Editores Orientados pela Sintaxe (syntax-directed editors): resumo do conceito, abordagens e estado actual (nível académico e comercial).

F3:

  • Desenvolva um sistema (GraAlEditor) para edição, visualização e medição de gramáticas. Nesse sistema deve implementar os várioa parametros de aferição e as várias métricas estudadas.

F2:

  • Escreva uma pequena monografia em formato de artigo, e entregue para efeitos de avaliação, sobre Parsing: resumo do conceito, abordagens e algoritmos.

F1:

  • O resultado da investigação solicitada na Q1 acima, deve ser escrito em formato de artigo e entregue (após apresentação oral na aula) para efeitos de avaliação --- Classe Latex para formatar o documento a apresentar: llncs2e.zip

Notas e Links úteis


FichasEG10 04 Apr 2011 - 22:44 - r13 PedroRangelHenriques

Engenharia de Linguagens (2010/11)

Engenharia Gramatical

Exercícios e Exemplos para as aulas

Exemplo 1:

Para apoio a um projecto de Genealogia pretende-se que crie uma linguagem simples que permita descrever Famílias. Cada Família será formada pela identificação dos Progenitores (nome próprio e apelido, separados) e pela lista dos filhos (apenas nome próprio).

Em fases posteriores pretende-se que a sua linguagem permita distinguir entre os Progenitores, a Mãe e o Pai, e depois a Data do casamento (para que o registo genealógico possa também suportar um projecto de investigação em Demografia Histórica).

Após ler o enunciado acima, pede-se que:

  • a) Escreva então uma Gramática Independente de Contexto, GIC, que especifique a Linguagem pretendida (note que o estilo da linguagem (mais ou menos verbosa) e o seu desenho são da sua responsabilidade). Essa GIC deve ir sendo sucessivamente transformada para mostrar diferentes formas de definir a mesma linguagem e ainda para fazer a evolução da linguagem inicial, conforme acima pedido.

  • b) Transforme a GIC numa Gramática Tradutora (GT) para calcular o número de filhos por casal, apresentando esse valor emparelhado com a data do casamento.

  • c) Transforme a GIC numa Gramática Tradutora (GT) para gerar instruções SQL que carreguem para a Tabela "Pessoas" de uma base de dados a informação de cada membro do agregado familiar: Chave, NomeProprio, Apelido, Género (se conhecido); Note que a Chave deve ser gerada pelo seu Processador e que o Apelido dos Filhos deve ser inferido também por esse Processador a partir dos Apelidos dos Progenitores.

  • d) Reescreva as GTs anteriores mas agora usando Gramáticas de Atributos (GA).

Exemplo 2:

Considere a linguagem de programação Lisp na qual um programa é uma Symbolic-Expression (SExp). Sabe-se que uma SExp é um valor atómico (palavra ou numero) ou é uma lista e que cada elemento da lista é uma SExp.

A GIC abaixo define formalmente a linguagem Lisp, de acordo com a descrição acima:

      T = { num, pal, "(", ")" }
      N = { Lisp, SExp, SExplist }
      S = Lisp
      P = {
            p1: Lisp     --> SExp     
            p2: SExp     --> num
            p3: SExp     --> pal
            p4: SExp     --> "(" SExplist ")"
            p5: SExplist --> SExp SExplist
            p6: SExplist --> &
          }

Pede-se então que escreva uma Gramática de Atributos, GA, para

  • a) calcular o nível de aninhamento de cada lista (comece em 1 para a lista principal).

  • b) construir uma lista com todos os "operadores" presentes (considera-se "operador" o 1ºelemento de cada lista).

  • c) verificar se todos os "operadores" usados pertencem ao conjunto de operadores válidos de acordo com uma "biblioteca" fornecida no inicio.

  • d) verificar se o numero de argumentos ("operandos") com que cada operador é invocado condiz com a cardinalidade associada aos operadores válidos na referida "biblioteca".

  • e) substituir todos os "identificadores" usados como operandos pelo valor que lhes é associado nas operações "let".

  • f) gerar código post-fix para o programa ser executado por uma máquina-de-stack (que primeiro carrega os "operandos" e depois os transforma pelos "operadores", substituindo-os pelo resultado).

Exemplo 3:

Considere a linguagem para descrever uma Factura. Sabe-se que uma Factura é composta por um cabeçalho e um corpo, e este é composto por um ou mais movimentos.

A GIC abaixo define formalmente uma primeira versão da linguagem Factura, de acordo com a descrição acima:

      T = { id, str, num}
      N = { Factura, Cabec, Corpo, TWiki.IdFact, TWiki.IdE, TWiki.IdR, ...... }
      S = Factura  
      P = {
            p1:  Factura  --> Cabec Corpo
            p2:  Cabec    --> TWiki.IdFact TWiki.IdE TWiki.IdR
            p3:  TWiki.IdFact   --> TWiki.NumFact
            p4:  TWiki.NumFact  --> id
            p5:  TWiki.IdE      --> Nome NIF Morada NIB
            p6:  TWiki.IdR      --> Nome NIF Morada
            p7:  Nome     --> str
            p8:  NIF      --> str
            p9:  Morada   --> str
            p10: NIB      --> str
            p11: Corpo    --> ...
          }

Pede-se então que escreva uma Gramática de Atributos, GA, para

  • a) calcular o total por linha e total geral.

  • b) estender a linguagem original para permitir mais do que uma factura (calculando os mesmos totais).

  • c) modificar a linguagem de modo a suportar inicialmente a descrição do stock (referência, descrição, preço unitário e quantidade em stock); neste caso, cada linha só terá a referência e a quantidade vendida.

  • d) estender a semântica da nova linguagem de modo a também actualizar o stock.

Questões colocadas nas aulas

Q1:

  • (2010-10-18) ...

Fichas Práticas para Avaliação (a resolver fora das aulas)

F1 (2010-11-08): Concluir as alíneas a) b) c) d) do Exercico 2 e entregar devidamente documentado.

F2 (2010-12-06): Resolva o Exemplo 3 devidamente documentado para efeitos de avaliação.

F3 (2011-02-21): Resolva o Exemplo da Calculadora com declarações devidamente documentado para efeitos de avaliação.

F4 (2011-03-01): Resolva o Exercício do LogoLISS devidamente documentado para efeitos de avaliação

F5 (2011-03-21): Faça um estudo sobre métricas e avaliação de qualidade em linguagens de Modelação / Especificação.

Notas e Links úteis

(2011-04-04) Monografias feitas pelos grupos de trabalho sobre Qualidade e Métricas:

(2010-11-08) Novas Scripts (funcionam em sistemas Unix) para agilizar a compilação em Silver:

  • O primeiro script, parse, deve ser colocado na directoria da gramática e permite testar o compilador correspondente a essa gramática com um ou vários ficheiros de input; para executar usar o seguinte comando:
    parse input1 [input2 ...]
  • O segundo, cpgr, deve ser colocado na pasta grammars e duplica uma gramática para outra pasta garantindo a compilação; para executar usar o seguinte comando:
    cpgr pastaOrigem pastaDestino


FichasPED09 17 May 2010 - 07:50 - r15 JorgeGustavo

Engenharia de Linguagens (2009/2010)

Processamento Estruturado de Documentos

Alfresco

Descarregar a versão Community Edition

Requisitos:

  • Java
  • MySQL
  • ImageMagick

chmod +x Alfresco-Community-3.3-Linux-x86-Install
sudo ./Alfresco-Community-3.3-Linux-x86-Install

Executar o Alfresco

sudo /opt/Alfresco/alfresco.sh start

http://localhost:8080/alfresco

http://localhost:8080/share

Tutoriais do Alfresco

Getting Started with Alfresco Explorer Document Management for Community Edition 3.3

Mais tutoriais em:

Nepomuk

0. Activar o Nepomuk

Alt+F2, procurar por strigi ou nepomuk

0.1. Correr 'Configuração do Servidor Nepomuk/Strigi'

Configuração básica:

  • Activar o Ambiente de Trabalho Semântico do Nepomuk
  • Activar a Indexação de Ficheiros no Ambiente do Strigi

No meu caso, não arrancava a indexação do Strigi, porque não tinha o JAVA instalado.

sudo apt-get install sun-java6-jre
sudo ln -s /usr/lib/jvm/java-6-sun/jre/lib/i386/server/libjvm.so /usr/lib/libjvm.so

1. Alterar o ficheiro de configuração ~/.kde/share/config/nepomukserverrc

Trocar:

Used Soprano Backend=redland
por:
Used Soprano Backend=sesame2

2. Restart the Nepomuk server:

killall nepomukserver
nohup /usr/bin/nepomukserver

3. Monitorizar o repositório:

sopranocmd --dbus org.kde.NepomukStorage --model main monitor

4. Inserir tags, comentários, ratings

No Dolphin (explorador de ficheiros)

5. Pesquisas (Alt+F2, no KRunner):

nepomuksearch:/ tag:"bison" and tag="changelog"
nepomuksearch:/ tag:"XATA"
XATA

6. Pesquisas na linha de comando:

sopranocmd --dbus org.kde.NepomukStorage --model main list "" "" "<nepomuk:/XATA>"

6.9 Eventualmente é preciso instalar:

sudo apt-get install strigi-daemon strigi-utils strigi-client deskbar-plugins-strigi

7. Utilizar o strigi isoladamente:

xmlindexer semanticdesktop.pdf
deepfind ...
deepgrep ...

10.

sudo apt-get install filelight filelight-l10n

Exercícios 2010 03 01

Estrutura do paper (cf http://etherpad.com/KrS97SVLHr)

Interface para a ferramenta com ExtJS?

"Hello world" do ExtJS?

1) descarregar TWiki.ExtJS
2) unzip -x ...
3) ln -s ext-3.1.1 ext
4) *layout.js*:
Ext.onReady(function(){
    new Ext.Viewport({
        layout: "border",
        items: [{
            region: "center",
            title: "Semantic Desktop",
         contentEl: 'bem-vindo'
        }, {
            region: "north",
            title: "Header",
            height: 120,
            collapsible: true
        }, {
            region: "south",
            title: "Footer",
            height: 120,
            collapsible: true
        }, {
            region: "west",
            title: "Tree browser"
        }]
    });
});
5) *interface.html*:
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Semantic Desktop Web Interface</title>

    <!-- base library -->
    <link rel="stylesheet" type="text/css" href="ext/resources/css/ext-all.css" />

    <!-- TWiki.ExtJS library: base/adapter -->
    <script type="text/javascript" src="ext/adapter/ext/ext-base.js"></script>

    <!-- TWiki.ExtJS library: all widgets -->
    <script type="text/javascript" src="ext/ext-all.js"></script>

    <script type="text/javascript" src="layout.js"></script>

</head>
<body>
    <div id="bem-vindo">Olá! Aqui vai poder, no futuro, navegar sobre o file system, sem saber que existe file system</div>
</body>
</html>

Exercícios 2010 02 22

Introdução às ontologias e sparql: http://pvanhoof.be/blog/index.php/2009/07/14/introduction-to-rdf-and-sparql

Para ter o tracker-sparql:

1) Descarregar o tracker
wget http://ftp.gnome.org/pub/GNOME/sources/tracker/0.7/tracker-0.7.21.tar.gz
2) Instalar um monte de dependências, entre as quais, o sqlite3
2.x) sudo apt-get install libsqlite3-dev
3) ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var
4) make
5) [sudo make install]
6) ./src/tracker-utils/tracker-sparql

Exercícios 2010 01 18

http://etherpad.com/Bb4DSKte8x

Paper para o XATA (nova deadline: 14 DE MARÇO)

"faziam uma pequena script que recursivamente extrair informação dos ficheiros que vai encontrando e guarda a parte relevante num documento XML. Depois, todos esses documentos XML são submetidos ao Solr para indexação. Por fim, usando o Solr, procuram-se os documentos."

Exercícios 2010 01 04

Instalação Apache Tika

Exercícios 2009 11 30

Processamento dos ficheiros XML

Gerar lista de exposições disponíveis:

<?php
   $xmlDocExpos = new DOMDocument();
   $file = "museuvirtual2008.xml";
   $xmlDocExpos->load($file, LIBXML_NOBLANKS);    
   $k=1;
   $_expos=$xmlDocExpos->getElementsByTagName('exposicao');
   foreach($_expos as $_expo) {
      if($_expo->hasAttribute('titulo')){
         echo '<a href="salas.php?expo=' . $k . '">' . $_expo->getAttribute('titulo') . "</a><br/>\n";
      }
      $k++;
   }
?>

Gerar lista de salas para uma exposição:

<?php
   if (isset($_GET['expo']) && strlen(trim($_GET['expo'])) > 0) {
      $aExposicao= $_GET['expo'];
   } else {
      die("Preciso de saber a exposição, né?");
   }   
   $xmlDocExpos = new DOMDocument();
   $file = "museuvirtual2008.xml";
   $xmlDocExpos->load($file, LIBXML_NOBLANKS); 
   /*
    * Sacar apenas o nome do documento XML com os conteúdos da sala
    */
      $xslSalaXML = new DOMDocument();
      $xslSalaXML->loadXML ('
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
   <xsl:output method="html" indent="yes" omit-xml-declaration="yes"/>
   <xsl:template match="/">
      <xsl:apply-templates select="//exposicao['.$aExposicao.']/sala"/>
   </xsl:template>
   <xsl:template match="//sala">
      <xsl:element name="a">
         <xsl:attribute name="href">
            <xsl:text>topico.php?sala=</xsl:text>
            <xsl:value-of select="."/>
         </xsl:attribute>
         <xsl:value-of select="@titulo"/>
      </xsl:element>
      <xsl:element name="br"/>
   </xsl:template>
</xsl:stylesheet>
' );
   $procSalaXML = new XSLTProcessor();
   $procSalaXML->importStylesheet($xslSalaXML);
   $docxml = $procSalaXML->transformToXML($xmlDocExpos);   
   print_r($docxml);      
?>

Gerar uma página com todos os tópicos de uma exposição:

<?php
   if (isset($_GET['sala']) && strlen(trim($_GET['sala'])) > 0) {
      $aSala= $_GET['sala'];
   } else {
      die("Preciso de saber a sala, né?");
   }   
   $xmlDocExpos = new DOMDocument();
   $file = $aSala;
   $xmlDocExpos->load($file, LIBXML_NOBLANKS); 
   /*
    * Sacar apenas o nome do documento XML com os conteúdos da sala
    */
      $xslSalaXML = new DOMDocument();
      $xslSalaXML->loadXML ('
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
   <xsl:output method="html" indent="yes" omit-xml-declaration="yes"/>
   <xsl:template match="/">
      <ul>
         <xsl:apply-templates mode="indice"/>
      </ul>
      <xsl:apply-templates/>
   </xsl:template>
   <xsl:template match="topico">
      <p>
         <div id="topico">
            <xsl:apply-templates/>
         </div>
      </p>
   </xsl:template>
   <xsl:template match="topico" mode="indice">
      <li>
         <xsl:value-of select="@titulo"/>
      </li>
   </xsl:template>
   <xsl:template match="tema">
      <i>
         <div id="tema">
            <xsl:apply-templates/>
         </div>
      </i>
   </xsl:template>
</xsl:stylesheet>
' );
   $procSalaXML = new XSLTProcessor();
   $procSalaXML->importStylesheet($xslSalaXML);
   $docxml = $procSalaXML->transformToXML($xmlDocExpos);   
   print_r($docxml);      
?>

Interface de pesquisa, que invoca o Solr/lucene:

<?php
   if (isset($_POST['submit'])   && ((isset($_POST['pesquisa']) && strlen(trim($_POST['pesquisa'])) > 0))) {
      $termo = trim($_POST['pesquisa']);
      $resultado = "<p>Obrigado por usar a pesquisa por <b>" . $termo . "</b></p>";            
      $curlPost = 'q=' . urlencode($termo) . '&rows=20';
      $ch = curl_init();
      curl_setopt($ch, CURLOPT_URL, 'http://localhost:8983/solr/select');
      curl_setopt($ch, CURLOPT_HEADER, FALSE);
      curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
      curl_setopt($ch, CURLOPT_POST, TRUE);
      curl_setopt($ch, CURLOPT_POSTFIELDS, $curlPost); 
      $data = curl_exec($ch);
      curl_close($ch); 
         $resultadoXML = new DOMDocument();
         $resultadoXML->loadXML($data);
      /* Falta tratar o resultado do Solr */
         $xmlString = $resultadoXML->saveXML();
         $resultado .= "<h3>Resposta do Solr</h3>";
         $resultado .= '<xmp>' . $xmlString . '</xmp>';         
   } else {
      $resultado = "<p>Pode pesquisar à vontade</p>";
   }   
?>
<form name="pesquisar" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
<input type="text" size="16" maxlength="64" name="pesquisa"/>
<input type="submit" value="submit" name="submit"/>
</form>
<?php 
echo $resultado;
?>

Solr/lucene:

  1. Baixar o Apache Solr
  2. Descompactar SOlr
  3. cd apache-solr-1.4.0/example
  4. java -jar start.jar
  5. nmap -p 8983 localhost
PORT     STATE SERVICE
8983/tcp open  unknown

Exercícios 2009 11 23

agenda2html

Exercícios 2009 11 16

Ficha 4

<!-- exercício incompleto; para completar: subs tables por div; tratar refs a entradas; afinar links entre índice e corpo -->
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
   <xsl:output method="xml" doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
      doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN" indent="yes"/>
   <xsl:template match="/">
      <html>
         <head>
            <title>Anúncio de emprego</title>
            <style type="text/css">
               #esq {
                  width: 240px;
                  float: left;
               }
               #dir {
                  float: left;
               }</style>
         </head>
         <body>
            <div id="esq">
               <ul>
                  <xsl:apply-templates mode="indice"/>
               </ul>
            </div>
            <div id="dir">
               <xsl:apply-templates/>
            </div>
         </body>
      </html>
   </xsl:template>
   <xsl:template match="entrada">
      <a name="{@id}"/>
      <table bgcolor="#cccccc">
         <xsl:apply-templates/>
      </table>
   </xsl:template>
   <xsl:template match="entrada" mode="indice">
      <li>
         <a href="{@id}">
            <xsl:value-of select="nome"/>
         </a>
      </li>
   </xsl:template>
   <xsl:template match="grupo">
      <table border="1">
         <xsl:apply-templates/>
      </table>
   </xsl:template>
   <xsl:template match="nome">
      <tr>
         <td>
            <xsl:apply-templates/>
         </td>
      </tr>
   </xsl:template>
   <xsl:template match="telefone">
      <tr>
         <td>
            <xsl:apply-templates/>
         </td>
      </tr>
   </xsl:template>
   <xsl:template match="email">
      <tr>
         <td>
            <a href="mailto:{.}">
               <xsl:apply-templates/>
            </a>
         </td>
      </tr>
   </xsl:template>
</xsl:stylesheet>

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
   <xsl:output method="xml" doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
      doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN" indent="yes"/>
   <xsl:template match="/">
      <html>
         <head>
            <title>Anúncio de emprego</title>
         </head>
         <body>
            <xsl:apply-templates/>
         </body>
      </html>
   </xsl:template>
   <xsl:template match="telefone"> </xsl:template>
   <xsl:template match="profissão">
      <h1>
         <xsl:apply-templates/>
      </h1>
   </xsl:template>
</xsl:stylesheet>

Exercícios 2009 11 09

(a)Seleccione o título das músicas que contêm a palavra "Jesus".

//tit[contains( text() , 'Jesus')]

(b)Seleccione a província das músicas que contêm a palavra "Jesus" no título.

//prov[contains( ../tit/text() , 'Jesus')] //prov[../tit[contains( text() , 'Jesus')]]

(c)Seleccione o título de todas as músicas de Castelo Branco.

//tit[ contains( ../local/text() , 'Castelo Branco')]

(d)Seleccione todos os instrumentos referenciados no arquivo.

//intxt|//inst

(e)Seleccione o nome de todos os músicos referidos.

//musico

(f)Seleccione todos os instrumentos das músicas do Minho.

//inst[../prov/text() = 'Minho'] | //intxt[../prov/text() = 'Minho']

Exercícios e Exemplos para as aulas

Exemplo 1:

Considere o seguinte texto histórico (retirado de "Concelho Medieval de Monte Longo e o seu Foral", de José Carlos P. Gonçalves, ed. CMF, 2002, pg 223):

" Contratos de Emprazamento
Eis alguns rendimentos do Mosteiro de S. Gens de Monte Longo, provenientes dos contratos de emprazamento dos bens imóveis: casais, herdades e vinhas, que o mosteiro e os seus prelados possuíam e eram evidentemente uma fonte de proventos e de sustentação destes clérigos:
- Novembro de 1240,Contrato de emprazamento em três vidas de uma vinha sita em Lordelo, feito pelo prelado Gonçalo Gonçalves. Paga de foro anual uma libra de cera, no dia de S. Bartolomeu de S. Gens e a quarta parte do vinho.
- Setembro de 1247, emprazamento em uma vida da herdade sita no lugar de Infesta, Vale do Bouro, para edificar casas ou plantar vinha. Paga de foro anual uma libra de cera, no dia de S. Bartolomeu.
- Janeiro de 1249, emprazamento em três vidas de uma herdade sita em Villa Ouresi, termo de Celorico de Basto. Paga de foro anual um maravidi e para seus filhos dois aureos, no mesmo dia de S. Bartolomeu.
- Abril de 1250, emprazamento em uma vida do casal denominado: casal do meio casal de Trás-do-Rio, sito na Villa Bruela. Não refere o foro. "

Exemplo 2:

Considere o seguinte texto histórico (retirado de "Concelho Medieval de Monte Longo e o seu Foral", de José Carlos P. Gonçalves, ed. CMF, 2002, pg 224-225):

" Sentenças
Sentenças proferidas directamente relacionadas com o Mosteiro de S. Gens de Monte Longo e seus prelados.
- A 9 de Maio de 1238 temos uma sentença proferida pelo Arcebispo de Braga, D. Silvestre, decidindo a questão de padroado e hospitalidade entre D. Rodrigo Gomes de Briteiros e Gonçalo Gonçalves reitor da igreja de S. Gens de Monte Longo. Em resultado da inquirição que mandou fazer por D. Pedro Fernades de Villa Cova e D.Fernando Raimundo de Sousa, Cónegos de Braga, e por Pedro Ervilhom e Rodrigo Vides, Cavaleiros. O Arcebispo julgou e sentenciou que D. Rodrigo Gomes de Briteiros não possuia o direito de padroado que pretendia ter. Foi proferida a sentença na Igreja de S. Clemente.
- Sentença proferida em 26 de Agosto de 1335 por Lourenço Martins, dito calado, vedor dos Coutos e Honras de Entre-Douro e Minho, cargo para que foi nomeado por carta régia datada de Lisboa a 6 de Abril da era de 1335, mandando conservar à igreja de S. Gens do Monte Longo as honras que até então esta possuía nas freguesias de Armil, Estorãos, Ribeiros, Quinchães e S.Gens. A sentença foi precedida de inquirição testemunhal em que foram ouvidos: Pedro Lopes, juiz de Monte Longo, Acenço Esteves, tabelião de Monte Longo, e outros Bons-Homens.
- Em 26 de Maio de 1350 foi proferida uma sentença por João Peres, juiz de Monte Longo, acerca das águas do casal de Pardelhas. A sentença foi lavrada em Ruivães por Vasco Esteves, tabelião de Monte Longo, sendo testemunhas entre outros Martim Affonso, tabelião do mesmo julgado. "

Questões colocadas nas aulas

Q1:

  • (2009-11-02) Após ler os textos dos dois exemplos acima, escolha um dos deles e:
    • a) Defina um contexto específico de trabalho, isto é um enquadramento e finalidade para o tratamento que quer dar aos documentos da família do exemplo escolhido;
    • b) Escreva então um DTD para definir um dialecto XML que lhe permita anotar documentos dessa família;
    • c) Anote o exemplo escolhido com o dialecto XML defindo na alínea anterior.

Fichas Práticas para Avaliação (a resolver fora das aulas)

F1:

  • ....

Notas e Links úteis


  • museu.tgz: Ficheiros XML para a construção de um Museu
GraphVizEmXP 23 Sep 2009 - 10:52 - r3 JoseFaria

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 )


Horario10 02 Oct 2011 - 22:33 - r3 PedroRangelHenriques

Engenharia de Linguagens (2010/2011)

Horário Anual (1º + 2º Semestres)

08h00 - 10h00 Módulo I Engenharia Gramatical
10h00 - 12h00 Módulo II Análise e Transformação de Software
12h00 - 13h00 Projecto Integrado Aula Tecnológica / Gestão / Seminários
14h00 - 16h00 Módulo III Processamento de Linguagem Natural
16h00 - 18h00 Módulo IV Processamento Estruturado de Documentos


MetodoAvaliacao 23 Oct 2010 - 08:13 - r8 PedroRangelHenriques

Engenharia de Linguagens (2010/2011)

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 + 40% PIfinal

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
  • PIfinal - 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 são de cariz misto = avaliação-continua (ensaios & implementações) + testes.
  • Os pesos e notas mínimas podem ser alterados ligeiramente durante o decorrer do semestre.


ObjectivosProjecto 18 Oct 2010 - 09:09 - r5 PedroRangelHenriques

Engenharia de Linguagens (2009/2010)

Projecto Integrado

Objectivos Gerais para a 1ª Fase:

  • Sistema:
    • Criar a base do sistema FOSSAT para receber e analisar pacotes de software.

  • Documentação
    • Relatório de Desenvolvimento detalhado, escrito em NoWed, de forma modular.

  • Apresentção
    • Acompanhada de um conjunto de slides em PPT ou PDF

Objectivos Específicos para a 1ª Fase:

  • PLN:
    • Criação de uma script para expandir os pacotes comprimidos cujas localizações serão passadas numa lista de parâmetros, colocando os ficheiros componentes em pastas diferenntes conforme seu tipo;
    • Criação de um Repositório de ficheiros ReadMe (ou de ChangeLog);

  • EG/ATS:
    • Desenvolvimento de um Processador de MakeFiles, com base na Gramática de Atributos da Linguagem Make e no Gerador AnTLR, que construa o Grafo de Dependências dos ficheiros e o represente graficamente usando Dot/Graphviz.

  • PED:
    • Defina um família de documentos anotados XML para armazenar o manifesto de cada pacote recebido e expandido.
    • Constrúa um sistme de pesquisa sofisticado, usando o SolR? ,para indexar uma colecção de manifestos (documentos XML)

Objectivos Específicos para a 2ª Fase:

  • PLN:
    • Construir um processador para páginas man do Unix/Linux. Considerar estes documentos definidos na própria notação do man, nmor formato pod (do perl) e em nrof. O processador deve extrair informação sobre o nome e pequen o resumo da ferramenta, noção de auotr, url e ainda sobre ferramentas relacionadas (secção "see also").
    • Para testar o processador desenvolvido os alunos devem usar todos os man do sistema operativo Linux. Como resultado devem produzir uma representação "pretty printed" da informação extraída de um ficheiro man.

  • EG/ATS:
    • Definir uma DSL (escrever a respectiva GIC) que permita:
      • descrever 1 ou mais pacotes de SW de acordo com os critérios definidos para o manifesto;
      • definir operações de Intersecção, União e Diferença entre manifestos de pacotes, dando um manifesto-resultado;
    • Usando uma GA, tomando por base a GIC anterior, e recorrendo ao AnTLR, implemente um procesador que leia um texto com descrições de pacotes e realize as operações indicadas. No fim deve gerar em XML o pacote-resultado por cada operação pedida.

  • PED:
    • Preparação conjunta de um artigo a submeter à XATA 2010.

Conjunto de Pacotes para a fase final do projecto:


ObjectivosProjecto10 18 Oct 2010 - 08:52 - NEW PedroRangelHenriques

Engenharia de Linguagens (2010/2011)

Projecto Integrado

Objectivos Gerais:

  • Sistema:
    • Criar .....

  • Documentação
    • Relatório de Desenvolvimento detalhado, escrito em NoWed, de forma modular.

  • Apresentção
    • Acompanhada de um conjunto de slides em PPT ou PDF

Objectivos por Fases

Objectivos para a 1ª Fase:

  • Documentação
    • Relatório de Desenvolvimento detalhado, escrito em NoWed, de forma modular.

  • Apresentção
    • Acompanhada de um conjunto de slides em PPT ou PDF

Objectivos Específicos para a 1ª Fase:

  • PLN:
    • Criação de .

  • EG/ATS:
    • Desenvolvimento de um Processador .

  • PED:
    • Constrúa um sistema .


PrimeiroSemestre 18 Oct 2010 - 04:38 - r7 PedroRangelHenriques

Engenharia de Linguagens (2009/2010)

Horário Primeiro Semestre

08h00 - 10h00 Módulo I Processamento Estruturado de Documentos
10h00 - 12h00 Módulo II Engenharia Gramatical
12h00 - 13h00 Projecto Integrado Aula Tecnológica / Gestão / Seminários
14h00 - 16h00 Módulo III Processamento de Libguagem Natural
16h00 - 18h00 Módulo IV Análise e Transformação de Software


ProgramaATS08 23 Sep 2009 - 10:52 - r3 JoseFaria

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.


ProgramaATS09 18 Oct 2010 - 05:51 - r6 PedroRangelHenriques

Engenharia de Linguagens (2009/2010)

Análise e Transformação de Software

Programa Resumido

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

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.

Metodologia de Ensino e Avaliação

  • As aulas de 2h tem sempre um cariz teórico-prático. Em cada aula:
    • no início é sempre feito um balanço da aula anterior e discutidos os trabalhos ou questões propostos;
    • depois algum tempo é dedicado a levantar questões teóricas e a apresentar as diferentes aproximações e metodologias que suportam a sua resolução; esta parte, embora de carácter teórico, desenvolve-se sempre em forma de diálogo com os alunos.
    • continua-se a aula numa parte mais prática em que os alunos são convidados a pesquisar e fazer uma sintese do que há já escrito sobre o assunto; ou então a desenvolver experimentação de ferramentas ou implementação de algorimtos.

  • A avaliação é feita com base em trabalhos entregues pelos alunos, resolvidos foras das aulas mas defendidos perante a turma. Os trabalhos para avaliação são de dois tipos:
    • monografias, com sinteses dos temas pesquisados;
    • trabalhos de implementação.

Bibliografia recomendada

  • Flemming Nielson, Hanne Riis Nielson, Chris Hankin, "Principles of Program Analysis. Springer, 452 pages, ISBN 3-540-65410-0, 2005.

  • Aho & Sethi & Ullman, "Compiler Principles, Techniques and Tools", Addison-Wesley, 1986.

  • Pittman & Peters, "The Art of Compiler Design: theory and pratice", Prentice-Hall, 1992.

  • Waite & Carter, "An Introduction to Compiler Construction", HarperCollin? College Publishers, 1993

  • Terrence Par, The Definitive Antlr Reference: Building Domain-Specific Languages, The Pragmatic Bookshelf, 2007


ProgramaATS10 03 Sep 2011 - 15:29 - r3 PedroRangelHenriques

Engenharia de Linguagens (2010/2011)

Análise e Transformação de Software

Programa Resumido

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

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.

Metodologia de Ensino e Avaliação

  • As aulas de 2h tem sempre um cariz teórico-prático. Em cada aula:
    • no início é sempre feito um balanço da aula anterior e discutidos os trabalhos ou questões propostos;
    • depois algum tempo é dedicado a levantar questões teóricas e a apresentar as diferentes aproximações e metodologias que suportam a sua resolução; esta parte, embora de carácter teórico, desenvolve-se sempre em forma de diálogo com os alunos.
    • continua-se a aula numa parte mais prática em que os alunos são convidados a pesquisar e fazer uma sintese do que há já escrito sobre o assunto; ou então a desenvolver experimentação de ferramentas ou implementação de algorimtos.

  • A avaliação é feita com base em trabalhos entregues pelos alunos, resolvidos foras das aulas mas defendidos perante a turma. Os trabalhos para avaliação são de dois tipos:
    • monografias, com sinteses dos temas pesquisados;
    • trabalhos de implementação.

Bibliografia recomendada

  • Flemming Nielson, Hanne Riis Nielson, Chris Hankin, "Principles of Program Analysis. Springer, 452 pages, ISBN 3-540-65410-0, 2005.

  • Aho & Sethi & Ullman, "Compiler Principles, Techniques and Tools", Addison-Wesley, 1986.

  • Pittman & Peters, "The Art of Compiler Design: theory and pratice", Prentice-Hall, 1992.

  • Waite & Carter, "An Introduction to Compiler Construction", HarperCollin? College Publishers, 1993

  • Terrence Par, The Definitive Antlr Reference: Building Domain-Specific Languages, The Pragmatic Bookshelf, 2007


ProgramaEG08 23 Sep 2009 - 10:52 - r3 JoseFaria

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 modular/incremental de GAs (aproximação OO e AO).
  • 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.
  • 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.

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 (protótipos) 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 representar, armazenar e manipular eficientemente o Conhecimento com base em árvores de sintaxe ou grafos.
  • Capacidade para medir gramáticas e avaliar a sua qualidade.


ProgramaEG09 18 Oct 2010 - 05:45 - r7 PedroRangelHenriques

Engenharia de Linguagens (2009/2010)

Engenharia Gramatical

Programa Resumido

  • 1.Linguagens e Gramáticas; Caracterização destes conceitos e domínios do saber.
  • 2. Conceitos sobre Gramáticas de Atributos (GA); definição formal; desenvolvimento de GAs (aproximação monolítica versus modular, incremental).
  • 3. Processamento de Linguagens baseado em GAs (tradução dirigida pela semântica).
    • 3.1 Notações gramaticais;
    • 3.2 Geração de Programas (processadores de Linguagens, protótipos rápidos) a partir de GAs.
  • 4. O paradigma da Programação baseada em Gramáticas (PG).
  • 5. Qualidade de Linguagens; dimensões de avaliação e definição; critérios.
  • 6. Qualidade de Gramáticas; dimensões de avaliação e definição; critérios.
    • 6.1 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.
  • 7. 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 (protótipos) 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.

Metodologia de Ensino e Avaliação

  • As aulas de 2h tem sempre um cariz teórico-prático. Em cada aula:
    • no início é sempre feito um balanço da aula anterior e discutidos os trabalhos ou questões propostos;
    • depois algum tempo é dedicado a levantar questões teóricas e a apresentar as diferentes aproximações e metodologias que suportam a sua resolução; esta parte, embora de carácter teórico, desenvolve-se sempre em forma de diálogo com os alunos.
    • continua-se a aula numa parte mais prática em que os alunos são convidados a pesquisar e fazer uma sintese do que há já escrito sobre o assunto; ou então a desenvolver experimentação de ferramentas ou implementação de algorimtos.

  • A avaliação é feita com base em trabalhos entregues pelos alunos, resolvidos foras das aulas mas defendidos perante a turma. Os trabalhos para avaliação são de dois tipos:
    • monografias, com sinteses dos temas pesquisados;
    • trabalhos de implementação.

Bibliografia recomendada

  • Aho & Sethi & Ullman, "Compiler Principles, Techniques and Tools", Addison-Wesley, 1986.

  • Pittman & Peters, "The Art of Compiler Design: theory and pratice", Prentice-Hall, 1992.

  • Waite & Carter, "An Introduction to Compiler Construction", HarperCollin? College Publishers, 1993.

  • James F. Power and Brian A. Malloy, "A metrics suite for grammar-based software". Journal of Software Maintenance and Evolution: Research and Practice, Vol 16, Nº 6, pp 405-426, 2004.

  • Julien Cervelley, Matej Crepin¨ek, Rémi Foraxy, Toma¸ Kosar, Marjan Mernik and Gilles Roussel, "On Defining Quality Based Grammar Metrics". Proceedings of the International Multiconference on Computer Science and Information Technology, pp. 651–658, 2009.

  • Tiago Alves and Joost Visser, "A Case Study in Grammar Engineering". Lecture Notes in Computer Science, Volume 5452/2009, pp 285-304, 2009.

  • John M. Roche, "Software metrics and measurement principles", SIGSOFT Softw. Eng. Notes, ACM, volume 19, number 1, 1994.

  • Tom Mens, Serge Demeyer, "Future trends in software evolution metrics", Proceedings of the 4th International Workshop on Principles of Software Evolution, ACM, 2001.

  • Norman Fenton, Martin Nail, "Software metrics: roadmap", Proceedings of the Conference on The Future of Software Engineering, ACM 2000.


ProgramaEG10 03 Sep 2011 - 14:49 - r3 PedroRangelHenriques

Engenharia de Linguagens (2010/2011)

Engenharia Gramatical

Programa Resumido

  • 1.Linguagens e Gramáticas; Caracterização destes conceitos e domínios do saber.
  • 2. Conceitos sobre Gramáticas de Atributos (GA); definição formal; desenvolvimento de GAs (aproximação monolítica versus modular, incremental).
  • 3. Processamento de Linguagens baseado em GAs (tradução dirigida pela semântica).
    • 3.1 Notações gramaticais;
    • 3.2 Geração de Programas (processadores de Linguagens, protótipos rápidos) a partir de GAs.
  • 4. O paradigma da Programação baseada em Gramáticas (PG).
  • 5. Qualidade de Linguagens; dimensões de avaliação e definição; critérios.
  • 6. Qualidade de Gramáticas; dimensões de avaliação e definição; critérios.
    • 6.1 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.
  • 7. 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 (protótipos) 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.

Metodologia de Ensino e Avaliação

  • As aulas de 2h tem sempre um cariz teórico-prático. Em cada aula:
    • no início é sempre feito um balanço da aula anterior e discutidos os trabalhos ou questões propostos;
    • depois algum tempo é dedicado a levantar questões teóricas e a apresentar as diferentes aproximações e metodologias que suportam a sua resolução; esta parte, embora de carácter teórico, desenvolve-se sempre em forma de diálogo com os alunos.
    • continua-se a aula numa parte mais prática em que os alunos são convidados a pesquisar e fazer uma sintese do que há já escrito sobre o assunto; ou então a desenvolver experimentação de ferramentas ou implementação de algorimtos.

  • A avaliação é feita com base em trabalhos entregues pelos alunos, resolvidos foras das aulas mas defendidos perante a turma. Os trabalhos para avaliação são de dois tipos:
    • monografias, com sinteses dos temas pesquisados;
    • trabalhos de implementação.

Bibliografia recomendada

  • Aho & Sethi & Ullman, "Compiler Principles, Techniques and Tools", Addison-Wesley, 1986.

  • Pittman & Peters, "The Art of Compiler Design: theory and pratice", Prentice-Hall, 1992.

  • Waite & Carter, "An Introduction to Compiler Construction", HarperCollin? College Publishers, 1993.

  • James F. Power and Brian A. Malloy, "A metrics suite for grammar-based software". Journal of Software Maintenance and Evolution: Research and Practice, Vol 16, Nº 6, pp 405-426, 2004.

  • Julien Cervelley, Matej Crepin¨ek, Rémi Foraxy, Toma¸ Kosar, Marjan Mernik and Gilles Roussel, "On Defining Quality Based Grammar Metrics". Proceedings of the International Multiconference on Computer Science and Information Technology, pp. 651–658, 2009.

  • Tiago Alves and Joost Visser, "A Case Study in Grammar Engineering". Lecture Notes in Computer Science, Volume 5452/2009, pp 285-304, 2009.

  • John M. Roche, "Software metrics and measurement principles", SIGSOFT Softw. Eng. Notes, ACM, volume 19, number 1, 1994.

  • Tom Mens, Serge Demeyer, "Future trends in software evolution metrics", Proceedings of the 4th International Workshop on Principles of Software Evolution, ACM, 2001.

  • Norman Fenton, Martin Nail, "Software metrics: roadmap", Proceedings of the Conference on The Future of Software Engineering, ACM 2000.


ProgramaPLN09 19 Oct 2009 - 10:41 - NEW JoseJoao

Engenharia de Linguagens

Scripting no Processamento de Linguagem Natural

Programa Resumido

  • Linguagens de scripting:
    • características, objectivos e conceitos.
    • introdução a uma linguagem de Scripting (e.g. Perl).
  • Processadores de linguagens regulares e programação orientada à expressão regular.
  • Design Patterns no processamento de linguagens.
  • Linguagens baseadas em regras:
    • reescrita textual e DSLs baseadas em regras de reescrita.
    • sistemas de produção.
  • Processamento estrutural de árvores e DSLs baseadas nestes processadores.
  • Processamento de Linguagem Natural: Análise Morfo-sintáctica de textos em língua natural:
    • Modelos morfológicos.
    • Gramáticas lógicas e DCGs.
    • Parsing robusto.
  • Processamento de Linguagem Natural: semântica e pragmática.
  • Dicionários (multi-fonte) e Thesaurus.
  • Extracção de Conhecimento a partir de Textos.
  • Sumarização e Classificação.
  • Tradução automática.

Resultados de Aprendizagem Específicos

  • Ser capaz de escrever scripts para automatização de uma variedade de tarefas e transformações.
  • Ser capaz de resolver problemas usando transformações via Expressões Regulares.
  • Ser capaz de compreender as vantagens e o funcionamento de sistemas guiados por regras de produção
  • (condição-reacção).
  • Ser capaz de construir Linguagens de Domínio Específico (DSLs) concretas.
  • Ser capaz de construir e usar corpora.
  • Ser capaz de extrair informação diversa a partir de corpora.
  • Ser capaz de construir dicionários electrónicos.
  • Ser capaz de construir pequenos protótipos para modelar linguagem natural.


ResultadosAvaliacao 23 Sep 2009 - 10:52 - r9 JoseFaria

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


ResultadosAvaliacao09 29 Jul 2010 - 07:25 - r8 PedroRangelHenriques

Engenharia de Linguagens (2009/2010)

Resultados de Avaliação

G Nome EL ATS PLN PI PI FINAL
          1ª Fase Final  
1 José Freitas 19 19 17 18 19 19
1 Hélder Silva 18 18 16 18 19 18
2 André Rocha 15 15 15 12 16 15
2 Márcio Coelho 16 17 15 12 16 16
3 Daniel Rocha 17 16 17 17 18 17
3 Jorge Mendes 17 16 18 17 18 17
4 André Santos 15 17 16 12 16 16
4 Carlos Miguel Regedor 15 17 16 12 16 16

SegundoSemestre 23 Sep 2009 - 10:52 - r3 JoseFaria

Engenharia de Linguagens

Horário Segundo Semestre


SumariosATS08 23 Sep 2009 - 10:52 - r14 JoseFaria

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.

SumariosATS09 27 May 2011 - 21:52 - r36 PedroRangelHenriques

Engenharia de Linguagens (2009/10)

Análise e Transformação de Software

Sumários

31 Maio de 2010

  • Apresentação do Laboratório online GamaSlicer para verificação de componentes Java anotados em JML e realização de Slicing Semântico (specification-based, assertion-based e contract-based): arquitectura, discussão da abordagem e exemplificação.
  • Apresentação do sistema integrado para edição, análise, transformação e slicing de programas em C-- desenvolvido pelo aluno José Luis Freitas, usando a representação intermédia como uma hierarquia de classes discutida na aula anterior.

24 Maio de 2010

  • Apresentação do sistema genérico para análise, visualização e exploração de documentos anotados em XML, eXVisXML: arquitectura, discussão da abordagem e exemplificação.
  • Discussão da resolução do exercício prático da última aula backward slice de um programa em C--: representação intermédia como uma hierarquia de classes.

17 Maio de 2010

  • Apresentação do sistema genérico para visualização e animação de programas, Alma: arquitectura, discussão da abordagem e demonstração.
  • Proposta de exercício prático: backward slice de um programa em C--
    • Formulação de um exemplo:
      Em relação ao programa C-- abaixo
          0 void fun() {
          1   int a, b, flag;
          2   float res;
          3   scanf("%d",&flag);
          4   scanf("%d %d",&a,&b);
          5   if (flag)
          6     { res = a/2; }
          7   else
          8     { res = b/2; }
          9  printf("%f",res);
         10  printf("%f",res++)
         }
      Faço o slice em relação aos critérios:
      SC1: ( i8, {b} )
      SC2: ( i8, {res} )
      SC3: ( i9, {res} )
      SC4: ( i10,{res} ) 
      

03 Maio de 2010

  • Aula ocupada com a apresentação, discussão e avaliação do Projecto Integrado (PI) -- 3ªfase.

26 de Abril de 2010

  • Introdução formal ao Slicing:
    • o conceito de Slicing Estático clássico, Backward e Forward.

  • Apresentação e Definição formal de algumas estruturas clássicas para Análise de Programas:
    • System Dependence Graph (SDG) --- construção de exemplos

19 de Abril de 2010

  • Introdução informal ao Slicing:
    • o papel do Slicing na Análise de Programas -- como instrumento de debug; como instrumento de cálculo incremental.

  • Apresentação e Definição formal de algumas estruturas clássicas para Análise de Programas:
    • Control Flow Graph (CFG); construção de um exemplo.
    • Program Dependence Graph (PDG); construção de um exemplo.
    • System Dependence Graph (SDG).

12 de Abril de 2010

  • Apresentação e discussão sobre ferramentas de transformação e análise de programas. Ferramentas apresentadas:
    • FermaT: pelos alunos André Santos e Miguel Regedor --- PDF.

  • Discussão (à laia de balanço dos trabalhos práticos e estudos anteriores) em torno dos requisitos desejáveis para uma Ferramentas de Transformação de Programas (FTP, ou PTT) tendo sido identificados os seguintes:
    • Existem duas abordagens possíveis que podem ser integradas no mesmo ambiente de transformação:
      • 1 - Filtro de texto para pequenas transformações dirigidas ao padrão. Neste caso era importante poder integrar a definição de gramaticas incompletas (fuzzy?) no filtro, tipo:
         X  ->   ...  (Decls) ...  
      • 2 - Processador de linguagens com a definição da gramática da linguagem do programa que se tenciona transformar. Neste caso, a transformação poderá ocorrer caso a regra seja verificada sintacticamente e também semanticamente (a pensar) e deve ser especificada na forma:
         Padrão(regra) -> Acção 
    • Deve haver a possibilidade de integrar transformações pre-definidas (standard?); por exemplo:
      • substituição sistemática de palavras-chave;
      • troca de ordem de sub-árvores.

15 de Março de 2010

  • Distribuição de novas tarefas pelos 4 grupos, na sequência das apresentações feitas; desenvolvimento de uma solução para a transformação de C-- nas 3 primeiras ferramentas e procura de uma alternativa para o último caso.

  • Resolução de exercícios:
    • Ficha II -- o 2ª requisito (cont.): detecção de usos de identificadores não-declarados em programas escritos na linguagem C-- e geração de declarações; análise e discussão das propostas apresentadas pelos alunos José Luis Freitas (inserção na escrita) e Daniel Rocha (inserção na árvore).

08 de Março de 2010

  • Apresentação e discussão sobre ferramentas de transformação e análise de programas. Ferramentas apresentadas:

01 de Março de 2010

  • Resolução de exercícios:
    • Ficha II -- o 2ª requisito (cont.): detecção de usos de identificadores não-declarados em programas escritos na linguagem C-- e geração de declarações; análise e discussão das propostas apresentadas pelos vários grupos.

  • Distribuição de 4 ferramentas de análise e transformação de código pelos 4 grupos: definição clara dos objectivos a atingir com este estudo (comparação de "filosofias" de trabalho e de capacidades oferecidas); discussão da possibilidade de esrita de um artigo conjunto sobre esta temática, para submissão ao CoRTA2010.

22 de Fevereiro de 2010

  • Resolução de exercícios:
    • Ficha II -- o 2ª requisito: detecção de usos de identificadores não-declarados em programas escritos na linguagem C-- e geração de declarações; análise e discussão das propostas apresentadas pelos vários grupos.

  • Distribuição de 4 ferramentas de análise e transformação de código pelos 4 grupos:
    • Jorge + Daniel: Stratego
    • José Luís + Hélder: TXL
    • André + Miguel: DMS
    • André + Márcio: Meta-Environment/Rascal

25 de Janeiro de 2010

  • Cont. da Discussão com os alunos sobre os trabalhos realizados com o tema "Transformação de Programas": discussão de tipos de transformação; ferramentas.

  • Introdução à novidade do AnTLR para transformação de programas por Tree Pattern Matching: conceito básico e exemplo.

18 de Janeiro de 2010

  • Discussão com os alunos sobre os trabalhos realizados com o tema "Transformação de Programas".
    • Discussão de tipos de transformação:
      • Translation: nesta categoria incluem-se os seguintes processos - program synthesis, program migration, reverse engineering e program analysis.
      • Rephrasing: nesta categoria incluem-se os seguintes processos - Program Normalization, Program Optimization, Program Refactoring, Program Reflection e Software Renovation.
    • Discussão dos paradigmas introduzidos pelos alunos Márcio Coelho e André Rocha:
      • Mesmo input, diferentes outputs;
      • Diferentes inputs, mesmo outputs;
      • Mesmo input, mesmo outputs;
      • Diferentes inputs, diferentes outputs.

11 de Janeiro de 2010

  • Continuação da Resolução da Ficha da aula anterior.

04 de Janeiro de 2010

  • Resolução de exercícios:
    • Ficha II -- continuação da discussão sobre o 1ª requisito: implementação em AnTLR da construção de uma Tabela de Identificadores para a linguagem C--; análise e discussão das propostas apresentadas por todos os grupos que, de uma forma geral:
      • implementaram a TabId como uma HashMap em Java indexado por uma chave dupla formada pelo Id e pelo seu Scope, recorrendo a um VectorArray para guardar os respectivos atributos;
      • usaram uma Tree-Grammar (GA Abstracta);
      • recorreram a atributos herdados para fazer descer na árvore a TabId actual e o Scope;
      • recorreram a atributos sintetizados para trazer para a raiz da árvore a nova TabId e as características de cada identificador (de variável, de parâmetro, ou de função) encontrado.

  • Para continuar a resolver a Ficha II (transformação do código fonte, para reorganizar declarações de variáveis face ao seu uso), foi apreentada a nova, muito recente, funcionalidade do AntLR (3ª estratégia disponível) que permite implementar a transformação usando Tree-Patterns.

14 de Dezembro de 2009

  • Resolução de exercícios:
    • Ficha II -- continuação da discussão sobre o 1ª requisito: construção de uma Tabela de Identificadores em C--, possíveis implementações deste mapping em Java; implementação em AnTLR, possíveis estratégias clássicas (usando apenas 1 GA concreta, ou usando uma Tree-Grammar abstracta com atributos).

07 de Dezembro de 2009

  • Transformação e manipulação de Programas usando gramáticas de atributos; sistematização das diferentes abordagens possíveis (cálculo durante o parsing e cálculo em fase posterior, sobre a AST).

  • Resolução de exercícios:
    • Ficha II -- discussão muito profunda e detalhada sobre o 1ª requisito: construção de uma Tabela de Identificadores em C--, conceito, atributos a armazenar e estrutura; aproximação conceptual/abstracta e estratégia de implementação em AnTLR.

30 de Novembro de 2009

  • Transformação e manipulação de Programas usando gramáticas de atributos; implementação em AnTLR com LAGs, ou com construção e travessia de Árvores (TreeGrammars em AnTLR).
  • GAs de ordem superior em AnTLR: uso de um atributo do tipo Tree.

  • Resolução de exercícios:
    • Ficha I -- Discussão/comparação das soluções já desenvolvidas por alguns dos alunos e continuação do trabalho nesse problema.
    • Ficha II -- apresentação do enunciado.

23 de Novembro de 2009

  • Transformação e manipulação de Programas usando gramáticas de atributos; implentação em AnTLR com LAGs, ou com construção e travessia de Árvores (TreeGrammars em AnTLR).
  • GAs de ordem superior em AnTLR: uso de um atributo do tipo Tree.

  • Resolução de exercícios:
    • Ficha I: Conversão de um programa de SQL1 (sem UPDATES) para SQL2 (substituindo sequências de REMOVE/INSERT na mesma chaves por UPDATE).

16 de Novembro de 2009

  • Classificação das Gramáticas de Atributos e sua relação com o cálculo---*PureS, LAG, OAG*; o impacto das classes no Grafo de Dependências Global e o problema da determinação de uma ordem topológica (e total); as classes e os Geradores de Compiladores (Calculadores de Atributos); manuseamento de gramáticas OAG em AntLR -- as TreeGrammars.

  • Resolução de exercícios sobre gramáticas de atributos em AnTLR:
    • Processar uma lista de nomes próprios (correspondentes a Filhos de uma família), seguida do nome e apelido da mãe, bem como do nome e apelido do pai (conclusão deste exerc+icio da aula anterior).
    • Processar uma Declaração de Variáveis em Pascal (lista de identificadores seguidos do seu tipo) inserindo na Tabela de Identificadores os pares (IdVar? ,IdTipo).

9 de Novembro de 2009

  • Resolução de exercícios sobre gramáticas de atributos em AnTLR:
    • Processar uma lista de items (números inteiros ou palavras) e calcular a soma dos números encontrados na respectiva lista. Porém o somatório só deve iniciar-se após surgir a 1ª ocorrência da palavra "agora"; a resolução em AnTLR deste exercício pode ser encontrada aqui: (listaAgora.g). No fim da aula foi proposta, como trabalho para casa, uma alteração a este exercício em que a palavra "agora" actuasse como "toggle", i. é, começa a adicionar quando aparece a palavra "agora" e deixa de adicionar quando chega ao fim ou aparece de novo a palavra "agora" e assim sucessivamente para as próximas corrências dessa palavra.
    • Processar uma lista de nomes próprios (correspondentes a Filhos de uma família), seguida do nome e apelido da mãe, bem como do nome e apelido do pai. Para cada um dos filhos na lista, gerar uma instrução SQL para adionar a uma base de dados um registo para o filho compondo o seu nome próprio com o apelido do pai seguido do apelido da mãe (à espanhola).

2 de Novembro de 2009

  • Introdução à construção de Árvores de Sintaxe Abstractas (AST, Abstract Syntax Tree) em ANTLR. Construção da gramática em AnTLR com ouput AST para o exemplo da aula anterior: (declarations.g)
  • Introdução à utilização de Tree Grammars em AnTLR. Introdução dos operadores ->, ^ e !
  • Construção da respectiva Tree Grammar para o exemplo anterior: (declarationsAST.g)
  • Introdução de atributos, na Tree Grammar, para cálculo da Tabela de Identificadores.

26 de Outubro de 2009

  • Resolução das alínea f1-4) do Exercício 2 com recurso às Gramáticas de Atributos.
  • Discussão com os alunos das diferenças em relação às Gramáticas Tradutoras.

19 de Outubro de 2009

  • Resolução da alínea f1,2) do Exercício 2 ( a alínea f3) ficou como trabalho de casa e f4) será desenvolvida na próxima aula):
    • criação de uma Gramática Tradutora, juntando Acções Semânticas (com um ou mais atributos sintetisados associados ao LHS) à GIC optimizada escrita pelo Daniel (ver aqui GICexe2) para calcular e imprimir diversos resultados que se podem extrair de frases concretas da linguagem-fonte;
    • exploração de todas as facetas do ambiente AnTLR-Works.

12 de Outubro de 2009

  • Resolução do Exercício 1 (enunciado descrito nas Fichas Práticas de Engenharia Gramatical).
    • Ficheiro com resolução em AnTLR: black.g
  • Resolução das alíneas a), b) e c) do Exercício 2.

28 de Setembro de 2009

  • A. Apresentação da disciplina
    • 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.
  • B. Apresentação dos Temas de Tese paa os alunos do 2ºano do MI/MEI (edic. 2008/09)


SumariosATS10 19 Jun 2011 - 05:38 - r26 PedroRangelHenriques

Engenharia de Linguagens (2010/11)

Análise e Transformação de Software

Sumários

27 de Setembro de 2010

  • A. Apresentação da disciplina
    • I.1 Introdução e Motivação para a área de Análise e Transformação de SW.

11 de Outubro de 2010

  • Resolução do Exercício 1 sobre Gramáticas, GIC e GT (enunciado descrito nas Fichas Práticas de Engenharia Gramatical).

18 de Outubro de 2010

  • Continução da Resolução do Exercício 1 sobre Gramáticas, GIC e GT (enunciado descrito nas Fichas Práticas de Engenharia Gramatical).

25 de Outubro de 2010

  • Continução da Resolução do Exercício 1 sobre Gramáticas, agora para introdução às GA e à ferramenta Silver (enunciado descrito nas Fichas Práticas de Engenharia Gramatical; e conteúdo da aula descrito no Módulo de EG (sumários)).

08 de Novembro de 2010

  • Resolução do Exercício 2 sobre Gramáticas, para introdução às GA e à ferramenta Silver (enunciado descrito nas Fichas Práticas de Engenharia Gramatical; e conteúdo da aula descrito no Módulo de EG (sumários)).

15 de Outubro de 2010

  • Continuação da introdução às GA, às árvores de sintaxe abstrata (AST) e à ferramenta Silver, agora com um novo exemplo da calculadora de expressões "dc -- desktop calculator languag" (conteúdo da aula descrito no Módulo de EG (sumários)).

22 de Novembro de 2010

  • Não dei aula por estar na Universidade Nacional de SanLuis? , Argentina, no contexto da visita anual do projecto de cooperação bilateral Quixote (aula dada por JGR, a compensar ainda em dezembro).

29 de Novembro de 2010

  • Não dei aula por estar na Universidade Nacional de SanLuis? , Argentina, no contexto da visita anual do projecto de cooperação bilateral Quixote (aula dada por JGR, a compensar ainda em dezembro).

06 de Dezembro de 2010

  • Resolução do Exercício 3 sobre Linguagens e Gramáticas, para sedimentar os conhecimentos já introduzidos sobre GAs. Análise da estrutura fisica de uma factura para escolha dos simbolos não-terminais e terminais e dos atributos que permitam descrever o processamento que traduza a semântica desejada; construção das variantes linguisticas pedidas por extensão ou adaptação da gramática; definição das regras para cálculo dos atributos sintetizados.

  • Continuação da discussão sobre ferramentas para geração de processadores de linguaguens como o sistema Silver, o LISA ou o AnTLR --- a linguagem de programação para escrita das regras de cálculo dos atributos: escolha entre uma linguagem própria e específica ou uma GPL (General Purpose Language), vantagens e inconvenientes.

13 de Dezembro de 2010

  • Introdução à ferramenta para geração de processadores de linguaguens AnTLR --- filosofia geral, alguma regras básicas e as funcionalidades do ambiente de desenvolvimento AnTLRWorks. Utilização do Exercício 2 sobre Linguagens e Gramáticas (a linguagem Lisp e as SExpressions), para sedimentar os conhecimentos já introduzidos sobre GAs e para explicar o uso do AnTLR.

03 de Janeiro de 2011

  • Introdução à ferramenta para geração de processadores de linguaguens AnTLR (cont.) --- alguma regras básicas e as funcionalidades do ambiente de desenvolvimento AnTLRWorks. Utilização do Exercício 3 sobre Facturas para sedimentar os conhecimentos já introduzidos sobre GAs e para explicar o uso do AnTLR.

10 de Janeiro de 2011

  • Introdução à ferramenta para geração de processadores de linguaguens AnTLR (cont.) --- alguma regras básicas e as funcionalidades do ambiente de desenvolvimento AnTLRWorks. Desenvolvimento de um compilador para uma linguagem de cálculo de expressões, para sedimentar os conhecimentos já introduzidos sobre GAs e para explicar o uso do AnTLR.

17 de Janeiro de 2011

  • Introdução à ferramenta para geração de processadores de linguaguens AnTLR (cont.) e ao ambiente de desenvolvimento AnTLRWorks; sedimentação dos conhecimentos já introduzidos sobre GAs.

  • Cont. do Desenvolvimento de um compilador para uma linguagem de cálculo de expressões: escolha dos atributos herdados e sintetizados para análise semântica estática---construção da TabId por recolha dos pares <identificador,tipo>; verificação de re-declarações; type-checking .

** 2º SEMESTRE ***

21 de Fevereiro de 2011

  • A ferramenta para geração de processadores de linguaguens AnTLR e o ambiente de desenvolvimento AnTLRWorks.

  • Sedimentação dos conhecimentos já introduzidos sobre GAs e introdução aos exercícios sobre Análise de Programas---enunciado do problema para as próximas aulas: análise de programas em LogoLISS; escrita de um programa para transporte da gramática Yacc para AnTLR.

  • Cont. do Desenvolvimento de um compilador para uma linguagem de cálculo de expressões: escolha dos atributos herdados e sintetizados para análise semântica estática---construção da TabId por recolha dos pares <identificador,tipo>; verificação de re-declarações; type-checking .

28 de Fevereiro de 2011

  • Apresentação teórico-prática do trabalho de mestrado do Hugo Areias: retargetting da ferramenta AnTLR de modo a gerar Processadores de Linguagens em Perl --- o problema, a estratégia (ou o caminho) seguido, os resultados atingidos.

  • Discussão da forma como usar Perl para se comportar como o Java (a run-time Library).

07 de Março de 2011

  • Não houve aula --- 2ªf de Entrudo.

14 de Março de 2011

  • A ferramenta para geração de processadores de linguaguens AnTLR e o ambiente de desenvolvimento AnTLRWorks.

  • Sedimentação dos conhecimentos já introduzidos sobre GAs e exercícios sobre Análise de Programas: análise de programas em LogoLISS; escrita de um programa para transporte da gramática Yacc para AnTLR.

21 de Março de 2011

  • Sedimentação dos conhecimentos já introduzidos sobre GAs e exercícios sobre Análise de Programas: análise de programas em LogoLISS; escrita de um programa para transporte da gramática Yacc para AnTLR (cont. do projeto).

28 de Março de 2011

  • Sedimentação dos conhecimentos já introduzidos sobre GAs e exercícios sobre Análise de Programas: análise de programas em LogoLISS; escrita da gramática AnTLR e eliminação de conflitos (cont. do projeto).

04 de Abril de 2011

  • A ferramenta para geração de processadores de linguaguens AnTLR e o ambiente de desenvolvimento AnTLRWorks: introdução aos construtores para criar árvores de sintaxe abstrata com atributos (AST) e para sua manipulação; filosofia de trabalho usando o par "grammar / tree-grammar".

  • Cont. do projeto para Sedimentação dos conhecimentos já introduzidos sobre GAs e exercícios sobre Análise de Programas: análise de programas em LogoLISS; escrita da gramática AnTLR e eliminação de conflitos (cont. do projeto).

11 de Abril de 2011

  • Cont. do projeto para Sedimentação dos conhecimentos já introduzidos sobre GAs e exercícios sobre Análise de Programas: análise de programas em LogoLISS; escrita da gramática AnTLR e eliminação de conflitos (cont. do projeto); definição de atributos para construção da Tabela de Identificadores (definição da sua estrutura em termos genéricos).

  • a noção de Bloco e do Nível de aninhamento; o âmbito de validade das declarações (scope) e as regras de visibilidade.

18 de Abril de 2011

  • Não houve aula --- férias de Páscoa.

25 de Abril de 2011

  • Não houve aula --- feriado nacional comemorativo da Revolução dos Cravos.

02 de Maio de 2011

  • Aula usada para apresentação e avaliação parcial do Projeto Integrado (PI) -- 3ª fase (apresentação teórica).

09 de Maio de 2011

  • Cont. do projeto para Sedimentação dos conhecimentos já introduzidos sobre GAs e exercícios sobre Análise de Programas: análise de programas em LogoLISS; escrita da gramática AnTLR e eliminação de conflitos (cont. do projeto); definição de atributos para construção da Tabela de Identificadores (definição da sua estrutura em termos genéricos) --- exploração das facilidades do AnTLR para construir e manipular AST; discussão da solução seguida por alguns dos grupos.

16 de Maio de 2011

  • Cont. do projeto para Sedimentação dos conhecimentos já introduzidos sobre GAs e exercícios sobre Análise de Programas: análise de programas em LogoLISS; escrita da gramática AnTLR e eliminação de conflitos (cont. do projeto); definição de atributos para construção da Tabela de Identificadores (definição da sua estrutura em termos genéricos) --- exploração das facilidades do AnTLR para construir e manipular AST; discussão da solução seguida por alguns dos grupos.

23 de Maio de 2011

  • Cont. do projeto para Sedimentação dos conhecimentos já introduzidos sobre GAs e exercícios sobre Análise de Programas: análise de programas em LogoLISS; exploração das facilidades do AnTLR para construir e manipular AST; discussão da solução seguida por cada grupo.
Exemplo de manipulação de Árvores em AnTLR

30 de Maio de 2011

  • Manhã totalmente dedicada ao projeto integrado (PI).

06 de Junho de 2011

  • Manhã parcialmente dedicada ao fecho de EG e ao projeto integrado (PI).

13 de Junho de 2011

Fecho da Disciplina, Balanço final:

  • Análise, Representação Intermédia (tabela de identificadores, árvore de sintaxe (decorada com atributos), grafos de fluxo e de dependências), Estratégias de Travessia e Transformações.

  • Análise Estática versus Análise Dinâmica; Instrumentação de Código e Inspétores.

  • Slicing: conceito e definição; estático versus dinâmico; sintático versus semântico; aplicações tradicionais e novas aplicações (verificação de programas anotados com contratos); Slicing de código fonte e de código intermédio e slicing de outras linguagens; slicing de documentos XML.


SumariosEG08 23 Sep 2009 - 10:52 - r30 JoseFaria

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


SumariosEG09 18 Oct 2010 - 05:20 - r40 PedroRangelHenriques

Engenharia de Linguagens (2010/2011)

Engenharia Gramatical

Sumários

31 Maio de 2010

  • GraAlEditor, um editor-analisador de Gramáticas:
    • Preparação de um artigo a submeter ao CoRTA2010: discussão dos contributos dos 4 grupos em termos de funcionalidades (visualização incluida, ou não) e da arquitectura;
    • Próxima tarefa: desenvolver a secção especific distribuida a cada grupo.

24 Maio de 2010

  • GraAlEditor, um editor-analisador de Gramáticas:
    • Preparação de um artigo a submeter ao CoRTA2010: discussão dos contributos dos 4 grupos, definição dos objectivos do artigo e da sua estrutura (secções e seu conteúdo) e escrita do Abstract;
    • Próxima tarefa: definir e enviar proposta de arquitectura.

17 Maio de 2010

  • GraAlEditor, um editor-analisador de Gramáticas:
    • Preparação de um artigo a submeter ao CoRTA2010: foi decidido que cada grupo enviaria por email um Abstract completo em inglês até 5ªf à noite para ser depois feita a fusão (PRH+DCC).

  • Introdução às Métricas para Gramáticas de Atributos
    • Métricas de Tamanho:
      • (MTA1) #A = #AS + #AH
      • (MTA2) #RC (regras de cálculo)
      • (MTA3) #CC (condições de contexto)
      • (MTA4) #RT (regras de tradução)
      • (MCA1) FanIN (valor médio considerando os GDLocais a todos as p em P)
      • (MCA2) FanOUT (valor médio considerando os GDLocais a todos as p em P)
    • Métricas de Forma:
      • (MFA1) Complexidade dos Atributos: (#ACompl / #A)
        • #Atributos Atómicos
        • #Atributos Complexos
      • (MFA2) Complexidade das Operações: (#OCompl / (#RT + #CC + #RT))
        • #OSimples
        • #OComplex
      • (MFA3) Esquema de Cálculo I
        • RCpureS (puramente Sintetizado)
        • RCpureI (puramente Herdado)
        • RCmixSI
      • (MFA4) Esquema de Cálculo II
        • RCAgregadas
        • RCNãoAgregadas
      • (MFA5) Esquema das Restrições Contextuais
        • CCTop
        • CCBottom
        • CCCentered
      • (MFA6) Esquema das Regras de Traduçao
        • RTTop
        • RTBottom
        • RTCentered

03 Maio de 2010

  • Revisão dos elementos já disponíveis para avaliação dos alunos a este módulo.

  • Revisão dos Critérios para avaliar a qualidade das gramáticas, GIC e GA: usabilidade (em termos de leitura, derivação de frases e manutenção); e eficiência (em termos reconhecedor/processor gerado, e geração) e métricas; Discussão da relação das métricas obtidas com a qualidade da linguagem.

  • GraAlEditor, um editor-analisador de Gramáticas:
    • Preparação de um artigo a submeter ao CoRTA2010: definição do título, abstratct e estrutura (LaTeX distribuido por email para todos os alunos).

26 Abril de 2010

  • GraAlEditor, um editor-analisador de Gramáticas (ficha 3):
    • Discussão dos Trabalhos realizados pelos grupos:
      • André Rocha e Márcio Gomes

19 Abril de 2010

  • GraAlEditor, um editor-analisador de Gramáticas (ficha 3):
    • Discussão dos Trabalhos realizados pelos grupos:
      • Daniel Rocha e Jorge Mendes

12 Abril de 2010

  • GraAlEditor, um editor-analisador de Gramáticas (ficha 3):
    • Discussão dos Trabalhos realizados pelos grupos:
      • André Santos e Miguel Regedor
      • José Luis Freitas e Helder Silva

15 Março de 2010

  • Cálculo das métricas para a gramática do Exemplo 5 :

  Original GIC5T1 GIC5T2
#T 14 14 14
#NT 12 7 14
#P 17 9 19
#PU 5 0 5
#R 3 0 3
$RHS 38/17=2.24 27/9=3 40/19=2.11
$ALT 17/12=1.42 9/7= 1.29 19/14=1.36
#Modulos 1 1 1
Fan-in      
Fan-out      
#RD 12+1=13 7 +1 = 8 14+1=15
#TabLL1 12*14=168 7*14= 98 14*14= 196
F1 3+0 0+0 3+0
F2 2+1+0 0+0+0 2+1+0
F3 3+0 0+3 3+0
L1 8E + 4NE em NT, 3E + 0 NE em Tv 5E + 2NE em NT, 3E + 0 NE em Tv 10E + 4NE em NT, 3E + 0 NE em Tv
L2 11E+0NE em PR+Sinais ... ...
L3 0F + 2I ... ...
L4 1 +0+0 ... ...

TWiki.GIC5T1   (GIC5 sem produções unitárias e usando exBNF)

         p1: PIs --> RESUMO Lst DETALHE Projs '.'
         p2: Lst --> TWiki.InvPs (';' TWiki.InvPs)* 
         p3: TWiki.InvPs --> id TWiki.LstIds
         p4: TWiki.LstIds --> id (',' id)*
         p5: Projs --> (Proj '.')+
         p6: Proj --> id str FINANC Entidad num INIC num FIM num
         p7: Entidad --> FCT
         p8:          | GRICES
         p9:          | ADI

TWiki.GIC5T2   (GIC com a produção p10 modificada para ficra mais curta)
 
         p1: PIs --> RESUMO Lst DETALHE Projs '.'
         p2: Lst --> TWiki.InvPs
         p3:      | Lst ';' TWiki.InvPs
         p4: TWiki.InvPs --> TWiki.SglInv TWiki.LstIds
         p5: TWiki.SglInv --> id
         p6: TWiki.LstIds --> TWiki.SglProj
         p7:         | TWiki.SglProj ',' TWiki.LstIds
         p8: Projs --> Proj '.'
         p9:        | Projs Proj '.'
         p10: Proj --> TWiki.SglProj Desc Financiament Period
         p11: Financiament --> FINANC Entidad Valor
         p12: Period --> INIC Ano FIM Ano
         p13: TWiki.SglProj --> id
         p14: Desc --> str
         p15: Entidad --> FCT
         p16:          | GRICES
         p17:          | ADI
         p18: Ano --> num
         p19: Valor --> num

TWiki.GIC5T3   (GIC5 permitindo incluir a lista de todos os Membros do projecto)

         p1: PIs --> RESUMO Lst DETALHE Projs '.'
         p2: Lst --> TWiki.InvPs
         p3:      | Lst ';' TWiki.InvPs
         p4: TWiki.InvPs --> TWiki.SglInv TWiki.LstIds
         p5: TWiki.SglInv --> id
         p6: TWiki.LstIds --> TWiki.SglProj
         p7:         | TWiki.SglProj ',' TWiki.LstIds
         p8: Projs --> Proj '.'
         p9:        | Projs Proj '.'
         p10: Proj --> TWiki.SglProj Desc FINANC Entidad Valor INIC Ano FIM Ano MEMBROS Membros
         p11: Membros --> TWiki.SglInv
         p12:          |  TWiki.SglInv ',' Membros
         p13: TWiki.SglProj --> id
         p14: Desc --> str
         p15: Entidad --> FCT
         p16:          | GRICES
         p17:          | ADI
         p18: Ano --> num
         p19: Valor --> num

8 Março de 2010

  • Cálculo das métricas para a gramática do Exemplo 5:

  Projectos
#T 14
#NT 12
#P 17
#PU 5
#R 3
$RHS 38/17=2.24
$ALT 17/12=1.42
#Modulos 1
Fan-in  
Fan-out  
#RD 12+1=13
#TabLL1 12*14=168
F1 3+0
F2 2+1+0
F3 3+0
L1 8E + 4NE em NT, 3E + 0 NE em Tv
L2 11E+0NE em PR+Sinais
L3 0F + 2I
L4 1 +0+0

1 Março de 2010

  • Introdução às métricas de forma:
    • Forma da recursividade (F1):
      • Recursividade Directa: X -> α X ou X -> X α
      • Recursividade Indirecta: X -> α Y β e Y -> γ X
      • Recursividade Mista
    • Tipo de recursividade (F2):
      • Recursividade Esquerda: X -> X α
      • Recursividade Direita: X -> α X
      • Recursividade Direita-LL: X -> α Y e Y -> ε | α Y
      • Recursividade Mista
    • Notação (F3):
      • BNF
      • EBNF
      • Misto
  • Introdução às métricas lexicográficas
    • Identificadores dos Terminais (T) e Não-Terminais (NT) esclarecedores (L1)
    • Palavras-Peservadas (PR) e Sinais esclarecedores (L2)
    • Identificadores + Literais da Linguagem Flexíveis (L3)
    • Possibilidade de inserir comentários (L4)
      • Comentários inline
      • Comentários blocos
      • Comentários mistos

  • Cálculo de Métricas de Forma e Lexicográficas para estudo comparativo de gramáticas:
    • métricas para a Gramática Black, GBla (EG -- Exemplo 1);
    • métricas para a versão original (v0) da Gramática Biblioteca, GBib (EG -- Exemplo 2).

  Black Biblioteca (v0)
F1 0+0 2+0+0
F2 0+0+0 2+0+0
F3 0+3 2+0
L1 NT: 8E(1) + 2NE(2), T: 2E + 0NE NT: 19E + 1NE (DataDev), T: 3E + 0NE
L2 PR(3): 25E + 0NE, Sinais: 5E + 0NE 12E + 0NE, Sinais: 6E + 0NE
L3 2 NA
L4 NA(4) NA

(1) Esclarecedores

(2) Não Esclarecedores

(3) Palavras-Reservadas

(4) Não aplicável

22 Fevereiro de 2010

  • Cálculo de métricas para estudo comparativo de gramáticas:
    • métricas para a versão original (v0) da Gramática Biblioteca (2ª coluna da Tabela da aula anterior).
    • métricas para a versão v1 da Gramática Biblioteca, após remoção das produções unitárias.
    • métricas para a versão v2 da Gramática Biblioteca, após alteração para gramática LL(1).
    • métricas para a versão v3 da Gramática Biblioteca, após alteração para uso de notação ex-BNF.
    • métricas para a versão v4 da Gramática Biblioteca, alterada de modo a permitir que cada livro tenha mais de um Autor.
  • Conclusão: deixando de lado v4 que altera a Linguagem original, é interessante notar que a gramática menos clara (mais dificl de aprender e manter) é a v1, a qual conduz ao Reconhecedor menor e pt mais eficiente; quanto às outras três (v0, v2 e v3) são muito semelhantes, sendo a versão LL(1) a maior e tv por isso menos "ágil" e a versão ex-BNF um pouco menor e consequentemente mais fácil de usar. Curiosamente, a versão v4 estende a Linguagem original, mantendo uns indicadores de qualidade muito semelhantes aos das suas antecessoras (v0, v2 e v3).

  (v0) (v1) (v2) (v3) (v4)
#T 18+3=21 21 21 21 21
#NT 20 11 22 20 21
#P 28 19 30 26 30
#PU 9 0 9 9 9
#R 2 2 2 0 3
$RHS 55/28=1.96 46/19 = 2.42 58/30 = 1.93 56/26=2.15 57/30=1,9
$ALT 28/20=1.4 19/11 = 1.73 30/22 = 1.36 26/20=1.3 30/21=1.43
#Modulos 1 1 1 1 1
#RD 20+21=41 ou 20+1=21 11+1=12 22+1 20+1 21+1
#TabLL1 (20+21)*21 ou 20*21=420 11*21 = 231 22*21=462 20*21=420 21*21=441

  • Gramática da v4

        p0:  Biblioteca   -->  Registos
        p1:  Registos     -->  Registo 
        p2:                |   Registos ',' Registo
        p3:  Registo      -->  '[' REGISTO Descricao  EXISTENCIAS 
                                                    Existencias ']'
        p4:  Descricao    -->  Referencia Tipo Titulo '(' Autores ')' 
                               Editora Ano Catalogo
        ...........
        p28: Autores      -->  Autor
        p29:               |   Autores ','  Autor

  • Gramática da v3

        p0:  Biblioteca   -->  Registos
        p1:  Registos     -->  Registo (',' Registo)*
        p2:  Registo      -->  '[' REGISTO Descricao  EXISTENCIAS 
                                                    Existencias ']'
        p3:  Descricao    -->  Referencia Tipo Titulo '(' Autor ')' 
                               Editora Ano Catalogo
        p4:  Referencia   -->  id
        p5:  Tipo         -->  LIVRO
        p6:                 |  CDROM
        p7:                 |  OUTRO
        p8:  Titulo       -->  string
        p9:  Autor        -->  string
        p10: Editora      -->  string
        p11: Ano          -->  num
        p12: Catalogo     -->  BGUM
        p13:                |  ALFA
        p14:                |  OUTRO
        p15: Existencias  -->  LOCAL Local '(' Estados ')'
        p16: Local        --> string 
        p17: Estados      --> Estado (',' Estado)*
        p18: Estado       --> TWiki.CodigoBarras Disponib
        p19: TWiki.CodigoBarras --> id
        p20: Disponib     --> ESTANTE
        p21:                | PERMANENTE
        p22:                | EMPRESTADO TWiki.DataDev
        p23: TWiki.DataDev      --> Ano '-' Mes '-' Dia
        p24: Mes          --> num
        p25: Dia          --> num

  • Gramática da v2

        p0:  Biblioteca   -->  Registos
        p1:  Registos     -->  Registo TWiki.RegistosAux
        p2:  TWiki.RegistosAux  --> ',' Registo
        p3:                 |  
        p4:  Registo      -->  '[' REGISTO Descricao  EXISTENCIAS 
                                                    Existencias ']'
        p5:  Descricao    -->  Referencia Tipo Titulo '(' Autor ')' 
                               Editora Ano Catalogo
        p6:  Referencia   -->  id
        p7:  Tipo         -->  LIVRO
        p8:                 |  CDROM
        p9:                 |  OUTRO
        p10: Titulo       -->  string
        p11: Autor        -->  string
        p12: Editora      -->  string
        p13: Ano          -->  num
        p14: Catalogo     -->  BGUM
        p15:                |  ALFA
        p16:                |  OUTRO
        p17: Existencias  -->  LOCAL Local '(' Estados ')'
        p18: Local        --> string 
        p19: Estados      --> Estado TWiki.EstadosAux
        p20: TWiki.EstadosAux   --> ',' TWiki.EstadosAux
        p21:                | 
        p22: Estado       --> TWiki.CodigoBarras Disponib
        p23: TWiki.CodigoBarras --> id
        p24: Disponib     --> ESTANTE
        p25:                | PERMANENTE
        p26:                | EMPRESTADO TWiki.DataDev
        p27: TWiki.DataDev      --> Ano '-' Mes '-' Dia
        p28: Mes          --> num
        p29: Dia          --> num

  • Gramática da v1

        p0:  Biblioteca   -->  Registos
        p1:  Registos     -->  Registo
        p2:                 |  Registos ',' Registo
        p3:  Registo      -->  '[' REGISTO Descricao  EXISTENCIAS  
                                                      Existencias ']'
        p4:  Descricao    -->  id Tipo string '(' string ')' 
                               string num Catalogo
        p5:  Tipo         -->  LIVRO
        p6:                 |  CDROM
        p7:                 |  OUTRO
        p8:  Catalogo     -->  BGUM
        p9:                 |  ALFA
        p10:                |  OUTRO
        p11: Existencias  -->  LOCAL string '(' Estados ')'
        p12: Estados      --> Estado
        p13:                | Estados ',' Estado
        p14: Estado       --> id Disponib
        p15: Disponib     --> ESTANTE
        p16:                | PERMANENTE
        p17:                | EMPRESTADO TWiki.DataDev
        p18: TWiki.DataDev      --> num '-' num '-' num

25 Janeiro de 2010

  • Discussão da relação das métricas obtidas com a qualidade da linguagem.

  • Cálculo de métricas para estudo comparativo de gramáticas:
    • métricas para a Gramática Black, GBla (EG -- Exemplo 1);
    • métricas para a versão original (v0) da Gramática Biblioteca, GBib (EG -- Exemplo 2).

  Black Biblioteca (v0)
#T 30+2=32 18+3=21
#NT 10 20
#P 25 28
#PU 0 9
#R 0 2
$RHS 60/25=2.4 55/28=1.96
$ALT 2.5 28/20=1.4
#Modulos 1 1
#RD 10+32=42 ou 10+1=11 20+21=41 ou 20+1=21
#TabLL1 (10+32)*32=1344 ou 10*32=320 (20+21)*21 ou 20*21=420

  • Conclusão: verificou-se que as gramáticas são sensivelmente do mesmo tamanho (GBla com mais terminais, mas Gbib com mais não-terminais e produções), mas que GBla (com lados direitos mais longos, mais alternativas e com um grafo de dependências mais fechado) é mais complexa que a GBib, sendo esta ultima é mais clara/mais fácil de ler/manter (mais produções unitárias e GD mais simples). Em termos do Reconhecedor, o da segunda (GBib) é um pouco maior (devido a mais NTs e Prods).

18 Janeiro de 2010

  • Continuação da definição de critérios para avaliar a qualidade das gramáticas: usabilidade (em termos de leitura, derivação de frases e manutenção); e eficiência (em termos reconhecedor/processor gerado, e geração).
  • Critérios definidos em relação a uma Gramática Independente do Contexto (GIC):
    • identificadores dos símbolos
    • nº de símbolos (terminais #T + não terminais #NT)
    • nº de produções (#P)
    • notação (BNF/eBNF)
    • recursividade (Esquerda/Direita, Directa/Indirecta)
    • complexidade em termos de dependências entre símbolos
    • modularidade
  • Critérios definidos em relação a uma Gramática de Atributos (GA):
    • identificadores dos símbolos
    • nº de atributos (nº de regras de cálculo)
    • complexidade dos atributos
    • complexidade das acções semânticas
    • nº, complexidade e localização das condições de contexto
    • notação
    • recursividade
    • suporte em gramática concreta/gramática abstracta
    • complexidade em termos de dependências entre símbolos
  • Métricas para GIC:
    • Tamanho: #T, #NT, #P, #PU, média do nº de símbolos no lado direito das produções ($RHSmed), nº médio de alternativas para cada símbolo ($Altmed), número de módulos (#mod), nº dependências entre símbolos usando o grafo de dependências (fan-in, fan-out), tamanho das tabelas de parsing LL(1) = ((N+T)*T), tamanhos das tabelas de parsing LR = (Q*T)+(Q*N), tamanho do recursivo descendente = (#N+#T)
    • Forma:
    • Lexicográficas:

11 Janeiro de 2010

  • Discussão sobre técnicas de parsing com base nos relatórios apresentados pelos alunos. Revisão dos conceitos de First, Follow, Lookahead, Parsers Top-Down e Bottom-Up.
  • Revisão dos critérios para aferir a Qualidade de Linguagens.
  • Introdução aos critérios para aferir a Qualidade das Gramáticas.
  • Uma gramática G tem 2 fins: Geradora de Linguagem; e Geradora de um Processador de Linguagem. Enquanto Geradora de Linguagem pretende-se que seja fácil de compreender, derivar e manter. Enquanto Geradora de um Processador pretende-se obter: eficiência do processador gerado; e eficiência do processo de geração.

4 Janeiro de 2010

  • Discussão da relevância do ambiente de desenvolvimento (IDE) para a avaliação de uma Linguagem: embora não sendo considerado um critério de aferição de linguagens por não ser uma característica intrínseca e sim um factor externo complementar, reconheceu-se a sua importância neste estudo visto que influencia directamente a utilização da linguagem (um mau IDE não promove a utilização da linguagem e vice-versa). Foram, entretanto, identificadas as seguintes facetas que caracterizam a qualidade de um IDE:
    • editor assistido (orientado pela sintaxe, ou com auto-complete, syntax highlight);
    • editor assistido pela semântica (inteli-sense, snippets);
    • code folding (Definição de Code Folding);
    • compilador/interpretador (rapidez, nível de optimização, tratamento de erros);
    • verificador sintáctico e semântico;
    • debugger;
    • gestor de projectos;
    • controlador de versões;
    • importador/integrador de bibliotecas (se possível, referenciador para bibliotecas);
    • apresentador de dicas e sinópsis e leitor de documentação;
    • possibilidade de configuração e extensibilidade das funcionalidades.

  • Continuação da definição de critérios para aferir a Qualidade de Linguagens:
    • CL8 --- Credibilidade/ Fiabilidade (Reliability): type checking, exception handling

  Aprendizagem Escrita Compreensão Reconhecimento
CL1 - Expressividade + + + x
CL2 - Documentação x - + x/-
CL3 - Unicidade + - + +
CL4 - Consistência + + + x
CL5 - Extensibilidade - + - -
CL6 - Escalabilidade x = = =
CL7 - Paradigma/Filosofia impl impl impl impl
CL8 - Credibilidade/ Fiabilidade - + + -

  Pascal Basic C Perl XML Latex Prolog C++ C# Java Haskell
CL1-Expressividade mB S mB MB MB MB S S MB MB MB
CL2-Documentação bás bás- evol evol- evol- bás- bás- evol- evol evol bás
CL3-Unicidade x x x x +/- +/- x x x x x
CL4-Consistência + +/- +/- - + - + +/- + + +
CL5 - Extensibilidade bás bás- bás+ evol NA bás evol evol evol evol evol
CL6 - Escalabilidade B +/- B B? NA N N B B N N
CL7 - Paradigma/Filosofia I I I S D D D/L OO/I OO/I OO/I D/F
CL8 - Credibilidade/ Fiabilidade B R S S NA NA R B MB MB B

MB - Muito Bom, B - Bom, S - Satisfaz, NA - Não Aplicável, N - Não, R - Reduzido

bás - básico, evol - evoluído, impl - implica

I - Imperativo, D - Declarativo, L - Lógico, F - Funcional, S - Scripting, OO - Orientado a Objectos


Extensbilidade:

1. Léxico: aliasing (associar um termo/palavra a outra palavra) --- Extensão ao nível do vocabulário

2. Sintáctico

3. Semântica: linguagem de objectos permite estender a semântica (o uso de bibliotecas contribui para a extensibilidade da linguagem).

14 Dezembro de 2009

  • Continuação da definição de critérios para aferir a Qualidade de Linguagens:
    • CL5 --- Extensibilidade
    • CL7 --- Paradigma/Filosofia

  Aprendizagem Escrita Compreensão Reconhecimento
CL1 - Expressividade + + + x
CL2 - Documentação x - + x/-
CL3 - Unicidade + - + +
CL4 - Consistência + + + x
CL5 - Extensibilidade - + - -
CL6 - Escalabilidade x = = =
CL7 - Paradigma/Filosofia impl impl impl impl

  Pascal Basic C Perl XML Latex Prolog C++ C# Java Haskell
CL1-Expressividade mB S mB MB MB MB S S MB MB MB
CL2-Documentação bás bás- evol evol- evol- bás- bás- evol- evol evol bás
CL3-Unicidade x x x x +/- +/- x x x x x
CL4-Consistência + +/- +/- - + - + +/- + + +
CL5 - Extensibilidade bás bás- bás+ evol NA bás evol evol evol evol evol
CL6 - Escalabilidade B +/- B B? NA N N B B N N
CL7 - Paradigma/Filosofia I I I S D D D/L OO/I OO/I OO/I D/F

MB - Muito Bom, B - Bom, S - Satisfaz, NA - Não Aplicável, N - Não

bás - básico, evol - evoluído, impl - implica

I - Imperativo, D - Declarativo, L - Lógico, F - Funcional, S - Scripting, OO - Orientado a Objectos


Extensbilidade:

1. Léxico: aliasing (associar um termo/palavra a outra palavra) --- Extensão ao nível do vocabulário

2. Sintáctico

3. Semântica: linguagem de objectos permite estender a semântica (o uso de bibliotecas contribui para a extensibilidade da linguagem).

07 Dezembro de 2009

  • Aula ocupada com a apresentação, discussão e avaliação do Projecto Integrado (PI) -- 1ªfase.

30 Novembro de 2009

  • Continuação da definição de critérios para aferir a Qualidade de Linguagens:
    • CL6 --- Escalabilidade

  Aprendizagem Escrita Compreensão Reconhecimento
CL1 - Expressividade + + + x
CL2 - Documentação x - + x/-
CL3 - Unicidade + - + +
CL4 - Consistência + + + x
         
CL6 - Escalabilidade x = = =

  Pascal Basic C Perl XML Latex Prolog C++ C# Java Haskell
CL1-Expressividade mB S mB MB MB MB S S MB MB MB
CL2-Documentação bás bás- evol evol- evol- bás- bás- evol- evol evol bás
CL3-Unicidade x x x x +/- +/- x x x x x
CL4-Consistência + +/- +/- - + - + +/- + + +
                       
CL6 - Escalabilidade B +/- B B? NA N N B B N N

MB - Muito Bom, B - Bom, S - Satisfaz, NA - Não Aplicável, N - Não

bás - básico, evol - evoluído

23 Novembro de 2009

  • Continuação da definição de critérios para aferir a Qualidade de Linguagens:
    • CL2 --- Documentação:
      • definição deste critério: comentários --- in-line, multi-line, DSL em comentário (Aumenta doc e produz manuais --- JavaDoc, MSDN, etc; aumenta robustez e produz provas --- VCGen); meta-informação obrigatória.
    • CL3 --- Unicidade: forma única de escrita.
    • CL4 --- Consistência

  Aprendizagem Escrita Compreensão Reconhecimento
CL1 - Expressividade + + + x
CL2 - Documentação x - + x/-
CL3 - Unicidade + - + +
CL4 - Consistência + + + x

  Pascal Basic C Perl XML Latex Prolog C++ C#/Java Haskell
CL1-Expressividade mB S mB MB MB MB S S MB MB
CL2-Documentação bás bás- evol evol- evol- bás- bás- evol- evol bás
CL3-Unicidade x x x x +/- +/- x x x x
CL4-Consistência + +/- +/- - + - + +/- + +

MB - Muito Bom, B - Bom, S - Satisfaz

bás - básico, evol - evoluído

16 Novembro de 2009

  • Qualidade de gramáticas vs Qualidade de linguagens.
  • Critérios para aferir a Qualidade das Linguagens:
    • CL1 -- Expressividade:
      • definição deste critério: facilidade (naturalidade, clareza) com que se exprime uma ideia usando os construtores da linguagem.
      • impacto de CL1 nos quatro dimensões de avaliação: influencia positivamente a aprendizagem, escrita e compreensão sem ter grande impacto no processamento.
  Aprendizagem Escrita Compreensão Reconhecimento
CL1- Expressividade + + + x
      • Avaliação (comparativa) da expressividade das seguintes linguagens: Basic, Pascal, C, C#, Perl, Prolog, Haskell, XML, LaTeX; discussão da avaliação histórica e dos paradigmas subjacentes.
  Pascal Basic C Perl XML Latex Prolog C++ C# Haskell
CL1-Expressividade mB S mB MB MB MB S S MB MB

MB - Muito Bom, B - Bom, S - Satisfaz

9 Novembro de 2009

  • Continuação da discussão com os alunos sobre as pesquisas feitas relativas a métricas de gramáticas. Alunos de que apresentaram: Jorge Mendes, André Santos & Miguel Regedor, Márcio Coelho, Paulo Alexandre & Paulo Alexandr e André Rocha.
  • Introdução ao conceito de qualidade de gramáticas vs qualidade de linguagens (critérios de avaliação e métricas).
  • Definição de Qualidade de uma Linguagem: uma linguagem diz-se com qualidade se a sua legibilidade (em termos de facilidade na aprendizagem, escrita e compreensão) for grande sem degradar a eficiência do processamento.
  • Critérios para as Linguagens -- Introdução: CL1 a CL6.

2 Novembro de 2009

  • Discussão com os alunos sobre as pesquisas feitas sobre métricas de gramáticas. Alunos de que apresentaram: Jose Luis, Helder Silva, e Daniel Rocha.

26 Outubro de 2009

  • Apresentação dos resultados encontrados na pesquisa sobre métricas de gramáticas.
  • Revisão da utilização de entradas bibtex num ficheiro latex.
  • Resolução do exercício 2, alínea f4.
  • Introdução do princípio da Tradução Dirigida pela Semântica e diferenças em relação à Tradução Dirigida pela Sintaxe.
  • Introdução ao conceito de Gramáticas de Atributos como tuplo (GIC, A, RC, CC, RT), onde A=Atributos, RC=Regras de Contexto, CC=Condições de Contexto, RT=Regras de Tradução.
  • Exemplificação do uso de Gramáticas de Atributos (GA) com a gramática declarations.g

19 Outubro de 2009

  • Discussão do duplo papel de uma Gramática, a propósito do Exercício 2 da aula anterior e das suas alíneas a) a c) (comparação com o Exercício 1):
    • a gramática como especificação formal de uma linguagem (papel do utilizador final da linguagem e do engenheiro gramatical);
    • a gramática como especificação formal de um programa, o processador/compilador da linguagem e o recurso a Geradores automáticos de Compiladores (papel do engenheiro gramatical).

  • Introdução à noção e relevância do tema Qualidade de Gramáticas (em ambas as vertentes acima identificadas) e da necessidade imperiosa de se definirem Métricas Gramaticais para se poder discutir a qualidade com objectividade.

  • Revisão dos conceitos de Parsing Top-Down (Recursivo-Descendente, RD, e LL(1)) e de Parsing Bottom-Up (LR); funções e tabelas de parsing e autómato LR(0) -- resolução das alíneas d) e e) do Exercício 2.

12 Outubro de 2009

  • Introdução da notação AnTLR e comparação com a escrita de gramáticas em Lex/Yacc.
  • Escrita em notação AnTLR de 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;
    • inclua Acções Semânticas e Atributos para calcular a Soma dos números na lista e Comprimento da Lista.
  • Discussão das diferenças entre o formato BNF e EBNF e comparação das respectivas árvores de derivação.
  • Discussão das diferenças entre Recursividade à Esquerda e Recursividade à Direita.

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

          
lista   :   '[' nums ']' { 
                       System.out.println("Soma: " + $nums.soma +
                                        "\nContador: " + $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; };      

28 de Setembro de 2009

  • 1. Apresentação da UCE30-EL e em particular do Módulo 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.

  • 2. Revisão do conceito de Linguagem e sua relação com Gramática:
    • Apresentação dos critérios a observar quando se faz o design de uma Linguagem:
      • Satisfação dos Requisitos pedidos no enunciado
      • Satisfação das Restrições explicitadas no enunciado
      • Procura de Legibilidade
      • Procura de Simplicidade na utilização para escrever frases.
    • Resolução do Exemplo1: desenho de uma Linguagem

  • 3. Revisão do conceito de Gramática Indepedente de Contexto (GIC) e de Gramática Tradutora (GT); sua definição formal.
    • Resolução do Exemplo2 (inicio, discussão do enunciado): leitura e análise de uma Gramática


SumariosEG10 17 Sep 2011 - 23:42 - r37 PedroRangelHenriques

Engenharia de Linguagens (2010/2011)

Engenharia Gramatical

Sumários

27 de Setembro de 2010

  • 1. Apresentação da UCE30-EL e em particular do Módulo de EG e ATS:
    • 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.

11 de Outubro de 2010

  • 2. Revisão do conceito de Linguagem e sua relação com Gramática:
    • Apresentação sumária dos critérios a observar quando se faz o design de uma Linguagem:
      • Satisfação dos Requisitos pedidos no enunciado
      • Satisfação das Restrições explicitadas no enunciado
      • Procura de Legibilidade
      • Procura de Simplicidade na utilização para escrever frases.

  • 3. Revisão do conceito de Gramática Indepedente de Contexto (GIC) e de Gramática Tradutora (GT); sua definição formal.
    • Resolução do Exemplo1: desenho de uma Linguagem e escrita da respectiva Gramática com variantes (ver aqui GIC e GT).

18 de Outubro de 2010

  • 3. Revisão do conceito de Gramática Indepedente de Contexto (GIC) e de Gramática Tradutora (GT); sua definição formal.
    • Resolução do Exemplo1: desenho de uma Linguagem e escrita da respectiva Gramática com variantes (ver aqui Exemplos-de-Frases e GT).

25 de Outubro de 2010 (aula dada pelo prof. Eric Van Wyk)

  • 3. Introdução (prática/pragmática) o conceito de Gramática de Atributos (GA)para especificar a semântica estática e dinâmica de uma linguagem.
    • Introdução ao Gerador de Processadores de Linguagens baseado em GAs Silver.
    • Exemplo1 (Gramática Genea para definir uma Linguagem para Genealogia e Demografia): desenho de uma Linguagem e escrita da respectiva Gramática com variantes.


GUIÃO DA AULA:

Attribute Grammars (AGs):

- support Semantic Analysis specifications;

- as opposed to Translation Grammars, TG (as those supported by Yacc and other parser generators) that are primarily used for syntactic analysis, although can describe some limited semantic work, AGs are more general and more powerful.


Main phases of a Compiler or Translator:

Syntactic Analysis

- scanning and parsing

- verify or determine the syntactic structure of the program/expression

- generate a tree representing this structure

Semantic Analysis

- compute concrete values and types for variables and expressions

- non-syntactic checks - semantic constraints:

* are all variables in a program declared ?

* are all expressions type correct ?

- report the errors

- report on some characteristics of the program

Optimization

- rewrite the program into a more efficient form

Code Generation

- generate a translation to another language


AGs

- are really for semantic analysis, but can be useful for other tasks as well.

- aim is to decorate the syntax tree with attributes describing the semantics

- think of each node in a syntax tree as an object; we want to compute values for fields (attributes) on these objects such as "type", "isCorrect", "errors", etc.

Yacc semantic actions give us a single unnamed, untyped attribute

Silver is a research prototype AG system developed by my group at Minnesota.

An AG is a CFG with

- set of attributes; attributes have a name and a type

- occurrence relation - what attributes appear on what nonterminals

- defining equations - for computing the value of those attributes


Example 1


Consider a familiar example, the Genealogia language introduced in the previous lessons.

- show Silver code for Genealogia (no attributes, only parsing)

- show what errors look like in Silver specs - parse errors, binding errors, type errors ...

Consider also the following valid sentence of Genealogia language:

      ( "Joe" "Smith" M 1955, "Beth" "Johnson" F 1957 )

      ( "Jane" "Martin" F 1940, "Sam" "Smith" M 1935 )
         {
            "Mike" M 1965,  "Betty" F 1967
         }

      ( "Marvin" "Van Wyk" M 1945, "Lois" "Ter Louw" F 1945 )
         {
            "Eric" M 1967, 
            "Kevin" M 1970,
            "Stacie" F 1971
          }
Next, add report attribute

- only one synthesized attribute:

synthesized attribute report :: String occurs on Geneology, Families, Family,....

- print simple report

- the solution (more verbose than the Yacc solution, but much more fomal and clear) is split into the following files: Geneology.sv + Person.sv + Children.sv + Terminals.sv and Main.sv plus silver-compile .


Example 2


Count the number of children and add it the part of the report generated on the parents

- add one more synthesized attribute:

synthesized attribute numChildren :: Integer occurs on ChildList;

- then the solution is obtained just changing the following file: Children.sv

Exercise (Example 3)

- use the birth data associated with each child, and compute the year of oldest child's birth "First child born in ..." - if any children.

- the solution developed by one student, composed by the following files: Geneology.sv + Person.sv + Children.sv .


Example 4


Semantic constraints can be specified as Boolean attributes, or a "list of errors" attribute

Compute "isCorrect :: Boolean" to check that oldest child born at least 15years before the youngest parent.

- now some more synthesized attributes must be added:

synthesized attribute isCorrect::Boolean occurs on Geneology, Families, Family ;

synthesized attribute youngestBirthYear:: Integer occurs on Parent, Parents ;

synthesized attribute year::Integer occurs on Year ;

synthesized attribute oldestBirthYear :: Integer occurs on ChildList, Children ;

synthesized attribute birthYear :: Integer occurs on Child ;

- then the solution is obtained changing the following file: Geneology.sv + Person.sv + Children.sv

Exercise (Example 5)

- resulting error message is not so good. Instead replace isCorrect with errors :: String


Example 6


Inherited attributes, the way to make contextual information accessible after or before the substring where it appears avoiding any global variable.

- Evolve the previous grammar because the resulting error message is still not as good as it could be. Maybe we'd like a message of the form "Child X born in Y after parents born in Z"

- pass down age of youngest parent (plus 15years) as an inherited attribute

- generate the error message, arguably, at the point in which the error occurs.

- now an inherited attribute must be defined and some additional synthesized attributes must be added:

inherited attribute earliestPossibleBirthYear::Integer occurs on Children, ChildList, Child ;

synthesized attribute errors::String occurs on Geneology, Families, Family, Children, ChildList, Child ;

synthesized attribute youngestBirthYear::Integer occurs on Parent, Parents ;

attribute birthYear::Integer occurs on Child ;

- then the solution is obtained changing the following file: Geneology.sv + Children.sv and Main.sv

Exercise (Example 7)

- add an inherited attribute "currentYear" - set it at the root and pass it down to all children so that we can compute the child ages and put them into the report.

- the solution developed by one student, composed by the following files: Geneology.sv + Person.sv + Children.sv + Terminals.sv and Main.sv plus Sample source-text


08 de Novembro de 2010

  • 3. Definição formal de Gramática de Atributos (GA) para especificar a semântica estática e dinâmica de uma linguagem (consolidação teórica da introdução prática da última aula).

15 de Novembro de 2010

  • Continuação da introdução às GA, às árvores de sintaxe abstrata (AST) e à ferramenta Silver (fazer aqui o download da versão mais recente: SilverNov2010), agora com um novo exemplo para criar uma calculadora de expressões "dc -- desktop calculator language".


GUIÃO DA AULA:

A simple arithmetic expression language.


Consider the Silver specification for "dc" (directory grammars/tutorials/dc ans subdirectory bin).

1. The concrete syntax in Expr.sv (respective terminal symbols in TerminalsDC.sv) ensures that operator precedence and associativity is preserved. Notice that this Expr.sv version already includes the extension proposed to the students as an working example during the class -- DC Expr now support Logical (and, or, not) and Relational Operators (at moment, jut Equal)

2. A higher order attribute, ast_Expr, is used to compute a tree using the abstract productions. On this, we compute the value of the expression since the grammar is simpler. See again Expr.sv and also the functions defined in DC.sv

3. In BetterPP.sv we see the use of inherited attributes. These are passed down the tree and used to determine when parenthesis need to be used.

To obtain a Compiler and use it, the common files Main.sv and silver-compile are also developed and included in the directory.


22 de Novembro de 2010

  • Não dei aula por estar na Universidade Nacional de SanLuis, Argentina, no contexto da visita anual do projecto de cooperação bilateral Quixote (aula dada por JJ, a compensar ainda em dezembro).

29 de Novembro de 2010

  • Não dei aula por estar na Universidade Nacional de SanLuis, Argentina, no contexto da visita anual do projecto de cooperação bilateral Quixote (aula dada por JJ, a compensar ainda em dezembro).

06 de Dezembro de 2010

  • Introdução ao tópico Qualidade de Linguagens
    • Enquadramento do tema e justificação da sua necessidade enquanto propósito geral da engenharia aquando do desenvolvimento de um novo produto;
    • Caracterização do produto em causa: protocolo de comunicação para um Emissor transmitir a um Recetor determinada informação no sentido de obter uma resposta/reação do Receptor após processar a mensagem (frase da linguagem);
    • Identificação dos Critérios que permitem definir qualidade de uma linguagem: Legibilidade (aprendizagem, escrita e compreensão) e Eficácia;
    • Factores que tem impacto nos critérios de qualidade -- a identificar e caracterizar na proxima aula;
    • Identificação dos factores que determinam a aceitação de uma linguagem: cultura/experiência anterior; disponibilidade do processador e da documentação; dimensão e envergadura do ambiente de desenvolvimento.

13 de Dezembro de 2010

  • Esta aula foi totalmente aproveitada para os Grupos fazerem a apresentação (1ªfase) do Projecto Integrado.

03 de Janeiro de 2011

  • Continuação da introdução às GA, às árvores de sintaxe abstrata (AST) e à ferramenta Silver (fazer aqui o download da versão mais recente Silver-0.3.1: http://melt.cs.umn.edu/silver/downloads.html), agora com um novo exemplo para desenvolver um compilador para a linguagem de programação "simple".

10 de Janeiro de 2011

  • Esta aula foi aproveitada para os Grupos fazerem a apresentação (1ªfase/2ªetape - demo) do Projecto Integrado.

17 de Janeiro de 2011

Continuação do estudo do tópico Qualidade de Linguagens

  • Revisão dos Critérios que permitem definir qualidade de uma linguagem: Legibilidade (aprendizagem, escrita e compreensão) e Eficácia;

  • Razões para se estudar uma Linguagem de Programação de segundo Sebesta:
    • Aumentar a capacidade de exprimir ideias por escrito;
    • Aumentar a sabedoria para fazer uma boa escolha da LP a usar num caso concreto;
    • Aumentar a capacidade de aprender novas linguagens;
    • Aumentar a percepção sobre a importância da implementação;
    • Melhorar a compreensão sobre todo o domínio da programação;

  • Classificação das Linguagens de Programação:
    • Quanto à cronologia e grau de abstracção (1ª, 2ª, 3ª e 4ª gerações)
    • Quanto ao estilo do processamento (compilada/interpretada)
    • Quanto ao estilo de programação (imperativa/declarativa)
    • Quanto à forma de organizar código (monolítica/modular)
    • Quanto à forma de execução (sequencial/concorrente)
    • Quanto ao sistema de tipos (fracamente/fortemente tipadas)
    • Quanto à forma de expressão (textuais/visuais)
    • Quanto à abrangência (domínio geral, GPL/específico, DSL)


* 2º SEMESTRE ***

21 de Fevereiro de 2011

Continuação do estudo do tópico Qualidade de Linguagens

  • Etudo das Características que influenciam os Critérios que permitem definir qualidade de uma linguagem:
    • Expressividade; Clareza e Abstração

28 Fevereiro 2011

Continuação do estudo do tópico Qualidade de Linguagens

  • Estudo das Características que influenciam os Critérios que permitem definir qualidade de uma linguagem:
    • Expressividade; Clareza e Abstração

Tabela que relaciona as Carateristicas da Linguagem com os Critérios de Qualidade:

Característica Aprendizagem Escrita Compreensao Reconhecimento
Expressividade + + + -

Tabela que compara várias Linguagens de Programação, segundo as Caraterísticas Identificadas

Característica Assembly Fortran Basic Pascal C Prolog ML C# Perl Ruby PHP SQL
CL1-Expressividade nS s nS B B- s B MB B- B- B MB
CL2-Documentação
CL3-Unicidade
CL4-Consistência
CL5-Extensibilidade
CL6-Escalabilidade
CL7-Paradigma
CL8-Fiabilidade

nS - não Satisfaz, B - Bom, S - Satisfaz

07 de Março de 2011

  • Não houve aula --- 2ªf de Entrudo.

14 de Março de 2011

  • Esta aula foi aproveitada para os Grupos fazerem a apresentação (2ªfase/1ªetape) do Projecto Integrado.

21 Março 2011

Continuação do estudo do tópico Qualidade de Linguagens

  • Estudo das Características que influenciam os Critérios que permitem definir qualidade de uma linguagem:
    • Expressividade; Clareza e Abstração
    • Documentação (comentários de linha e bloco, anotações para manuais e meta-informação);
    • Unicidade (singularidade de formas para expressar a mesma coisa).

Tabela que relaciona as Carateristicas da Linguagem com os Critérios de Qualidade:

Característica Aprendizagem Escrita Compreensão Reconhecimento
Expressividade ++ ++ + -
Documentação - - ++ X
Unicidade + - + +

Tabela que compara várias Linguagens de Programação, segundo as Caraterísticas Identificadas

Característica Assembly Fortran Basic Pascal C Prolog ML C# Perl Ruby PHP SQL
CL1-Expressividade nS s nS B B- s B MB B- B- B MB
CL2-Documentação s s s s S s s MB B S S S
CL3-Unicidade nS S S nS NS S S nS NS NS NS B
CL4-Consistência
CL5-Extensibilidade
CL6-Escalabilidade
CL7-Paradigma
CL8-Fiabilidade

nS - não Satisfaz, B - Bom, S - Satisfaz

28 Março 2011

Continuação do estudo do tópico Qualidade de Linguagens

  • Estudo das Características que influenciam os Critérios que permitem definir qualidade de uma linguagem:
    • Consistência
    • Escalabilidade

Tabela que relaciona as Carateristicas da Linguagem com os Critérios de Qualidade:

Característica Aprendizagem Escrita Compreensão Reconhecimento
Expressividade ++ ++ + -
Documentação - - ++ X
Unicidade + - + +
Consistência ++ + + X
Extensibilidade        
Escalabilidade X X X X

Tabela que compara várias Linguagens de Programação, segundo as Caraterísticas Identificadas

Característica Assembly Fortran Basic Pascal C Prolog ML C# Perl Ruby PHP SQL
CL1-Expressividade nS s nS B B- s B MB B- B- B MB
CL2-Documentação s s s s S s s MB B S S S
CL3-Unicidade nS S S nS NS S S nS NS NS NS B
CL4-Consistência S S s B s B B B NS NS NS B
CL5-Extensibilidade
CL6-Escalabilidade nS S nS S B S S B B S B B
CL7-Paradigma
CL8-Fiabilidade

nS - não Satisfaz, B - Bom, S - Satisfaz

4 Abril 2011

Discussão do processo de avaliação; ponto de situação.

Abertura de uma discussão/investigação alargada sobre o processo de Avaliação de Qualidade e Métricas em Engenharia:

  • Receção das monografias escritas pelos alunos sobre métricas em geral, métricas em linguagens de modelação (UML) e gramáticas; apreciação geral e definição dos desenvolvimentos futuros --- ver relatórios escritos inseridos na parte final do item "Questões, Fichas Práticas e Notas" da página deste módulo.

Continuação do estudo do tópico Qualidade de Linguagens

  • Estudo das Características que influenciam os Critérios que permitem definir qualidade de uma linguagem:
    • Extensibilidade léxica, sintática e semântica.
    • Modularidade

Tabela que relaciona as Carateristicas da Linguagem com os Critérios de Qualidade:

Característica Aprendizagem Escrita Compreensão Reconhecimento
Expressividade ++ ++ + -
Documentação - - ++ X
Unicidade + - + +
Consistência ++ + + X
Extensibilidade - ++ ? -
Escalabilidade X X X X
Modularidade x ++ + X
Fiabilidade        

Tabela que compara várias Linguagens de Programação, segundo as Caraterísticas Identificadas

Característica Assembly Fortran Basic Pascal C Prolog ML C# Perl Ruby PHP SQL
CL1-Expressividade nS s nS B B- s B MB B- B- B MB
CL2-Documentação s s s s S s s MB B S S S
CL3-Unicidade nS S S nS NS S S nS NS NS NS B
CL4-Consistência S S s B s B B B NS NS NS B
CL5-Extensibilidade s s s S B S S B B B S s
CL6-Escalabilidade nS S nS S B S S B B S B B
CL7-Modularidade nS nS nS S s nS S B B B S nS
CL8-Fiabilidade

nS - não Satisfaz, B - Bom, S - Satisfaz

11 Abril 2011

Continuação do estudo do tópico Qualidade de Linguagens

  • Estudo das Características que influenciam os Critérios que permitem definir qualidade de uma linguagem:
    • Fiabilidade: type-checking; verificação dinâmica de limites; error-handling

Tabela que relaciona as Carateristicas da Linguagem com os Critérios de Qualidade:

Característica Aprendizagem Escrita Compreensão Reconhecimento
Expressividade ++ ++ + -
Documentação - - ++ X
Unicidade + - + +
Consistência ++ + + X
Extensibilidade - ++ ? -
Escalabilidade X X X X
Modularidade X ++ + X
Fiabilidade x + X -

Tabela que compara várias Linguagens de Programação, segundo as Caraterísticas Identificadas

Característica Assembly Fortran Basic Pascal C Prolog ML C# Perl Ruby PHP SQL
CL1-Expressividade nS s nS B B- s B MB B- B- B MB
CL2-Documentação s s s s S s s MB B S S S
CL3-Unicidade nS S S nS NS S S nS NS NS NS B
CL4-Consistência S S s B s B B B NS NS NS B
CL5-Extensibilidade s s s S B S S B B B S s
CL6-Escalabilidade nS S nS S B S S B B S B B
CL7-Modularidade nS nS nS S s nS S B B B S nS
CL8-Fiabilidade S B S B nS nS B B nS nS nS B

nS - não Satisfaz, B - Bom, S - Satisfaz

18 Abril 2011

Não houve aula: férias de Páscoa.

25 Abril 2011

Não houve aula: feriado nacional para comemorar a Revolução dos Cravos.

02 Maio 2011

Introdução do estudo do tópico Qualidade de Gramáticas

  • Apresentação dos Critérios que permitem definir qualidade de uma linguagem -- Compreensão, Derivação e Manutenção; Eficiência no Processamento e na Geração -- tendo em consideração o duplo papel de uma Gramática (GIC e GA): especificação formal de uma linguagem (para ser consumida por um Ser Humano que vai escrever frases nessa linguagem); e especificação formal de um programa/processador (para ser consumida por um Gerador).

Discussão do estado do artigo coletivo sobre Métricas para Avaliação de Qualidade de Especificações / Modelos.

09 Maio 2011

Introdução do estudo do tópico Qualidade de Gramáticas

  • Apresentaçãoos Critérios que permitem definir a qualidade de uma linguagem -- Compreensão, Derivação e Manutenção; Eficiência no Processamento e na Geração -- tendo em consideração o duplo papel de uma Gramática (GIC e GA): especificação formal de uma linguagem (para ser consumida por um Ser Humano que vai escrever frases nessa linguagem); e especificação formal de um programa/processador (para ser consumida por um Gerador).

  • Apresentação dos Factores que mais influenciam Critérios introduzidos na última aula para definir a qualidade de uma linguagem: número de símbolos e de produções; clareza dos identificadores dos símbolos; número de produções unitárias; comprimentos dos lados esquerdos das produções; notação usada (pure/extended BNF); esquema de recursividade; modularidade; e complexidade sintática.

16 Maio 2011

Palestra sobre Gramáticas de Atributos e Geradores de Compiladores dada pelo Prof. Eric van Wik:

  • Extensão de GA com novo símbolos e produções; forma de lida com a extensão durante a geração.

Estudo do tópico Qualidade de Gramáticas e Métricas

  • Apresentação das Métricas de Tamanho, de Forma e Lexicográficas relacionadas com os Factores que mais influenciam os Critérios de Qualidade de uma Gramática.

Discussão do estado do artigo coletivo sobre Métricas para Avaliação de Qualidade de Especificações / Modelos.

23 Maio 2011

Estudo do tópico Qualidade de Gramáticas e Métricas

  • Revisão das Métricas de Tamanho, de Forma e Lexicográficas relacionadas com os Factores que mais influenciam os Critérios de Qualidade de uma Gramática.
  • Resolução de vários exercícios sobre calculo de Métricas aplicadas a diferentes GIC (com base nos exercícios da edição 2009/2010).

Discussão do estado do artigo coletivo sobre Métricas para Avaliação de Qualidade de Especificações / Modelos.

30 Maio 2011

Manhã totalmente dedicada ao projeto integrado (PI).

06 de Junho 2011

Conclusão do Ano Letivo relativo ao Módulo de EG.

Fecho do tópico Qualidade de Gramáticas e Métricas

  • Balanço sobre as Métricas de Tamanho, de Forma e Lexicográficas relacionadas com os Factores que mais influenciam os Critérios de Qualidade de uma Gramática através da resolução e discussão do exercício 5 de transformação e cálculo de métricas de uma dada GIC (da edição 2009/2010).

Discussão do estado do artigo coletivo sobre Métricas para Avaliação de Qualidade de Especificações / Modelos.

13 de Junho 2011

  • Manhã parcialmente dedicada ao fecho de ATS e ao projeto integrado (PI).

Submissão do artigo coletivo sobre Métricas para Avaliação de Qualidade de Especificações / Modelos UML (paper CoRTA2011)

SumariosPED09 04 Nov 2009 - 07:37 - r3 PedroRangelHenriques

Engenharia de Linguagens (2009/2010)

Processamento Estruturado de Documentos

Sumários

28 de Setembro de 2009

  • Apresentação do Módulo de PED:
    • 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 Estruturado de Documentos.

12 Outubro de 2009

  • I - Introdução ao XML
    • Representação de informação (muito ou pouco estruturada)
    • Noção de documento bem-formado
    • Noção de documento válido
    • Instalação de um editor grátis de XML "http://sourceforge.net/projects/xml-copy-editor"
    • Instalação de um editor não grátis de XML Oxygen

    • Exercício anárquico para chegar à necessidade de um DTD ou Schema *1) Escrever um livro de receitas *2) Criar um DTD para o livro de receitas

  • II - XPath
    • Extrair informação dos documentos
    • Exercício com o Arquivo Sonoro de Ernesto Veiga de Oliveira
    • Utilização dos editores
      • Utilização do Saxon na linha de comandos
         $ java -cp /usr/share/java/saxonb.jar net.sf.saxon.Query -s arq-son-EVO.xml jesus.xq
         ou
         $ saxonb-xquery -s arq-son-EVO.xml jesus.xq

  • III - Incluir XML no LaTeX
    • Escrita do sumário da aula, incluindo o XML dos dois exercícios realizados.
    • Utilização dos módulos: url; listings; graphicx; hyperref

19 de Outubro de 2009

  • A aula foi usada para avançar com o Projecto integrado.

26 de Outubro de 2009

  • A aula foi usada para avançar com o Projecto integrado.

02 de Novembro de 2009 (aula dada por PRH)

  • Linguagens de Anotação de Documentos:
    • a noção de texto semi-estruturado por contra-ponto com texto completamente estruturado (frases de uma linguagem formal) e texto não-estruturado (frases de uma linguagem natural);
    • os princípos por trás da anotação de documentos; um pouco de histórica -- as linguagens de anotação LaTeX, SGML, HTML e XML;
    • análise de exemplos concretos de documentos históricos e sua interpretação -- a definição de marcas que explicitem a forma de interpretar diversos termos (simples e compostos);
    • o princípio básico de separar a anotação do seu processamento.

  • A Linguagem de Anotação XML:
    • XML como uma meta-linguagem para definir linguagens de anotação -- os dialectos XML e dos DTDs;
    • XML como a linguagem franca ou o esperanto dos Sistemas de Informação -- interoperabilidade entre bases de dados e outras aplicações.

  • Sistemas de Produção:
    • as 3 componentes básicas: base de regras de reacção "condição/acção" + base de factos + motor de produção;
    • conceitos e exemplos (Prolog, Lex/Flex, Awk, Perl, XSL).

  • Enunciado de um Trabalho Prático para a próxima aula -- verna rúbrica "Questões, Fichas Práticas e Notas"


SumariosPED10 29 Nov 2010 - 09:22 - NEW JorgeGustavo

Engenharia de Linguagens

TITLE


SumariosPLN09 02 Nov 2009 - 13:58 - r3 JoseJoao

Engenharia de Linguagens

Sumários

28 de Setembro de 2009

  • Apresentação geral do módulo

12 Outubro de 2009

  • Alguns conceitos gerais acerca de linguagem natural
    • níveis fonéticos, léxicos, morfológicos, sintáctico, semântico e pragmático
    • semântica forte vs semântica fraca
    • eficiência comunicativa e estruturas escondidas (iceberg semântico)

  • Introdução as Perl
    • introdução filosófica, base linguística do Perl
    • variáveis atómicas, listas, mappings e algumas funções associadas
    • funções de coerção e sua relação com linguagem natural

19 Outubro de 2009

  • Exercícios de Perl -- ajuda à construção dum ambiente
    • dicionário de design-patterns
  • Introdução às expressões-regulares

26 Outubro de 2009

  • Expressões regulares (continuação)
    • Procura de Nomes Próprios em textos

  • Noção de precision recall

2 Novembro de 2009

  • Procura de Entidades mensionadas
  • Algebra de multi-sets

9 Novembro de 2009


SumariosProjecto 18 Oct 2010 - 09:11 - r9 PedroRangelHenriques

Engenharia de Linguagens (2009/2010)

Projecto Integrado

Sumários

28 de Setembro de 2009

  • Apresentação geral do projecto

12 de Outubro de 2009

  • Apresentação detalhada do projecto
  • Discussão de estratégias para iniciar o seu desenvolvimento
  • Exercício: documentar e desenvover em literate programming uma script para a extrair o conteúdo de um qualquer pacote de software

19 de Outubro de 2009 (a aula realizou-se das 16:00 às 18:30)

  • Continuação da realização individual do exercício proposto na aula anterior.
  • Entrega do exercício através da submissão do ficheiro literate programming.

26 de Outubro de 2009 (a aula realizou-se das 8:00 às 10:30)

  • Aula de acompanhamento do projecto: análise da estrutura de ficheiros e directorias de um pacote de software.
  • Alunos presentes: 49319, pg15127, pg15545, pg? (josé) , pg15973, pg12004, 47085, pg16046, pg15954, pg13368

2 de Novembro de 2009

  • Breve apresentação da linguagem de domínio específico (DSL) BibTeX: uma linguagem para bases de dados bibliográgficas. A sua relação com o sistema LaTeX.

9 de Novembro de 2009

  • Acompanhamento do desenvolvimento do projecto.
  • Objectivos da apresentação que os grupos de trabalho farão a 7 de Dezembro.

16 de Novembro de 2009

  • Acompanhamento do desenvolvimento do projecto.

23 de Novembro de 2009

  • Acompanhamento do desenvolvimento do projecto.

30 de Novembro de 2009

  • Acompanhamento do desenvolvimento do projecto.
  • Apresentação de uma lista de aspectos do projecto que serão analisados na apresentação da semana seguinte

7 de Dezembro de 2009 ( as apresentações realizamram-se das 9:30 às 12:00)

  • Apresentação pelos 4 grupos da 1ª fase do projecto integrado.

14 de Dezembro de 2009

  • Breve comentário sobre a apresentação e relatório de cada grupo
  • Sugestão de uma nota a cada grupo sobre o estado do projecto nesta altura.

4 de Janeiro de 2009

  • Acompanhamento do desenvolvimento do projecto.

11 de Janeiro de 2009

  • Acompanhamento do desenvolvimento do projecto.
  • Breve discussão sobre técnicas genéricas de parsing.

18 de Janeiro de 2010

  • Acompanhamento do desenvolvimento do projecto.

25 de Janeiro de 2010

  • Apresentação dos objectivos a atingir na 2a fase do projecto integrado para cada um dos módulos da UCE.


SumariosProjecto10 11 Nov 2010 - 10:29 - r2 JoaoSaraiva

Engenharia de Linguagens (2010/2011)

Projecto Integrado

Sumários

27 de Setembro de 2010

  • Apresentação geral do projecto

4 de Outubro

  • Continuação da apresentação do projecto e suas etapas.
  • Definição de datas de aprentação e avaliação intercalares.

11 de Outubro

  • Não houve aula (participação na conf. em Eindhoven)

18 de Outubro

  • Palestras do Prof. Dr. Janis Voigtlaender sobre "Semantic Bidirectionalization" e "Type-based Program Reasoning", no contexto do programa doutoral MAP-i.
  • Estas palestras tiveram a duração de 3 horas, compensando assim a aula não leccionada na semana anterior.

25 de Outubro

  • Discussão com os alunos do projecto e possíveis abordagens a seguir e sistemas de software a utilizar.

1 de Novembro

  • Não houve aula: feriado

8 de Novembro

  • Continuação da análise das sub-tarefas envolvidas no projecto integrado.
  • Um sistema para definição e travessia de ASTs na linguagem C


WebAtom 24 Jan 2006 - 06:07 - r2 TWikiContributor
TWiki's Education/EL1011 web The Education/EL1011 web of TWiki. TWiki is a Web-Based Collaboration Platform for the Enterprise. http://wiki.di.uminho.pt/twiki/bin/view/Education/EL1011 Copyright 2020 by contributing authors 2011-10-02T22:36:16Z AlunosGrupos10 http://wiki.di.uminho.pt/twiki/bin/view/Education/EL1011/AlunosGrupos10 2011-10-02T22:36:16Z Engenharia de Linguagens (2010/11) Alunos/Grupos Gr Nome Email 4 André Manuel Pereira Pedra da Cruz Lopes andre.pclopes at gmail dot com 4 Bruno ... (last changed by PedroRangelHenriques) PedroRangelHenriques Horario10 http://wiki.di.uminho.pt/twiki/bin/view/Education/EL1011/Horario10 2011-10-02T22:33:29Z Engenharia de Linguagens (2010/2011) Horário Anual (1º 2º Semestres) 08h00 10h00 Módulo I Engenharia Gramatical 10h00 ... (last changed by PedroRangelHenriques) PedroRangelHenriques SumariosEG10 http://wiki.di.uminho.pt/twiki/bin/view/Education/EL1011/SumariosEG10 2011-09-17T23:42:05Z Engenharia de Linguagens (2010/2011) Engenharia Gramatical Sumários 27 de Setembro de 2010 1. Apresentação da UCE30 EL e em particular do Módulo de EG e ATS ... (last changed by PedroRangelHenriques) PedroRangelHenriques WebHome http://wiki.di.uminho.pt/twiki/bin/view/Education/EL1011/WebHome 2011-09-05T14:31:00Z Unidade Curricular de Especialização Engenharia de Linguagens (2010/2011) Responsável pela UCE: Rangel Henriques Propostas de Dissertação para 2011 ... (last changed by PedroRangelHenriques) PedroRangelHenriques ProgramaATS10 http://wiki.di.uminho.pt/twiki/bin/view/Education/EL1011/ProgramaATS10 2011-09-03T15:29:44Z Engenharia de Linguagens (2010/2011) Análise e Transformação de Software Programa Resumido Análise de programas: Extracção de dados Armazenamento ... (last changed by PedroRangelHenriques) PedroRangelHenriques ProgramaEG10 http://wiki.di.uminho.pt/twiki/bin/view/Education/EL1011/ProgramaEG10 2011-09-03T14:49:02Z Engenharia de Linguagens (2010/2011) Engenharia Gramatical Programa Resumido 1.Linguagens e Gramáticas; Caracterização destes conceitos e domínios do saber ... (last changed by PedroRangelHenriques) PedroRangelHenriques SumariosATS10 http://wiki.di.uminho.pt/twiki/bin/view/Education/EL1011/SumariosATS10 2011-06-19T05:38:30Z Engenharia de Linguagens (2010/11) Análise e Transformação de Software Sumários 27 de Setembro de 2010 A. Apresentação da disciplina I.1 Introdução ... (last changed by PedroRangelHenriques) PedroRangelHenriques SumariosATS09 http://wiki.di.uminho.pt/twiki/bin/view/Education/EL1011/SumariosATS09 2011-05-27T21:52:54Z Engenharia de Linguagens (2009/10) Análise e Transformação de Software Sumários 31 Maio de 2010 Apresentação do Laboratório online !GamaSlicer para verifica ... (last changed by PedroRangelHenriques) PedroRangelHenriques FichasEG10 http://wiki.di.uminho.pt/twiki/bin/view/Education/EL1011/FichasEG10 2011-04-04T22:44:05Z Engenharia de Linguagens (2010/11) Engenharia Gramatical Exercícios e Exemplos para as aulas Exemplo 1: Para apoio a um projecto de Genealogia pretende se que ... (last changed by PedroRangelHenriques) PedroRangelHenriques SumariosPED10 http://wiki.di.uminho.pt/twiki/bin/view/Education/EL1011/SumariosPED10 2010-11-29T09:22:20Z Engenharia de Linguagens TITLE (last changed by JorgeGustavo) JorgeGustavo SumariosProjecto10 http://wiki.di.uminho.pt/twiki/bin/view/Education/EL1011/SumariosProjecto10 2010-11-11T10:29:14Z Engenharia de Linguagens (2010/2011) Projecto Integrado Sumários 27 de Setembro de 2010 Apresentação geral do projecto 4 de Outubro Continuação da ... (last changed by JoaoSaraiva) JoaoSaraiva AlunosGrupos09 http://wiki.di.uminho.pt/twiki/bin/view/Education/EL1011/AlunosGrupos09 2010-10-23T08:15:32Z Engenharia de Linguagens (2009/10) Alunos/Grupos 4 Andre da Silva Rocha 2 André Fernandes dos Santos 1 Daniel Carvalho da Rocha 3 Hélder de ... (last changed by PedroRangelHenriques) PedroRangelHenriques MetodoAvaliacao http://wiki.di.uminho.pt/twiki/bin/view/Education/EL1011/MetodoAvaliacao 2010-10-23T08:13:59Z Engenharia de Linguagens (2010/2011) Método de Avaliação A avaliação da UCE de Engenharia de Linguagens é calculada pela seguinte fórmula: NF 15% PED 15% EG ... (last changed by PedroRangelHenriques) PedroRangelHenriques SumariosProjecto http://wiki.di.uminho.pt/twiki/bin/view/Education/EL1011/SumariosProjecto 2010-10-18T09:11:25Z Engenharia de Linguagens (2009/2010) Projecto Integrado Sumários 28 de Setembro de 2009 Apresentação geral do projecto 12 de Outubro de 2009 Apresenta ... (last changed by PedroRangelHenriques) PedroRangelHenriques ObjectivosProjecto http://wiki.di.uminho.pt/twiki/bin/view/Education/EL1011/ObjectivosProjecto 2010-10-18T09:09:57Z Engenharia de Linguagens (2009/2010) Projecto Integrado Objectivos Gerais para a 1ª Fase: Sistema: Criar a base do sistema FOSSAT para receber e analisar ... (last changed by PedroRangelHenriques) PedroRangelHenriques ObjectivosProjecto10 http://wiki.di.uminho.pt/twiki/bin/view/Education/EL1011/ObjectivosProjecto10 2010-10-18T08:52:41Z Engenharia de Linguagens (2010/2011) Projecto Integrado Objectivos Gerais: Sistema: Criar ..... Documentação Relatório de Desenvolvimento ... (last changed by PedroRangelHenriques) PedroRangelHenriques
WebChanges 15 Nov 2006 - 19:43 - r3 TWikiContributor

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

AlunosGrupos10 02 Oct 2011 - 22:36 - r8 PedroRangelHenriques
Engenharia de Linguagens (2010/11) Alunos/Grupos Gr Nome Email 4 André Manuel Pereira Pedra da Cruz Lopes andre.pclopes at gmail dot com 4 Bruno ...
Horario10 02 Oct 2011 - 22:33 - r3 PedroRangelHenriques
Engenharia de Linguagens (2010/2011) Horário Anual (1º 2º Semestres) 08h00 10h00 Módulo I Engenharia Gramatical 10h00 ...
SumariosEG10 17 Sep 2011 - 23:42 - r37 PedroRangelHenriques
Engenharia de Linguagens (2010/2011) Engenharia Gramatical Sumários 27 de Setembro de 2010 1. Apresentação da UCE30 EL e em particular do Módulo de EG e ATS ...
WebHome 05 Sep 2011 - 14:31 - r44 PedroRangelHenriques
Unidade Curricular de Especialização Engenharia de Linguagens (2010/2011) Responsável pela UCE: Rangel Henriques Propostas de Dissertação para 2011 ...
ProgramaATS10 03 Sep 2011 - 15:29 - r3 PedroRangelHenriques
Engenharia de Linguagens (2010/2011) Análise e Transformação de Software Programa Resumido Análise de programas: Extracção de dados Armazenamento ...
ProgramaEG10 03 Sep 2011 - 14:49 - r3 PedroRangelHenriques
Engenharia de Linguagens (2010/2011) Engenharia Gramatical Programa Resumido 1.Linguagens e Gramáticas; Caracterização destes conceitos e domínios do saber ...
SumariosATS10 19 Jun 2011 - 05:38 - r26 PedroRangelHenriques
Engenharia de Linguagens (2010/11) Análise e Transformação de Software Sumários 27 de Setembro de 2010 A. Apresentação da disciplina I.1 Introdução ...
SumariosATS09 27 May 2011 - 21:52 - r36 PedroRangelHenriques
Engenharia de Linguagens (2009/10) Análise e Transformação de Software Sumários 31 Maio de 2010 Apresentação do Laboratório online !GamaSlicer para verifica ...
FichasEG10 04 Apr 2011 - 22:44 - r13 PedroRangelHenriques
Engenharia de Linguagens (2010/11) Engenharia Gramatical Exercícios e Exemplos para as aulas Exemplo 1: Para apoio a um projecto de Genealogia pretende se que ...
SumariosPED10 29 Nov 2010 - 09:22 - NEW JorgeGustavo
Engenharia de Linguagens TITLE
SumariosProjecto10 11 Nov 2010 - 10:29 - r2 JoaoSaraiva
Engenharia de Linguagens (2010/2011) Projecto Integrado Sumários 27 de Setembro de 2010 Apresentação geral do projecto 4 de Outubro Continuação da ...
AlunosGrupos09 23 Oct 2010 - 08:15 - r7 PedroRangelHenriques
Engenharia de Linguagens (2009/10) Alunos/Grupos 4 Andre da Silva Rocha 2 André Fernandes dos Santos 1 Daniel Carvalho da Rocha 3 Hélder de ...
MetodoAvaliacao 23 Oct 2010 - 08:13 - r8 PedroRangelHenriques
Engenharia de Linguagens (2010/2011) Método de Avaliação A avaliação da UCE de Engenharia de Linguagens é calculada pela seguinte fórmula: NF 15% PED 15% EG ...
SumariosProjecto 18 Oct 2010 - 09:11 - r9 PedroRangelHenriques
Engenharia de Linguagens (2009/2010) Projecto Integrado Sumários 28 de Setembro de 2009 Apresentação geral do projecto 12 de Outubro de 2009 Apresenta ...
ObjectivosProjecto 18 Oct 2010 - 09:09 - r5 PedroRangelHenriques
Engenharia de Linguagens (2009/2010) Projecto Integrado Objectivos Gerais para a 1ª Fase: Sistema: Criar a base do sistema FOSSAT para receber e analisar ...
ObjectivosProjecto10 18 Oct 2010 - 08:52 - NEW PedroRangelHenriques
Engenharia de Linguagens (2010/2011) Projecto Integrado Objectivos Gerais: Sistema: Criar ..... Documentação Relatório de Desenvolvimento ...
FichasATS10 18 Oct 2010 - 05:58 - NEW PedroRangelHenriques
Engenharia de Linguagens (2010/11) Análise e Transformação de Software Exemplos para as aulas Notas sobre !AnTLR Configurar CLASSPATH para permitir a invoca ...
FichasATS09 18 Oct 2010 - 05:58 - r11 PedroRangelHenriques
Engenharia de Linguagens (2009/10) Análise e Transformação de Software Exemplos para as aulas Para o seguinte programa: Calcule o backward slicing ...
ProgramaATS09 18 Oct 2010 - 05:51 - r6 PedroRangelHenriques
Engenharia de Linguagens (2009/2010) Análise e Transformação de Software Programa Resumido Análise de programas: Extracção de dados Armazenamento ...
ProgramaEG09 18 Oct 2010 - 05:45 - r7 PedroRangelHenriques
Engenharia de Linguagens (2009/2010) Engenharia Gramatical Programa Resumido 1.Linguagens e Gramáticas; Caracterização destes conceitos e domínios do saber ...
FichasEG09 18 Oct 2010 - 05:43 - r23 PedroRangelHenriques
Engenharia de Linguagens (2009/10) Engenharia Gramatical Exercícios e Exemplos para as aulas Exemplo 5: A gramática independente de contexto GIC5, abaixo apresentada ...
SumariosEG09 18 Oct 2010 - 05:20 - r40 PedroRangelHenriques
Engenharia de Linguagens (2010/2011) Engenharia Gramatical Sumários 31 Maio de 2010 !GraAlEditor, um editor analisador de Gramáticas: Preparação de ...
PrimeiroSemestre 18 Oct 2010 - 04:38 - r7 PedroRangelHenriques
Engenharia de Linguagens (2009/2010) Horário Primeiro Semestre 08h00 10h00 Módulo I Processamento Estruturado de Documentos 10h00 12h00 ...
ResultadosAvaliacao09 29 Jul 2010 - 07:25 - r8 PedroRangelHenriques
Engenharia de Linguagens (2009/2010) Resultados de Avaliação G Nome EL ATS PLN PI PI FINAL ...
FichasPED09 17 May 2010 - 07:50 - r15 JorgeGustavo
Engenharia de Linguagens (2009/2010) Processamento Estruturado de Documentos Alfresco Descarregar a versão Edition Requisitos: Java !MySQL !ImageMagick ...
Agenda2html 23 Nov 2009 - 08:50 - NEW JorgeGustavo
Engenharia de Linguagens TITLE #left { float:left; width:30%; } #right { float:left; width:70%; } ...
SumariosPED09 04 Nov 2009 - 07:37 - r3 PedroRangelHenriques
Engenharia de Linguagens (2009/2010) Processamento Estruturado de Documentos Sumários 28 de Setembro de 2009 Apresentação do Módulo de PED: Apresenta ...
SumariosPLN09 02 Nov 2009 - 13:58 - r3 JoseJoao
Engenharia de Linguagens Sumários 28 de Setembro de 2009 Apresentação geral do módulo 12 Outubro de 2009 Alguns conceitos gerais acerca de linguagem natural ...
ProgramaPLN09 19 Oct 2009 - 10:41 - NEW JoseJoao
Engenharia de Linguagens Scripting no Processamento de Linguagem Natural Programa Resumido Linguagens de scripting: características, objectivos e conceitos ...
WebPreferences 01 Oct 2009 - 08:45 - r19 JoseFaria
Education/EL1011 Web Preferences The following settings are web preferences of the Education/EL1011 web. These preferences overwrite the site level preferences ...
AvaliaçõesPeriódicas 23 Sep 2009 - 10:52 - r7 JoseFaria
Engenharia de Linguagens PI: Avaliações Periódicas G Nome 10Nov 15Dez 1 Miguel Esteves Sat MBom 1 Nuno Correia Sat MBom ...
AG:sumarios 23 Sep 2009 - 10:52 - r9 JoseFaria
Engenharia de Linguagens Projecto Integrado Aulas de Gestão Sumários 6 Outubro 2008 Modo de funcionamento do Projecto Integrado; Apresentação do enunciado ...
FichasEG08 23 Sep 2009 - 10:52 - r27 JoseFaria
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 ...
AlunosGrupos08 23 Sep 2009 - 10:52 - r7 JoseFaria
Engenharia de Linguagens Alunos/Grupos 2008/09 1 Miguel Esteves 1 Nuno Correia 1 Tiago Correia 2 Nuno Veloso 3 Susana Silva ...
ProgramaEG08 23 Sep 2009 - 10:52 - r3 JoseFaria
Engenharia de Linguagens Engenharia Gramatical 2008/09 Programa Resumido O paradigma da Programação baseada em Gramáticas (PG). Conceitos sobre Gramáticas ...
ResultadosAvaliacao 23 Sep 2009 - 10:52 - r9 JoseFaria
Engenharia de Linguagens Resultados de Avaliação G Nome PED EG ATS PLN PI NF 1 Miguel Esteves 19 15 17 ...
BibliografiaSobreScripting 23 Sep 2009 - 10:52 - r7 JoseFaria
Engenharia de Linguagens Bibliografia: Scripting Livros Randal L. Schwartz, Tom Phoenix, brian d foy, Learning Perl , O'Reilly Media Larry Wall, Tom Christiansen ...
AT:sumarios 23 Sep 2009 - 10:52 - r13 JoseFaria
Engenharia de Linguagens Projecto Integrado Aulas Tecnológicas Sumários 29 Setembro 2008 Necessidade de um ambiente de programação eficiente: Editor, linha ...
WebTopicEditTemplate 23 Sep 2009 - 10:52 - r3 JoseFaria
Engenharia de Linguagens TITLE
SegundoSemestre 23 Sep 2009 - 10:52 - r3 JoseFaria
Engenharia de Linguagens Horário Segundo Semestre
SumariosEG08 23 Sep 2009 - 10:52 - r30 JoseFaria
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 ...
WebStatistics 23 Sep 2009 - 10:52 - r64 JoseFaria
Statistics for Education/EL1011 Web Month: Topic views: Topic saves: File uploads: Most popular topic views: Top contributors for topic ...
SumariosATS08 23 Sep 2009 - 10:52 - r14 JoseFaria
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 ...
FichasATS08 23 Sep 2009 - 10:52 - r7 JoseFaria
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 ...
EtapasDoProjecto 23 Sep 2009 - 10:52 - r8 JoseFaria
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 ...
GraphVizEmXP 23 Sep 2009 - 10:52 - r3 JoseFaria
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 ...
ProgramaATS08 23 Sep 2009 - 10:52 - r3 JoseFaria
Engenharia de Linguagens Análise e Transformação de Software Análise de programas: Extracção de dados Armazenamento da informação recolhida ...
A2s2p:sumarios 23 Sep 2009 - 10:52 - r16 JoseFaria
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 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 ...
A2s1p:sumarios 23 Sep 2009 - 10:52 - r3 JoseFaria
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 ...
Found 50 topics.

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

WebHome 05 Sep 2011 - 14:31 - r44 PedroRangelHenriques

Unidade Curricular de Especialização

Engenharia de Linguagens (2010/2011)

  • Propostas de Dissertação para 2011/12
    • Procurar nas Homepages dos Docentes ou Contactar directamente os Docentes (JUL/SET)
    • Ver propostas na lista a publicar pela CDMI em Setembro de 2011

  • Propostas de Dissertação para 2010/11
    • Ver propostas na lista publicada pela CDMI em 2010.set.29 ou
    • Contactar directamente os Docentes

Novidades

  • 2011-06-18 - Ver no último sumário de EG o paper submetido pela Turma ao CoRTA2011 sobre métricas em linguagens de modelação (UML).

  • 2011-07-15 - Avaliação Final (2ºTeste) de EG+ATS (9h), PLN (10h), PED (11h)
  • 2011-06-27 - Avaliação Final do PI

  • 2011-06-20 - Fim da parte lectiva (aulas)
  • 2011-02-21 - COMEÇO 2ºSEMESTRE

  • 2011-01-31 - Avaliação Intermédia (1ºTeste) a: EG+ATS (9h), PLN (10h), PED (11h)

  • 2011-01-28 - FIM 1ºSEMESTRE

  • 2011-01-24 - NÃO HAVERÁ AULAS para reflexão/preparação para os testes

  • 2011-01-10 - 1ª Etape de Avaliação /2ªParte -- DEMO.

  • 2010-12-13 - 1ª Etape de Avaliação do PI.
  • 2010-10-18 - Actualizada a informação base (comum) sobre a UCE
  • 2010-10-15 - Criada a Web para a edição de 2010/2011

Módulos

  • Scripting no Processamento de Linguagem Natural
    • Responsável: José João Almeida
    • Programa, Avaliação e Bibliografia?
    • Sumários?
    • Questões, Fichas Práticas e Notas?

  • Processamento Estruturado de Documentos

Material Didáctico Comum


Education/EL1011 Web Utilities


WebIndex 15 Nov 2006 - 19:43 - r4 TWikiContributor
Education/EL1011 Web Changed Changed by
A2s1p:sumarios 23 Sep 2009 - 10:52 - r3 JoseFaria
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 23 Sep 2009 - 10:52 - r16 JoseFaria
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 23 Sep 2009 - 10:52 - r9 JoseFaria
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 23 Sep 2009 - 10:52 - r13 JoseFaria
Engenharia de Linguagens Projecto Integrado Aulas Tecnológicas Sumários 29 Setembro 2008 Necessidade de um ambiente de programação eficiente: Editor, linha ...
Agenda2html 23 Nov 2009 - 08:50 - NEW JorgeGustavo
Engenharia de Linguagens TITLE #left { float:left; width:30%; } #right { float:left; width:70%; } ...
AlunosGrupos08 23 Sep 2009 - 10:52 - r7 JoseFaria
Engenharia de Linguagens Alunos/Grupos 2008/09 1 Miguel Esteves 1 Nuno Correia 1 Tiago Correia 2 Nuno Veloso 3 Susana Silva ...
AlunosGrupos09 23 Oct 2010 - 08:15 - r7 PedroRangelHenriques
Engenharia de Linguagens (2009/10) Alunos/Grupos 4 Andre da Silva Rocha 2 André Fernandes dos Santos 1 Daniel Carvalho da Rocha 3 Hélder de ...
AlunosGrupos10 02 Oct 2011 - 22:36 - r8 PedroRangelHenriques
Engenharia de Linguagens (2010/11) Alunos/Grupos Gr Nome Email 4 André Manuel Pereira Pedra da Cruz Lopes andre.pclopes at gmail dot com 4 Bruno ...
AvaliaçõesPeriódicas 23 Sep 2009 - 10:52 - r7 JoseFaria
Engenharia de Linguagens PI: Avaliações Periódicas G Nome 10Nov 15Dez 1 Miguel Esteves Sat MBom 1 Nuno Correia Sat MBom ...
BibliografiaSobreScripting 23 Sep 2009 - 10:52 - r7 JoseFaria
Engenharia de Linguagens Bibliografia: Scripting Livros Randal L. Schwartz, Tom Phoenix, brian d foy, Learning Perl , O'Reilly Media Larry Wall, Tom Christiansen ...
EtapasDoProjecto 23 Sep 2009 - 10:52 - r8 JoseFaria
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 23 Sep 2009 - 10:52 - r7 JoseFaria
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 ...
FichasATS09 18 Oct 2010 - 05:58 - r11 PedroRangelHenriques
Engenharia de Linguagens (2009/10) Análise e Transformação de Software Exemplos para as aulas Para o seguinte programa: Calcule o backward slicing ...
FichasATS10 18 Oct 2010 - 05:58 - NEW PedroRangelHenriques
Engenharia de Linguagens (2010/11) Análise e Transformação de Software Exemplos para as aulas Notas sobre !AnTLR Configurar CLASSPATH para permitir a invoca ...
FichasEG08 23 Sep 2009 - 10:52 - r27 JoseFaria
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 ...
FichasEG09 18 Oct 2010 - 05:43 - r23 PedroRangelHenriques
Engenharia de Linguagens (2009/10) Engenharia Gramatical Exercícios e Exemplos para as aulas Exemplo 5: A gramática independente de contexto GIC5, abaixo apresentada ...
FichasEG10 04 Apr 2011 - 22:44 - r13 PedroRangelHenriques
Engenharia de Linguagens (2010/11) Engenharia Gramatical Exercícios e Exemplos para as aulas Exemplo 1: Para apoio a um projecto de Genealogia pretende se que ...
FichasPED09 17 May 2010 - 07:50 - r15 JorgeGustavo
Engenharia de Linguagens (2009/2010) Processamento Estruturado de Documentos Alfresco Descarregar a versão Edition Requisitos: Java !MySQL !ImageMagick ...
GraphVizEmXP 23 Sep 2009 - 10:52 - r3 JoseFaria
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 ...
Horario10 02 Oct 2011 - 22:33 - r3 PedroRangelHenriques
Engenharia de Linguagens (2010/2011) Horário Anual (1º 2º Semestres) 08h00 10h00 Módulo I Engenharia Gramatical 10h00 ...
MetodoAvaliacao 23 Oct 2010 - 08:13 - r8 PedroRangelHenriques
Engenharia de Linguagens (2010/2011) Método de Avaliação A avaliação da UCE de Engenharia de Linguagens é calculada pela seguinte fórmula: NF 15% PED 15% EG ...
ObjectivosProjecto 18 Oct 2010 - 09:09 - r5 PedroRangelHenriques
Engenharia de Linguagens (2009/2010) Projecto Integrado Objectivos Gerais para a 1ª Fase: Sistema: Criar a base do sistema FOSSAT para receber e analisar ...
ObjectivosProjecto10 18 Oct 2010 - 08:52 - NEW PedroRangelHenriques
Engenharia de Linguagens (2010/2011) Projecto Integrado Objectivos Gerais: Sistema: Criar ..... Documentação Relatório de Desenvolvimento ...
PrimeiroSemestre 18 Oct 2010 - 04:38 - r7 PedroRangelHenriques
Engenharia de Linguagens (2009/2010) Horário Primeiro Semestre 08h00 10h00 Módulo I Processamento Estruturado de Documentos 10h00 12h00 ...
ProgramaATS08 23 Sep 2009 - 10:52 - r3 JoseFaria
Engenharia de Linguagens Análise e Transformação de Software Análise de programas: Extracção de dados Armazenamento da informação recolhida ...
ProgramaATS09 18 Oct 2010 - 05:51 - r6 PedroRangelHenriques
Engenharia de Linguagens (2009/2010) Análise e Transformação de Software Programa Resumido Análise de programas: Extracção de dados Armazenamento ...
ProgramaATS10 03 Sep 2011 - 15:29 - r3 PedroRangelHenriques
Engenharia de Linguagens (2010/2011) Análise e Transformação de Software Programa Resumido Análise de programas: Extracção de dados Armazenamento ...
ProgramaEG08 23 Sep 2009 - 10:52 - r3 JoseFaria
Engenharia de Linguagens Engenharia Gramatical 2008/09 Programa Resumido O paradigma da Programação baseada em Gramáticas (PG). Conceitos sobre Gramáticas ...
ProgramaEG09 18 Oct 2010 - 05:45 - r7 PedroRangelHenriques
Engenharia de Linguagens (2009/2010) Engenharia Gramatical Programa Resumido 1.Linguagens e Gramáticas; Caracterização destes conceitos e domínios do saber ...
ProgramaEG10 03 Sep 2011 - 14:49 - r3 PedroRangelHenriques
Engenharia de Linguagens (2010/2011) Engenharia Gramatical Programa Resumido 1.Linguagens e Gramáticas; Caracterização destes conceitos e domínios do saber ...
ProgramaPLN09 19 Oct 2009 - 10:41 - NEW JoseJoao
Engenharia de Linguagens Scripting no Processamento de Linguagem Natural Programa Resumido Linguagens de scripting: características, objectivos e conceitos ...
ResultadosAvaliacao 23 Sep 2009 - 10:52 - r9 JoseFaria
Engenharia de Linguagens Resultados de Avaliação G Nome PED EG ATS PLN PI NF 1 Miguel Esteves 19 15 17 ...
ResultadosAvaliacao09 29 Jul 2010 - 07:25 - r8 PedroRangelHenriques
Engenharia de Linguagens (2009/2010) Resultados de Avaliação G Nome EL ATS PLN PI PI FINAL ...
SegundoSemestre 23 Sep 2009 - 10:52 - r3 JoseFaria
Engenharia de Linguagens Horário Segundo Semestre
SumariosATS08 23 Sep 2009 - 10:52 - r14 JoseFaria
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 ...
SumariosATS09 27 May 2011 - 21:52 - r36 PedroRangelHenriques
Engenharia de Linguagens (2009/10) Análise e Transformação de Software Sumários 31 Maio de 2010 Apresentação do Laboratório online !GamaSlicer para verifica ...
SumariosATS10 19 Jun 2011 - 05:38 - r26 PedroRangelHenriques
Engenharia de Linguagens (2010/11) Análise e Transformação de Software Sumários 27 de Setembro de 2010 A. Apresentação da disciplina I.1 Introdução ...
SumariosEG08 23 Sep 2009 - 10:52 - r30 JoseFaria
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 ...
SumariosEG09 18 Oct 2010 - 05:20 - r40 PedroRangelHenriques
Engenharia de Linguagens (2010/2011) Engenharia Gramatical Sumários 31 Maio de 2010 !GraAlEditor, um editor analisador de Gramáticas: Preparação de ...
SumariosEG10 17 Sep 2011 - 23:42 - r37 PedroRangelHenriques
Engenharia de Linguagens (2010/2011) Engenharia Gramatical Sumários 27 de Setembro de 2010 1. Apresentação da UCE30 EL e em particular do Módulo de EG e ATS ...
SumariosPED09 04 Nov 2009 - 07:37 - r3 PedroRangelHenriques
Engenharia de Linguagens (2009/2010) Processamento Estruturado de Documentos Sumários 28 de Setembro de 2009 Apresentação do Módulo de PED: Apresenta ...
SumariosPED10 29 Nov 2010 - 09:22 - NEW JorgeGustavo
Engenharia de Linguagens TITLE
SumariosPLN09 02 Nov 2009 - 13:58 - r3 JoseJoao
Engenharia de Linguagens Sumários 28 de Setembro de 2009 Apresentação geral do módulo 12 Outubro de 2009 Alguns conceitos gerais acerca de linguagem natural ...
SumariosProjecto 18 Oct 2010 - 09:11 - r9 PedroRangelHenriques
Engenharia de Linguagens (2009/2010) Projecto Integrado Sumários 28 de Setembro de 2009 Apresentação geral do projecto 12 de Outubro de 2009 Apresenta ...
SumariosProjecto10 11 Nov 2010 - 10:29 - r2 JoaoSaraiva
Engenharia de Linguagens (2010/2011) Projecto Integrado Sumários 27 de Setembro de 2010 Apresentação geral do projecto 4 de Outubro Continuação da ...
WebAtom 24 Jan 2006 - 06:07 - r2 TWikiContributor
TWiki's Education/EL1011 web
WebChanges 15 Nov 2006 - 19:43 - r3 TWikiContributor
WebHome 05 Sep 2011 - 14:31 - r44 PedroRangelHenriques
Unidade Curricular de Especialização Engenharia de Linguagens (2010/2011) Responsável pela UCE: Rangel Henriques Propostas de Dissertação para 2011 ...
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 01 Oct 2009 - 08:45 - r19 JoseFaria
Education/EL1011 Web Preferences The following settings are web preferences of the Education/EL1011 web. These preferences overwrite the site level preferences ...
WebRss 28 Mar 2005 - 09:40 - r4 TWikiContributor
" else "TWiki's Education/EL1011 web"}% /Education/EL1011
WebSearch 15 Nov 2006 - 19:43 - r3 TWikiContributor
WebSearchAdvanced 15 Nov 2006 - 19:43 - r3 TWikiContributor
WebStatistics 23 Sep 2009 - 10:52 - r64 JoseFaria
Statistics for Education/EL1011 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 23 Sep 2009 - 10:52 - r3 JoseFaria
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 60 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/EL1011 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 01 Oct 2009 - 08:45 - r19 JoseFaria

Education/EL1011 Web Preferences

The following settings are web preferences of the Education.EL1011 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/EL1011 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/EL1011.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/EL1011 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.JorgeGustavo,Main.JoseJoao,Main.JoaoSaraiva,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/EL1011 The Education/EL1011 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/EL1011 http://wiki.di.uminho.pt/twiki/bin/view/Education/EL1011 /twiki/pub/Main/LocalLogos/um_eengP.jpg AlunosGrupos10 http://wiki.di.uminho.pt/twiki/bin/view/Education/EL1011/AlunosGrupos10 Engenharia de Linguagens (2010/11) Alunos/Grupos Gr Nome Email 4 André Manuel Pereira Pedra da Cruz Lopes andre.pclopes at gmail dot com 4 Bruno ... (last changed by PedroRangelHenriques) 2011-10-02T22:36:16Z PedroRangelHenriques Horario10 http://wiki.di.uminho.pt/twiki/bin/view/Education/EL1011/Horario10 Engenharia de Linguagens (2010/2011) Horário Anual (1º 2º Semestres) 08h00 10h00 Módulo I Engenharia Gramatical 10h00 ... (last changed by PedroRangelHenriques) 2011-10-02T22:33:29Z PedroRangelHenriques SumariosEG10 http://wiki.di.uminho.pt/twiki/bin/view/Education/EL1011/SumariosEG10 Engenharia de Linguagens (2010/2011) Engenharia Gramatical Sumários 27 de Setembro de 2010 1. Apresentação da UCE30 EL e em particular do Módulo de EG e ATS ... (last changed by PedroRangelHenriques) 2011-09-17T23:42:05Z PedroRangelHenriques WebHome http://wiki.di.uminho.pt/twiki/bin/view/Education/EL1011/WebHome Unidade Curricular de Especialização Engenharia de Linguagens (2010/2011) Responsável pela UCE: Rangel Henriques Propostas de Dissertação para 2011 ... (last changed by PedroRangelHenriques) 2011-09-05T14:31:00Z PedroRangelHenriques ProgramaATS10 http://wiki.di.uminho.pt/twiki/bin/view/Education/EL1011/ProgramaATS10 Engenharia de Linguagens (2010/2011) Análise e Transformação de Software Programa Resumido Análise de programas: Extracção de dados Armazenamento ... (last changed by PedroRangelHenriques) 2011-09-03T15:29:44Z PedroRangelHenriques ProgramaEG10 http://wiki.di.uminho.pt/twiki/bin/view/Education/EL1011/ProgramaEG10 Engenharia de Linguagens (2010/2011) Engenharia Gramatical Programa Resumido 1.Linguagens e Gramáticas; Caracterização destes conceitos e domínios do saber ... (last changed by PedroRangelHenriques) 2011-09-03T14:49:02Z PedroRangelHenriques SumariosATS10 http://wiki.di.uminho.pt/twiki/bin/view/Education/EL1011/SumariosATS10 Engenharia de Linguagens (2010/11) Análise e Transformação de Software Sumários 27 de Setembro de 2010 A. Apresentação da disciplina I.1 Introdução ... (last changed by PedroRangelHenriques) 2011-06-19T05:38:30Z PedroRangelHenriques SumariosATS09 http://wiki.di.uminho.pt/twiki/bin/view/Education/EL1011/SumariosATS09 Engenharia de Linguagens (2009/10) Análise e Transformação de Software Sumários 31 Maio de 2010 Apresentação do Laboratório online !GamaSlicer para verifica ... (last changed by PedroRangelHenriques) 2011-05-27T21:52:54Z PedroRangelHenriques FichasEG10 http://wiki.di.uminho.pt/twiki/bin/view/Education/EL1011/FichasEG10 Engenharia de Linguagens (2010/11) Engenharia Gramatical Exercícios e Exemplos para as aulas Exemplo 1: Para apoio a um projecto de Genealogia pretende se que ... (last changed by PedroRangelHenriques) 2011-04-04T22:44:05Z PedroRangelHenriques SumariosPED10 http://wiki.di.uminho.pt/twiki/bin/view/Education/EL1011/SumariosPED10 Engenharia de Linguagens TITLE (last changed by JorgeGustavo) 2010-11-29T09:22:20Z JorgeGustavo SumariosProjecto10 http://wiki.di.uminho.pt/twiki/bin/view/Education/EL1011/SumariosProjecto10 Engenharia de Linguagens (2010/2011) Projecto Integrado Sumários 27 de Setembro de 2010 Apresentação geral do projecto 4 de Outubro Continuação da ... (last changed by JoaoSaraiva) 2010-11-11T10:29:14Z JoaoSaraiva AlunosGrupos09 http://wiki.di.uminho.pt/twiki/bin/view/Education/EL1011/AlunosGrupos09 Engenharia de Linguagens (2009/10) Alunos/Grupos 4 Andre da Silva Rocha 2 André Fernandes dos Santos 1 Daniel Carvalho da Rocha 3 Hélder de ... (last changed by PedroRangelHenriques) 2010-10-23T08:15:32Z PedroRangelHenriques MetodoAvaliacao http://wiki.di.uminho.pt/twiki/bin/view/Education/EL1011/MetodoAvaliacao Engenharia de Linguagens (2010/2011) Método de Avaliação A avaliação da UCE de Engenharia de Linguagens é calculada pela seguinte fórmula: NF 15% PED 15% EG ... (last changed by PedroRangelHenriques) 2010-10-23T08:13:59Z PedroRangelHenriques SumariosProjecto http://wiki.di.uminho.pt/twiki/bin/view/Education/EL1011/SumariosProjecto Engenharia de Linguagens (2009/2010) Projecto Integrado Sumários 28 de Setembro de 2009 Apresentação geral do projecto 12 de Outubro de 2009 Apresenta ... (last changed by PedroRangelHenriques) 2010-10-18T09:11:25Z PedroRangelHenriques ObjectivosProjecto http://wiki.di.uminho.pt/twiki/bin/view/Education/EL1011/ObjectivosProjecto Engenharia de Linguagens (2009/2010) Projecto Integrado Objectivos Gerais para a 1ª Fase: Sistema: Criar a base do sistema FOSSAT para receber e analisar ... (last changed by PedroRangelHenriques) 2010-10-18T09:09:57Z PedroRangelHenriques ObjectivosProjecto10 http://wiki.di.uminho.pt/twiki/bin/view/Education/EL1011/ObjectivosProjecto10 Engenharia de Linguagens (2010/2011) Projecto Integrado Objectivos Gerais: Sistema: Criar ..... Documentação Relatório de Desenvolvimento ... (last changed by PedroRangelHenriques) 2010-10-18T08:52:41Z PedroRangelHenriques
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/EL1011 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 23 Sep 2009 - 10:52 - r64 JoseFaria

Statistics for Education/EL1011 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/EL1011 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 23 Sep 2009 - 10:52 - r3 JoseFaria

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/EL1011 Web Utilities


Found 60 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/EL1011 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 23 Sep 2009 - 10:52 - r64 JoseFaria

Statistics for Education/EL1011 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/EL1011 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 23 Sep 2009 - 10:52 - r3 JoseFaria

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/EL1011 Web Utilities


Found 60 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