Apresentação JavaCG MetaCG

15

Click here to load reader

Transcript of Apresentação JavaCG MetaCG

Page 1: Apresentação JavaCG MetaCG

MetaCG -A Metamodel Based Approach for Writing Source Code Generators

Franklin Ramalho Anderson Ledo Natã Venâncio

Page 2: Apresentação JavaCG MetaCG

Agenda

•  Contexto •  Objetivo •  Técnica •  Resultados •  Exemplo •  Próximos passos •  Dúvidas

WorkShop 20/07/2010

2 Franklin Ramalho, Anderson Ledo e Natã Venâncio GMF/DSC/CEEI/UFCG

Page 3: Apresentação JavaCG MetaCG

Contexto

•  Poucos trabalhos relacionados a geração de sintaxe concreta

•  Os trabalhos que existem não tratam transformações textuais adequadamente

•  Como promover fácil entendimento e manutenção em transformações textuais?

WorkShop 20/07/2010

3 Franklin Ramalho, Anderson Ledo e Natã Venâncio GMF/DSC/CEEI/UFCG

Page 4: Apresentação JavaCG MetaCG

Objetivo

•  MetaCG guia a organização, especificação e o fluxo de controle entre transformações textuais

•  O que isso impacta no gerador de código? •  Complexidade •  Esforço empregado por designers na fase de

construção •  Facilidade de entender e manter

WorkShop 20/07/2010

4 Franklin Ramalho, Anderson Ledo e Natã Venâncio GMF/DSC/CEEI/UFCG

Page 5: Apresentação JavaCG MetaCG

Técnica

•  MetaCG é composta por uma série de especificações: •  Alto Nível – Estrutura dos pacotes •  Baixo Nível – Guidelines para a codificação

das transformações •  Implementada em MOFScript

WorkShop 20/07/2010

5 Franklin Ramalho, Anderson Ledo e Natã Venâncio GMF/DSC/CEEI/UFCG

Page 6: Apresentação JavaCG MetaCG

Técnica

•  Estrutura dos pacotes

WorkShop 20/07/2010

6 Franklin Ramalho, Anderson Ledo e Natã Venâncio GMF/DSC/CEEI/UFCG

Page 7: Apresentação JavaCG MetaCG

Técnica

•  O que cada pacote representa? •  Main – utiliza as regras do pacote Core para

realizar a transformação e persiste o código final

WorkShop 20/07/2010

7 Franklin Ramalho, Anderson Ledo e Natã Venâncio GMF/DSC/CEEI/UFCG

Page 8: Apresentação JavaCG MetaCG

Técnica

•  Core – propõe regras de transformações para cada meta-elemento •  Extractor – regras de extração; utiliza os

pacotes Engine e Collection como auxiliares •  Engine – fluxo de transformações e

inferência de tipos •  Collection – regras para os elementos com

multiplicidade maior que um

WorkShop 20/07/2010

8 Franklin Ramalho, Anderson Ledo e Natã Venâncio GMF/DSC/CEEI/UFCG

Page 9: Apresentação JavaCG MetaCG

Técnica

•  Templates – definição de sintaxe para a linguagem alvo •  Definitions – definição de sintaxe concreta

para cada meta-classe •  SymbolTables – tabela de símbolos para

elementos terminais

WorkShop 20/07/2010

9 Franklin Ramalho, Anderson Ledo e Natã Venâncio GMF/DSC/CEEI/UFCG

Page 10: Apresentação JavaCG MetaCG

Técnica

•  Guidelines •  Separação da definição de sintaxe da

manipulação dos elementos do meta-modelo •  Manipulação de um elemento por regra •  Definição de regras separadas para coleções •  Reduz o uso de Print Statements

WorkShop 20/07/2010

10 Franklin Ramalho, Anderson Ledo e Natã Venâncio GMF/DSC/CEEI/UFCG

Page 11: Apresentação JavaCG MetaCG

Resultados

•  Geração parcial das transformações do pacote Core e de seus sub-pacotes: Engine, Extractor e Collection

•  Geração de stubs de regras de templates

WorkShop 20/07/2010

11 Franklin Ramalho, Anderson Ledo e Natã Venâncio GMF/DSC/CEEI/UFCG

Page 12: Apresentação JavaCG MetaCG

Exemplos

•  JavaCG •  Baseado na Técnica MetaCG •  Geração de sintaxe concreta a partir de

modelos baseados no meta-modelo Java Abstract Syntax para linguagem de sintaxe concreta de Java

•  Demonstração

WorkShop 20/07/2010

12 Franklin Ramalho, Anderson Ledo e Natã Venâncio GMF/DSC/CEEI/UFCG

Page 13: Apresentação JavaCG MetaCG

Próximos passos

•  Desenvolver uma cadeia de transformações que trate mais detalhadamente os passos necessários pra realizar nossa técnica

•  Evoluir a técnica •  Implementar a técnica MetaCG também em

MOF2Text •  Desenvolver um plugin que implemente a

técnica MetaCG para a IDE Eclipse

WorkShop 20/07/2010

13 Franklin Ramalho, Anderson Ledo e Natã Venâncio GMF/DSC/CEEI/UFCG

Page 14: Apresentação JavaCG MetaCG

Dúvidas

WorkShop 20/07/2010

14 Franklin Ramalho, Anderson Ledo e Natã Venâncio GMF/DSC/CEEI/UFCG

Page 15: Apresentação JavaCG MetaCG

Obrigado a todos!

Franklin Ramalho Anderson Ledo Natã Venâncio

{franklin, ledo, natanvm}@dsc.ufcg.edu.br

WorkShop 20/07/2010

15 Franklin Ramalho, Anderson Ledo e Natã Venâncio GMF/DSC/CEEI/UFCG