Engenharia Gramatical
Sumários
03 de Outubro de 2011
- 1. Apresentação da UCE30-EL e dos seus vários Módulos:
- 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.
10 de Outubro de 2011
- 2. Revisão do conceito de Linguagem e sua relação com Gramática:
- Linguagem Formal (textual ou visual) versus Linguagem Natural;
- Linguagens de Programação--GPL versus DSL.
- 3. Gramáticas:
- Revisão do conceito de Gramática Indepedente de Contexto (GIC); sua definição formal; GIC = < T, N, S, P >, com pi : X0 --> X1...Xi...Xn
- Sintaxe de uma Linguagem e Derivação de Frases; Árvore de Derivação;
- Exemplos: Fatura/Faturas; Biblioteca.
17 de Outubro de 2011
- 3. Gramáticas:
- Revisão do conceito de Gramática Indepedente de Contexto (GIC); sua definição formal;
- Exemplo 4: Genea, uma linguagem para construção de árvores genealógicas.
Genea Grammar
p00: Genea --> Familias
p01: Familias --> Familia
p02: | Familias Familia
p03: Familia --> PROGENITORES '(' DataCasa ')' Progs FILHOS Filhos
p04: Progs --> MAE Progenitor PAI Progenitor
p05: | PAI Progenitor MAE Progenitor
p06: Progenitor --> Nome Apelido DataNasc DataMorte
p07: | DESCONHECIDO
----------alternativa--------------------------------------
Progenitor --> Nome Apelido Genero
| DESCONHECIDO
Genero --> PAI
| MAE
------------------------------------------------------------
p08: Filhos --> &
p09: | Filhos , Filho
p10: Filho --> Nome DataNasc DataMorte
p11: Nome --> str
p12: Apelido --> str
p13: DataCasa --> data
p14: DataNasc --> data
p15: DataMorte --> data
24 de Outubro de 2011
- 3. Gramáticas:
- Introdução à semântica e aos conceitos de Gramática Tradutora (GT) e Gramática de Atributos (GA); abordagem informal baseada em casos de estudo (problemas).
- Cont do Exemplo 4: Genea, uma linguagem para construção de árvores genealógicas---definição de restrições várias sobre as datas de nascimento/morte e de casamento; discussão da gravidade dos erros se as condições não forem respeitadas; identificação das tarefas a fazer para as verificar e associação dessas tarefas às produções da GIC; formalização do processo com atributos herdados e sintetizados.
31 de Outubro de 2011
- 3. Gramáticas:
- Introdução à Gramática de Atributos (GA) como forma rigorosa de especificar a semântica estática=condições-contextuais (ou restrições) e dinâmica=regras-tradução das linguagens; definição formal e exemplo abstrato; apresentação dos princípios de localidade e não-determinismo associados ao cálculo dos atributos. GA = < GIC, A, RC, CC, RT >
- Definição de: atributo, a & A, como caraterística de um símbolo; regra de cálculo, rc & RC, como forma rigorosa de calcular um valor para um atributo associado a uma ocorrência do símbolo na árvore (dando uma propriedade desse símbolo concreto); condição contextual, cc & CC, como restrição ao valor de um atributo, ou de alguns atributos, no contexto concreto de uma produção; regra de tradução, rt & RT, como ação a desencadear para produzir um resultado parcial do processamento desejado, recorrendo aos valores dos atributos no contexto de uma produção concreta.
- Sistematização da escolha de atributos a associar a cada símbolo e da definição das regras de cálculo para atributos sintetizados, em função do requisito, ou pedido, e da forma de cada produção.
- Cont do Exemplo 4: Genea, uma linguagem para construção de árvores genealógicas---cálculo do número de filhos de uma família (numFi), do número de famílias (numFa) e do número médio de filhos de cada família (numMFiFa).
Genea Grammar
p00: Genea --> Familias {
Genea.numFa = Familias.numFa;
Genea.numMFiFa = Familias.totFi / Familias.numFa;
}
p01: Familias --> Familia {
Familias.numFa = 1;
Familias.totFi = Familia.numFi;
}
p02: | Familias Familia {
Familias_0.numFa = Familias_1.numFa + 1;
Familias_0.totFi = Familias_1.totFi + Familia.numFi;
}
p03: Familia --> PROGENITORES '(' DataCasa ')' Progs FILHOS Filhos {
Famlia.numFi = Filhos.conta;
}
p08: Filhos --> & {
Filhos.conta = 0;
}
p09: | Filhos , Filho {
Filhos_0.conta = Filhos_1.conta + 1;
}
07 de Novembro de 2011
- 3. Gramáticas:
- Revisão do conceito de GA.
- Introdução ao VisualLISA:
- Criação de Gramáticas com o VisualLISA: foi exemplificado com a gramática Genea.
- Criação de Regras de Cálculo de Atributos com o VisualLISA: foi exemplificado com a gramática Genea + exercício de calcular o numero de Filhos de uma família
- Resolução de Exercicios com VisualLISA: Imprimir o nome completo de cada filho: nome do filho + apelido mãe + apelido pai --- o exercício permitiu explorar o uso de Atributos Sintetizados, Herdados e Intrínsecos.
14 de Novembro de 2011
- 3. Gramáticas:
- Continuação da utilização do VisualLISA para assimilação dos conceitos presentes em GAs:
- Criação de Gramáticas com o VisualLISA: foi exemplificado com uma Gramática para definir uma lista de elementos mistos (strings ou inteiros)
- Criação de Regras de Cálculo de Atributos com o VisualLISA para computar: o número de elementos da lista, o número de elementos numéricos e o somatório dos elementos numéricos --- o exercício permitiu explorar o uso de Atributos Sintetizados e Intrínsecos.
21 de Novembro de 2011
- 3. Gramáticas:
- Continuação da utilização do VisualLISA para assimilação dos conceitos presentes em GAs:
- Revisão de alguns conceitos básicos: produção e árvore da produção; colagem de árvores de produção--árvore de derivação (concreta e abstrata); Atribtos de Entrada (AIn()) numa produção e Atributos de Saída (AOut()) de uma produção e regras de cálculo dessa produção -- 1 e 1 só regra obrigatória para cada "a" de AOut().
- Continuação do exemplo (Ex. 5): Gramática para definir uma lista de elementos mistos (strings ou inteiros)
- Criação de Regras de Cálculo de Atributos com o VisualLISA para computar: o somatório dos elementos numéricos (total das sub-sequências e sub-total de cada sequência) apenas após a ocorrência da palavra "soma" --- o exercício permitiu explorar o conceito e uso de Atributos Sintetizados e Herdados.
List Grammar
p00: List --> '[' Components ']' {
Components.inFlag = false;
}
p01: Componentes --> Componente {
Componentes.outFlag = Componente.outFlag;
Componente.inFlag = Componente.inFlag;
}
p02: Componentes --> Componentes Componente {
Componentes_1.inFlag = Componentes_0.inFlag;
Componente.inFlag = Componentes.outFlag;
Componentes_0.outFlag = Componente.outFlag;
Componentes_0.soma = Componentes_1.soma + Componente.soma;
}
p03: Componente --> str {
Componente.outFlag =
(str.val.equals("soma")) ? true : Componente.inFlag;
Componente.soma = 0;
}
p04: Componente --> int {
Componente.outFlag = 0;
Componente.soma = Componente.inFlag ? parseInt(int.val) : 0;
}
28 de Novembro de 2011
- 3. Gramáticas:
- Continuação da utilização do VisualLISA para assimilação dos conceitos presentes em GAs:
- Continuação do exemplo (Ex. 5): Gramática para definir uma lista de elementos mistos (strings ou inteiros) --- apresentação e discussão minuciosa das resoluções feitas pelos grupos relativamente à questão b) do Exemplo 5 (variantes em torno do que significa adicionar após aparecer a palavra "soma" -- somatórios total e e parciais) --- uso intensivo de Atributos Sintetizados e Herdados.
05 de Dezembro de 2011
- 3. Gramáticas:
- Geração automática de Processadores de Linguagens a partir da GA -- Geradores de Compiladores (ou Compilers Compiler) tais como o AnTLR, PCCTS, LISA, CoCo/R, Silver, Cup, Eli, SGen, LRC, etc.
- Continuação da utilização do VisualLISA para assimilação dos conceitos presentes em GAs:
- Continuação do exemplo (Ex. 5): Gramática para definir uma lista de elementos mistos (strings ou inteiros) --- apresentação e discussão minuciosa das resoluções feitas pelos grupos relativamente à questão da Ficha 1 (adicionar após aparecer uma sequência de palavras de comprimento maior ou igual a 3) --- uso intensivo de Atributos Sintetizados e Herdados.
- Geração da GA desenhada num formato textual, LISA ou XAGRA -- explicação/justificação da abordagem, discussão e comparação das duas alternativas.
12 de Dezembro de 2011
- 3. Gramáticas:
- Geração automática de Processadores de Linguagens a partir de Gramáticas (GT ou GA):
- Generalização do conceito para "Geradores de Programas", GP --- o princípio e as fases/etapas.
- Revisão do tema Geradores de Compiladores, GC (ou Compilers Compiler, CC) --- o que torna possível (um algoritmo standard guiado por uma estrutura de dados, uma Tabela de Decisão, que se deriva sistematicamente da especificação formal, a gramática).
- Discussão da questão Q1 lançada para casa: o recurso a geradores de compiladores, ou de uma forma geral a geradores de programas, é uma importante forma de re-utilização --- tal re-utilização de código está subjacente ao princípio base da Geração de Programas e é transparente para o Programador pois é o GP que o aplica ao utilizar sempre o mesmo programa (altamente especializado e refinado) que implementa o algoritmo standard.
- Introdução ao Gerador de Compiladores AnTLR:
- As notações BNF e extended-BNF.
- Utilização do exemplo anterior(Ex. 5): Gramática para definir uma lista de elementos mistos (strings ou inteiros) --- edição da GIC e geração de um Parser (analisador léxico e sintático), testes e visualização da Árvore de Parsing.
02 de Janeiro de 2012
- 3. Gramáticas:
- Geração automática de Processadores de Linguagens a partir de Gramáticas (GT ou GA):
- Introdução ao Gerador de Compiladores AnTLR, agora para gerar um Tradutor dirigido pela Sintaxe:
09 de Janeiro de 2012
- 3. Gramáticas:
- Geração automática de Processadores de Linguagens a partir de Gramáticas (GT ou GA).
- O Gerador de Compiladores AnTLR, para gerar um Tradutor dirigido pela Sintaxe:
- Conclusão do exemplo anterior(Ex. 5): Gramática para definir uma lista de elementos mistos (strings ou inteiros) --- construção duma GT para contar o total de elementos de cada tipo e global e para somar os inteiros; cálculo dos somatórios parciais condicionados ao aparecimento da palavra "soma" na subsequência de palavras anterior á subsequência de números : gramática (GT) final que resolve este exemplo completo.
- Início de um novo exemplo (Ex. 4,
Genea ) para consolidar os conhecimentos básicos do uso do AnTLR com gerador de TDS: Gramática para apoio a um projecto de Genealogia que permite descrever Famílias (progenitores e seus descendentes) Os alunos devem completar em casa a transposição para AnTLR da GIC Genea criada anteriormente com o VisualLISA .
16 de Janeiro de 2012
- 3. Gramáticas:
- Geração automática de Processadores de Linguagens a partir de Gramáticas (GT ou GA).
- O Gerador de Compiladores AnTLR, para gerar um Tradutor dirigido pela Sintaxe:
- Continuação da exploração do exemplo Ex. 4,
Genea , para consolidar os conhecimentos básicos do uso do AnTLR com gerador de TDS: Gramática para apoio a um projecto de Genealogia que permite descrever Famílias (progenitores e seus descendentes) --- construção duma GT para contar o total de filhos de cada família Os alunos devem completar em casa o trabalho iniciado e incluir AS para validar uma data.
27 de Fevereiro de 2012
- 3. Gramáticas:
- Resolução exaustiva do 1º teste de 2010/11 para revisão de toda a matéria teórica relacionada com gramáticas, sobretudo os conceitos e estratégia de escrita de GAs (estruturas de dados e estratégias de especificação versus técnicas de implementação).
05 de Março de 2012
- 3. Gramáticas:
- Resolução do 1ºTeste
- Apresentação da resolução da Ficha 3 pelos grupos presentes (Linguagem para programação de um Robot de aspiração) e discussão das aproximações (demo).
- Resumo das várias abrodagens já estudadas ao uso do AnTLR e a que falta ver; primeira apresentação da problemática da qualidade de linguagens e gramáticas e métricas.
12 de Março de 2012
- 3. Gramáticas:
- Geração automática de Processadores de Linguagens a partir de Gramáticas de Atributos.
- O Gerador de Compiladores AnTLR:
- sistematização do seu uso com Atributos Herdados e Sintetizados para gerar um Tradutor dirigido pela Sintaxe (TDS-A).
- Apresentação de um exemplo totalmente resolvido ("opp.g" -- ver link abaixo) para introduzir Atributos Herdados e Sintetizados em AnTLR e para sistematizar o seu uso e a forma de escrever estas GA que conduzem a TDS-A.
- Aplicação das regras de sistematização acima a um novo exemplo retirado do 1ºTeste: Ex. 6,
lista de compras Os alunos devem completar em casa o trabalho iniciado na aula.
19 de Março de 2012
- 3. Gramáticas:
- Geração automática de Processadores de Linguagens a partir de Gramáticas de Atributos.
- O Gerador de Compiladores AnTLR:
- sistematização do seu uso com Atributos Herdados e Sintetizados para gerar um Tradutor dirigido pela Sintaxe (TDS-A).
- Aplicação das regras de sistematização acima a um novo exemplo retirado do 1ºTeste: Ex. 6,
lista de compras Os alunos devem completar em casa o trabalho iniciado na aula.
26 de Março de 2012
- 3. Gramáticas:
- Geração automática de Processadores de Linguagens a partir de Gramáticas de Atributos.
- O Gerador de Compiladores AnTLR:
- sistematização do seu uso com Atributos Herdados e Sintetizados para gerar um Tradutor dirigido pela Sintaxe (TDS-A).
- Continuação da aplicação das regras de sistematização acima a um novo exemplo retirado do 1ºTeste: Ex. 6,
lista de compras Os alunos devem completar em casa o trabalho iniciado na aula.
- Aplicação das regras de sistematização acima a um novo exemplo retirado do 1º exercício do 1ºTeste: Ex. 7,
Linguagem para descrição de Conferencias .
16 de Abril de 2012
- 3. Gramáticas:
- Introdução à geração de Árvores de Sintaxe Abstrata (Abstract Syntax Trees - AST), como meio de obter um modelo intermédio para um texto fonte.
- Gramáticas Concretas vs Gramáticas Abstratas.
- Construção de árvores em AnTLR: o operador "->" de re-escrita e o operador "^" de criação de nodos e sub-árvores.
- Aplicação da construção de árvores para uma linguagem de programação muito simples.
23 de Abril de 2012
- 3. Gramáticas:
- Continuação do assunto geração de Árvores de Sintaxe Abstrata (Abstract Syntax Trees - AST), como meio de obter um modelo intermédio para um texto fonte.
- Gramáticas Concretas vs Gramáticas Abstratas.
- Construção de árvores em AnTLR: o operador "->" de re-escrita e o operador "^" de criação de nodos e sub-árvores --- discussão do exemplo da última aula (a linguagem de programação C--) completado em casa pelos alunos.
- 4. Qualidade de Linguagens de Programaçao
- Recapitulação de alguns conceitos e caraterísticas básicas das LPs; as necessidades da Programação e os quesitos impostos às LPs.
- Classificação das LPs quanto a:
- cronologia e nível de abstração;
- processamento;
- paradigma;
- organização do código;
- modo de execução;
- sistema de tipos;
30 de Abril de 2012
- 3. Gramáticas:
- Continuação do assunto geração de Árvores de Sintaxe Abstrata (Abstract Syntax Trees - AST), como meio de obter um modelo intermédio para um texto fonte.
- Gramáticas Concretas vs Gramáticas Abstratas.
- Construção de árvores em AnTLR: o operador "->" de re-escrita e o operador "^" de criação de nodos e sub-árvores --- discussão do exemplo da última aula (a linguagem de programação C--) e sua extensão com funções (declaração e invocação); proposta de um novo exercício, linguagem para descrever Mapas de Conceitos e sua instanciação.
07 de Maio de 2012
- 3. Gramáticas:
- Continuação do assunto geração de Árvores de Sintaxe Abstrata (Abstract Syntax Trees - AST), como meio de obter um modelo intermédio para um texto fonte.
- Gramáticas Concretas vs Gramáticas Abstratas.
- Manipulação de árvores em AnTLR (Tree Grammars): discussão do exemplo da última aula (a linguagem de programação C--) --- visualização, construção da lista de todos os identificadores e contagem dos subprogramas.
14 de Maio de 2012
- 3. Gramáticas:
- Continuação do assunto geração de Árvores de Sintaxe Abstrata (Abstract Syntax Trees - AST), como meio de obter um modelo intermédio para um texto fonte.
- Gramáticas Concretas vs Gramáticas Abstratas.
- Manipulação de árvores em AnTLR (Tree Grammars): discussão do exercício propostos aos Grupos, linguagem para descrever Mapas de Conceitos e sua instanciação - a árvore construída e sua reconfiguração.
21 de Maio de 2012
- 3. Gramáticas:
- Discussão sobre estrutura de dados para armazenamento de uma Tabela de Símbolos (TS) no processo de compilação da linguagem C--.
- Resolução em AnTLR, do exercício de população de uma TS para a linguagem C--, tirando partido do conceito de AST e de gramática de atributos.
- Identificação dos pontos chave para população da TS: DECLARACAO e FUNCAO.
28 de Maio de 2012
- 3. Gramáticas:
- Discussão sobre análise semântica dirigida por tabela de símbolos.
- Resolução em AnTLR, do exercício de análise semântica de para a linguagem C--, tirando partido do conceito de AST, Tabela de Símbolos e de gramática de atributos.
- Identificação de condições de contexto (produção a produção) para verificação de erros semânticos.
4 de Junho de 2012
- 3. Gramáticas:
- Continuação da discussão sobre análise semântica dirigida por tabela de símbolos.
- Inferência e validação de tipos em árvores de expressões.
11 de Junho de 2012
- 3. Gramáticas:
- Continuação da discussão sobre Gramáticas Concretas, Abstractas e respectivas AST.
- Sistematização do exercício de compilação, análise e transformação de software com a linguagem CMC.
18 de Junho de 2012
- 3. Gramáticas:
- Continuação da discussão sobre Gramáticas Concretas, Abstractas e respectivas AST.
- Transformação do texto de entrada CMC em páginas HTML com interação.
25 de Junho de 2012
- 4. Qualidade de Linguagens e de Gramáticas (slides):
- Os 4 Fatores que definem a Qualidade de uma Linguagem e as 8 Caraterísticas que os influenciam;
- Os 3 Fatores que definem a Qualidade de uma Gramática enquanto especificação de uma linguagem;
- Os 2 Fatores que definem a Qualidade de uma Gramática enquanto especificação de um programa;
- Métricas para GIC e Métricas para GA.
- Conclusão da UC
|
|
 Copyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors. Ideas, requests, problems regarding TWiki? Send feedback
|
|