1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Chương 2: Phân tích từ vựng potx

15 565 1
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 15
Dung lượng 378,16 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Nhiệm vụ của bộ phân tích từ vựng 2.. Nhiệm vụ của bộ phân tích... Nhiệm vụ của bộ phân tích • Các từ tố Ident, number, plus, assign,.... Nhiệm vụ của bộ phân tích... Nhiệm vụ của bộ phâ

Trang 1

IT4073:NGÔN NGỮ và

PHƯƠNG PHÁP DỊCH

Phạm Đăng Hải haipd@soict.hut.edu.vn

2 9/18/2012

Chương 2: Phân tích từ vựng

1 Nhiệm vụ của bộ phân tích từ vựng

2 Biểu thức chính quy

3 Ô tô mát hữu hạn

3 9/18/2012

Mục đích & Nhiệm vụ

• Mục đích:

– Tìm chuỗi dài nhất các ký tự đầu vào, bắt đầu từ ký tự

hiện tại tương ứng với một từ tố và trả về từ tố này

• Nhiệm vụ

– Duyệt từng ký tự của văn bản nguồn

• Loại bỏ các ký tự không cần thiết như dấu cách, chú thích,

– Xây dựng từ vựng từ những ký tự đọc được

– Nhận dạng từ tố và gửi tới pha tiếp

Nhận biết từ tố gồm

– Nhận biết các từ khóa, tên do người dùng định nghĩa

– Nhận biết các con số, hằng chuỗi, hằng ký tự

– Nhận biết các ký tự đặc biệt (+,*, ), ký hiệu kép (:=,!=, )

1 Nhiệm vụ của bộ phân tích

4 9/18/2012

Từ vựng và Từ tố

• Từ vựng (Lexeme)

– Là đơn vị nhỏ nhất trong ngôn ngữ lập trình

• Được coi là ký hiệu của một bảng chữ của ngôn ngữ

– Được xây dựng từ các ký tự ASCII

• Từ tố (Token)

– Là thuật ngữ dùng chỉ các từ vựng có cùng ý nghĩa cú pháp

• Có thể coi từ vựng là những từ cụ thể trong từ điển:

hôm nay”, “trời”, “đẹp ”; còn từ tố là loại từ: “trạng từ”,

“danh từ”, “tính từ”,

1 Nhiệm vụ của bộ phân tích

Trang 2

5 9/18/2012

Từ tố→Ví dụ

• “pos”, “start”, “size”, “+”, “10”, “*”,”:=“, “;” là từ vựng

• “pos”, “start”, “size”, → các từ vựng thuộc lớp từ tố

tên (ident)

• ”:=“→ từ vựng của từ tố gán (assign)

• “10” → từ vựng của từ tố số nguyên (number)

• “+” → từ vựng của từ tố cộng (plus)

• “*” → từ vựng của từ tố nhân (times)

• “; → từ vựng của từ tố chấm phẩy (semicolon)

1 Nhiệm vụ của bộ phân tích

pos := start + 10 * size;

6 9/18/2012

Từ tố→Chú ý

1 Nhiệm vụ của bộ phân tích

• Các từ tố Ident, number, plus, assign, do người viết trình dịch tự định nghĩa để dễ dàng cho việc mã hóa chương trình Đây là việc số hóa ký hiệu

• Một từ tố có thể ứng với tập các từ vựng khác nhau nên cần thêm một số thông tin khác để biết được

cụ thể đó là từ vựng nào

– Các chuỗi “19”, “365” đều là chuỗi số, có từ tố “number”, nhưng khi sinh mã cần phải biết rõ giá trị là 19 hay 365

• Bộ phân tích từ vựng không chỉ nhận dạng được các từ tố mà còn phải biết thuộc tính tương ứng

– Từ tố tác động đến bộ phân tích cú pháp – Thuộc tính sử dụng trong bộ sinh mã

7 9/18/2012

Thực hiện

• Thực hiện lặp dựa vào yêu cầu từ bộ ptcp

