Præsentation er lastning. Vent venligst

Præsentation er lastning. Vent venligst

Endelige Automater Simple sprog (regulære sprog) kan beskrives vha. Regulære udtryk. Regulære sprog kan altid parses vha endelige automater. Nondeterministik.

Lignende præsentationer


Præsentationer af emnet: "Endelige Automater Simple sprog (regulære sprog) kan beskrives vha. Regulære udtryk. Regulære sprog kan altid parses vha endelige automater. Nondeterministik."— Præsentationens transcript:

1 Endelige Automater Simple sprog (regulære sprog) kan beskrives vha. Regulære udtryk. Regulære sprog kan altid parses vha endelige automater. Nondeterministik Finite State Machine kan omskrives til Finite State Machine/endelig automat.

2 Regulær grammatik Right regular grammar A → a A → aB A → ε - hvor A er en non-terminal og a er en terminal Left regular grammar A → a A → Ba A → ε ident → letter tegenlist letter → a | b | c | d |........ | å | A | B |...... | Å tegnlist → tegn tegnlist | e tegn → letter | digit digit → 0 | 1 | 2 | 3 |...... | 9

3 Regulær udtryk Lad T være det terminale alfabet. og T* angive et sættet af mulige strenge over T ex: T={a,b,c} så er: aaa,bab,bbbbcbbaaaa er indeholdt i T* Et sporg L er et muligt subsæt af T* ex: L={aaa,aab,abc} Hvis et sprog er ''finite'' kan det beskrives på denne måde, men det er sprog som regel ikke.

4 Operationer på sprog. Fordi sprog er sæt så vil enhver sæt-operation kunne anvendes på sprog. Ex: L1={aaa,bbb} L2={aaa,ccc} L1  L2 = {Sættet af strings tilhørende både L1 og L2} = {aaa} L1  L2 = {Sættet af strings tilhørende L1 eller L2} ={aaa,bbb,ccc}

5 Nul eller flere gentagelser hvis i går mod uendeligt ex: L={a} => L*={e,a,aa,aaa,aaaa,aaaaa,... } L={aa,bb} => L*={e, aa,bb,aaaa,aabb,bbaa,bbbb,.... } Dvs: T* er settet af vilkårligt sammenkædede symboler fra T (Sættet af alle strenge)

6 Regulære udtryk Metode til at beskrive regulære sprog: Regulære udtryk Anvendte symboler: T,(,),c.,un.,* ex: T={a,b,c} L= a* ={e,a,aa,aaa,aaaa,...} L= a  b = a | b ={a,b} L= ab ={ab} L= a*b ={b,ab,aab,aaab, (vilkårlig mange a'er)} L= a*  b* ={e,a,b,aa,bb,aaa,bbb,aaaa,bbbb (strenge af vil. len bestående af a'er eller b'er} L= a*b*b ={b,ab,aab,aaab,.. aaaabb, aaaabbbb... (vil. mange a'er, og mindst et b)...}

7 Regulære udtryk Alternation | : "gray|grey" matcher gray or grey. Grouping () : "gray|grey" og "gr(a|e)y" matcher bægge gray and grey. Quantification En quantifier efter et tegn eller gruppe af tegn angiver hvor mange gange tegnet eller gruppen skal gentages. ? 0 eller 1 gentagelser : "colou?r" matcher både color og colour. * 0 eller flere gentagelser: "go*gle" matcher ggle, gogle, google, osv. + 1 eller flere gentagelser: "go+gle" matcher gogle, google, osv.

8 Regulære udtryk: POSIX-udvidelser:.Alle tegn i alfabetet. []Matcher et enkelt tegn som er indeholdty i []. Fx [abc] matcher a, b eller c. [a-z] matcher et lillebogstav fra a til z i den tegntabel der anvendes typisk Ascii. [^ ]Matcher et tegn fra komplementærmængden. Fx. [^a-z] matcher alle andre tegn end de små bogstaver. ^Start på linie. $Slutningen på linien.

9 Regulære udtryk if then else : Endelige ord. [0-9]+ : Hel tal fx. 5467 -?[0-9]+ : Positive og negative heltal. [a-z]([a-z]|[0-9]|_)* : symbolsknavn fx temp_3 //[^\n]* : // kommentar -?([0-9]+|([0-9]*\.[0-9]+)([eE][-+]?[0-9]+)?) : Real tal fx -3.4e-4

10 Endelige automater En maskine til at undersøge om en streng tilhøre et sprog L. Maskinen: Deterministic state machine (finite state automata) (Endelig automat). M=(K,T,delta,s,F) hvor: K: er et endeligt sæt af tilstande. T: er et alfabet. delta: er en funktion som afbilder en tilstand og et symbol fra T over I en ny tilstand i.e. K x T -> K s: tilhørende K er initial tilstanden. F: subsæt K er et sæt af slut tilstande. Maskinen arbejder således: Givet en streng T= a1a2a3,...ai Så vi maskinen gennemløbe en sekvens ef tilstande x0,x1,...,xi udfra følgende: x0=s (initial state) x(j+1)=delta(x(j),aj)

11 FSA L={ ,aaa,aacb,ba,bcb,cbb} c

12 FSA a*b (aba)*b(ba)* a  b

13 FSA if i f [0-9]+ 0 1 2 3..93..9 0 1 2... 9 [0-9]

14 FSM -? - -?a - a a [0-9]* [0-9]

15 NFSA Lad os antage at det er tilladt at delta ikke er en funktion dvs samme tilstand og samme symbol kan resultere i to ellere flere næste tilstande, samt at vi kan skifte fra en tilstand til en anden uden at læse et symbol. Så har vi en nondeterministic finite state automata eller nfsa. 

16 NFSA

17 Transform NFSA -> FSA Det er muligt at transformere alle NFSA til FSA, således at FSA acceptere samme og kun samme sprog Antag at: nfsa: M=(K,T,Delta,s,F) og at fsa: M´=(K´,T,delta,s´,F´) Tilstandende K´ fra M´ er mængder af tilstande i K, i.e. K´ subsæt 2^(K) (powersæt, sæt of subsæts) s´ = {s} un. {k i K | der er tillade af hoppe til k fra s uden at læse nogle symboler}

18 Transform NFSA -> FSA Delta er en funktion som afbilleder K´ og symboler i T over i tilstande i K´. Delta er givet ved: delta(k´,a)= {k i K | for nogle c i k´ er det tilladt at hoppe til k givet a efterfuldt af no symbolet et antal gange}

19

20 (abab)|(abbb) s7s5s3s1 s0 s8s6s4s2 s9 s10 a a b b ab bb   s0,s 1 s2 s3,s 4 a s5,s 6 b s7 s8 a b s9 b b s10


Download ppt "Endelige Automater Simple sprog (regulære sprog) kan beskrives vha. Regulære udtryk. Regulære sprog kan altid parses vha endelige automater. Nondeterministik."

Lignende præsentationer


Annoncer fra Google