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     Franklin Ramalho, Anderson Ledo e Natã Venâncio   2
20/07/2010                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     Franklin Ramalho, Anderson Ledo e Natã Venâncio   3
20/07/2010                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     Franklin Ramalho, Anderson Ledo e Natã Venâncio   4
20/07/2010                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     Franklin Ramalho, Anderson Ledo e Natã Venâncio   5
20/07/2010                GMF/DSC/CEEI/UFCG
Técnica
•  Estrutura dos pacotes




WorkShop     Franklin Ramalho, Anderson Ledo e Natã Venâncio   6
20/07/2010                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     Franklin Ramalho, Anderson Ledo e Natã Venâncio   7
20/07/2010                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        Franklin Ramalho, Anderson Ledo e Natã Venâncio   8
20/07/2010                   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        Franklin Ramalho, Anderson Ledo e Natã Venâncio   9
20/07/2010                   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     Franklin Ramalho, Anderson Ledo e Natã Venâncio   10
20/07/2010                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     Franklin Ramalho, Anderson Ledo e Natã Venâncio   11
20/07/2010                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     Franklin Ramalho, Anderson Ledo e Natã Venâncio   12
20/07/2010                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     Franklin Ramalho, Anderson Ledo e Natã Venâncio   13
20/07/2010                GMF/DSC/CEEI/UFCG
Dúvidas




WorkShop     Franklin Ramalho, Anderson Ledo e Natã Venâncio   14
20/07/2010                GMF/DSC/CEEI/UFCG
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

Apresentação JavaCG MetaCG

  • 1.
    MetaCG -A MetamodelBased 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 trabalhosrelacionados 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 guiaa 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 dospacotes WorkShop Franklin Ramalho, Anderson Ledo e Natã Venâncio 6 20/07/2010 GMF/DSC/CEEI/UFCG
  • 7.
    Técnica •  O quecada 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 parcialdas 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 •  Desenvolveruma 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