– Bộ ptcp khi cần một từ tố sẽ gọi getToken()

– Nhận được y/cầu, bộ pttv sẽ đọc các ký tự cho tới khi xây

dựng xong từ vựng và nhận ra từ tố hoặc gặp lỗi

• Thường bộ pttv được chia thành 2 phần chính

– Đọc ký tự

– Xây dựng từ vựng và nhận dạng từ tố

1 Nhiệm vụ của bộ phân tích

Phân tích

từ vựng

Phân tích

cú pháp

Bảng ký hiệu

Chương

trình nguồn

Token getToken()

8 9/18/2012

Mẫu (Pattern)

• Là luật để mô tả một từ tố nào đó

– Cơ sở phân biệt & nhận dạng các từ tố khác nhau

• Chuỗi ký tự cùng thỏa mãn một luật⇒có cùng một từ tố

• Từ tố là tên riêng của một luật mô tả, từ vựng là một trường hợp thỏa mãn luật

• Ví dụ

– Luật mô tả của từ tố Ident

• Bắt đầu là một chữ cái

• Tiếp theo là tổ hợp chữ cái, chữ số

– Luật mô tả của từ tố assign

• Bắt đầu bởi ký tự “:”, ngay sau đó là ký tự “=

• Luật được mô tả bởi biểu thức chính quy

1 Nhiệm vụ của bộ phân tích

Trang 3

9 9/18/2012

Chương 2: Phân tích từ vựng

1 Nhiệm vụ của bộ phân tích từ vựng

2 Biểu thức chính quy

3 Ô tô mát hữu hạn

10 9/18/2012

Giới thiệu

2 Biểu thức chính quy

• Ngôn ngữ: Tập hợp của các câu/ xâu (string)

• Câu: Dãy hữu hạn của các từ/ký hiệu (symbol)

• Từ: Được tạo nên từ một bộ chữ hữu hạn

Ví dụ:

– Ngôn ngữ C là tập các câu lệnh tạo nên các chương trình C hợp lệ

– Bộ chữ cho ngôn ngữ C là tập các chữ cái ASCII

• Một ngôn ngữ có thể là vô hạn, hoặc hữu hạn

• Một ngôn ngữ (có thể vô hạn) có thể được mô tả

hữu hạn nhờ sử dụng biểu thức chính quy :

– Mỗi biểu thức đặc trưng cho một tập câu/xâu – Chỉ xét xâu có thuộc ngôn ngữ không, chưa xét ý nghĩa của xâu

11 9/18/2012

Biểu thức chính quy (regular expression)

Cho Σ là một bảng chữ của một ngôn ngữ

–∅ là biểu thức chính quy biểu diễn ngôn ngữ ∅

–ε là biểu thức chính quy biểu diễn ngôn ngữ {ε}

–∀a ∈ Σ, a là biểu thức chính quy biểu diễn tập {a}

– Nếu rs là các biểu thức chính quy biểu diễn

các tập xâu RS tương ứng thì(r + s), (r.s), (r*)

là các biểu thức chính quy biểu diễn các tập xâu

R ∪ S, RSR* tương ứng

Ngôn ngữ được xác định bởi biểu thức chính

quy e , ký hiệu là L(e)ngôn ngữ chính quy

2 Biểu thức chính quy

12 9/18/2012

Biểu thức chính quy→Ghi chú

• Biểu thức (r + s) có thể được viết (r |s) ;

• Biểu thức (r.s) thành (rs)

• Có thể bỏ qua ký hiệu ε – ( a | ) ⇔ (a | ε) // cũng có thể viết a?

• Có thể bỏ ngoặc đơn bởi định nghĩa thứ tự

ưu tiên – Phép đóng Kleene (*) ưu tiên hơn phép ghép(.) – Phép ghép(.) ưu tiên hơn phép hoặc (+)

• Quy ước – [abcd] ⇔ (a|b|c|d) – [a-f] ⇔ [abcdef]

– [a-fA-F] ⇔ [abcdefABCDEF]

