Thông tin tài liệu:
Bài giảng "Xây dựng chương trình dịch - Bài 3: Văn phạm sản sinh" giới thiệu tới người người học các kiến thức: Làm thế nào để sản sinh ra các sâu, suy dẫn (Derivations), suy dẫn trái và suy dẫn phải, cây suy dẫn (Cây phân tích cú pháp), đệ quy, khử đệ quy trái. Mời các bạn cùng tham khảo nội dung chi tiết.
Nội dung trích xuất từ tài liệu:
Bài giảng Xây dựng chương trình dịch: Bài 3 - Nguyễn Thị Thu Hương
21/1/2010
Làm thế nào để sản sinh ra các
xâu ?
Văn phạm phi ngữ cảnh có thể dùng để
sản sinh ra các xâu thuộc ngôn ngữ như
sau:
Bài 3.
Văn phạm sản sinh
X = Ký hiệu đầu
While còn ký hiệu không kết thúc Y trong X do
Áp dụng một trong các sản xuất của,văn
phạm chẳng hạn Y -> w
1
Ví dụ
2
Suy dẫn (Derivations)
S -> +A | -A |A
A -> B.B | B
B -> BC | C
C -> 0 | 1 | 2 |. . . .|9
Mỗi lần thực hiện việc thay thế là một
bước suy dẫn
dẫn.
Nếu mỗi dạng câu có nhiều ký hiệu không
kết thúc để thay thế có thể sử dụng bất cứ
sản xuất nào.
Khi X chỉ chứa ký hiệu kết thúc, nó là xâu được
sản sinh bởi văn phạm.
3
4
1
21/1/2010
Suy dẫn trái và suy dẫn phải
Cây suy dẫn(Cây phân tích cú pháp)
Cây suy dẫn có những đặc điểm sau
1) Mỗi nút của cây có nhãn là ký
hiệu kết thúc, ký hiệu không kết
thúc hoặc ε (xâu rỗng)
2) Nhãn của nút gốc là S (ký hiệu
đầu)
3) Nút trong có nhãn là ký hiệu
không kết thúc
4) Nút A có các nút con từ trái qua
phải là X1, X2, ... , Xk thì có một
sản xuất dạng A -> X1 X2 ... Xk
5)Nút lá có thể có nhãn ε chỉ khi tồn
tại sản xuất A -> ε và nút cha của
nút lá chỉ có một nút con duy nhất
Nếu giải thuật phân tích cú pháp chọn ký
hiệu không kết thúc cực trái hay cực phải
để thayy thế,, kết q
quả của nó lad suy
y dẫn
trái hoặc suy dẫn phải
5
6
Văn phạm nhập nhằng
Khử nhập nhằng
Văn phạm
E -> E + E
E -> E * E
E -> ( E )
E -> ident
E -> E + T
E -> T
T ->
>T*F
T -> F
F -> ( E )
F -> ident
Cho phép đưa ra hai suy dẫn khác nhau cho
xâu ident + ident * ident (chẳng hạn x + y * z)
(Bằng cách thêm các ký hiệu không kết thúc và các sản xuất để
đảm bảo thứ tự ưu tiên)
Văn phạm là nhập nhằng
7
8
2
21/1/2010
Đệ quy
Khử đệ quy trái
Một sản xuất là đệ qui nếu X =>* ω1X ω2
Có thể dùng để biểu diễn các quá trình lặp hay cấu trúc
lồng nhau
E -> E + T | T
T -> T * F | F
F -> ( E ) | ident
Khử đệ
ệq
quy
y trái bằng
g cách thêm ký
ý hiệu
ệ không
g
kết thúc và sản xuất mới
Đệ quy trực tiếp X =>ω1X ω2
Đệ quy trái X => b | Xa. X => X a => X a a => X a a a =>b a a a a a ...
Đệ quy phải X => b | a X. X => a X => a a X => a a a X =>... a a a a a b
Đệ quy giữa X => b | ( X). X =>(X) =>((X)) =>(((X))) =>(((... (b)...)))
E -> T E'
E' -> + T E' | ε
T -> F T'
T' -> * F T' | ε
F -> ( E ) | ident
Đệ quy gián tiếp X =>* ω1X ω2
9
10
3