ươ

ễ Nguy n Ph ọ

ng Thái ộ B  môn Khoa h c Máy tính http://www.coltech.vnu.vn/~thainp/

ừ ố ừ ị , t

ẫ  v , m u

v ng: t

Nội dung Phân tích t ừ ự  t REs, FA (DFA, NFA) Nâng cao: REs  NFA; NFA  DFA; DFA  minimal­

state DFA M t s  bài t p  ộ ố

ươ 15/11/15 2 ễ Nguy n Ph ng Thái ­ Coltech ­ Compiler 2009

Vai trò của hệ phân tích từ vựng (scanner)

(t

t )ừ ố

(cây cú pháp)

(mã ngu n)ồ

ỗ ừ ự

(l

v ng)

i t

ừ ố

ữ ậ

ư ừ

T  t

trong ngôn ng  l p trình cũng gi ng nh  t

trong

ữ ự

nhiên ừ ự

ạ ộ

v ng ho t đ ng nh  m t th  t c đ

c

ngôn ng  t H  phân tích t ệ ọ ở ệ

ư ộ ầ

ủ ụ ượ ộ ừ ố ớ  m i   t

g i b i h  phân tích cú pháp khi nó c n m t t trong dòng vào

ươ 15/11/15 3 ễ Nguy n Ph ng Thái ­ Coltech ­ Compiler 2009

ư

ượ

Từ tố (token) T  t

trong VC đ

ạ c phân lo i nh  sau:

ị ừ

khóa (vd int, if hay while)

(vd “+” hay “ ”, “<=”)

T p t

ư ữ ậ  ph  thu c vào ngôn ng  l p trình: ch ng h n nh

, trong ngôn ng  t

T

ạ ừ ố ộ  t

: đ ng t

ừ ố các đ nh danh (vd sum, i, j) các t các toán t ử các ký hi u phân tách (vd “{”, ‘}”, “;”) ệ các h ng (nguyên, th c, logic, xâu) ằ ậ ừ ố ụ ộ  t ử trong C toán t ng t ừ

gán là = còn trong Pascal là :=  nhiên, các lo i t ừ ụ

ữ ự ậ , v.v. T p các t

ự , tính t

ừ ,  ữ ụ  ph  thu c vào ngôn ng  c

ươ danh t thể

ươ 15/11/15 4 ễ Nguy n Ph ng Thái ­ Coltech ­ Compiler 2009

ộ ừ ố

ừ ị ủ

ự ạ

t

t o thành t

ừ ố  t

Từ vị (lexeme) T  v  c a m t t ỗ : chu i ký t Ví d :ụ

ươ 15/11/15 5 ễ Nguy n Ph ng Thái ­ Coltech ­ Compiler 2009

Mẫu (từ tố)

ộ ừ ố ụ ể

c  th

t

ả ậ  t p các t ỗ

ậ ớ

ẫ ẫ

ể ể ừ ị  v  mà có th  bi u di n m t t ự

 M u: lu t mô t  M u kh p v i m i xâu ký t ớ

trong t p đó

ạ ừ ố

Lo i t

t

INTLITERAL

M uẫ a string of decimal digits

T  vừ ị 127, 0

FLOATLITERAL

fill a verbal spec here for C!

127.1, .1, 1.1e2

ID

sum, line num

a string of letters, digits and underscores beginning with a letter or underscore

+

the character ‘+’

+

while

the letters ‘w’, ‘h’, ‘i’, ’l’, ’e’

while

ế

 Bi u di n hình th c cho t

ừ ố  t

ầ  là c n thi

t

REs, NFA, DFA

ươ 15/11/15 6 ễ Nguy n Ph ng Thái ­ Coltech ­ Compiler 2009

Các biểu thức chính qui (REs) cho số nguyên và số thực trong C

ươ 15/11/15 7 ễ Nguy n Ph ng Thái ­ Coltech ­ Compiler 2009

Các máy hữu hạn trạng thái (FSMs) cho số nguyên và số thực

ươ 15/11/15 8 ễ Nguy n Ph ng Thái ­ Coltech ­ Compiler 2009

ừ ố ừ ị , t

ẫ  v , m u

v ng: t

Nội dung Phân tích t ừ ự  t REs, FA (DFA, NFA) Nâng cao: REs  NFA; NFA  DFA; DFA  minimal­

state DFA M t s  bài t p  ộ ố

