Professional Documents
Culture Documents
Jytfdjftj
Jytfdjftj
u softverskom inženjerstvu
ETFBL
Dunja Vrbaški
21-22/L
Regularni izrazi
- opis paterna
- rad sa tekstom
- find / search&replace
- leksička analiza - prevodioci
RE → e-NKA → NKA → DKA
s01 = {s0}
p0 p1 p2 p3
𝜎1(s, a) = U {𝜎(p, a) | p ∈ s }
p2 p3 p1
RE → e-NKA → NKA → DKA
a(bba|bb)*b a(ba)*(b|bab)*
RE ← e-NKA ← NKA ← DKA
a*ba*b(a|b)*
Numerišu se stanja
Dodaju se novo početno i završno i numerišu se sa n-1 i n
od 2 do 2 (preko svih <= 1); 2-0-2 - direktan prelaz
od 2 do 3 (preko svih <= 1); 2-0-3 - direktan prelaz
DKA
Numerišemo stanja
Σ = {0, 1}
- 0*1110*
- {0n1n | n >= 1}
regularan izraz
automat
r=xyz
y≠ε
|xy| <= n
xyiz ∈ L
Zadatak
Razmisliti, ako već niste, o tome kako izgledaju automati (DKA, regularni jezici) i kako se odatle
može doći do ideje pumping leme. Kakve veze ima broj stanja automata sa konstantom
napumpavanja?
Primena: programski prevodioci
“prepoznajemo”
“string”
“ok vs error”
* pročitani simbol se uzima u obzir za sledeći token
Prilikom realizacije skenera, ako ima više različitih prelaza da li na kraju imamo jedan veliki
automat ili rade posebni automati?
U C-u, šta je rezultat za ---a u okviru različitih izraza? Greška ili ne?
Šta neko može očekivati da ovde bude rezultat?
Šta (neki) kompajler kaže? Da li je vaša pretpostavka bila tačna?
Pogledati: https://esolangs.org
Implementirati neki?
Regularni izrazi (jezici) nisu više dovoljni da se opišu pravila sintakse mnogih programskih jezika.
Međutim, postoji teorija koja omogućava formalizaciju i automatizaciju procesa parsiranja kao što
skeniranje može da se automatizuje na osnovu regularnih izraza i odgovarajućih DKA.
Hijerarhija Čomskog
Noam Chomsky
→ formalni jezici
Hijerarhija Čomskog
(Chomsky)
Hijerarhija Čomskog
(Chomsky)
Za sada:
regularni izrazi → generisanje
DKA → prihvatanje
Iznad:
komplikovanije
moćnije
Gramatika - odgovarajući jezik
Na primer:
Jezik L(G) generisan gramatikom G je skup reči nad skupom terminala koje
se mogu izvesti počevši od početnog pojma.
Gramatika je uređena četvorka G = (Σ, N, P, S) gde je:
A→s
A → sB
A→ε
ILI
A→s
A → Bs
A→ε
s∊Σ
Regularna gramatika
A→s
A → sB desno-regularne, desno-linearne
A→ε
ILI
A→s
A → Bs levo-regularne, levo-linearne
A→ε
s∊Σ
Regularna gramatika
A→s
A → sB
A→ε
A→s
A → Bs
A→ε
s∊Σ
Regularne gramatike
Regularan jezik
Regularni izrazi
Konačni automati
Notacija: oznaka za alternativu, umesto navođenja dva pravila ( “dve strelice”)
I dalje imamo jedan neterminal sa leve strane, ali je desna strana opštija
Zašto se zove kontekstno slobodna?
P:
E → E + E
E → E * E
E → (E)
E → id
BNF (Bakus-Naurova) forma
Dodaju se oznake
- nekad i *, +, ?
Nije regularan, nema DKA.
DKA ne ume da broji.
Da li postoje odgovarajući automati za KSG?