Textual Modeling Framework


                            Jan Koehnlein - Sven Efftinge
                                   ...
Domain-Specific Language (DSL)




Wednesday, March 25, 2009
Domain-Specific Language (DSL)
               A DSL is a formal, processable language
                 targeting at a speci...
Domain-Specific Language (DSL)
               A DSL is a formal, processable language
                 targeting at a speci...
Why DSLs?

                            • higher abstractions
                            • avoid redundancy
              ...
The challenge




Wednesday, March 25, 2009
Complicated
Wednesday, March 25, 2009
Complicated & Expensive ?
Wednesday, March 25, 2009
licensed by http://www.wordle.net/
Wednesday, March 25, 2009
How we address this with




Wednesday, March 25, 2009
Convenience
Wednesday, March 25, 2009
Wednesday, March 25, 2009
Wednesday, March 25, 2009
Wednesday, March 25, 2009
Wednesday, March 25, 2009
Wednesday, March 25, 2009
Wednesday, March 25, 2009
Wednesday, March 25, 2009
Wednesday, March 25, 2009
Wednesday, March 25, 2009
grammar org.xtext.example.MyDsl
                            	   with org.eclipse.xtext.common.Terminals

                 ...
Grammar Definition
                            grammar org.xtext.example.MyDsl
                            	   with org.ecl...
Grammar Definition                Terminal Rule Import
                            grammar org.xtext.example.MyDsl
        ...
Grammar Definition                Terminal Rule Import
                            grammar org.xtext.example.MyDsl
  Derive...
Grammar Definition                Terminal Rule Import
                            grammar org.xtext.example.MyDsl
  Derive...
Grammar Definition                Terminal Rule Import
                            grammar org.xtext.example.MyDsl
  Derive...
Grammar Definition                Terminal Rule Import
                            grammar org.xtext.example.MyDsl
  Derive...
Grammar Definition                Terminal Rule Import
                            grammar org.xtext.example.MyDsl
  Derive...
Grammar Definition                Terminal Rule Import
                            grammar org.xtext.example.MyDsl
  Derive...
Grammar Definition                Terminal Rule Import
                            grammar org.xtext.example.MyDsl
  Derive...
Grammar Definition                Terminal Rule Import
                            grammar org.xtext.example.MyDsl
  Derive...
Metamodel Derivation
                                                  MyDsl
    grammar org.xtext.example.MyDsl
    	   w...
Metamodel Derivation
                                                  MyDsl
    grammar org.xtext.example.MyDsl
    	   w...
Metamodel Derivation
                                                  MyDsl
    grammar org.xtext.example.MyDsl
    	   w...
Metamodel Derivation
                                                  MyDsl
    grammar org.xtext.example.MyDsl
    	   w...
Metamodel Derivation
                                                  MyDsl
    grammar org.xtext.example.MyDsl
    	   w...
Metamodel Derivation
                                                  MyDsl
    grammar org.xtext.example.MyDsl
    	   w...
Metamodel Derivation
                                                  MyDsl
    grammar org.xtext.example.MyDsl
    	   w...
Metamodel Derivation
                                                  MyDsl
    grammar org.xtext.example.MyDsl
    	   w...
Metamodel Derivation
                                                  MyDsl
    grammar org.xtext.example.MyDsl
    	   w...
Metamodel Derivation
                                                  MyDsl
    grammar org.xtext.example.MyDsl
    	   w...
Metamodel Derivation
                                                  MyDsl
    grammar org.xtext.example.MyDsl
    	   w...
Metamodel Derivation
                                                  MyDsl
    grammar org.xtext.example.MyDsl
    	   w...
licensed by http://www.wordle.net/
Wednesday, March 25, 2009
Based on
            the grammar and Ecore models,
            Xtext provides you with sensible
                default im...
Validation