ươ 15/11/15 9 ễ Nguy n Ph ng Thái ­ Coltech ­ Compiler 2009

Thompson’s construction, Algorithm 3.3,

REs, DFA và NFA Đ nh nghĩa REs, DFA và NFA REs  NFA ( ⇒

Red Dragon/Algorithm 3.23, Purple Dragon)

subset construction, Algorithm 3.2, Red

NFA  DFA ( ⇒

Dragon/Algorithm 3.20, Purple Dragon)

state minimisation, Algorithm

DFA  minimal­state DFA (

3.6, Red Dragon/Algorithm 3.39, Purple Dragon)

ươ 15/11/15 10 ễ Nguy n Ph ng Thái ­ Coltech ­ Compiler 2009

ả ầ ượ ả

ấ ứ ơ ệ ố

Ứng dụng của biểu thức chính qui B t c  n i nào mà m u văn b n c n đ ả ẫ c mô t H  th ng, c  s  d  li u và qu n tr  m ng Unix:  ị ạ ơ ở ữ ệ

grep,

fgrep, egrep, sed, awk ả

Các văn b n HTML: Javascript và VBScript Perl: J. Friedl, Mastering Regular Expressions, O’reilly,

ả ừ ố

ươ

t

cho các ch

ng trình sinh h  phân tích t

1997 Mô t ự

t v ng (lex, JLex, v.v.)

http://www.robotwisdom.com/net/regexres.html

ươ 15/11/15 11 ễ Nguy n Ph ng Thái ­ Coltech ­ Compiler 2009

ầ ứ

Ứng dụng của ôtômát hữu hạn Thi

i thi u hóa tr ng thái

t k  ph n c ng (t

t

ể i thi u

ươ

ng trình sinh h  phân tích t

ừ ự (lex and

v ng

ế ế hóa giá thành)  Lý thuy t ngôn ng ế Đ  ph c t p tính toán ộ ứ ạ Các ch JLex)

JCT: //humboldt.sunyit.edu/JCT

ươ 15/11/15 12 ễ Nguy n Ph ng Thái ­ Coltech ­ Compiler 2009

Bộ chữ cái, xâu ký tự và ngôn ngữ B  ch  cái ∑: t p h u h n ký hi u ệ ậ ữ ạ ị

ộ ữ B  ch  cái nh  phân {0,1} (cho ngôn ng  máy) B  ch  cái ASCII (cho các ngôn ng  b c cao)

ữ ữ ậ ộ

ộ ữ ộ ữ Xâu ký t ự

: chu i h u h n ký hi u thu c ∑

ố ượ

ệ ng ký hi u trong s

ườ

ε | = 0) Ngôn ng : t p các xâu trên ∑; hai tr

ng h p đ c bi

t:

ậ ỗ