2 Biểu thức chính quy

Trang 4

13 9/18/2012

Biểu thức chính quy→Ví dụ

Cho Σ ={a,b} một bảng chữ

– e1 = a*+b* ⇒ L(e1) = {ε,a,aa,aaa,…,b,bb, }

– e2 = a*b* ⇒ L(e2) = {ε,a,b,aa,ab,bb,aaa, }

– e3 = a(a+b)*

⇒L(e3)={a,aa,ab,aaa,aab,aba,abb, }

• Xâu có dạng: bắt đầu là ký hiệu a, tiếp theo là tổ

hợp bất kỳ của các ký hiệu a, b

• Nếu a là một chữ cái, b là chữ số

⇒L(e3) là ngôn ngữ chứa các tên

⇒e3 biểu thức chính quy sinh mô tả một tên

2 Biểu thức chính quy

14 9/18/2012

Tính chất đại số của btcq

• 2 biểu thức chính quy là tương đương nếu cùng xác định một ngôn ngữ

• Nếu r, s, t là các biểu thức chính quy

– ( r + s) + t = r + s + t = r + (s + t) – (r.s).t = r s t = r (s t)

– r.ε = ε.r = r – r + ∅ = ∅ + r = r

– r + r* = r* ; (r + ε)* = r* ; (r*)* = r*

– rr* = r*r = r+

– (r+s)* =(r*s*)*

2 Biểu thức chính quy

15 9/18/2012

Văn phạm chính quy và Ngôn ngữ chính quy

• Văn phạm chính quy

– Văn phạm mà mọi sản xuất có dạng

A→a|aB hoặc A→a|Ba – Dùng diễn tả từ vựng của NNLT

<Tên>→<Chữ cái>|<Tên> <Chữ cái>|<Tên><Chữ số>

<Tên>→ “a” |”b” |”c” |….|”z”|”A”|”B”|…|”Z”

<Chữ số> →”0” | ”1” | ”2” | ”3” |”4” | ”5” |”6” | ”7” |”8” |”9”

– Văn phạm chính quy sinh ra ngôn ngữ chính quy

• Ngôn ngữ chính quy

– Được biểu diễn (mô tả) bởi biểu thức chính quy

– Đoán nhận bởi các Otomat hữu hạn

2 Biểu thức chính quy

16 9/18/2012

Ngôn ngữ chính quy →Văn phạm chính quy

r là biểu thức chính qui cần chuyển

1 Thêm ký hiệu khởi đầu S và tạo san xuất S → r

2 Loại bỏ khỏi văn phạm các siêu ký hiệu của r

• ∀ SX dạng A →r 1 r 2 : Thêm ký hiệu không kết thúc B và thay thành 2 SX:

A →r 1 B & B →r 2

• ∀ SX dạng A →r 1 +r 2: Thay bởi A →r 1 |r 2

• ∀ SX dạng A →r 1 * r 2: Thêm ký hiệu không kết thúc B và thay thành 4 sản xuất

A →r 1 B& A → r 2 & B →r 1 B & B → r 2

2 Biểu thức chính quy

Trang 5

17 9/18/2012

Ví dụ

Chuyển đổi biểu thức e = a(a+b)*

1 Thêm S và sản xuất S→ a(a+b)*

2 Loại bỏ các ký hiệu không thuộc bộ chữ

– Xét r = a(a+b)* //r1 =a; r2 = (a+b)*

Thêm A và các SX S→aA & A →(a+b)*

– Xét A →(a+b)* // r1 = a+b ; r2 = ε

Thêm B và các SX A→(a+b)B & A → ε &B→(a+b) & B → ε – Áp dụng luật phân phối phải

A→aB+bB & A → ε & B→aB+bB & B → ε

A → aB|bB| ε và B → aB|bB| ε

2 Biểu thức chính quy

18 9/18/2012

Ví dụ

Chuyển đổi biểu thức e = a(a+b)* (tiếp)

