0% fanden dieses Dokument nützlich (0 Abstimmungen)
50 Ansichten29 Seiten

FSAT 01 Sprachen

Sprachen

Hochgeladen von

Fasih
Copyright
© © All Rights Reserved
Wir nehmen die Rechte an Inhalten ernst. Wenn Sie vermuten, dass dies Ihr Inhalt ist, beanspruchen Sie ihn hier.
Verfügbare Formate
Als PDF, TXT herunterladen oder online auf Scribd lesen
0% fanden dieses Dokument nützlich (0 Abstimmungen)
50 Ansichten29 Seiten

FSAT 01 Sprachen

Sprachen

Hochgeladen von

Fasih
Copyright
© © All Rights Reserved
Wir nehmen die Rechte an Inhalten ernst. Wenn Sie vermuten, dass dies Ihr Inhalt ist, beanspruchen Sie ihn hier.
Verfügbare Formate
Als PDF, TXT herunterladen oder online auf Scribd lesen

Formale Sprachen /

Automatentheorie
Kapitel 1. Sprachen

Prof. Homeister
Agenda

• Motivation

• Alphabete

• Sprachen

2
Let´s go shopping

Der Supermarkt um die Ecke hat zwei Schiebetüren.


- Eingang
- Ausgang
3
Eingang

Nähert sich eine Person, öffnet sich die Tür.


Die Tür schließt sich, nachdem die Person hindurchgetreten ist.

4
Modell des Eingangs

Die Tür kann geöffnet /


geschlossen werden.

Matten mit Sensoren


Vordere Hintere
Matte Matte
Personen betreten
- die vordere Matte
- die hintere Matte
- beide Matten
Tür - keine der Matten

5
Modell des Eingangs – (2)

Tritt eine Person auf die vordere


Matte, öffnet sich die Tür (sofern
geschlossen).

Ist jemand auf der hinteren


Vordere Hintere
Matte Matte Matte, so geschieht nichts.

Sind beide Matten leer, schließt


sich die Tür (sofern offen).

Tür

6
Modell des Eingangs – (3)

Zwei Zustände der Tür:


offen, geschlossen („zu“).

Vier Eingabesignale (von Sensoren in den Matten):


vorn, hinten, keine, beide

Vorgänge, Zustandsübergänge:

KEINE VORN HINTEN BEIDE


ZU zu offen zu offen
OFFEN zu offen offen offen
7
Zustandsgraph

VORN, BEIDE
KEINE, VORN,
zu offen HINTEN,
HINTEN
BEIDE
KEINE

Zeitliche Entwicklung, bzgl. Folge von Eingangssignalen:


keine, keine, vorn, hinten, keine, vorn, beide, beide, hinten,
keine, keine, …

Hinweise: das ist KEIN endlicher Automat (s. nächstes Kap.) 8


Kaffeeautomat
Dieser

Zustands
E
- &0 , 50

o
• akzeptiert 1,- € oder -,50 € Münzen ↓

1
,0
0 ,5

• besitzt einen Ausgabeknopf


Werden
• mind. 1,50 € gezahlt, und
• die Kaffeetaste gedrückt OZ
gezahlt

gibt‘s Kaffee!

⑭Ausge
e

Übung: Modelliere den Kaffeeautomaten


- wähle Eingabesignale
- wähle sinnvolle Zustände
- zeichne ein Zustandsdiagramm

9
Kaffeeautomat: Modell
Abkürzung:
O – 1,- € (one Euro)
F – -,50 € (fifty Cents)
C – Ausgabeknopf (Coffee)

Beispiele:
OFC, FFFCF, OOC, OCOC füllen den Becher
OC, CC, OOOO, OCO machen uns nicht wach

10
Zustandsgraph -

C C

O
z0 z100

F, O F, O, C
F F

O E 15
z50 zpaid zcoffee
C
1

Endzustand
C F, O

11
Methodenreflektion
Was tut unser Modell? gibt kein Rückgeld aus

Zeichenketten untersuchen… strings als


möglich untersuchen

OFC, FFFCF, OOC, OCOC füllen den Becher


OC, CC, OOOO, OCO machen uns nicht wach

12
Agenda

• Motivation

• Alphabete

• Sprachen

13
Ein natürliches Alphabet (Menge von
Symbolen/Zeichen)

Sanskrit

Wir verwenden eine abstrakte


Definition.
Ziel: automatische Verarbeitung

14
Formale Alphabete

Ein Alphabet ist eine endliche, nichtleere Menge von Zeichen oder
Symbolen.

S
Beispiel: - igma
>
1 = {0,1}
2 = {a,b,c}
3 = {a,…,z,A,…,Z}
4 = {KEINE,HINTEN,VORN,BEIDE}
5 = {O,F,C}

15
Formale Alphabete – (2)
ascii ist das Alphabet aller ASCII-Symbole in der Praxis verwenden
wir Unicode

16
Wörter
Eine Folge von Symbolen eines Alphabets  ist ein Wort.

Bsp. mit  = {a,b,c}:


abbc
c
cccccccb

