Implementing Domain-Specific Languages with Xtext and Xtend - Second Edition
eBook - ePub

Implementing Domain-Specific Languages with Xtext and Xtend - Second Edition

Lorenzo Bettini

Partager le livre
  1. 426 pages
  2. English
  3. ePUB (adapté aux mobiles)
  4. Disponible sur iOS et Android
eBook - ePub

Implementing Domain-Specific Languages with Xtext and Xtend - Second Edition

Lorenzo Bettini

DĂ©tails du livre
Aperçu du livre
Table des matiĂšres
Citations

À propos de ce livre

Learn how to implement a DSL with Xtext and Xtend using easy-to-understand examples and best practicesAbout This Book‱ Leverage the latest features of Xtext and Xtend to develop a domain-specific language.‱ Integrate Xtext with popular third party IDEs and get the best out of both worlds.‱ Discover how to test a DSL implementation and how to customize runtime and IDE aspects of the DSLWho This Book Is ForThis book is targeted at programmers and developers who want to create a domain-specific language with Xtext. They should have a basic familiarity with Eclipse and its functionality. Previous experience with compiler implementation can be helpful but is not necessary since this book will explain all the development stages of a DSL.What You Will Learn‱ Write Xtext grammar for a DSL;‱ Use Xtend as an alternative to Java to write cleaner, easier-to-read, and more maintainable code;‱ Build your Xtext DSLs easily with Maven/Tycho and Gradle;‱ Write a code generator and an interpreter for a DSL;‱ Explore the Xtext scoping mechanism for symbol resolution;‱ Test most aspects of the DSL implementation with JUnit;‱ Understand best practices in DSL implementations with Xtext and Xtend;‱ Develop your Xtext DSLs using Continuous Integration mechanisms;‱ Use an Xtext editor in a web applicationIn DetailXtext is an open source Eclipse framework for implementing domain-specific languages together with IDE functionalities. It lets you implement languages really quickly; most of all, it covers all aspects of a complete language infrastructure, including the parser, code generator, interpreter, and more.This book will enable you to implement Domain Specific Languages (DSL) efficiently, together with their IDE tooling, with Xtext and Xtend. Opening with brief coverage of Xtext features involved in DSL implementation, including integration in an IDE, the book will then introduce you to Xtend as this language will be used in all the examples throughout the book. You will then explore the typical programming development workflow with Xtext when we modify the grammar of the DSL.Further, the Xtend programming language (a fully-featured Java-like language tightly integrated with Java) will be introduced. We then explain the main concepts of Xtext, such as validation, code generation, and customizations of runtime and UI aspects. You will have learned how to test a DSL implemented in Xtext with JUnit and will progress to advanced concepts such as type checking and scoping. You will then integrate the typical Continuous Integration systems built in to Xtext DSLs and familiarize yourself with Xbase. By the end of the book, you will manually maintain the EMF model for an Xtext DSL and will see how an Xtext DSL can also be used in IntelliJ.Style and approach A step-by step-tutorial with illustrative examples that will let you master using Xtext and implementing DSLs with its custom language, Xtend.

Foire aux questions

Comment puis-je résilier mon abonnement ?
Il vous suffit de vous rendre dans la section compte dans paramĂštres et de cliquer sur « RĂ©silier l’abonnement ». C’est aussi simple que cela ! Une fois que vous aurez rĂ©siliĂ© votre abonnement, il restera actif pour le reste de la pĂ©riode pour laquelle vous avez payĂ©. DĂ©couvrez-en plus ici.
Puis-je / comment puis-je télécharger des livres ?
Pour le moment, tous nos livres en format ePub adaptĂ©s aux mobiles peuvent ĂȘtre tĂ©lĂ©chargĂ©s via l’application. La plupart de nos PDF sont Ă©galement disponibles en tĂ©lĂ©chargement et les autres seront tĂ©lĂ©chargeables trĂšs prochainement. DĂ©couvrez-en plus ici.
Quelle est la différence entre les formules tarifaires ?
Les deux abonnements vous donnent un accĂšs complet Ă  la bibliothĂšque et Ă  toutes les fonctionnalitĂ©s de Perlego. Les seules diffĂ©rences sont les tarifs ainsi que la pĂ©riode d’abonnement : avec l’abonnement annuel, vous Ă©conomiserez environ 30 % par rapport Ă  12 mois d’abonnement mensuel.
Qu’est-ce que Perlego ?
Nous sommes un service d’abonnement Ă  des ouvrages universitaires en ligne, oĂč vous pouvez accĂ©der Ă  toute une bibliothĂšque pour un prix infĂ©rieur Ă  celui d’un seul livre par mois. Avec plus d’un million de livres sur plus de 1 000 sujets, nous avons ce qu’il vous faut ! DĂ©couvrez-en plus ici.
Prenez-vous en charge la synthÚse vocale ?
Recherchez le symbole Écouter sur votre prochain livre pour voir si vous pouvez l’écouter. L’outil Écouter lit le texte Ă  haute voix pour vous, en surlignant le passage qui est en cours de lecture. Vous pouvez le mettre sur pause, l’accĂ©lĂ©rer ou le ralentir. DĂ©couvrez-en plus ici.
Est-ce que Implementing Domain-Specific Languages with Xtext and Xtend - Second Edition est un PDF/ePUB en ligne ?
Oui, vous pouvez accĂ©der Ă  Implementing Domain-Specific Languages with Xtext and Xtend - Second Edition par Lorenzo Bettini en format PDF et/ou ePUB ainsi qu’à d’autres livres populaires dans Informatica et Programmazione. Nous disposons de plus d’un million d’ouvrages Ă  dĂ©couvrir dans notre catalogue.

