Implementing domain-specific languages with Xtext and Xtend
If you know Eclipse then learning how to implement a DSL using Xtext is a natural progression. And this guide makes it easy to get started through a step-by-step approach accompanied with simple examples. Learn to quickly develop a domain-specific language with Xtext Implement any aspect of a DSL us...
Main Author: | |
---|---|
Format: | eBook |
Language: | Inglés |
Published: |
Birmingham :
Packt Publishing
2013.
|
Edition: | 1st edition |
Series: | Community experience distilled
|
Subjects: | |
See on Biblioteca Universitat Ramon Llull: | https://discovery.url.edu/permalink/34CSUC_URL/1im36ta/alma991009627880106719 |
Table of Contents:
- Cover
- Copyright
- Credits
- About the Author
- Acknowledgement
- About the Reviewers
- www.PacktPub.com
- Table of Contents
- Preface
- Chapter 1: Implementing a DSL
- Domain Specific Languages
- So, why should you create a new language?
- Implementing a DSL
- Parsing
- The Abstract Syntax Tree (AST)
- IDE integration
- Syntax highlighting
- Background parsing
- 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
- Chapter 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
- Chapter 3: The Xtend Programming Language
- An introduction to Xtend
- Using Xtend in your projects
- Xtend - a better Java with less "noise
- Extension methods
- The implicit variable - it
- Lambda expressions
- Multi-line template expressions
- Additional operators
- Polymorphic method invocation
- Enhanced switch expressions
- Debugging Xtend code
- Summary
- Chapter 4: Validation
- Validation in Xtext
- Default validators
- Custom validators
- Quickfixes
- Textual modification
- Model modification
- Quickfixes for default validators
- Summary
- Chapter 5: Code Generation
- Introduction to code generation
- Writing a code generator in Xtend
- Integration with the Eclipse build mechanism
- Standalone command-line compiler
- Summary
- Chapter 6: Customizations
- Dependency injection
- Google Guice in Xtext
- Customizations of IDE concepts
- Labels
- The Outline view
- Customizing other aspects
- Custom formatting
- Other customizations.
- Summary
- Chapter 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
- Other UI testing frameworks
- Testing and modularity
- Clean code
- Summary
- Chapter 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
- Typing expressions
- Type provider
- Validator
- Writing an interpreter
- Using the interpreter
- Summary
- Chapter 9: Type Checking
- SmallJava
- Creating the project
- SmallJava grammar
- Rules for declarations
- Rules for statements and syntactic predicates
- Rules for expressions
- 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 provider for SmallJava
- Type conformance (subtyping)
- Expected types
- Checking type conformance
- Checking method overriding
- Improving the UI
- Summary
- Chapter 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
- Dealing with super
- What to put in the index?
- Additional automatic features
- Summary
- Chapter 11: Building and Releasing
- Release engineering
- Headless builds
- Target platforms
- Continuous integration
- Introduction to Buckminster
- Installing Buckminster
- Using the Xtext Buckminster wizard
- Building the p2 repository from Eclipse
- Customizations
- Defining the target platform
- Build headlessly
- Maintaining the examples of this book
- Summary
- Chapter 13: Xbase
- Getting introduced with Xbase
- 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
- Customizations
- Summary
- Bibliography
- Index.