Teil IX. Eine kleine Programmiersprache
|
|
|
- Benedikt Frank
- vor 9 Jahren
- Abrufe
Transkript
1 Teil IX Eine kleine Programmiersprache 1
2 Teil IX.1 Syntaktische Beschreibungsmittel 2
3 Chomsky Grammatik Eine Chomsky Grammatik wird beschrieben mit einem Quadrupel G = (N, T, P, S). Dabei ist: N die Menge der Nichtterminalsymbole T die Menge der Terminalsymbole P die Menge der Produktionen mit P {ϕ ψ ϕ (N T ) +, ψ (N T ) } S das Startsymbol (N T ) + ist die Menge der nichtleeren endlichen Wörter mit Zeichen aus N T (N T ) enthält zusätzlich das leere Wort λ. 3
4 Weitere Begriffe Sprache: Menge der von einer Grammatik erzeugten Zeichenketten. Parsen: Ist eine gegebene Zeichenkette in der Sprache einer Grammatik enthalten? Ableitungsbaum: Beschreibt, wie die Grammatik eine gegebene Zeichenkette erzeugt. Subsumption, Äquivalenz: Ist die Sprache von Grammatik 1 eine Teilmenge der Sprache von Grammatik 2? 4
5 Typen von Grammatiken Typ 3 regulär: Alle Produktionen haben eine der Formen A λ, A a, A ab (a T, A, B N) Typ 2 kontextfrei: Alle Produktionen sind von der Form: ( A ψ, A N, ψ (N T ) ) Typ 1 kontextsensitiv: Alle Produktionen sind von der Form: ( ϕ 1 Aϕ 2 ϕ 1 ψϕ 2, A N, ϕ1, ϕ 2, ψ (N T ) ), ψ λ Typ 0: Es gibt keine Einschränkung auf die Produktionen 5
6 Beispiel Typ 3: Beliebige Folgen von a, b, c Grammatik: (1) X ax (2) X bx (3) X cx (4) X λ Erzeuge aabac: X ax (1) aax (1) aabx (2) aabax (1) aabacx (3) aabac (4) 6
7 Beispiel Typ 2: Gleich viele a wie c Grammatik: (1) X axc (2) X cxa (3) X bx (4) X Xb (5) X λ Erzeuge acabc: X axc (1) axbc (4) acxabc (2) acabc (5) 7
8 Beispiel Typ 1: a n b n c n Grammatik: (1) X axbc (2) X abc (3) CB BC (4) ab ab (5) bb bb (6) bc bc (7) cc cc Erzeuge aabbcc: X axbc (1) aabcbc (2) aabbcc (3) aabbcc (4) aabbcc (5) aabbcc (6) aabbcc (7) 8
9 Erweiterte Backus Naur Form Erweiterte Notationsform für kontextfreie Grammatiken: Metazeichen das Definitionszeichen =, das Alternativzeichen, die Anführungszeichen, die Wiederholungsklammern {}, mehrfache (auch nullfache) Wiederholung, die Optionsklammern [], null oder einfaches Auftreten, die Gruppenklammern (), der Punkt zur Beendigung einer Regel. Terme: Nichtterminalsymbol: Buchstabe gefolgt von Folge von Buchstaben oder Ziffern Terminalsymbol: w, mit w eine beliebige Folge von Symbolen Wenn α ein Term ist, dann sind auch (α), [α], {α} Terme Wenn α 1,..., α n Terme sind, dann auch α 1... α n (Alternative) und α 1... α n (Sequenz) Regeln: haben die Form V = α, mit V ein Nichtterminalsymbol, α ein Term 9
10 Beispiele Ziffer = "0" "1" "2"... "9". Buchstabe = "A"... "Z" "a"... "z". Name = Buchstabe {Buchstabe Ziffer}. VorzeichenloseZahl = Ziffer {Ziffer}. Vorzeichen = "+" "-". Zahl = [Vorzeichen] VorzeichenloseZahl. Unterstrich = "_". Bezeichner = (Buchstabe Unterstrich) {Buchstabe Ziffer Unterstrich}. 10
11 Syntaxdiagramme Graphische Notation für EBNF aus folgenden Bestandteilen und mit folgenden Regeln: Runde Kästchen für die Terminalsymbole, eckige Kästchen für die Nonterminalsymbole, Verbindungen aus Linien und Pfeilen. An jedem Kästchen endet und beginnt genau ein Pfeil, in der Regel gegenüberliegend. Es gibt genau eine Linie, die oben links am Eingang in das Diagramm hineinführt. Es gibt genau eine Linie, die unten rechts am Ausgang aus dem Diagramm herausführt. Linien dürfen nur verzweigen und sich wieder treffen, aber sich nicht kreuzen. 11
12 Von EBNF zu Syntaxdiagramm 1. Jeder Regel in EBNF entspricht ein Syntaxdiagramm mit dem Namen der linken Seite der Regel. 2. Die Übersetzung der rechten Regelseiten geschieht durch Rekursion über die Struktur der EBNF Terme wie folgt: a) Nichtterminalsymbole V: eckiges Kästchen. V b) w Terminalsymbole: rundes Kästchen. c) (α) wie α. d) [α] wird zu α w e) {α} wird zu α f) α 1... α n : Verkettung der Teildiagramme für einzelne α i. g) α 1... α n Verzweigung der Teildiagramme für einzelne α i. α α n 12
13 Teil IX.2 Syntax von Mini Pascal 13
14 Programm Deklaration EBNF: program = "program" ident ";" block".". ident = letter {letter number}. Syntaxdiagramm: Beispiel: program faktor;... 14
15 Variablen, Konstanten, Prozeduren EBNF: block = [constdecl] [vardecl] {procdecl} "begin" statement {";" statement} "end". constdecl = "const" constident "=" number {";" constident "=" number} ";". vardecl = "var" varident {"," varident} ":" "integer" ";". procdecl = "procedure" procident ";" block ";". constident = ident. procident = ident. varident = ident. Syntaxdiagramm: Beispiel: var IN, AUX, OUT: Integer; begin... end 15
16 Statements (Anweisungen) EBNF: statement = [varident ":=" expression procident "begin" statement {";" statement} "end" "ReadLn(" varident {"," varident}")" "WriteLn(" varident {"," varident}")"...] Beispiel: OUT := 1; AUX := 1; ReadLn(IN); 16
17 Expressions (Ausdrücke) EBNF: expression = ["+" "-"] term {("+" "-") term}. term = factor {("*" "div") factor}. factor = constident varident number "(" expression ")". Beispiel: AUX + 1 OUT * AUX (A + B) * C 17
18 Verzweigung und Schleife EBNF: statement = [... "if" condition "then" statement "while" condition "do" statement]. condition = expression ("=" "<>" "<" "<=" ">" ">=") expression. Beispiel: while AUX <= IN do begin OUT := OUT * AUX; AUX := AUX+1 end; 18
19 Das gesamte Programm program faktor; var IN, AUX, OUT: Integer; begin OUT := 1; AUX := 1; ReadLn(IN); while AUX <= IN do begin OUT := OUT * AUX; AUX := AUX+1 end; WriteLn(OUT) end. 19
20 Die gesamte Syntax program = "program" ident ";" block".". block = [constdecl] [vardecl] {procdecl} "begin" statement {";" statement} "end". constdecl = "const" constident "=" number {";" constident "=" number} ";". vardecl = "var" varident {"," varident} ":" "integer" ";". procdecl = "procedure" procident ";" block ";". statement = [varident ":=" expression procident "begin" statement {";" statement} "end" "if" condition "then" statement "while" condition "do" statement "ReadLn(" varident {"," varident}")" "WriteLn(" varident {"," varident}")"]. condition = expression ("=" "<>" "<" "<=" ">" ">=") expression. expression = ["+" "-"] term {("+" "-") term}. term = factor {("*" "div") factor}. factor = constident varident number "(" expression ")". constident = ident. procident = ident. varident = ident. ident = letter {number letter}. 20
21 Kontextsensitive Bedingungen Die für constdecl, vardecl und procdecl verwendeten Bezeichner ident müssen verschieden sein. Jeder in einem block vorkommende Bezeichner muss vorher deklariert sein. Blockschachtelung: Eine Prozedur procedure kann bereits deklarierte Bezeichner nochmals deklarieren und damit überlagern. 21
22 Blockschachtelung Beispiel program Beispiel; var A, B, C: integer; (* A, B, C sind globale Variablen *) procedure p; var A, B, D : integer; (* Globalen Variablen A, B sind unsichtbar und werden durch die lokalen Variablen der Prozedur p ersetzt. C bleibt sichtbar, D kommt hinzu. *) procedure q; var C: integer; (* Ab hier ist die globale Variable C unsichtbar *) begin... (* Es sind die Variablen A_p, B_p, C_q, D_p zugaenglich *) end; (* Ende der Prozedur q *) begin... (* Es sind die Variablen A_p, B_p, C, D_p zugaenglich *) end; (* Ende der Prozedur p *) (* Von jetzt sind nur noch die globalen Variablen A, B, C sichtbar *) begin... (* Hier steht nun das Hauptprogramm, in dem die Variablen A, B, C neue Werte per Zuweisung auch innerhalb von Kontrollstrukturen erhalten und die Prozeduren p und q ueber ihre Namen aufgerufen werden koennen. *) end. 22
23 Teil IX.3 Mini Assembler 23
24 Instruktionen Konstante: CONST xx Ausdrücke: ADD; SUB; MUL; DIV; Sprungbefehle: JMP x; JE x; JL x; JNE x; JLE x; JG x; JGE x Speicherbefehle: LOAD x,y; STORE x,y 24
25 Mini Stapelmaschine Datenstapel D := ZZ Aktivierungsblock A := ZZ Instruktionszähler Z := IN Programmspeicher S := I IN I die Menge der Instruktionen 25
26 Semantik von Konstanten und Ausdrücken Zustandsänderung auf Datenstapel δ und Erhöhung des Instruktionszählers z [ ] [ ] δ = d1...d CONSTc : n δ = d1...d n.c z = i z = i + 1 [ δ = d1...d n.x.y ] [ δ = d1...d n.x + y ] ADD : z = i z = i + 1 [ δ = d1...d n.x.y ] [ δ = d1...d n.x y ] SUB : z = i z = i + 1 [ δ = d1...d n.x.y ] [ δ = d1...d n.x y ] MUL : z = i z = i + 1 [ δ = d1...d n.x.y ] [ δ = d1...d n. x/y, y 0 ] DIV : z = i z = i
27 Semantik von Sprungbefehlen (Bedingte) Änderung des Instruktionszählers JMPm : [z = i] [z = m] JEm : [ δ = d1...d n.x z = i ] δ = d 1...d n z = m, falls x = 0 z = i + 1, sonst JNEm : [ δ = d1...d n.x z = i ] δ = d 1...d n z = m, falls x 0 z = i + 1, sonst JLm : [ δ = d1...d n.x z = i ] δ = d 1...d n z = m, falls x < 0 z = i + 1, sonst JGm : [ δ = d1...d n.x z = i ] δ = d 1...d n z = m, falls x > 0 z = i + 1, sonst 27
28 Semantik von Speicherbefehlen Indizierter Zugriff auf Aktivierungsbock LOAD 1, o : δ = d 1...d n α = a 1...a m z = i δ = d 1...d n.a o α = a 1...a m z = i + 1 STORE 1, o : δ = d 1...d n.x α = a 1...a m z = i δ = d 1...d n α = a 1...a o /x...a m z = i
29 Teil IX.4 Semantik von Mini Pascal 29
30 Übersetzung von Ausdrücken EComp(ident) := EComp(number) := CONST number EComp (f 1 ) EComp(f 1 f 2 ) := EComp (f 2 ) MUL EComp(f 1 div f 2 ) := EComp(f 1 + f 2 ) := EComp(f 1 f 2 ) := { CONST value(ident),falls constident=ident LOAD lv level(ident), offset(ident), sonst EComp (f 1 ) EComp (f 2 ) DIV EComp (f 1 ) EComp (f 2 ) ADD EComp (f 1 ) EComp (f 2 ) SUB 30
31 Übersetzung von Anweisungen SComp (i := e) := EComp (begin α 1 ;...; α n end) := { EComp(e) STORE lv level(i), offset(i) EComp (α 1 )... EComp (α n ) 31
32 Übersetzung von if und while if (e 1 <=e 2 ) then α := while (e 1 <=e 2 ) do α := EComp (e 1 ) EComp (e 2 ) SUB JGx EComp (α) EComp (e 1 ) EComp (e 2 ) SUB JGx EComp (α) JMPy x ist die Adresse des ersten Befehls nach EComp(α) y ist die Adresse des ersten Befehls von EComp(e 1 ) 32
33 Beispielübersetzung z Befehl PASCAL 01 CONST 1 OUT:=1; 02 STORE 1,3 03 CONST 1 AUX := 1; 04 STORE 1,2 05 CONST 1 IN := 5; 06 STORE 1,1 07 LOAD 1,2 while AUX <= IN do 08 LOAD 1,1 09 SUB 10 JG 20 (* jump if AUX - IN > 0 *) begin 11 LOAD 1,3 OUT := OUT * AUX; 12 LOAD 1,2 13 MUL 14 STORE 1,3 15 LOAD 1,2 AUX := AUX CONST 1 17 ADD 18 STORE 1,2 19 JMP 07 end; 20 LOAD 1,3 WriteLn(OUT); 21 RET 33
34 Adressierung von Variablen 14. LOAD l, o : 15. STORE l, o : δ = d 1...d n π = π 1.π 2...π k z = i δ = d 1...d n.x π = π 1.π 2...π k z = i δ = d 1...d n.π (base (l, k)) LV (o) π = π 1.π 2...π k z = i + 1 δ = d 1...d n π = π z = i
35 Unterprogrammaufrufe CALL l, n, v : RET : [ π = π1.π 2...π k z = i π = π 1.π 2...π k. ] i + 1, base (l, k), z = n [ π =... r, s, (...). r, s, (...)... z = i ] v {}}{ 0, 0,..., 0 [ π =... r, s, (...). z = r ] 35
36 Beispiel-Programm program Beispiel; var A, B, C : Integer; procedure p; var A, B, D: Integer; procedure q; var C: Integer; begin... p; (* CALL 1, adr(p), 3 *)... end; begin C:=0; (* CONST 0; STORE 1,3 *)... q; (* CALL 0,adr(q),1 *)... end ; begin (* Hauptprogramm *)... p; (* CALL 0, adr(p),3 *)... end. 36
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
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
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
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
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
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
Ein Fragment von Pascal
Ein Fragment von Pascal Wir beschreiben einen (allerdings sehr kleinen) Ausschnitt von Pascal durch eine kontextfreie Grammatik. Wir benutzen das Alphabet Σ = {a,..., z, ;, :=, begin, end, while, do} und
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
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
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
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
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
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
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
Syntax der Sprache PASCAL
Syntax der Sprache PASCAL Buchstaben A B C D E F G H I J K L M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z Ziffern 0 1 2 3 4 5 6 7 8 9 Sonderzeichen und Wortsymbole +
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
Theoretische Informatik I
Theoretische Informatik I Einheit 2.5 Grammatiken 1. Arbeitsweise 2. Klassifizierung 3. Beziehung zu Automaten Beschreibung des Aufbaus von Sprachen Mathematische Mengennotation Beschreibung durch Eigenschaften
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
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*
2.1 Allgemeines. Was ist eine Sprache? Beispiele:
Was ist eine Sprache? Beispiele: (a) Deutsch, Japanisch, Latein, Esperanto,...: Natürliche Sprachen (b) Pascal, C, Java, Aussagenlogik,...: Formale Sprachen Wie beschreibt man eine Sprache? (i) Syntax
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:
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
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
Einführung in die Programmierung für NF. Rückgabewerte, EBNF, Fallunterscheidung, Schleifen
Einführung in die Programmierung für NF Rückgabewerte, EBNF, Fallunterscheidung, Schleifen FUNKTIONEN UND PROZEDUREN 3 Rückgabewerte, EBNF, Fallunterscheidung, Schleifen 2 Funk@on und Prozedur Methoden
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?
Grammatiken. Eine Grammatik G mit Alphabet Σ besteht aus: Variablen V. Startsymbol S V. Kurzschreibweise G = (V, Σ, P, S)
Grammatiken Eine Grammatik G mit Alphabet Σ besteht aus: Variablen V Startsymbol S V Produktionen P ( (V Σ) \ Σ ) (V Σ) Kurzschreibweise G = (V, Σ, P, S) Schreibweise für Produktion (α, β) P: α β 67 /
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.,...)
Theorie der Informatik. Theorie der Informatik. 6.1 Einführung. 6.2 Alphabete und formale Sprachen. 6.3 Grammatiken. 6.4 Chomsky-Hierarchie
Theorie der Informatik 17. März 2014 6. Formale Sprachen und Grammatiken Theorie der Informatik 6. Formale Sprachen und Grammatiken Malte Helmert Gabriele Röger Universität Basel 17. März 2014 6.1 Einführung
Sprachanalyse. Fachseminar WS 08/09 Dozent: Prof. Dr. Helmut Weber Referentin: Nadia Douiri
Sprachanalyse WS 08/09 Dozent: Prof. Dr. Helmut Weber Referentin: Inhalt 1. Formale Sprachen 2. Chomsky-Hierarchie 2 FORMALE SPRACHE 1. WAS IST EINE SPRACHE? 2. WIE BESCHREIBT MAN EINE SPRACHE? 3. WAS
Definition 4 (Operationen auf Sprachen) Beispiel 5. Seien A, B Σ zwei (formale) Sprachen. Konkatenation: AB = {uv ; u A, v B} A + = n 1 An
Definition 4 (Operationen auf Sprachen) Seien A, B Σ zwei (formale) Sprachen. Konkatenation: AB = {uv ; u A, v B} A 0 = {ɛ}, A n+1 = AA n A = n 0 An A + = n 1 An Beispiel 5 {ab, b}{a, bb} = {aba, abbb,
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
Grammatiken. Grammatiken sind regelbasierte Kalküle zur Konstruktion von Systemen und Sprachen Überprüfung von Systemen und Sprachen
Grammatiken Grammatiken sind regelbasierte Kalküle zur Konstruktion von Systemen und Sprachen Überprüfung von Systemen und Sprachen Grammatiken eignen sich besonders zur Modellierung beliebig tief geschachtelter,
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
Algorithmen & Programmierung. Formale Sprachen Die Logik hinter dem Compiler
Algorithmen & Programmierung Formale Sprachen Die Logik hinter dem Compiler Natürlichsprachliche Programme? Können Programme natürlichsprachlich formuliert werden? Kaufe zwei Tüten Mehl und Gemüse!? Implizites
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
Formale Sprachen und Grammatiken
Formale Sprachen und Grammatiken Jede Sprache besitzt die Aspekte Semantik (Bedeutung) und Syntax (formaler Aufbau). Die zulässige und korrekte Form der Wörter und Sätze einer Sprache wird durch die Syntax
Von der Chomsky-Hierarchie
Von der Chomsky-Hierarchie zur Backus-Naur-Form Ein Beitrag der Theoretischen Informatik zum Siegeszug des Computers Referat von Helmut Schnitzspan Im Rahmen des Seminars Von der EDV zu Facebook Alexander
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
Simulation und Testen von Algorithmen
Simulation und Testen von Algorithmen Softwareentwicklung 1 (gtec) Hanspeter Mössenböck, Herbert Prähofer 1 Handsimulation von Algorithmen Man versteht einen Algorithmus, wenn man genau weiß, wie er arbeitet.
Lemma Für jede monotone Grammatik G gibt es eine kontextsensitive
Lemma Für jede monotone Grammatik G gibt es eine kontextsensitive Grammatik G mit L(G) = L(G ). Beweis im Beispiel (2.): G = (V,Σ, P, S) : P = {S asbc, S abc, CB BC, ab ab, bb bb, bc bc, cc cc}. (i) G
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
Informatik 1. Prüfung im Wintersemester 1997/98
Informatik 1 Prüfung im Wintersemester 1997/98 Fachhochschule für Technik und Wirtschaft Reutlingen, Fachbereich Elektronik Prüfungsfach/Studiengang/Semester: Informatik 1 in Elektronik 1 Prüfer: Prof.
Algorithmen und Datenstrukturen II
Syntax und Semantik Java: Der Einstieg Imperative Programmierung in Java Algorithmen zur exakten Suche in Texten Objektori Algorithmen und Datenstrukturen II AG Praktische Informatik Technische Fakultät
Kontextfreie Sprachen. Automaten und Formale Sprachen alias Theoretische Informatik. Sommersemester Kontextfreie Sprachen
Automaten und Formale Sprachen alias Theoretische Informatik Sommersemester 2012 Dr. Sander Bruggink Übungsleitung: Jan Stückrath Wortproblem: der CYK-Algorithmus Pumping Lemma für kontextfreie Sprachen
Grundlagen der Informatik I (Studiengang Medieninformatik)
Grundlagen der Informatik I (Studiengang Medieninformatik) Thema: 3. Datentypen, Datenstrukturen und imperative Programme Prof. Dr. S. Kühn Fachbereich Informatik/Mathematik Email: [email protected]
1 Formale Sprachen, reguläre und kontextfreie Grammatiken
Praktische Informatik 1, WS 2001/02, reguläre Ausdrücke und kontextfreie Grammatiken 1 1 Formale Sprachen, reguläre und kontextfreie Grammatiken Ein Alphabet A ist eine endliche Menge von Zeichen. Die
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
Was bisher geschah Chomsky-Hierarchie für Sprachen: L 0 Menge aller durch (beliebige) Grammatiken beschriebenen Sprachen L 1 Menge aller monotonen
Was bisher geschah Chomsky-Hierarchie für Sprachen: L 0 Menge aller durch (beliebige) Grammatiken beschriebenen Sprachen L 1 Menge aller monotonen (Kontextsensitive) Sprachen L 2 Menge aller kontextfreien
Syntaxanalyse Ausgangspunkt und Ziel
Syntaxanalyse Ausgangspunkt und Ziel Ausgangspunkt: Kontextfreie Grammatik Im Normalfall BNF, manchmal EBNF BNF = Backus-Naur-Form = Produktionsregeln EBNF = erweiterte BNF (+ reguläre Ausdrücke) Prüfung
Vorlesung Automaten und Formale Sprachen Sommersemester Beispielsprachen. Sprachen
Vorlesung Automaten und Formale Sprachen Sommersemester 2018 Prof. Barbara König Übungsleitung: Christina Mika-Michalski Wörter Wort Sei Σ ein Alphabet, d.h., eine endliche Menge von Zeichen. Dann bezeichnet
GTI. Hannes Diener. 18. Juni. ENC B-0123,
GTI Hannes Diener ENC B-0123, [email protected] 18. Juni 1 / 32 Als Literatur zu diesem Thema empfiehlt sich das Buch Theoretische Informatik kurzgefasst von Uwe Schöning (mittlerweile in der 5.
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.
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,
Einführung IMP-Syntax Reduktionssemantik Maschinen-Semantik. Teil IV. Semantik imperativer Sprachen
Teil IV Semantik imperativer Sprachen 201 1. Einführung Alternativen zur Beschreibung der Semantik: natürliche Sprache (bisher, unpräzise) operational Reduktionssemantik (vgl. Haskell-Semantik in Kap.
Inhalt Kapitel 5: Syntax
Inhalt Kapitel 5: Syntax 1 Syntax und Semantik 2 Formale Sprachen 3 Backus-Naur Form 4 Chomsky Grammatik 5 Reguläre Ausdrücke 6 Endliche Automaten 180 Syntax und Semantik Syntax Syntax: Festlegung des
Formale Sprachen. Grammatiken und die Chomsky-Hierarchie. Rudolf FREUND, Marian KOGLER
Formale Sprachen Grammatiken und die Chomsky-Hierarchie Rudolf FREUND, Marian KOGLER Grammatiken Das fundamentale Modell zur Beschreibung von formalen Sprachen durch Erzeugungsmechanismen sind Grammatiken.
Kapitel: Die Chomsky Hierarchie. Die Chomsky Hierarchie 1 / 14
Kapitel: Die Chomsky Hierarchie Die Chomsky Hierarchie 1 / 14 Allgemeine Grammatiken Definition Eine Grammatik G = (Σ, V, S, P) besteht aus: einem endlichen Alphabet Σ, einer endlichen Menge V von Variablen
Elementare Konzepte von
Elementare Konzepte von Programmiersprachen Teil 2: Anweisungen (Statements) Kapitel 6.3 bis 6.7 in Küchlin/Weber: Einführung in die Informatik Anweisungen (statements) in Java Berechnung (expression statement)
Formale Sprachen, Grammatiken
Formale Sprachen, Grammatiken Informatik I utomatisierungstechnik in der Produktion 17.11.2004 Page 1 of 22 1. Formale Sprachen und Grammatiken Wir hatten gesehen, dass die Regeln dafür, was ein korrekt
Grundbegriffe. Grammatiken
Grammatiken Grammatiken in der Informatik sind ähnlich wie Grammatiken für natürliche Sprachen ein Mittel, um alle syntaktisch korrekten Sätze (hier: Wörter) einer Sprache zu erzeugen. Beispiel: Eine vereinfachte
Programmierung WS12/13 Lösung - Übung 1 M. Brockschmidt, F. Emmes, C. Otto, T. Ströder
Prof. aa Dr. J. Giesl Programmierung WS12/13 M. Brockschmidt, F. Emmes, C. Otto, T. Ströder Tutoraufgabe 1 (Syntax und Semantik): 1. Was ist Syntax? Was ist Semantik? Erläutern Sie den Unterschied. 2.
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
5.1 Einführung. Beispiele. Syntax. Woher weiß der Compiler, dass ein Programm nicht korrekt ist? Unterscheiden: Grammatik und Semantik
Algorithmen und Programmierung Wintersemester 2016/2017 Algorithmen und Programmierung 5. Kapitel Syntax Prof. Matthias Werner Professur Betriebssysteme Woher weiß der Compiler, dass ein Programm nicht
Boolean Wertemenge: Wahrheitswerte {FALSE,TRUE}, auch {0,1} Deklaration:
Boolean Wertemenge: Wahrheitswerte {,}, auch {,} Deklaration: VAR present,billig,laut,gefunden : BOOLEAN; Ein-/Ausgabe: keine! Operatoren: Negation, Verneinung NOT ~ Konjunktion, logisches UND AND & Disjunktion,
Programmierpraktikum
TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK Praktikum: Grundlagen der Programmierung Programmierpraktikum Woche 02 (03.11.2017) Leo Glavinić ([email protected]) Cyprian Manthey ([email protected])
Übungs- und Praktikumsaufgaben zur Systemprogrammierung Dipl.-Ing. H. Büchter (Lehrbeauftragter) FH-Dortmund WS 2001/2002 / SS 2002
1. Stellen Sie die schrittweise Verbesserung eines Compilers durch das Bootstrap- Verfahren mit Hilfe von T-Diagrammen dar. Gegeben ist ein auf der Maschine M lauffähiger Compiler C 1, der in S geschrieben
Formale Sprachen. Grammatiken. Grammatiken und die Chomsky-Hierarchie. Rudolf FREUND, Marion OSWALD. Grammatiken: Ableitung
Formale Sprachen rammatiken und die Chomsky-Hierarchie Rudolf FREUND, Marion OSWALD rammatiken Das fundamentale Modell zur Beschreibung von formalen Sprachen durch Erzeugungsmechanismen sind rammatiken.
Theorie der Informatik
Theorie der Informatik 6. Formale Sprachen und Grammatiken Malte Helmert Gabriele Röger Universität Basel 17. März 2014 Einführung Beispiel: Aussagenlogische Formeln Aus dem Logikteil: Definition (Syntax
Mächtigkeit von WHILE-Programmen
Mächtigkeit von WHILE-Programmen Prof. Dr. Berthold Vöcking Lehrstuhl Informatik 1 Algorithmen und Komplexität RWTH Aachen 1 / 23 Turingmaschine (TM) M = (Q, Σ, Γ, B, q 0, q, δ) Unendliches Band... 0 c
Klausuraufgaben. 1. Wir betrachten die folgende Sprache über dem Alphabet {a, b}
Klausuraufgaben 1. Wir betrachten die folgende Sprache über dem Alphabet {a, b} L = {a n b m n > 0, m > 0, n m} a) Ist L kontextfrei? Wenn ja, geben Sie eine kontextfreie Grammatik für L an. Wenn nein,
Semantik von Programmiersprachen Theorie und Anwendungen (Informatik III, Wintersemester 03/04)
Eidgenossische Technische Hochschule Zurich Ecole polytechnique federale de Zurich Politecnico federale di Zurigo Swiss Federal Institute of Technology Zurich Semantik von Programmiersprachen Theorie und
Assembler Kontrollstrukturen
Assembler Kontrollstrukturen Dr.-Ing. Volkmar Sieh Department Informatik 3: Rechnerarchitektur Friedrich-Alexander-Universität Erlangen-Nürnberg SS 2008 Assembler Kontrollstrukturen 1/21 2008-04-03 Kontrollstrukturen
1 Syntax von Programmiersprachen
1 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 Programmier-Sprache Festlegung, wie Programme
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
Technische Universität München WS 2004/2005 Fakultät für Informatik 11. Dezember 2004 Prof. Dr. Seidl
Name: Vorname: Matr. Nr.: Technische Universität München WS 2004/2005 Fakultät für Informatik 11. Dezember 2004 Prof. Dr. Seidl Zwischenklausur zu Einführung in die Informatik I Hinweis: In dieser Zwischenklausur
C.3 Funktionen und Prozeduren
C3 - Funktionen und Prozeduren Funktionsdeklarationen in Pascal auch in Pascal kann man selbstdefinierte Funktionen einführen: Funktionen und Prozeduren THEN sign:= 0 Funktion zur Bestimmung des Vorzeichens
Allgemeine Hinweise:
TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK Lehrstuhl für Sprachen und Beschreibungsstrukturen SS 2011 Einführung in die Informatik I Midtermklausur Prof. Dr. Helmut Seidl, A. Lehmann, A. Herz,
Grundgebiete der Informatik 2 Lösungsvorschlag zur Probeklausur
Lehrstuhl für Informatik 3 Prof. Dr.-Ing. M. Nagl RWTH Aachen Grundgebiete der Informatik 2 Lösungsvorschlag zur Probeklausur Prof. Dr.-Ing. M. Nagl Simon Becker Ulrike Ranger René Wörzberger Aufgabe 1
zu große Programme (Bildschirmseite!) zerlegen in (weitgehend) unabhängige Einheiten: Unterprogramme
Bisher Datentypen: einfach Zahlen, Wahrheitswerte, Zeichenketten zusammengesetzt Arrays (Felder) zur Verwaltung mehrerer zusammengehörender Daten desselben Datentypes eindimensional, mehrdimensional, Array-Grenzen
