Software-Notationen. K. Bürtlmair. Masterstudiengang ITS //2010/11 Fachhochschule Salzburg. 3. Oktober 2013

Größe: px
Ab Seite anzeigen:

Download "Software-Notationen. K. Bürtlmair. Masterstudiengang ITS //2010/11 Fachhochschule Salzburg. 3. Oktober 2013"

Transkript

1 Software-Notationen K. Bürtlmair Masterstudiengang ITS //2010/11 Fachhochschule Salzburg 3. Oktober 2013 K. Bürtlmair, Masterstudiengang ITS //2010/11 Fachhochschule Salzburg Software-Notationen 1/27

2 Textuelle Sprachen Sie sind schon einmal an Programmen wie FlowChart verzweifelt? Weil Sie jedes Diagramm immer wieder neu erstellen müssen obwohl es nach dem gleichen Schema läuft. Da gabs doch früher was? -> Batchfiles, Shells, Transskripts,... In unserem Fall so etwas wie: idle -> active -> flushing -> filling -> idle Der Graph wird über einen Shellaufruf gerendert und in einem geeigneten Format gespeichert. K. Bürtlmair, Masterstudiengang ITS //2010/11 Fachhochschule Salzburg Software-Notationen 2/27

3 Textuelle Sprachen Sie sind schon einmal an Programmen wie FlowChart verzweifelt? Weil Sie jedes Diagramm immer wieder neu erstellen müssen obwohl es nach dem gleichen Schema läuft. Da gabs doch früher was? -> Batchfiles, Shells, Transskripts,... In unserem Fall so etwas wie: idle -> active -> flushing -> filling -> idle Der Graph wird über einen Shellaufruf gerendert und in einem geeigneten Format gespeichert. K. Bürtlmair, Masterstudiengang ITS //2010/11 Fachhochschule Salzburg Software-Notationen 2/27

4 Textuelle Sprachen Sie sind schon einmal an Programmen wie FlowChart verzweifelt? Weil Sie jedes Diagramm immer wieder neu erstellen müssen obwohl es nach dem gleichen Schema läuft. Da gabs doch früher was? -> Batchfiles, Shells, Transskripts,... In unserem Fall so etwas wie: idle -> active -> flushing -> filling -> idle Der Graph wird über einen Shellaufruf gerendert und in einem geeigneten Format gespeichert. K. Bürtlmair, Masterstudiengang ITS //2010/11 Fachhochschule Salzburg Software-Notationen 2/27

5 Textuelle Sprachen Sie sind schon einmal an Programmen wie FlowChart verzweifelt? Weil Sie jedes Diagramm immer wieder neu erstellen müssen obwohl es nach dem gleichen Schema läuft. Da gabs doch früher was? -> Batchfiles, Shells, Transskripts,... In unserem Fall so etwas wie: idle -> active -> flushing -> filling -> idle Der Graph wird über einen Shellaufruf gerendert und in einem geeigneten Format gespeichert. K. Bürtlmair, Masterstudiengang ITS //2010/11 Fachhochschule Salzburg Software-Notationen 2/27

6 Textuelle Sprachen Sie sind schon einmal an Programmen wie FlowChart verzweifelt? Weil Sie jedes Diagramm immer wieder neu erstellen müssen obwohl es nach dem gleichen Schema läuft. Da gabs doch früher was? -> Batchfiles, Shells, Transskripts,... In unserem Fall so etwas wie: idle -> active -> flushing -> filling -> idle Der Graph wird über einen Shellaufruf gerendert und in einem geeigneten Format gespeichert. K. Bürtlmair, Masterstudiengang ITS //2010/11 Fachhochschule Salzburg Software-Notationen 2/27

7 Textuelle Sprachen Sie sind schon einmal an Programmen wie FlowChart verzweifelt? Weil Sie jedes Diagramm immer wieder neu erstellen müssen obwohl es nach dem gleichen Schema läuft. Da gabs doch früher was? -> Batchfiles, Shells, Transskripts,... In unserem Fall so etwas wie: idle -> active -> flushing -> filling -> idle Der Graph wird über einen Shellaufruf gerendert und in einem geeigneten Format gespeichert. K. Bürtlmair, Masterstudiengang ITS //2010/11 Fachhochschule Salzburg Software-Notationen 2/27

8 Graphviz Die Graphen in den bisherigen Folien wurden genauso generiert. Das Programm heißt Graphviz, die zugehörige Sprache heißt DOT. digraph state_diagram{ / node definitions / state1[ shape="circle" label="s0" ] / +++ / / transitions / state1 > transition > state2 input > transition state2 > output } K. Bürtlmair, Masterstudiengang ITS //2010/11 Fachhochschule Salzburg Software-Notationen 3/27

9 Graphviz Die Graphen in den bisherigen Folien wurden genauso generiert. Das Programm heißt Graphviz, die zugehörige Sprache heißt DOT. digraph state_diagram{ / node definitions / state1[ shape="circle" label="s0" ] / +++ / / transitions / state1 > transition > state2 input > transition state2 > output } K. Bürtlmair, Masterstudiengang ITS //2010/11 Fachhochschule Salzburg Software-Notationen 3/27

10 Grammatik für textuelle Sprachen Anders als bei Graphen haben wir es hier mit einer einfachen Sequenz von Zeichen zu tun. Ob ein Satz (Zeichenfolge) zu einer bestimmten Sprache gehört wird kann über einfache Produktionsregeln bestimmt werden. Diese bestehen aus Terminalen (verwendeten Zeichenkombinationen) und Nichtterminalen (Variablen). Beispielsweise eine Ziffer: digit ( notiert oder) daraus ergibt sich eine Zahl: unsigned num digit ( der Kleene * notiert 0 oder mehrere Wiederholungen) K. Bürtlmair, Masterstudiengang ITS //2010/11 Fachhochschule Salzburg Software-Notationen 4/27

11 Grammatik für textuelle Sprachen Anders als bei Graphen haben wir es hier mit einer einfachen Sequenz von Zeichen zu tun. Ob ein Satz (Zeichenfolge) zu einer bestimmten Sprache gehört wird kann über einfache Produktionsregeln bestimmt werden. Diese bestehen aus Terminalen (verwendeten Zeichenkombinationen) und Nichtterminalen (Variablen). Beispielsweise eine Ziffer: digit ( notiert oder) daraus ergibt sich eine Zahl: unsigned num digit ( der Kleene * notiert 0 oder mehrere Wiederholungen) K. Bürtlmair, Masterstudiengang ITS //2010/11 Fachhochschule Salzburg Software-Notationen 4/27

12 Grammatik für textuelle Sprachen Anders als bei Graphen haben wir es hier mit einer einfachen Sequenz von Zeichen zu tun. Ob ein Satz (Zeichenfolge) zu einer bestimmten Sprache gehört wird kann über einfache Produktionsregeln bestimmt werden. Diese bestehen aus Terminalen (verwendeten Zeichenkombinationen) und Nichtterminalen (Variablen). Beispielsweise eine Ziffer: digit ( notiert oder) daraus ergibt sich eine Zahl: unsigned num digit ( der Kleene * notiert 0 oder mehrere Wiederholungen) K. Bürtlmair, Masterstudiengang ITS //2010/11 Fachhochschule Salzburg Software-Notationen 4/27

13 Grammatik für textuelle Sprachen Anders als bei Graphen haben wir es hier mit einer einfachen Sequenz von Zeichen zu tun. Ob ein Satz (Zeichenfolge) zu einer bestimmten Sprache gehört wird kann über einfache Produktionsregeln bestimmt werden. Diese bestehen aus Terminalen (verwendeten Zeichenkombinationen) und Nichtterminalen (Variablen). Beispielsweise eine Ziffer: digit ( notiert oder) daraus ergibt sich eine Zahl: unsigned num digit ( der Kleene * notiert 0 oder mehrere Wiederholungen) K. Bürtlmair, Masterstudiengang ITS //2010/11 Fachhochschule Salzburg Software-Notationen 4/27

14 Grammatik für textuelle Sprachen Anders als bei Graphen haben wir es hier mit einer einfachen Sequenz von Zeichen zu tun. Ob ein Satz (Zeichenfolge) zu einer bestimmten Sprache gehört wird kann über einfache Produktionsregeln bestimmt werden. Diese bestehen aus Terminalen (verwendeten Zeichenkombinationen) und Nichtterminalen (Variablen). Beispielsweise eine Ziffer: digit ( notiert oder) daraus ergibt sich eine Zahl: unsigned num digit ( der Kleene * notiert 0 oder mehrere Wiederholungen) K. Bürtlmair, Masterstudiengang ITS //2010/11 Fachhochschule Salzburg Software-Notationen 4/27

15 reguläre Sprachen Mit den verwendeten Konstrukten lassen sich 3 Arten von Regeln bilden: Verkettung (Concatenation) Auswahl (Alternation) über unser oder Wiederholung (Kleene Closure) über unseren Kleene Stern Jede Menge von Zeichen(ketten) die über diese Regeln definiert werden können wird als reguläre Menge (regular set) oder reguläre Sprache (regular language) bezeichnet. Diese werden über reguläre Ausdrücke generiert und von Scannern erkannt. K. Bürtlmair, Masterstudiengang ITS //2010/11 Fachhochschule Salzburg Software-Notationen 5/27

16 reguläre Sprachen Mit den verwendeten Konstrukten lassen sich 3 Arten von Regeln bilden: Verkettung (Concatenation) Auswahl (Alternation) über unser oder Wiederholung (Kleene Closure) über unseren Kleene Stern Jede Menge von Zeichen(ketten) die über diese Regeln definiert werden können wird als reguläre Menge (regular set) oder reguläre Sprache (regular language) bezeichnet. Diese werden über reguläre Ausdrücke generiert und von Scannern erkannt. K. Bürtlmair, Masterstudiengang ITS //2010/11 Fachhochschule Salzburg Software-Notationen 5/27

17 reguläre Sprachen Mit den verwendeten Konstrukten lassen sich 3 Arten von Regeln bilden: Verkettung (Concatenation) Auswahl (Alternation) über unser oder Wiederholung (Kleene Closure) über unseren Kleene Stern Jede Menge von Zeichen(ketten) die über diese Regeln definiert werden können wird als reguläre Menge (regular set) oder reguläre Sprache (regular language) bezeichnet. Diese werden über reguläre Ausdrücke generiert und von Scannern erkannt. K. Bürtlmair, Masterstudiengang ITS //2010/11 Fachhochschule Salzburg Software-Notationen 5/27

18 reguläre Sprachen Mit den verwendeten Konstrukten lassen sich 3 Arten von Regeln bilden: Verkettung (Concatenation) Auswahl (Alternation) über unser oder Wiederholung (Kleene Closure) über unseren Kleene Stern Jede Menge von Zeichen(ketten) die über diese Regeln definiert werden können wird als reguläre Menge (regular set) oder reguläre Sprache (regular language) bezeichnet. Diese werden über reguläre Ausdrücke generiert und von Scannern erkannt. K. Bürtlmair, Masterstudiengang ITS //2010/11 Fachhochschule Salzburg Software-Notationen 5/27