Wednesday, March 25, 2009
Wednesday, March 25, 2009
Wednesday, March 25, 2009
Wednesday, March 25, 2009
Wednesday, March 25, 2009
Customizing the LabelProvider

              public class MySpecialLabelProvider
                     extends DefaultLabel...
Flexibility
Wednesday, March 25, 2009
licensed by http://www.wordle.net/
Wednesday, March 25, 2009
Dependency management




                            licensed by http://www.wordle.net/
Wednesday, March 25, 2009
Dependency management




                            licensed by http://www.wordle.net/
Wednesday, March 25, 2009
Dependency management




                            licensed by http://www.wordle.net/
Wednesday, March 25, 2009
Dependency management




                            licensed by http://www.wordle.net/
Wednesday, March 25, 2009
Dependency management




                            licensed by http://www.wordle.net/
Wednesday, March 25, 2009
MyCustomLabelProvider




                                        licensed by http://www.wordle.net/
Wednesday, March 25, ...
Dependency Injection
                   with Google fGuice




Wednesday, March 25, 2009
Dependency Injection
                   with Google fGuice




Wednesday, March 25, 2009
Dependency Injection
                   with Google fGuice




          ‣No dependency to concrete implementation



Wedn...
Dependency Injection
                   with Google fGuice




          ‣No dependency to concrete implementation
       ...
Dependency Injection
                   with Google fGuice




          ‣No dependency to concrete implementation
       ...
Dependency Injection
                   with Google fGuice




          ‣No dependency to concrete implementation
       ...
Configuration of
                      Components in Xtext
                            AbstractDeclarativeModule




     ...
