the spoofax language workbench (splash 2010)
TRANSCRIPT
![Page 1: The Spoofax Language Workbench (SPLASH 2010)](https://reader030.vdocuments.us/reader030/viewer/2022032514/55d519b1bb61eba6228b45ea/html5/thumbnails/1.jpg)
The SpoofaxLanguage Workbench
Eelco VisserLennart Kats
![Page 2: The Spoofax Language Workbench (SPLASH 2010)](https://reader030.vdocuments.us/reader030/viewer/2022032514/55d519b1bb61eba6228b45ea/html5/thumbnails/2.jpg)
Problem Software
implement
validate
Software Engineering
![Page 3: The Spoofax Language Workbench (SPLASH 2010)](https://reader030.vdocuments.us/reader030/viewer/2022032514/55d519b1bb61eba6228b45ea/html5/thumbnails/3.jpg)
ProblemDomain HLL Machine
High-level languages reduce problem/solution gap
![Page 4: The Spoofax Language Workbench (SPLASH 2010)](https://reader030.vdocuments.us/reader030/viewer/2022032514/55d519b1bb61eba6228b45ea/html5/thumbnails/4.jpg)
ProblemDomain HLL MachineDSL
DSLs further reduce gap between problem domain and implementation
Domain-Specific Languages
![Page 5: The Spoofax Language Workbench (SPLASH 2010)](https://reader030.vdocuments.us/reader030/viewer/2022032514/55d519b1bb61eba6228b45ea/html5/thumbnails/5.jpg)
Example DSL:
![Page 6: The Spoofax Language Workbench (SPLASH 2010)](https://reader030.vdocuments.us/reader030/viewer/2022032514/55d519b1bb61eba6228b45ea/html5/thumbnails/6.jpg)
paradigm: linguistic abstraction
![Page 7: The Spoofax Language Workbench (SPLASH 2010)](https://reader030.vdocuments.us/reader030/viewer/2022032514/55d519b1bb61eba6228b45ea/html5/thumbnails/7.jpg)
making languages should be cheap
![Page 8: The Spoofax Language Workbench (SPLASH 2010)](https://reader030.vdocuments.us/reader030/viewer/2022032514/55d519b1bb61eba6228b45ea/html5/thumbnails/8.jpg)
Compiler IngredientsSyntax definition
★ concrete syntax
★ abstract syntax
Static semantics
★ error checking
★ name resolution
★ type analysis
Model-to-model transformation
★ express constructs in core language
Code generation
★ translate core language models to implementation
parser generators
meta-programming
languages
meta-programming
libraries
templateengines
![Page 9: The Spoofax Language Workbench (SPLASH 2010)](https://reader030.vdocuments.us/reader030/viewer/2022032514/55d519b1bb61eba6228b45ea/html5/thumbnails/9.jpg)
![Page 10: The Spoofax Language Workbench (SPLASH 2010)](https://reader030.vdocuments.us/reader030/viewer/2022032514/55d519b1bb61eba6228b45ea/html5/thumbnails/10.jpg)
![Page 11: The Spoofax Language Workbench (SPLASH 2010)](https://reader030.vdocuments.us/reader030/viewer/2022032514/55d519b1bb61eba6228b45ea/html5/thumbnails/11.jpg)
![Page 12: The Spoofax Language Workbench (SPLASH 2010)](https://reader030.vdocuments.us/reader030/viewer/2022032514/55d519b1bb61eba6228b45ea/html5/thumbnails/12.jpg)
![Page 13: The Spoofax Language Workbench (SPLASH 2010)](https://reader030.vdocuments.us/reader030/viewer/2022032514/55d519b1bb61eba6228b45ea/html5/thumbnails/13.jpg)
![Page 14: The Spoofax Language Workbench (SPLASH 2010)](https://reader030.vdocuments.us/reader030/viewer/2022032514/55d519b1bb61eba6228b45ea/html5/thumbnails/14.jpg)
Editor Services
syntactic editor services
• syntax highlighting
• syntax checking
• outline view
• bracket matching, insertion
• automatic indentation
• syntax completion
• ...
semantic editor services
• error marking
• reference resolving
• hover help
• mark occurrences
• content completion
• refactoring
• ...
![Page 15: The Spoofax Language Workbench (SPLASH 2010)](https://reader030.vdocuments.us/reader030/viewer/2022032514/55d519b1bb61eba6228b45ea/html5/thumbnails/15.jpg)
Syntax definition
Static semantics
Model-to-model transformation
Code generation
Syntactic Editor Services
Semantic Editor Services
} Languageworkbenches[Fowler ’05]
how can we make these things cheaply?
![Page 16: The Spoofax Language Workbench (SPLASH 2010)](https://reader030.vdocuments.us/reader030/viewer/2022032514/55d519b1bb61eba6228b45ea/html5/thumbnails/16.jpg)
Language Workbench:
integrated environment for language definition
![Page 17: The Spoofax Language Workbench (SPLASH 2010)](https://reader030.vdocuments.us/reader030/viewer/2022032514/55d519b1bb61eba6228b45ea/html5/thumbnails/17.jpg)
Holy Grail of Software Language Definition
Automatically derive efficient, scalable, incremental compiler + usable IDE from high-level, declarative language
definition
![Page 18: The Spoofax Language Workbench (SPLASH 2010)](https://reader030.vdocuments.us/reader030/viewer/2022032514/55d519b1bb61eba6228b45ea/html5/thumbnails/18.jpg)
SDF
Stratego
Eclipse
IMP
![Page 19: The Spoofax Language Workbench (SPLASH 2010)](https://reader030.vdocuments.us/reader030/viewer/2022032514/55d519b1bb61eba6228b45ea/html5/thumbnails/19.jpg)
SDF
Stratego
Eclipse
IMP
Language Definition by
Transformation
![Page 20: The Spoofax Language Workbench (SPLASH 2010)](https://reader030.vdocuments.us/reader030/viewer/2022032514/55d519b1bb61eba6228b45ea/html5/thumbnails/20.jpg)
• <spoofax screenshot: lang def and lang use in Eclipse workspace>
![Page 21: The Spoofax Language Workbench (SPLASH 2010)](https://reader030.vdocuments.us/reader030/viewer/2022032514/55d519b1bb61eba6228b45ea/html5/thumbnails/21.jpg)
SDF:Declarative
Syntax Definition
![Page 22: The Spoofax Language Workbench (SPLASH 2010)](https://reader030.vdocuments.us/reader030/viewer/2022032514/55d519b1bb61eba6228b45ea/html5/thumbnails/22.jpg)
![Page 23: The Spoofax Language Workbench (SPLASH 2010)](https://reader030.vdocuments.us/reader030/viewer/2022032514/55d519b1bb61eba6228b45ea/html5/thumbnails/23.jpg)
A syntax definitionspecifies a transformation
from text to trees
![Page 24: The Spoofax Language Workbench (SPLASH 2010)](https://reader030.vdocuments.us/reader030/viewer/2022032514/55d519b1bb61eba6228b45ea/html5/thumbnails/24.jpg)
Syntax as Transformation
![Page 25: The Spoofax Language Workbench (SPLASH 2010)](https://reader030.vdocuments.us/reader030/viewer/2022032514/55d519b1bb61eba6228b45ea/html5/thumbnails/25.jpg)
Syntax as Transformation
![Page 26: The Spoofax Language Workbench (SPLASH 2010)](https://reader030.vdocuments.us/reader030/viewer/2022032514/55d519b1bb61eba6228b45ea/html5/thumbnails/26.jpg)
Syntax as Transformationtransform
![Page 27: The Spoofax Language Workbench (SPLASH 2010)](https://reader030.vdocuments.us/reader030/viewer/2022032514/55d519b1bb61eba6228b45ea/html5/thumbnails/27.jpg)
Syntax as Transformationtransform
![Page 28: The Spoofax Language Workbench (SPLASH 2010)](https://reader030.vdocuments.us/reader030/viewer/2022032514/55d519b1bb61eba6228b45ea/html5/thumbnails/28.jpg)
Syntax as Transformationtransform
![Page 29: The Spoofax Language Workbench (SPLASH 2010)](https://reader030.vdocuments.us/reader030/viewer/2022032514/55d519b1bb61eba6228b45ea/html5/thumbnails/29.jpg)
Semantics=
transformation
![Page 30: The Spoofax Language Workbench (SPLASH 2010)](https://reader030.vdocuments.us/reader030/viewer/2022032514/55d519b1bb61eba6228b45ea/html5/thumbnails/30.jpg)
Error Marking is a Transformation
transform
![Page 31: The Spoofax Language Workbench (SPLASH 2010)](https://reader030.vdocuments.us/reader030/viewer/2022032514/55d519b1bb61eba6228b45ea/html5/thumbnails/31.jpg)
transform
Error Marking is a Transformation
![Page 32: The Spoofax Language Workbench (SPLASH 2010)](https://reader030.vdocuments.us/reader030/viewer/2022032514/55d519b1bb61eba6228b45ea/html5/thumbnails/32.jpg)
transform
Error Marking is a Transformation
transform
![Page 33: The Spoofax Language Workbench (SPLASH 2010)](https://reader030.vdocuments.us/reader030/viewer/2022032514/55d519b1bb61eba6228b45ea/html5/thumbnails/33.jpg)
transform
Error Marking is a Transformation
transform
![Page 34: The Spoofax Language Workbench (SPLASH 2010)](https://reader030.vdocuments.us/reader030/viewer/2022032514/55d519b1bb61eba6228b45ea/html5/thumbnails/34.jpg)
transform
Error Marking is a Transformation
transform
![Page 35: The Spoofax Language Workbench (SPLASH 2010)](https://reader030.vdocuments.us/reader030/viewer/2022032514/55d519b1bb61eba6228b45ea/html5/thumbnails/35.jpg)
Outline View is aTransformation
transform
![Page 36: The Spoofax Language Workbench (SPLASH 2010)](https://reader030.vdocuments.us/reader030/viewer/2022032514/55d519b1bb61eba6228b45ea/html5/thumbnails/36.jpg)
Hyperlinking is aTransformation
tran
sfor
m
![Page 37: The Spoofax Language Workbench (SPLASH 2010)](https://reader030.vdocuments.us/reader030/viewer/2022032514/55d519b1bb61eba6228b45ea/html5/thumbnails/37.jpg)
Content Completion is aTransformation
tran
sform
tran
sfor
m
![Page 38: The Spoofax Language Workbench (SPLASH 2010)](https://reader030.vdocuments.us/reader030/viewer/2022032514/55d519b1bb61eba6228b45ea/html5/thumbnails/38.jpg)
Code Generation is aTransformation
transform
![Page 39: The Spoofax Language Workbench (SPLASH 2010)](https://reader030.vdocuments.us/reader030/viewer/2022032514/55d519b1bb61eba6228b45ea/html5/thumbnails/39.jpg)
Need for single, unified language specification:
• Editor services
• Model transformations
• Code generation
![Page 40: The Spoofax Language Workbench (SPLASH 2010)](https://reader030.vdocuments.us/reader030/viewer/2022032514/55d519b1bb61eba6228b45ea/html5/thumbnails/40.jpg)
Stratego:Rewriting Language
![Page 41: The Spoofax Language Workbench (SPLASH 2010)](https://reader030.vdocuments.us/reader030/viewer/2022032514/55d519b1bb61eba6228b45ea/html5/thumbnails/41.jpg)
Rewrite rules
Strategies
![Page 42: The Spoofax Language Workbench (SPLASH 2010)](https://reader030.vdocuments.us/reader030/viewer/2022032514/55d519b1bb61eba6228b45ea/html5/thumbnails/42.jpg)
Error Marking with Rewrite Rules
![Page 43: The Spoofax Language Workbench (SPLASH 2010)](https://reader030.vdocuments.us/reader030/viewer/2022032514/55d519b1bb61eba6228b45ea/html5/thumbnails/43.jpg)
Error Marking with Rewrite Rules
![Page 44: The Spoofax Language Workbench (SPLASH 2010)](https://reader030.vdocuments.us/reader030/viewer/2022032514/55d519b1bb61eba6228b45ea/html5/thumbnails/44.jpg)
transform
transformError Marking with Rewrite Rules
Origin tracking
![Page 45: The Spoofax Language Workbench (SPLASH 2010)](https://reader030.vdocuments.us/reader030/viewer/2022032514/55d519b1bb61eba6228b45ea/html5/thumbnails/45.jpg)
Analysis with Rewrite Rules
![Page 46: The Spoofax Language Workbench (SPLASH 2010)](https://reader030.vdocuments.us/reader030/viewer/2022032514/55d519b1bb61eba6228b45ea/html5/thumbnails/46.jpg)
Code Generation with Rewrite Rules
![Page 47: The Spoofax Language Workbench (SPLASH 2010)](https://reader030.vdocuments.us/reader030/viewer/2022032514/55d519b1bb61eba6228b45ea/html5/thumbnails/47.jpg)
Conclusion
• Co-evolution of language and IDE
• Pure and declarative syntax definition
• Language definition by transformation
• www.spoofax.org: papers, tour, download