19 reguläre Sprachen Mit den verwendeten Konstrukten lassen sich 3 Arten von Regeln bilden: Verkettung (Concatenation) Auswahl (Alternation) über unser oder Wiederholung (Kleene Closure) über unseren Kleene Stern Jede Menge von Zeichen(ketten) die über diese Regeln definiert werden können wird als reguläre Menge (regular set) oder reguläre Sprache (regular language) bezeichnet. Diese werden über reguläre Ausdrücke generiert und von Scannern erkannt. K. Bürtlmair, Masterstudiengang ITS //2010/11 Fachhochschule Salzburg Software-Notationen 5/27

20 reguläre Sprachen Mit den verwendeten Konstrukten lassen sich 3 Arten von Regeln bilden: Verkettung (Concatenation) Auswahl (Alternation) über unser oder Wiederholung (Kleene Closure) über unseren Kleene Stern Jede Menge von Zeichen(ketten) die über diese Regeln definiert werden können wird als reguläre Menge (regular set) oder reguläre Sprache (regular language) bezeichnet. Diese werden über reguläre Ausdrücke generiert und von Scannern erkannt. K. Bürtlmair, Masterstudiengang ITS //2010/11 Fachhochschule Salzburg Software-Notationen 5/27

21 Reguläre Ausdrücke Zur Formulierung von regulären Ausdrücken haben wir, ohne es zu erwähnen, eine eigene Metasprache verwendet (Symbole : ) Ein regulärer Ausdruck kann sein: Ein Zeichen Ein leerer String ε Zwei benachbarte reguläre Ausdrücke ergeben einen String generiert vom Ersten gefolgt von einem String generiert vom Zweiten Zwei durch einen getrennte reguläre Ausdrücke ergeben einen String generiert vom Ersten oder vom Zweiten. Ein von einem Kleene-Stern gefolgter regulärere Ausdruck ergibt eine Verkettung von 0 oder mehreren Strings die durch den vorangegengenen Ausdruck generiert werden. K. Bürtlmair, Masterstudiengang ITS //2010/11 Fachhochschule Salzburg Software-Notationen 6/27

22 Reguläre Ausdrücke Zur Formulierung von regulären Ausdrücken haben wir, ohne es zu erwähnen, eine eigene Metasprache verwendet (Symbole : ) Ein regulärer Ausdruck kann sein: Ein Zeichen Ein leerer String ε Zwei benachbarte reguläre Ausdrücke ergeben einen String generiert vom Ersten gefolgt von einem String generiert vom Zweiten Zwei durch einen getrennte reguläre Ausdrücke ergeben einen String generiert vom Ersten oder vom Zweiten. Ein von einem Kleene-Stern gefolgter regulärere Ausdruck ergibt eine Verkettung von 0 oder mehreren Strings die durch den vorangegengenen Ausdruck generiert werden. K. Bürtlmair, Masterstudiengang ITS //2010/11 Fachhochschule Salzburg Software-Notationen 6/27

23 Reguläre Ausdrücke Zur Formulierung von regulären Ausdrücken haben wir, ohne es zu erwähnen, eine eigene Metasprache verwendet (Symbole : ) Ein regulärer Ausdruck kann sein: Ein Zeichen Ein leerer String ε Zwei benachbarte reguläre Ausdrücke ergeben einen String generiert vom Ersten gefolgt von einem String generiert vom Zweiten Zwei durch einen getrennte reguläre Ausdrücke ergeben einen String generiert vom Ersten oder vom Zweiten. Ein von einem Kleene-Stern gefolgter regulärere Ausdruck ergibt eine Verkettung von 0 oder mehreren Strings die durch den vorangegengenen Ausdruck generiert werden. K. Bürtlmair, Masterstudiengang ITS //2010/11 Fachhochschule Salzburg Software-Notationen 6/27

24 Reguläre Ausdrücke Zur Formulierung von regulären Ausdrücken haben wir, ohne es zu erwähnen, eine eigene Metasprache verwendet (Symbole : ) Ein regulärer Ausdruck kann sein: Ein Zeichen Ein leerer String ε Zwei benachbarte reguläre Ausdrücke ergeben einen String generiert vom Ersten gefolgt von einem String generiert vom Zweiten Zwei durch einen getrennte reguläre Ausdrücke ergeben einen String generiert vom Ersten oder vom Zweiten. Ein von einem Kleene-Stern gefolgter regulärere Ausdruck ergibt eine Verkettung von 0 oder mehreren Strings die durch den vorangegengenen Ausdruck generiert werden. K. Bürtlmair, Masterstudiengang ITS //2010/11 Fachhochschule Salzburg Software-Notationen 6/27

25 Reguläre Ausdrücke Zur Formulierung von regulären Ausdrücken haben wir, ohne es zu erwähnen, eine eigene Metasprache verwendet (Symbole : ) Ein regulärer Ausdruck kann sein: Ein Zeichen Ein leerer String ε Zwei benachbarte reguläre Ausdrücke ergeben einen String generiert vom Ersten gefolgt von einem String generiert vom Zweiten Zwei durch einen getrennte reguläre Ausdrücke ergeben einen String generiert vom Ersten oder vom Zweiten. Ein von einem Kleene-Stern gefolgter regulärere Ausdruck ergibt eine Verkettung von 0 oder mehreren Strings die durch den vorangegengenen Ausdruck generiert werden. K. Bürtlmair, Masterstudiengang ITS //2010/11 Fachhochschule Salzburg Software-Notationen 6/27

26 Reguläre Ausdrücke Zur Formulierung von regulären Ausdrücken haben wir, ohne es zu erwähnen, eine eigene Metasprache verwendet (Symbole : ) Ein regulärer Ausdruck kann sein: Ein Zeichen Ein leerer String ε Zwei benachbarte reguläre Ausdrücke ergeben einen String generiert vom Ersten gefolgt von einem String generiert vom Zweiten Zwei durch einen getrennte reguläre Ausdrücke ergeben einen String generiert vom Ersten oder vom Zweiten. Ein von einem Kleene-Stern gefolgter regulärere Ausdruck ergibt eine Verkettung von 0 oder mehreren Strings die durch den vorangegengenen Ausdruck generiert werden. K. Bürtlmair, Masterstudiengang ITS //2010/11 Fachhochschule Salzburg Software-Notationen 6/27

27 Reguläre Ausdrücke Zur Formulierung von regulären Ausdrücken haben wir, ohne es zu erwähnen, eine eigene Metasprache verwendet (Symbole : ) Ein regulärer Ausdruck kann sein: Ein Zeichen Ein leerer String ε Zwei benachbarte reguläre Ausdrücke ergeben einen String generiert vom Ersten gefolgt von einem String generiert vom Zweiten Zwei durch einen getrennte reguläre Ausdrücke ergeben einen String generiert vom Ersten oder vom Zweiten. Ein von einem Kleene-Stern gefolgter regulärere Ausdruck ergibt eine Verkettung von 0 oder mehreren Strings die durch den vorangegengenen Ausdruck generiert werden. K. Bürtlmair, Masterstudiengang ITS //2010/11 Fachhochschule Salzburg Software-Notationen 6/27

28 Reguläre Ausdrücke Eine vorzeichenlose Dezimalzahl in der Gleitkommadarstellung würde wie folgt notiert: digit unsigned int digit digit unsigned number unsigned int ((.unsigned int)ε)((e (+ ε)unsigned int) ε) Bemerkung: wir haben nicht erlaubt mehrere Nonterminals auf der linken Seiten der Produktionsregeln zu verwenden. Dieses Verhalten wird als kontext-sensitive bezeichnet (Graphen sind das NICHT!). Wir haben keine Rekursion erlaubt: A Ax K. Bürtlmair, Masterstudiengang ITS //2010/11 Fachhochschule Salzburg Software-Notationen 7/27

29 Reguläre Ausdrücke Eine vorzeichenlose Dezimalzahl in der Gleitkommadarstellung würde wie folgt notiert: digit unsigned int digit digit unsigned number unsigned int ((.unsigned int)ε)((e (+ ε)unsigned int) ε) Bemerkung: wir haben nicht erlaubt mehrere Nonterminals auf der linken Seiten der Produktionsregeln zu verwenden. Dieses Verhalten wird als kontext-sensitive bezeichnet (Graphen sind das NICHT!). Wir haben keine Rekursion erlaubt: A Ax K. Bürtlmair, Masterstudiengang ITS //2010/11 Fachhochschule Salzburg Software-Notationen 7/27

30 Reguläre Ausdrücke Eine vorzeichenlose Dezimalzahl in der Gleitkommadarstellung würde wie folgt notiert: digit unsigned int digit digit unsigned number unsigned int ((.unsigned int)ε)((e (+ ε)unsigned int) ε) Bemerkung: wir haben nicht erlaubt mehrere Nonterminals auf der linken Seiten der Produktionsregeln zu verwenden. Dieses Verhalten wird als kontext-sensitive bezeichnet (Graphen sind das NICHT!). Wir haben keine Rekursion erlaubt: A Ax K. Bürtlmair, Masterstudiengang ITS //2010/11 Fachhochschule Salzburg Software-Notationen 7/27

31 Reguläre Ausdrücke Eine vorzeichenlose Dezimalzahl in der Gleitkommadarstellung würde wie folgt notiert: digit unsigned int digit digit unsigned number unsigned int ((.unsigned int)ε)((e (+ ε)unsigned int) ε) Bemerkung: wir haben nicht erlaubt mehrere Nonterminals auf der linken Seiten der Produktionsregeln zu verwenden. Dieses Verhalten wird als kontext-sensitive bezeichnet (Graphen sind das NICHT!). Wir haben keine Rekursion erlaubt: A Ax K. Bürtlmair, Masterstudiengang ITS //2010/11 Fachhochschule Salzburg Software-Notationen 7/27

32 Scanner und Parser Scanner oder Lexer werden verwendet um die zentralen Bausteine einer textuellen Sprache, die Tokens zu definieren. Ist ein Token identifieziert wird es vom Parser bearbeitet. Dieser verifiziert ob die Anordung der einzelnen Tokens der Grammatik der Sprache entspricht. Für die Definition verschachtelter Sprachkonstrukte reichen regulären Ausdrücke allerdings nicht mehr. Für die Definition kontextfreier Grammatik wir üblicherweise eine andere Metasprache verwendet, die Backus-Naur Form (BNF) K. Bürtlmair, Masterstudiengang ITS //2010/11 Fachhochschule Salzburg Software-Notationen 8/27

33 Scanner und Parser Scanner oder Lexer werden verwendet um die zentralen Bausteine einer textuellen Sprache, die Tokens zu definieren. Ist ein Token identifieziert wird es vom Parser bearbeitet. Dieser verifiziert ob die Anordung der einzelnen Tokens der Grammatik der Sprache entspricht. Für die Definition verschachtelter Sprachkonstrukte reichen regulären Ausdrücke allerdings nicht mehr. Für die Definition kontextfreier Grammatik wir üblicherweise eine andere Metasprache verwendet, die Backus-Naur Form (BNF) K. Bürtlmair, Masterstudiengang ITS //2010/11 Fachhochschule Salzburg Software-Notationen 8/27

34 Scanner und Parser Scanner oder Lexer werden verwendet um die zentralen Bausteine einer textuellen Sprache, die Tokens zu definieren. Ist ein Token identifieziert wird es vom Parser bearbeitet. Dieser verifiziert ob die Anordung der einzelnen Tokens der Grammatik der Sprache entspricht. Für die Definition verschachtelter Sprachkonstrukte reichen regulären Ausdrücke allerdings nicht mehr. Für die Definition kontextfreier Grammatik wir üblicherweise eine andere Metasprache verwendet, die Backus-Naur Form (BNF) K. Bürtlmair, Masterstudiengang ITS //2010/11 Fachhochschule Salzburg Software-Notationen 8/27

