Folien
Folien
Folien
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
Die synchrone<br />
Programmiersprache<br />
ESTEREL<br />
Daniel Rotar und Maximilian Schröder<br />
Seminar über Programmiersprachen<br />
im WS 11/12<br />
1
Agenda<br />
1. Einleitung und Grundlagen<br />
2. Syntax und Aufbau von ESTEREL<br />
3. Implementierungsbeispiel<br />
4. Semantik von ESTEREL<br />
1. Verhaltenssemantik<br />
2. Ausführungssemantik<br />
3. Äquivalenz der Semantikarten<br />
5. Zusammenführung und Ausblick<br />
Die synchrone Programmiersprache ESTEREL, Seminar über<br />
2
Reaktive Programme<br />
- Klimaanlagen und Mikrowellen<br />
Permanente Interaktion mit Umwelt<br />
Senden Ausgaben, als Reaktion<br />
auf Nutzereingaben<br />
Identische Reaktionen auf<br />
gleichbleibende Eingaben<br />
Eingebettete Systeme<br />
Reaktive Systeme<br />
Echtzeitsysteme<br />
- Reaktive Systeme mit oben genannten<br />
Eigenschaften und reaktivem Programm<br />
als Hauptbestandteil (nach Berry & Gonthier, 1992)<br />
Die synchrone Programmiersprache ESTEREL, Seminar über<br />
3
Reaktive Systeme<br />
Schnittstelle<br />
- Empfang und Ausgabe<br />
von Informationen<br />
Reaktiver Kernel<br />
- Logik des Systems<br />
(Steuereinheit)<br />
Datenverarbeitungsschicht<br />
- Berechnungen aller Art<br />
- ESTEREL: Programmgenerator für reaktive Kernel,<br />
keine vollwertige Programmiersprache<br />
Die synchrone Programmiersprache ESTEREL, Seminar über<br />
4
Vertreter reaktiver Sprachen und deren<br />
Problematik<br />
Deterministische Automaten<br />
- Bilden kleine, reaktive Kernel<br />
- Sequentiell, unterstützen keine Parallelität<br />
ADA (imperative, objektorientierte Sprache)<br />
- Nebenläufig, allerdings nicht-deterministisch<br />
Reaktive Sprachen zwingen zur Wahl: Determinismus vs. Parallelität<br />
- Probleme:<br />
(Keine Regel): Wann Signal gesendet und Ziel erreicht<br />
Sensor durch zwei Prozesse in gleicher Reaktion gelesen<br />
<br />
zwei Werte<br />
Die synchrone Programmiersprache ESTEREL, Seminar über<br />
5
Synchronitätshypothese<br />
„Jede Reaktion wird sofort/unmittelbar ausgeführt und ist daher atomar, da<br />
Änderungen an den Eingängen des Systems sofort zu Ergebnissen führen.“<br />
- Instruktionsausführung kostet „keine Zeit“<br />
Prozessabwicklung, Kommunikation, Datenverarbeitung<br />
- Interprozesskommunikation via sofortiges Broadcasten von Events<br />
Prozesse haben gleiche Sicht auf Umgebung<br />
Realismus von „unendlich schnellen“ Reaktionen?<br />
- Synchrone Programme in effiziente Automaten umgewandelt<br />
- Berechenbar und Laufzeiteffizient<br />
Die synchrone Programmiersprache ESTEREL, Seminar über<br />
6
Vom ESTEREL-Programm zum Automat<br />
Umwandlung vom ESTEREL-Programm in Automaten<br />
- Knoten bilden ESTEREL-Befehle, Pfeile dazugehörige Ausführungssequenzen<br />
Umwandlung in Automat erfüllt Synchronitätshypothese<br />
- Reaktionen des Automaten sind so schnell wie nur möglich<br />
- Minimale Automatensequenzen zur Laufzeit ausgeführt<br />
- Prozesshandhabung und Synchronisation während Kompilierung<br />
Die synchrone Programmiersprache ESTEREL, Seminar über<br />
7
Agenda<br />
1. Einleitung und Grundlagen<br />
2. Syntax und Aufbau von ESTEREL<br />
3. Implementierungsbeispiel<br />
4. Semantik von ESTEREL<br />
1. Verhaltenssemantik<br />
2. Ausführungssemantik<br />
3. Äquivalenz der Semantikarten<br />
5. Zusammenführung und Ausblick<br />
Die synchrone Programmiersprache ESTEREL, Seminar über<br />
8
Grundlegender Programmaufbau und<br />
Datentypen<br />
module Modulname:<br />
Deklarationsabschnitt<br />
Modulkörper<br />
.<br />
Nur primitive Datentypen (Arrays & Structs fehlen)<br />
- In ESTEREL zwei Ausprägungen mit unterschiedlicher Datentypzahl<br />
Basic: Integer, Boolean und triv<br />
Plain: zusätzlich String und Float<br />
- Notwendig für Umwandlung von Plain in Basic ESTEREL<br />
Die synchrone Programmiersprache ESTEREL, Seminar über<br />
9
Schnittstellenkommunikation<br />
Kommunikation des reaktiven Kernels durch Schnittstelle via Signale /<br />
Sensoren<br />
Signale<br />
- Via Interrupts werden Steuerungsinformationen übermittelt<br />
- Verfügen über persistenten Wert eines Typs<br />
- Wertänderung nur via Interrupt möglich<br />
Sensoren<br />
- Für passive, externe Geräte<br />
- Sind readonly und erzeugen keine Interrupts<br />
Die synchrone Programmiersprache ESTEREL, Seminar über<br />
10
Schnittstellenkommunikation(2) und<br />
Relationen<br />
Die synchrone Programmiersprache ESTEREL, Seminar über<br />
11
Basic ESTEREL Anweisungen<br />
-<br />
Im Modulkörper zur Verfügung stehenden Befehle<br />
-<br />
Vollständig unabhängig voneinander<br />
-<br />
Kein Befehl kann auf einen anderen reduziert werden.<br />
-<br />
Unterscheidung zwischen Groß- und Kleinschreibung<br />
-<br />
Emit != emit != EMIT<br />
Befehl<br />
nothing<br />
halt<br />
call P(variable-list)<br />
(expression-list)<br />
emit S(exp)<br />
stat1 ; stat2<br />
loop stat end<br />
Beschreibung<br />
Dummy-Befehl<br />
Halte-Befehl<br />
Externer Methodenaufruf<br />
Ausgabe eines Signals<br />
Sequenzielle Abarbeitung<br />
Schleife<br />
Die synchrone Programmiersprache ESTEREL, Seminar über<br />
12
Basic ESTEREL Anweisungen (2)<br />
Befehl<br />
if exp<br />
then stat1<br />
else stat2<br />
end<br />
present S<br />
then stat1<br />
else stat2<br />
end<br />
Beschreibung<br />
Bedingung<br />
Überprüfung auf Vorhandensein eines Signals<br />
-<br />
Der then- oder else-Block kann weggelassen werden.<br />
-<br />
Beispiel: present S else stat end<br />
-<br />
Wird jedoch intern wieder auf folgendes Konstrukt zurückgeführt:<br />
present S then nothing else stat end<br />
Die synchrone Programmiersprache ESTEREL, Seminar über<br />
13
Basic ESTEREL Anweisungen (3)<br />
Befehl<br />
do<br />
stat<br />
watching S<br />
trap T in<br />
stat<br />
end<br />
exit T<br />
stat1 || stat2<br />
Beschreibung<br />
Watchdog-Konstrukt<br />
Trap-Konstrukt<br />
Verlässt das Trap-Konstrukt<br />
Parallele Abarbeitung*<br />
* ; bindet stärker als ||.<br />
Beispiel: stat1 ; stat2 || stat3 ; stat4<br />
Alternativ: stat1 ; [ stat2 || stat3 ] ; stat4<br />
Die synchrone Programmiersprache ESTEREL, Seminar über<br />
14
Basic ESTEREL Anweisungen (4)<br />
Befehl<br />
X := exp<br />
var X : type in<br />
stat<br />
end<br />
signal S (combine type with<br />
comb) in<br />
stat<br />
end<br />
Beschreibung<br />
Zuweisung<br />
Deklaration einer lokalen Variable<br />
Deklaration eines lokalen Signals<br />
-<br />
Grundsätzlich gilt: Alle verwendeten Variablen, Signale und/oder Traps<br />
müssen vor ihrer ersten Verwendung deklariert worden sein!<br />
-<br />
Insgesamt nur 15 unabhängige Befehle<br />
-<br />
Aber dennoch sehr mächtig!<br />
Die synchrone Programmiersprache ESTEREL, Seminar über<br />
15
Basic ESTEREL Anweisungen Beispiel<br />
trap T1 in<br />
trap T2 in<br />
X := 1<br />
||<br />
Y := 2 ; exit T1<br />
||<br />
Z := 3 ; exit T2 ; Z :=<br />
0<br />
end ;<br />
X := 0<br />
end<br />
-<br />
Beispiel zeigt nur einen Ausschnitt des<br />
Modulkörpers (nicht vollständig!)<br />
-<br />
Nach der Ausführung:<br />
-<br />
X=1<br />
-<br />
Y=2<br />
-<br />
Z=3<br />
Die synchrone Programmiersprache ESTEREL, Seminar über<br />
16
Basic ESTEREL Anweisungen Beispiel<br />
trap T1 in<br />
trap T2 in<br />
X := 1<br />
||<br />
Y := 2 ; exit T1<br />
||<br />
Z := 3 ; exit T2 ; Z :=<br />
0<br />
end ;<br />
X := 0<br />
end<br />
-<br />
Beispiel zeigt nur einen Ausschnitt des<br />
Modulkörpers (nicht vollständig!)<br />
-<br />
Nach der Ausführung:<br />
-<br />
X=1<br />
-<br />
Y=2<br />
-<br />
Z=3<br />
-<br />
Z := 0 wird niemals ausgeführt!<br />
Die synchrone Programmiersprache ESTEREL, Seminar über<br />
17
Basic ESTEREL Anweisungen Beispiel<br />
trap T1 in<br />
trap T2 in<br />
X := 1<br />
||<br />
Y := 2 ; exit T1<br />
||<br />
Z := 3 ; exit T2 ; Z :=<br />
0<br />
end ;<br />
X := 0<br />
end<br />
-<br />
Beispiel zeigt nur einen Ausschnitt des<br />
Modulkörpers (nicht vollständig!)<br />
-<br />
Nach der Ausführung:<br />
-<br />
X=1<br />
-<br />
Y=2<br />
-<br />
Z=3<br />
-<br />
Z := 0 wird niemals ausgeführt!<br />
-<br />
X := 0 wird niemals ausgeführt!<br />
Die synchrone Programmiersprache ESTEREL, Seminar über<br />
18
Basic ESTEREL Anweisungen Beispiel<br />
trap T1 in<br />
trap T2 in<br />
X := 1<br />
||<br />
Y := 2 ; exit T1<br />
||<br />
Z := 3 ; exit T2 ; Z :=<br />
0<br />
end ;<br />
X := 0<br />
end<br />
-<br />
Beispiel zeigt nur einen Ausschnitt des<br />
Modulkörpers (nicht vollständig!)<br />
-<br />
Nach der Ausführung:<br />
-<br />
X=1<br />
-<br />
Y=2<br />
-<br />
Z=3<br />
-<br />
Z := 0 wird niemals ausgeführt!<br />
-<br />
X := 0 wird niemals ausgeführt!<br />
Die synchrone Programmiersprache ESTEREL, Seminar über<br />
19
Gültige ESTEREL-Programme<br />
- Nicht jedes syntaktisch korrekte ESTEREL-Programm ist ein gültiges<br />
ESTEREL-Programm<br />
Beispiel: loop nothing end<br />
●<br />
●<br />
Endlosschleife (unendlich viele Anweisungen müssen „sofort“ ausgeführt<br />
werden!)<br />
Nicht erlaubt!!!<br />
Beispiel 2: loop halt end<br />
●<br />
Ist diese Anweisung erlaubt?<br />
– JA!<br />
– Es müssen nicht unendlich viele Anweisungen „sofort“ ausgeführt werden.<br />
Beispiel 3: X := 1 || X := 2<br />
●<br />
●<br />
Veränderungen der gleichen Variable in einem parallel-Block<br />
Nicht erlaubt!!!<br />
Die synchrone Programmiersprache ESTEREL, Seminar über<br />
20
Das „sharing law“<br />
-<br />
Während einer Reaktion hat ein Signal immer einen festen,<br />
gleichbleibenden Status (es ist vorhanden oder es ist nicht<br />
vorhanden).<br />
-<br />
Während einer Reaktion hat ein Signal immer einen festen,<br />
gleichbleibenden Wert (auch wenn das Signal nicht aktiv ist.<br />
In diesem Fall hat das Signal dann den Wert, den es in der<br />
letzten Reaktion gehabt hat. War es noch nie aktiv, hat es<br />
den undefinierten Wert.)<br />
Die synchrone Programmiersprache ESTEREL, Seminar über<br />
21
Plain ESTEREL als Erweiterung von<br />
Basic ESTEREL<br />
- Neue Funktionalitäten lassen sich in drei Bereiche unterteilen:<br />
Erweiterung von Signalen<br />
Erweiterung von Modulen<br />
Neue Befehle<br />
Erweiterung von Signalen:<br />
- Z.B. Inputoutput Signale und Steuerungssignale (Signale ohne Werte)<br />
Erweiterung von Modulen:<br />
- Copymodule-Anweisung<br />
Neue Befehle:<br />
- Alle neuen Befehle lassen sich auf ein äquivalentes Basic ESTEREL-Konstrukt reduzieren<br />
Die synchrone Programmiersprache ESTEREL, Seminar über<br />
22
Plain ESTEREL Anweisungen:<br />
repeat<br />
repeat exp times<br />
stat<br />
end<br />
- Wiederholt das innere Statement exp-mal.<br />
- Zurückzuführen auf: loop-end mit innerem trap-Konstrukt und einem trapexit.<br />
- Kann ebenfalls vom Compiler verweigert werden:<br />
Z.B. repeat 3 times<br />
nothing<br />
end<br />
Da intern auf loop-end Schleife zurückgeführt wird.<br />
Die synchrone Programmiersprache ESTEREL, Seminar über<br />
23
Plain ESTEREL Anweisungen:<br />
do-watch-timeout<br />
do stat1 watch S<br />
timeout stat2<br />
end<br />
- Erweitert den bestehenden do-watch Befehl um timeout<br />
- Der timeout-Teil wird nur dann ausgeführt, wenn die Ausführung durch auftreten von S abgebrochen<br />
wurde.<br />
- Zurückzuführen auf:<br />
trap T in<br />
do<br />
end<br />
stat1 ; exit T<br />
watching S<br />
stat2<br />
Die synchrone Programmiersprache ESTEREL, Seminar über<br />
24
Plain ESTEREL Anweisungen:<br />
immediate<br />
do stat watching immediate S<br />
- Überprüft das Signal S schon beim Eintritt in das do-watching Konstrukt<br />
Ist S vorhanden wird stat erst gar nicht ausgeführt!<br />
- Nicht nur in Kombination mit watching zu verwenden:<br />
Z.B. await immediate<br />
- Zurückzuführen auf:<br />
present S else<br />
do stat watching S<br />
end<br />
Die synchrone Programmiersprache ESTEREL, Seminar über<br />
25
Plain ESTEREL Anweisungen:<br />
Weitere in der Kurzübersicht<br />
Plain ESTEREL-Befehl<br />
Reduzierbar auf<br />
do stat upto S<br />
await S<br />
every S do<br />
stat<br />
end<br />
loop stat each S<br />
do<br />
stat ;<br />
halt<br />
watching S<br />
do halt watching S<br />
await S ;<br />
loop<br />
do stat upto S<br />
end<br />
loop<br />
do stat upto S<br />
end<br />
Die synchrone Programmiersprache ESTEREL, Seminar über<br />
26
Plain ESTEREL Anweisungen:<br />
Weitere in der Kurzübersicht (2)<br />
Plain ESTEREL-Befehl<br />
Reduzierbar auf<br />
await<br />
case S_1 do stat_1<br />
case S_2 do stat_2<br />
…<br />
case S_n do stat_n<br />
end<br />
trap-Befehl + mehrere present-Befehle<br />
-<br />
Es stehen noch weitere neue Befehle durch Plain ESTEREL zur Verfügung.<br />
-<br />
Alle durch Plain ESTEREL zur Verfügung gestellten Befehle bringen keine neue<br />
Funktionalität im eigentlichen Sinne.<br />
-<br />
Sie sollen lediglich das Arbeiten mit ESTEREL erleichtern und häufig<br />
verwendete Code-Konstrukte auf einfache Anweisungen reduzieren.<br />
Die synchrone Programmiersprache ESTEREL, Seminar über<br />
27
Plain ESTEREL Anweisungen Beispiel<br />
do<br />
every immediate I1 do emit O1 end<br />
watching I2 ;<br />
emit O2<br />
Die synchrone Programmiersprache ESTEREL, Seminar über<br />
28
Plain ESTEREL Anweisungen Beispiel<br />
do<br />
every immediate I1 do emit O1 end<br />
watching I2 ;<br />
emit O2<br />
Beispiel 1:<br />
Input I1 I3 I1 I2 I1<br />
Output<br />
Die synchrone Programmiersprache ESTEREL, Seminar über<br />
29
Plain ESTEREL Anweisungen Beispiel<br />
do<br />
every immediate I1 do emit O1 end<br />
watching I2 ;<br />
emit O2<br />
Beispiel 1:<br />
Input I1 I3 I1 I2 I1<br />
Output<br />
O1<br />
Die synchrone Programmiersprache ESTEREL, Seminar über<br />
30
Plain ESTEREL Anweisungen Beispiel<br />
do<br />
every immediate I1 do emit O1 end<br />
watching I2 ;<br />
emit O2<br />
Beispiel 1:<br />
Die synchrone Programmiersprache ESTEREL, Seminar über<br />
31
Plain ESTEREL Anweisungen Beispiel<br />
do<br />
every immediate I1 do emit O1 end<br />
watching I2 ;<br />
emit O2<br />
Beispiel 1:<br />
Die synchrone Programmiersprache ESTEREL, Seminar über<br />
32
Plain ESTEREL Anweisungen Beispiel<br />
do<br />
every immediate I1 do emit O1 end<br />
watching I2 ;<br />
emit O2<br />
Beispiel 1:<br />
Die synchrone Programmiersprache ESTEREL, Seminar über<br />
33
Plain ESTEREL Anweisungen Beispiel<br />
do<br />
every immediate I1 do emit O1 end<br />
watching I2 ;<br />
emit O2<br />
Beispiel 1:<br />
Die synchrone Programmiersprache ESTEREL, Seminar über<br />
34
Plain ESTEREL Anweisungen Beispiel<br />
do<br />
every immediate I1 do emit O1 end<br />
watching I2 ;<br />
emit O2<br />
Beispiel 1:<br />
Beispiel 2:<br />
Die synchrone Programmiersprache ESTEREL, Seminar über<br />
35
Plain ESTEREL Anweisungen Beispiel<br />
do<br />
every immediate I1 do emit O1 end<br />
watching I2 ;<br />
emit O2<br />
Beispiel 1:<br />
Beispiel 2:<br />
Die synchrone Programmiersprache ESTEREL, Seminar über<br />
36
Plain ESTEREL Anweisungen Beispiel<br />
do<br />
every immediate I1 do emit O1 end<br />
watching I2 ;<br />
emit O2<br />
Beispiel 1:<br />
Beispiel 2:<br />
Die synchrone Programmiersprache ESTEREL, Seminar über<br />
37
Plain ESTEREL Anweisungen Beispiel<br />
do<br />
every immediate I1 do emit O1 end<br />
watching I2 ;<br />
emit O2<br />
Beispiel 1:<br />
Beispiel 2:<br />
Die synchrone Programmiersprache ESTEREL, Seminar über<br />
38
Plain ESTEREL Anweisungen Beispiel<br />
do<br />
every immediate I1 do emit O1 end<br />
watching I2 ;<br />
emit O2<br />
Beispiel 1:<br />
Beispiel 2:<br />
Die synchrone Programmiersprache ESTEREL, Seminar über<br />
39
Plain ESTEREL Anweisungen Beispiel<br />
do<br />
every immediate I1 do emit O1 end<br />
watching I2 ;<br />
emit O2<br />
Beispiel 1:<br />
Beispiel 2:<br />
Die synchrone Programmiersprache ESTEREL, Seminar über<br />
40
Plain ESTEREL Anweisungen Beispiel<br />
do<br />
every immediate I1 do emit O1 end<br />
watching I2 ;<br />
emit O2<br />
Beispiel 1:<br />
Beispiel 2:<br />
Beispiel 3:<br />
Input I2 I2 I1 I2 I1<br />
Output<br />
Die synchrone Programmiersprache ESTEREL, Seminar über<br />
41
Plain ESTEREL Anweisungen Beispiel<br />
do<br />
every immediate I1 do emit O1 end<br />
watching I2 ;<br />
emit O2<br />
Beispiel 1:<br />
Beispiel 2:<br />
Beispiel 3:<br />
Die synchrone Programmiersprache ESTEREL, Seminar über<br />
42
Plain ESTEREL Anweisungen Beispiel<br />
do<br />
every immediate I1 do emit O1 end<br />
watching I2 ;<br />
emit O2<br />
Beispiel 1:<br />
Beispiel 2:<br />
Beispiel 3:<br />
Die synchrone Programmiersprache ESTEREL, Seminar über<br />
43
Plain ESTEREL Anweisungen Beispiel<br />
do<br />
every immediate I1 do emit O1 end<br />
watching I2 ;<br />
emit O2<br />
Beispiel 1:<br />
Beispiel 2:<br />
Beispiel 3:<br />
Die synchrone Programmiersprache ESTEREL, Seminar über<br />
44
Plain ESTEREL Anweisungen Beispiel<br />
do<br />
every immediate I1 do emit O1 end<br />
watching I2 ;<br />
emit O2<br />
Beispiel 1:<br />
Beispiel 2:<br />
Beispiel 3:<br />
Die synchrone Programmiersprache ESTEREL, Seminar über<br />
45
Plain ESTEREL Anweisungen Beispiel<br />
do<br />
every immediate I1 do emit O1 end<br />
watching I2 ;<br />
emit O2<br />
Beispiel 1:<br />
Beispiel 2:<br />
Beispiel 3:<br />
Die synchrone Programmiersprache ESTEREL, Seminar über<br />
46
Agenda<br />
1. Einleitung und Grundlagen<br />
2. Syntax und Aufbau von ESTEREL<br />
3. Implementierungsbeispiel<br />
4. Semantik von ESTEREL<br />
1. Verhaltenssemantik<br />
2. Ausführungssemantik<br />
3. Äquivalenz der Semantikarten<br />
5. Zusammenführung und Ausblick<br />
Die synchrone Programmiersprache ESTEREL, Seminar über<br />
47
Implementierungsbeispiel<br />
Die synchrone Programmiersprache ESTEREL, Seminar über<br />
48
Agenda<br />
1. Einleitung und Grundlagen<br />
2. Syntax und Aufbau von ESTEREL<br />
3. Implementierungsbeispiel<br />
4. Semantik von ESTEREL<br />
1. Verhaltenssemantik<br />
2. Ausführungssemantik<br />
3. Äquivalenz der Semantikarten<br />
5. Zusammenführung und Ausblick<br />
Die synchrone Programmiersprache ESTEREL, Seminar über<br />
49
Verhaltenssemantik<br />
-<br />
Wie verhält sich ein Programm bei einem Input und<br />
welchen Output erzeugt es?<br />
Nachfolgend:<br />
-<br />
Formale Definition von Events und Historys<br />
-<br />
Programm-Überführung<br />
-<br />
Induktionsregeln<br />
Die synchrone Programmiersprache ESTEREL, Seminar über<br />
50
Formale Definition von Events und Historys<br />
Die synchrone Programmiersprache ESTEREL, Seminar über<br />
51
Formale Definition von Events und Historys<br />
(2)<br />
Die synchrone Programmiersprache ESTEREL, Seminar über<br />
52
Programm-Überführung<br />
Die synchrone Programmiersprache ESTEREL, Seminar über<br />
53
Programm-Überführung Beispiel<br />
module LAMP_TEST:<br />
input BUTTON;<br />
output GREEN_LAP;<br />
await 2 BUTTON;<br />
emit GREEN_LAP.<br />
Die synchrone Programmiersprache ESTEREL, Seminar über<br />
54
Programm-Überführung Beispiel<br />
module LAMP_TEST:<br />
input BUTTON;<br />
output GREEN_LAP;<br />
await 2 BUTTON;<br />
emit GREEN_LAP.<br />
module LAMP_TEST:<br />
input BUTTON;<br />
output GREEN_LAP;<br />
await 1 BUTTON;<br />
emit GREEN_LAP.<br />
Die synchrone Programmiersprache ESTEREL, Seminar über<br />
55
Programm-Überführung Beispiel<br />
module LAMP_TEST:<br />
input BUTTON;<br />
output GREEN_LAP;<br />
await 2 BUTTON;<br />
emit GREEN_LAP.<br />
module LAMP_TEST:<br />
input BUTTON;<br />
output GREEN_LAP;<br />
await 1 BUTTON;<br />
emit GREEN_LAP.<br />
module LAMP_TEST:<br />
input BUTTON;<br />
output GREEN_LAP;<br />
halt.<br />
Die synchrone Programmiersprache ESTEREL, Seminar über<br />
56
Induktionsregeln Beispiel<br />
Die synchrone Programmiersprache ESTEREL, Seminar über<br />
57
Ausführungssemantik<br />
-<br />
Ausführungssemantik gewährleistet<br />
Korrektheit der jeweiligen Reaktionen.<br />
Nachfolgend:<br />
-<br />
Verhaltensregeln für Arbeit mit Signalen<br />
-<br />
Implementierung von Signalen und deren Status<br />
-<br />
Ausführungsregeln<br />
Die synchrone Programmiersprache ESTEREL, Seminar über<br />
58
Verhaltensregeln für Lese- und<br />
Schreibvorgänge<br />
- Reaktionen durch Reihenfolge von Ausführungen realisiert<br />
- Nach Aktionsausführung erfolgt Expansionsschritt (+ Programmüberführung)<br />
Expansion nur dann möglich, wenn Ausführung korrekt angehalten<br />
Programm ist korrekt, wenn angehaltene Ausführung existiert<br />
- Alle angehaltenen Reaktionen führen zu gleichen Ergebnissen, wenn<br />
Ergebnis nach Expansionsschritt mit Verhaltenssemantik übereinstimmt<br />
Verhaltenssemantik eines korrekten Programms einzigartig ist<br />
Nachfolgende Verhaltensregeln sind korrekte Implementierung des sharing<br />
law<br />
Die synchrone Programmiersprache ESTEREL, Seminar über<br />
59
Implementierung von Signalen<br />
Die synchrone Programmiersprache ESTEREL, Seminar über<br />
60
Ausführungsregeln<br />
Die synchrone Programmiersprache ESTEREL, Seminar über<br />
61
Ausführungsregeln Beispiel<br />
Die synchrone Programmiersprache ESTEREL, Seminar über<br />
62
Äquivalenz von Verhaltens- und<br />
Ausführungssemantik<br />
Die synchrone Programmiersprache ESTEREL, Seminar über<br />
63
Agenda<br />
1. Einleitung und Grundlagen<br />
2. Syntax und Aufbau von ESTEREL<br />
3. Implementierungsbeispiel<br />
4. Semantik von ESTEREL<br />
1. Verhaltenssemantik<br />
2. Ausführungssemantik<br />
3. Äquivalenz der Semantikarten<br />
5. Zusammenführung und Ausblick<br />
Die synchrone Programmiersprache ESTEREL, Seminar über<br />
64
Fazit<br />
Die synchrone Programmiersprache ESTEREL, Seminar über<br />
65
Ausblick<br />
Die synchrone Programmiersprache ESTEREL, Seminar über<br />
66
Vielen Dank für<br />
die Aufmerksamkeit!<br />
Daniel Rotar und Maximilian Schröder<br />
Seminar über Programmiersprachen<br />
im WS 11/12<br />
67
Literaturverzeichnis<br />
Berry, G., & Gonthier, G. (1992). The ESTEREL synchronous programming language: design,<br />
semantics, implementation. Science of Computer Programming 19, Seiten 87 - 152.<br />
Hochberger, C. (1. Oktober 2010). Professur für Mikrorechner TU Dresden. Abgerufen am 1.<br />
August 2011 von http://www.mr.inf.tu-dresden.de/?ln=de&tl=lehre_<br />
ws&sl=es&bl=ws1011&site=ws1011<br />
Mauras, C., & Richard, M. (11. April 2007). How to use synchronous languages to play with the<br />
Lego Mindstorms? Abgerufen am 20. August 2011 von http://www.emn.fr/z-info/lego/<br />
Palshikar, G. K. (01. November 2001). EE Times: The global electronics engineering community.<br />
Abgerufen am 01. August 2011 von http://www.eetimes.com/design/embedded/4024644/An-<br />
Introduction-to-Esterel<br />
Syncronous Reactive Team. Esterel Synchronous Language Web Main Page. Abgerufen am 20.<br />
August 2011 von http://www-sop.inria.fr/esterel.org/filesv5_92/<br />
Die synchrone Programmiersprache ESTEREL, Seminar über<br />
68