01.03.2014 Aufrufe

Folien

Folien

Folien

MEHR ANZEIGEN
WENIGER ANZEIGEN

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

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!