A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

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

Apresentações semelhantes


Apresentação em tema: "Sistema de Transformação para a linguagem OO1 Adeline Sousa Gustavo Santos."— Transcrição da apresentação:

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

2 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

3 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

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

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

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

7 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

8 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 ( # # )

9 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

10 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

11 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

12 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

13 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

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


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

Apresentações semelhantes


Anúncios Google