– Loại bỏ ký hiệu ε bởi tạo ra xâu mới

B → aB|bB| ε thành B → aB|bB| a | b

A → aB|bB| ε thành A → aB|bB| a | b Vai trò của A và B là tương đương Thay ký hiệu B bằng A và loại bỏ B

Kết quả: Văn phạm cuối

S → a |aA

A → aA | bA | a | b

2 Biểu thức chính quy

19 9/18/2012

Chương 2: Phân tích từ vựng

1 Nhiệm vụ của bộ phân tích từ vựng

2 Biểu thức chính quy

3 Ô tô mát hữu hạn

20 9/18/2012

Mô tả

– Có một trạng thái đầu q 0 ∈ Q

– Có một tập trạng thái kết thúc F ⊆Q

• Một tập các hàm dịch chuyển δ:(Q x Σ) → Q

Hoạt động

– Ô-tô-mát xuất phát từ trạng thái đầu, đọc từng ký hiệu của xâu vào, chuyển trạng thái dựa trên trạng thái hiện thời và ký hiệu đọc được.

– Sau khi đọc hết xâu vào mà ô-tô-mát ở trạng thái kết thúc, xâu được gọi là được đoán nhận bởi ô-tô-mát

3 Ô tô mát hữu hạn

Trang 6

21 9/18/2012

Ví dụ

• Σ = {a,b,c}

• Q = {q0, q1}

• q0 = q0

• F = {q1}

3 Ô tô mát hữu hạn

q1

q1

q0

q1

q0

q0

q1

q0

c b a

δ

End c

b b a a c b a

q0

q1

Xâu abcaabbc được đoán nhận

22 9/18/2012

Biểu diễn ô tô mát hữu hạn

3 Ô tô mát hữu hạn

Trạng thái Trạng thái đầu Trạng thái kết thúc

δ(p,a) = q

q1

q0

a

a

b b

Xâu trên bộ chữ {a,b,c} có lẻ ký hiệu a

23 9/18/2012

Ô tô mát hữu hạn đơn định (OHĐ)

OHĐ(DFA: Deterministic Finite Automata) là

một hệ thống gồm

M = ( Σ , Q, δ,q0, F)

– Σ: Bộ chữ vào

– Q: Tập hữu hạn các trạng thái của bộ điều khiển

• Q ∩ Σ = ∅

– δ : Q x Σ→Q: Hàm dịch chuyển

• Hàm dich chuyển đơn định:

– q0 ∈ Q: Trạng thái ban đầu

– F ⊆ Q Tập các trạng thái cuối

3 Ô tô mát hữu hạn

24 9/18/2012

Ví dụ

M = ( Σ , Q, δ,q0, F)

Σ = {a,b}

• Q = {q0, q1, q2, q3}

• q0 = q0

• F = {q2}

3 Ô tô mát hữu hạn

q3

q3

q3

q3

q1

q2

q2

q3

q1

q3

q1

q0

b a

δ

q2

a,b

b a

q3

q1

a

L(M) = {ab}{ab}n≥0 = {ab}n(n>0)

= {ab,abab, ababab, }

Trang 7

25 9/18/2012

Hình trạng của FA

• Hình trạng của một FA là một xâu dạng qx

q ∈Q: Trạng thái hiện tại của FA

x ∈ ∑*: Phân chưa xét của xâu vào

• Ký hiệu được đọc bởi đầu đọc là ký hiệu đầu của x

• Chuyển đổi hình trạng

– Nếux = ay∃ δ(q,x) = pthì qx = qay ⇒ py

qx ⇒ py : Là một bước biến đổi hình trạng

– Ví dụ: q0abaab ⇒q1baab ⇒q2aab ⇒q1ab ⇒q3b ⇒q3

• Hình trạng đầu : q 0ω (ω: xâu cần đoán nhận)

– Nếu q 0ω ⇒* q n+1 ∈F: Xâu ω được đoán nhận

• Ngôn ngữ được đoán nhận mở DFA M là L(M)