Configuration of
                    Components in Xtext
        /**
          * used to register components to be used wi...
and Equinox

         Injector is created during Bundle.start(...)
    	 @Override
    	 public void start(BundleContext c...
and Equinox

         ExecutableExtensions are created via
         IExecutableExtensionFactory
     	     <extension
    ...
Composable
                            Code Generator
                       ‣ generator is composed of “fragments”




We...
Composable
                            Code Generator
                       ‣ generator is composed of “fragments”
      ...
Composable
                            Code Generator
                       ‣ generator is composed of “fragments”
      ...
Composable
                            Code Generator
                       ‣ generator is composed of “fragments”
      ...
Composable
                            Code Generator
                       ‣ generator is composed of “fragments”
      ...
Composable
                            Code Generator
                       ‣ generator is composed of “fragments”
      ...
Future Plans
Wednesday, March 25, 2009
Galileo




Wednesday, March 25, 2009
Galileo
       •      Index




Wednesday, March 25, 2009
Galileo
       •      Index
       • Enum Rules




Wednesday, March 25, 2009
Galileo
       •      Index
       • Enum Rules
       • Bug fixing / Performance Tuning




Wednesday, March 25, 2009
Galileo
       •      Index
       • Enum Rules
       • Bug fixing / Performance Tuning
       • Documentation



Wednesda...
Galileo
       •      Index
       • Enum Rules
       • Bug fixing / Performance Tuning
       • Documentation
       • Su...
Post Galileo




Wednesday, March 25, 2009
Post Galileo

         ‣      More UI features




Wednesday, March 25, 2009
Post Galileo

         ‣      More UI features

         ‣Basic Language Libraries




Wednesday, March 25, 2009
Post Galileo

         ‣      More UI features

         ‣Basic Language Libraries

         ‣“Eat your own dog food”
    ...
Thank you very much for listening

      Visit the project’s web site :
             www.xtext.org

     Copyright 2009 by...
Convenient & Flexible
Wednesday, March 25, 2009
Upcoming SlideShare
Loading in …5
×

Xtext Eclipse Con

4,428 views

Published on

Talk about TMF Xtext (www.xtext.org) given at EclipseCon 09

Published in: Technology, Education

Xtext Eclipse Con

  1. 1. Textual Modeling Framework Jan Koehnlein - Sven Efftinge itemis Wednesday, March 25, 2009
  2. 2. Domain-Specific Language (DSL) Wednesday, March 25, 2009
  3. 3. Domain-Specific Language (DSL) A DSL is a formal, processable language targeting at a specific viewpoint or aspect of a software system. Wednesday, March 25, 2009
  4. 4. Domain-Specific Language (DSL) A DSL is a formal, processable language targeting at a specific viewpoint or aspect of a software system. It’s semantics, flexibility and notation is designed in order to support working with that viewpoint as good as possible. Wednesday, March 25, 2009
  5. 5. Why DSLs? • higher abstractions • avoid redundancy • separation of concerns • use domain concepts (Ubiquitous Language) Wednesday, March 25, 2009
  6. 6. The challenge Wednesday, March 25, 2009
  7. 7. Complicated Wednesday, March 25, 2009
  8. 8. Complicated & Expensive ? Wednesday, March 25, 2009
  9. 9. licensed by http://www.wordle.net/ Wednesday, March 25, 2009
  10. 10. How we address this with Wednesday, March 25, 2009
  11. 11. Convenience Wednesday, March 25, 2009
  12. 12. Wednesday, March 25, 2009
  13. 13. Wednesday, March 25, 2009
  14. 14. Wednesday, March 25, 2009
  15. 15. Wednesday, March 25, 2009
  16. 16. Wednesday, March 25, 2009
  17. 17. Wednesday, March 25, 2009
  18. 18. Wednesday, March 25, 2009
  19. 19. Wednesday, March 25, 2009
  20. 20. Wednesday, March 25, 2009
  21. 21. grammar org.xtext.example.MyDsl with org.eclipse.xtext.common.Terminals generate myDsl quot;http://www.xtext.org/example/MyDslquot; Model: (types+=Type)*; Type: Datatype | Entity; Datatype: 'datatype' name=ID; Entity: 'entity' name=ID '{' (features+=Feature)* '}'; Feature: type=[Type] name=ID; Wednesday, March 25, 2009
  22. 22. Grammar Definition grammar org.xtext.example.MyDsl with org.eclipse.xtext.common.Terminals generate myDsl quot;http://www.xtext.org/example/MyDslquot; Model: (types+=Type)*; Type: Datatype | Entity; Datatype: 'datatype' name=ID; Entity: 'entity' name=ID '{' (features+=Feature)* '}'; Feature: type=[Type] name=ID; Wednesday, March 25, 2009
  23. 23. Grammar Definition Terminal Rule Import grammar org.xtext.example.MyDsl with org.eclipse.xtext.common.Terminals generate myDsl quot;http://www.xtext.org/example/MyDslquot; Model: (types+=Type)*; Type: Datatype | Entity; Datatype: 'datatype' name=ID; Entity: 'entity' name=ID '{' (features+=Feature)* '}'; Feature: type=[Type] name=ID; Wednesday, March 25, 2009
  24. 24. Grammar Definition Terminal Rule Import grammar org.xtext.example.MyDsl Derived with org.eclipse.xtext.common.Terminals Metamodel generate myDsl quot;http://www.xtext.org/example/MyDslquot; Model: (types+=Type)*; Type: Datatype | Entity; Datatype: 'datatype' name=ID; Entity: 'entity' name=ID '{' (features+=Feature)* '}'; Feature: type=[Type] name=ID; Wednesday, March 25, 2009
  25. 25. Grammar Definition Terminal Rule Import grammar org.xtext.example.MyDsl Derived with org.eclipse.xtext.common.Terminals Metamodel generate myDsl quot;http://www.xtext.org/example/MyDslquot; Model: Parser (types+=Type)*; Rules Type: Datatype | Entity; Datatype: 'datatype' name=ID; Entity: 'entity' name=ID '{' (features+=Feature)* '}'; Feature: type=[Type] name=ID; Wednesday, March 25, 2009
  26. 26. Grammar Definition Terminal Rule Import grammar org.xtext.example.MyDsl Derived with org.eclipse.xtext.common.Terminals Metamodel generate myDsl quot;http://www.xtext.org/example/MyDslquot; Containment Reference Model: Parser (types+=Type)*; Rules Type: Datatype | Entity; Datatype: 'datatype' name=ID; Entity: 'entity' name=ID '{' (features+=Feature)* '}'; Feature: type=[Type] name=ID; Wednesday, March 25, 2009
  27. 27. Grammar Definition Terminal Rule Import grammar org.xtext.example.MyDsl Derived with org.eclipse.xtext.common.Terminals Metamodel generate myDsl quot;http://www.xtext.org/example/MyDslquot; Containment Reference Model: Parser (types+=Type)*; Cardinality Rules Type: Datatype | Entity; Datatype: 'datatype' name=ID; Entity: 'entity' name=ID '{' (features+=Feature)* '}'; Feature: type=[Type] name=ID; Wednesday, March 25, 2009
  28. 28. Grammar Definition Terminal Rule Import grammar org.xtext.example.MyDsl Derived with org.eclipse.xtext.common.Terminals Metamodel generate myDsl quot;http://www.xtext.org/example/MyDslquot; Containment Reference Model: Parser (types+=Type)*; Cardinality Rules Type: Datatype | Entity; Alternatives Datatype: 'datatype' name=ID; Entity: 'entity' name=ID '{' (features+=Feature)* '}'; Feature: type=[Type] name=ID; Wednesday, March 25, 2009
  29. 29. Grammar Definition Terminal Rule Import grammar org.xtext.example.MyDsl Derived with org.eclipse.xtext.common.Terminals Metamodel generate myDsl quot;http://www.xtext.org/example/MyDslquot; Containment Reference Model: Parser (types+=Type)*; Cardinality Rules Type: Datatype | Entity; Alternatives Datatype: 'datatype' name=ID; Call to Entity: Terminal 'entity' name=ID '{' (features+=Feature)* Rule '}'; Feature: type=[Type] name=ID; Wednesday, March 25, 2009
  30. 30. Grammar Definition Terminal Rule Import grammar org.xtext.example.MyDsl Derived with org.eclipse.xtext.common.Terminals Metamodel generate myDsl quot;http://www.xtext.org/example/MyDslquot; Containment Reference Model: Parser (types+=Type)*; Cardinality Rules Type: Datatype | Entity; Alternatives Datatype: 'datatype' name=ID; Call to Entity: Keywords Terminal 'entity' name=ID '{' (features+=Feature)* Rule '}'; Feature: type=[Type] name=ID; Wednesday, March 25, 2009
  31. 31. Grammar Definition Terminal Rule Import grammar org.xtext.example.MyDsl Derived with org.eclipse.xtext.common.Terminals Metamodel generate myDsl quot;http://www.xtext.org/example/MyDslquot; Containment Reference Model: Parser (types+=Type)*; Cardinality Rules Type: Datatype | Entity; Alternatives Datatype: 'datatype' name=ID; Call to Entity: Keywords Terminal 'entity' name=ID '{' (features+=Feature)* Cross Rule '}'; Reference Feature: type=[Type] name=ID; Wednesday, March 25, 2009
  32. 32. Metamodel Derivation MyDsl grammar org.xtext.example.MyDsl with org.eclipse.xtext.common.Terminals Model generate myDsl quot;http://www.xtext.org/example/MyDslquot; Model: * Type (types+=Type)*; name: String Type: Datatype | Entity; Datatype: Datatype Entity 'datatype' name=ID; Entity: 'entity' name=ID '{' type (features+=Feature)* * '}'; Feature * name: String Feature: type=[Datatype] name=ID; Wednesday, March 25, 2009
  33. 33. Metamodel Derivation MyDsl grammar org.xtext.example.MyDsl with org.eclipse.xtext.common.Terminals Model generate myDsl quot;http://www.xtext.org/example/MyDslquot; Model: * Type (types+=Type)*; name: String Type: Datatype | Entity; Datatype: Datatype Entity 'datatype' name=ID; Entity: 'entity' name=ID '{' type (features+=Feature)* * '}'; Feature * name: String Feature: type=[Datatype] name=ID; Wednesday, March 25, 2009
  34. 34. Metamodel Derivation MyDsl grammar org.xtext.example.MyDsl with org.eclipse.xtext.common.Terminals Model generate myDsl quot;http://www.xtext.org/example/MyDslquot; Model: * Type (types+=Type)*; name: String Type: Datatype | Entity; Datatype: Datatype Entity 'datatype' name=ID; Entity: 'entity' name=ID '{' type (features+=Feature)* * '}'; Feature * name: String Feature: type=[Datatype] name=ID; Wednesday, March 25, 2009
  35. 35. Metamodel Derivation MyDsl grammar org.xtext.example.MyDsl with org.eclipse.xtext.common.Terminals Model generate myDsl quot;http://www.xtext.org/example/MyDslquot; Model: * Type (types+=Type)*; name: String Type: Datatype | Entity; Datatype: Datatype Entity 'datatype' name=ID; Entity: 'entity' name=ID '{' type (features+=Feature)* * '}'; Feature * name: String Feature: type=[Datatype] name=ID; Wednesday, March 25, 2009
  36. 36. Metamodel Derivation MyDsl grammar org.xtext.example.MyDsl with org.eclipse.xtext.common.Terminals Model generate myDsl quot;http://www.xtext.org/example/MyDslquot; Model: * Type (types+=Type)*; name: String Type: Datatype | Entity; Datatype: Datatype Entity 'datatype' name=ID; Entity: 'entity' name=ID '{' type (features+=Feature)* * '}'; Feature * name: String Feature: type=[Datatype] name=ID; Wednesday, March 25, 2009
  37. 37. Metamodel Derivation MyDsl grammar org.xtext.example.MyDsl with org.eclipse.xtext.common.Terminals Model generate myDsl quot;http://www.xtext.org/example/MyDslquot; Model: * Type (types+=Type)*; name: String Type: Datatype | Entity; Datatype: Datatype Entity 'datatype' name=ID; Entity: 'entity' name=ID '{' type (features+=Feature)* * '}'; Feature * name: String Feature: type=[Datatype] name=ID; Wednesday, March 25, 2009
  38. 38. Metamodel Derivation MyDsl grammar org.xtext.example.MyDsl with org.eclipse.xtext.common.Terminals Model generate myDsl quot;http://www.xtext.org/example/MyDslquot; Model: * Type (types+=Type)*; name: String Type: Datatype | Entity; Datatype: Datatype Entity 'datatype' name=ID; Entity: 'entity' name=ID '{' type (features+=Feature)* * '}'; Feature * name: String Feature: type=[Datatype] name=ID; Wednesday, March 25, 2009
  39. 39. Metamodel Derivation MyDsl grammar org.xtext.example.MyDsl with org.eclipse.xtext.common.Terminals Model generate myDsl quot;http://www.xtext.org/example/MyDslquot; Model: * Type (types+=Type)*; name: String Type: Datatype | Entity; Datatype: Datatype Entity 'datatype' name=ID; Entity: 'entity' name=ID '{' type (features+=Feature)* * '}'; Feature * name: String Feature: type=[Datatype] name=ID; Wednesday, March 25, 2009
  40. 40. Metamodel Derivation MyDsl grammar org.xtext.example.MyDsl with org.eclipse.xtext.common.Terminals Model generate myDsl quot;http://www.xtext.org/example/MyDslquot; Model: * Type (types+=Type)*; name: String Type: Datatype | Entity; Datatype: Datatype Entity 'datatype' name=ID; Entity: 'entity' name=ID '{' type (features+=Feature)* * '}'; Feature * name: String Feature: type=[Datatype] name=ID; Wednesday, March 25, 2009
  41. 41. Metamodel Derivation MyDsl grammar org.xtext.example.MyDsl with org.eclipse.xtext.common.Terminals Model generate myDsl quot;http://www.xtext.org/example/MyDslquot; Model: * Type (types+=Type)*; name: String Type: Datatype | Entity; Datatype: Datatype Entity 'datatype' name=ID; Entity: 'entity' name=ID '{' type (features+=Feature)* * '}'; Feature * name: String Feature: type=[Datatype] name=ID; Wednesday, March 25, 2009
  42. 42. Metamodel Derivation MyDsl grammar org.xtext.example.MyDsl with org.eclipse.xtext.common.Terminals Model generate myDsl quot;http://www.xtext.org/example/MyDslquot; Model: * Type (types+=Type)*; name: String Type: Datatype | Entity; Datatype: Datatype Entity 'datatype' name=ID; Entity: 'entity' name=ID '{' type (features+=Feature)* * '}'; Feature * name: String Feature: type=[Datatype] name=ID; Wednesday, March 25, 2009
  43. 43. Metamodel Derivation MyDsl grammar org.xtext.example.MyDsl with org.eclipse.xtext.common.Terminals Model generate myDsl quot;http://www.xtext.org/example/MyDslquot; Model: * Type (types+=Type)*; name: String Type: Datatype | Entity; Datatype: Datatype Entity 'datatype' name=ID; Entity: 'entity' name=ID '{' type (features+=Feature)* * '}'; Feature * name: String Feature: type=[Datatype] name=ID; Wednesday, March 25, 2009
  44. 44. licensed by http://www.wordle.net/ Wednesday, March 25, 2009
  45. 45. Based on the grammar and Ecore models, Xtext provides you with sensible default implementations. licensed by http://www.wordle.net/ Wednesday, March 25, 2009
  46. 46. Validation Wednesday, March 25, 2009
  47. 47. Wednesday, March 25, 2009
  48. 48. Wednesday, March 25, 2009
  49. 49. Wednesday, March 25, 2009
  50. 50. Wednesday, March 25, 2009
  51. 51. Customizing the LabelProvider public class MySpecialLabelProvider extends DefaultLabelProvider { public String label(Feature f) { return f.getName()+quot;:quot;+f.getType().getName(); } } ‣Naming Convention ‣Polymorphic Dispatch ‣Fault tolerance Wednesday, March 25, 2009
  52. 52. Flexibility Wednesday, March 25, 2009
  53. 53. licensed by http://www.wordle.net/ Wednesday, March 25, 2009
  54. 54. Dependency management licensed by http://www.wordle.net/ Wednesday, March 25, 2009
  55. 55. Dependency management licensed by http://www.wordle.net/ Wednesday, March 25, 2009
  56. 56. Dependency management licensed by http://www.wordle.net/ Wednesday, March 25, 2009
  57. 57. Dependency management licensed by http://www.wordle.net/ Wednesday, March 25, 2009
  58. 58. Dependency management licensed by http://www.wordle.net/ Wednesday, March 25, 2009
  59. 59. MyCustomLabelProvider licensed by http://www.wordle.net/ Wednesday, March 25, 2009
  60. 60. Dependency Injection with Google fGuice Wednesday, March 25, 2009
  61. 61. Dependency Injection with Google fGuice Wednesday, March 25, 2009
  62. 62. Dependency Injection with Google fGuice ‣No dependency to concrete implementation Wednesday, March 25, 2009
  63. 63. Dependency Injection with Google fGuice ‣No dependency to concrete implementation ‣No explicit construction Wednesday, March 25, 2009
  64. 64. Dependency Injection with Google fGuice ‣No dependency to concrete implementation ‣No explicit construction ‣Easy testing Wednesday, March 25, 2009
  65. 65. Dependency Injection with Google fGuice ‣No dependency to concrete implementation ‣No explicit construction ‣Easy testing ‣Easy composition Wednesday, March 25, 2009
  66. 66. Configuration of Components in Xtext AbstractDeclarativeModule DefaultRuntimeModule DefaultUIModule From Xtext Your Project GeneratedRuntimeModule GeneratedUIModule RuntimeModule UIModule Wednesday, March 25, 2009
  67. 67. Configuration of Components in Xtext /** * used to register components to be used within the IDE. */ public class DomainmodelUiModule extends GeneratedDomainmodelUiModule { @Override public Class<? extends ILabelProvider> bindILabelProvider() { return MySpecialLabelProvider.class; } } Wednesday, March 25, 2009
  68. 68. and Equinox Injector is created during Bundle.start(...) @Override public void start(BundleContext context) throws Exception { super.start(context); INSTANCE = this; injector = Guice.createInjector( new DomainmodelRuntimeModule(), new DomainmodelUiModule()); } Wednesday, March 25, 2009
  69. 69. and Equinox ExecutableExtensions are created via IExecutableExtensionFactory <extension point=quot;org.eclipse.emf.ecore.extension_parserquot;> <parser class=quot;my.pack.DomainmodelExecutableExtensionFactory: org.eclipse.xtext.resource.XtextResourceFactoryquot; type=quot;dmodelquot;> </parser> </extension> Wednesday, March 25, 2009
  70. 70. Composable Code Generator ‣ generator is composed of “fragments” Wednesday, March 25, 2009
  71. 71. Composable Code Generator ‣ generator is composed of “fragments” ‣ fragments can contribute to: Wednesday, March 25, 2009
  72. 72. Composable Code Generator ‣ generator is composed of “fragments” ‣ fragments can contribute to: ‣ Manifest.MF Wednesday, March 25, 2009
  73. 73. Composable Code Generator ‣ generator is composed of “fragments” ‣ fragments can contribute to: ‣ Manifest.MF ‣ plugin.xml Wednesday, March 25, 2009
  74. 74. Composable Code Generator ‣ generator is composed of “fragments” ‣ fragments can contribute to: ‣ Manifest.MF ‣ plugin.xml ‣ Guice modules Wednesday, March 25, 2009
  75. 75. Composable Code Generator ‣ generator is composed of “fragments” ‣ fragments can contribute to: ‣ Manifest.MF ‣ plugin.xml ‣ Guice modules ‣ Add your own fragments Wednesday, March 25, 2009
  76. 76. Future Plans Wednesday, March 25, 2009
  77. 77. Galileo Wednesday, March 25, 2009
  78. 78. Galileo • Index Wednesday, March 25, 2009
  79. 79. Galileo • Index • Enum Rules Wednesday, March 25, 2009
  80. 80. Galileo • Index • Enum Rules • Bug fixing / Performance Tuning Wednesday, March 25, 2009
  81. 81. Galileo • Index • Enum Rules • Bug fixing / Performance Tuning • Documentation Wednesday, March 25, 2009
  82. 82. Galileo • Index • Enum Rules • Bug fixing / Performance Tuning • Documentation • Sugar (Wizards, Tutorials, etc.) Wednesday, March 25, 2009
  83. 83. Post Galileo Wednesday, March 25, 2009
  84. 84. Post Galileo ‣ More UI features Wednesday, March 25, 2009
  85. 85. Post Galileo ‣ More UI features ‣Basic Language Libraries Wednesday, March 25, 2009
  86. 86. Post Galileo ‣ More UI features ‣Basic Language Libraries ‣“Eat your own dog food” continued Wednesday, March 25, 2009
  87. 87. Thank you very much for listening Visit the project’s web site : www.xtext.org Copyright 2009 by itemis Wednesday, March 25, 2009
  88. 88. Convenient & Flexible Wednesday, March 25, 2009

×