Demanding First-Class Equality for Domain Specific Aspect Languages - - PowerPoint PPT Presentation

demanding first class equality for domain specific aspect
SMART_READER_LITE
LIVE PREVIEW

Demanding First-Class Equality for Domain Specific Aspect Languages - - PowerPoint PPT Presentation

Demanding First-Class Equality for Domain Specific Aspect Languages Arik Hadas Dept. of Mathematics and Computer Science The Open University of Israel Joint Work With: David H. Lorenz Domain Specific Aspect Languages COOL RIDL KALA DSALs


slide-1
SLIDE 1

Arik Hadas

  • Dept. of Mathematics and Computer Science

The Open University of Israel

Joint Work With:

David H. Lorenz

Demanding First-Class Equality for Domain Specific Aspect Languages

slide-2
SLIDE 2

Domain Specific Aspect Languages DSLs DSALs AOP

KALA COOL RIDL AspectGrid Racer AO4SQL

slide-3
SLIDE 3

DSALs are Second-class

  • Second-class DSLs

– Not as easy to develop and to use

  • Second-class AOP languages

– Incompatible with AOP tools

slide-4
SLIDE 4

Background

Language workbenches: The killer-app for domain specific languages

abc: an extensible AspectJ compiler 2005 DSAL DSL

slide-5
SLIDE 5

Background

Language workbenches: The killer-app for domain specific languages

abc: an extensible AspectJ compiler DSAL DSL 2005

slide-6
SLIDE 6

Background

Language workbenches: The killer-app for domain specific languages

Language workbenches (LW)

– xtext, MPS, Spoofax

AOP composition frameworks (CF)

– Reflex, XAspects,

AWESOME

abc: an extensible AspectJ compiler Since 2005 DSAL DSL 2005

slide-7
SLIDE 7

Background

Language workbenches: The killer-app for domain specific languages

Language workbenches (LW)

– xtext, MPS, Spoofax

AOP composition frameworks (CF)

– Reflex, XAspects,

AWESOME

abc: an extensible AspectJ compiler Since 2005 DSAL DSL 2005

slide-8
SLIDE 8

Background

Language workbenches: The killer-app for domain specific languages

Language workbenches (LW)

– xtext, MPS, Spoofax

AOP composition frameworks (CF)

– Reflex, XAspects,

AWESOME

abc: an extensible AspectJ compiler Since 2005 DSAL DSL But no workbench solution for DSALs 2005

slide-9
SLIDE 9

Language Workbench (LW)

Language Workbench Language Workbench javac javac

DSL Code Java Bytecode

slide-10
SLIDE 10

Language Workbench (LW)

Language Workbench Language Workbench javac javac

DSL Code Java Bytecode

slide-11
SLIDE 11

Using LW for DSAL

Language Workbench Language Workbench javac javac

Java Bytecode

No Aspects

DSL Code DSAL Code

slide-12
SLIDE 12

Using LW for DSAL

Language Workbench Language Workbench javac javac

Java Bytecode

No Aspects

DSL Code DSAL Code

slide-13
SLIDE 13

LW for AspectJ

Language Workbench Language Workbench

DSAL Code Java AspectJ Bytecode Woven Bytecode javac ajc

No Multiple DSALs

slide-14
SLIDE 14

DSAL Complexity

  • Unlike DSL, DSAL tackles crosscutting

concerns

DSLs DSALs

slide-15
SLIDE 15

Looking for a DSAL Workbench

Language Workbench AOP Composition Framework

Tools for creation & usage of languages

 

Defining weaving semantics needed for DSALs

 

slide-16
SLIDE 16

Looking for a DSAL Workbench

Language Workbench AOP Composition Framework

Tools for creation & usage of languages

 

Defining weaving semantics needed for DSALs

 

Will a naive combination of the two be a proper solution?

slide-17
SLIDE 17

Naive Combination of LW and CF

Language Workbench Language Workbench

DSAL Code AspectJ Woven Bytecode ajc Composition Framework

First-class DSL

slide-18
SLIDE 18

But Still Second-class AOP

Language Workbench Language Workbench

DSAL Code AspectJ Woven Bytecode Composition Framework

Browsing Debugging Compiling

slide-19
SLIDE 19

Traditional LW Architecture

Language Workbench Language Workbench

DSAL Code AspectJ Woven Bytecode

Composition Framework Code Transformation

slide-20
SLIDE 20

DSAL Workbench Architecture

Composition Framework Composition Framework

DSAL Code Woven Bytecode

Language Workbench Language Workbench

AspectJ DSAL Code

First-class AOP

Code Transformation

slide-21
SLIDE 21

DSAL Workbench Architecture

Composition Framework Composition Framework

DSAL Code Woven Bytecode

Language Workbench Language Workbench

DSAL Code

Standalone DSAL compiler Can generate debugging & browsing information

First-class AOP

Code Transformation

slide-22
SLIDE 22

Implementation

AWESOME* AWESOME*

DSAL Code Woven Bytecode

Spoofax Spoofax

DSAL Code

Code Transformation

slide-23
SLIDE 23

Example: First Class COOL

slide-24
SLIDE 24

DSAL “Bill of Rights”

  • Freedom of Expression
  • Syntactic
  • Semantic
  • Economic Freedom
  • Cost effective Implementation
  • Cost effective Usage
  • Freedom of Assembly
  • DSL Interoperability
  • Equality with domain-specific

languages and AOP languages

slide-25
SLIDE 25

Related Work

  • Language Workbenches

– [Fowler, 2005] Language workbenches: The killer-app for

domain specific languages.

– [Kats and Visser, 2005] The Spoofax language workbench:

Rules for declarative specification of languages and IDEs.

– [Lorenz and Rosenan, 2011] Cedalion: A language for

language oriented programming.

  • AOP Composition Frameworks

– [Kojarski and Lorenz, 2005] Pluggable AOP: Designing aspect

mechanisms for third-party composition.

– [Lorenz and Kojarski, 2007] Understanding aspect interaction,

co-advising and foreign advising.

– [Kojarski and Lorenz, 2007] Awesome: An aspect co-weaving

system for composing multiple aspect-oriented extensions.

slide-26
SLIDE 26

Conclusion

  • A novel design for DSAL workbench that produces

first-class DSAL

– First-class DSL – First-class AOP language

  • Prototype comprising Spoofax and AWESOME*
  • Plug-in for COOL as a first-class DSAL
slide-27
SLIDE 27

Arik Hadas and David H. Lorenz

  • Dept. of Mathematics and Computer Science

The Open University of Israel

arik.hadas@openu.ac.il

https://github.com/OpenUniversity

Thank You!