– L(M) = {ω | ω ∈ ∑* và q 0ω⇒* p ∈F}

3 Ô tô mát hữu hạn

26 9/18/2012

Ô tô mát hữu hạn đơn định→Ví dụ

3 Ô tô mát hữu hạn

1

0 0

(0+1)*101 ⇔ Xâu nhị phân có hậu tố là 101

Đoán nhận số nguyên hoặc số thực dấu phẩy tĩnh

a b {anbm, n,m ≥0}

q0

a,b

Chữ số

Chữ số

27 9/18/2012

Ô tô mát hữu hạn không đơn định (OHK)

là một hệ thống gồm

M = ( Σ , Q, δ,q0, F)

– Σ, Q, q0, F: Định nghĩa như DFA

– δ : Q x (Σ∪ε)→2Q

• 2 Q : Tập các tập con của Q, kể cả tập rỗng

• Hàm dich chuyển không đơn định: Tại mỗi bước có

thể tồn tại nhiều lựa chọn

• Đoán nhận xâu: Quá trình chuyển đổi hình trạng

– Quá trình đoán nhận không đơn định

• Ngôn ngữ: L(M) = {ω | ω∈ ∑* và ∃ q 0ω ⇒* p ∈F}

3 Ô tô mát hữu hạn

28 9/18/2012

Ví dụ

M = ({a,b},{q0, q1, q2, q3,q4} δ,q0, {q2, q4})

3 Ô tô mát hữu hạn

{q4} {q4}

q4

∅ {q4}

q3

{q2} {q2}

q2

{q2}

q1

{q0,q1} {q0,q3}

q0

b a

δ

Đoán nhận xâu có 2 ký tự a, hoặc 2 ký tự b liên tiếp

a,b

q4

q0

a,b

b a

q3

b

a

a,b

q0abaab ⇒

q0baab ⇒

q0aab ⇒

q3ab ⇒

q4b ⇒

q4

Trang 8

29 9/18/2012

DFA và NFA

• DFA và NFA tương đương nhau

– DFA và NFA cùng đoán nhận một lớp ngôn ngữ

• Ngôn ngữ chính quy

• Với mỗi NFA, tồn tại DFA tương đương

3 Ô tô mát hữu hạn

a,b

q4

q0

a,b

b a

q3

q1 b q2

a

a,b

a,b A

b

a C

B

D b

b

a a

30 9/18/2012

Lân cận rỗng: ε-Closure

• Cho M = ( Σ , Q, δ,q0, F) là NFA

• Cho p ∈ Q ε-Closure(p) ={q ∈ Q | p ⇒* q}

– Lân cận rỗng của p là các trạng thái q có thể đi đến từ p với đường dẫn ε

3 Ô tô mát hữu hạn

q0

q3

q1

ε

q2 ε

a

ε-Closure(q0) = {q0,q1,q3}

31 9/18/2012

Thuật toán tính lân cận rỗng

• Cho M = ( Σ , Q, δ,q0, F) là NFA

• Thuật toán

1.ε-Clos0{p} = {p}

2 Repeat

ε-Closi+1{p} =

ε-Closi{p} ∪ {q∈Q |∃s∈Closi(p), δ(s, ε)=q}

3 Unil ε-Closi+1{p} = ε-Closi{p}

4.ε-Closure{p} = ε-Closi+1{p}

Nhận xét: Do ε-Closi{p} ⊆ ε-Closi+1{p} ⊆ Q

Dãy đơn điệu tăng nên dãy hội tụ

3 Ô tô mát hữu hạn

32 9/18/2012

Lân cận rỗng của tập

Nếu S ⊆ Q – ε-Closure{S} = ∪ ε-Closure{p} , ∀p ∈ S – Nếu không tồn tại bước chuyển rỗng

• ε-Closure{S} = { S } ∀ S ⊆Q

3 Ô tô mát hữu hạn

q0

q4

q1

ε

q2

ε

a

q3 b