Bsp. 2:  = {KEINE,HINTEN,VORN,BEIDE}
Damit
KEINE KEINE HINTEN VORN BEIDE KEINE
ist ein Wort aus sechs Symbolen (Leerzeichen dienen der
Lesbarkeit).

17
Wörter – (2)
* ist die Menge aller Wörter über .

Beispiel:
 = {a,b,c},
* = {,a,b,c,aa,ab,ac,ba,bb, …} >
-
Größe :
nur leeres Wort

oder unendlich

ε ist das leere Wort (Länge 0, keine Zeichen)


ε ist stets in * enthalten.

Beachte:
• a kann Zeichen aus  sein
• a kann ein Wort der Länge Länge 1 aus * sein
wird vom Kontext bestimmt
18
Wortlänge
|w| bezeichnet die Länge eines Worts.

Beispiel:
|01100| = 5

Rekursiv definiert:
|ε| = 0
|wa| = |w| + 1 mit a Zeichen aus , w Wort aus *.

|w|a bezeichnet die Anzahl der Vorkommen des Zeichens a im


Wort w.
Beispiel:
|01100|0 = 3
19
Operationen
• Konkatenation:
w, v 2 *.
v · w oder vw: v und w aneinandergehängt.

Beispiel:  = {a,b,…,z}, sun 2 *, glasses 2 *.


sun · glasses = sunglasses

· wird meist ausgelassen.

Eigenschaften:
|v · w| = |v| + |w|
ε·v=v
v·ε=v
20
Operationen – (2)
• Potenz:
Bsp: (bla)2 = blabla
Definition: Für w 2 *:
w0 = ε
wn = wn-1 · w für n>0

Nützlich, um Mengen von Wörtern zu definieren:


L = {a2bn | n ¸ 0}
ist die Menge aller Strings, die mit zwei as beginnen, worauf
beliebig viele bs folgen dürfen.

L = {aa, aab, aabb, aabbb, …}

Übung: Was ist L´ = {a(bc)n | n ¸ 1} ?


21
Agenda

• Motivation

• Alphabete

• Sprachen

22
Formale Sprache
Eine Sprache ist eine Menge von Wörtern über einem Alphabet Σ.
Oder: Eine Sprache ist eine Teilmenge von *.

Bsp. Sprachen über Σ = {0,1}:


L = {00, 1, 0100101}
Leven, die Menge aller Wörter mit einer geraden Anzahl 0en
d.h. Leven = {w in * : |w|0 gerade}

Eine Sprache über Σascii:


Lnumbers, die Menge der korrekt gebildeten ganzen Zahlen in C.

6771, 0, -61551 in Lnumbers


xq?%, 04541, 61-551 nicht in Lnumbers

23
Beispiel: die Kaffeesprache

Alphabet {O,F,C}

OFC, FFFCF, OOC, OCOC füllt den Becher


OC, CC, OOOO, OCO macht uns nicht wach

OFC, FFFCF, OOC, OCOC sind Elemente einer Sprache;


wir nennen diese Lcoffee

OC, CC, OOOO, OCO  Lcoffee

Lcoffee beschreibt die Problemstellung vollständig.

24
Wofür formale Sprachen?
Die tägliche Arbeit eines Compilers:
Der Programmierer gibt eine Zeichenkette ein, z.B.:

for (i=0;i<5;i++)
println(i);

Der Compiler überprüft, ob diese Zeichenkette einem syntaktisch


korrekten Programm entspricht,
oder:
Ist die Zeichenkette ein Wort in LC-Programs?

25
Das Wortproblem
Die Aufgabe, algorithmisch zu bestimmen, ob eine Zeichenkette in
der Sprache liegt, heißt Wortproblem.
Eingabe: Sprache L, Wort w
Ausgabe: Ja, falls w2 L; Nein, sonst.

Sprache L w2L wL


Lnumbers w ist eine wohl- w ist keine korrekte
geformte ganze Zahl ganze Zahl

LC-Programs w ist ein syntaktisch w entspricht keinem


korrektes synt. korrektem
C-Programm C-Programm.
LJava-Classes … …
26
Anwendung des Wortproblems

Problemstellung im Compilerbau:
Teste, ob ein
Spezifikation einer
Programm
Programmiersprache
syntaktisch korrekt ist

Formale Sprache,
z.B. Ljava Teste, ob w 2 Ljava

27
Vorgriff: Compiling-Phasen
• Lexikalische Analyse:
Folge von Zeichen → Folge von Tokens

• Syntaktische Analyse (Parsing):


untersuche syntaktische Struktur, erzeuge Syntaxbaum

• Semantische Analyse:
Syntaxbaum mit Attributen, prüft die Typen von Bezeichnern: z.B.
type casts, ein string wird einem integer Bezeichner
zugeordnet o.ä.

• Synthese: Erzeugung von Maschinencode:


Zwischencode, Optimierung, Codeerzeugung

Detailliert in Kapitel 6.
28
Punkte 1 und 2 mit Gegenständen dieser Veranstaltung leistbar.
Thank you very much!

29

Das könnte Ihnen auch gefallen