35 Scanner und Parser Scanner oder Lexer werden verwendet um die zentralen Bausteine einer textuellen Sprache, die Tokens zu definieren. Ist ein Token identifieziert wird es vom Parser bearbeitet. Dieser verifiziert ob die Anordung der einzelnen Tokens der Grammatik der Sprache entspricht. Für die Definition verschachtelter Sprachkonstrukte reichen regulären Ausdrücke allerdings nicht mehr. Für die Definition kontextfreier Grammatik wir üblicherweise eine andere Metasprache verwendet, die Backus-Naur Form (BNF) K. Bürtlmair, Masterstudiengang ITS //2010/11 Fachhochschule Salzburg Software-Notationen 8/27

36 Scanner und Parser Scanner oder Lexer werden verwendet um die zentralen Bausteine einer textuellen Sprache, die Tokens zu definieren. Ist ein Token identifieziert wird es vom Parser bearbeitet. Dieser verifiziert ob die Anordung der einzelnen Tokens der Grammatik der Sprache entspricht. Für die Definition verschachtelter Sprachkonstrukte reichen regulären Ausdrücke allerdings nicht mehr. Für die Definition kontextfreier Grammatik wir üblicherweise eine andere Metasprache verwendet, die Backus-Naur Form (BNF) K. Bürtlmair, Masterstudiengang ITS //2010/11 Fachhochschule Salzburg Software-Notationen 8/27

37 BNF und Extended BNF K. Bürtlmair, Masterstudiengang ITS //2010/11 Fachhochschule Salzburg Software-Notationen 9/27

38 BNF Definition Ursprünglich besteht die BNF aus den folgenden Metasymbolen: ::= ist definiert als oder <> kennzeichnen NonTerminals Darstellung einer Zahl mit führender Null: <digit> ::= <number> ::= <digit> <number> <digit> K. Bürtlmair, Masterstudiengang ITS //2010/11 Fachhochschule Salzburg Software-Notationen 10/27

39 BNF Definition Ursprünglich besteht die BNF aus den folgenden Metasymbolen: ::= ist definiert als oder <> kennzeichnen NonTerminals Darstellung einer Zahl mit führender Null: <digit> ::= <number> ::= <digit> <number> <digit> K. Bürtlmair, Masterstudiengang ITS //2010/11 Fachhochschule Salzburg Software-Notationen 10/27

40 EBNF Definition Die erweiterte BNF (EBNF) vereinfacht die teilweise umständlichen BNF Konstrukte z.b. über: Ein einfacherer Zuweisungsoperator, etwa = oder : Ein Endezeichen das jede Regel abschließt, etwa ;. Wenn Terminale unter stehen können die spitzen Klammern entfallen. non_zero_digit= "1" "2" "3" "4" "5" "6" "7" "8 " "9"; digit= "0" non_zero_digit; Ausdrücke können geklammert werden identifier = letter (letter digit); K. Bürtlmair, Masterstudiengang ITS //2010/11 Fachhochschule Salzburg Software-Notationen 11/27

41 EBNF Definition Die erweiterte BNF (EBNF) vereinfacht die teilweise umständlichen BNF Konstrukte z.b. über: Ein einfacherer Zuweisungsoperator, etwa = oder : Ein Endezeichen das jede Regel abschließt, etwa ;. Wenn Terminale unter stehen können die spitzen Klammern entfallen. non_zero_digit= "1" "2" "3" "4" "5" "6" "7" "8 " "9"; digit= "0" non_zero_digit; Ausdrücke können geklammert werden identifier = letter (letter digit); K. Bürtlmair, Masterstudiengang ITS //2010/11 Fachhochschule Salzburg Software-Notationen 11/27

42 EBNF Definition Die erweiterte BNF (EBNF) vereinfacht die teilweise umständlichen BNF Konstrukte z.b. über: Ein einfacherer Zuweisungsoperator, etwa = oder : Ein Endezeichen das jede Regel abschließt, etwa ;. Wenn Terminale unter stehen können die spitzen Klammern entfallen. non_zero_digit= "1" "2" "3" "4" "5" "6" "7" "8 " "9"; digit= "0" non_zero_digit; Ausdrücke können geklammert werden identifier = letter (letter digit); K. Bürtlmair, Masterstudiengang ITS //2010/11 Fachhochschule Salzburg Software-Notationen 11/27

43 EBNF Definition Die erweiterte BNF (EBNF) vereinfacht die teilweise umständlichen BNF Konstrukte z.b. über: Ein einfacherer Zuweisungsoperator, etwa = oder : Ein Endezeichen das jede Regel abschließt, etwa ;. Wenn Terminale unter stehen können die spitzen Klammern entfallen. non_zero_digit= "1" "2" "3" "4" "5" "6" "7" "8 " "9"; digit= "0" non_zero_digit; Ausdrücke können geklammert werden identifier = letter (letter digit); K. Bürtlmair, Masterstudiengang ITS //2010/11 Fachhochschule Salzburg Software-Notationen 11/27

44 EBNF Definition Die erweiterte BNF (EBNF) vereinfacht die teilweise umständlichen BNF Konstrukte z.b. über: Ein einfacherer Zuweisungsoperator, etwa = oder : Ein Endezeichen das jede Regel abschließt, etwa ;. Wenn Terminale unter stehen können die spitzen Klammern entfallen. non_zero_digit= "1" "2" "3" "4" "5" "6" "7" "8 " "9"; digit= "0" non_zero_digit; Ausdrücke können geklammert werden identifier = letter (letter digit); K. Bürtlmair, Masterstudiengang ITS //2010/11 Fachhochschule Salzburg Software-Notationen 11/27

45 vereinfachte EBNF für Graphen Eine Notation für unser Kleenesymbol und optionale Terme: nach Wirth über : {} Wiederholung: 0 oder mehrmals [] Optional Beispiel: number = digit{digit}; an reguläre Ausdrücke agelehnt (Beispielsweise ANTLR - ANother Tool for Language Recognition) * Wiederholung: 0 oder mehrmals + Wdh. 1 oder mehrmals? Optional Beispiel: number = digit+; K. Bürtlmair, Masterstudiengang ITS //2010/11 Fachhochschule Salzburg Software-Notationen 12/27

46 vereinfachte EBNF für Graphen Eine Notation für unser Kleenesymbol und optionale Terme: nach Wirth über : {} Wiederholung: 0 oder mehrmals [] Optional Beispiel: number = digit{digit}; an reguläre Ausdrücke agelehnt (Beispielsweise ANTLR - ANother Tool for Language Recognition) * Wiederholung: 0 oder mehrmals + Wdh. 1 oder mehrmals? Optional Beispiel: number = digit+; K. Bürtlmair, Masterstudiengang ITS //2010/11 Fachhochschule Salzburg Software-Notationen 12/27

47 vereinfachte EBNF für Graphen 1. Sprachkonstrukt: digraph name{ /*Anweisungen*/ } 2. Anweisungen können folgende Form haben: 2.1 Attributdefinitionen: node[shape= "circle"] edge[arrowhead= "vee"] 2.2 Diagrammfluß: a -> b -> c -> a K. Bürtlmair, Masterstudiengang ITS //2010/11 Fachhochschule Salzburg Software-Notationen 13/27

48 vereinfachte EBNF für Graphen 1. Sprachkonstrukt: digraph name{ /*Anweisungen*/ } 2. Anweisungen können folgende Form haben: 2.1 Attributdefinitionen: node[shape= "circle"] edge[arrowhead= "vee"] 2.2 Diagrammfluß: a -> b -> c -> a K. Bürtlmair, Masterstudiengang ITS //2010/11 Fachhochschule Salzburg Software-Notationen 13/27

49 EBNF für DOT (EBNF für Graphen) heißt: ein Token für den Lexer.: ID : ( a.. z A.. Z _ ) ( a.. z A.. Z _ )*; die Regeln für den Parser: graph : (graph digraph) ID? { stmt_list } ; stmt_list : (stmt ( ; )?)*; K. Bürtlmair, Masterstudiengang ITS //2010/11 Fachhochschule Salzburg Software-Notationen 14/27

50 EBNF für DOT (EBNF für Graphen) heißt: ein Token für den Lexer.: ID : ( a.. z A.. Z _ ) ( a.. z A.. Z _ )*; die Regeln für den Parser: graph : (graph digraph) ID? { stmt_list } ; stmt_list : (stmt ( ; )?)*; K. Bürtlmair, Masterstudiengang ITS //2010/11 Fachhochschule Salzburg Software-Notationen 14/27

51 EBNF für DOT (EBNF für Graphen) heißt: ein Token für den Lexer.: ID : ( a.. z A.. Z _ ) ( a.. z A.. Z _ )*; die Regeln für den Parser: graph : (graph digraph) ID? { stmt_list } ; stmt_list : (stmt ( ; )?)*; K. Bürtlmair, Masterstudiengang ITS //2010/11 Fachhochschule Salzburg Software-Notationen 14/27

52 EBNF für DOT (EBNF für Graphen) mit den Anweisungen: stmt : (attr_stmt flow_stmt) ( ; )?; samt Attributdefinitionen: attr_stmt : ( node edge )attr_list ; attr_list : ( [ a_list ] )+; a_list : ID = ID (, )?;... und dem Diagrammfluß: flow_stmt : ID flow_list+ ; flow_list : -> ID;... K. Bürtlmair, Masterstudiengang ITS //2010/11 Fachhochschule Salzburg Software-Notationen 15/27

53 EBNF für DOT (EBNF für Graphen) mit den Anweisungen: stmt : (attr_stmt flow_stmt) ( ; )?; samt Attributdefinitionen: attr_stmt : ( node edge )attr_list ; attr_list : ( [ a_list ] )+; a_list : ID = ID (, )?;... und dem Diagrammfluß: flow_stmt : ID flow_list+ ; flow_list : -> ID;... K. Bürtlmair, Masterstudiengang ITS //2010/11 Fachhochschule Salzburg Software-Notationen 15/27

54 EBNF für DOT (EBNF für Graphen) mit den Anweisungen: stmt : (attr_stmt flow_stmt) ( ; )?; samt Attributdefinitionen: attr_stmt : ( node edge )attr_list ; attr_list : ( [ a_list ] )+; a_list : ID = ID (, )?;... und dem Diagrammfluß: flow_stmt : ID flow_list+ ; flow_list : -> ID;... K. Bürtlmair, Masterstudiengang ITS //2010/11 Fachhochschule Salzburg Software-Notationen 15/27

55 und was machen wir mit unseren Anweisungen So speichern daß wir sie bestmöglich verarbeiten können, übersetzen oder interpretieren! Diese Zwischenform (intermediate representation, IR) wird somit sinnvollerweise über Bäume (syntax tree, ST ) repräsentiert. Etwa für eine Instanz unserer Diagrammflußregeln idle > active > idle; flow_stmt active flow_list flow_list ; -> idle -> active K. Bürtlmair, Masterstudiengang ITS //2010/11 Fachhochschule Salzburg Software-Notationen 16/27