ε-Closure{q0}={q0,q1,q3} ε-Closure{q1,q3}={q1,q3}

Trang 9

33 9/18/2012

Chuyển đổi NFA→DFA

While Stack.NotEmpty() Do

1 S = Stack.Pop()

2 For ∀ a ∈∑ do

1 T = ∪δ(q,a) ;∀ q ∈ S

2 q’ = ε-Closure(T)

3 If q’ ∉ Q’ Then 1.Q’ = Q’ ∪{ q’ } 2.Stack.Push(q’)

4.δ’(S,a) = q’

For ∀ q’ ∈ Q

1 If q’∩F≠∅ Then

1 F’ = F’ ∪ {q’}

3 Ô tô mát hữu hạn

Cho NFA

M =( Σ , Q, δ,q0,F)

Xây dựng DFA

M’=( Σ , Q’, δ’,q’0,F’)

Thuật toán

• q’0 = ε-Closure({q0})

• Q’ ={q’0}

• F’ = { }

• Stack.PUSH(q’0)

34 9/18/2012

Ví dụ - 1

3 Ô tô mát hữu hạn

∅ {q0,q1}

q1

{q1} {q0,q1}

q0

b a

δ

∅ {q1} {q1} b

D C B A

∅ {q1} {q0,q1} {q0}

Q’

{q0,q1} {q1}

{q0,q1} {q0,q1}

{q0,q1} {q0}

a

δ’

a

a

a,b a

D

b C

B

b

a

a,b

35 9/18/2012

Ví dụ - 2

3 Ô tô mát hữu hạn

a

q2

b c

b

q8

b

q0

q7

ε

ε

ε

q2 a

ε

ε ε

ε

ε

36 9/18/2012

Tối ưu hóa trạng thái OHĐ

• Nhiều DFA cùng đoán nhận một ngôn ngữ

– Cần tìm DFA có ít trạng thái nhất

• Dễ dàng biểu diễn trong máy tính

• Trạng thái phân biệt

– Hai trạng thái p và q là không phân biệt nếu

∀ xâu w∈∑*, (pw,qw)⇒*(p’,q’)∈FxF∪(Q-F)x(Q-F) pw,qw cùng dẫn tới trạng thái cuối hoặc không – Ví dụ: ε là xâu phân biệt giữa các trạng thái kết thúc và không kết thúc

• Nguyên tắc:

– Phân hoạch Q thành các nhóm t/thái không phân biệt – Thay thế nhóm bằng trạng thái duy nhất

3 Ô tô mát hữu hạn

Trang 10

37 9/18/2012

Tối ưu hóa trạng thái OHĐ

1.Chia Q thành 2 nhóm F và Q - F

2.Giả thiết đã tồn tại các nhóm A1, A2,…An

• Xét nhóm Am = {qm

1, qm

k}

• Xét a∈∑; pm

i= δ(qm

i, a) ; pm

j= δ(qm

j, a)

• Nếu ∃ a ∈∑ để pm

i và pm

j phân biệt (bởi xâu ω):

qm

i và qm

j phân biệt (bởi xâu aω)

• Nếu ∀ a ∈∑ pm

i và pm

j không phân biệt (∀ xâu ω)

qm

i và qm

j không phân biệt (∀ xâu aω)

3.Thuật toán dừng khi không tạo thêm nhóm

3 Ô tô mát hữu hạn

38 9/18/2012

Ví dụ -1

3 Ô tô mát hữu hạn

a

q0

q3

a

q2

q1 a

q5

a

q4

a

a

b

b

q2

q0

b

b a

a

a

a

39 9/18/2012

Ví dụ - 2

3 Ô tô mát hữu hạn

a,b

a,b

q2

q4

b a

a

a,b

q3

q2

b

a

a

b b

40 9/18/2012

Xây dựng OHK từ biểu thức chính quy

• Sử dụng biểu thức chính quy mô tả NNCQ

– Trong chương trình dịch, mô tả từ vựng – Ví dụ:

Tên : a(a+b)* //a chữ cái, b: chữ số

