SlideShare ist ein Scribd-Unternehmen logo
1 von 23
Downloaden Sie, um offline zu lesen
Re-engineering Eclipse MDT/OCL
for Xtext
Edward D Willink
MDT/OCL Project Lead
Eclipse Modeling Project
MODELS 2010
Workshop on OCL and Textual Modeling
3rd October 2010
3-Oct-2010 Re-Engineering Eclipse MDT/OCL for Xtext 2
Overview
● Eclipse MDT/OCL evolution to use Xtext
● Xtext impact
● Xtext/LPG performance comparison
● Xtext-mandated changes of approach
● Xtext-motivated revisions
3-Oct-2010 Re-Engineering Eclipse MDT/OCL for Xtext 3
MDT/OCL Evolution
Java API
OCL expressions
reuse by
QVT, MOFM2T
realisability
OCL spec
validation
OCL spec
useability
editors/evaluators
compliance
OCL spec
Custom Standard Library
Standard Library Editor
Essential OCL Editor
Complete OCL Editor
OCL in Ecore Editor
Missing OCL Meta-Models
Correct OCL Meta-Models
Complete OCL Meta-Models
Pivot Meta-Model
Evaluator
3-Oct-2010 Re-Engineering Eclipse MDT/OCL for Xtext 4
Adding Editors to MDT/OCL
● First attempt used basic SWT framework
● Second attempt used IMP
– re-uses existing LPG LALR parsers
– inherited realisation of editing idioms (highlighting)
● Third attempt uses Xtext
– requires migration to LL parser (ANTLR)
– inherited modeled generation of editing idioms
– modeled generation of syntactical constructs
● Contrast old LPG+IMP with new Xtext approach
3-Oct-2010 Re-Engineering Eclipse MDT/OCL for Xtext 5
Basic Parser Architecture
● Lexer: Text -> Tokens
● Parser: Tokens -> CST Nodes
● Analyzer: CST Nodes -> ASG Nodes
● Validator: ASG Nodes -> Diagnostics
[OCL is complex: CST very different to ASG]
3-Oct-2010 Re-Engineering Eclipse MDT/OCL for Xtext 6
LPG Parser with IMP Editor
● Manual provision of
● 2 lexer grammars and 1 parser grammar
● parser action code to populate CST
● Auto-generation of
● lexer, LALR parser
3-Oct-2010 Re-Engineering Eclipse MDT/OCL for Xtext 7
Xtext Parser and Editor Support
● Manual provision of
– combined parser grammar
– optional CST meta-model
● Auto-generation of
– lexer, LL parser, and analyzer framework
– editor with rich model-driven features
● Validation using CHECKS language or Java
3-Oct-2010 Re-Engineering Eclipse MDT/OCL for Xtext 8
LPG Action Code
● CollectionRange: 1..10
● CST access woven into code
– not checked till Java compiled/run
● Significant and repetitive actions
– fragile policies, casts, magic numbers
CollectionRangeCS ::= OclExpressionCS '..' OclExpressionCS
/.$BeginCode
CollectionRangeCS result = CSTFactory.eINSTANCE.createCollectionRangeCS();
result.setExpressionCS((OCLExpressionCS)getRhsSym(1));
result.setLastExpressionCS((OCLExpressionCS)getRhsSym(3));
setOffsets(result, (CSTNode)getRhsSym(1), (CSTNode)getRhsSym(3));
setResult(result);
$EndCode
./
3-Oct-2010 Re-Engineering Eclipse MDT/OCL for Xtext 9
Xtext 'Action Code'
CollectionRange: 1..10
● CST woven into grammar
● declarative: checkable / generateable
● No code
● In practice, two productions can be merged
CollectionLiteralPartCS ::= expressionCS=OclExpressionCS
('..' lastExpressionCS=OclExpressionCS)?
CollectionRangeCS ::= expressionCS=OclExpressionCS '..'
lastExpressionCS=OclExpressionCS
3-Oct-2010 Re-Engineering Eclipse MDT/OCL for Xtext 10
Cross-references
PathName A::B::c
● LPG - cross-reference is an unresolved String
● left recursion
● Xtext - cross-reference is a resolved EObject
● No code, CST Declarations woven into grammar
● EObject Reference Declarations woven into grammar
● =, += and ?= CS assignments
● (), *, +, ? BNF operators
pathNameCS ::= Identifier
/* Code not shown */
pathNameCS ::= pathNameCS '::' Identifier
/* Code not shown */
pathNameCS returns PathNameExpCS:
(namespace+=[Namespace|Identifier] '::')*
element=[NamedElement|Identifier];
3-Oct-2010 Re-Engineering Eclipse MDT/OCL for Xtext 11
Cross-reference impact
● Cross-reference requires analysis
● to locate the Namespace for an Identifier
● Xtext provides a default scope resolution
● OCL defines explicit Environment lookup
pathNameCS returns PathNameExpCS:
(namespace+=[Namespace|Identifier] '::')*
element=[NamedElement|Identifier];
3-Oct-2010 Re-Engineering Eclipse MDT/OCL for Xtext 12
Performance : Grammar Size
● Simple examples
● Xtext line count is three times smaller
● MDT/OCL 3.0.0 implementation comparisons
● Similar real application, similar editorial style
● Xtext at least 5 times smaller
– and it autogenerates an editor too
Line counts LPG 2.0.17 Xtext 1.0.0
Lexer grammars 251
395Parser grammar 1485
Templates 1000 library
Java support 1040+library library
Total ~2800 ~400
3-Oct-2010 Re-Engineering Eclipse MDT/OCL for Xtext 13
Performance : Parser Size
● MDT/OCL 3.0.0 implementation comparisons
● Similar grammar
● Xtext about 10 times larger
● different grammar generated for editor
– extra completion assist functionality
● another 1MB
class file sizes LPG 2.0.17 Xtext 1.0.0
Lexers and Parsers 221 kB 2370 kB
Semantic analysis excluded excluded
Total ~220 kB ~2400 kB
3-Oct-2010 Re-Engineering Eclipse MDT/OCL for Xtext 14
Performance : Speed
● 350 line Complete OCL example (Royal & Loyal)
● MDT/OCL 3.0.0 implementation comparisons
● Similar real application, same example
● Xtext about 11 times slower
Time in milliseconds LPG 2.0.17 Xtext 1.0.0
First parse 1800 4800
Files read for first parse 2 6
Average of 100 reparses 97 1114
Files read for reparse 1 1
3-Oct-2010 Re-Engineering Eclipse MDT/OCL for Xtext 15
Performance: Summary
● Xtext is 5 times smaller source size
● fundamental technology advance
● massive ergonomic gain
● Xtext is 10 times larger classes sizes
● Xtext is 11 times slower execution
● Xtext 1.0.0 is not perfect
– maybe better in Xtext 2.0
● use of ANTLR and LL is not fundamental
– maybe a conversion to LALR is appropriate
● size, at least, very sensitive to grammar approach
3-Oct-2010 Re-Engineering Eclipse MDT/OCL for Xtext 16
Left Recursion
● LALR uses left recursion extensively
● ANTLR can only right recurse, but in Xtext
● recursion replaced by repetition
multiplicativeCS ::= unaryCS
multiplicativeCS ::= multiplicativeCS '*' unaryCS
...
multiplicativeCS ::= multiplicativeCS '/' unaryCS
...
multiplicativeCS: unaryCS (('*'|'/') unaryCS)*;
3-Oct-2010 Re-Engineering Eclipse MDT/OCL for Xtext 17
Lookahead in OCL
a->b(c,d could be
a->b(c,d|e an IteratorExpCS
a->b(c,d,e an OperationCallExpCS
[iterator names (e.g. b) are not reserved/known]
● Difficult, inelegant to disambiguate with LALR(1)
– compile time integrity check
● Must use backtracking in LL
– Xtext hides any ANTLR checking
– use an LALR copy for checking
3-Oct-2010 Re-Engineering Eclipse MDT/OCL for Xtext 18
Flexible operation parsing 1
Concrete Syntax parsed as a larger language
ID ('.'|'->') ID '('
(expr (':' type)?
(',' expr (':' expr)?)*
(';' expr)*
('|' expr (',' expr)*)?
)?
')'
● a.b(c=5:d,e;f|g,h) is parsed successfully
● a semantic rather than syntactic error
3-Oct-2010 Re-Engineering Eclipse MDT/OCL for Xtext 19
Flexible operator parsing 2
OCL 2.0 and 2.2 (and QVT) change precedences
● different grammars
● one larger flexible grammar
infixOp ::= 'and'|'or'|'xor'|'implies'|'+'|'*'....
prefixOp ::= 'not'|'-'
expr ::= unary (infixOp unary)*
unary ::= (prefixOp)* atomic
all operators parsed with equal precedence
– 'standard' library defines precedence, associativity
– semantic analysis uses 'standard' library
● 5 fold reduction in ANTLR class sizes
– solves 65536 byte class size limit
3-Oct-2010 Re-Engineering Eclipse MDT/OCL for Xtext 20
Summary
● Xtext facilitates an IDE for Eclipse MDT/OCL
● Xtext does many things very well
● Xtext cannot emulate all traditional approaches
● Xtext seems to have a better way
● Xtext motivates a major rethink
3-Oct-2010 Re-Engineering Eclipse MDT/OCL for Xtext 21
Active OCL Participation
Open Source
Individual participation
Original code from IBM
maintained by IBM until 2009
(Christian Damus)
Intellectual Property checks
Eclipse/Modeling/MDT/OCL OMG OCL 2.3 RTF
Mariano Belaunde
(France Telecom)
Edward Willink (Thales part-time)
Adolfo SĂĄnchez-Barbudo Herrera (Open Canarias)
2 others IBM, NIST, SAP, Fujitsu
Borland, 88Solutions
lead
chair
Open Specification
Corporate participation
3-Oct-2010 Re-Engineering Eclipse MDT/OCL for Xtext 22
OCL Specification-driven
● Make OCL specification consumable
● useable complete lexer/parser grammar
● useable/accurate analysis/validation constraints
● Model-driven analyzer framework
● OCL-driven validation
3-Oct-2010 Re-Engineering Eclipse MDT/OCL for Xtext 23
OCL-driven validation
● Eclipse Helios adds Validation Delegate support
● OCL can be embedded in Ecore annotations
● OCL is then executed during model validation
– this works in Xtext
● Add a validation reason to Complete OCL
● Add OCL to Java code generation
● avoid performance penalties
context MyClass
inv UpperCaseName
(''' + name + '' is not uppercase in ' + toDiagnostic())
: name.toUpperCase() = name

Weitere Àhnliche Inhalte

Was ist angesagt?

Java.util.concurrent.concurrent hashmap
Java.util.concurrent.concurrent hashmapJava.util.concurrent.concurrent hashmap
Java.util.concurrent.concurrent hashmapSrinivasan Raghvan
 
Crossing the border with Qt: the i18n system
Crossing the border with Qt: the i18n systemCrossing the border with Qt: the i18n system
Crossing the border with Qt: the i18n systemDeveler S.r.l.
 
Modern Java Workshop
Modern Java WorkshopModern Java Workshop
Modern Java WorkshopSimon Ritter
 
Veriloggen.Stream: ăƒ‡ăƒŒă‚żăƒ•ăƒ­ăƒŒă‹ă‚‰ăƒăƒŒăƒ‰ă‚Šă‚§ă‚ąă‚’äœœă‚‹ïŒˆ2018ćčŽ3月3æ—„ é«˜äœćˆæˆć‹ăźäŒš 珏5曞 @東äșŹć·„æ„­ć€§ć­ŠïŒ‰
Veriloggen.Stream: ăƒ‡ăƒŒă‚żăƒ•ăƒ­ăƒŒă‹ă‚‰ăƒăƒŒăƒ‰ă‚Šă‚§ă‚ąă‚’äœœă‚‹ïŒˆ2018ćčŽ3月3æ—„ é«˜äœćˆæˆć‹ăźäŒš 珏5曞 @東äșŹć·„æ„­ć€§ć­ŠïŒ‰Veriloggen.Stream: ăƒ‡ăƒŒă‚żăƒ•ăƒ­ăƒŒă‹ă‚‰ăƒăƒŒăƒ‰ă‚Šă‚§ă‚ąă‚’äœœă‚‹ïŒˆ2018ćčŽ3月3æ—„ é«˜äœćˆæˆć‹ăźäŒš 珏5曞 @東äșŹć·„æ„­ć€§ć­ŠïŒ‰
Veriloggen.Stream: ăƒ‡ăƒŒă‚żăƒ•ăƒ­ăƒŒă‹ă‚‰ăƒăƒŒăƒ‰ă‚Šă‚§ă‚ąă‚’äœœă‚‹ïŒˆ2018ćčŽ3月3æ—„ é«˜äœćˆæˆć‹ăźäŒš 珏5曞 @東äșŹć·„æ„­ć€§ć­ŠïŒ‰Shinya Takamaeda-Y
 
Async await in C++
Async await in C++Async await in C++
Async await in C++cppfrug
 
Qt everywhere a c++ abstraction platform
Qt everywhere   a c++ abstraction platformQt everywhere   a c++ abstraction platform
Qt everywhere a c++ abstraction platformDeveler S.r.l.
 
Java 7 & 8
Java 7 & 8Java 7 & 8
Java 7 & 8Ken Coenen
 
Parallel Programming In Java
Parallel Programming In JavaParallel Programming In Java
Parallel Programming In JavaKnoldus Inc.
 
NIR on the Mesa i965 backend (FOSDEM 2016)
NIR on the Mesa i965 backend (FOSDEM 2016)NIR on the Mesa i965 backend (FOSDEM 2016)
NIR on the Mesa i965 backend (FOSDEM 2016)Igalia
 
Java Programming
Java ProgrammingJava Programming
Java ProgrammingSimon Ritter
 
Cilk - An Efficient Multithreaded Runtime System
Cilk - An Efficient Multithreaded Runtime SystemCilk - An Efficient Multithreaded Runtime System
Cilk - An Efficient Multithreaded Runtime SystemShareek Ahamed
 
Parallel R
Parallel RParallel R
Parallel RMatt Moores
 
S emb t13-freertos
S emb t13-freertosS emb t13-freertos
S emb t13-freertosJoĂŁo Moreira
 
Virtual platform
Virtual platformVirtual platform
Virtual platformsean chen
 
C++ Coroutines
C++ CoroutinesC++ Coroutines
C++ CoroutinesSumant Tambe
 
A Lightweight Instruction Scheduling Algorithm For Just In Time Compiler
A Lightweight Instruction Scheduling Algorithm For Just In Time CompilerA Lightweight Instruction Scheduling Algorithm For Just In Time Compiler
A Lightweight Instruction Scheduling Algorithm For Just In Time Compilerkeanumit
 

Was ist angesagt? (20)

Vlsi lab2
Vlsi lab2Vlsi lab2
Vlsi lab2
 
Java.util.concurrent.concurrent hashmap
Java.util.concurrent.concurrent hashmapJava.util.concurrent.concurrent hashmap
Java.util.concurrent.concurrent hashmap
 
Crossing the border with Qt: the i18n system
Crossing the border with Qt: the i18n systemCrossing the border with Qt: the i18n system
Crossing the border with Qt: the i18n system
 
Modern Java Workshop
Modern Java WorkshopModern Java Workshop
Modern Java Workshop
 
Go at uber
Go at uberGo at uber
Go at uber
 
Veriloggen.Stream: ăƒ‡ăƒŒă‚żăƒ•ăƒ­ăƒŒă‹ă‚‰ăƒăƒŒăƒ‰ă‚Šă‚§ă‚ąă‚’äœœă‚‹ïŒˆ2018ćčŽ3月3æ—„ é«˜äœćˆæˆć‹ăźäŒš 珏5曞 @東äșŹć·„æ„­ć€§ć­ŠïŒ‰
Veriloggen.Stream: ăƒ‡ăƒŒă‚żăƒ•ăƒ­ăƒŒă‹ă‚‰ăƒăƒŒăƒ‰ă‚Šă‚§ă‚ąă‚’äœœă‚‹ïŒˆ2018ćčŽ3月3æ—„ é«˜äœćˆæˆć‹ăźäŒš 珏5曞 @東äșŹć·„æ„­ć€§ć­ŠïŒ‰Veriloggen.Stream: ăƒ‡ăƒŒă‚żăƒ•ăƒ­ăƒŒă‹ă‚‰ăƒăƒŒăƒ‰ă‚Šă‚§ă‚ąă‚’äœœă‚‹ïŒˆ2018ćčŽ3月3æ—„ é«˜äœćˆæˆć‹ăźäŒš 珏5曞 @東äșŹć·„æ„­ć€§ć­ŠïŒ‰
Veriloggen.Stream: ăƒ‡ăƒŒă‚żăƒ•ăƒ­ăƒŒă‹ă‚‰ăƒăƒŒăƒ‰ă‚Šă‚§ă‚ąă‚’äœœă‚‹ïŒˆ2018ćčŽ3月3æ—„ é«˜äœćˆæˆć‹ăźäŒš 珏5曞 @東äșŹć·„æ„­ć€§ć­ŠïŒ‰
 
Async await in C++
Async await in C++Async await in C++
Async await in C++
 
Qt everywhere a c++ abstraction platform
Qt everywhere   a c++ abstraction platformQt everywhere   a c++ abstraction platform
Qt everywhere a c++ abstraction platform
 
Java 7 & 8
Java 7 & 8Java 7 & 8
Java 7 & 8
 
Parallel Programming In Java
Parallel Programming In JavaParallel Programming In Java
Parallel Programming In Java
 
Java 8 streams
Java 8 streams Java 8 streams
Java 8 streams
 
NIR on the Mesa i965 backend (FOSDEM 2016)
NIR on the Mesa i965 backend (FOSDEM 2016)NIR on the Mesa i965 backend (FOSDEM 2016)
NIR on the Mesa i965 backend (FOSDEM 2016)
 
Java Programming
Java ProgrammingJava Programming
Java Programming
 
Ijcet 06 08_003
Ijcet 06 08_003Ijcet 06 08_003
Ijcet 06 08_003
 
Cilk - An Efficient Multithreaded Runtime System
Cilk - An Efficient Multithreaded Runtime SystemCilk - An Efficient Multithreaded Runtime System
Cilk - An Efficient Multithreaded Runtime System
 
Parallel R
Parallel RParallel R
Parallel R
 
S emb t13-freertos
S emb t13-freertosS emb t13-freertos
S emb t13-freertos
 
Virtual platform
Virtual platformVirtual platform
Virtual platform
 
C++ Coroutines
C++ CoroutinesC++ Coroutines
C++ Coroutines
 
A Lightweight Instruction Scheduling Algorithm For Just In Time Compiler
A Lightweight Instruction Scheduling Algorithm For Just In Time CompilerA Lightweight Instruction Scheduling Algorithm For Just In Time Compiler
A Lightweight Instruction Scheduling Algorithm For Just In Time Compiler
 

Andere mochten auch

Frogfer Tutela
Frogfer TutelaFrogfer Tutela
Frogfer TutelaFerran Fisas
 
Lean, Green, and Clean: Environmental Practices in Collegiate Foodservice
Lean, Green, and Clean: Environmental Practices in Collegiate FoodserviceLean, Green, and Clean: Environmental Practices in Collegiate Foodservice
Lean, Green, and Clean: Environmental Practices in Collegiate FoodserviceNational Restaurant Association
 
Como gano dinero con factura mĂłvil
Como gano dinero con factura mĂłvilComo gano dinero con factura mĂłvil
Como gano dinero con factura mĂłvilGabriel Neuman
 
Sistemes Joc
Sistemes JocSistemes Joc
Sistemes Jocphidalg2
 
Technology’s Impact on the Future of Meeting Space — Will You Be Ready?
Technology’s Impact on the Future of Meeting Space — Will You Be Ready?Technology’s Impact on the Future of Meeting Space — Will You Be Ready?
Technology’s Impact on the Future of Meeting Space — Will You Be Ready?Social Tables
 
Press Release Prevenção e Segurança Rodoviåria
Press Release   Prevenção e Segurança RodoviåriaPress Release   Prevenção e Segurança Rodoviåria
Press Release Prevenção e Segurança Rodoviåriaguest257b5
 
Electroserv E482 leaflet
Electroserv  E482 leafletElectroserv  E482 leaflet
Electroserv E482 leafletJason McIntosh
 
CONVOCATORIA FLORENCIA ROCK 2015
CONVOCATORIA FLORENCIA ROCK 2015CONVOCATORIA FLORENCIA ROCK 2015
CONVOCATORIA FLORENCIA ROCK 2015Cristian Saenz Salas
 
Portfolio FlĂĄvio Medeiros
Portfolio FlĂĄvio MedeirosPortfolio FlĂĄvio Medeiros
Portfolio FlĂĄvio MedeirosDesigner Freelancer
 
Estudio sobre que quieren ser los niños españoles de mayores (por Adecco)
Estudio sobre que quieren ser los niños españoles de mayores (por Adecco)Estudio sobre que quieren ser los niños españoles de mayores (por Adecco)
Estudio sobre que quieren ser los niños españoles de mayores (por Adecco)Alfredo Vela Zancada
 
Khokhana Resettlement Planning
Khokhana Resettlement PlanningKhokhana Resettlement Planning
Khokhana Resettlement PlanningNishaj Kunwar
 
El rol del community manager en las organizaciones - Casos de Ă©xito en la emp...
El rol del community manager en las organizaciones - Casos de Ă©xito en la emp...El rol del community manager en las organizaciones - Casos de Ă©xito en la emp...
El rol del community manager en las organizaciones - Casos de Ă©xito en la emp...Santiago Bonet
 
HTML XHTML HTML5
HTML XHTML HTML5HTML XHTML HTML5
HTML XHTML HTML5timstone
 
Clase 2 educ secundaria
Clase 2 educ secundariaClase 2 educ secundaria
Clase 2 educ secundariaMarĂ­a Villena
 
Bitumen handling equipment 2014
Bitumen handling equipment 2014 Bitumen handling equipment 2014
Bitumen handling equipment 2014 globecore
 

Andere mochten auch (20)

Frogfer Tutela
Frogfer TutelaFrogfer Tutela
Frogfer Tutela
 
Lean, Green, and Clean: Environmental Practices in Collegiate Foodservice
Lean, Green, and Clean: Environmental Practices in Collegiate FoodserviceLean, Green, and Clean: Environmental Practices in Collegiate Foodservice
Lean, Green, and Clean: Environmental Practices in Collegiate Foodservice
 
12comp[1]
12comp[1]12comp[1]
12comp[1]
 
Como gano dinero con factura mĂłvil
Como gano dinero con factura mĂłvilComo gano dinero con factura mĂłvil
Como gano dinero con factura mĂłvil
 
Sistemes Joc
Sistemes JocSistemes Joc
Sistemes Joc
 
Technology’s Impact on the Future of Meeting Space — Will You Be Ready?
Technology’s Impact on the Future of Meeting Space — Will You Be Ready?Technology’s Impact on the Future of Meeting Space — Will You Be Ready?
Technology’s Impact on the Future of Meeting Space — Will You Be Ready?
 
45
4545
45
 
Press Release Prevenção e Segurança Rodoviåria
Press Release   Prevenção e Segurança RodoviåriaPress Release   Prevenção e Segurança Rodoviåria
Press Release Prevenção e Segurança Rodoviåria
 
Electroserv E482 leaflet
Electroserv  E482 leafletElectroserv  E482 leaflet
Electroserv E482 leaflet
 
CONVOCATORIA FLORENCIA ROCK 2015
CONVOCATORIA FLORENCIA ROCK 2015CONVOCATORIA FLORENCIA ROCK 2015
CONVOCATORIA FLORENCIA ROCK 2015
 
Portfolio FlĂĄvio Medeiros
Portfolio FlĂĄvio MedeirosPortfolio FlĂĄvio Medeiros
Portfolio FlĂĄvio Medeiros
 
Lat 2 voz pasiva
Lat 2 voz pasivaLat 2 voz pasiva
Lat 2 voz pasiva
 
LMRA
LMRALMRA
LMRA
 
Estudio sobre que quieren ser los niños españoles de mayores (por Adecco)
Estudio sobre que quieren ser los niños españoles de mayores (por Adecco)Estudio sobre que quieren ser los niños españoles de mayores (por Adecco)
Estudio sobre que quieren ser los niños españoles de mayores (por Adecco)
 
Khokhana Resettlement Planning
Khokhana Resettlement PlanningKhokhana Resettlement Planning
Khokhana Resettlement Planning
 
El rol del community manager en las organizaciones - Casos de Ă©xito en la emp...
El rol del community manager en las organizaciones - Casos de Ă©xito en la emp...El rol del community manager en las organizaciones - Casos de Ă©xito en la emp...
El rol del community manager en las organizaciones - Casos de Ă©xito en la emp...
 
HTML XHTML HTML5
HTML XHTML HTML5HTML XHTML HTML5
HTML XHTML HTML5
 
Clase 2 educ secundaria
Clase 2 educ secundariaClase 2 educ secundaria
Clase 2 educ secundaria
 
Bitumen handling equipment 2014
Bitumen handling equipment 2014 Bitumen handling equipment 2014
Bitumen handling equipment 2014
 
Integrated Information System for Construction Operations
Integrated Information System for Construction OperationsIntegrated Information System for Construction Operations
Integrated Information System for Construction Operations
 

Ähnlich wie Re-engineering Eclipse MDT/OCL for Xtext

Eclipse OCL Summary
Eclipse OCL SummaryEclipse OCL Summary
Eclipse OCL SummaryEdward Willink
 
Parallelization of Coupled Cluster Code with OpenMP
Parallelization of Coupled Cluster Code with OpenMPParallelization of Coupled Cluster Code with OpenMP
Parallelization of Coupled Cluster Code with OpenMPAnil Bohare
 
Open cl programming using python syntax
Open cl programming using python syntaxOpen cl programming using python syntax
Open cl programming using python syntaxcsandit
 
OpenCL programming using Python syntax
OpenCL programming using Python syntax OpenCL programming using Python syntax
OpenCL programming using Python syntax cscpconf
 
Kubernetes @ Squarespace (SRE Portland Meetup October 2017)
Kubernetes @ Squarespace (SRE Portland Meetup October 2017)Kubernetes @ Squarespace (SRE Portland Meetup October 2017)
Kubernetes @ Squarespace (SRE Portland Meetup October 2017)Kevin Lynch
 
Fast Insights to Optimized Vectorization and Memory Using Cache-aware Rooflin...
Fast Insights to Optimized Vectorization and Memory Using Cache-aware Rooflin...Fast Insights to Optimized Vectorization and Memory Using Cache-aware Rooflin...
Fast Insights to Optimized Vectorization and Memory Using Cache-aware Rooflin...IntelÂź Software
 
Cadence GenusTutorial------------ .pdf.pdf
Cadence GenusTutorial------------ .pdf.pdfCadence GenusTutorial------------ .pdf.pdf
Cadence GenusTutorial------------ .pdf.pdfSamHoney6
 
Kubernetes Introduction
Kubernetes IntroductionKubernetes Introduction
Kubernetes IntroductionMiloĆĄ Zubal
 
Introduction to OpenSees by Frank McKenna
Introduction to OpenSees by Frank McKennaIntroduction to OpenSees by Frank McKenna
Introduction to OpenSees by Frank McKennaopenseesdays
 
Coding convention
Coding conventionCoding convention
Coding conventionKhoa Nguyen
 
Lexically constrained decoding for sequence generation using grid beam search
Lexically constrained decoding for sequence generation using grid beam searchLexically constrained decoding for sequence generation using grid beam search
Lexically constrained decoding for sequence generation using grid beam searchSatoru Katsumata
 
Correctness and Performance of Apache Spark SQL with Bogdan Ghit and Nicolas ...
Correctness and Performance of Apache Spark SQL with Bogdan Ghit and Nicolas ...Correctness and Performance of Apache Spark SQL with Bogdan Ghit and Nicolas ...
Correctness and Performance of Apache Spark SQL with Bogdan Ghit and Nicolas ...Databricks
 
Correctness and Performance of Apache Spark SQL
Correctness and Performance of Apache Spark SQLCorrectness and Performance of Apache Spark SQL
Correctness and Performance of Apache Spark SQLNicolas Poggi
 
Kubernetes @ Squarespace: Kubernetes in the Datacenter
Kubernetes @ Squarespace: Kubernetes in the DatacenterKubernetes @ Squarespace: Kubernetes in the Datacenter
Kubernetes @ Squarespace: Kubernetes in the DatacenterKevin Lynch
 
Scaling an ELK stack at bol.com
Scaling an ELK stack at bol.comScaling an ELK stack at bol.com
Scaling an ELK stack at bol.comRenzo TomĂ 
 
A Domain-Specific Embedded Language for Programming Parallel Architectures.
A Domain-Specific Embedded Language for Programming Parallel Architectures.A Domain-Specific Embedded Language for Programming Parallel Architectures.
A Domain-Specific Embedded Language for Programming Parallel Architectures.Jason Hearne-McGuiness
 
DConf 2016: Keynote by Walter Bright
DConf 2016: Keynote by Walter Bright DConf 2016: Keynote by Walter Bright
DConf 2016: Keynote by Walter Bright Andrei Alexandrescu
 
How to create a high performance excel engine in java script
How to create a high performance excel engine in java scriptHow to create a high performance excel engine in java script
How to create a high performance excel engine in java scriptViktor Turskyi
 
Return of c++
Return of c++Return of c++
Return of c++Yongwei Wu
 

Ähnlich wie Re-engineering Eclipse MDT/OCL for Xtext (20)

Eclipse OCL Summary
Eclipse OCL SummaryEclipse OCL Summary
Eclipse OCL Summary
 
Parallelization of Coupled Cluster Code with OpenMP
Parallelization of Coupled Cluster Code with OpenMPParallelization of Coupled Cluster Code with OpenMP
Parallelization of Coupled Cluster Code with OpenMP
 
Open cl programming using python syntax
Open cl programming using python syntaxOpen cl programming using python syntax
Open cl programming using python syntax
 
OpenCL programming using Python syntax
OpenCL programming using Python syntax OpenCL programming using Python syntax
OpenCL programming using Python syntax
 
Kubernetes @ Squarespace (SRE Portland Meetup October 2017)
Kubernetes @ Squarespace (SRE Portland Meetup October 2017)Kubernetes @ Squarespace (SRE Portland Meetup October 2017)
Kubernetes @ Squarespace (SRE Portland Meetup October 2017)
 
Fast Insights to Optimized Vectorization and Memory Using Cache-aware Rooflin...
Fast Insights to Optimized Vectorization and Memory Using Cache-aware Rooflin...Fast Insights to Optimized Vectorization and Memory Using Cache-aware Rooflin...
Fast Insights to Optimized Vectorization and Memory Using Cache-aware Rooflin...
 
Cadence GenusTutorial------------ .pdf.pdf
Cadence GenusTutorial------------ .pdf.pdfCadence GenusTutorial------------ .pdf.pdf
Cadence GenusTutorial------------ .pdf.pdf
 
Kubernetes Introduction
Kubernetes IntroductionKubernetes Introduction
Kubernetes Introduction
 
Introduction to OpenSees by Frank McKenna
Introduction to OpenSees by Frank McKennaIntroduction to OpenSees by Frank McKenna
Introduction to OpenSees by Frank McKenna
 
(not= DSL macros)
(not= DSL macros)(not= DSL macros)
(not= DSL macros)
 
Coding convention
Coding conventionCoding convention
Coding convention
 
Lexically constrained decoding for sequence generation using grid beam search
Lexically constrained decoding for sequence generation using grid beam searchLexically constrained decoding for sequence generation using grid beam search
Lexically constrained decoding for sequence generation using grid beam search
 
Correctness and Performance of Apache Spark SQL with Bogdan Ghit and Nicolas ...
Correctness and Performance of Apache Spark SQL with Bogdan Ghit and Nicolas ...Correctness and Performance of Apache Spark SQL with Bogdan Ghit and Nicolas ...
Correctness and Performance of Apache Spark SQL with Bogdan Ghit and Nicolas ...
 
Correctness and Performance of Apache Spark SQL
Correctness and Performance of Apache Spark SQLCorrectness and Performance of Apache Spark SQL
Correctness and Performance of Apache Spark SQL
 
Kubernetes @ Squarespace: Kubernetes in the Datacenter
Kubernetes @ Squarespace: Kubernetes in the DatacenterKubernetes @ Squarespace: Kubernetes in the Datacenter
Kubernetes @ Squarespace: Kubernetes in the Datacenter
 
Scaling an ELK stack at bol.com
Scaling an ELK stack at bol.comScaling an ELK stack at bol.com
Scaling an ELK stack at bol.com
 
A Domain-Specific Embedded Language for Programming Parallel Architectures.
A Domain-Specific Embedded Language for Programming Parallel Architectures.A Domain-Specific Embedded Language for Programming Parallel Architectures.
A Domain-Specific Embedded Language for Programming Parallel Architectures.
 
DConf 2016: Keynote by Walter Bright
DConf 2016: Keynote by Walter Bright DConf 2016: Keynote by Walter Bright
DConf 2016: Keynote by Walter Bright
 
How to create a high performance excel engine in java script
How to create a high performance excel engine in java scriptHow to create a high performance excel engine in java script
How to create a high performance excel engine in java script
 
Return of c++
Return of c++Return of c++
Return of c++
 

Mehr von Edward Willink

OCL Visualization A Reality Check
OCL Visualization A Reality CheckOCL Visualization A Reality Check
OCL Visualization A Reality CheckEdward Willink
 
OCL 2019 Keynote Retrospective and Prospective
OCL 2019 Keynote Retrospective and ProspectiveOCL 2019 Keynote Retrospective and Prospective
OCL 2019 Keynote Retrospective and ProspectiveEdward Willink
 
A text model - Use your favourite M2M for M2T
A text model - Use your favourite M2M for M2TA text model - Use your favourite M2M for M2T
A text model - Use your favourite M2M for M2TEdward Willink
 
Commutative Short Circuit Operators
Commutative Short Circuit OperatorsCommutative Short Circuit Operators
Commutative Short Circuit OperatorsEdward Willink
 
Deterministic Lazy Mutable OCL Collections
Deterministic Lazy Mutable OCL CollectionsDeterministic Lazy Mutable OCL Collections
Deterministic Lazy Mutable OCL CollectionsEdward Willink
 
The Micromapping Model of Computation
The Micromapping Model of ComputationThe Micromapping Model of Computation
The Micromapping Model of ComputationEdward Willink
 
Optimized declarative transformation First Eclipse QVTc results
Optimized declarative transformation First Eclipse QVTc resultsOptimized declarative transformation First Eclipse QVTc results
Optimized declarative transformation First Eclipse QVTc resultsEdward Willink
 
Local Optimizations in Eclipse QVTc and QVTr using the Micro-Mapping Model of...
Local Optimizations in Eclipse QVTc and QVTr using the Micro-Mapping Model of...Local Optimizations in Eclipse QVTc and QVTr using the Micro-Mapping Model of...
Local Optimizations in Eclipse QVTc and QVTr using the Micro-Mapping Model of...Edward Willink
 
The Importance of Opposites
The Importance of OppositesThe Importance of Opposites
The Importance of OppositesEdward Willink
 
OCL Specification Status
OCL Specification StatusOCL Specification Status
OCL Specification StatusEdward Willink
 
The OCLforUML Profile
The OCLforUML ProfileThe OCLforUML Profile
The OCLforUML ProfileEdward Willink
 
At Last an OCL Debugger
At Last an OCL DebuggerAt Last an OCL Debugger
At Last an OCL DebuggerEdward Willink
 
QVT Traceability: What does it really mean?
QVT Traceability: What does it really mean?QVT Traceability: What does it really mean?
QVT Traceability: What does it really mean?Edward Willink
 
Safe navigation in OCL
Safe navigation in OCLSafe navigation in OCL
Safe navigation in OCLEdward Willink
 
OCL 2.4. (... 2.5)
OCL 2.4. (... 2.5)OCL 2.4. (... 2.5)
OCL 2.4. (... 2.5)Edward Willink
 
Embedded OCL Integration and Debugging
Embedded OCL Integration and DebuggingEmbedded OCL Integration and Debugging
Embedded OCL Integration and DebuggingEdward Willink
 
OCL Integration and Code Generation
OCL Integration and Code GenerationOCL Integration and Code Generation
OCL Integration and Code GenerationEdward Willink
 

Mehr von Edward Willink (20)

An OCL Map Type
An OCL Map TypeAn OCL Map Type
An OCL Map Type
 
OCL Visualization A Reality Check
OCL Visualization A Reality CheckOCL Visualization A Reality Check
OCL Visualization A Reality Check
 
OCL 2019 Keynote Retrospective and Prospective
OCL 2019 Keynote Retrospective and ProspectiveOCL 2019 Keynote Retrospective and Prospective
OCL 2019 Keynote Retrospective and Prospective
 
A text model - Use your favourite M2M for M2T
A text model - Use your favourite M2M for M2TA text model - Use your favourite M2M for M2T
A text model - Use your favourite M2M for M2T
 
Shadow Objects
Shadow ObjectsShadow Objects
Shadow Objects
 
Commutative Short Circuit Operators
Commutative Short Circuit OperatorsCommutative Short Circuit Operators
Commutative Short Circuit Operators
 
Deterministic Lazy Mutable OCL Collections
Deterministic Lazy Mutable OCL CollectionsDeterministic Lazy Mutable OCL Collections
Deterministic Lazy Mutable OCL Collections
 
The Micromapping Model of Computation
The Micromapping Model of ComputationThe Micromapping Model of Computation
The Micromapping Model of Computation
 
Optimized declarative transformation First Eclipse QVTc results
Optimized declarative transformation First Eclipse QVTc resultsOptimized declarative transformation First Eclipse QVTc results
Optimized declarative transformation First Eclipse QVTc results
 
Local Optimizations in Eclipse QVTc and QVTr using the Micro-Mapping Model of...
Local Optimizations in Eclipse QVTc and QVTr using the Micro-Mapping Model of...Local Optimizations in Eclipse QVTc and QVTr using the Micro-Mapping Model of...
Local Optimizations in Eclipse QVTc and QVTr using the Micro-Mapping Model of...
 
The Importance of Opposites
The Importance of OppositesThe Importance of Opposites
The Importance of Opposites
 
OCL Specification Status
OCL Specification StatusOCL Specification Status
OCL Specification Status
 
The OCLforUML Profile
The OCLforUML ProfileThe OCLforUML Profile
The OCLforUML Profile
 
At Last an OCL Debugger
At Last an OCL DebuggerAt Last an OCL Debugger
At Last an OCL Debugger
 
QVT Traceability: What does it really mean?
QVT Traceability: What does it really mean?QVT Traceability: What does it really mean?
QVT Traceability: What does it really mean?
 
Safe navigation in OCL
Safe navigation in OCLSafe navigation in OCL
Safe navigation in OCL
 
OCL 2.4. (... 2.5)
OCL 2.4. (... 2.5)OCL 2.4. (... 2.5)
OCL 2.4. (... 2.5)
 
Embedded OCL Integration and Debugging
Embedded OCL Integration and DebuggingEmbedded OCL Integration and Debugging
Embedded OCL Integration and Debugging
 
OCL 2.5 plans
OCL 2.5 plansOCL 2.5 plans
OCL 2.5 plans
 
OCL Integration and Code Generation
OCL Integration and Code GenerationOCL Integration and Code Generation
OCL Integration and Code Generation
 

KĂŒrzlich hochgeladen

Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...apidays
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDropbox
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...Zilliz
 
Mcleodganj Call Girls đŸ„° 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls đŸ„° 8617370543 Service Offer VIP Hot ModelMcleodganj Call Girls đŸ„° 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls đŸ„° 8617370543 Service Offer VIP Hot ModelDeepika Singh
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsNanddeep Nachan
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProduct Anonymous
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Jeffrey Haguewood
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWERMadyBayot
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyKhushali Kathiriya
 
Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Zilliz
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FMESafe Software
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdfSandro Moreira
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century educationjfdjdjcjdnsjd
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAndrey Devyatkin
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...apidays
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamUiPathCommunity
 

KĂŒrzlich hochgeladen (20)

Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
Mcleodganj Call Girls đŸ„° 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls đŸ„° 8617370543 Service Offer VIP Hot ModelMcleodganj Call Girls đŸ„° 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls đŸ„° 8617370543 Service Offer VIP Hot Model
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
 

Re-engineering Eclipse MDT/OCL for Xtext

  • 1. Re-engineering Eclipse MDT/OCL for Xtext Edward D Willink MDT/OCL Project Lead Eclipse Modeling Project MODELS 2010 Workshop on OCL and Textual Modeling 3rd October 2010
  • 2. 3-Oct-2010 Re-Engineering Eclipse MDT/OCL for Xtext 2 Overview ● Eclipse MDT/OCL evolution to use Xtext ● Xtext impact ● Xtext/LPG performance comparison ● Xtext-mandated changes of approach ● Xtext-motivated revisions
  • 3. 3-Oct-2010 Re-Engineering Eclipse MDT/OCL for Xtext 3 MDT/OCL Evolution Java API OCL expressions reuse by QVT, MOFM2T realisability OCL spec validation OCL spec useability editors/evaluators compliance OCL spec Custom Standard Library Standard Library Editor Essential OCL Editor Complete OCL Editor OCL in Ecore Editor Missing OCL Meta-Models Correct OCL Meta-Models Complete OCL Meta-Models Pivot Meta-Model Evaluator
  • 4. 3-Oct-2010 Re-Engineering Eclipse MDT/OCL for Xtext 4 Adding Editors to MDT/OCL ● First attempt used basic SWT framework ● Second attempt used IMP – re-uses existing LPG LALR parsers – inherited realisation of editing idioms (highlighting) ● Third attempt uses Xtext – requires migration to LL parser (ANTLR) – inherited modeled generation of editing idioms – modeled generation of syntactical constructs ● Contrast old LPG+IMP with new Xtext approach
  • 5. 3-Oct-2010 Re-Engineering Eclipse MDT/OCL for Xtext 5 Basic Parser Architecture ● Lexer: Text -> Tokens ● Parser: Tokens -> CST Nodes ● Analyzer: CST Nodes -> ASG Nodes ● Validator: ASG Nodes -> Diagnostics [OCL is complex: CST very different to ASG]
  • 6. 3-Oct-2010 Re-Engineering Eclipse MDT/OCL for Xtext 6 LPG Parser with IMP Editor ● Manual provision of ● 2 lexer grammars and 1 parser grammar ● parser action code to populate CST ● Auto-generation of ● lexer, LALR parser
  • 7. 3-Oct-2010 Re-Engineering Eclipse MDT/OCL for Xtext 7 Xtext Parser and Editor Support ● Manual provision of – combined parser grammar – optional CST meta-model ● Auto-generation of – lexer, LL parser, and analyzer framework – editor with rich model-driven features ● Validation using CHECKS language or Java
  • 8. 3-Oct-2010 Re-Engineering Eclipse MDT/OCL for Xtext 8 LPG Action Code ● CollectionRange: 1..10 ● CST access woven into code – not checked till Java compiled/run ● Significant and repetitive actions – fragile policies, casts, magic numbers CollectionRangeCS ::= OclExpressionCS '..' OclExpressionCS /.$BeginCode CollectionRangeCS result = CSTFactory.eINSTANCE.createCollectionRangeCS(); result.setExpressionCS((OCLExpressionCS)getRhsSym(1)); result.setLastExpressionCS((OCLExpressionCS)getRhsSym(3)); setOffsets(result, (CSTNode)getRhsSym(1), (CSTNode)getRhsSym(3)); setResult(result); $EndCode ./
  • 9. 3-Oct-2010 Re-Engineering Eclipse MDT/OCL for Xtext 9 Xtext 'Action Code' CollectionRange: 1..10 ● CST woven into grammar ● declarative: checkable / generateable ● No code ● In practice, two productions can be merged CollectionLiteralPartCS ::= expressionCS=OclExpressionCS ('..' lastExpressionCS=OclExpressionCS)? CollectionRangeCS ::= expressionCS=OclExpressionCS '..' lastExpressionCS=OclExpressionCS
  • 10. 3-Oct-2010 Re-Engineering Eclipse MDT/OCL for Xtext 10 Cross-references PathName A::B::c ● LPG - cross-reference is an unresolved String ● left recursion ● Xtext - cross-reference is a resolved EObject ● No code, CST Declarations woven into grammar ● EObject Reference Declarations woven into grammar ● =, += and ?= CS assignments ● (), *, +, ? BNF operators pathNameCS ::= Identifier /* Code not shown */ pathNameCS ::= pathNameCS '::' Identifier /* Code not shown */ pathNameCS returns PathNameExpCS: (namespace+=[Namespace|Identifier] '::')* element=[NamedElement|Identifier];
  • 11. 3-Oct-2010 Re-Engineering Eclipse MDT/OCL for Xtext 11 Cross-reference impact ● Cross-reference requires analysis ● to locate the Namespace for an Identifier ● Xtext provides a default scope resolution ● OCL defines explicit Environment lookup pathNameCS returns PathNameExpCS: (namespace+=[Namespace|Identifier] '::')* element=[NamedElement|Identifier];
  • 12. 3-Oct-2010 Re-Engineering Eclipse MDT/OCL for Xtext 12 Performance : Grammar Size ● Simple examples ● Xtext line count is three times smaller ● MDT/OCL 3.0.0 implementation comparisons ● Similar real application, similar editorial style ● Xtext at least 5 times smaller – and it autogenerates an editor too Line counts LPG 2.0.17 Xtext 1.0.0 Lexer grammars 251 395Parser grammar 1485 Templates 1000 library Java support 1040+library library Total ~2800 ~400
  • 13. 3-Oct-2010 Re-Engineering Eclipse MDT/OCL for Xtext 13 Performance : Parser Size ● MDT/OCL 3.0.0 implementation comparisons ● Similar grammar ● Xtext about 10 times larger ● different grammar generated for editor – extra completion assist functionality ● another 1MB class file sizes LPG 2.0.17 Xtext 1.0.0 Lexers and Parsers 221 kB 2370 kB Semantic analysis excluded excluded Total ~220 kB ~2400 kB
  • 14. 3-Oct-2010 Re-Engineering Eclipse MDT/OCL for Xtext 14 Performance : Speed ● 350 line Complete OCL example (Royal & Loyal) ● MDT/OCL 3.0.0 implementation comparisons ● Similar real application, same example ● Xtext about 11 times slower Time in milliseconds LPG 2.0.17 Xtext 1.0.0 First parse 1800 4800 Files read for first parse 2 6 Average of 100 reparses 97 1114 Files read for reparse 1 1
  • 15. 3-Oct-2010 Re-Engineering Eclipse MDT/OCL for Xtext 15 Performance: Summary ● Xtext is 5 times smaller source size ● fundamental technology advance ● massive ergonomic gain ● Xtext is 10 times larger classes sizes ● Xtext is 11 times slower execution ● Xtext 1.0.0 is not perfect – maybe better in Xtext 2.0 ● use of ANTLR and LL is not fundamental – maybe a conversion to LALR is appropriate ● size, at least, very sensitive to grammar approach
  • 16. 3-Oct-2010 Re-Engineering Eclipse MDT/OCL for Xtext 16 Left Recursion ● LALR uses left recursion extensively ● ANTLR can only right recurse, but in Xtext ● recursion replaced by repetition multiplicativeCS ::= unaryCS multiplicativeCS ::= multiplicativeCS '*' unaryCS ... multiplicativeCS ::= multiplicativeCS '/' unaryCS ... multiplicativeCS: unaryCS (('*'|'/') unaryCS)*;
  • 17. 3-Oct-2010 Re-Engineering Eclipse MDT/OCL for Xtext 17 Lookahead in OCL a->b(c,d could be a->b(c,d|e an IteratorExpCS a->b(c,d,e an OperationCallExpCS [iterator names (e.g. b) are not reserved/known] ● Difficult, inelegant to disambiguate with LALR(1) – compile time integrity check ● Must use backtracking in LL – Xtext hides any ANTLR checking – use an LALR copy for checking
  • 18. 3-Oct-2010 Re-Engineering Eclipse MDT/OCL for Xtext 18 Flexible operation parsing 1 Concrete Syntax parsed as a larger language ID ('.'|'->') ID '(' (expr (':' type)? (',' expr (':' expr)?)* (';' expr)* ('|' expr (',' expr)*)? )? ')' ● a.b(c=5:d,e;f|g,h) is parsed successfully ● a semantic rather than syntactic error
  • 19. 3-Oct-2010 Re-Engineering Eclipse MDT/OCL for Xtext 19 Flexible operator parsing 2 OCL 2.0 and 2.2 (and QVT) change precedences ● different grammars ● one larger flexible grammar infixOp ::= 'and'|'or'|'xor'|'implies'|'+'|'*'.... prefixOp ::= 'not'|'-' expr ::= unary (infixOp unary)* unary ::= (prefixOp)* atomic all operators parsed with equal precedence – 'standard' library defines precedence, associativity – semantic analysis uses 'standard' library ● 5 fold reduction in ANTLR class sizes – solves 65536 byte class size limit
  • 20. 3-Oct-2010 Re-Engineering Eclipse MDT/OCL for Xtext 20 Summary ● Xtext facilitates an IDE for Eclipse MDT/OCL ● Xtext does many things very well ● Xtext cannot emulate all traditional approaches ● Xtext seems to have a better way ● Xtext motivates a major rethink
  • 21. 3-Oct-2010 Re-Engineering Eclipse MDT/OCL for Xtext 21 Active OCL Participation Open Source Individual participation Original code from IBM maintained by IBM until 2009 (Christian Damus) Intellectual Property checks Eclipse/Modeling/MDT/OCL OMG OCL 2.3 RTF Mariano Belaunde (France Telecom) Edward Willink (Thales part-time) Adolfo SĂĄnchez-Barbudo Herrera (Open Canarias) 2 others IBM, NIST, SAP, Fujitsu Borland, 88Solutions lead chair Open Specification Corporate participation
  • 22. 3-Oct-2010 Re-Engineering Eclipse MDT/OCL for Xtext 22 OCL Specification-driven ● Make OCL specification consumable ● useable complete lexer/parser grammar ● useable/accurate analysis/validation constraints ● Model-driven analyzer framework ● OCL-driven validation
  • 23. 3-Oct-2010 Re-Engineering Eclipse MDT/OCL for Xtext 23 OCL-driven validation ● Eclipse Helios adds Validation Delegate support ● OCL can be embedded in Ecore annotations ● OCL is then executed during model validation – this works in Xtext ● Add a validation reason to Complete OCL ● Add OCL to Java code generation ● avoid performance penalties context MyClass inv UpperCaseName (''' + name + '' is not uppercase in ' + toDiagnostic()) : name.toUpperCase() = name