Reusable specification templates
Ulyana Tikhonova
ulyana.tikhonova@constelle.net
for defining dynamic semantics
- f DSLs
Mark van den Brand Tim Willemse
Reusable specification templates for defining dynamic semantics - - PowerPoint PPT Presentation
Reusable specification templates for defining dynamic semantics of DSLs Ulyana Tikhonova ulyana.tikhonova@constelle.net Tim Willemse Mark van den Brand Domain Specific Languages (DSLs) 2 3 To understand the dynamic semantics To
ulyana.tikhonova@constelle.net
Mark van den Brand Tim Willemse
2
3
4
6
7
8
1 2 3 4 5
9
10
11
Semantic mapping Semantic domain
Language constructs (statements)
12
Semantic mapping Semantic domain
DSL constructs (statements)
13
Semantic mapping Semantic domain
DSL constructs (statements) Semantic domain Semantic mapping
14
Semantic mapping Semantic domain
DSL constructs (statements) Semantic domain Semantic mapping
16
MACHINE queue_machine SEES queue_context VARIABLES queue INVARIANTS inv1: queue ∈ ℕ ⇸ ElementType EVENTS INITIALISATION ≙ act1: queue ≔ ∅ END enqueue≙ ANY element, index WHERE grd1: element ∈ ElementType grd2: index ↦ element ∈ queue grd3: ∀i·i ∈ dom(queue) ⇒ index ≤ i THEN act1: queue ≔ queue ∖ {index ↦ element} END dequeue≙ ANY element, index WHERE grd1: element ∈ ElementType grd2: index ∈ ℕ grd3: queue ≠ ∅ ⇒ (∀i·i ∈ dom(queue) ⇒ index > i) grd4: {index ↦ element} ∈ ℕ ⇸ ElementType grd5: index ∉ dom(queue) THEN act2: queue ≔ queue ∪ {index ↦ element} END END
MyType MyType MyType MyType
17
MACHINE queue_machine SEES queue_context VARIABLES queue INVARIANTS inv1: queue ∈ ℕ ⇸ ElementType EVENTS INITIALISATION ≙ act1: queue ≔ ∅ END dequeue≙ ANY element, index WHERE grd1: element ∈ ElementType grd2: index ∈ ℕ grd3: queue ≠ ∅ ⇒ (∀i·i ∈ dom(queue) ⇒ index > i) grd4: {index ↦ element} ∈ ℕ ⇸ ElementType grd5: index ∉ dom(queue) THEN act2: queue ≔ queue ∪ {index ↦ element} enqueue≙ ANY element, index WHERE grd1: element ∈ ElementType grd2: index ↦ element ∈ queue grd3: ∀i·i ∈ dom(queue) ⇒ index ≤ i THEN act1: queue ≔ queue ∖ {index ↦ element} END
Logical action Subsystem action
Subsystem Subsystem action *
bo dy
1
typ e
1
typ e
* Order Scan Data Node Data type Dataflow Data Transformation
1
typ e
*
1. .*
* *
0. .1 1 1
t
m
1 1
t
m
* * * * *
inp ut
inp ut
Substitution
MyType MyType MyType MyType
18
Semantic mapping Semantic domain
DSL constructs (statements) Semantic domain Semantic mapping
19
20
VARIABLES curr_job, curr_la, la_input, ssa_output INVARIANTS la_input ∈ ℕ ⇸ LogicalActions ssa_output ∈ ℕ ⇸ SSActions curr_job ∈ ℙ(SSAOccurences) curr_la ∈ LogicalActions EVENTS Initialisation curr_la :∈ LogicalActions curr_job ≔ la_input ≔ ssa_output ≔ request_la (la, n) where la ∈ LogicalActions curr_job = n ∈ ℕ la_input ≠ ⇒ ∀ i · i ∈ dom(la_input) ⇒ n > i then curr_job ≔ dom(LALabelDef(la)) curr_la ≔ la la_input ≔ la_input ∪ { n ↦ la } request_ssa (ssaction, occurence) where
then curr_job ≔ curr_job \ {occurence} execute_ssa (ssaction, n) where ssaction ∈ SSActions n ∈ ℕ ssa_output ≠ ⇒ ∀ i · i ∈ dom(ssa_output) ⇒ n > i then ssa_output ≔ ssa_output ∪ { n ↦ ssaction } END
21
22
23
Substitution of template (static) parameters with DSL types Operations
dynamic semantics Aspects = specification templates
24
Meta-model DSL model Event-B specification templates Event-B specification
DSL/Ecore Event-B/Rodin
Specification templates Constelle definition Constelle-to-Event-B
25
26