Tài liệu NGÔN NGỮ và PHƯƠNG PHÁP DỊCH - Chương 3: Phân tích cú pháp docx

137 2K 18
Tài liệu NGÔN NGỮ và PHƯƠNG PHÁP DỊCH - Chương 3: Phân tích cú pháp docx

Đ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

IT4073:NGÔN NGỮ PHƯƠNG PHÁP DỊCH Phạm Đăng Hải haipd@soict.hut.edu.vn Chương 3: Phân tích cú pháp Bài tốn phân tích cú pháp Phương pháp phân tích cú pháp quay lui Phương pháp phân tích bảng Phương pháp phân tích cú pháp tất định Phân tích cú pháp cho PL/0 02/24/14 Bài toán phân tích cú pháp Bài tốn đặt Cho – Văn phạm phi ngữ cảnh G Trong chương trình dịch, xâu ω chuỗi token thu từ giai đoạn Program Vidu; trước – phân tích từ vựng G = (VT, VN, P, S) – Xâu ω V*T Hỏi – ω∈ L(G)? Begin X := 10 Nếu ω ∈ L(G) End PROGRAM IDENT SEMICOLON BEGIN IDENT ASSIGN NUMBER END PERIOD – Chỉ sản xuất sử dụng để sinh ω – Cấu trúc nên suy dẫn 02/24/14 Bài tốn phân tích cú pháp Phương pháp phân tích • Kiểm tra xâu phân tích từ trái qua phải – Kiểm tra ký hiệu trái xâu cần phân tích – Tới ký hiệu tiếp, Cho tới ký hiệu cuối • Phương pháp xây dựng phân tích – Trên xuống (Top-down): S ⇒ * ω? – Dưới lên (Bottom-up): ω *⇐ S? • Phương pháp lựa chọn sản xuất (A→α1|…|αn) – Quay lui (backtracking) • Thử sản xuất – Tất định (deterministic) 02/24/14 • Xác định sản xuất thích hợp Bài tốn phân tích cú pháp Phân tích trái • Phân tích trái xâu α dãy sản xuất sử dụng suy dẫn trái từ S α • Các sản xuất đánh số thứ tự 1, p – Phân tích danh sách số từ đến p • Ví dụ cho văn phạm E → T+E E → T T → F* T T → F F → (E) F → a 02/24/14 Xét xâu a*(a+a) E ⇒2 T ⇒3 F*T ⇒6 a*T ⇒4 a*F ⇒5a*(E) ⇒1 a*(T+E) ⇒4 a*(F+E) ⇒6 a*(a+E) ⇒2 a*(a+T) ⇒4 a*(a+F) ⇒6 a*(a+a) Phân tích trái xâu a*(a+a) 23645146246 Chương 3: Phân tích cú pháp Bài tốn phân tích cú pháp Phương pháp phân tích cú pháp quay lui Phương pháp phân tích bảng Phương pháp phân tích cú pháp tất định Phân tích cú pháp cho PL/0 02/24/14 Phương pháp phân tích quay lui Giới thiệu • Tư tưởng chủ yếu giải thuật – Xây dựng phân tích cú pháp (cây suy dẫn) cho xâu ω • Thuật tốn Top-down – Đi từ nút gốc tới nút • Thuật tốn Bottom –up – Q trình phân tích gạt thu gọn 02/24/14 Phương pháp phân tích quay lui Phân tích Top-down Cho VPPNC G = (VT, VN, P, S) ∀ sản xuất A→α1|…|αn đánh số 1, 2, Xây dựng phân tích cho xâu ω: Khởi tạo - Xây dựng có nút gốc S - S (Start symbol): Ký hiệu khởi đầu - Gọi ký hiệu cần phân tích ký hiệu xâu ω - Gọi S nút hoạt động, 02/24/14 Phương pháp phân tích quay lui Phân tích Top-down Tạo nút (một cách đệ quy)  Nút hoạt động ký hiệu không kết thúc A – Chọn sản xuất A chưa áp dụng: A →X1X2 .Xk (k ≥0) – Tạo k trực tiếp A với nhãn X1, X2, Xk – Nếu k > 0, Lấy X1 làm nút hoạt động – Nếu k = 0, (sản xuất A → ε), lấy nút bên phải (ngay sau) A nút hoạt động Tiếp tục thực bước 02/24/14 Phương pháp phân tích quay lui Phân tích Top-down Tạo nút (một cách đệ quy)  Nút hoạt động ký hiệu kết thúc a - So sánh a với ký hiệu cần phân tích – Nếu trùng • Nút hoạt động nút bên phải a • Ký hiệu cần phân tích ký hiệu xâu vào – Nếu không trùng • Quay lại bước sử dụng sản xuất thử sản xuất tiếp – Nếu hết khả năng, quay lại bước trước 02/24/14 10 Phương pháp phân tích tất định Phân tích Bottom-Up • Văn phạm LL(k) • Văn phạm LL(1) • Phân tích xem trước • Phân tích đệ quy xuống 02/24/14 123 Chương 3: Phân tích cú pháp Giới thiệu Phương pháp phân tích cú pháp quay lui Phương pháp phân tích bảng Phương pháp phân tích cú pháp tất định Xây dựng phân tích cú pháp cho PL/0 02/24/14 124 Phương pháp phân tích tất định Nguyên tắc • Văn phạm PL/0 LL(1) – Sử dụng phương pháp phân tích xem trước • Bảng phân tích lớn – Dùng phương pháp đệ quy xuống • Bộ phân tích cú pháp – Gồm tập thủ tục, thủ tục ứng với sơ đồ – Luôn đọc trước ký hiệu/từ tố • Xem trước từ tố cho phép chọn đường gặp điểm rẽ nhánh sơ đồ cú pháp – Khi thoát khỏi thủ tục triển khai đích, ln có từ tố đọc dơi 02/24/14 125 Phương pháp phân tích tất định Các thủ tục • Token * getToken() //phân tích từ vựng • void error (const char msg[]);//Báo lỗi • void factor(void);//phân tích nhân tử • void term(void);//phân tích số hạng • void expression(void); // phân tích biểu thức • void condition(void); // phân tích điều kiện • void statement(void); // phân tích câu lệnh • void block(void); // phân tích khối câu lệnh • void basictype(void); // kiểu biến • void program(); 02/24/14 //Phân tích chương trình 126 Phương pháp phân tích tất định Term void term() { factor(); while(Token == times || Token == slash) { getToken(); factor(); } } 02/24/14 127 Phương pháp phân tích tất định Term (Thực hành KPL) ::= := Times := Slash void Term(){ Factor(); Term2(); } 02/24/14 FOLLOW( := ε void Term2(){ switch(Token){ case Times: Eat(Times); Factor(); Term2(); break; case Slash:… case KW_TO : case KW_DO : …………… case KW_END : break; Default: Error(Invalid Term) } 128 Phương pháp phân tích tất định Expression void expression() { if(Token== plus || Token == minus) getToken(); term(); while(Token == plus || Token == minus){ getToken(); term(); } } 02/24/14 129 Phương pháp phân tích tất định Expression (Thực hành KPL) ::= Plus ::= Minus ::= ::= ::=Plus ::=Minus ::= ε void compileExpression2() { compileTerm(); compileExpression3(); } 02/24/14 void compileExpression() { switch (Token) { case SB_PLUS: eat(SB_PLUS); Expression2(); break; case SB_MINUS: eat(Minus); Expression2(); break; default: Expression2(); } } 130 Phương pháp phân tích tất định Expression (Thực hành KPL) void compileExpression3() { switch (Token) { case Plus: eat(Plus); compileTerm(); compileExpression3(); break; case Minus: eat(Minus); compileTerm(); compileExpression3(); break; 02/24/14 // check the FOLLOW set case KW_TO: case KW_DO: case SB_RPAR: case SB_COMMA: case SB_EQ: case SB_NEQ: case SB_LE: case SB_LT: case SB_GE: case SB_GT: case SB_RSEL: case SB_SEMICOLON: case KW_END: case KW_ELSE: case KW_THEN: break; default: Error(Lỗi biểu thức); } }//compileExpression() 131 Phương pháp phân tích tất định Condition void condition() { expression(); if(Token == eql || Token == neq || Token == lss || Token == leq || Token == grt || Token == geq){ getsym(); expression(); }else { error("condition: syntax error"); } } 02/24/14 132 Phương pháp phân tích tất định Statement 02/24/14 133 Phương pháp phân tích tất định Statement void statement() { if(Token==Ident){ //variable := getToken(); //array variable ? if(Token==assign){ getToken(); Expresion(); }else Error(“Thieu toan tu gan”) } else… } 02/24/14 134 Phương pháp phân tích tất định Statement if (Token == KW_CALL){ getToken(); if(Token == Ident){ if(Token == Lparen){ getToken(); Expression(); while(Token==comma){ getToken(); Expression(); } if(Token = Rparen) getToken() else Error(“Thiếu dấu đóng ngoặc); } }else Error(“Thiếu tên thủ tục/hàm”); }else 02/24/14 135 Phương pháp phân tích tất định Statement if (Token == KW_BEGIN){ getToken() Statement(); while (Token == Semicolon) { getToken(); Statement(); } if(Token==KW_END) getToken() else Error(“Thiếu từ khóa End”); }else 02/24/14 136 Phương pháp phân tích tất định Program void Program(){ if(Token=KW_PROGRAM){ getToken(); if (Token==Ident){ getToken(); if(Token==Semicolon){ getToken(); Block(); if(Token==Period) printf(“Thành công”); else Error(“Thiếu dấu ”); }else Error(“Thiếu dấu chấm phẩy”); }else Error(“Thiếu tên chương trình”); }else Error(Thiếu từ khóa Program) } 02/24/14 137 .. .Chương 3: Phân tích cú pháp Bài tốn phân tích cú pháp Phương pháp phân tích cú pháp quay lui Phương pháp phân tích bảng Phương pháp phân tích cú pháp tất định Phân tích cú pháp cho PL/0... a*(a+a) Phân tích trái xâu a*(a+a) 23645146246 Chương 3: Phân tích cú pháp Bài tốn phân tích cú pháp Phương pháp phân tích cú pháp quay lui Phương pháp phân tích bảng Phương pháp phân tích cú pháp. .. 02/24/14 33 Chương 3: Phân tích cú pháp Giới thiệu Phương pháp phân tích cú pháp quay lui Phương pháp phân tích bảng Phương pháp phân tích cú pháp tất định Xây dựng phân tích cú pháp cho PL/0