Informations

Année
2016
ISBN
9781786463272
Édition
2
Sous-sujet
Programmazione

Implementing Domain-Specific Languages with Xtext and Xtend - Second Edition


Table of Contents

Implementing Domain-Specific Languages with Xtext and Xtend - Second Edition
Credits
Foreword
About the Author
Acknowledgments
About the Reviewer
www.PacktPub.com
eBooks, discount offers, and more
Why subscribe?
Preface
What this book covers
What you need for this book
Who this book is for
Conventions
Reader feedback
Customer support
Downloading the example code
Errata
Piracy
Questions
Preface to the second edition
1. Implementing a DSL
Domain-Specific Languages
Need for a new language
Implementing a DSL
Parsing
The Abstract Syntax Tree (AST)
IDE integration
Syntax highlighting
Background validation
Error markers
Content assist
Hyperlinking
Quickfixes
Outline
Automatic build
Summarizing DSL implementation
Enter Xtext
Installing Xtext
Let's try Xtext
The aim of this book
Summary
2. Creating Your First Xtext Language
A DSL for entities
Creating the project
Xtext projects
Modifying the grammar
Let's try the Editor
The Xtext generator
The Eclipse Modeling Framework (EMF)
Improvements to the DSL
Dealing with types
Summary
3. Working with the Xtend Programming Language
An introduction to Xtend
Using Xtend in your projects
Xtend – a better Java with less "noise"
Types
Methods
Fields and Variables
Operators
Syntactic sugar
Static members and inner types
Literals
Extension methods
The implicit variable – it
Lambda expressions
Multi-line template expressions
Additional operators
Polymorphic method invocation
Enhanced switch expressions
Other Xtend expressions
Xtend IDE
Debugging Xtend code
Summary
4. Validation
Validation in Xtext
Default validators
Custom validators
Quickfixes
Textual modification
Model modification
Quickfixes for default validators
Summary
5. Code Generation
Introduction to code generation
Writing a code generator in Xtend
Integration with the Eclipse build mechanism
Standalone command-line compiler
Summary
6. Customizing Xtext Components
Dependency injection
Google Guice in Xtext
Customizations of IDE concepts
Labels
The Outline view
Customizing other aspects
Custom formatting
Other customizations
Summary
7. Testing
Introduction to testing
JUnit 4
The ISetup interface
Implementing tests for your DSL
Testing the parser
Testing the validator
Testing the formatter
Testing code generation
Test suite
Testing the UI
Testing the content assist
Testing workbench integration
Testing the editor
Learning Tests
Testing the outline
Other testing frameworks
Testing and modularity
Clean code
Summary
8. An Expression Language
The Expressions DSL
Creating the project
Digression on Xtext grammar rules
The grammar for the Expressions DSL
Left recursive grammars
Associativity
Precedence
The complete grammar
Forward references
Custom Content Assist
Typing expressions
Loose type computation, strict type checking
Type computer
Validator
Writing an interpreter
Using the interpreter
Optimizations and fine tuning
Summary
9. Type Checking
SmallJava
Creating the project
SmallJava grammar
Rules for declarations
Rules for statements and syntactic predicates
Rules for expressions
Rule fragments
The complete grammar
Utility methods
Testing the grammar
First validation rules
Checking cycles in class hierarchies
Checking member selections
Checking return statements
Checking for duplicates
Type checking
Type computer for SmallJava
Type conformance (subtyping)
Expected types
Checking type conformance
Checking method overriding
Improving the UI
Summary
10. Scoping
Cross-reference resolution in Xtext
Containments and cross-references
The index
Qualified names
Exported objects
The linker and the scope provider
Component interaction
Custom scoping
Scope for blocks
Scope for inheritance and member visibility
Visibility and accessibility
Filtering unwanted objects from the scope
Global scoping
Packages and imports
The index and the containers
Checking duplicates across files
Providing a library
Default imports
Using the library outside Eclipse
Using the library in the type system and scoping
Classes of the same package
Dealing with super
What to put in the index?
Additional automatic features
Providing a project wizard
Summary
11. Continuous Integration
Eclipse features and p2 repositories
Release engineering
Headless builds
Target platforms
Continuous integration
Introduction to Maven/Tycho
Using the Xtext project wizard
Running the Maven build
Customizing the feature
Using and customizing the target platform
Customizing the pom files
Continuous Integration systems
Maintaining the examples of this book
Your DSL editor on the Web
IntelliJ and Gradle
Pitfalls with Maven/Tycho
Versioning
PDE test problems
Concluding remarks
Installation requirements
Make contributions easy
Summary
12. Xbase
Introduction to Xbase
The common Java type model
The Expressions DSL with Xbase
Creating the project
The IJvmModelInferrer interface
Code generation
Debugging
The Entities DSL with Xbase
Creating the project
Defining attributes
Defining operations
Imports
Validation
Additional Xbase features
Annotations
Reusing Java error markers
Using 'extension'
Using type parameters
Formatter
Further Customizations
Summary
13. Advanced Topics
Creating an Xtext project from an Ecore model
Defining the Ecore model
Creating the Xtext project
Fixing the StandaloneSetup
Tweaking the Ecore model
Derived State
Adding new rules to the language
Switching to an imported Ecore model
Generating EMF classes during the build
Customizing the EMF Java classes
Xcore
Creating the Xcore project
Creating the Xtext project from an existing Xcore model
Modifying the Xcore model
Extending Xbase
Overriding a rule in an Xtext grammar
Customizing the type system
Testing the type computer
Customizing the validator
Customizing the compiler
Using the type system in the compiler
Testing the compiled code
Improving code generation
Smoke tests
Summary
14. ...

Table des matiĂšres