Post on 24-May-2015
MetaCG -A Metamodel Based Approach for Writing Source Code Generators
Franklin Ramalho Anderson Ledo Natã Venâncio
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
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
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
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
Técnica
• Estrutura dos pacotes
WorkShop 20/07/2010
6 Franklin Ramalho, Anderson Ledo e Natã Venâncio GMF/DSC/CEEI/UFCG
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
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
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
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
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
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
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
Dúvidas
WorkShop 20/07/2010
14 Franklin Ramalho, Anderson Ledo e Natã Venâncio GMF/DSC/CEEI/UFCG
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