Ngày đăng: 24/02/2014, 07:20

Hình ảnh liên quan

3. Phương pháp phân tích bảng - Tài liệu NGÔN NGỮ và PHƯƠNG PHÁP DỊCH - Chương 3: Phân tích cú pháp docx

3..

Phương pháp phân tích bảng Xem tại trang 2 của tài liệu.
3. Phương pháp phân tích bảng - Tài liệu NGÔN NGỮ và PHƯƠNG PHÁP DỊCH - Chương 3: Phân tích cú pháp docx

3..

Phương pháp phân tích bảng Xem tại trang 6 của tài liệu.
Hình trạng của giải thuật - Tài liệu NGÔN NGỮ và PHƯƠNG PHÁP DỊCH - Chương 3: Phân tích cú pháp docx

Hình tr.

ạng của giải thuật Xem tại trang 17 của tài liệu.
– Bắt đầu từ hình trạng đầu, tính liên tiếp các hình trạng tiếp theo cho đến khi khơng tính  được nữa. - Tài liệu NGÔN NGỮ và PHƯƠNG PHÁP DỊCH - Chương 3: Phân tích cú pháp docx

t.

đầu từ hình trạng đầu, tính liên tiếp các hình trạng tiếp theo cho đến khi khơng tính được nữa Xem tại trang 18 của tài liệu.
Hình trạng của giải thuật Bộ bốn (s, i, α, β) - Tài liệu NGÔN NGỮ và PHƯƠNG PHÁP DỊCH - Chương 3: Phân tích cú pháp docx

