Carregar apresentação
A apresentação está carregando. Por favor, espere
PublicouAmanda Sancho Alterado mais de 9 anos atrás
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...
Apresentações semelhantes
© 2024 SlidePlayer.com.br Inc.
All rights reserved.