Vous êtes sur la page 1sur 3

Automaty

‚wiczenia 01
by News

01-03-2011

Na zaj¦ciach b¦d¡ dwa kolokwia. Pierwsze, krótkie, na czwartych zaj¦ciach (s¡ pytania na wiki),
a drugie na caªe 1,5h. Liczona aktywno±¢ na zaj¦ciach.
mgr in». Marcin Kuta, C2 p 410, mkuta@agh.edu.pl

J¦zyki formalne
J¦zyk formalny

Jest to zbiór sªów, a wi¦c ka»da operacja na zbiorze dziaªa równie» na j¦zyku (np. przeci¦cie, suma,
iloczyn kartezja«ski itp.). Ka»dy j¦zyk musi by¢ zdeniowany nad jakim± alfabetem.

Alfabet

Jest to zbiór terminali (symboli terminalnych)

(1)
X
= {a, b, c, d}
T

Je±li j¦zyk L jest zdeniowany nad alfabetem to zapisujemy:


P

X∗
L⊆ (2)

Konkatenacja

Jedna z podstawowych operacji na sªowach. Po prostu ª¡czenie sªów. Np. mamy sªowa ab oraz cd
to wynikiem konkatenacji b¦dzie sªowo abcd, co mo»na zapisa¢ równie» jako ab · cd.
Kiedy konkatenujemy te same sªowa to mo»emy skróci¢ zapis:
· ... · a} = an
| · a {z
a
n

Wtedy (analogicznie jak dla pot¦gowania) zachodz¡ wªa±¢iwo±¢i:


an+1 = an · a

a1 = a
ale ju» np. (ab)n 6= an bn poniewa»
ab · ... · ab} 6= a
| · ab{z | · a {z
· ... · a} · b| · b {z
· ... · }b
n n n

Konkatenacja nie jest przemienna (ab 6= ba).

1
Sªowo puste

Jest to element neutralny wzgl¦dem konkatenacji


a0 = ε
x·ε=ε·x=x

Zadanie 1
Mamy alfabet = {+, −, /, ∗, a, b, ..., z, (, )}. Zbudowa¢ j¦zyk nad tym alfabetem (poda¢ przykªa-
P
dowe sªowa)
L = {a, z, a + b, c ∗ d, a + b ∗ c, (a + b) ∗ c, a + b ∗ (c + d)}

Jest to j¦zyk operacji arytmetycznych. Jak wida¢, ma niesko«czon¡ ilo±¢ sªów. Jeszcze jednak jest
on niekompletny, brakuje paru rzeczy.

Symbol nieterminalny, zmienna (variable)

Jest to symbol pojedynczy, który nie mo»e wyst¡pi¢ w generowanym sªowie j¦zyka. Oznaczany
jest N lub V . W praktyce jest to symbol otoczony nawiasami k¡towymi w notacji BNF. Przykªad
<wyrazenie> ::= a|b

Gramatyka formalna

Jest to sposób opisu j¦zyka formalnego, czyli podzbioru wszystkich sªów nad danym alfabetem.
Symbol gramatyki:
G = (N, T, P, S), S ∈ N
gdzie N to symbole nieterminalne, T - terminale, P - produkcje oraz S - symbol startowy (korze«
drzewa rozbioru).

Zadanie 2
Mamy <operator> ::= +|-|*|/, <zmienna> ::= a|b|...|z|. Napisa¢ symbol pocz¡tkowy (pro-
dukcja wyra»enia).

<wyra»enie> ::= <zmienna><operator><zmienna>


Ale ten zapis jeszcze nie uwzgl¦dnia nawiasów. Z nawiasami
<wyra»enie> ::= <wyra»enie><operator><wyra»enie>|<zmienna>|(<wyra»enie>)

Zadanie 3
Zbuduj drzewo rozbioru dla sªowa a + b + c ∈ L z poprzedniego alfabetu.

2
Dla naszej gramatyki nie jest to jedyne drzewo rozbioru. Mo»na je przedstawi¢ równie» jako

Gramatyka niejednoznaczna

Jest to gramatyka, w której istnieje sªowo, które posiada wi¦cej ni» jedno drzewo rozbioru.

Gramatyka jednoznaczna

Jest to gramatyka w której ka»de sªowo posiada dokªadnie jedno drzewo rozbioru.

Priorytet operacji mo»na odczyta¢ z drzewa. Im operator wa»niejszy (wi¦kszy priorytet) tym dalej
znajduje si¦ od korzenia (ni»ej jest). Nasze drzewo nie zachowuje równie» priorytetów poniewa»
val(a + b + c) = val((a + b) + c) wi¦c priorytety dodawania liczy si¦ od lewej strony, a jak wida¢ w
drugim drzewie jest na odwrót.

Zadanie 4
Poprawi¢ omawian¡ gramatyk¦, tak aby byªa jednoznaczna i zachowywaªa priorytety dziaªa« (w
tym nawiasy).
<add> ::= +|-
<mul> ::= *|/

<wyr> ::= <wyr><add><wyr2>|<wyr2>


<wyr2> ::= <wyr2><mul><wyr3>|<wyr3>
<wyr3> ::=(<wyr>)|<zmienna>
Nieterminale mo»na oznacza¢ jako du»e litery alfabetu ªaci«skiego. Finalna posta¢ gramatyki pro-
stych wyra»e« algebraicznych wygl¡da wi¦c
E −→ E + T |T
T −→ T ∗ F |F (3)
F −→ (E)|a
Gdzie, E - expression, T - term, F - factor oraz a - zmienna. E jest symbolem startowym.

Vous aimerez peut-être aussi