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

Bài giảng xây dựng chương trình dịch bài 8 văn phạm ll(k)

21 1 0
Tài liệu được quét OCR, nội dung có thể không chính xác
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 21
Dung lượng 498,67 KB

Nội dung

Trang 1

Bài 8

Trang 3

Ngơn ngữ LL(k)

• Xem trước k ký hiệu trên xâu vào để quyết định sản xuất được sử dụng

Trang 4

FIRSTk(a)

Định nghĩa : Cho văn phạm G phi ngữ cảnh, số

nguyên dương k , a là một xâu bao gồm ký hiệu kếtthúc và không kết thúc

Trang 5

FIRSTk(a)

Định nghĩa : Cho văn phạm G = (S, D, P, S), số

ngun dương k , a Ỵ V*

FIRSTk(a) = { x Ỵ S* | a =>*xb và |x| = k hoặc a =>* x và |x| < k}

( Tập các xâu x ỴS* có k ký hiệu trái nhất suy dẫn từ

Trang 6

FOLLOWk(a)

k ký hiệu kết thúc đầu tiên tiếp sau xâu được suy dẫn từ .

Trang 7

FOLLOWk(a)

FOLLOWk(a) = {x ẻ S* | S ị* bad v xỴ FIRSTk(d)}

Trang 8

Văn phạm LL(k)

Định nghĩa văn phạm phi ngữ cảnh

G = (S, D, P, S) là LL(k) với k cho trước nếu vớimọi cặp suy dẫn trái

S =>* xAa => xb1a =>* xZ1S =>* xAa => xb2a =>* xZ2

Trang 9

Ví dụ

Văn phạm G với các sản xuất :S ® aAS | b

Trang 10

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

Văn phạm G = (S, D, P, S) là LL(1) đơn giản nếu mọi sản xuất của văn phạm có dạng

Trang 11

Điều kiện nhận biết văn phạm LL(1)

• Định lý Văn phạm G = (S, D, P, S) là LL(1) khi và

chỉ khi mọi tập A- sản xuất trong P có dạng • A ® a1 | a2 | | an , n ³ 2 thoả mãn

FIRST1(ai) ầ FIRST1(aj) = ặ , i ạ j

ã Nu ai Þ * e thì

Trang 12

Điều kiện LL(1) trên sơ đồ cú pháp• Ở mỗi lối rẽ, các nhánh phải bắt đầu bằng các ký

hiệu khác nhau

Trang 13

Kiểm tra điều kiện LL(1) trên văn phạm KPL

02) <Block> ::= KW_CONST <ConstDecl><ConstDecls> <Block2>03) <Block> ::= <Block2>

• FIRST(VP1) = {KW_CONST}

• FIRST(VP2) ={KW_TYPE, KW_VAR, KW_PROCEDURE, KW_FUNCTION, KW_BEGIN}

ã FIRST(VP1) ầ FIRST(VP2) = ặ

Trang 14

Lệnh49) Statement ::= AssignSt50) Statement ::= CallSt51) Statement ::= GroupSt52) Statement ::= IfSt53) Statement ::= WhileSt54) Statement ::= ForSt55) Statement ::= e• FIRST (AssignSt)={TK_IDENT}• FIRST (CallSt)={KW_CALL}• FIRST (GroupSt)={KW_BEGIN}• FIRST (IfSt)={KW_IF}• FIRST (WhileSt)={KW_WHILE}• FIRST (ForSt)={KW_FOR}

Trang 15

Một số sản xuất vi phạm đk LL(1)

56) AssignSt ::= Variable SB_ASSIGN Expession VP1

57) AssignSt ::= FunctionIdent SB_ASSIGN ExpressionVP2

86) Factor ::= UnsignedConstant VP3

87) Factor ::= Variable VP4

88) Factor ::= FunctionApptication VP5

89) Factor ::= SB_LPAR Expression SB_RPAR VP6

FIRST(VP1) = {TK_IDENT} = FIRST(VP2)

FIRST(VP3) = {TK_NUMBER,TK_CHAR, TK_IDENT}FIRST(VP4) = {TK_IDENT}

FIRST(VP5) = {TK_IDENT}FIRST(VP6) = {SB_LPAR}

Trang 18

Biến đổi sơ đồ cú pháp

• Nhánh assignst bắt đầu bằng IDENTIFIER

Trang 19

Sơ đồ cú pháp của assignst

Trang 20

Sơ đồ cú pháp của factor

• Khó kiểm tra điều kiện LL(1) khi unsignedconstant, variable và functionidentifier đều có thể là một định danh

Ngày đăng: 10/10/2023, 18:29