Hình tr.

ạng của giải thuật Bộ bốn (s, i, α, β) Xem tại trang 27 của tài liệu.
3. Phương pháp phân tích bảng - Tài liệu NGÔN NGỮ và PHƯƠNG PHÁP DỊCH - Chương 3: Phân tích cú pháp docx

3..

Phương pháp phân tích bảng Xem tại trang 34 của tài liệu.
Giải thuật CYK - Tài liệu NGÔN NGỮ và PHƯƠNG PHÁP DỊCH - Chương 3: Phân tích cú pháp docx

i.

ải thuật CYK Xem tại trang 36 của tài liệu.
– Tạo bảng phân tích tam giác theo xâu cần phân tích - Tài liệu NGÔN NGỮ và PHƯƠNG PHÁP DỊCH - Chương 3: Phân tích cú pháp docx

o.

bảng phân tích tam giác theo xâu cần phân tích Xem tại trang 36 của tài liệu.
Giải thuật CYK→Mơ tả bảng - Tài liệu NGÔN NGỮ và PHƯƠNG PHÁP DỊCH - Chương 3: Phân tích cú pháp docx

i.

ải thuật CYK→Mơ tả bảng Xem tại trang 40 của tài liệu.
Giải thuật CYK→Xây dựng bảng - Tài liệu NGÔN NGỮ và PHƯƠNG PHÁP DỊCH - Chương 3: Phân tích cú pháp docx

