1. Trang chủ
  2. » Công Nghệ Thông Tin

Hệ thống phân tích từ vựng

51 563 0

Đ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 51
Dung lượng 1,4 MB

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

Nội dung

Tài liệu này dành cho sinh viên, giáo viên khối ngành công nghệ thông tin tham khảo và có những bài học bổ ích hơn, bổ trợ cho việc tìm kiếm tài liệu, giáo án, giáo trình, bài giảng các môn học khối ngành công nghệ thông tin

Trang 1

Nguyễn Phương Thái

Bộ môn Khoa học Máy tính

http://www.coltech.vnu.vn/~thainp/

Trang 2

Nội dung

 Phân tích từ vựng: từ tố, từ vị, mẫu

 REs, FA (DFA, NFA)

 Nâng cao: REs  NFA; NFA  DFA; DFA  state DFA

minimal- Một số bài tập

Trang 3

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

 Từ tố trong ngôn ngữ lập trình cũng giống như từ

trong ngôn ngữ tự nhiên

 Hệ phân tích từ vựng hoạt động như một thủ tục

được gọi bởi hệ phân tích cú pháp khi nó cần một từ

tố mới trong dòng vào

(từ tố)

(lỗi từ vựng) (mã nguồn)

(cây cú pháp)

Trang 4

 các hằng (nguyên, thực, logic, xâu)

 Tập từ tố phụ thuộc vào ngôn ngữ lập trình: chẳng hạn

như trong C toán tử gán là = còn trong Pascal là :=

 Tương tự, trong ngôn ngữ tự nhiên, các loại từ tố: động

Trang 5

Từ vị (lexeme)

 Từ vị của một từ tố: chuỗi ký tự tạo thành từ tố

 Ví dụ:

Trang 6

Mẫu (từ tố)

 Mẫu: luật mô tả tập các từ vị mà có thể biểu diễn một từ tố cụ thể

 Mẫu khớp với mỗi xâu ký tự trong tập đó

INTLITERAL a string of decimal digits 127, 0

FLOATLITERAL fill a verbal spec here for C! 127.1, 1, 1.1e2

ID a string of letters, digits and

underscores beginning with

a letter or underscore

sum, line num

Trang 7

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

số nguyên và số thực trong C

Trang 8

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

Trang 9

Nội dung

 Phân tích từ vựng: từ tố, từ vị, mẫu

 REs, FA (DFA, NFA)

 Nâng cao: REs  NFA; NFA  DFA; DFA  state DFA

minimal- Một số bài tập

Trang 10

REs, DFA và NFA

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

 REs NFA (⇒ Thompson’s construction, Algorithm 3.3,

Red Dragon/Algorithm 3.23, Purple Dragon)

 NFA DFA (⇒ subset construction, Algorithm 3.2, Red

Dragon/Algorithm 3.20, Purple Dragon)

 DFA minimal-state DFA (⇒ state minimisation, Algorithm 3.6, Red Dragon/Algorithm 3.39, Purple Dragon)

Trang 11

Ứ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, 1997

 Mô tả từ tố cho các chương trình sinh hệ phân tích

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

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

Trang 12

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

 Thiết kế phần cứng (tối thiểu hóa trạng thái tối ⇒

thiểu hóa giá thành)

Trang 13

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 ∑

 Độ dài |s| của xâu s: số lượng ký hiệu trong s

 ε: xâu rỗng (| ε | = 0)

 Ngôn ngữ: tập các xâu trên ∑; hai trường hợp đặc

biệt:

 ∅: tập rỗng

Trang 15

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

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 proper prefix

suffix, substring of s (tiền tố, hậu tố, xâu

Trang 16

key word keyword

java script javascript

 ε is the identity: εx = xε = x

Trang 17

Các phép toán trên ngôn ngữ

(Figure 3.8 of Text)

Trang 18

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

ngôn ngữ

Trang 19

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

ngôn ngữ

Trang 20

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} ∈

 Bước qui nạp: Giả sử r và s là các RE, các RL tương ứng là L(r) and L(s) Khi đó:

1 (r)|(s) là một RE, RL là L(r) L(s) ∪

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)

Trang 21

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

Trang 22

= {0}{ ε, 0, 1, 00, 01, 10, 11, } = {0, 00, 01, 000, 001, 010, 011, }

Trang 23

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

Trang 24

Giải thích một số ký hiệu

 Một hay nhiều instance +: r+ = rr∗

 Ngôn ngữ (L(r))+

 Có cùng thứ tự ưu tiên và tính kết hợp như ∗

 Không hay một instance ?: r? = r|ε

 Ngôn ngữ L(r) { ∪ ε}

 Viết (r)? để chỉ nhóm (vd (12)?)

 Các lớp ký tự:

[A − Za − z ][A − Za − z0 − 9 ]∗

Trang 25

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

(hay C)

 Trong đặc tả của VC, chữ cái gồm cả “_”

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

có thể là:

Trang 26

Các văn phạm chính qui cho số

nguyên và số thực trong VC

Trang 27

Ô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)trong đó

Trang 28

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

 Đồ thị chuyển:

 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ỉ nếu có đường đi nào đó trong đồ thị chuyển từ trạng thái bắt đầu đến

Trang 29

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

ngôn ngữ nào?

Trang 30

Ví dụ 1

Trang 31

Trạng thái lỗi ẩn

Trang 32

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

và ôtômát hữu hạn không đơn

Một FA là một DFA nếu

 Không trạng thái nào có một chuyển-ε, và

 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

Trang 33

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

Trang 34

Hai ví dụ

Trang 35

Nội dung

 Phân tích từ vựng: từ tố, từ vị, mẫu

 REs, FA (DFA, NFA)

 Nâng cao: REs  NFA; NFA  DFA; DFA  state DFA

minimal- Một số bài tập

Trang 36

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 tương ứng với các trường hợp trong định nghĩa RE

 Điều quan trọng: nếu một ký hiệu xuất hiện vài lần

trong một RE r, một NFA riêng biệt được tạo cho mỗi lần xuất hiện

 Thuật toán Thompson là một trong nhiều thuật toán

đã được đưa ra

Trang 37

Thuật toán Thompson

 Cơ sở qui nạp:

1 Với ε, tạo NFA

2 Với a ∑, tạo NFA∈

 Bước qui nạp: giả sử N(r) và N(s) là các NFA của các

RE r và s Khi đó

Trang 38

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

Trang 39

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

Trang 40

Ví dụ: RE NFA ⇒

Trang 41

Ví dụ: DFA (Cont’d)

 Thuật toán này được biết đến như là thuật toán xây dựng tập con bởi

vì trạng thái của DFA tương ứng với tập con các trạng thái của NFA

 Có tối đa 2 n trạng thái DFA, trong đó n là tổng số trạng thái NFA

Trang 42

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

ε-closure(s) 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) Tập các trạng thái NFA có thể đi đến từ trạng thái

NFA nào đó thuộc T theo các chuyển-ε

move(T,a) Tập các trạng thái NFA mà có chuyển nhãn a từ trạng

thái NFA nào đó thuộc T tới

Trang 43

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

Gọi s0 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

đánh dấu T

for mỗi ký hiệu vào a do begin

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;

Trang 44

Xây dựng tập con: Định nghĩa của DFA

Giả sử (∑, S, T, F, s0) là NFA ban đầu DFA sẽ là:

 Bộ chữ cái: ∑

 Các trạng thái: tất cả các trạng thái có trong

DFAstates

 Trạng thái bắt đầu: ε-closure(s0)

 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

Trang 45

Thuật toán cực tiểu hóa trạng thái DFA

Ban đầu, giả sử ∏ gồm hai nhóm

(1) Tập tất cả các trạng thái kết thúc

(2) Tập các trạng thái không kết thúc

Khởi tạo ∏new = ∏

for mỗi nhóm G trong ∏new {

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ới các trạng thái trong cùng

nhóm của ∏new

Thay G trong ∏new bằng tập các tập con được tạo ra

}

Trang 46

Ví dụ (Cont’d): Các trạng thái

được gán nhãn lại

Trang 47

Nội dung

 Phân tích từ vựng: từ tố, từ vị, mẫu

 REs, FA (DFA, NFA)

 Nâng cao: REs  NFA; NFA  DFA; DFA  state DFA

Trang 48

A 4 Phân loại Chomsky

Trang 49

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

Trang 50

(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

Ngày đăng: 22/10/2014, 19:07

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w