dsl - como construir uma linguagem em 5 minutos

32
DSL – Como construir uma linguagem em 5 minutos Fábio Neves e Ricardo Mateus 12-03-2022 1

Upload: opensoft-sa

Post on 06-Jun-2015

2.192 views

Category:

Technology


50 download

DESCRIPTION

Apresentação sobre o que é uma DSL, quais as suas aplicações, e como é possívelo desenvolver uma via XText

TRANSCRIPT

13-04-20231

DSL – Como construir uma linguagem em 5 minutos

Fábio Neves e Ricardo Mateus

13-04-20232

Outline

• O que é uma DSL?• Utilidade de uma DSL• Benefícios de uma DSL• Frameworks para construção de DSLs• Xtext• Interpretação• Geração de código– Xpand

• Exemplos do mundo real

13-04-20233

O que é uma DSL?

• “A Domain Specific Language (DSL) is a computer programming language of limited expressiveness focused on a particular domain. (…) Each DSL can only handle one specific aspect of a system.” (Martin Fowler)

• Exemplos conhecidos: Mathemathica, Graphviz (dot), SQL

13-04-20234

Utilidade de uma DSL?

• Porquê uma DSL e não uma GPL?

13-04-20235

Utilidade de uma DSL?

• Porquê uma DSL e não uma GPL?

13-04-20236

Utilidade de uma DSL?

• Porquê uma DSL e não uma GPL?

13-04-20237

Benefícios de uma DSL?

• Abstracções de programação próxima dos conceitos do domínio.

• Tempo de aprendizagem reduzido

• Optimiza a resolução do problema

• Possibilita que especialistas do domínio especifiquem a solução do problema

13-04-20238

Frameworks para construção de DSLs

• Irony - http://irony.codeplex.com/• MPS - http://www.jetbrains.com/mps/index.html• Spoofax - http://strategoxt.org/Spoofax• XText /XPand- http://www.eclipse.org/Xtext/

13-04-20239

Xtext

Framework integrada com eclipsePermite:– Definir linguagem• Referências cruzadas• Validações semânticas• Sintaxe Concreta

– Gerar um editor para eclipse• Auto-complete• Outline• Validação sintáctica e semântica

13-04-202310

Xtext

• Definir linguagem– Gramática

13-04-202311

Xtext

• Definir linguagem– Gramática

13-04-202312

Xtext

• Definir linguagem– Gramática

13-04-202313

Xtext

• Definir linguagem– Gramática

• Gerar editor eclipse– Gerado

automaticamente

13-04-202314

Xtext

• Definir linguagem– Gramática

• Gerar editor eclipse– Gerado

automaticamente

13-04-202315

Xtext

• Definir linguagem– Gramática

• Gerar editor eclipse– Gerado

automaticamente

13-04-202316

Ok, linguagem especificada..e depois?

13-04-202317

Comportamento

• Interpretação– Parser da linguagem gerado por Xtext (Java)– Árvore de execução obtida através do parser

• Geração de código– XPand

13-04-202318

Interpretador• Parser gerado

automaticamente (Xtext)– AST– Modelo

13-04-202319

Interpretador• Parser gerado

automaticamente (Xtext)– AST– Modelo

• Dividir o grande problema em pequenos problemas.– Cada nó corresponde a uma

das regras declaradas– Avaliamos apenas o

necessário a cada nó.

13-04-202320

Interpretador• Parser gerado

automaticamente (Xtext)– AST– Modelo

• Dividir o grande problema em pequenos problemas.– Cada nó corresponde a uma

das regras declaradas– Avaliamos apenas o

necessário a cada nó.

• Adaptação do algoritmo de busca em profundidade.

13-04-202321

Interpretador• Parser gerado

automaticamente– AST– Modelo

• Dividir o grande problema em pequenos problemas.– Cada nó corresponde a uma

das regras declaradas– Avaliamos apenas o necessário

a cada nó.

• Adaptação do algoritmo de busca em profundidade.

• Execução Lenta

13-04-202322

Compilador/Gerador de código

• Processo análogo ao Interpretador

13-04-202323

Compilador/Gerador de código

• Processo análogo ao Interpretador

• Recurso a ferramentas que percorram o modelo : Xpand

13-04-202324

Compilador/Gerador de código

• Processo análogo ao Interpretador

• Recurso a ferramentas que percorram o modelo : Xpand

• Execução rápida e optimizada

13-04-202325

Compilador/Gerador de código

• Processo análogo ao Interpretador

• Recurso a ferramentas que percorram o modelo : Xpand

• Execução rápida e optimizada

• Integração com outras tecnologias.

13-04-202326

XPand

• Ferramenta de templating.

13-04-202327

XPand

• Ferramenta de templating.

• Crawling do modelo

13-04-202328

XPand

• Ferramenta de templating.

• Crawling do modelo

• Sintaxe própria

13-04-202329

XPand

• Ferramenta de templating.

• Crawling do modelo

• Sintaxe própria• Integração com a

framework Xtext

13-04-202330

Exemplos Mundo Real - Lilypond

13-04-202331

Exemplos Mundo Real - Applause

13-04-202332

QUESTÕES?Obrigado

Para Discussão e Documentação, Grupo Facebook: “DSL: Building with Xtext”