i.

ải thuật CYK→Xây dựng bảng Xem tại trang 41 của tài liệu.
3. Phương pháp phân tích tất định - Tài liệu NGÔN NGỮ và PHƯƠNG PHÁP DỊCH - Chương 3: Phân tích cú pháp docx

3..

Phương pháp phân tích tất định Xem tại trang 42 của tài liệu.
Giải thuật CYK→Xây dựng bảng→Ví dụ - Tài liệu NGÔN NGỮ và PHƯƠNG PHÁP DỊCH - Chương 3: Phân tích cú pháp docx

i.

ải thuật CYK→Xây dựng bảng→Ví dụ Xem tại trang 42 của tài liệu.
• Là q trình ngược với xây dựng bảng - Tài liệu NGÔN NGỮ và PHƯƠNG PHÁP DỊCH - Chương 3: Phân tích cú pháp docx

q.

trình ngược với xây dựng bảng Xem tại trang 43 của tài liệu.
3. Phương pháp phân tích bảng - Tài liệu NGÔN NGỮ và PHƯƠNG PHÁP DỊCH - Chương 3: Phân tích cú pháp docx

3..

Phương pháp phân tích bảng Xem tại trang 61 của tài liệu.
• Hình trạng của thuật tốn là bộ 3 (x#,α#, π) - Tài liệu NGÔN NGỮ và PHƯƠNG PHÁP DỊCH - Chương 3: Phân tích cú pháp docx

Hình tr.

ạng của thuật tốn là bộ 3 (x#,α#, π) Xem tại trang 107 của tài liệu.
3. Phương pháp phân tích bảng - Tài liệu NGÔN NGỮ và PHƯƠNG PHÁP DỊCH - Chương 3: Phân tích cú pháp docx

3..

Phương pháp phân tích bảng Xem tại trang 124 của tài liệu.
• Bảng phân tích lớn - Tài liệu NGÔN NGỮ và PHƯƠNG PHÁP DỊCH - Chương 3: Phân tích cú pháp docx

Bảng ph.

ân tích lớn Xem tại trang 125 của tài liệu.

Từ khóa liên quan

Mục lục

  • IT4073:NGÔN NGỮ và PHƯƠNG PHÁP DỊCH

  • Chương 3: Phân tích cú pháp

  • Bài toán đặt ra

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

  • Phân tích trái

  • Slide 6

  • Giới thiệu

  • Phân tích Top-down

  • Slide 9

  • Slide 10

  • Slide 11

  • Slide 12

  • Phân tích Top-down  Ví dụ

  • Phân tích Top-down  Bài tập

  • Giải thuật phân tích Top-down quay lui (1/8)

  • Giải thuật phân tích Top-down quay lui (2/8)

  • Giải thuật phân tích Top-down quay lui (3/8)

  • Giải thuật phân tích Top-down quay lui (4/8)

  • Giải thuật phân tích Top-down quay lui (5/8)

  • Giải thuật phân tích Top-down quay lui (6/8)

  • Giải thuật phân tích Top-down quay lui (7/8)

  • Giải thuật phân tích Top-down quay lui (8/8)

  • Phân tích Bottom-up

  • Slide 24

  • Phân tích Bottom-up  Ví dụ

  • Slide 26

  • Giải thuật phân tích Bottom-Up quay lui

  • Slide 28

  • Slide 29

  • Slide 30

  • Slide 31

  • Phân tích Bottom-Up quay lui Ví dụ

  • Phân tích quay lui với PL/0

  • Slide 34

  • Slide 35

  • Giải thuật CYK

  • Dạng chuẩn Chomsky

  • Chuyển VPPNC sang dạng chuẩn Chomsky

  • Dạng chuẩn ChomskyVí dụ

  • Giải thuật CYKMô tả bảng

  • Giải thuật CYKXây dựng bảng

  • Giải thuật CYKXây dựng bảngVí dụ

  • Giải thuật CYKTìm cây phân tích

  • Giải thuật CYKTìm cây phân tíchVí dụ

  • Slide 45

  • Giải thuật CYKBài tập

  • Giải thuật Earley

  • Giải thuật Earley Mô tả

  • Slide 49

  • Giải thuật Earley  Xây dựng tập trạng thái

  • Giải thuật EarleyVí dụ

  • Slide 52

  • Slide 53

  • Slide 54

  • Slide 55

  • Giải thuật Earley  Tìm danh sách sản xuất

  • Slide 57

  • Slide 58

  • Slide 59

  • Slide 60

  • Slide 61

  • Nội dung

  • Slide 63

  • Ví dụ 1

  • Ví dụ 2

  • Phân cấp các ngôn ngữ phi ngữ cảnh

  • Phân tích Top-Down

  • Ngôn ngữ LL(k)

  • FIRSTk(α)

  • FOLLOWk(α)

  • Ví dụ

  • Sản xuất LL(k)

  • Văn phạm LL(k)

  • Slide 74

  • Slide 75

  • Điều kiện để văn phạm là LL(k)

  • Văn phạm LL(1)

  • FIRST(α)

  • FIRST(α) Tính chất

  • FOLLOW(A)

  • FOLLOW(A) Tính chất

  • Slide 82

  • Toán tử 

  • Bổ đề

  • Tính toán FIRST(α)

  • Thuật toán tính FIRST(A), A VN

  • Ví dụ tính FIRST

  • Thuật toán tính FOLLOW(A)

  • Ví dụ tính FOLLOW

  • Slide 90

  • Slide 91

  • Slide 92

  • Điều kiện để văn phạm là LL(1)

  • Văn phạm là LL(1) đơn giản

  • Ví dụ về văn phạm LL(1)

  • Slide 96

  • Văn phạm là LL(1) trên sơ đồ cú pháp

  • Văn phạm PL/0 là LL(1) ?

  • Slide 99

  • Slide 100

  • Thuật toán phân tích xem trước

  • Xây dựng ma trận phân tích

  • Xây dựng ma trận phân tích Ví dụ

  • Phân tích xem trước  Mô tả

  • Phân tích xem trước  Hoạt động

  • Phân tích xem trước Ví dụ

  • Phân tích xem trước Hình trạng thuật toán

  • Phân tích xem trước  Ví dụ

  • Phân tích xem trước  Ví dụ 2

  • Ví dụ 2Ma trân phân tích

  • Ví dụ 2Phân tích xâu (a*a)

  • Phương pháp đệ quy trên xuống

  • Slide 113

  • Xây dựng sơ đồ cú pháp cho các sản xuất EBNF

  • Xây dựng sơ đồ cú pháp Ví dụ

  • Xây dựng chương trình

  • Xây dựng chương trìnhVí dụ

  • Slide 118

  • Slide 119

  • Slide 120

  • Tìm danh sách sản xuất sử dụng

  • Tìm danh sách sản xuất sử dụng Ví dụ

  • Phân tích Bottom-Up

  • Slide 124

  • Nguyên tắc

  • Các thủ tục

  • Term

  • Term (Thực hành KPL)

  • Expression

  • Expression (Thực hành KPL)

  • Slide 131

  • Condition

  • Statement

  • Slide 134

  • Slide 135

  • Slide 136

  • Program

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan