Implementing domain-specific languages with Xtext and Xtend: learn how to implement a DSL with Xtext and Xtend using easy-to-understand examples and best practices
Gespeichert in:
1. Verfasser: | |
---|---|
Format: | Buch |
Sprache: | English |
Veröffentlicht: |
Birmingham [u.a.]
Packt Publishing
2013
|
Ausgabe: | 1. publ. |
Schlagworte: | |
Online-Zugang: | Inhaltsverzeichnis |
Beschreibung: | Includes bibliographical references and index |
Beschreibung: | V, 324 S. Ill. |
ISBN: | 9781782160304 |
Internformat
MARC
LEADER | 00000nam a2200000zc 4500 | ||
---|---|---|---|
001 | BV041795192 | ||
003 | DE-604 | ||
005 | 20160217 | ||
007 | t | ||
008 | 140414s2013 a||| |||| 00||| eng d | ||
020 | |a 9781782160304 |c Print |9 978-1-78216-030-4 | ||
035 | |a (OCoLC)869811109 | ||
035 | |a (DE-599)BVBBV041795192 | ||
040 | |a DE-604 |b ger |e aacr | ||
041 | 0 | |a eng | |
049 | |a DE-523 |a DE-858 | ||
084 | |a ST 250 |0 (DE-625)143626: |2 rvk | ||
100 | 1 | |a Bettini, Lorenzo |e Verfasser |0 (DE-588)1045679631 |4 aut | |
245 | 1 | 0 | |a Implementing domain-specific languages with Xtext and Xtend |b learn how to implement a DSL with Xtext and Xtend using easy-to-understand examples and best practices |c Lorenzo Bettini |
250 | |a 1. publ. | ||
264 | 1 | |a Birmingham [u.a.] |b Packt Publishing |c 2013 | |
300 | |a V, 324 S. |b Ill. | ||
336 | |b txt |2 rdacontent | ||
337 | |b n |2 rdamedia | ||
338 | |b nc |2 rdacarrier | ||
500 | |a Includes bibliographical references and index | ||
650 | 4 | |a Software engineering | |
650 | 4 | |a Domain-specific programming languages | |
650 | 0 | 7 | |a Eclipse |g Programmierumgebung |0 (DE-588)4768065-9 |2 gnd |9 rswk-swf |
650 | 0 | 7 | |a Domänenspezifische Programmiersprache |0 (DE-588)7585264-0 |2 gnd |9 rswk-swf |
689 | 0 | 0 | |a Domänenspezifische Programmiersprache |0 (DE-588)7585264-0 |D s |
689 | 0 | 1 | |a Eclipse |g Programmierumgebung |0 (DE-588)4768065-9 |D s |
689 | 0 | |5 DE-604 | |
856 | 4 | 2 | |m Digitalisierung UB Bayreuth - ADAM Catalogue Enrichment |q application/pdf |u http://bvbr.bib-bvb.de:8991/F?func=service&doc_library=BVB01&local_base=BVB01&doc_number=027240724&sequence=000002&line_number=0001&func_code=DB_RECORDS&service_type=MEDIA |3 Inhaltsverzeichnis |
Datensatz im Suchindex
_version_ | 1805078922655694848 |
---|---|
adam_text |
Table
of Contents-
Preface
_1
Chapter
1:
Implementing a DSL
_7
Domain Specific Languages
7
So, why should you create a new language?
8
Implementing a DSL
9
Parsing
10
The Abstract Syntax Tree (AST)
12
IDE integration
13
Syntax highlighting
14
Background parsing
14
Error markers
14
Content Assist
15
Ну
perlinking
15
Quickfixes 15
Outline
16
Automatic build
16
Summarizing DSL implementation
16
Enter Xtext
17
Installing Xtext
18
Let's try Xtext
18
The aim of this book
23
Summary
23
Chapter
2:
Creating Your First Xtext Language
_25
A DSL for entities
25
Creating the project
25
Xtext projects
26
Modifying the grammar
27
Leťs
try the Editor
30
Table
o f
Con te
η
is
The Xtext generator
33
The Eclipse Modeling Framework (EMF)
35
Improvements to the DSL
38
Dealing with types
39
Summary
43
Chapter
3:
The Xtend Programming Language
_45
An introduction to Xtend
45
Using Xtend in your projects
46
Xtend
-
a better Java with less "noise"
47
Extension methods
52
The implicit variable
-
it
55
Lambda expressions
55
Multi-line template expressions
60
Additional operators
64
Polymorphic method invocation
66
Enhanced switch expressions
66
Debugging Xtend code
68
Summary
69
Chapter
4:
Validation
_71
Validation in Xtext
71
Default validators
72
Custom validators
74
Quickfixes
77
Textual modification
80
Model modification
81
Quickfixes for default validators
83
Summary
85
Chapter
5:
Code Generation
_87
Introduction to code generation
87
Writing a code generator in Xtend
88
Integration with the Eclipse build mechanism
91
Standalone command-line compiler
94
Summary
96
Chapter
6:
Customizations
_97
Dependency injection
97
Google Guice in Xtext
102
Customizations of IDE concepts
103
Labels
104
The Outline view
107
Table
of
Contents
Customizing other aspects
109
Custom formatting
110
Other customizations
112
Summary
116
Chapter
7:
Testing
_117
Introduction to testing
117
Junit4
119
The ISetup interface
119
Implementing tests for your DSL
120
Testing the parser
121
Testing the validator
125
Testing the formatter
128
Testing code generation
132
Test suite
137
Testing the Ul
138
Testing the content assist
138
Testing workbench integration
140
Testing the editor
142
Other
U
I testing frameworks
145
Testing and modularity
146
Clean code
149
Summary
150
Chapter
8:
An Expression Language
_151
The Expressions DSL
151
Creating the project
152
Digression on Xtext grammar rules
152
The grammar for the Expressions DSL
154
Left recursive grammars
157
Associativity
160
Precedence
163
The complete grammar
167
Forward references
168
Typing expressions
174
Type provider
176
Validator
179
Writing an interpreter
184
Using the interpreter
186
Summary
190
[in]
Table
of
Contents
Chapter
9:
Type Checking
_191
Small Java
191
Creating the project
192
SmallJava grammar
192
Rules for declarations
193
Rules for statements and syntactic predicates
194
Rules for expressions
197
The complete grammar
200
Utility methods
202
Testing the grammar
203
First validation rules
205
Checking cycles in class hierarchies
205
Checking member selections
207
Checking return statements
209
Checking for duplicates
212
Type checking
214
Type provider for SmallJava
215
Type conformance (subtyping)
217
Expected types
219
Checking type conformance
221
Checking method overriding
224
Improving the Ul
225
Summary
228
Chapter
10:
Scoping
_229
Cross-reference resolution in Xtext
229
Containments and cross-references
229
The index
230
Qualified names
231
Exported objects
232
The linker and the scope provider
234
Component interaction
238
Custom scoping
239
Scope for blocks
240
Scope for inheritance and member visibility
244
Visibility and accessibility
250
Filtering unwanted objects from the scope
254
Global scoping
255
Packages and imports
257
The index and the containers
260
Checking duplicates across files
262
[iv]
Table
of
Contents
Providing a library
264
Default imports
266
Using the library outside Eclipse
267
Using the library in the type system and scoping
270
Dealing with super
273
What to put in the index?
275
Additional automatic features
276
Summary
278
Chapter
11:
Building and Releasing
_279
Release engineering
279
Headless builds
280
Target platforms
280
Continuous integration
281
Introduction to Buckminster
282
Installing Buckminster
283
Using the Xtext Buckminster wizard
283
Building the p2 repository from Eclipse
286
Customizations
288
Defining the target platform
289
Build headlessly
290
Maintaining the examples of this book
292
Summary
293
Chapter
12:
Xbase
_295
Getting introduced with Xbase
295
The Expressions DSL with Xbase
297
Creating the project
297
The I JvmModel
Inferrer
interface
299
Code generation
303
Debugging
304
The Entities DSL with Xbase
305
Creating the project
306
Defining attributes
306
Defining operations
310
Imports
314
Customizations
315
Summary
316
Bibliography
_317
Index
319
lv] |
any_adam_object | 1 |
author | Bettini, Lorenzo |
author_GND | (DE-588)1045679631 |
author_facet | Bettini, Lorenzo |
author_role | aut |
author_sort | Bettini, Lorenzo |
author_variant | l b lb |
building | Verbundindex |
bvnumber | BV041795192 |
classification_rvk | ST 250 |
ctrlnum | (OCoLC)869811109 (DE-599)BVBBV041795192 |
discipline | Informatik |
edition | 1. publ. |
format | Book |
fullrecord | <?xml version="1.0" encoding="UTF-8"?><collection xmlns="http://www.loc.gov/MARC21/slim"><record><leader>00000nam a2200000zc 4500</leader><controlfield tag="001">BV041795192</controlfield><controlfield tag="003">DE-604</controlfield><controlfield tag="005">20160217</controlfield><controlfield tag="007">t</controlfield><controlfield tag="008">140414s2013 a||| |||| 00||| eng d</controlfield><datafield tag="020" ind1=" " ind2=" "><subfield code="a">9781782160304</subfield><subfield code="c">Print</subfield><subfield code="9">978-1-78216-030-4</subfield></datafield><datafield tag="035" ind1=" " ind2=" "><subfield code="a">(OCoLC)869811109</subfield></datafield><datafield tag="035" ind1=" " ind2=" "><subfield code="a">(DE-599)BVBBV041795192</subfield></datafield><datafield tag="040" ind1=" " ind2=" "><subfield code="a">DE-604</subfield><subfield code="b">ger</subfield><subfield code="e">aacr</subfield></datafield><datafield tag="041" ind1="0" ind2=" "><subfield code="a">eng</subfield></datafield><datafield tag="049" ind1=" " ind2=" "><subfield code="a">DE-523</subfield><subfield code="a">DE-858</subfield></datafield><datafield tag="084" ind1=" " ind2=" "><subfield code="a">ST 250</subfield><subfield code="0">(DE-625)143626:</subfield><subfield code="2">rvk</subfield></datafield><datafield tag="100" ind1="1" ind2=" "><subfield code="a">Bettini, Lorenzo</subfield><subfield code="e">Verfasser</subfield><subfield code="0">(DE-588)1045679631</subfield><subfield code="4">aut</subfield></datafield><datafield tag="245" ind1="1" ind2="0"><subfield code="a">Implementing domain-specific languages with Xtext and Xtend</subfield><subfield code="b">learn how to implement a DSL with Xtext and Xtend using easy-to-understand examples and best practices</subfield><subfield code="c">Lorenzo Bettini</subfield></datafield><datafield tag="250" ind1=" " ind2=" "><subfield code="a">1. publ.</subfield></datafield><datafield tag="264" ind1=" " ind2="1"><subfield code="a">Birmingham [u.a.]</subfield><subfield code="b">Packt Publishing</subfield><subfield code="c">2013</subfield></datafield><datafield tag="300" ind1=" " ind2=" "><subfield code="a">V, 324 S.</subfield><subfield code="b">Ill.</subfield></datafield><datafield tag="336" ind1=" " ind2=" "><subfield code="b">txt</subfield><subfield code="2">rdacontent</subfield></datafield><datafield tag="337" ind1=" " ind2=" "><subfield code="b">n</subfield><subfield code="2">rdamedia</subfield></datafield><datafield tag="338" ind1=" " ind2=" "><subfield code="b">nc</subfield><subfield code="2">rdacarrier</subfield></datafield><datafield tag="500" ind1=" " ind2=" "><subfield code="a">Includes bibliographical references and index</subfield></datafield><datafield tag="650" ind1=" " ind2="4"><subfield code="a">Software engineering</subfield></datafield><datafield tag="650" ind1=" " ind2="4"><subfield code="a">Domain-specific programming languages</subfield></datafield><datafield tag="650" ind1="0" ind2="7"><subfield code="a">Eclipse</subfield><subfield code="g">Programmierumgebung</subfield><subfield code="0">(DE-588)4768065-9</subfield><subfield code="2">gnd</subfield><subfield code="9">rswk-swf</subfield></datafield><datafield tag="650" ind1="0" ind2="7"><subfield code="a">Domänenspezifische Programmiersprache</subfield><subfield code="0">(DE-588)7585264-0</subfield><subfield code="2">gnd</subfield><subfield code="9">rswk-swf</subfield></datafield><datafield tag="689" ind1="0" ind2="0"><subfield code="a">Domänenspezifische Programmiersprache</subfield><subfield code="0">(DE-588)7585264-0</subfield><subfield code="D">s</subfield></datafield><datafield tag="689" ind1="0" ind2="1"><subfield code="a">Eclipse</subfield><subfield code="g">Programmierumgebung</subfield><subfield code="0">(DE-588)4768065-9</subfield><subfield code="D">s</subfield></datafield><datafield tag="689" ind1="0" ind2=" "><subfield code="5">DE-604</subfield></datafield><datafield tag="856" ind1="4" ind2="2"><subfield code="m">Digitalisierung UB Bayreuth - ADAM Catalogue Enrichment</subfield><subfield code="q">application/pdf</subfield><subfield code="u">http://bvbr.bib-bvb.de:8991/F?func=service&doc_library=BVB01&local_base=BVB01&doc_number=027240724&sequence=000002&line_number=0001&func_code=DB_RECORDS&service_type=MEDIA</subfield><subfield code="3">Inhaltsverzeichnis</subfield></datafield></record></collection> |
id | DE-604.BV041795192 |
illustrated | Illustrated |
indexdate | 2024-07-20T06:36:46Z |
institution | BVB |
isbn | 9781782160304 |
language | English |
oai_aleph_id | oai:aleph.bib-bvb.de:BVB01-027240724 |
oclc_num | 869811109 |
open_access_boolean | |
owner | DE-523 DE-858 |
owner_facet | DE-523 DE-858 |
physical | V, 324 S. Ill. |
publishDate | 2013 |
publishDateSearch | 2013 |
publishDateSort | 2013 |
publisher | Packt Publishing |
record_format | marc |
spelling | Bettini, Lorenzo Verfasser (DE-588)1045679631 aut Implementing domain-specific languages with Xtext and Xtend learn how to implement a DSL with Xtext and Xtend using easy-to-understand examples and best practices Lorenzo Bettini 1. publ. Birmingham [u.a.] Packt Publishing 2013 V, 324 S. Ill. txt rdacontent n rdamedia nc rdacarrier Includes bibliographical references and index Software engineering Domain-specific programming languages Eclipse Programmierumgebung (DE-588)4768065-9 gnd rswk-swf Domänenspezifische Programmiersprache (DE-588)7585264-0 gnd rswk-swf Domänenspezifische Programmiersprache (DE-588)7585264-0 s Eclipse Programmierumgebung (DE-588)4768065-9 s DE-604 Digitalisierung UB Bayreuth - ADAM Catalogue Enrichment application/pdf http://bvbr.bib-bvb.de:8991/F?func=service&doc_library=BVB01&local_base=BVB01&doc_number=027240724&sequence=000002&line_number=0001&func_code=DB_RECORDS&service_type=MEDIA Inhaltsverzeichnis |
spellingShingle | Bettini, Lorenzo Implementing domain-specific languages with Xtext and Xtend learn how to implement a DSL with Xtext and Xtend using easy-to-understand examples and best practices Software engineering Domain-specific programming languages Eclipse Programmierumgebung (DE-588)4768065-9 gnd Domänenspezifische Programmiersprache (DE-588)7585264-0 gnd |
subject_GND | (DE-588)4768065-9 (DE-588)7585264-0 |
title | Implementing domain-specific languages with Xtext and Xtend learn how to implement a DSL with Xtext and Xtend using easy-to-understand examples and best practices |
title_auth | Implementing domain-specific languages with Xtext and Xtend learn how to implement a DSL with Xtext and Xtend using easy-to-understand examples and best practices |
title_exact_search | Implementing domain-specific languages with Xtext and Xtend learn how to implement a DSL with Xtext and Xtend using easy-to-understand examples and best practices |
title_full | Implementing domain-specific languages with Xtext and Xtend learn how to implement a DSL with Xtext and Xtend using easy-to-understand examples and best practices Lorenzo Bettini |
title_fullStr | Implementing domain-specific languages with Xtext and Xtend learn how to implement a DSL with Xtext and Xtend using easy-to-understand examples and best practices Lorenzo Bettini |
title_full_unstemmed | Implementing domain-specific languages with Xtext and Xtend learn how to implement a DSL with Xtext and Xtend using easy-to-understand examples and best practices Lorenzo Bettini |
title_short | Implementing domain-specific languages with Xtext and Xtend |
title_sort | implementing domain specific languages with xtext and xtend learn how to implement a dsl with xtext and xtend using easy to understand examples and best practices |
title_sub | learn how to implement a DSL with Xtext and Xtend using easy-to-understand examples and best practices |
topic | Software engineering Domain-specific programming languages Eclipse Programmierumgebung (DE-588)4768065-9 gnd Domänenspezifische Programmiersprache (DE-588)7585264-0 gnd |
topic_facet | Software engineering Domain-specific programming languages Eclipse Programmierumgebung Domänenspezifische Programmiersprache |
url | http://bvbr.bib-bvb.de:8991/F?func=service&doc_library=BVB01&local_base=BVB01&doc_number=027240724&sequence=000002&line_number=0001&func_code=DB_RECORDS&service_type=MEDIA |
work_keys_str_mv | AT bettinilorenzo implementingdomainspecificlanguageswithxtextandxtendlearnhowtoimplementadslwithxtextandxtendusingeasytounderstandexamplesandbestpractices |