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.
21/1/2010 Làm để sản sinh xâu ? Văn phạm phi ngữ cảnh dùng để sản sinh xâu thuộc ngôn ngữ sau: Bài 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 X Áp dụng sản xuất của,văn phạm chẳng hạn Y -> w Ví dụ Suy dẫn (Derivations) S -> +A | -A |A A -> B.B | B B -> BC | C C -> | | | .|9 Mỗi lần thực việc thay bước suy dẫn dẫn Nếu dạng câu có nhiều ký hiệu khơng kết thúc để thay sử dụng sản xuất Khi X chứa ký hiệu kết thúc, xâu sản sinh văn phạm 21/1/2010 Suy dẫn trái 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ó đặc điểm sau 1) Mỗi nút có nhãn ký hiệu kết thúc, ký hiệu không kết thúc ε (xâu rỗng) 2) Nhãn nút gốc S (ký hiệu đầu) 3) Nút có nhãn ký hiệu khơng kết thúc 4) Nút A có nút từ trái qua phải X1, X2, , Xk có sản xuất dạng A -> X1 X2 Xk 5)Nút có nhãn ε tồn sản xuất A -> ε nút cha nút có nú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 lad suy y dẫn trái suy dẫn phải 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 hai suy dẫn khác cho xâu ident + ident * ident (chẳng hạn x + y * z) (Bằng cách thêm ký hiệu không kết thúc sản xuất để đảm bảo thứ tự ưu tiên) Văn phạm nhập nhằng 21/1/2010 Đệ quy Khử đệ quy trái Một sản xuất đệ qui X =>* ω1X ω2 Có thể dùng để biểu diễn trình lặp hay cấu trúc lồng E -> E + T | T T -> T * F | F F -> ( E ) | ident Khử đệ ệq quy y trái g cách thêm ký ý hiệu ệ không g kết thúc sản xuất Đệ 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 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 10 ... phải 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 hai suy dẫn khác cho xâu ident... Đệ quy 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 10 ... trái Một sản xuất đệ qui X =>* ω1X ω2 Có thể dùng để biểu diễn q trình lặp hay cấu trúc lồng E -> E + T | T T -> T * F | F F -> ( E ) | ident Khử đệ ệq quy y trái g cách thêm ký ý hiệu ệ không