Sistema de Transformação para a linguagem OO1 Adeline Sousa Gustavo Santos.

Slides:



Advertisements
Apresentações semelhantes
I- Introdução A Evolução dos Modelos de Dados e dos Sistemas de Gerência de Banco de Dados.
Advertisements

ABSTRAÇÃO processo de representar um grupo de entidades através de seus atributos comuns feita a abstração, cada entidade particular (instância) do grupo.
Curso: Banco de Dados I Análise de Sistemas PUC Campinas
Maurício Edgar Stivanello
Projeto de Sistemas de Software Trabalho de Padrões de Projeto
Carlos R. M. Junior Eduardo Motta
Generalização, Especialização e Conceitos
Prof. Heloise Manica Paris Teixeira
Orientação a Objetos Introdução. Objetos: o que são? Olhando o mundo real pode-se ver vários objetos: mesa, cadeiras, alunos, professores etc. Esses objetos.
Refactoring de Programas Java
JavaCC e JJTree Geração de compiladores implementados em Java
Programação Lógica: PROLOG
Linguagem de Programação II
Orientação a Objetos Classes
Introdução à Programação Um enfoque orientado a construção de modelos em programas baseados em objetos Gustavo Motta Departamento de Informática - UFPB.
Construção de Compiladores
CRIANDO OBJETOS EM JAVA
JAVA: Conceitos Iniciais
Aula prática - análise contextual
Padrão de Projeto Visitor
JAVA Linguagem Ambiente de Desenvolvimento
Introdução ao Framework Django
Métodos de Construção de Software: Orientação a Objetos
Diêgo Santiago, Leila Soriano e Patrícia Lustosa 27/03/2008 JaTS Java Transformation System.
Paradigmas de Linguagens de Programação BNF e Interpretador da Linguagem Orientada a Objetos Augusto Sampaio Jackson, Jean, Patrícia, Saulo Centro de Informática.
Análise Léxica Primeira fase de um compilador
Augusto Sampaio e Paulo Borba Gustavo Pinto Marcelo Queiroz
Linguagens de Programação II Aula 04 – Entendendo Classes
Linguagens de Programação II
Java Bytecode Software Básico Mitsuo Takaki.
Capítulo II Gramáticas e Linguagens
Analise sintática aula-07-analise-sintática.pdf.
Ruby (2/2) André Braga Patrícia Lustosa. Intro Peguem a aula de ontem em /~plvr para ter como referência para os exercícios de hoje.
Aula prática 14 Orientação a Objetos – C++ Parte 2
Laboratório de Programação I Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.
Paradigmas da Programação – Semestre 2 – Aula 13 Professor: Eduardo Mantovani Prof. Fábio de Paula Santos
Interfaces e classes abstratas. Conceitos de Orientação a Objeto.
Tradução Dirigida por Sintaxe
1 Marcio de Carvalho Victorino JAVA. 2 Declaração de Atributos [ ] [transient] [volatile] [static] [final] ; controle de acesso –public, package (default),
Interfaces POO Avançado.
Utilizando UML e Padrões Prof. Fábio Botelho, MSc Redes e Sistemas Distribuídos Recife, Março de 2010.
Herança e Arquitetura em camadas
Linguagem orientada a Aspectos 2 Luiz Carlos d’Oleron Tiago Vinícius.
AST no ANTLR Teoria e Implementação de Linguagens Computacionais - IF688 Allan J. Souza
Fundamentos da Linguagem C#
Diêgo Santiago, Leila Soriano e Patrícia Lustosa 27/03/2008 JaTS Java Transformation System Parte 1.
Paradigmas de Programação –Aula 7 Lab 2 Professores: Eduardo Mantovani Fábio Paula Santos.
Construtores e Destrutores
Trabalho de Persistência para o EPOS. Problema Proposto Implementar no Epos objetos persistentes, ou seja, fazer com que o sistema, ao ser reiniciado,
Semântica de Linguagens de Programação
Bruno Inojosa MCP .NET Framework
Linguagem de Transformação para a linguagem OO1 Adeline Sousa Gustavo Santos.
© Nabor C. Mendonça Processo / Metodologia de Desenvolvimento de Software.
Mestrando: Pedro Barbosa Cordeiro Orientador: Bernardo Lula Júnior
Banco de Dados Universidade do Estado de Santa Catarina
Sintaxe de uma Linguagem
SisCol Modelo de Banco de Dados
Paradigmas de Linguagens de Programação BNF e Interpretador da Linguagem Orientada a Objetos Augusto Sampaio e Paulo Borba Gustavo Pinto Marcelo Queiroz.
Projeto de Banco de Dados
Módulo II Capítulo 1: Orientação a Objetos
Padrão Visitor Paulo Mauricio Gonçalves Jr Rodrigo Teixeira Ramos Paradigmas de Linguagens de Programação Prof. Augusto Sampaio Julho de 2003.
Compilador Software que traduz o texto (linguagem fonte) que representa um programa para código máquina(linguagem alvo) capaz de ser executado pelo.
Diêgo Santiago, Leila Soriano e Patrícia Lustosa 27/03/2008 JaTS Java Transformation System Parte 1.
Paradigmas de Linguagens de Programação BNF e Interpretador da Linguagem Orientada a Objetos Augusto Sampaio e Paulo Borba Gustavo Pinto Marcelo Queiroz.
Tipo Abstrato de Dados (TAD) Estrutura de Dados Professor: Rodrigo Alves Sarmento Professor: André Cypriano.
Análise Contextual Mauro Araújo Teoria e Implementação de Linguagens Computacionais - IF688 Centro de Informática – CIn Universidade Federal de Pernambuco.
Fernando Castor e Paulo Borba Decisões/Escolhas de Projeto.
Laboratório de Computação Aula 06 e 07 – Implementação de classes Prof. Fábio Dias
Modelagem de Banco de Dados: Conceitos
Transcrição da apresentação:

Sistema de Transformação para a linguagem OO1 Adeline Sousa Gustavo Santos

Relembrando o Objetivo...  Definição de um sistema de transformação para a linguagem OO1  Instanciação do “modelo JaTS”  Possibilidade de criação de duas linguagens Para escrita de templates Para especificação de transformações

Relembrando a Motivação...  Transformações de programas dão suporte a: Refactoring Desenvolvimento formal de software Geração automática de código  Obtenção de uma base conceitual para um modelo de sistema de transformação independente de linguagem  Tese de Adeline

O modelo de transformação OOTS Arquivo Fonte OO1 Template Fonte OOTS Template Destino OOTS Arquivo OO1 gerado

Metodologia Adotada  Unificação dos nós OO1  Construção do parser OOTS  Implementação dos nós OOTS  Implementação dos Visitors Clonagem, substituição e impressão  Reestruturação da árvore sintática  etc...

Unificação dos Nós INode SimpleNode Nós OO1

Unificação dos Nós  Motivação Interface única para manipulação Atributos comuns Operações comuns  Transformação de parte do código com o sistema JaTS

O Parser OOTS  Suporte a todas as construções OO1 + construções OOTS Identificadores OOTS ( #Id ) Variáveis FieldDeclarationSet e ProcDeclarationSet Declarações iterativas ( forall ) Declarações condicionais ( #If ) Declarações executáveis ( # # )

Implementação dos Nós OOTS  Para cada nova construção no parser, um novo nó na árvore  Nós adicionais para suporte a conjuntos do tipo FDS e PDS

Implementação dos Visitors  Parte das operações sobre a árvore são realizadas através do padrão Visitor Clonagem Substituição Impressão  Geração automática de parte do código

Reestruturação da Árvore  Estrutura da árvore inconveniente para realização de matching  Optou-se por substituir estrutura hierárquica de declarações de atributos e métodos

Exemplo de Transformação Suportada { classe Conta { int saldo = 0, string numero = “”; proc printSaldo() { write("O saldo atual e':"); write(this.saldo) } ; skip } Arquivo Fonte { classe #NOME_CLASSE { FieldDeclarationSet : #FDS ; ProcDeclarationSet: #PDS } ; skip } Template de Casamento

Exemplo de Transformação Suportada { classe #NOME_CLASSE { int juros = 10, FieldDeclarationSet : #FDS ; proc renderJuros() { this.saldo := this.saldo + this.juros }, ProcDeclarationSet: #PDS } ; skip } Template de Geração { classe Conta { int juros = 10, int saldo = 0, string numero = “”; proc renderJuros() { this.saldo := this.saldo + this.juros }, proc printSaldo() { write("O saldo atual e':"); write(this.saldo) } ; skip } Código Gerado

Demonstração  O tão aguardado momento...