Literatur Reguläre Ausdrücke
|
|
- Kristian Schuster
- vor 6 Jahren
- Abrufe
Transkript
1 Literatur Reguläre Ausdrücke [2-1] [2-2] htm [2-3] [2-4] RegulaereAusdruecke.html [2-5] 2
2 Übersicht Grammatiken Graphen als Grammatiken Reguläre Ausdrücke 3 Grammatiken I Syntax = (Hier:) Definition der möglichen Reihungen von Symbolen einer künstlichen Sprache Semantik = (Hier:) Zuordnung von Reihungen von Symbolen zu Reihungen von Symbolen einer anderen Sprache In der Informatik (auch): Semantik = Zuordnung von Zeichenketten zu Zustandsänderungen (Effekten) Symbol = Token = (Hier:) Aneinanderreihung von Zeichen aus dem der Sprache zugrunde liegenden Zeichensatz, meist ASCII, moderner UTF-8, als eine eigene syntaktische Einheit Beispiele für Token aus Java: if, (, ), =, ==,!=, "hallo", class, void 4
3 Grammatiken II Grammatik = (Hier:) Regelsystem zur Definition der Syntax einer künstlichen Sprache Diese Definition bezieht sich nur auf Sprachen in der Informatik, z. B. Programmiersprachen oder Spezifikationssprachen Das Regelsystem wird durch folgende Teile charakterisiert: Regeln mit Namen (Non-Terminals) Symbole der Sprache selbst (Terminals) Kennzeichnung der Startregel Terminal = Symbol der Sprache, d.h. ein Terminal ist Bestandteil der Sprache Non-Terminal = Zeichenkette als Name einer Regel, d.h. ein Non- Terminal ist kein Bestandteil der Sprache, sondern ein Bestandteil der Grammatik 5 Grammatiken III Idee: Durch Kombination von Regeln wird ein "Satz" erzeugt. Alle erlaubten Kombinationen von Regeln bilden jeweils Sätze und legen dadurch die Sprache fest. Dabei wird von einer Startregel begonnen. Satz = In sich abgeschlossener, erlaubter Teil einer Sprache Satz = Erlaubte Verkettung von Symbolen der Sprache Satz = Erlaubte Verkettung von Terminals Sprache = Menge aller erlaubten Sätze 6
4 Beispiel I Start ::= A B c A ::= d e B ::= f g Terminale Symbole: c, d, e, f, g Non-Terminale Symbole: Start, A, B Startregel heißt "Start". Der einzig mögliche Satz ist: d e f g c 7 Beispiel II Der einzige Satz in diesem Beispiel wird durch wiederholtes Ersetzen der Non-Terminale durch den Regelkörper auf der rechten Seite konstruiert. Eine Regel kann als ein Makro aufgefasst werden. In dem Beispiel werden Symbole, die aus einem Buchstaben bestehen, verwendet, was in der Praxis unüblich ist, da die Bedeutung daran nicht erkennbar ist - also keine sprechenden Symbole. Der Kürze halber wurde dies hier so gemacht. 8
5 Aufbau einer Regel Name der Regel ::= Körper der Regel Der Name der Regel ist immer ein Non-Terminal. Die Startregel wird entweder extra gekennzeichnet, z. B. mit einem *, oder ist per Konvention die erste. Auf der rechten Seite der Regel können Terminale und Non- Terminale beliebig gemischt vorhanden sein. Die Gesamtkonstruktion muss aber so sein, dass am Ende eine Zeichenkette, die nur aus Terminalen besteht, entstehen kann. Statt "::=" kann auch ":=" oder "=" oder " "stehen. Manchmal endet jede Regel mit einem Punkt oder Semikolon. 9 Unterscheidung von Terminal und Non-Terminal Zur Vereinfachung werden alle Non-Terminale (Regelnamen) kursiv dargestellt, die Terminale normal. Es wäre auch möglich, alle Terminale innerhalb " und alle Non- Terminale normal zu notieren. (Dies wird hier nur erwähnt, da in der Literatur andere Konventionen bestehen) Es gibt verschiedene Arten der Darstellung von Grammatiken. Im Grunde ist die Darstellung unwichtig, sofern sie definiert wird. 10
6 Das Beispiel noch einmal Start ::= A B c A ::= d e B ::= f g Diese Form wird in dieser Veranstaltung benutzt, wenn eine verkürzte Version benutzt wird. Ansonsten die ISO-Norm für EBNF. Start ::= A B "c" A ::= "d" "e" B ::= "f" "g" oder... Start* = A B "c". A = "d" "e". B = "f" "g". oder Operatoren in der Grammatik I Eine Leerstelle/Blank kennzeichnet eine Reihung. Manchmal wird stattdessen ein Komma als expliziter Operator benutzt. Ein senkrechter Strich trennt Alternativen. Der Teil in eckigen Klammern ist optional. Das kleine Epsilon ε symbolisiert Nichts. Ein + am Ende eines Symbols kennzeichnet eine mind. einmalige, aber beliebig häufige Wiederholung. Ein * am Ende eines Symbols kennzeichnet eine optionale beliebig häufige Wiederholung. Geschweifte Klammern dienen der Klammerung. + und * haben die höchste Bindungsstärke. Die Reihung hat zweithöchste und die Alternative die niedrigste Bindungsstärke. 12
7 Operatoren in der Grammatik II ABC+ DEF* {ABC+ DEF }* ABC DEF+ Bitte immer die Blanks beachten! Ein Symbol endet mit dem ersten nicht für Symbole erlaubten Zeichen [ABC] DEF Alle Symbole bestehen nur aus: a bis z, A bis Z, 0 bis 9 und _ 13 Rekursion In derselben Regel kann der Regelname auch auf der rechten Seite stehen (direkte Rekursion). Dies ist auch über andere Regeln hinweg möglich (indirekte Rekursion). Rekursion realisiert Wiederholungen, das Epsilon Optionales: Rekursion Statt ABC ::= DEF* auch ABC ::= ABC DEF ε Optionales Statt ABC ::=[DEF] HIJ auch ABC ::={DEF ε} HIJ 14
8 Beispiel I Eine IF-Sprache Abfrage ::= IF Boolexpr THEN Statement* [ELSE Statement*] FI Boolexpr ::= Var < Var Var = Var Var > Var Var!= Var Statement ::= Var := Boolexpr ; Hier sind aufgrund der Alternativen und Wiederholungen beliebig viele Sätze konstruierbar, d.h. diese Sprache hat unendlich viele Sätze. Einige Non-Terminals stehen für eine Menge von zueinander alternativen Symbolen, hier var. var symbolisiert also eine Menge von Token bzw. Symbolen. Dies dient der Vereinfachung. Var steht hier für die möglichen Namen von Variablen. 15 Beispiel II Eine IF-Sprache Gültige Sätze sind: IF abc < def THEN Z:= abc > dfg; FI IF abc!= def THEN Z:= abc > dfg; Z:= abc > dfg; FI IF abc!= def THEN Z:= abc > dfg; Z:= abc > dfg; ELSE Z:= abc > dfg; Z:= abc > dfg; FI Nicht gültig ist aber: IF abc <= def THEN Z:= abc + dfg FI Beispiele für Token dieser Sprache: IF, <, :=, THEN,!= 16
9 Konkretes Beispiel: Delphi 5 (Auszug) typed_constant= simple_expression_ [ ('=' '<>' '<' '<=' '>' '>=' IN ) simple_expression_ ]. simple_expression_= [ '+' '-' ] term_ { ('+' '-' OR XOR ) term_ }. term_= factor_ { ('*' '/' DIV MOD AND SHR SHL ) factor_ }. factor_= NUMBER STRING_LITTERAL NIL variable_access [ ':' typed_constant { ';' variable_access ':' typed_constant } ] NOT factor_ '@' factor_ '^' NAME '(' [ typed_constant_] ')' set_factor. typed_constant_= typed_constant { ',' typed_constant }. Aus: 17 Konkretes Beispiel: Java vereinfacht (Auszug) Aus: 18
10 Compiler I Zur Vereinfachung werden Sprachen zwei-stufig definiert: Stufe 1: Lexikalischer Aspekt (Erkennung von Token) Stufe 2: Syntaktischer Aspekt (Erkennung der Syntax) Der Lexikalische Aspekt basiert auf der Menge von Symbolen, die durch eine Regel definiert werden, oben: Var. Var ::= {a b c d e f g h... 9 }+ sowie der Menge der sonstigen Terminalen Symbole. Dazu gehört auch die Bedeutung von Einrückungen, Kommentaren und Makros, z.b. in C #define oder #include. Z.B. haben in Python Einrückungen eine Bedeutung. Lexikalische Analyse = Erkennen von einfachen aus der Sicht der Grammatik atomaren Symbolen (Token) Überlesen sämtlicher unwichtiger Textteile Hier gibt es Ausnahmen: XML z.b. Zusammensetzen bzw. Expandieren des Codes 19 Bemerkungen Bei den Programmiersprachen bestehen die Token aus den sprachlichen Symbolen, z. B. IF oder BEGIN. Entfernt sind durch die lexikalische Analyse Makros (durch Expansion), Includes (durch Einfügen), Kommentare und Einrückungen. Im Reich vom XML werden auch Kommentare als Token aufgefasst und Einrückungen gegebenenfalls erhalten. In einigen Sprachen haben bestimmte Kommentare eine besondere Bedeutung, z.b. JavaDoc oder Annotationen in PHP. 20
11 Compiler II Scanner = Teil eines Compilers, der die lexikalische Analyse durchführt Parser = Teil des Compilers, der eine Sequenz von Token auf syntaktische Korrektheit prüft und bei Korrektheit in eine andere Darstellung (Ableitungsbaum) transformiert Datei(en) Erster Teil eines Compilers Scanner Parser Tokenstrom Ableitungsbaum 21 Graphische Darstellung In vielen Fällen ist eine Darstellung einer Grammatik durch (sehr) viele Regeln schwer zu verstehen. Daher wurde eine graphische Notation entwickelt. Diese Notation kann auch direkt in einer verzeigerten Struktur im RAM realisiert und interpretiert werden. Dies beschreibt u.a. das Buch über Compilerbau von N. Wirth. 22
12 Graphische Elemente I 23 Graphische Elemente II 24
13 Beispiele I - Zahlen 25 Beispiele II - Bedingung 26
14 Beispiele III - Klassen 27 Beispiele IV - Kontrollstrukturen 28
15 Meta-Grammatik I In den Folien dieser Veranstaltung werden Grammatiken aus folgenden Elementen aufgebaut: Element Terminal "Terminal" 'Terminal' Regelname Term Term Term Term Term* Term+ Term... Erläuterung Symbol der Sprache, wobei nur die Zeichen a-za-z0-9_ sowie die deutschen Umlaute verwendet werden Symbol der Sprache, wenn zusätzlich andere Zeichen, wie z. B. >, zum Symbol gehören Grammatiksymbol oder Tokenklasse (Zeichen wie Terminal) Reihung Alternative 0- oder beliebige Wiederholung von Term 1- oder beliebige Wiederholung von Term {} Klammern zur Gruppierung [ Term ] Optionale Teile (0- oder 1malige Wiederholung)... Irgendetwas (darf nicht unmittelbar einem Term folgen) 29 Meta-Grammatik II Term ist der Oberbegriff aus Regelname und Terminal. Wenn in einem Terminal selbst ein " oder ' vorkommt, wird es als "'" oder '"' bzw. """ dargestellt. Da dies etwas umständlich ist, wird einfach ein ' bzw. " benutzt, wenn es das Symbol umschließt und ansonsten überflüssig ist: "String" bedeutet """String""" "<Absatz>" bedeutet <Absatz> "<" "Absatz" ">" bedeutet <"Absatz"> Meta-Grammatik = Grammatik einer Grammatik Meta (griech.) über oder nach 30
16 Ordnungen von Sprachen I Anhand der syntaktischen Form der Produktionsregeln lassen sich folgende Klassen von Sprachen identifizieren: Reguläre Sprachen: Es gibt nur folgende Formen: Regel ::= Regel Terminal Regel ::= Terminal Regel ::= Terminal Regel Regel ::= Terminal Kontextfreie Sprachen: Auf der linken Seite steht nur ein Regelname, auf der rechten ein nicht-leerer beliebiger Ausdruck. Kontextsensitive Sprachen: Auf der linken Seite steht ein beliebiger Ausdruck, der aber kürzer als der rechte Ausdruck sein muss. Der Rest: Hier ist alles erlaubt. 31 Ordnungen von Sprachen II "Normale" Programmiersprachen sind vom Typ "kontextsensitiv", da dort an einer Stelle etwas deklariert werden muss und an einer anderen Stelle benutzt wird. Da kontextsensitive Grammatiken schwer und ineffizient zu implementieren sind, werden stattdessen kontextfreie Grammatiken verwendet, deren Kontext in einem weiteren Compiler-Durchlauf bestimmt wird. In diesem weiteren Compiler-Durchlauf wird geprüft, ob z.b. die deklarierten Variablen entsprechend der Deklaration auch benutzt werden. 32
17 Ordnungen von Sprachen III - Muster Pattern Matching = Mustervergleich = Prüfung, ob und wo ein Text oder ein Teil davon einer Bedingung genügt Die Bedingungen dazu lassen sich mit regulären Sprachen definieren. Eine Sprache für Pattern Matching besteht aus (normalen) Zeichen und Meta-Zeichen. Beispiele für Meta-Zeichen beim Mustervergleich sind: Unix-Shell: *? JavaScript: *? +. ^ $ 33 Reguläre Sprachen Reguläre Sprachen lassen sich leicht durch Automaten realisieren. Deterministischer Automat = Gebilde, das immer in einem Zustand ist und aufgrund von Ereignissen in einen anderen wechselt, wobei der Zustand zu jedem Zeitpunkt anhand der Ereignisgeschichte bestimmbar ist. (Bei einem stochastischen Automaten gilt die letzte Bedingung nicht; diese werden hier nicht betrachtet) Automaten lassen sich definieren mittels: Zustandsübergangsdiagrammen oder Regulären Sprachen Ein Zustandsübergangsdiagramm ist ein gerichteter Graph mit Kanten, die mit Ereignissen verbunden sind, und Knoten, die einen Zustand symbolisieren. 34
18 Zustandübergangsdiagramm (Beispiel) x, y und z sind Ereignisse Zustände mit doppelten Kreis sind Start- bzw. Endzustände Die Nummern in den Kreisen dienen lediglich zur Benennung. 35 Beispiel Automat für den regulären Ausdruck "ab*c" Was bedeutet hier das Metazeichen "*"? 36
19 Realisierung Ist der Musterausdruck zur Laufzeit konstant, lassen sich Automaten zur Erkennung von Mustern durch geschachtelte switch- bzw. case-konstruktionen in einer Schleife mit einer Zustandsvariablen realisieren. Ist der Musterausdruck variabel, z. B. wenn er eingelesen wird, dann wird eine Tabelle mit den Fallunterscheidungen sowie den Übergängen konstruiert, die beim Mustervergleich interpretiert wird (auch in einer Schleife mit Zustandsvariablen). 37 Nach dieser Anstrengung etwas Entspannung... 38
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
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
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
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
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
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
MehrEinführung in die Programmierung EBNF. Thomas R. Gross. Department Informatik ETH Zürich
252-0027 Einführung in die Programmierung EBNF Thomas R. Gross Department Informatik ETH Zürich Übersicht Es gibt vier elementare Ausdrucksmöglichkeiten in EBNF Sie lernen EBNF Beschreibungen zu lesen
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
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
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
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
MehrÜbung Praktische Informatik I
Übung Praktische Informatik I HWS 2008/2009 Benjamin Guthier Lehrstuhl für Praktische Informatik IV Universität Mannheim guthier@pi4.informatik.uni-mannheim.de 24.10.08 6-1 Heutige große Übung Hinweise
MehrÜ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
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
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
MehrKlammersprache Definiere
Klammersprache w=w 1...w n {(,)}* heißt korrekt geklammert, falls die Anzahl ( ist gleich der Anzahl ). in jedem Anfangsstück w 1,...,w i (i n) ist die Anzahl ( nicht kleiner als die Anzahl ). Definiere
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
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,
MehrGrundlagen der Programmierung 2 (Comp-A)
Grundlagen der Programmierung 2 (Comp-A) Prof. Dr. Manfred Schmidt-Schauÿ Künstliche Intelligenz und Softwaretechnologie 23. Mai 2007 Compiler; Übersetzungprogramme Ein Übersetzer (Compiler) ist ein Programm,
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
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
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
MehrGrammatiken. 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,
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
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
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?
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,..)
Mehr1 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
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
MehrBoolean 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,
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/
MehrEinstieg in die Informatik mit Java
1 / 41 Einstieg in die Informatik mit Java Weitere Anweisungen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 41 1 Überblick 2 Verbundanweisung 3 Bedingte Anweisung 4 Auswahlanweisung
MehrAbstrakte Syntax von Prolog (1)
3. Prolog Syntax 3-1 Abstrakte Syntax von Prolog (1) Abstrakte und konkrete Syntax: Abstrakte Syntax: Nur Datenstrukturen, die der Parser anlegt (z.b. Operatorbaum). Konkrete Syntax: Zeichenketten, die
MehrTheoretische Informatik I
Theoretische Informatik I Rückblick Theoretische Informatik I 1. Mathematische Methoden 2. Reguläre Sprachen 3. Kontextfreie Sprachen Themen der Theoretischen Informatik I & II Mathematische Methodik in
MehrEin 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
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
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,
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
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
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
MehrSprachanalyse. 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
MehrGTI. Hannes Diener. 18. Juni. ENC B-0123,
GTI Hannes Diener ENC B-0123, diener@math.uni-siegen.de 18. Juni 1 / 32 Als Literatur zu diesem Thema empfiehlt sich das Buch Theoretische Informatik kurzgefasst von Uwe Schöning (mittlerweile in der 5.
MehrAlgorithmen und Datenstrukturen (für ET/IT)
Algorithmen und Datenstrukturen (für ET/IT) Sommersemester 2016 Dr. Tobias Lasser Computer Aided Medical Procedures Technische Universität München Programm heute 1 Einführung 2 Grundlagen von Algorithmen
MehrJava Anweisungen und Ablaufsteuerung
Informatik 1 für Nebenfachstudierende Grundmodul Java Anweisungen und Ablaufsteuerung Kai-Steffen Hielscher Folienversion: 24. Januar 2017 Informatik 7 Rechnernetze und Kommunikationssysteme Inhaltsübersicht
Mehr1. Übungsblatt 6.0 VU Theoretische Informatik und Logik
. Übungsblatt 6. VU Theoretische Informatik und Logik 25. September 23 Aufgabe Sind folgende Aussagen korrekt? Begründen Sie jeweils Ihre Antwort. a) Für jede Sprache L gilt: L < L (wobei A die Anzahl
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
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:
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
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
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
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
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
MehrDer Earley-Algorithmus
Der Earley-Algorithmus Kursfolien Karin Haenelt 25.03.02 1 25.03.02 2 Inhalt Funktion des Earley-Algorithmus Begriffe Erkenner/Parser Kontextfreie Grammatik Ein Beispiel Funktionen des Algorithmus Funktionsweise
MehrInformatik I Übung, Woche 40
Giuseppe Accaputo 1. Oktober, 2015 Plan für heute 1. Nachbesprechung Übung 2 2. Vorbesprechung Übung 3 3. Zusammenfassung der für Übung 3 wichtigen Vorlesungsslides Informatik 1 (D-BAUG) Giuseppe Accaputo
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
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}
MehrDer Earley-Algorithmus
Der Earley-Algorithmus Kursfolien Karin Haenelt 25.03.02 1 25.03.02 2 Inhalt Funktion des Earley-Algorithmus Begriffe Erkenner/Parser Kontextfreie Grammatik Ein Beispiel Funktionen des Algorithmus Funktionsweise
Mehr1 Bedingte Anweisungen. 2 Vergleiche und logische Operatoren. 3 Fallunterscheidungen. 4 Zeichen und Zeichenketten. 5 Schleifen.
Themen der Übung Kontrollstrukturen, Pseudocode und Modulo-Rechnung CoMa-Übung III TU Berlin 9.10.01 1 Bedingte Anweisungen Vergleiche und logische Operatoren 3 Fallunterscheidungen 4 Zeichen und Zeichenketten
MehrLinux II. Reguläre Ausdrücke Editoren Scripting. 2 Linux II. Linux I II III Res WN/TT NLTK XML Weka E Reguläre Ausdrücke Editoren Scripting
Linux II 2 Linux II Reguläre Ausdrücke Editoren Scripting Reguläre Ausdrücke Reguläre Ausdrücke beschreiben eine Menge von Zeichenfolgen und werden benutzt um m festzustellen, ob eine Zeichenkette Teil
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
MehrProgramm heute. Algorithmen und Datenstrukturen (für ET/IT) Definition Algorithmus. Wie beschreibt man Algorithmen?
Programm heute Algorithmen und Datenstrukturen (für ET/IT) Sommersemester 2015 1 Einführung Dr. Tobias Lasser Computer Aided Medical Procedures Technische Universität München 2 Grundlagen von Algorithmen
MehrReguläre Sprachen und endliche Automaten
Reguläre Sprachen und endliche Automaten 1 Motivation: Syntaxüberprüfung Definition: Fließkommazahlen in Java A floating-point literal has the following parts: a whole-number part, a decimal point (represented
MehrSyntaxanalyse 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
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*
MehrJavaScript. Dies ist normales HTML. Hallo Welt! Dies ist JavaScript. Wieder normales HTML.
JavaScript JavaScript wird direkt in HTML-Dokumente eingebunden. Gib folgende Zeilen mit einem Texteditor (Notepad) ein: (Falls der Editor nicht gefunden wird, öffne im Browser eine Datei mit der Endung
MehrParsing regulärer Ausdrücke. Karin Haenelt
Karin Haenelt 25.4.2009 1 Inhalt kontextfreie Grammatik für reguläre Ausdrücke Grundlagen Parsebaum: konkrete Syntax Syntaxbaum: abstrakte Syntax Algorithmus: rkennung Konstruktion des Syntaxbaumes 2 Grammatik
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
MehrEIGENSCHAFTEN VON SPRACHEN
Vorlesung und Übung Universität Paderborn Wintersemester 2016/2017 Dr. Peter Pfahler EIGENSCHAFTEN VON SPRACHEN EWS, WS 2016/17, Pfahler C-1 Einführung Sprachen in der Informatik werden für bestimmte Zwecke
MehrForm und Darstellung von Informationen
Form und Darstellung von Informationen 1. Computermetaphern 2. Beschreibungssprachen für Texte 3. Grammatiken zur Beschreibung syntaktischer Strukturen 4. Beispiel einer Textbeschreibungssprache: HTML
Mehr3.0 VU Formale Modellierung
3.0 VU Formale Modellierung Gernot Salzer Arbeitsbereich Theoretische Informatik und Logik Institut für Computersprachen SS 206 Inhalt 0. Überblick. Organisation 2. Was bedeutet Modellierung? 3. Aussagenlogik
MehrTheorie 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
MehrTagesprogramm
1 2015-10-22 Tagesprogramm Syntax und Semantik Varianten von Schleifen Varianten von Programmverzweigungen 2 2015-10-22 Syntax und Semantik Darstellung der Syntax Syntax: Aufbau der Sätze bzw. Programme
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
MehrKontextfreie Grammatiken. Kontextfreie Grammatiken 1 / 45
Kontextfreie Grammatiken Kontextfreie Grammatiken 1 / 45 Was kann man mit kontextfreien Grammatiken anfangen? Kontextfreie Grammatiken, kurz: werden zur Modellierung von KFGs beliebig tief geschachtelten
MehrEinstieg in die Informatik mit Java
1 / 34 Einstieg in die Informatik mit Java weitere Anweisungen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 34 1 Verbundanweisung 2 Bedingte Anweisung 3 Auswahlanweisung
MehrReguläre Ausdrücke. Michael Jäger. 4. April 2017
Reguläre Ausdrücke Michael Jäger 4. April 2017 Zeichenketten und Sprachen Ein Alphabet ist eine endliche Menge von Symbolen. Beispiele: 1. Σ 1 = {0, 1} 2. Σ 2 = {a, b, c, d, e, f, g, h, i, j, k, l, m,
MehrVordiplom Wirtschaftswissenschaften Allgemeine Informatik I WS 2001/ April 2002
Vordiplom Wirtschaftswissenschaften Allgemeine Informatik I WS 200/2002 2. April 2002 Name: Vorname: Matrikelnummer: Bearbeitungszeit: 20 Minuten Aufgabe Punkte Bewertung 2 a) 2 b) 2 c) 2 d) 2 e) 4 2 0
MehrUnterrichtsmaterialien in digitaler und in gedruckter Form. Auszug aus: Formale Sprachen und endliche Automaten - Schülerband
Unterrichtsmaterialien in digitaler und in gedruckter Form Auszug aus: Formale Sprachen und endliche Automaten - Schülerband Das komplette Material finden Sie hier: School-Scout.de Dr. D. Appel Formale
Mehrjavascript Coding-Guidelines 2. Ausgabe Februar 2015 Der Guideline beschreibt den verwendeten Coding-Stil von javascript als eigene Richtline.
javascript Coding-Guidelines 2. Ausgabe Februar 2015 Der Guideline beschreibt den verwendeten Coding-Stil von javascript als eigene Richtline. Inhalts-Verzeichnis 1. Allgemeine Richtlinien...1 1.1 Anzahl
MehrEinstieg in die Informatik mit Java
1 / 47 Einstieg in die Informatik mit Java Anweisungen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 47 1 Ausdrucksanweisung 2 Einfache Ausgabeanweisung 3 Einfache Eingabeanweisung,
MehrWas 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
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
Mehr2. Programmierung in C
2. Programmierung in C Inhalt: Überblick über Programmiersprachen, Allgemeines zur Sprache C C: Basisdatentypen, Variablen, Konstanten, Operatoren und Ausdrücke Anweisungen und Kontrollstrukturen (Steuerfluss)
MehrDisMod-Repetitorium Tag 4
DisMod-Repetitorium Tag 4 Endliche Automaten, Reguläre Sprachen und Kontextfreie Grammatiken 22. März 2018 1 Endliche Automaten Definition DFA Auswertungen Äquivalenzrelationen Verschmelzungsrelation und
MehrFACHHOCHSCHULE MANNHEIM
für Java-Programmierer Der Präprozessor Prof. Dr. Wolfgang Schramm FACHHOCHSCHULE MANNHEIM Hochschule für Technik und Gestaltung Präprozessor Ist dem Compiler vorgeschaltet ( Prä -). Spezielle Anweisungen
MehrStratego/XT und ASF+SDF Meta-Environment. Paul Weder Seminar Transformationen Datum:
Stratego/XT und ASF+SDF Meta-Environment Paul Weder Seminar Transformationen Datum: 20.01.2006 Gliederung Allgemeines ASF+SDF Meta-Environment Stratego/XT Zusammenfassung/Vergleich SDF (Syntax Definition
MehrFunktionen nur wenn dann
Funktionen nur wenn dann Funktionen können auch nur in bestimmten Fällen angewendet werden. Code wird nur in einem bestimmten Fall ausgeführt Code Ja Code Block wahr if wahr? Nein else Code Block Alternative
Mehr9.4 Grundlagen des Compilerbaus
Kap09.fm Seite 717 Dienstag, 7. September 2010 2:06 14 9.4 Grundlagen des Compilerbaus 717 so dass die Benutzung dieser Regeln zum Aufbau eines + -Knotens bzw. eines Negations- Knotens im abstrakten Syntaxbaum
MehrPumping-Lemma 2 Pumping-Lemma Sei L eine von einem endlichen Automaten erkannte Sprache. Dann existiert eine natürliche Zahl p N derart, dass jedes Wo
1 Endliche Automaten Modellierungskonzept mit vielen brauchbaren Eigenschaften schnelle Spracherkennung graphisch-visuelle Beschreibung automatische Korrektheitsbeweise gute Kompositionalitätseigenschaften
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
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
Mehr