ỗ ữ ạ Đ  dài |s| c a xâu s: s  l ủ ε: xâu r ng (| ỗ ữ ậ ∅: t p r ng {ε}

ươ 15/11/15 13 ễ Nguy n Ph ng Thái ­ Coltech ­ Compiler 2009

ỉ ỉ ỉ

ươ

ộ  là m t ch

ng trình

Ví dụ về ngôn ngữ ∑= {0, 1} – m i xâu là m t ch  th ị ỗ T p ch  th  c a M68K ị ủ T p ch  th  c a Pentium ị ủ T p ch  th  c a MIPS ị ủ ∑ = t p ASCII – m i xâu ký t ươ ng trình Haskell ươ ng trình C ươ ng trình VC

ậ ậ ậ ậ T p các ch ậ T p các ch ậ T p các ch ậ

ươ 15/11/15 14 ễ Nguy n Ph ng Thái ­ Coltech ­ Compiler 2009

Các thuật ngữ về xâu ký tự (Figure 3.7 of Text)

Đ nh nghĩa

ề ố ủ

Thu t ngậ Prefix of s (ti n t

c a s)

a string obtained by removing 0 or more trailing symbols of s

ậ ố ủ

Suffix of s (h u t

c a s)

a string obtained by removing 0 or more leading symbols of s

Substring of s (xâu con c a s)ủ

a string obtained by deleting a prefix and a suffix from s

ề ố ậ ố

, h u t

, xâu

proper prefix suffix, substring of s (ti n t ợ con phù h p (?) c a s)

Any nonempty string x that is,  respectively, a prefix, suffix or substring of s such that s ≠ x

ươ 15/11/15 15 ễ Nguy n Ph ng Thái ­ Coltech ­ Compiler 2009

Ghép xâu N u x và y là các xâu, xy là xâu t o b i phép b  xung y

ế vào x Ví d :ụ

x         y           xy key   word   keyword java   script   javascript ε is the identity: εx = xε = x

ươ 15/11/15 16 ễ Nguy n Ph ng Thái ­ Coltech ­ Compiler 2009

Các phép toán trên ngôn ngữ (Figure 3.8 of Text)

ươ 15/11/15 17 ễ Nguy n Ph ng Thái ­ Coltech ­ Compiler 2009

Ví dụ về các phép toán trên ngôn ngữ

ươ 15/11/15 18 ễ Nguy n Ph ng Thái ­ Coltech ­ Compiler 2009

Ví dụ về các phép toán trên ngôn ngữ

ươ 15/11/15 19 ễ Nguy n Ph ng Thái ­ Coltech ­ Compiler 2009

ơ ở

Các biểu thức chính qui – Regular Expressions (REs) – trên bộ chữ cái ∑ C  s  qui n p:

1. ε là m t RE, khi đó ngôn ng  chính qui – regular language (RL) –  ộ RL  là {ε} ∈ 2. a  ướ

∑ là m t RE, khi đó RL là {a} ả ử

ươ ứ

s  r và s là các RE, các RL t

ng  ng là L(r)

L(s)∪

B c qui n p: Gi and L(s). Khi đó: ộ 1. (r)|(s) là m t RE, RL là L(r)  ộ 2. (r)(s) là m t RE, RL là L(r)L(s) ộ 3. (r)  là m t RE, RL là L(r) 4. (r) là m t RE, RL là L(r)

ể ượ ọ

Chú ý: ngôn ng  chính qui cũng có th  đ

ậ c g i là t p chính qui

ươ 15/11/15 20 ễ Nguy n Ph ng Thái ­ Coltech ­ Compiler 2009

ứ ự ư

Thứ tự ưu tiên và tính kết hợp của các toán tử “chính qui” Th  t

u tiên: ộ ư

ử ề

ế ợ

“ ” ∗ có đ   u tiên cao nh t ấ “ghép” có đ   u tiên th  nhì ộ ư “|” có đ   u tiên th p nh t ấ ấ ấ ả t c  các toán t

ộ ư Tính k t h p: — t ế ợ

đ u có tính k t h p

trái Ví d :ụ

≡ ∗  a|b c ừ ặ

∗ (c))  ấ

ầ ử ụ

(a)|((b) Không c n s  d ng các d u ngo c th a!

ươ 15/11/15 21 ễ Nguy n Ph ng Thái ­ Coltech ­ Compiler 2009

Một ví dụ về RE và RL B  ch  cái: ∑ = {0, 1} ộ ữ RE: 0(0|1)∗ Câu h i: RE trên đ nh nghĩa ngôn ng  nào? Tr  l

ỏ ả ờ i: L(0(0|1)

∗ )

) = L(0)L((0|1)         = {0}L(0|1)∗ ∪  L(1))         = {0}(L(0)  ∗ ∪         = {0}({0}   {1})         = {0}{0, 1}∗         = {0}{ε, 0, 1, 00, 01, 10, 11, . . . }         = {0, 00, 01, 000, 001, 010, 011, . . . } ả ậ

ự ị

ắ ầ

t p các xâu ký t

ộ ố  nh  phân b t đ u v i m t s

RE trên mô t 0

ươ 15/11/15 22 ễ Nguy n Ph ng Thái ­ Coltech ­ Compiler 2009

Các ví dụ khác: ∑ = {0, 1}

ươ 15/11/15 23 ễ Nguy n Ph ng Thái ­ Coltech ­ Compiler 2009

Giải thích một số ký hiệu M t hay nhi u instance +: r+ = rr∗

ư

u tiên và tính k t h p nh  ∗

ế ợ ε

Ngôn ng  (L(r))+ Có cùng th  t ứ ự ư Không hay m t instance ?: r? = r| ộ

ε}

