O documento apresenta a abordagem MetaCG para escrita de geradores de código-fonte. A técnica MetaCG guia a organização e especificação de transformações textuais através de um metamodelo. Isso impacta na redução da complexidade e esforço no desenvolvimento de geradores de código. O documento descreve a estrutura dos pacotes da técnica MetaCG e apresenta um exemplo de sua implementação no JavaCG.
1. MetaCG -A Metamodel Based
Approach for Writing
Source Code Generators
Franklin Ramalho
Anderson Ledo
Natã Venâncio
2. Agenda
• Contexto
• Objetivo
• Técnica
• Resultados
• Exemplo
• Próximos passos
• Dúvidas
WorkShop Franklin Ramalho, Anderson Ledo e Natã Venâncio 2
20/07/2010 GMF/DSC/CEEI/UFCG
3. 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 Franklin Ramalho, Anderson Ledo e Natã Venâncio 3
20/07/2010 GMF/DSC/CEEI/UFCG
4. 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 Franklin Ramalho, Anderson Ledo e Natã Venâncio 4
20/07/2010 GMF/DSC/CEEI/UFCG
5. 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 Franklin Ramalho, Anderson Ledo e Natã Venâncio 5
20/07/2010 GMF/DSC/CEEI/UFCG
6. Técnica
• Estrutura dos pacotes
WorkShop Franklin Ramalho, Anderson Ledo e Natã Venâncio 6
20/07/2010 GMF/DSC/CEEI/UFCG
7. 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 Franklin Ramalho, Anderson Ledo e Natã Venâncio 7
20/07/2010 GMF/DSC/CEEI/UFCG
8. 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 Franklin Ramalho, Anderson Ledo e Natã Venâncio 8
20/07/2010 GMF/DSC/CEEI/UFCG
9. 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 Franklin Ramalho, Anderson Ledo e Natã Venâncio 9
20/07/2010 GMF/DSC/CEEI/UFCG
10. 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 Franklin Ramalho, Anderson Ledo e Natã Venâncio 10
20/07/2010 GMF/DSC/CEEI/UFCG
11. 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 Franklin Ramalho, Anderson Ledo e Natã Venâncio 11
20/07/2010 GMF/DSC/CEEI/UFCG
12. 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 Franklin Ramalho, Anderson Ledo e Natã Venâncio 12
20/07/2010 GMF/DSC/CEEI/UFCG
13. 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 Franklin Ramalho, Anderson Ledo e Natã Venâncio 13
20/07/2010 GMF/DSC/CEEI/UFCG
14. Dúvidas
WorkShop Franklin Ramalho, Anderson Ledo e Natã Venâncio 14
20/07/2010 GMF/DSC/CEEI/UFCG
15. Obrigado a todos!
Franklin Ramalho
Anderson Ledo
Natã Venâncio
{franklin, ledo, natanvm}@dsc.ufcg.edu.br
WorkShop Franklin Ramalho, Anderson Ledo e Natã Venâncio 15
20/07/2010 GMF/DSC/CEEI/UFCG