xtext - und was man damit anstellen kann

18
...und was man damit anstellen kann. Heiko Behrens Eclipse DemoCamp 2009 Hamburg 25.05.2009 E-Mail [email protected] Blog www.1160pm.net

Upload: heiko-behrens

Post on 22-Jan-2015

3.390 views

Category:

Technology


1 download

DESCRIPTION

Grober Überblick über Xtext für Teilnehmer auf dem Eclipse DamoCamp in Hamburg im Mai 2009

TRANSCRIPT

  • 1. ...und was man damit anstellen kann.Heiko Behrens Eclipse DemoCamp 2009 Hamburg 25.05.2009E-Mail [email protected] Blog www.1160pm.net

2. Xtext?Xtext is a framework/tool for development of external textual DSLs. A domain-specic-language (DSL) in the context of modeling is a formal, processable languagetargeting at a specic viewpoint or aspectof a software system.Its semantics, exibility and notation is designed in order to support working with that viewpoint as good as possible. 3. Fuh in VU4. und 5. 4. Wen hast Dumorgen in denletzten beiden Stunden? Fuh in VU4. und 5. 5. Aussagen von Phillipp: Deutsch bei Mller montags in der 1. Stundekraftch Fa ehr agL deTStun Meierrain Englisch in der 2.dek ft L ehr ach F un St Sport bei Sippft 3. unde 4. Fac he L hrkra dS tunSozi in der 5. deFachnStu Franz bei Meiert dienstags in der 2.kraf F chaehr LagT S t undeDeutsch 3. unde 4. Fac hdS tun 6. Montag Dienstag Deutsch MllerDeutsch Englisch MeierEnglischFranz Sport Sipp Sport Deutsch Sport Deutsch Franz MeierSoziProtokollAussage VornameLehrkraftStunde* Name * Wert NameTag 7. Deutsch bei Mller montags in der 1. Stunde 8. Grammatik (hnlich zu EBNF) Protokoll : ! quot;Aussagen vonquot; vorname=NAME nachname=NAME quot;:quot; ! (aussagen+=Aussage)*; ! Aussage: ! lehrkraft=NAME quot;inquot; fach=NAME zeit=Zeit | ! fach=NAME (quot;beiquot; lehrkraft=NAME)? zeit=Zeit; ! Zeit: ! (tag=Tag)? stunden+=Stunde ((quot;,quot; | quot;undquot;) stunden+=Stunde)*; ! Stunde: ! (quot;inquot; quot;derquot;|quot;zurquot;)? wert=INT quot;.quot; quot;Stundequot;?; ! enum Tag: ! unbekannt | ! montags | dienstags | mittwochs | ! donnerstags | freitags | samstags; ! terminal NAME : ! ('A'..'Z'|'|''|'') ('A'..'Z'|''|''|''|'-'|'a'..'z'|''|''|''|'')*; 9. ik at Modell m mra G SuperclassSubclassClassLL(*) Parser ecore Metamodell EditorXtext-Rahmenwerk (anpassbar mit Google Guice) 10. Demo Modelldatei Xtext Grammar fr Aussagen zum Stundenplan Java-Programm zum Laden und navigieren ber Modell Xpand-basierter Generator itemis AG 2009 Alle Rechte vorbehalten 9 11. Entities (1/2) @SuppressWarnings(quot;serialquot;) @Entity @Table(name = quot;CUSTOMER_INFOquot;) public class CustomerInfo implements Serializable {! @Id ! @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = quot;idSeqquot;) ! @SequenceGenerator(name = quot;idSeqquot;, sequenceName = quot;CUST_SEQquot;, allocationSize = 1) ! @Column(name = quot;CUST_IDquot;, nullable = false) ! private String customerId;! public void setCustomerId(String customerId) { ! ! this.customerId = customerId; ! }! public String getCustomerId() { ! ! return customerId; ! }! @Column(name = quot;EMAILquot;, nullable = false, length = 128) ! private String emailAddress;! public String getEmailAddress() { ! ! return emailAddress; ! }! public void setEmailAddress(String emailAddress) { ! ! String oldValue = emailAddress; ! ! this.emailAddress = emailAddress; ! ! firePropertyChangedEvent(quot;emailAddressquot;, oldValue, this.emailAddress); ! } 12. Entities (2/2) entity CustomerInfo ! (id=CUST_ID, sequenceName=CUST_SEQ) { ! ! String emailAddress (notNull, length = 128) ! } 13. DSLs in der PraxisDatenmodellierung Architekturbeschreibung Konguration Geschftsregeln Dokumentation Mapping Navigation auf ObjektgraphenConstraints Strickmuster ... 14. Language development has never been so easy. 15. DemoRezept:quot;Pizza mit Quark-lteigquot; Zuaten:1 Ei2el l4el Milch150g Quark260g Mehl1x Backpulver Arbeitsschritte:quot;Einfach alles in die Schsselund umrhren, bis ein fester Teig entsteht.Ausrollen, auf Blech legen und belegen.quot; itemis AG 2009 Alle Rechte vorbehalten 16 16. www. .orgwww.twitter.com/xtext Downloads DocumentationSupport Stable Version 0.7 im Juni 2009 als Teil von Eclipse Galileo