{∪ ế t (r)? đ  ch  nhóm (vd (12)?) Các l p ký t ớ

Ngôn ng  L(r)  Vi ể ỉ ự : [A − Za − z ][A − Za − z0 − 9 ]∗

ươ 15/11/15 24 ễ Nguy n Ph ng Thái ­ Coltech ­ Compiler 2009

Các biểu thức chính qui cho VC (hay C)

ữ  c a VC, ch  cái g m c  “_” ữ ố

ặ ả ủ ữ

 Trong đ c t ả  Trong Java, ch  cái và ch  s  thu c t p Unicode. Do đó các đ nh danh có  ộ ậ

th  là:ể

ươ 15/11/15 25 ễ Nguy n Ph ng Thái ­ Coltech ­ Compiler 2009

Các văn phạm chính qui cho số nguyên và số thực trong VC

ươ 15/11/15 26 ễ Nguy n Ph ng Thái ­ Coltech ­ Compiler 2009

Ôtômát hữu hạn (hay máy hữu hạn trạng thái)

ộ ộ ữ ạ M t ôtômát h u h n là m t b  5: (∑, S, T, F, I)

ạ ạ

S→

ế

trong đó ∑ là b  ch  cái ộ ữ S là t p h u h n tr ng thái ậ ữ ạ T là hàm chuy n tr ng thái: T : S × ∑  ể F là t p h u h n các tr ng thái k t thúc hay còn g i là  ậ ữ ạ ậ tr ng thái nh n

ắ ầ

I là tr ng thái b t đ u: I

S.∈

ươ 15/11/15 27 ễ Nguy n Ph ng Thái ­ Coltech ­ Compiler 2009

Biểu diễn và chấp nhận

ồ ị

 Đ  th  chuy n:

ậ ườ

ậ ể ừ ạ

ế ắ ầ

ữ ạ ng đi nào đó trong đ  th  chuy n t ấ

ế ạ

ườ

 Ch p nh n: M t Ôtômát h u h n ch p nh n m t xâu vào x n u và ch   ỉ ộ ế ồ ị  tr ng thái b t đ u đ n  ạ ồ ng đi đó t o

ấ n u có đ tr ng thái ch p nh n nào đó, đ ng th i các nhãn trên đ thành x

ươ 15/11/15 28 ễ Nguy n Ph ng Thái ­ Coltech ­ Compiler 2009

Ôtômát hữu hạn này đoán nhận ngôn ngữ nào?

ươ 15/11/15 29 ễ Nguy n Ph ng Thái ­ Coltech ­ Compiler 2009

Ví dụ 1

ươ 15/11/15 30 ễ Nguy n Ph ng Thái ­ Coltech ­ Compiler 2009

Trạng thái lỗi ẩn

ươ 15/11/15 31 ễ Nguy n Ph ng Thái ­ Coltech ­ Compiler 2009

ế

ể ε, và

Ôtômát hữu hạn đơn định (DFA) và ôtômát hữu hạn không đơn định (NFA) ộ M t FA là m t DFA n u Không tr ng thái nào có m t chuy n­ ộ ạ V i m i tr ng thái s và ký hi u vào a, có không quá m t  ộ ỗ ạ cung nhãn a ra kh i sỏ ế ộ ộ

ả ệ

ơ

M t FA là m t NFA n u nó không ph i m t DFA: Không đ n đ nh:  ng v i m t ký hi u vào có th  có vài  ể ớ

chuy nể

ươ 15/11/15 32 ễ Nguy n Ph ng Thái ­ Coltech ­ Compiler 2009

DFA hay NFA? Các ngôn ngữ được đoán nhận là gì?

ươ 15/11/15 33 ễ Nguy n Ph ng Thái ­ Coltech ­ Compiler 2009

Hai ví dụ

ự ủ

c a a mà chi u dài c a chúng là

Cùng ngôn ng : t p các xâu ký t ữ ậ ộ ố ủ b i s  c a 2 hay 3 (g m c

ả ε)

ươ 15/11/15 34 ễ Nguy n Ph ng Thái ­ Coltech ­ Compiler 2009

ừ ố ừ ị , t

ẫ  v , m u

v ng: t

Nội dung Phân tích t ừ ự  t REs, FA (DFA, NFA) Nâng cao: REs  NFA; NFA  DFA; DFA  minimal­

state DFA M t s  bài t p  ộ ố

ươ 15/11/15 35 ễ Nguy n Ph ng Thái ­ Coltech ­ Compiler 2009

ườ

ườ

Thuật toán Thompson để xây dựng NFA từ các RE Đi u khi n b i cú pháp ở ể Quy n p: Các tr ợ ạ ng h p (case) trong xây d ng NFA  ị ớ ươ ứ ng h p trong đ nh nghĩa RE ng  ng v i các tr t Đi u quan tr ng: n u m t ký hi u xu t hi n vài l n  ầ ệ ấ ộ ế ọ ề ỗ ệ ượ ạ

c t o cho m i

t đ

ệ ộ trong m t RE r, m t NFA riêng bi ấ ầ l n xu t hi n

Thu t toán Thompson là m t trong nhi u thu t toán đã  ộ

ậ ượ ư c đ a ra

đ

ươ 15/11/15 36 ễ Nguy n Ph ng Thái ­ Coltech ­ Compiler 2009

ơ ở

Thuật toán Thompson C  s  qui n p:

1. V i ớ ε, t o NFA

∈ớ

2. V i a

∑, t o NFA

ướ

ả ử

s  N(r) và N(s) là các NFA c a các

B c qui n p: gi RE r và s. Khi đó

ươ 15/11/15 37 ễ Nguy n Ph ng Thái ­ Coltech ­ Compiler 2009

Thuật toán Thompson (Cont’d)

ươ 15/11/15 38 ễ Nguy n Ph ng Thái ­ Coltech ­ Compiler 2009

Ví d : RE  NFA⇒ ụ ∗ ∗ ∗ Chuy n đ i (0|10 1) 10  thành m t NFA

ươ 15/11/15 39 ễ Nguy n Ph ng Thái ­ Coltech ­ Compiler 2009

Ví dụ: RE

NFA

ươ 15/11/15 40 ễ Nguy n Ph ng Thái ­ Coltech ­ Compiler 2009

Ví dụ: DFA (Cont’d)

 Thu t toán này đ

ư ớ ậ

ậ ủ

ượ tr ng thái c a DFA t

ế ế c bi ươ ứ ng  ng v i t p con các tr ng thái c a NFA

t đ n nh  là thu t toán xây d ng t p con b i vì  ạ ố ạ

ủ n tr ng thái DFA, trong đó n là t ng s  tr ng thái NFA

ạ  Có t

i đa 2

ươ 15/11/15 41 ễ Nguy n Ph ng Thái ­ Coltech ­ Compiler 2009

Xây dựng tập con: các toán tử được sử dụng

Phép toán ε­closure(s)

Mô tả ậ T p các tr ng thái NFA có th  đi đ n (reachable) t ạ tr ng thái NFA s theo các chuy n­

ế ể ε.

ế ừ ạ

ε­closure(T)

tr ng thái NFA

ạ ộ

T p các tr ng thái NFA có th  đi đ n t nào đó thu c T theo các chuy n­

ể ể ε.

ừ ạ

move(T,a)

tr ng

T p các tr ng thái NFA mà có chuy n nhãn a t thái NFA nào đó thu c T t

i.

ươ 15/11/15 42 ễ Nguy n Ph ng Thái ­ Coltech ­ Compiler 2009

Thuật toán xây dựng tập con

ắ ầ ủ

ấ ạ

ư ượ

G i sọ 0 là tr ng thái b t đ u c a NFA; DFAstates ch a duy nh t tr ng thái ch a đ

c đánh d u

ấ ε­closure(s0)

ộ ạ

ượ

while có m t tr ng thái không đ

c đánh d u T trong DFAstates

do begin

do begin

đánh d u Tấ ỗ for m i ký hi u vào a U := ε­closure(move(T, a)); if U không có trong DFAstates then

ư ộ ạ

ư ượ

Thêm U vào DFAstates nh  m t tr ng thái ch a đ

c

đánh d u;ấ

DFATrans[T, a] := U;

end;

end;

ươ 15/11/15 43 ễ Nguy n Ph ng Thái ­ Coltech ­ Compiler 2009

ả ử

s  (∑, S, T, F, s

ầ 0) là NFA ban đ u. DFA s  là:

t c  các tr ng thái có trong DFAstates

ắ ầ ε­closure(s0) ấ ả ậ

Xây dựng tập con: Định nghĩa của DFA Gi B  ch  cái: ∑  ộ ữ Các tr ng thái: t ấ ả ạ Tr ng thái b t đ u:  Các tr ng thái ch p nh n: t

ấ ứ

t c  các tr ng thái trong  ộ ạ DFAstates mà ch a ít nh t m t tr ng thái ch p nh n  ủ trong F c a NFA Các chuy n: DFATrans ể

ươ 15/11/15 44 ễ Nguy n Ph ng Thái ­ Coltech ­ Compiler 2009

g m hai nhóm

ồ ạ

ế ế

Thuật toán cực tiểu hóa trạng thái DFA ∏ ả ử ầ  s   Ban đ u, gi ậ ấ ả t c  các tr ng thái k t thúc (1) T p t ạ ậ (2) T p các tr ng thái không k t thúc new = ∏ Kh i t o ∏ ở ạ for m i nhóm G trong ∏ ỗ

new {

ọ ạ

i các tr ng thái trong cùng nhóm c a ∏

new

ượ ạ

c t o ra

Chia G thành các nhóm con sao cho hai tr ng thái s và t thu c cùng  ế ỉ ế nhóm n u và ch  n u v i m i ký hi u vào a các tr ng thái s và t  ớ ể có chuy n nhãn a t Thay G trong ∏new b ng t p các t p con đ ằ

}

ươ 15/11/15 45 ễ Nguy n Ph ng Thái ­ Coltech ­ Compiler 2009

Ví dụ (Cont’d): Các trạng thái được gán nhãn lại

ế ấ ả

ế

ể ượ

K t qu  lý thuy t: t

c nh n d ng

ữ t c  các ngôn ng  chính qui có th  đ b i ở

ộ m t DFA tr ng thái c c ti u mà là duy nh t (theo tên tr ng thái) 15/11/15

ự ể ễ Nguy n Ph

ươ 46 ng Thái ­ Coltech ­ Compiler 2009

ừ ố ừ ị , t

ẫ  v , m u

v ng: t

Nội dung Phân tích t ừ ự  t REs, FA (DFA, NFA) Nâng cao: REs  NFA; NFA  DFA; DFA  minimal­

state DFA M t s  bài t p  ộ ố

ươ 15/11/15 47 ễ Nguy n Ph ng Thái ­ Coltech ­ Compiler 2009

A. 4 Phân loại Chomsky

ươ 15/11/15 48 ễ Nguy n Ph ng Thái ­ Coltech ­ Compiler 2009

Phân loại văn phạm của Chomsky

3

1 2

0

ệ ớ ớ

Chúng ta đang làm vi c v i l p 3: ngôn ng  chính qui

ươ 15/11/15 49 ễ Nguy n Ph ng Thái ­ Coltech ­ Compiler 2009

Bài tập

ả ư

nh  sau (∑ = {0,1}):

t bi u th c chính qui cho các ngôn ng  có mô t

ộ ộ

ớ ớ

ế

ấ ả ấ ả ấ ả ấ ả

ướ

ế Bài 1. Vi ấ ả (a) T t c  các xâu có th (b) Không có xâu nào (c) Xâu r ngỗ (d) Xâu 011 (e) Các xâu 0 và 011 ắ ầ (f) T t c  các xâu b t đ u v i m t 1 ắ ầ ệ (g) T t c  các xâu b t đ u v i m t ký hi u 1 và k t thúc v i m t ký hi u 0 ệ ứ (h) T t c  các xâu ch a đúng ba ký hi u 1 ề (i) T t c  các xâu mà m i ký hi u 0 đ u có ký hi u 1 đi tr

c và đi sau

ươ 15/11/15 50 ễ Nguy n Ph ng Thái ­ Coltech ­ Compiler 2009

Bài tập

ữ ạ

ơ

t k  các ôtômát h u h n đ n đ nh (DFA) đ  đoán nh n các ngôn ng  sau

Bài 2. Thi

ế ế (∑ = {0,1}):

ượ

ở c theo sau b i ký hi u 0.

ế

ố ượ

ể ả

ả ng ký hi u 0 ph i là ch n và s  l

ng ký hi u 1 cũng ch n (k  c  xâu

ệ ủ (a) M i xu t hi n c a xâu con 11 đ ệ ứ (b) Ký hi u th  ba (n u có) là 1. ố ượ (c) S  l ỗ r ng).

ế ế

ữ ạ

ơ

t k  các ôtômát h u h n không đ n đ nh (NFA) t

các bi u th c chính

Bài 3. Thi qui sau:

(a) (a|b)* (b) a*|b* (c) a|(b|c)* (d) a(a|b)*b

ươ 15/11/15 51 ễ Nguy n Ph ng Thái ­ Coltech ­ Compiler 2009