Sie sind auf Seite 1von 8

Sprachen und Grammatiken

Syntax: Formale Regeln, welche Stze gebildet

werden d k knnen:

Der Elefant a die Erdnuss. (syntaktisch korrekt) Der Elefant a Erdnuss die. (syntaktisch falsch)

Semantik: (Formale) Regeln, welche Stze

eine Bedeutung haben:


Der Elefant a die Erdnuss. (semantisch korrekt, sinnhaft) Die Die Erdnuss a den Elefant Elefant. (semantisch falsch, sinnlos)
50

Begriffsbildung
Grammatik: Regelwerk zur Beschreibung der Syntax Produktionsregel: Regel einer Grammatik zum Bilden von

St Stzen, z.B. B Satz a Subjekt Prdikat Objekt. generierte Sprache: Alle durch Anwendungen der Regeln einer Sprache erzeugbaren Stze Grammatiken sind also (formale) Konstruktionsregeln fr Zeichenketten (Stze sind Zeichenketten!) Die deutsche Grammatik beschreibt alle Zeichenketten, die deutsche deutsche Stze Stze sind: Deutsch (versus Nicht-Deutsch) Deutsche Stze beschreiben die deutsche Grammatik; Computerlinguisten versuchen, dies zu formalisieren Der Duden beschreibt die deutsche Grammatik in Stzen, die nach deutscher Grammatik konstruiert sind.
51

Regulre Ausdrcke
Einfache Konstrukte, um Konstruktionsregeln fr

Zeichenketten festzulegen:

Worte a, b, etc. Sequenz: pq Auswahl: p + q Iteration: p*

Anmerkung: Die Iteration p* definiert das 0-,1-

oder d n-fache f h wiederholen i d h l von p. (Die (Di Notation N t ti p+ schliet die leere Iteration aus, d.h. p muss mindestens einmal verwendet werden werden.) )
52

Regulre Ausdrcke: Beispiele


Mit L beginnende Binrzahlen ber L und O:

L(L + O)* Bezeichner einer Programmiersprache, die mit einem Buchstaben anfangen mssen: (a + b + ... + z)(a + b + ... + z + 0 + 1 + ... + 9)* 9) Anwendung: Muster-Konstruktion & Muster-Erkennung Mit regulren g Ausdrcken beschreiben wir formale Konstruktionsregeln fr Zeichenketten, aber regulre Ausdrcke sind nicht so mchtig wie Grammatiken. Mit regulren reg lren A Ausdrcken sdrcken knnen wir ir z.B. B NICHT beschreiben, was Deutsch ist. Mit der Backus-Naur-Form knnen wir formale Konstruktionsregeln fr Zeichenketten beschreiben, mit hherer Mchtigkeit als regulre Ausdrcke.
53

Backus-Naur-Form: Beispiel
Bezeichner, die mit einem Buchstaben anfangen

mssen in Backus-Naur-Form: Ziffer ::= 1|2|3|4|5|6|7|8|9|0 Buchstabe ::= a|b|c| . . . |z ::= Buchstabe| Ziffer| BuchstabeZeichenkette| Ziffer iff Zeichenkette i h k tt ::= Buchstabe| BuchstabeZeichenkette Zeichenkette

Bezeichner

vergleiche: Bezeichner als regulrer Ausdruck :

(a + b + ... + z)(a + b + ... + z + 0 + 1 + ... + 9)*


54

Backus-Naur-Form
Festlegung der Syntax von Kunstsprachen:

Ersetzungsregeln der Form linkeSeite ::= :: rechteSeite linkeSeite ist Name des zu definierenden Konzepts rechteSeite gibt Definition in Form einer Liste von Sequenzen aus Konstanten und anderen Konzepte (evtl. (evtl einschlielich dem zu definierenden!). Listenelemente sind durch | getrennt. definierte d fi i t K Konzepte: t Ni Nichtterminalsymbole htt i l b l Konstanten: Terminalsymbole Mit der Backus-Naur-Form beschreiben wir formale Konstruktionsregeln fr Zeichenketten, wir beschreiben Syntax. Die Backus-Naur-Form folgt selber einer Syntax, genauso wie die deutsche Sprache. Kann man die Backus-Naur-Form in Stzen beschreiben, die nach Backus-Naur-Form konstruiert sind ? (Thema fr die Weihnachtsvorlesung...)

55

Backus-Naur-Form: Beispiel /2
Backus-Naur-Form fr primitive regulre Ausdrcke

(ohne Klammern, vgl. Folie 52), nur mit den Zeichen (Worten) a, b: Wort ::= a|b RegExp ::= RegExpRegExp RegExp g p ::= RegExp g p+RegExp g p RegExp ::= Wort|Wort*|RegExp* Jetzt knnen wir regulre Ausdrcke bilden wie z z.B. B a, a a*, ab, a+b, a+b*a, etc; (a+b)* geht nicht, dazu brauchen wir Klammern. Wir haben angerissen angerissen, wie man regulre Ausdrcke formal bildet (Syntax). Ein regulrer Ausdruck kann wiederum selbst eine Syntax beschreiben, auf Folie 55 z.B. die Syntax y fr Bezeichner ( (diese wird auf Folie 55 auch in Backus-Naur-Form beschrieben!)
56

Backus-Naur-Form: Beispiel /3
Syntax fr Pseudo-Code-Algorithmen
atom bedingung b di sequenz auswahl addiere 1 zu x|... 0| x=0|... block; block falls bedingung dann block| falls bedingung dann block sonst block schleife :: ::= wiederhole block bis bedingung| solange bedingung fhre aus block block ::= atom|sequenz|auswahl|schleife
/* Bestimmung der grten Zahl einer Liste */ Setze erste Zahl als bislang grte Zahl; solange Liste nicht erschpft fhre aus Lies nchste Zahl der Liste; falls diese Zahl > bislang grte Zahl dann setze diese Zahl als bislang grte Zahl; gib bislang grte Zahl aus
57

::= ::= ::= ::=