xtext un framework per la creazione di dsl

11
 Xtext: Xtext: un framework per un framework per la creazione di DSL la creazione di DSL Federico Tomassetti Federico Tomassetti Meeting Marzo 2010 Meeting Marzo 2010

Upload: federico-tomassetti

Post on 21-May-2015

704 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: Xtext   Un Framework Per La Creazione Di Dsl

   

Xtext: Xtext: un framework per un framework per la creazione di DSLla creazione di DSL

Federico TomassettiFederico Tomassetti

Meeting Marzo 2010Meeting Marzo 2010

Page 2: Xtext   Un Framework Per La Creazione Di Dsl

   

Federico Tomassetti – Meeting Marzo 2010Federico Tomassetti – Meeting Marzo 2010

1. DSL......................

2. Xtext: cosa..........

3. Xtext: come.........

MenuMenu

Page 3: Xtext   Un Framework Per La Creazione Di Dsl

   

Federico Tomassetti – Meeting Marzo 2010Federico Tomassetti – Meeting Marzo 2010

HTML CSS

V.I.D.*V.I.D.*

* V.I.D. = Very Important DSL* V.I.D. = Very Important DSL

Page 4: Xtext   Un Framework Per La Creazione Di Dsl

   

Federico Tomassetti – Meeting Marzo 2010Federico Tomassetti – Meeting Marzo 2010

DominioDominio

(Cosa)(Cosa)

DSLDSL

TecnologiaTecnologia

(Come)(Come)

Page 5: Xtext   Un Framework Per La Creazione Di Dsl

   

Federico Tomassetti – Meeting Marzo 2010Federico Tomassetti – Meeting Marzo 2010

DDOOMMIINNIIOO

TTEECCNNOOLLOOGGIIAA

No No DSLDSL

(COSA)(COSA) (COME)(COME)

Page 6: Xtext   Un Framework Per La Creazione Di Dsl

   

Federico Tomassetti – Meeting Marzo 2010Federico Tomassetti – Meeting Marzo 2010

TodoFile :(Category)* (Todo)*;

Category:'category' ID;

Todo:'todo' STRING ('in' ID)? (Priority)? ('due' MyDate)?;

Priority:'low' |'medium'|'high';

MyDate:INT '/' INT '/' INT; 

ParserParser

EditorEditor

Page 7: Xtext   Un Framework Per La Creazione Di Dsl

   

Federico Tomassetti – Meeting Marzo 2010Federico Tomassetti – Meeting Marzo 2010

Validazione

Autocompletamento

Outline

diamo un'occhiata...

Page 8: Xtext   Un Framework Per La Creazione Di Dsl

   

Federico Tomassetti – Meeting Marzo 2010Federico Tomassetti – Meeting Marzo 2010

@Checkpublic void checkTextLength(Todo todo) {

if (todo.getText().length() == 0) {error("Todo text should be not void",

TodoDslPackage.TODO__TEXT);} else if (todo.getText().length() < 5) {

warning("Todo text should be at least 5 characters long",

TodoDslPackage.TODO__TEXT);}

}

Page 9: Xtext   Un Framework Per La Creazione Di Dsl

   

Federico Tomassetti – Meeting Marzo 2010Federico Tomassetti – Meeting Marzo 2010

public void completeTodo_CategoryId(Todo model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor)

{TodoFile todoFile = (TodoFile)model.eContainer();for (Category category : todoFile.getCategories()){

String proposal = category.getId();ICompletionProposal completionProposal =

createCompletionProposal(proposal, context);

acceptor.accept(completionProposal);}

}

Page 10: Xtext   Un Framework Per La Creazione Di Dsl

   

Federico Tomassetti – Meeting Marzo 2010Federico Tomassetti – Meeting Marzo 2010

private ContentOutlineNode createUncategorizedNode(TodoFile todoFile,ContentOutlineNode parentNode)

{ContentOutlineNode node = new ContentOutlineNode();node.setLabel("<Uncategorized>");for (Todo todo : todoFile.getTodos()) {

if (todo.getCategoryId() == null) {ContentOutlineNode childNode =

super.newOutlineNode(todo, node);}

}return node;

}

Page 11: Xtext   Un Framework Per La Creazione Di Dsl

   

Federico Tomassetti – Meeting Marzo 2010Federico Tomassetti – Meeting Marzo 2010

Codegeneration 2008