56 Abstrakte Grammatik-Bäume Nett, aber ziemlich noisy. => Wir speichen nur die für die Verarbeitung notwendigen Knoten. Und das erreichen wir über eine geeignete Operator-Operanden Notation. -> node idle -> = = active idle shape circle style filled Nennt man Abstract Syntax Tree, AST K. Bürtlmair, Masterstudiengang ITS //2010/11 Fachhochschule Salzburg Software-Notationen 17/27

57 "Walking the Tree" über einen eingebauten Mechanismus - heißt: jeder AST-Knoten stellt eigene Bearbeitungsroutinen zur Verfügung. über einen externen Mechanismus (externer Visitor Muster) - heißt: Die Bearbeitungsroutinen befinden sich in einem eigenen Modul das durch die AST-Knoten iteriert. Wird der Visitor direkt aus der Grammatik generiert heißt das Ding Tree Grammar. Dazu muss unsere Metasprache um einen Umschreibmechanismus erweitert werden. In ANTLR beispielsweise: stmt: ID > flow_list > ^( > ID flow_list); heißt: -> repräsentiert den Wurzelknoten eines K. Bürtlmair, Masterstudiengang ITS //2010/11 Fachhochschule Salzburg Software-Notationen 18/27

58 "Walking the Tree" über einen eingebauten Mechanismus - heißt: jeder AST-Knoten stellt eigene Bearbeitungsroutinen zur Verfügung. über einen externen Mechanismus (externer Visitor Muster) - heißt: Die Bearbeitungsroutinen befinden sich in einem eigenen Modul das durch die AST-Knoten iteriert. Wird der Visitor direkt aus der Grammatik generiert heißt das Ding Tree Grammar. Dazu muss unsere Metasprache um einen Umschreibmechanismus erweitert werden. In ANTLR beispielsweise: stmt: ID > flow_list > ^( > ID flow_list); heißt: -> repräsentiert den Wurzelknoten eines K. Bürtlmair, Masterstudiengang ITS //2010/11 Fachhochschule Salzburg Software-Notationen 18/27

59 "Walking the Tree" über einen eingebauten Mechanismus - heißt: jeder AST-Knoten stellt eigene Bearbeitungsroutinen zur Verfügung. über einen externen Mechanismus (externer Visitor Muster) - heißt: Die Bearbeitungsroutinen befinden sich in einem eigenen Modul das durch die AST-Knoten iteriert. Wird der Visitor direkt aus der Grammatik generiert heißt das Ding Tree Grammar. Dazu muss unsere Metasprache um einen Umschreibmechanismus erweitert werden. In ANTLR beispielsweise: stmt: ID > flow_list > ^( > ID flow_list); heißt: -> repräsentiert den Wurzelknoten eines K. Bürtlmair, Masterstudiengang ITS //2010/11 Fachhochschule Salzburg Software-Notationen 18/27

60 "Walking the Tree" über einen eingebauten Mechanismus - heißt: jeder AST-Knoten stellt eigene Bearbeitungsroutinen zur Verfügung. über einen externen Mechanismus (externer Visitor Muster) - heißt: Die Bearbeitungsroutinen befinden sich in einem eigenen Modul das durch die AST-Knoten iteriert. Wird der Visitor direkt aus der Grammatik generiert heißt das Ding Tree Grammar. Dazu muss unsere Metasprache um einen Umschreibmechanismus erweitert werden. In ANTLR beispielsweise: stmt: ID > flow_list > ^( > ID flow_list); heißt: -> repräsentiert den Wurzelknoten eines K. Bürtlmair, Masterstudiengang ITS //2010/11 Fachhochschule Salzburg Software-Notationen 18/27

61 "Walking the Tree" über einen eingebauten Mechanismus - heißt: jeder AST-Knoten stellt eigene Bearbeitungsroutinen zur Verfügung. über einen externen Mechanismus (externer Visitor Muster) - heißt: Die Bearbeitungsroutinen befinden sich in einem eigenen Modul das durch die AST-Knoten iteriert. Wird der Visitor direkt aus der Grammatik generiert heißt das Ding Tree Grammar. Dazu muss unsere Metasprache um einen Umschreibmechanismus erweitert werden. In ANTLR beispielsweise: stmt: ID > flow_list > ^( > ID flow_list); heißt: -> repräsentiert den Wurzelknoten eines K. Bürtlmair, Masterstudiengang ITS //2010/11 Fachhochschule Salzburg Software-Notationen 18/27

62 "Walking the Tree" über einen eingebauten Mechanismus - heißt: jeder AST-Knoten stellt eigene Bearbeitungsroutinen zur Verfügung. über einen externen Mechanismus (externer Visitor Muster) - heißt: Die Bearbeitungsroutinen befinden sich in einem eigenen Modul das durch die AST-Knoten iteriert. Wird der Visitor direkt aus der Grammatik generiert heißt das Ding Tree Grammar. Dazu muss unsere Metasprache um einen Umschreibmechanismus erweitert werden. In ANTLR beispielsweise: stmt: ID > flow_list > ^( > ID flow_list); heißt: -> repräsentiert den Wurzelknoten eines K. Bürtlmair, Masterstudiengang ITS //2010/11 Fachhochschule Salzburg Software-Notationen 18/27

63 Tree Grammars mit xtext Dieses Muster erlaubt nun eine Verbindung von Modell und Grammatik! Wir müssen nur die Regeln in Objekte unseres Modells umschreiben und in den Baum einhängen! Dazu wurde im Eclipse Projekt XText eine einfachere Notation (basierend auf der ANTLR-Notation) definiert. Der Regelname entspricht einem Ecore-Objekt (Klasse) gleichen Namens. Die Features werden über einen Zuweisungsoperator zugeordnet. = Operator Feature= Token += Operator Token zu Featureliste?= wird nur ausgewertet wenn Feature wahr ist. K. Bürtlmair, Masterstudiengang ITS //2010/11 Fachhochschule Salzburg Software-Notationen 19/27

64 Tree Grammars mit xtext Dieses Muster erlaubt nun eine Verbindung von Modell und Grammatik! Wir müssen nur die Regeln in Objekte unseres Modells umschreiben und in den Baum einhängen! Dazu wurde im Eclipse Projekt XText eine einfachere Notation (basierend auf der ANTLR-Notation) definiert. Der Regelname entspricht einem Ecore-Objekt (Klasse) gleichen Namens. Die Features werden über einen Zuweisungsoperator zugeordnet. = Operator Feature= Token += Operator Token zu Featureliste?= wird nur ausgewertet wenn Feature wahr ist. K. Bürtlmair, Masterstudiengang ITS //2010/11 Fachhochschule Salzburg Software-Notationen 19/27

65 Tree Grammars mit xtext Dieses Muster erlaubt nun eine Verbindung von Modell und Grammatik! Wir müssen nur die Regeln in Objekte unseres Modells umschreiben und in den Baum einhängen! Dazu wurde im Eclipse Projekt XText eine einfachere Notation (basierend auf der ANTLR-Notation) definiert. Der Regelname entspricht einem Ecore-Objekt (Klasse) gleichen Namens. Die Features werden über einen Zuweisungsoperator zugeordnet. = Operator Feature= Token += Operator Token zu Featureliste?= wird nur ausgewertet wenn Feature wahr ist. K. Bürtlmair, Masterstudiengang ITS //2010/11 Fachhochschule Salzburg Software-Notationen 19/27

66 Tree Grammars mit xtext Dieses Muster erlaubt nun eine Verbindung von Modell und Grammatik! Wir müssen nur die Regeln in Objekte unseres Modells umschreiben und in den Baum einhängen! Dazu wurde im Eclipse Projekt XText eine einfachere Notation (basierend auf der ANTLR-Notation) definiert. Der Regelname entspricht einem Ecore-Objekt (Klasse) gleichen Namens. Die Features werden über einen Zuweisungsoperator zugeordnet. = Operator Feature= Token += Operator Token zu Featureliste?= wird nur ausgewertet wenn Feature wahr ist. K. Bürtlmair, Masterstudiengang ITS //2010/11 Fachhochschule Salzburg Software-Notationen 19/27

67 Tree Grammars mit xtext Dieses Muster erlaubt nun eine Verbindung von Modell und Grammatik! Wir müssen nur die Regeln in Objekte unseres Modells umschreiben und in den Baum einhängen! Dazu wurde im Eclipse Projekt XText eine einfachere Notation (basierend auf der ANTLR-Notation) definiert. Der Regelname entspricht einem Ecore-Objekt (Klasse) gleichen Namens. Die Features werden über einen Zuweisungsoperator zugeordnet. = Operator Feature= Token += Operator Token zu Featureliste?= wird nur ausgewertet wenn Feature wahr ist. K. Bürtlmair, Masterstudiengang ITS //2010/11 Fachhochschule Salzburg Software-Notationen 19/27

68 Unser Graphgenerator in XText Unser Graph (Klasse Graph) besteht aus Knotendefinitionen und Knotenübergängen. Graph : (nodes+= Node)* (transitions+= Transition)+; Die Klasse Knoten hat einen Namen: Node: node name = ID; K. Bürtlmair, Masterstudiengang ITS //2010/11 Fachhochschule Salzburg Software-Notationen 20/27

69 Unser Graphgenerator in XText Unser Graph (Klasse Graph) besteht aus Knotendefinitionen und Knotenübergängen. Graph : (nodes+= Node)* (transitions+= Transition)+; Die Klasse Knoten hat einen Namen: Node: node name = ID; K. Bürtlmair, Masterstudiengang ITS //2010/11 Fachhochschule Salzburg Software-Notationen 20/27

70 Unser Graphgenerator in XText Für die Übergänge brauchen wir Referenzen auf die beteiligten Knoten. Heißt der Parser muss diese Elemente nach dem Konsumieren speichern. Wir brauchen also eine Symboltabelle mit globaler Sichtbarkeit (wir haben -noch- keine Verschachtelungen). Legt XText automatisch an. Der Zugriff erfolgt über sog. Cross-References : Transition: src= [Node] -> dst= [Node]; K. Bürtlmair, Masterstudiengang ITS //2010/11 Fachhochschule Salzburg Software-Notationen 21/27

71 Unser Graphgenerator in XText Für die Übergänge brauchen wir Referenzen auf die beteiligten Knoten. Heißt der Parser muss diese Elemente nach dem Konsumieren speichern. Wir brauchen also eine Symboltabelle mit globaler Sichtbarkeit (wir haben -noch- keine Verschachtelungen). Legt XText automatisch an. Der Zugriff erfolgt über sog. Cross-References : Transition: src= [Node] -> dst= [Node]; K. Bürtlmair, Masterstudiengang ITS //2010/11 Fachhochschule Salzburg Software-Notationen 21/27

72 Unser Graphgenerator in XText Für die Übergänge brauchen wir Referenzen auf die beteiligten Knoten. Heißt der Parser muss diese Elemente nach dem Konsumieren speichern. Wir brauchen also eine Symboltabelle mit globaler Sichtbarkeit (wir haben -noch- keine Verschachtelungen). Legt XText automatisch an. Der Zugriff erfolgt über sog. Cross-References : Transition: src= [Node] -> dst= [Node]; K. Bürtlmair, Masterstudiengang ITS //2010/11 Fachhochschule Salzburg Software-Notationen 21/27

