Software-Notationen. K. Bürtlmair. Masterstudiengang ITS //2010/11 Fachhochschule Salzburg. 3. Oktober 2013
|
|
- Jörg Rainer Fromm
- vor 5 Jahren
- Abrufe
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 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
MehrSprachen 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
Mehr3.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
MehrKapitel 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
MehrDefinition 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
Mehr3 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
Mehr3 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
MehrFragenkatalog 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:
MehrInhalt 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
Mehr7. 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
MehrKapitel 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
MehrLexikalische 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
MehrEinfü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
MehrEinfü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
Mehr2.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?
MehrSoftware 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
Mehr17. 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
MehrSoftware 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
MehrKapitel 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
Mehr15. 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
MehrEinfü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
MehrInterpreter - 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
MehrDefinition 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
MehrSyntax 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
MehrSyntax 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
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
Mehr3.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*
MehrEinfü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
MehrProgrammieren 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
MehrAlphabet, 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
MehrSyntax 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
MehrLiteratur 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
MehrSyntax 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
Mehr1. 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
Mehr1. 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
MehrGrundbegriffe 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)
MehrZuerst 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
MehrJava 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.
MehrJava 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.
MehrEinfü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
MehrGrammatik 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
MehrProgrammierkurs 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
MehrLexikalische 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,
MehrEs 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
MehrSo 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
MehrGrundlagen 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
MehrFunktionale 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
Mehrlex - 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,
MehrMethoden 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
MehrDer 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
MehrKapitel 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
MehrPraktikum 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
MehrEinfü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
MehrKapitel 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
MehrDSL 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
MehrGrammatiken 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
MehrVU 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
Mehropenarchitectureware
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
MehrFormale 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
MehrEmpfehlenswerte 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
MehrPascal 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
MehrBackus-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.
MehrDefinition 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
MehrAutomaten 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
MehrSWE1 / Ü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
MehrCompiler; Ü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
MehrGrundlagen 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
MehrProgrammierkurs 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
MehrInteraktive 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
MehrImplementierung 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
MehrBegriffe (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
MehrSpeech 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.
MehrKapitel 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
MehrObjektorientierte 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/
MehrAutomaten 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
MehrDie 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
MehrInduktive 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}
MehrEinstieg 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
MehrProgrammierung 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
Mehr6 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,
MehrFormale 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
MehrErgä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
Mehr15. 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:
MehrThe 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
MehrDaten 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
MehrGrundlagen 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
MehrKontextfreie 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
Mehr7. 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.,...)
MehrLR-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
MehrTheoretische 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
MehrRainer 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
Mehr4. 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