Số thực tĩnh: b+| b+ b+ //b: Chữ số

• Ngôn ngữ chính quy được đoán nhận bởi FA

– Cần xây dựng FA đoán nhận ngôn ngữ được

mô tả bởi các biểu thức chính quy

3 Ô tô mát hữu hạn

Trang 11

41 9/18/2012

Thuật toán

ε : Là btcq ứng với FA

3 Ô tô mát hữu hạn

∅ : Là btcq ứng với FA

a∈∑: Là btcq ứng với FA

q0

q0

42 9/18/2012

Thuật toán

3 Ô tô mát hữu hạn

r Là btcq ứng với FA Mr q0 Mr F

q0 Ms F

s Là btcq ứng với FA Ms

ε

0

ε ε

r + s

q0 Mr F

q0 Ms q’0 ε

ε

F F

ε ε

43 9/18/2012

Ví dụ -1

Xây dựng DFA đoán nhận NNCQ được biểu

diễn bởi btcq (0+1)*011

3 Ô tô mát hữu hạn

0

1

1

q3 1

0 1

44 9/18/2012

Ví dụ - 2

Xây dựng DFA đoán nhận NNCQ được biểu diễn bởi btcq (01+010)*

3 Ô tô mát hữu hạn

q3

q1

0

0

1

q2

q0

Trang 12

45 9/18/2012

Thuật toán đoán nhận xâu của OHĐ

• Phương pháp phân tích bảng

– Dựa trên giải thuật tổng quát để đoán nhận DFA

– Ưu điểm:

• Chương trình độc lập với DFA

• Dễ biến đổi, không cần sửa lại chương trình

– Nhược điểm:

• Khó khăn trong lập bảng

• Kích thước bảng lớn

• Phương pháp diễn giải

– Thực hiện như diễn giải sơ đồ

– Dễ viết, nhưng c\trình gắn với đồ thị dich chuyển

– Được sử dụng để xây dựng bộ phân tích từ vựng

3 Ô tô mát hữu hạn

46 9/18/2012

Phương pháp phân tích bảng

#include <stdio.h>

#include <string.h>

enum state {A,B,C,D};

int Delta[4][2]={A,B,C,B,A,D,C,B}; // Hàm dịch chuyển dạng bảng

char c, str[100];

int i, L;

enum state q = A; // Automat ở trạng thái đầu

3 Ô tô mát hữu hạn

1

0 0

47 9/18/2012

Phương pháp phân tích bảng

void main(){

printf("Nhap xau :"); fflush(stdin); gets(str);

i = 0; L = strlen(str); c = str[i]-48;

while (i < L){

if(c == 0 || c == 1){ // Xâu vào chỉ gồm các ký hiệu 0,1

q = Delta[q][c]; // Chuyển trạng thái mới

i++; // Dịch chuyển đầu đọc

c = str[i]-48; // Ký hiệu đọc được

} else { printf("Loi xau vao \n"); break; }

}

if(i==L) //Nếu đọc hết toàn bộ xâu vào

if (q == D) printf("\n Xau %s duoc doan nhan !\n\n",str);

else printf("\n Xau %s khong duoc doan nhan !\n\n",str);

}

3 Ô tô mát hữu hạn

48 9/18/2012

Phương pháp diễn giải

#include <stdio.h>

#include <string.h>

#include <ctype.h>

void main(){

char c, str[100];

int i, L;

printf("Nhap xau :"); fflush(stdin); gets(str);

i= 0; L = strlen(str);

3 Ô tô mát hữu hạn

Chữ số

Chữ số

Ngày đăng: 01/04/2014, 23:20

HÌNH ẢNH LIÊN QUAN

Bảng ký hiệu - Chương 2: Phân tích từ vựng potx
Bảng k ý hiệu (Trang 2)
Hình trạng của FA - Chương 2: Phân tích từ vựng potx
Hình tr ạng của FA (Trang 7)

TỪ KHÓA LIÊN QUAN

w