73 Unser Graphgenerator in XText Für die Übergänge brauchen wir Referenzen auf die beteiligten Knoten. Heißt der Parser muss diese Elemente nach dem Konsumieren speichern. Wir brauchen also eine Symboltabelle mit globaler Sichtbarkeit (wir haben -noch- keine Verschachtelungen). Legt XText automatisch an. Der Zugriff erfolgt über sog. Cross-References : Transition: src= [Node] -> dst= [Node]; K. Bürtlmair, Masterstudiengang ITS //2010/11 Fachhochschule Salzburg Software-Notationen 21/27

74 Generierte Artefakte Die Grammatik generiert folgendes Ecore-Modell: und der generierte Editor validiert folgende Eingaben: node a node b a->b K. Bürtlmair, Masterstudiengang ITS //2010/11 Fachhochschule Salzburg Software-Notationen 22/27

75 Und weiter? Wir haben einen Baum der unsere Sprache repräsentiert. Also können wir durch seine Knoten iterieren und unsere Sprachkonstrukte in eine andere Sprache übersetzen. Interpreter: Dieser simuliert einen idealisierten Prozessor. Somit können alle Anweisungen unmittelbar nach dem Übersetzen ausgeführt werden. Entweder direkt (High-Level_Interpreter) oder über Bytecode (Low-Level-Interpreter) Translator: Dieser bildet die Konstrukte einer Inputsprache in die einer Outputsprache ab. K. Bürtlmair, Masterstudiengang ITS //2010/11 Fachhochschule Salzburg Software-Notationen 23/27

76 Und weiter? Wir haben einen Baum der unsere Sprache repräsentiert. Also können wir durch seine Knoten iterieren und unsere Sprachkonstrukte in eine andere Sprache übersetzen. Interpreter: Dieser simuliert einen idealisierten Prozessor. Somit können alle Anweisungen unmittelbar nach dem Übersetzen ausgeführt werden. Entweder direkt (High-Level_Interpreter) oder über Bytecode (Low-Level-Interpreter) Translator: Dieser bildet die Konstrukte einer Inputsprache in die einer Outputsprache ab. K. Bürtlmair, Masterstudiengang ITS //2010/11 Fachhochschule Salzburg Software-Notationen 23/27

77 Und weiter? Wir haben einen Baum der unsere Sprache repräsentiert. Also können wir durch seine Knoten iterieren und unsere Sprachkonstrukte in eine andere Sprache übersetzen. Interpreter: Dieser simuliert einen idealisierten Prozessor. Somit können alle Anweisungen unmittelbar nach dem Übersetzen ausgeführt werden. Entweder direkt (High-Level_Interpreter) oder über Bytecode (Low-Level-Interpreter) Translator: Dieser bildet die Konstrukte einer Inputsprache in die einer Outputsprache ab. K. Bürtlmair, Masterstudiengang ITS //2010/11 Fachhochschule Salzburg Software-Notationen 23/27

78 Und weiter? Wir haben einen Baum der unsere Sprache repräsentiert. Also können wir durch seine Knoten iterieren und unsere Sprachkonstrukte in eine andere Sprache übersetzen. Interpreter: Dieser simuliert einen idealisierten Prozessor. Somit können alle Anweisungen unmittelbar nach dem Übersetzen ausgeführt werden. Entweder direkt (High-Level_Interpreter) oder über Bytecode (Low-Level-Interpreter) Translator: Dieser bildet die Konstrukte einer Inputsprache in die einer Outputsprache ab. K. Bürtlmair, Masterstudiengang ITS //2010/11 Fachhochschule Salzburg Software-Notationen 23/27

79 Und weiter? Wir haben einen Baum der unsere Sprache repräsentiert. Also können wir durch seine Knoten iterieren und unsere Sprachkonstrukte in eine andere Sprache übersetzen. Interpreter: Dieser simuliert einen idealisierten Prozessor. Somit können alle Anweisungen unmittelbar nach dem Übersetzen ausgeführt werden. Entweder direkt (High-Level_Interpreter) oder über Bytecode (Low-Level-Interpreter) Translator: Dieser bildet die Konstrukte einer Inputsprache in die einer Outputsprache ab. K. Bürtlmair, Masterstudiengang ITS //2010/11 Fachhochschule Salzburg Software-Notationen 23/27

80 Konzepte für Übersetzer Syntax -Directed: Der Parser enthält bereits die Anweisungen für den Output. Es wird somit kein IR erzeugt. Beispielsweise in ANTLR: mult : a=id b=id {System.out.println($a.text+ +$b. text);} Hoher Pogrammieraufwand! Hoher Spezialisierungsgrad! K. Bürtlmair, Masterstudiengang ITS //2010/11 Fachhochschule Salzburg Software-Notationen 24/27

81 Templates Generatoren werden meist über Templates realisiert. Templates sind Textfiles mit Löchern, meist über << >> gekennzeichnet in die der IR-Walker die Outputinformation einfüllt. Dazu verfügt jeder Knoten über eine tostring() Funktion die die die relevante Information in ein Text-Template knallt. K. Bürtlmair, Masterstudiengang ITS //2010/11 Fachhochschule Salzburg Software-Notationen 25/27

82 Templates Generatoren werden meist über Templates realisiert. Templates sind Textfiles mit Löchern, meist über << >> gekennzeichnet in die der IR-Walker die Outputinformation einfüllt. Dazu verfügt jeder Knoten über eine tostring() Funktion die die die relevante Information in ein Text-Template knallt. K. Bürtlmair, Masterstudiengang ITS //2010/11 Fachhochschule Salzburg Software-Notationen 25/27

83 Templates Generatoren werden meist über Templates realisiert. Templates sind Textfiles mit Löchern, meist über << >> gekennzeichnet in die der IR-Walker die Outputinformation einfüllt. Dazu verfügt jeder Knoten über eine tostring() Funktion die die die relevante Information in ein Text-Template knallt. K. Bürtlmair, Masterstudiengang ITS //2010/11 Fachhochschule Salzburg Software-Notationen 25/27

84 Templates Beispielsweise in ein graphviz Template. public String tostring(){ //.. // get instance of template instance.setattribute("from", this. from); instance.setattribute("to", this. to); //.. } Das Template könnte wie folgt formuliert sein ( edge(from, to) ::= <<"<from>" > "<to>">> K. Bürtlmair, Masterstudiengang ITS //2010/11 Fachhochschule Salzburg Software-Notationen 26/27

85 Templates Beispielsweise in ein graphviz Template. public String tostring(){ //.. // get instance of template instance.setattribute("from", this. from); instance.setattribute("to", this. to); //.. } Das Template könnte wie folgt formuliert sein ( edge(from, to) ::= <<"<from>" > "<to>">> K. Bürtlmair, Masterstudiengang ITS //2010/11 Fachhochschule Salzburg Software-Notationen 26/27

86 <<ENDFILE>> K. Bürtlmair, Masterstudiengang <<ENDDEFINE>> ITS //2010/11 Fachhochschule Salzburg Software-Notationen 27/27 Templates für XText XText verfügt über eine einfach zu handhabende Templatesprache - XPand. Die Templates werden in.xpt Dateien hinterlegt. Beispielsweise Main.xpt: <<IMPORT Graph>> <<DEFINE main FOR Graph>> <<FILE "testgraph.dot">> <<FOREACH transitions AS t>> digraph test{ <<t.src. name>> > <<t.dst.name>> ; } <<ENDFOREACH>>

87 <<ENDFILE>> K. Bürtlmair, Masterstudiengang <<ENDDEFINE>> ITS //2010/11 Fachhochschule Salzburg Software-Notationen 27/27 Templates für XText XText verfügt über eine einfach zu handhabende Templatesprache - XPand. Die Templates werden in.xpt Dateien hinterlegt. Beispielsweise Main.xpt: <<IMPORT Graph>> <<DEFINE main FOR Graph>> <<FILE "testgraph.dot">> <<FOREACH transitions AS t>> digraph test{ <<t.src. name>> > <<t.dst.name>> ; } <<ENDFOREACH>>

DSLs mit Xtext entwerfen. 17.08.2012, A. Arnold

DSLs mit Xtext entwerfen. 17.08.2012, A. Arnold DSLs mit Xtext entwerfen 17.08.2012, A. Arnold Copyright 2012 anderscore GmbH Inhalt 1. Was sind DSLs? 2. Xtext Konzepte 3. Einführung ins Sprachdesign 4. Hands On! 3 4 8 20 2 Was sind DSLs? Domain Specific

Mehr

Sprachen sind durch folgenden Aufbau gekennzeichnet:

Sprachen sind durch folgenden Aufbau gekennzeichnet: BNF UND SYNTAXDIAGRAMME 1. Allgemeines 1.1 Aufbau von Sprachen BNF und Syntaxdiagramme werden verwendet, um die Syntax einer Sprache darzustellen und graphisch zu veranschaulichen. Mit ihnen können entweder

Mehr

3.1 Reservierte Wörter

3.1 Reservierte Wörter 3.1 Reservierte Wörter int Bezeichner für Basis-Typen; if, else, while Schlüsselwörter aus Programm-Konstrukten; (,), ",, {,},,,; Sonderzeichen. 62 3.2 Was ist ein erlaubter Name? Schritt 1: Angabe der

Mehr

Kapitel 2. Methoden zur Beschreibung von Syntax

Kapitel 2. Methoden zur Beschreibung von Syntax 1 Kapitel 2 Methoden zur Beschreibung von Syntax Grammatik, die sogar Könige zu kontrollieren weiß... aus Molière, Les Femmes Savantes (1672), 2. Akt 2 Ziele Zwei Standards zur Definition der Syntax von

Mehr

Definition von domänenspezifischen Sprachen mit Xtext: Einführung

Definition von domänenspezifischen Sprachen mit Xtext: Einführung Definition von domänenspezifischen Sprachen mit Xtext: Einführung 28. November 2012 Taentzer Modellgetriebene Softwareentwicklung 246 Überblick Was ist zu tun, wenn wir selbst einen Ansatz für modellgetriebenen

Mehr

3 Syntax von Programmiersprachen

3 Syntax von Programmiersprachen 3 Syntax von Programmiersprachen Syntax ( Lehre vom Satzbau ) formale Beschreibung des Aufbaus der Worte und Sätze, die zu einer Sprache gehören; im Falle einer Programmiersprache Festlegung, wie Programme

Mehr

3 Syntax von Programmiersprachen

3 Syntax von Programmiersprachen 3 Syntax von Programmiersprachen Syntax ( Lehre vom Satzbau ) formale Beschreibung des Aufbaus der Worte und Sätze, die zu einer Sprache gehören; im Falle einer Programmiersprache Festlegung, wie Programme

Mehr

Fragenkatalog 2. Abgabegespräch Formale Modellierung 3 Reguläre Sprachen

Fragenkatalog 2. Abgabegespräch Formale Modellierung 3 Reguläre Sprachen Fragenkatalog 2. Abgabegespräch Formale Modellierung 3 Reguläre Sprachen 1. Was ist eine formale Sprache? Menge von Zeichenketten, die aus den Symbolen eines beliebigen Alphabets aufgebaut sind. Zeichenkette:

Mehr

Inhalt Kapitel 11: Formale Syntax und Semantik

Inhalt Kapitel 11: Formale Syntax und Semantik Inhalt Kapitel 11: Formale Syntax und Semantik 1 Abstrakte und konkrete Syntax 2 Lexikalische Analyse 3 Formale Sprachen, Grammatiken, BNF 4 Syntaxanalyse konkret 266 Abstrakte und konkrete Syntax Abstrakte

Mehr

7. Syntax: Grammatiken, EBNF

7. Syntax: Grammatiken, EBNF 7. Syntax: Grammatiken, EBNF Teil 1 Sehr schönes Beispiel für Notwendigkeit der Theoretischen Informatik für Belange der Praktischen Informatik Vertiefung in: Einführung in die Theoretische Informatik

Mehr

Kapitel 2: Methoden zur Beschreibung von Syntax

Kapitel 2: Methoden zur Beschreibung von Syntax Einführung in die Informatik: Programmierung und Softwareentwicklung Wintersemester 2018/19 Kapitel 2: Methoden zur Beschreibung von Syntax Prof. Dr. David Sabel Lehr- und Forschungseinheit für Theoretische

Mehr

Lexikalische Programmanalyse der Scanner

Lexikalische Programmanalyse der Scanner Der Scanner führt die lexikalische Analyse des Programms durch Er sammelt (scanned) Zeichen für Zeichen und baut logisch zusammengehörige Zeichenketten (Tokens) aus diesen Zeichen Zur formalen Beschreibung

Mehr

Einführung in die Programmierung für NF. Übung

Einführung in die Programmierung für NF. Übung Einführung in die Programmierung für NF Übung 03 06.11.2013 Inhalt Methoden in Java Gültigkeitsbereiche EBNF Einführung in die Programmierung für NF Übung 03 2 Methoden in Java In Methoden werden Ausdrücke

Mehr

Einführung in die Informatik. Programming Languages

Einführung in die Informatik. Programming Languages Einführung in die Informatik Programming Languages Beschreibung von Programmiersprachen Wolfram Burgard Motivation und Einleitung Wir haben in den vorangehenden Kapiteln meistens vollständige Java- Programme

Mehr

2.2 Syntax, Semantik und Simulation

2.2 Syntax, Semantik und Simulation 2.2 Syntax, Semantik und Simulation Ein Java Programm ist eine Folge von Buchstaben. Nicht jede Folge von Buchstaben ist ein korrektes Java Programm! Wie kann man alle korrekten Java Programme beschreiben?

Mehr

Software Entwicklung 1. Fallstudie: Arithmetische Ausdrücke. Rekursive Klassen. Überblick. Annette Bieniusa / Arnd Poetzsch-Heffter

Software Entwicklung 1. Fallstudie: Arithmetische Ausdrücke. Rekursive Klassen. Überblick. Annette Bieniusa / Arnd Poetzsch-Heffter Software Entwicklung 1 Annette Bieniusa / Arnd Poetzsch-Heffter Fallstudie: Arithmetische Ausdrücke AG Softech FB Informatik TU Kaiserslautern Bieniusa/Poetzsch-Heffter Software Entwicklung 1 2/ 33 Überblick

Mehr

17. Rekursion 2. Bau eines Taschenrechners, Ströme, Formale Grammatiken, Extended Backus Naur Form (EBNF), Parsen von Ausdrücken

17. Rekursion 2. Bau eines Taschenrechners, Ströme, Formale Grammatiken, Extended Backus Naur Form (EBNF), Parsen von Ausdrücken 564 17. Rekursion 2 Bau eines Taschenrechners, Ströme, Formale Grammatiken, Extended Backus Naur Form (EBNF), Parsen von Ausdrücken Motivation: Taschenrechner 565 Beispiel Eingabe: 3 + 5 Ausgabe: 8 Binäre

Mehr

Software Entwicklung 1

Software Entwicklung 1 Software Entwicklung 1 Annette Bieniusa / Arnd Poetzsch-Heffter AG Softech FB Informatik TU Kaiserslautern Fallstudie: Arithmetische Ausdrücke Bieniusa/Poetzsch-Heffter Software Entwicklung 1 2/ 33 Überblick

Mehr

Kapitel 5: Syntaxdiagramme und Grammatikregeln

Kapitel 5: Syntaxdiagramme und Grammatikregeln 5. Syntaxdiagramme und Grammatikregeln 5-1 Objektorientierte Programmierung (Winter 2010/2011) Kapitel 5: Syntaxdiagramme und Grammatikregeln Syntaxdiagramme Grammatikregeln (kontextfrei) Beispiele: Lexikalische

Mehr

15. Rekursion. Rekursive Funktionen, Korrektheit, Terminierung, Aufrufstapel, Bau eines Taschenrechners, BNF, Parsen

15. Rekursion. Rekursive Funktionen, Korrektheit, Terminierung, Aufrufstapel, Bau eines Taschenrechners, BNF, Parsen 453 15. Rekursion Rekursive Funktionen, Korrektheit, Terminierung, Aufrufstapel, Bau eines Taschenrechners, BNF, Parsen Mathematische Rekursion 454 Viele mathematische Funktionen sind sehr natürlich rekursiv

Mehr

Einführung Compilergenerierung Bewertung Referenzen. SableCC. Benjamin Daeumlich

Einführung Compilergenerierung Bewertung Referenzen. SableCC. Benjamin Daeumlich 06.07.2006 Gliederung 1 2 3 4 . Autor und Name Features Autor Autor und Name Features Autor: Étienne Gagnon : Teil seiner Masterarbeit an der McGill-Universität Montreal vom März 1998 Name Autor und Name

Mehr

Interpreter - Gliederung

Interpreter - Gliederung Institut für Informatik Ludwig-Maximilian Universität Interpreter - Gliederung Programmiersprache Syntax Konkrete Syntax Abstrakter Syntax Baum (Abstrakte Syntax) Parser Syntaktische Struktur einer Sprache

Mehr

Definition von domänenspezifischen Sprachen mit Xtext: Einführung. 19. November 2014

Definition von domänenspezifischen Sprachen mit Xtext: Einführung. 19. November 2014 Definition von domänenspezifischen Sprachen mit Xtext: Einführung 19. November 2014 Überblick Was ist zu tun, wenn wir selbst einen Ansatz für modellgetriebenen Entwicklung definieren wollen? Anforderungserfassung

Mehr

Syntax von Programmiersprachen

Syntax von Programmiersprachen "Grammatik, die sogar Könige zu kontrollieren weiß... aus Molière, Les Femmes Savantes (1672), 2. Akt Syntax von Programmiersprachen Prof. Dr. Christian Böhm in Zusammenarbeit mit Gefei Zhang WS 07/08

Mehr

Syntax von Programmiersprachen

Syntax von Programmiersprachen "Grammatik, die sogar Könige zu kontrollieren weiß... aus Molière, Les Femmes Savantes (1672), 2. Akt Syntax von Programmiersprachen Prof. Dr. Martin Wirsing in Zusammenarbeit mit Michael Barth, Philipp

Mehr

Übersicht: Inhalt und Ziele. Kapitel 2: Methoden zur Beschreibung von Syntax. Aufbau von Programmen. Syntax von Programmiersprachen

Übersicht: Inhalt und Ziele. Kapitel 2: Methoden zur Beschreibung von Syntax. Aufbau von Programmen. Syntax von Programmiersprachen Einführung in die Informatik: Programmierung und Softwareentwicklung Wintersemester 2018/19 Übersicht: Inhalt und Ziele Zwei Methoden zur Beschreibung (Definition) der Syntax von Programmiersprachen Backus-Naur-Form

Mehr

3.4 Struktur von Programmen

3.4 Struktur von Programmen 3.4 Struktur von Programmen Programme sind hierarchisch aus Komponenten aufgebaut. Für jede Komponente geben wir Regeln an, wie sie aus anderen Komponenten zusammengesetzt sein können. program ::= decl*

Mehr

Einführung in die Programmierung I. 1.0 EBNF 2.0 Einfache Java Programme. Thomas R. Gross. Department Informatik ETH Zürich

Einführung in die Programmierung I. 1.0 EBNF 2.0 Einfache Java Programme. Thomas R. Gross. Department Informatik ETH Zürich 252-0027 Einführung in die Programmierung I 1.0 EBNF 2.0 Einfache Java Programme Thomas R. Gross Department Informatik ETH Zürich Graphische Darstellung von EBNF Regeln Syntax Graph: graphische Darstellung

Mehr

Programmieren in Java

Programmieren in Java Programmieren in Java Vorlesung 10: Ein Interpreter für While Prof. Dr. Peter Thiemann Albert-Ludwigs-Universität Freiburg, Germany SS 2015 Peter Thiemann (Univ. Freiburg) Programmieren in Java JAVA 1

Mehr

Alphabet, formale Sprache

Alphabet, formale Sprache n Alphabet Alphabet, formale Sprache l nichtleere endliche Menge von Zeichen ( Buchstaben, Symbole) n Wort über einem Alphabet l endliche Folge von Buchstaben, die auch leer sein kann ( ε leere Wort) l

Mehr

Syntax von Programmiersprachen

Syntax von Programmiersprachen Information: ist Rohstoff der Informatik, hat eigenständige Dimension (vgl. Länge, Zeit, elektrische Ladung ist jedoch nicht im SI-System enthalten) läßt sich nicht messen, sie wird berechnet wird durch

Mehr

Literatur Reguläre Ausdrücke

Literatur Reguläre Ausdrücke Literatur Reguläre Ausdrücke [2-1] https://de.wikipedia.org/wiki/regul%c3%a4rer_ausdruck [2-2] http://openbook.rheinwerk-verlag.de/linux/linux_kap08_001.html http://openbook.rheinwerk-verlag.de/shell_programmierung/shell_013_0

Mehr

Syntax von Programmiersprachen

Syntax von Programmiersprachen "Grammatik, die sogar Könige zu kontrollieren weiß aus Molière, Les Femmes Savantes (1672), 2. kt Syntax von Programmiersprachen Prof. Dr. Martin Wirsing Ziele Zwei Standards zur Definition der Syntax

Mehr

1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen - 1 -

1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen - 1 - 1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen I.2. I.2. Grundlagen von von Programmiersprachen. - 1 - 1. Der Begriff Informatik "Informatik" = Kunstwort aus Information und Mathematik

Mehr

1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen - 1 -

1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen - 1 - 1. Der Begriff Informatik 2. Syntax und Semantik von Programmiersprachen I.2. I.2. Grundlagen von von Programmiersprachen. - 1 - 1. Der Begriff Informatik "Informatik" = Kunstwort aus Information und Mathematik

Mehr

Grundbegriffe der Informatik Tutorium 33

Grundbegriffe der Informatik Tutorium 33 Tutorium 33 02.02.2017 KIT Universität des Landes Baden-Württemberg und nationales Forschungszentrum in der Helmholtz-Gemeinschaft www.kit.edu Gliederung 1 2 3 Ein ist ein Tupel A = (Z, z 0, X, f, Y, h)

Mehr

Zuerst wird die Bedingung ausgewertet. Ist sie erfüllt, wird der Rumpf des while-statements ausgeführt. Nach Ausführung des Rumpfs wird das gesamte

Zuerst wird die Bedingung ausgewertet. Ist sie erfüllt, wird der Rumpf des while-statements ausgeführt. Nach Ausführung des Rumpfs wird das gesamte Zuerst wird die Bedingung ausgewertet. Ist sie erfüllt, wird der Rumpf des while-statements ausgeführt. Nach Ausführung des Rumpfs wird das gesamte while-statement erneut ausgeführt. Ist die Bedingung

Mehr

Java für Anfänger Teil 2: Java-Syntax. Programmierkurs Manfred Jackel

Java für Anfänger Teil 2: Java-Syntax. Programmierkurs Manfred Jackel Java für Anfänger Teil 2: Java-Syntax Programmierkurs 06.-10.10.2008 Manfred Jackel 1 Syntax für die Sprache Java public class Welcome { } Schlüsselworte Reservierte Worte Keywords Wortsymbol Syntax: griech.

Mehr

Java für Anfänger Teil 2: Java-Syntax. Programmierkurs Manfred Jackel

Java für Anfänger Teil 2: Java-Syntax. Programmierkurs Manfred Jackel Java für Anfänger Teil 2: Java-Syntax Programmierkurs 11.-15.10.2010 Manfred Jackel 1 Syntax für die Sprache Java public class Welcome { } Schlüsselworte Reservierte Worte Keywords Wortsymbol Syntax: griech.

Mehr

Einführung in die Informatik. Programming Languages

Einführung in die Informatik. Programming Languages Einführung in die Informatik Programming Languages Beschreibung von Programmiersprachen Wolfram Burgard Cyrill Stachniss 1/15 Motivation und Einleitung Wir haben in den vorangehenden Kapiteln meistens

Mehr

Grammatik Prüfung möglich, ob eine Zeichenfolge zur Sprache gehört oder nicht

Grammatik Prüfung möglich, ob eine Zeichenfolge zur Sprache gehört oder nicht Zusammenhang: Formale Sprache Grammatik Formale Sprache kann durch Grammatik beschrieben werden. Zur Sprache L = L(G) gehören nur diejenigen Kombinationen der Zeichen des Eingabealphabets, die durch die

Mehr

Programmierkurs Java

Programmierkurs Java Programmierkurs Java Dr. Dietrich Boles Aufgaben zu UE3-Syntaxdiagramme (Stand 05.11.2010) Aufgabe 1: Entwickeln Sie Regeln zur Übersetzung von EBNF in Syntaxdiagramme. Aufgabe 2: Eine Zahl ist entweder

Mehr

Lexikalische Analyse, Tokenizer, Scanner

Lexikalische Analyse, Tokenizer, Scanner Lexikalische Analyse, Tokenizer, Scanner Frühe Phase des Übersetzers Aufgabenteilung: Scanner (lokale) Zeichen (Symbol-)Analyse Parser Syntax-Analyse Aufgabe des Scanners: Erkennung von: Zahlen, Bezeichner,

Mehr

Es gibt keinen Algorithmus zum Schreiben eines Programms bzw. Algorithmus.

Es gibt keinen Algorithmus zum Schreiben eines Programms bzw. Algorithmus. 1 Einführung Programmiersprachen: Ermöglichen formale Beschreibung von Problemlösungsverfahren, die auf einem Computer oder Computersystemen ausführbar sind. Bilden die Basis zur Entwicklung von Software

Mehr

So schreiben Sie ein Parser-Programm

So schreiben Sie ein Parser-Programm Universität des Saarlandes Fachrichtung Informatik Programming Systems Lab Prof. Gert Smolka Proseminar Programmiersysteme WS 03/04 Höhere Funktionale Programmierung: Parser-Kombinatoren Matthias Berg

Mehr

Grundlagen der Programmierung 3 A

Grundlagen der Programmierung 3 A Grundlagen der Programmierung 3 A Compiler A: Phasen Lexikalische Analyse; Scanner Prof. Dr. Manfred Schmidt-Schauß Sommersemester 2018 Compiler; Übersetzungsprogramme Ein Übersetzer (Compiler) ist ein

Mehr

Funktionale Programmierung ALP I. λ Kalkül WS 2012/2013. Prof. Dr. Margarita Esponda. Prof. Dr. Margarita Esponda

Funktionale Programmierung ALP I. λ Kalkül WS 2012/2013. Prof. Dr. Margarita Esponda. Prof. Dr. Margarita Esponda ALP I λ Kalkül WS 2012/2013 Berechenbarkeit - inspiriert durch Hilbert's Frage - im Jahr 1900, Paris - Internationaler Mathematikerkongress Gibt es ein System von Axiomen, aus denen alle Gesetze der Mathematik

Mehr

lex - Eine Einführung

lex - Eine Einführung lex - Eine Einführung Axel Kohnert 9th May 2005 Abstract lex ist ein Unixprogramm, welches die Erstellung eines C-programms für die lexikalische Analyse unterstützt. Dazu kann man Aktionen definieren,

Mehr

Methoden zur Interpretation LISPähnlicher. Programmiersprachen. Seminarvortrag / 53 FH AACHEN FACHBEREICH 9 TOBIAS STUMM MATR.-NR.

Methoden zur Interpretation LISPähnlicher. Programmiersprachen. Seminarvortrag / 53 FH AACHEN FACHBEREICH 9 TOBIAS STUMM MATR.-NR. Methoden zur Interpretation LISPähnlicher Programmiersprachen Seminarvortrag 20.01.2017 FACHBEREICH 9 TOBIAS STUMM MATR.-NR. 4012917 1 Inhalt Motivation Lisp > Definition > Scheme Interpreter > Definition

Mehr

Der Grid-Occam-Compiler. Übersicht über die OCCAM-Sprachdefinition

Der Grid-Occam-Compiler. Übersicht über die OCCAM-Sprachdefinition Der Grid-Occam-Compiler Übersicht über die OCCAM-Sprachdefinition OCCAM Entwicklung der Fa. Inmos (1988) übernommen von SGS Thomson heute STMicroelectronics aktuelle Sprachversion ist 2.1 die Sprache für

Mehr

Kapitel IV Formale Sprachen und Grammatiken

Kapitel IV Formale Sprachen und Grammatiken Kapitel IV Formale Sprachen und Grammatiken 1. Begriffe und Notationen Sei Σ ein (endliches) Alphabet. Dann Definition 42 1 ist Σ das Monoid über Σ, d.h. die Menge aller endlichen Wörter über Σ; 2 ist

Mehr

Praktikum Softwareanalyse und -transformation

Praktikum Softwareanalyse und -transformation Praktikum Softwareanalyse und -transformation Thilo Mende Universität Bremen Fachbereich 3 Mathematik und Informatik Arbeitsgruppe Softwaretechnik http://www.informatik.uni-bremen/st Sommersemester 2009

Mehr

Einführung in die Programmiertechnik

Einführung in die Programmiertechnik Einführung in die Programmiertechnik Formale Beschreibung von Programmiersprachen Lexikalische Regeln Definition von Wörtern (Lexem, Token) Gruppierung von Zeichen Lexikalische Kategorien: Klassen ähnlicher

Mehr

Kapitel 2. Methoden zur Beschreibung von Syntax

Kapitel 2. Methoden zur Beschreibung von Syntax 1 Kapitel 2 Methoden zur Beschreibung von Syntax Grammatik, die sogar Könige zu kontrollieren weiß... aus Molière, Les Femmes Savantes (1672), 2. Akt 2 Ziele Zwei Standards zur Definition der Syntax von

Mehr

DSL mit Scala. K. Bürtlmair. Masterstudiengang SWN ::ITS //2011/12 Fachhochschule Salzburg. 1. Dezember 2011

DSL mit Scala. K. Bürtlmair. Masterstudiengang SWN ::ITS //2011/12 Fachhochschule Salzburg. 1. Dezember 2011 DSL mit Scala K. Bürtlmair Masterstudiengang SWN ::ITS //2011/12 Fachhochschule Salzburg 1. Dezember 2011 K. Bürtlmair, Masterstudiengang SWN ::ITS //2011/12 Fachhochschule Salzburg DSL mit Scala 1/33

Mehr

Grammatiken und ANTLR

Grammatiken und ANTLR Grammatiken und ANTLR Zusatzfolien zu Algo Blatt 6 Author: Henry Schaefer http://www.majeeks.de/folien_blatt6.pdf Grammatik Definition: syntaktische Beschreibung einer Sprache (H.S.) Definiton Grammatik

Mehr

VU Software Paradigmen / SS 2012

VU Software Paradigmen / SS 2012 VU Software Paradigmen 716.060 / SS 2012 Sandra Fruhmann sandra.fruhmann@student.tugraz.at Inhalt Grammatiken Chomsky Sprachhierarchie Parse Trees Recursive Descent Parser First-, Follow-Mengen 2 Compiler

Mehr

openarchitectureware

openarchitectureware openarchitectureware Enrico Schnepel EAS, FHTW-Berlin 07.06.2007 2007 (CC by-nc-sa 2.0 Germany) Enrico Schnepel ( EAS, FHTW-Berlin ) openarchitectureware 07.06.2007 1 / 26 Gliederung 1 Einleitung 2 Begriffsdefinitionen

Mehr

Formale Sprachen. Inhaltsverzeichnis. M. Jakob. 10. Dezember Allgemeine Einführung. Aufbau formaler Sprachen

Formale Sprachen. Inhaltsverzeichnis. M. Jakob. 10. Dezember Allgemeine Einführung. Aufbau formaler Sprachen M. Jakob Gymnasium Pegnitz 10. Dezember 2014 Inhaltsverzeichnis Allgemeine Einführung Aufbau formaler Sprachen Notationsformen formaler Sprachen Backus-Naur-Formen Erkennen formaler Sprachen Implementierung

Mehr

Empfehlenswerte Referenzen

Empfehlenswerte Referenzen Wenn Google etwas nicht finden kann, fragen sie Jack Bauer. ("Fakten über Jack Bauer") Inhalt Empfehlenswerte Referenzen...1 0 Wozu reguläre Ausdrücke?...1 1 Die Elemente regulärer Ausdrücke...2 2 Ein

Mehr

Pascal Schärli

Pascal Schärli Informatik I - Übung 8 Pascal Schärli pascscha@student.ethz.ch 12.04.2019 1 Was gibts heute? Best-Of Vorlesung: Prefix / Infix EBNF Vorbesprechung Problem of the Week 2 Vorlesung 3. 1 Prefix Notation Infix

Mehr

Backus-Notation und Syntaxanalyse

Backus-Notation und Syntaxanalyse Einführung zur Aufgabengruppe 3 Rekursionen Backus-Notation und Syntaxanalyse Programmierpraktikum 1/5 Rekursionen Beispiel: Eine unendliche Geschichte >> Es war einmal ein Mann, der hatte sieben Söhne.

Mehr

Definition von domänenspezifischen Sprachen mit Xtext: Der abstrakte Syntaxbaum in EMF

Definition von domänenspezifischen Sprachen mit Xtext: Der abstrakte Syntaxbaum in EMF Definition von domänenspezifischen Sprachen mit Xtext: Der abstrakte Syntaxbaum in EMF 29. November 2012 Taentzer Modellgetriebene Softwareentwicklung 263 Überblick Wie sieht der abstrakte Syntaxbaum für

Mehr

Automaten und Formale Sprachen alias Theoretische Informatik. Sommersemester 2011

Automaten und Formale Sprachen alias Theoretische Informatik. Sommersemester 2011 Automaten und Formale Sprachen alias Theoretische Informatik Sommersemester 2011 Dr. Sander Bruggink Übungsleitung: Jan Stückrath Sander Bruggink Automaten und Formale Sprachen 1 Wir beschäftigen uns ab

Mehr

SWE1 / Übung 2 (19.10.2011)

SWE1 / Übung 2 (19.10.2011) SWE1 / Übung 2 (19.1.211) Simulation von Algorithmen Testen, Testplan Beispiel arithmetische Ausdrücke Handsimulation von Algorithmen Man versteht einen Algorithmus (insbesonders einen "Fremden"), wenn

Mehr

Compiler; Übersetzungsprogramme. Grundlagen der Programmierung 3 A. Compiler für Programmiersprachen. Phasen eines Compilers

Compiler; Übersetzungsprogramme. Grundlagen der Programmierung 3 A. Compiler für Programmiersprachen. Phasen eines Compilers ompiler; Übersetzungsprogramme Grundlagen der Programmierung 3 A ompiler A: Phasen; Scanner Prof. Dr. Manfred Schmidt-Schauß Sommersemester 2017 Ein Übersetzer (ompiler) ist ein Programm, das ein Wort

Mehr

Grundlagen der Programmierung 3 A

Grundlagen der Programmierung 3 A Grundlagen der Programmierung 3 A Compiler A: Phasen; Scanner Prof. Dr. Manfred Schmidt-Schauß Sommersemester 2017 Compiler; Übersetzungsprogramme Ein Übersetzer (Compiler) ist ein Programm, das ein Wort

Mehr

Programmierkurs I. Gliederung: Deklarationsteil als BNF 2. Blöcke in Ada95 (Lebenszeit, Sichtbarkeit von Variablen)

Programmierkurs I. Gliederung: Deklarationsteil als BNF 2. Blöcke in Ada95 (Lebenszeit, Sichtbarkeit von Variablen) Programmierkurs I 11.11.2002 Gliederung: 1. Deklarationsteil als BNF 2. Blöcke in Ada95 (Lebenszeit, Sichtbarkeit von Variablen) EBNF: Wiederholung Die EBNF (Erweiterte Backus-Naur-Form) wurde in der Vorlesung

Mehr

Interaktive Programme mit Scanner

Interaktive Programme mit Scanner 2.X Input 191 Interaktive Programme mit Scanner 193 Input und System.in Interaktives Programm: Liest Input von der Konsole ( console ). Während das Programm ausgeführt wird fragt das Programm den Benutzer

Mehr

Implementierung eines LR-Parser-Generators mit syntaktischen Prädikaten

Implementierung eines LR-Parser-Generators mit syntaktischen Prädikaten Implementierung eines LR-Parser-Generators mit syntaktischen Prädikaten Aufgabenbeschreibung 29. Juli 2011 1 Einleitung und Motivation Der Parser-Generator Antlr [Par07] bietet die Möglichkeit, die Auswahl

Mehr

Begriffe (Wiederholung)

Begriffe (Wiederholung) Begriffe (Wiederholung) Sprache Menge aller Sätze Alphabet terminales / nicht terminales terminales A. Zeichen aus denen die Sätze der Sprache bestehen nicht terminales A. Hilfszeichen zum Bilden von Regeln

Mehr

Speech Recognition Grammar Compilation in Grammatikal Framework. von Michael Heber

Speech Recognition Grammar Compilation in Grammatikal Framework. von Michael Heber Speech Recognition Grammar Compilation in Grammatikal Framework von Michael Heber Agenda 1. Einführung 2. Grammatical Framework (GF) 3. Kontextfreie Grammatiken und Finite-State Modelle 4. Quellen 2 1.

Mehr

Kapitel 4: Syntaxdiagramme und Grammatikregeln

Kapitel 4: Syntaxdiagramme und Grammatikregeln 4. Syntaxdiagramme und Grammatikregeln 4-1 Objektorientierte Programmierung (Winter 2006/2007) Kapitel 4: Syntaxdiagramme und Grammatikregeln Syntaxdiagramme Grammatikregeln (kontextfrei) Beispiele: Lexikalische

Mehr

Objektorientierte Programmierung. Kapitel 3: Syntaxdiagramme

Objektorientierte Programmierung. Kapitel 3: Syntaxdiagramme Stefan Brass: OOP (Java), 3. 1/31 Objektorientierte Programmierung Kapitel 3: Stefan Brass Martin-Luther-Universität Halle-Wittenberg Wintersemester 2014/15 http://www.informatik.uni-halle.de/ brass/oop14/

Mehr

Automaten und Formale Sprachen alias Theoretische Informatik. Sommersemester 2012

Automaten und Formale Sprachen alias Theoretische Informatik. Sommersemester 2012 Automaten und Formale Sprachen alias Theoretische Informatik Sommersemester 2012 Dr. Sander Bruggink Übungsleitung: Jan Stückrath Sander Bruggink Automaten und Formale Sprachen 1 Einschub: Kellerautomaten

Mehr

Die Klasse MiniJava ist in der Datei MiniJava.java definiert:

Die Klasse MiniJava ist in der Datei MiniJava.java definiert: Die Klasse MiniJava ist in der Datei MiniJava.java definiert: import javax.swing.joptionpane; import javax.swing.jframe; public class MiniJava { public static int read () { JFrame f = new JFrame (); String

Mehr

Induktive Definition

Induktive Definition Rechenregeln A B = B A A (B C) = (A B) C A (B C) = (A B) C A (B C) = A B A C (B C) A = B A C A {ε} A = A A {ε} = A (A {ε}) = A (A ) = A A A = A + A A = A + A + {ε} = A Beispiel. Real-Zahlen = {0,..., 9}

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 34 Einstieg in die Informatik mit Java Klassen mit Instanzmethoden Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 34 1 Definition von Klassen 2 Methoden 3 Methoden

Mehr

Programmierung 2. Übersetzer: Das Frontend. Sebastian Hack. Klaas Boesche. Sommersemester

Programmierung 2. Übersetzer: Das Frontend. Sebastian Hack. Klaas Boesche. Sommersemester 1 Programmierung 2 Übersetzer: Das Frontend Sebastian Hack hack@cs.uni-saarland.de Klaas Boesche boesche@cs.uni-saarland.de Sommersemester 2012 Vom Programm zur Maschine Was passiert eigentlich mit unseren

Mehr

6 Kontextfreie Grammatiken

6 Kontextfreie Grammatiken 6 Kontextfreie Grammatiken Reguläre Grammatiken und damit auch reguläre Ausdrücke bzw. endliche Automaten haben bezüglich ihres Sprachumfangs Grenzen. Diese Grenzen resultieren aus den inschränkungen,

Mehr

Formale Sprachen, reguläre und kontextfreie Grammatiken

Formale Sprachen, reguläre und kontextfreie Grammatiken Formale Sprachen, reguläre und kontextfreie Grammatiken Alphabet A: endliche Menge von Zeichen Wort über A: endliche Folge von Zeichen aus A A : volle Sprache über A: Menge der A-Worte formale Sprache

Mehr

Ergänzungen zur Theoretischen Informatik. Compilerbau mit ANTLR. Literatur Das Standardwerk zum Compilerbau ist [1].

Ergänzungen zur Theoretischen Informatik. Compilerbau mit ANTLR. Literatur Das Standardwerk zum Compilerbau ist [1]. Themen Compilerbau mit ANTLR. Literatur Das Standardwerk zum Compilerbau ist [1]. [1] Aho, Alfred V. ; Lam, Monica S. ; Sethi, Ravi: Compiler. Prinzipien, Techniken und Tools. Pearson, 2008. ISBN 3827370973

Mehr

15. Rekursion 2. Motivation: Taschenrechner. Naiver Versuch (ohne Klammern) Analyse des Problems (15 7 3) = Eingabe * 3 = Ergebnis 15

15. Rekursion 2. Motivation: Taschenrechner. Naiver Versuch (ohne Klammern) Analyse des Problems (15 7 3) = Eingabe * 3 = Ergebnis 15 Motivation: Taschenrechner 15. Rekursion 2 Bau eines Taschenrechners, Formale Grammatiken, Extended Backus Naur Form (EBNF), Parsen von Ausdrücken Ziel: Bau eines Kommandozeilenrechners Beispiel Eingabe:

Mehr

The ACCENT Compiler Compiler. A compiler compiler for the entire class of context-free languages

The ACCENT Compiler Compiler. A compiler compiler for the entire class of context-free languages The ACCENT Compiler Compiler A compiler compiler for the entire class of context-free languages Valentin Ziegler mailto:ziegler@informatik.hu-berlin.de 3. Juli 2003 Accent Compiler Compiler für beliebige

Mehr

Daten und Algorithmen

Daten und Algorithmen LUDWIG- MAXIMILIANS- UNIVERSITY MUNICH DEPARTMENT INSTITUTE FOR INFORMATICS DATABASE Kapitel 3 Daten und Algorithmen Skript zur Vorlesung Einführung in die Programmierung g im Wintersemester 2012/13 Ludwig-Maximilians-Universität

Mehr

Grundlagen der Programmierung 2 (Comp-A)

Grundlagen der Programmierung 2 (Comp-A) Grundlagen der Programmierung 2 (Comp-A) Prof. Dr. Manfred Schmidt-Schauß Künstliche Intelligenz und Softwaretechnologie 16. Juni 2011 Compiler; Übersetzungsprogramme Ein Übersetzer (Compiler) ist ein

Mehr

Kontextfreie Grammatiken. Kontextfreie Grammatiken 1 / 48

Kontextfreie Grammatiken. Kontextfreie Grammatiken 1 / 48 Kontextfreie Grammatiken Kontextfreie Grammatiken 1 / 48 Was kann man mit kontextfreien Grammatiken anfangen? Kontextfreie Grammatiken, kurz: werden zur Modellierung von KFGs rekursiv definierten baumartigen

Mehr

7. Formale Sprachen und Grammatiken

7. Formale Sprachen und Grammatiken 7. Formale Sprachen und Grammatiken Computer verwenden zur Verarbeitung von Daten und Informationen künstliche, formale Sprachen (Maschinenspr., Assemblerspachen, Programmierspr., Datenbankspr., Wissensrepräsentationsspr.,...)

Mehr

LR-Parser, Shift-Reduce-Verfahren

LR-Parser, Shift-Reduce-Verfahren LR-Parser, Shift-Reduce-Verfahren Bottom-Up-Syntaxanalyse LR-Parser L: Eingabe von links nach rechts; R: Rechtsherleitung Shift-Reduce-Verfahren Beachte: Kein Backtracking nicht auf jede Grammatik anwendbar

Mehr

Theoretische Informatik. Reguläre Sprachen und Automaten

Theoretische Informatik. Reguläre Sprachen und Automaten Theoretische Informatik Reguläre Sprachen und Automaten Reguläre Sprachen Reguläre Ausdrücke und Sprachen Gleichungen Syntaxdiagramme Erweiterungen Anwendungen Reguläre Ausdrücke über Σ Syntax: Konstante

Mehr

Rainer Stropek cubido. Baumschule Expression Trees in C#, CLR und DLR

Rainer Stropek cubido. Baumschule Expression Trees in C#, CLR und DLR Rainer Stropek cubido Baumschule Expression Trees in C#, CLR und DLR Inhalt Als Anwendungsentwickler kommt man selten mit Expression Trees in Berührung. Sie sind ein Implementierungsdetail von LINQ. Ihre

Mehr

4. Die lexikalische Analyse

4. Die lexikalische Analyse zerlegt Folge von Zeichen in Eingabedatei in Folge von Symbolen (Token) Scanner-Sieber-Modul Token: Typ und Inhalt übliche Token-Typen: reservierte Wörter (if, while, for, ) Bezeichner (x, dauer, name,..)

Mehr